Skocz do zawartości

sprite_index=string+liczba


Thobby

Rekomendowane odpowiedzi

  • Administratorzy

ponieważ nazwy sprita to tak naprawdę liczby :) To znaczy, że zamiast sprite_dom wpisujesz 63 i to jest to samo.

Jedyne wyjście jakie mi teraz przychodzi na myśl, to switch.

Odnośnik do komentarza
Udostępnij na innych stronach

Jesli zrobisz sprite_index = 0, to object bedzie mial sprite, ktory zostal jako 1 utworzony w grze.

Jak robisz nowy sprite to masz nazwe, zalozmy sprite56. Jesli potem dasz w jakims objekcie sprite_index = 56, to on przyjmie ten sprite, nawet jak jego nazwe juz zmieniles :P

Odnośnik do komentarza
Udostępnij na innych stronach

GML
typ = "sprite";

typ += '0'; // albo typ += string( liczbaalbozmienna )

execute_string( "

if sprite_index == "+typ+" {

// akcja

typ = string_letters( typ );

} ");

 

Sprawdzi, czy sprite_index == sprite0

 

EDIT : Zmylił mnie twój poprzedni post z tym IF :P jeśli chcesz ustawić sprita to :

 

GML
typ = "sprite";

typ += string(liczba);

 

execute_string( "

sprite_index = "+typ+"

typ = string_letters( typ );

");

Odnośnik do komentarza
Udostępnij na innych stronach

tak ale ta liczba wcale nie jest zmienną, po prostu wpisuje ją w kodzie :P

 

E: Chyba nie do końca mnie rozumiecie. Sprity w mojej grze mają mieć nazwy składające się z:

typu postaci tj. fighter,knight,mage oraz paladin, oraz liczby.

i teraz jak mam typ ustawiony na 'fighter' to chce żeby sprawdzało czy sprite_index=typ postaci + liczba którą tu wpisze

czyli inaczej, czy sprite_index=fighter1

Odnośnik do komentarza
Udostępnij na innych stronach

GML (create)
sprite[0]=sprit typu postaci fighter

sprite[1]=sprit typu postaci knight

sprite[2]=sprit typu postaci mage

sprite[3]=sprit typu postaci paladin

GML (draw)
draw_sprite(sprite[typ postaci],0,x,y)
??

 

Zrob se to jak chcesz, bo nie rozumiem cie do konca. Ale cos tam mi chyba...

GML (create)
sprite[0,1]=sprit typu postaci fighter liczby1

sprite[1,1]=sprit typu postaci knight liczby1

sprite[1,2]=sprit typu postaci knight liczby2

...

sprite[2,1]=sprit typu postaci mage liczby1

...

sprite[3,1]=sprit typu postaci paladin liczby1

...

GML (draw)
draw_sprite(sprite[typ postaci,liczba],0,x,y)
??

 

PS: a i musi byc ze jak typ postaci to fighter to ta zmienna z typami postaci musi byc 0

Odnośnik do komentarza
Udostępnij na innych stronach

GML (create)

sprite[0,1]=sprit typu postaci fighter sprit pierwszy

sprite[1,1]=sprit typu postaci knight sprit pierwszy

sprite[1,2]=sprit typu postaci knight sprit drugi

...

sprite[2,1]=sprit typu postaci mage liczby1

...

sprite[3,1]=sprit typu postaci paladin liczby1

 

...

GML (draw)

draw_sprite(sprite[typ postaci,numer sprita],0,x,y)

??

Odnośnik do komentarza
Udostępnij na innych stronach

ale potem powraca do swojej pierwotnej wartosci w mgnieniu oka, po wykonaniu akcji. Sproboj ( jesli nie probowales wczesniej ). linijke typ = string_letters( typ ); mozesz dac nawet przed akcja, jesli sprawdzasz tam tą zmienną "typ" i musi byc bez cyferki.

 

EDIT : A jeśli już, to możesz zrobić zmienną tymczasową

var _t;

_t = typ;

 

i na niej operować, jesli zmienna "typ" nie może sie zmieniac.

Odnośnik do komentarza
Udostępnij na innych stronach

sory za double posta ale...

 

 

mam taki oto skrypt:

 

GML
typ += '1';

 

execute_string("

 

if sprite_index == "+typ+" {

 

typ=string_letters(typ);

typ += '2';

 

sprite_index = "+typ+";

typ = string_letters( typ );

 

}

 

else

{

typ+= '4';

sprite_index = "+typ+";

typ = string_letters( typ );

}

 

typ=string_letters(typ);

");

 

typ jest ustawiony na fighter i zawsze po wykonaniu tego skryptu ustawia sie sprite o nazwie fighter1

wie ktoś może dlaczego? analizowałem ten kod kilka razy i nic nie zauważyłem :/

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...
  • Administratorzy

Załóżmy, że:

 

GML
typ = 'domek'; domek = "inna zmienna";

 

Ponieważ w polu execute kode podajesz +typ+ oznacza to, że taki ciąg:

GML
typ = 'domek';

execute_string(" show_message(typ); show_message("+typ+");");

Pokaże kolejno:

domek

inna_zmienna

zauważ, że użycie + powoduje, że pomiędzy znaki " " zostaje wsawiona zawartość zmiennej typ, czyli 'domek', to znaczy że: show_message("+typ+"); to tak naprawdę show_message(domek);

Tak samo string(typ) - to "domek", natomiast string("typ") - to "typ".

 

W takim razie twój execute code wygląda tak:

 

GML
if sprite_index == 'domek'

{

typ=string_letters(typ);

typ += '2';

 

sprite_index = 'domek';

typ = string_letters( typ );

}

else

{

typ+= '4';

sprite_index = 'domek';

typ = string_letters( typ );

}

 

typ=string_letters(typ);

 

Wniosek:

 

GML
//zamień

"+typ+"

//na samo

typ

Odnośnik do komentarza
Udostępnij na innych stronach

Nie, nie wszyscy, tylko Ty. My (userzy) tu jestesmy zeby Cie nauczyc, pokazac metode, a to ze tego "nie kumasz" Nam nie zaprzata glowy - wniosek jeden: chcesz zrozumiec kod? to go analizuj a nie czekasz na gotowca.

Taka moja mala uwaga.

 

Gnysek Ci dokladnie wyjasnil co trzeba zrobic, przeanalizuj jego wypociny a zrozumiesz jakie jest rozwiazanie :)

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