Skocz do zawartości

room_goto_next()


Matyxon

Rekomendowane odpowiedzi

GML
var Numb;

Numb = string_char_at(room_last,3)

 

Room = string_insert(string(Numb)+string(1),"r_",3)

 

Roomy zwą się po kolei r_1, r_2, r_3 itd. Miało to działać coś jak room_goto_next(), ale nie działa. Powinno po przejściu do innego romu z r_1 następny powinien być r_2 ale niestety jest wcześniejszy czyli r_1. Jakieś pomysły?

Odnośnik do komentarza
Udostępnij na innych stronach

No wiec po pierwsze:

Jeśli chodziło ci o poprzedni room to nie room_last tylko room_previous(room)

room_last to jest ostatni room

Po drugie:

room_previous(room) nie zwróci ci nazwy roomu tylko jego numer (id)

Żeby uzyskać nazwę musisz użyć room_get_name();

Czyli:

GML
Numb = string_char_at(room_get_name(room_previous(room)),3)

 

Teraz tak:

string(Numb)+string(1)

 

To nie zwróci ci wartości Numb zwiększonej o 1.

To zwróci stringa będącego połączeniem Numb i jedynki.

 

Czyli jeśli Numb = 2 to

string(Numb)+string(1)

zwróci ci 21

 

Musisz zrobić tak:

GML
string(real(Numb)+1)

 

Teraz więc:

GML
Room = string_insert(string(real(Numb)+1),"r_",3)

Jeśli byliśmy w r_2 to to do zmiennej Room przypisze wartość "r_3"

 

Ale nie możemy rozkazać pójść do tego pokoju w taki sposób:

room_goto(Room);

 

Ponieważ room_goto potrzebuje identyfikatora roomu, a nie jego nazwy

 

A teraz poczekaj bo muszę zajrzeć do helpa GMa czy da się uzyskać id mając nazwę.

 

 

EDIT: Pomyłka. Nie room_last tylko room_previous

 

EDIT2:

Jeśli koniecznie chcesz to robić w ten sposób to ja niestety nie widzę innego rozwiązania niż użyć:

GML
execute_string("room_goto("+Room+")");

Czyli cały kod:

GML
Numb = string_char_at(room_get_name(room_previous(room)),3)

Room = string_insert(string(real(Numb)+1),"r_",3)

execute_string("room_goto("+Room+")");

 

Chociaż ja na twoim miejscu to bym stablicował te wszystkie roomy.

Odnośnik do komentarza
Udostępnij na innych stronach

No stablicuj je po prostu.

 

roomek[1]=r_1;

roomek[2]=r_2;

roomek[3]=r_3;

 

I tak dalej...

 

A potem po prostu odwołuj się do tych komórek : )

 

Zrób sobie jakaś zmienną index określającą na którym levelu jesteś i następny room to będzie wtedy po prostu roomek[index+1]

Odnośnik do komentarza
Udostępnij na innych stronach

Dla donway przykład użycia stosów:

 

GML
roomy=ds_stack_create(); //tworzenie stosu roomów

//wkładamy roomy

ds_stack_push(roomy,r_1);

ds_stack_push(roomy,r_2);

ds_stack_push(roomy,r_3);

ds_stack_push(roomy,r_4);

ds_stack_push(roomy,r_5);

 

 

room_goto(ds_stack_pop(roomy)); //wczytujemy następnego rooma (wczytany room usuwa się ze stosu dzięki temu działa to jak room_goto_next();)</span></span>

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