Skocz do zawartości

Inicjowanie zmiennych bez obiektu/roomu startowego, odporne na game_restart()


Rekomendowane odpowiedzi

  • Administratorzy

Hej :)

 

Obecnie każdy średnio i bardziej zaawansowany użytkownik GM:Studio wie, że jak się robi grę, trzeba sobie zainicjować wszystkie zmienne globalne, które są potrzebne w grze (np. odpowiedzialne za progres/wynik gry, opcje, poziom trudności itp.).

Najlepszym znanym nam sposobem do tej pory było stworzenie pustego roomu, a w nim albo dodanie obiektu ze skryptem, albo "room creation code", w którym to skrypcie jest inicjacja wszystkich zmiennych i na sam koniec room_goto_next(); Następnie do tego roomu już nigdy nie wracamy, a że wyświetla się tylko jedną klatkę, to go z reguły nie widać (najlepiej jeszcze dać czarne tło). Niestety, jak zrobimy game_restart() to te skrypty się wykonują ponownie, a jeśli używamy np. jakiegoś DLLa, albo doczytywania spritów z pliku, to trochę nam to nie na rękę. Trzeba samemu zaprogramować grę tak, żeby resetowała potrzebne zmienne i wracała do drugiego w grze roomu.

 

ALE - JEST ROZWIĄZANIE!!!!

 

Tworzymy dowolny skrypt inicjujący grę. Teraz w dowolnym skrypcie w dowolnym miejscu (ale sugeruję na górze tego inicjującego), wpisujemy:

 

GML
gml_pragma("global", "nazwa_skryptu()");

 

I to wszystko. Ten skrypt zostanie wykonany jeszcze przed eventem Game Start, a jak zrobicie game_restart() to już go nie wykona. gml_pragma nie jest fukcją, a poleceniem dla kompilera, żeby ten skrypt wykonać przed rozpoczęciem właściwej pętli gry GM:Studio :)

 

Można dać kilka skryptów w ten sam sposób, kolejność wykonania zależy zapewne od kolejności w resource tree a potem od linijki w kodzie. Polecenie wywołujące skrypt nie musi być w tym samym skrypcie, chociaż jest to najczytelniejsze :)

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ę...