Skocz do zawartości

Naliczanie zmiennej


OwocekTV

Rekomendowane odpowiedzi

Witam, od paru dni próbuję stworzyć grę, w której trzeba zbierać drewno, a za te drewno kupować ulepszenia. Jako iż system zapisywania game_save się zbytnio nie sprawdził, postanowiłem zapisywać plikiem "ini".

 

Pytanie: Jak można zrobić tak aby co parę sekund generowało się np. 1 drewno?

 

Mój dotychczasowy kod jest taki:

 

Create:

 

GML
alarm[0] = 500/global.siekierka

 

Alarm [0]:

 

GML
global.wood += 1

 

alarm[1] = 500/global.siekierka

 

Alarm [1]:

 

GML
global.wood += 1

alarm[1] = 500/global.siekierka

 

I problem jest taki, że jeśli odczytuję to z pliku ini, to nawet jak mam 20 siekierek to w ogóle nie nalicza drewna, poprostu się zatrzymało.

 

Z góry dziękuję za odpowiedzi, Pozdrawiam.

Odnośnik do komentarza
Udostępnij na innych stronach

Brałem kod z poradnika w dokumentacji.

 

Zapis:

Kod skrócony, pominąłem inne zmienne, czyli drwal, poziom drzewa, itp. Wypisałem tylko to co się tyczy siekiery:

GML
//zapis

ini_open( 'TreeSave.tree' )

ini_write_real('Budynki','siekierki',global.siekierka);

ini_write_real('Ceny Budynkow','siekierka',global.cenaaxe);

if global.siekierka > 0

ini_write_real('steps per second','siekierki',500/global.siekierka);

ini_close();

 

Odczyt:

GML
//odczyt

ini_open( 'TreeSave.tree' )

global.wood=ini_read_real('Liczba drewna','drewno','0' );

global.siekierka=ini_read_real('Budynki','siekierki','0' );

global.cenaaxe=ini_read_real('Ceny Budynkow','siekierka','10' );

global.SPS=ini_read_real('steps per second','siekierki',500);

ini_close()

Odnośnik do komentarza
Udostępnij na innych stronach

Brałem kod z poradnika w dokumentacji.

 

Zapis:

Kod skrócony, pominąłem inne zmienne, czyli drwal, poziom drzewa, itp. Wypisałem tylko to co się tyczy siekiery:

GML
//zapis

ini_open( 'TreeSave.tree' )

ini_write_real('Budynki','siekierki',global.siekierka);

ini_write_real('Ceny Budynkow','siekierka',global.cenaaxe);

if global.siekierka > 0

ini_write_real('steps per second','siekierki',500/global.siekierka);

ini_close();

 

Tak mi się wydaje że problemem może być ostatnie trzy linijki gdyż nie dałeś klamer { }

Sprawdź czy z nimi to zadziała jak poniżej.

 

GML
//zapis

ini_open( 'TreeSave.tree' )

ini_write_real('Budynki','siekierki',global.siekierka);

ini_write_real('Ceny Budynkow','siekierka',global.cenaaxe);

if global.siekierka > 0 {

ini_write_real('steps per second','siekierki',500/global.siekierka); }

ini_close();

 

Obczaje to jeszcze raz na spokojnie i dam najwyżej edit :)

Odnośnik do komentarza
Udostępnij na innych stronach

niestudiowalem twego kodu ale czesto ludzie robio ten blad:

 

naprzyklad event step

GML
alarm[1]=50;

i niekumajom dlaczego alarm sie nieuruchomil.

 

alarmy to takie minutniky kuchienne i v chvili kdy vykonas polecenie

GML
alarm[1]=50;
to nacingnoles minutnik na 50 cykli gry

jezeli naciognies go znow przed uplywem czasu no wydluzsas czas na 50cykli a jeszeli znow pred dzwnonieniem naciogas to znow wysluzasz czas na 50 cykli a tak dalej az w nieskonczonost.

 

jesli tak spojrzysz na alarm, to niebezdzies miec problem znalezienia bladu :)

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za wszelkie porady, tylko że to wciąż nie działa, i trudząc się ponad godzinę robiąc to różnymi możliwościami wciąż mi nie działało...
sprawdz kdzie wszedzie v obiektu uzywasz alarm[0]=_costam

niemozes alarm ustawiac za czesto bo sie nieaktyvuje. to mialem na mysli wyzej.

jezeli niedostajes ani 1 drzewo to sugeruje ze problem kdzies tu jest, ze nieuruchomil sie alarm.

mozes latwo sprawdzic przes show_message v alarmu :)

 

 

Tak mi się wydaje że problemem może być ostatnie trzy linijki gdyż nie dałeś klamer { }
klarmy so konieczne kdy za IF/FOR/etc. uzywas wiecej niz 1 linijke kodu. klamry wtedy poloczom wiecej liniek do bloku a kompiler bierze jako normalno 1 linijke nalezno do IF/FOR/etc.
Odnośnik do komentarza
Udostępnij na innych stronach

jezeli niedostajes ani 1 drzewo to sugeruje ze problem kdzies tu jest, ze nieuruchomil sie alarm.

mozes latwo sprawdzic przes show_message v alarmu

Bardzo dobry pomysł, lecz przy 1 siekierce wciąż nie produkowało drewna, ani nie pokazywało show_message. Dopiero jak mam 2 siekiery, to odrazu mi produkuje drewno i pokazuje show_message.

A problem z zapisem nadal jest. Gdy wczytuję nie nalicza mi nic, zupełnie jakby gra się zatrzymała.

 

Edit: Wiem już co jest nie tak. Ponieważ mam obiekt "BuyAxe" który po kliknięciu odbiera nam pewną ilość drewna, i tworzy obiekt Obj_Axe, który tworzy drewno. Po zresetowaniu gry, te obiekty znikają, a ja wczytuję dane z pliku ini, więc dlatego nie generuje się drewno. Co do nie generowania się drewna przy 1 siekierce: Też naprawione, popatrzyłem angielskie fora, i TO mi pomogło:

 

GML
alarm[0] = room_speed * 2 // 2 seconds</span>

 

a w Alarm[0] to samo + Global.wood += 1

 

Myślę że już dojdę do tego jak to naprawić, dziękuję wszystkim za pomoc, pozdrawiam :)

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