TO_mek Opublikowano 21 Marca 2011 Udostępnij Opublikowano 21 Marca 2011 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 Więcej opcji udostępniania...
Platyna Opublikowano 21 Marca 2011 Udostępnij Opublikowano 21 Marca 2011 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 Więcej opcji udostępniania...
Shockah Opublikowano 21 Marca 2011 Udostępnij Opublikowano 21 Marca 2011 Zależy czy używasz gdzieś instance_create losowo. Jak nie, to powinny być te same. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 21 Marca 2011 Administratorzy Udostępnij Opublikowano 21 Marca 2011 Są kolejne względem ostatniego ID wstawionego w roomie, ale jeśli coś zaburza kolejność, to oczywiscie będą inne. Usuwanie nie zmienia kolejnosci ID z tego co pamietam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 21 Marca 2011 Udostępnij Opublikowano 21 Marca 2011 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 Więcej opcji udostępniania...
TheMarcQ Opublikowano 21 Marca 2011 Udostępnij Opublikowano 21 Marca 2011 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 Więcej opcji udostępniania...
TO_mek Opublikowano 21 Marca 2011 Autor Udostępnij Opublikowano 21 Marca 2011 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 Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 21 Marca 2011 Administratorzy Udostępnij Opublikowano 21 Marca 2011 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 Więcej opcji udostępniania...
Tymon Opublikowano 21 Marca 2011 Udostępnij Opublikowano 21 Marca 2011 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 Więcej opcji udostępniania...
Platyna Opublikowano 21 Marca 2011 Udostępnij Opublikowano 21 Marca 2011 W sumie po co w GM ma wbudowane opcje load/save jak i tak to nie działa prawidłowo. Jak nie działa, jak działa? Jest do bani, ale działa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 21 Marca 2011 Udostępnij Opublikowano 21 Marca 2011 Tylko trza wiedziec jak uzywac Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 21 Marca 2011 Autor Udostępnij Opublikowano 21 Marca 2011 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 Więcej opcji udostępniania...
Tymon Opublikowano 21 Marca 2011 Udostępnij Opublikowano 21 Marca 2011 Możesz to zrobić za pomocą with(all). W środku tylko wstaw dodawanie do listy zmiennych i tyle. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 21 Marca 2011 Autor Udostępnij Opublikowano 21 Marca 2011 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 Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 21 Marca 2011 Administratorzy Udostępnij Opublikowano 21 Marca 2011 with (all) zadziała trochę jak foreach(all) (z tym, że foreach w gm nie ma, ale jak znasz tą funkcję z innych języków to będziesz wiedzieć o co chodzi). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 21 Marca 2011 Udostępnij Opublikowano 21 Marca 2011 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 Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę