Skocz do zawartości

Funkcje repeat


bluks

Rekomendowane odpowiedzi

Mam problem z poniższym skryptem ponieważ gdy go napisz nic się nie zmienia tak jak bym tego chciał:

Dałem to w step:

GML
repeat (1)if global.level=1 {global.exp=250};

repeat (1)if global.level=2 {global.exp=400};

repeat (1)if global.level=3 {global.exp=1000};

repeat (1)if global.level=4 {global.exp=1500});

Mój problem to żeby zamieniało global.exp na 250 tylko raz i tylko wtedy gdy global.level jest = 1

Odnośnik do komentarza
Udostępnij na innych stronach

ale gdy wykonam pewną akcje global.exp wynosi mniejszą wartość a jeżeli nie dam repeat to ciągle będzie mi zmieniać na 250.

PS. Ludzie nauczcie się rozumieć innego człowieka bo przy wielu postach było tak że jakis debil chcial usunąć coś z danego skryptu z czego wychodziło to czego autor tematu właśnie nie pożąda a nawet prawie ślepy człowiek zauważyłby że z tamtego właśnie to się wywodz.

 

Czy ty nie widzisz Egzekutor że z tego co tam napisałęś to się wywodzi dany skrypt a je chcę do tego dodać (nie odjąć)

to aby czynność wykonała się raz. Więc jeżeli masz problemy z czytaniem ze zrozumieniem to czytaj to po kilka razy, aż będziesz w co najmniej 90% pewny że właśnie oto chodzi.

Odnośnik do komentarza
Udostępnij na innych stronach

GML (Create)
global.lastLvl = 0;

GML (Gdziestam)
if( global.lastLvl != global.level )

if( global.level == 1 ) { global.exp=250; global.lastLvl = global.level; } else

if( global.level == 2 ) { global.exp=400; global.lastLvl = global.level; } else

if( global.level == 3 ) { global.exp=1000; global.lastLvl = global.level; } else

if( global.level == 4 ) { global.exp=1500; global.lastLvl = global.level; }

Odnośnik do komentarza
Udostępnij na innych stronach

Dałeś w Step:

GMLrepeat (1)if global.level=1 {global.exp=250};

 

Po pierwsze, repeat() tylko spowalnia twój skrypt.

Po drugie, cały czas będziesz miał 250 exp, gdy będziesz miał 1 lv. Pokombinuj z większą ilością zmiennych, np.

if(zm1 = 1)

{

if(global.level = 1)

{

global.exp = 250

zm1 = 0

}

}

 

EDIT: To samo z resztą :)

Odnośnik do komentarza
Udostępnij na innych stronach

GML
//create:

global.nextlevel=250

global.exp=0

global.level=1

 

//step:

if global.exp=global.nextlevel

{

global.level=2

}

 

//drugi kod w step

if global.level = 2 {global.nextlevel=400}

if global.level = 3 {global.nextlevel=1000}

if global.level = 4 {global.nextlevel=1500}

//...</span>

 

o to chodzi?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy
ale gdy wykonam pewną akcje global.exp wynosi mniejszą wartość a jeżeli nie dam repeat to ciągle będzie mi zmieniać na 250.

PS. Ludzie nauczcie się rozumieć innego człowieka bo przy wielu postach było tak że jakis debil chcial usunąć coś z danego skryptu z czego wychodziło to czego autor tematu właśnie nie pożąda a nawet prawie ślepy człowiek zauważyłby że z tamtego właśnie to się wywodz.

 

Czy ty nie widzisz Egzekutor że z tego co tam napisałęś to się wywodzi dany skrypt a je chcę do tego dodać (nie odjąć)

to aby czynność wykonała się raz. Więc jeżeli masz problemy z czytaniem ze zrozumieniem to czytaj to po kilka razy, aż będziesz w co najmniej 90% pewny że właśnie oto chodzi.

 

Repeat powoduje, ze kod za nim wykona się ileś razy. Zatem repeat(1) to tak samo, jakby nie napisać nić lub napisać for(i=0; i<1; i+=1).

 

GML
repeat(1) show_message('hej'); //wkonuje akcję 1 raz</span>

GML
show_message('hej'); //to jest indetyczny kod jak powyzej</span>

GML
repeat(10) show_message('hej'); //wyswietla 10 razy</span>

GML
for(i=0; i<10; i+=1) show_message('hej'); //to jest indetyczny kod jak powyzej</span>

 

Repeat nie oznacza, że ten kod już sie potem nigdy nie wykona, on wykona się za każdym stepem, a więc 30 razy na sekundę :)

Odnośnik do komentarza
Udostępnij na innych stronach

Repeat powoduje, ze kod za nim wykona się ileś razy. Zatem repeat(1) to tak samo, jakby nie napisać nić lub napisać for(i=0; i<1; i+=1).

w GMLu wszystko jest możliwe ;p

E: Co do:

GML
for(i=0; i<10; i+=1) show_message('hej'); //to jest indetyczny kod jak powyzej</span>

Nie koniecznie, stworzenie zmiennej ( tu i ) też kosztuje xP

Odnośnik do komentarza
Udostępnij na innych stronach

GML

//drugi kod w step

if global.level = 2 {global.nextlevel=400}

if global.level = 2 {global.nextlevel=1000}

if global.level = 2 {global.nextlevel=1500}

//...

 

o to chodzi?

 

"Jeśli (global.level = 2) wtedy {global.nextlevel = 400}

Jeśli (global.level = 2) wtedy {global.nextlevel = 1000}

Jeśli (global.level = 2) wtedy {global.nextlevel = 1500}"

 

Wyjdzie na to, że na 2 lv będzie potrzebne 1500 exp.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy
Gnysek racja ale dając to w stepie będzie ci tą wiadomość otwierać bez przerwy a z repeat (1) tylko 1

 

 

Nie - też w nieskończonosć :) Ponieważ repat(1) oznacza: "ten kod wykonaj w tym stepie 1 raz". W następnym stepie, znów zostanie wykonany 1 raz i tak w kółko. Kod bez repeat(1) też jest wykonywany w danym stepie jeden raz :)

Odnośnik do komentarza
Udostępnij na innych stronach

"Jeśli (global.level = 2) wtedy {global.nextlevel = 400}

Jeśli (global.level = 2) wtedy {global.nextlevel = 1000}

Jeśli (global.level = 2) wtedy {global.nextlevel = 1500}"

 

Wyjdzie na to, że na 2 lv będzie potrzebne 1500 exp.

 

O jejku zapomniałem po przeprawiać z pośpiechu cyferek.

 

E. Już poprawiłem

Odnośnik do komentarza
Udostępnij na innych stronach

Wg. mnie głupotą jest dawać taki kod do stepa. Może teraz nie będzie to widoczne, ale przy większym kodzie to będzie po prostu niewydajne. Takie rzeczy dajesz w create i nie przypisuje Ci ciągle takich samych wartości co step.

 

Create

GML
global.next[0] = 250;

global.next[1] = 500;

global.next[2] = 1000;

//itd itd itd</span>

Przy zdobywaniu expa

GML
if( global.next[ level - 1 ] == global.exp )

{

global.exp -= global.next[ level - 1 ]; // Różnica expa, żeby nie zmniejszało do 0 tylko tyle, ile było za dużo na dany poziom

level += 1;

}

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