Skocz do zawartości

ID tworzonych obiektow


TO_mek

Rekomendowane odpowiedzi

Witam!

Czy obiekty tworzone za pomocą instance_create zawsze otrzymują ten sam ID. Chodzi mi o to, że mam w kodzie wywoływanym na początku gry tworzenie wszystkich początkowych obiektów i czy przy każdym uruchomieniu gry zawsze nadawane są identyczne ID czy może się zdarzyć, że jednak raz nada 100123 a raz 100145 tej samej instancji obiektu przy kolejnym uruchomieniu gry?

Odnośnik do komentarza
Udostępnij na innych stronach

Głowy sobie uciąć nie dam, ale wydaje mi się, że nadawane jest pierwsze wolne ID. Więc jeśli kolejność tworzenia obiektów się nie zaburzy to są te same, ale jak będziesz w tym roomie, wyjdziesz, a później wrócisz do niego to obiekty już będą miały inne id. Ale zaznaczę jeszcze raz: Nie jestem pewien, tak mi się wydaje.

 

Jest to jednak informacja całkowicie zbędna, bo doskonale można sobie bez tego poradzić ze wszystkim. Powiedz więc co chcesz osiągnąć.

Odnośnik do komentarza
Udostępnij na innych stronach

Bo to w zasadzie jest nieopłacalne wciskać obiekt do pierwszego wolnego ID ( wymagałoby to przeszukania tablicy z instancjami i ustaleniem gdzie to wolne miejsce się podziewa ), lepiej po prostu stworzyć nowe dodając do ostatniego 1.

 

Odpowiadając na pytanie w temacie: ID zależy od kolejności w jakiej utworzą się obiekty.

Odnośnik do komentarza
Udostępnij na innych stronach

jesli masz zmienna kolejnosc tworzenia obiektow czy cos(np. randomizujesz to), mozna sobie z tym poradzic stosujac zamiast konkretnych id (1000023.direction=iqowhnoiwf):

utworzonyobiekt=instance_create(0,0,obiekt)

utworzonyobiekt.direction=097t903jogf

Odnośnik do komentarza
Udostępnij na innych stronach

Powiedz więc co chcesz osiągnąć.

 

 

Zaczynam się zastanawiać jak rozwiązać robienie save w grze. Widziałbym to tak, że najpierw gracz uruchamia nową grę (czyli wszystkie obiekty się utworzą), podchodzi do pewnego obiektu w którym jest obsługa odczytu/zapisu gry, wczytuje stan gry i następuje porównanie ID obiektów które istnieją i tych które były zapisane a następnie nadmiarowe obiekty zostawałyby usuwane. Pewnie pomysł do bani ale to moje pierwsze przemyślenia. W jaki sposób Wy robicie obsługę zapisu stanu gry?

 

W sumie po co w GM ma wbudowane opcje load/save jak i tak to nie działa prawidłowo.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Możesz zapisać typ obiektu i pozycję, a potem odtworzyć. Pomysł podobny do Twojego, ale zamiast zapisywać id instancji, zapisujesz object_index (czy jakoś tak). Wtedy za pomocą instance_create(wczytane_x,wczytane_y,wczytane_id) odtworzysz obiekty.

Odnośnik do komentarza
Udostępnij na innych stronach

Najłatwiej zapisać po prostu typ instancji i ważniejsze zmienne dla obiektu. Później za pomocą samego instance_create i kilku przypisań jesteś w stanie odtworzyć stan gry.

 

Oczywiście wszystko zależy jak wygląda u Ciebie rozgrywka. Równie dobrze w prostej grze mogłoby wystarczyć zapisanie pozycji gracza.

Odnośnik do komentarza
Udostępnij na innych stronach

Najłatwiej zapisać po prostu typ instancji i ważniejsze zmienne dla obiektu. Później za pomocą samego instance_create i kilku przypisań jesteś w stanie odtworzyć stan gry.

 

Oczywiście wszystko zależy jak wygląda u Ciebie rozgrywka. Równie dobrze w prostej grze mogłoby wystarczyć zapisanie pozycji gracza.

 

 

Ze tak zapytam naiwnie :)

Czy da się jakoś odczytać wszystkie zmienne lokalne czyli coś w stylu "all" dla obiektów. Czyli with (all) {get_wszystkie_zmienne_do_tablicy_albo_lepiej_do_ds_list} a następnie już tylko zapis tej listy do stringa (ds_list_write) i do pliku. Przy okazji testował ktoś ile znaków maksymalnie może mieć taki string. Druga sprawa czy w GM8.1 planują coś zmienić w sprawie save/load?

 

PS. Wiem, że save/load działa ale takie działanie to chyba do naprawdę prostych gierek tylko wystarcza.

Odnośnik do komentarza
Udostępnij na innych stronach

Możesz to zrobić za pomocą with(all). W środku tylko wstaw dodawanie do listy zmiennych i tyle.

 

Wiem ale myślałem o czymś takim co od razu wyciągałoby wszystkie zmienne jakie posiada danych obiekt bez potrzeby ręcznego wyciągania tych wartości zmiennych jakie każdy z obiektów posiada :). Coś w stylu variable_local_get(all_from_obiect) a później variable_local_set(all_to_obiect) :)

Wolę zapytać bo a nuż coś takiego jest ale raczej nie ma.

Odnośnik do komentarza
Udostępnij na innych stronach

Ze tak zapytam naiwnie

Czy da się jakoś odczytać wszystkie zmienne lokalne czyli coś w stylu "all" dla obiektów. Czyli with (all) {get_wszystkie_zmienne_do_tablicy_albo_lepiej_do_ds_list} a następnie już tylko zapis tej listy do stringa (ds_list_write) i do pliku. Przy okazji testował ktoś ile znaków maksymalnie może mieć taki string. Druga sprawa czy w GM8.1 planują coś zmienić w sprawie save/load?

Ale ten sposób jest do bani bo tak robi zwykła funkcja save/load.

 

Do pliku z savem zapisujesz tylko te zmienne, tych obiektów, które są ważne np. pozycja gracza, wszelkie jego statystyki, zmienne globalne, pozycje potworów i ich hp itp. A nie wszystkie obiekty i wszystkie ich zmienne.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...