Nobody Opublikowano 10 Października 2007 Udostępnij Opublikowano 10 Października 2007 Siemka. Mam problem z tablica ;/ To kod, dzieki ktoremu w mojej grze jakis potwor sie porusza itp. ajdi=readint(); // ID potwora;] name=readshort(); // Nazwa potwora;] rom=readint(); // Jaki room? :D if rom==room { // Jezeli gracz jest w tym samym pokoju jak potwor iks=readint(); // X potwora igrek=readint(); // Y potwora if !(variable_local_exists(monster[ajdi])) { // Jezeli nie istnieje element tablicy o podanym ID monster[ajdi]=instance_create(iks,igrek,obj_monster); // Stworz takowy :D monster[ajdi].name=name; // Nadaj mu nazwe name. } monster[ajdi].x=iks; // Przenies potwora na podany X monster[ajdi].y=igrek; // I Y :D } Niestety ten kod nie dziala. Wyskakuje blad: Unknown variable monster or array index out of bounds Czy moze mi ktos pomoc? Prosze :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pentalinio Opublikowano 10 Października 2007 Udostępnij Opublikowano 10 Października 2007 Sprawdzasz czy istnieje zmienna lokalna, niestety dla GMa tablica to co innego... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 10 Października 2007 Udostępnij Opublikowano 10 Października 2007 variable_local_exists() => array_local exists() - podstawy... <_< Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pentalinio Opublikowano 10 Października 2007 Udostępnij Opublikowano 10 Października 2007 -.- Napisałem przecież to samo, tylko nazwy funkcji nie podałem ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 10 Października 2007 Autor Udostępnij Opublikowano 10 Października 2007 variable_local_exists(monster[ajdi]) <-- zrobilem przeciez to -_-' Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pentalinio Opublikowano 10 Października 2007 Udostępnij Opublikowano 10 Października 2007 WTF ? On napisał byś to zmienił -.- ... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 10 Października 2007 Autor Udostępnij Opublikowano 10 Października 2007 to piszta po polsku :D :P juz sprawdzam ;] edit: eee... na pewno? ;] Unknown function or script: array_local_exists Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 10 Października 2007 Filar Społeczności Udostępnij Opublikowano 10 Października 2007 Do takich rzeczy game makerowe tablice się w ogóle nie nadają, ze względu na nieelastyczność. Dlatego też stosuje się datastruktury, a w twoim przypadku najlepsza będzie mapa ( "map" - para klucza i wartości). Tablicę zamień na mapę: monsters = ds_map_create(); Czy potwór o danym id istnieje: if ( !ds_map_exists( monsters, ajdi ) ) // czy klucz zapisany w zmiennej ajdi istnieje w mapie monsters { ds_map_add( monsters, ajdi, instance_cerate( iks, igrek, obj_monster ) ); //jesli nie istnieje, to dodajmy ten klucz i przypiszmy mu wartosc id nowo utworzonego obiektu } var monster; monster = ds_map_find_value( monsters, ajdi ); // pobierz wartosc przypisana do klucza ajdi monster.x = iks; monster.y = igrek; Ewentualne usuwanie wpisu z mapy: ds_map_delete( monsters, ajdi ); //usun klucz ajdi i jego wartosc z mapy monsters ps. Nie ma czegoś takiego jak sugeruje Pchisix - array_local_exists (i to z prostej przyczyny). Ideą stosowania tablic jest trzymanie w niej z góry określonej liczby elementów. Jedyna dynamika tablic w GM'ie odnosi się do ich szerokości, którą można zmieniać w czasie gry (czytaj dodawać kolejne elementy do końca tablicy). W związku z tym mależy pamiętać, że jeśli mamy zainicjalizowany element o indeksie 100, to zakłada się, że elementy o indeksach 0 i 99 również istnieją, w innym przypadku jest to poważny błąd, gdyż nie można usuwać elementów ze środka tablicy. Krótko mówiąc nie trzeba sprawdzać czy elementy dajmy na to 23, 47 czy 87 istnieją jeśli wiemy, że tablica ma szerokość 100 i dlatego też funkcja array_local_exists nie istnieje. W celu takim, jaki został przedstawiony w temacie, zostały stworzone inne struktury typu kolejki, stosy, listy, siatki czy właśnie mapy. Ideą tych struktur jest przechowywanie dowolnej liczby elementów w jakiejś tam kolejności. Przykładowo mapa, to taka super elastyczna tablica, gdzie możemy usuwać dowolne elementy, wstawiać nowe w określone pozycje, pobrać liczbę elementów w mapie, sprawdzić czy dany klucz istnieje itd. Mało tego - przy zręcznym łączeniu określonych struktur możemy otrzymać nowe jak np. dynamiczne tablice trójwymiarowe (siatka list) czy czterowymiarowe (siatka siatek). Kombinacji jest dużo. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 10 Października 2007 Autor Udostępnij Opublikowano 10 Października 2007 to dopiero profesjonalna pomoc :D juz testuje :D EDIT: Dziekuje bardzo :D Jezeli nikt sie nie pogniewa, zamkne temat :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi