Threef Opublikowano 6 Listopada 2011 Udostępnij Opublikowano 6 Listopada 2011 Mam problem. Stworzyłem edytor map który przechowuje nazwy obiektów w ds_grid. Później przy pomocy ds_grid_write() zapisuję wszystko do pliku. Zapisywanie i wczytywanie działa idealnie, problem pojawia się gdy chcę wczytać mapę już w grze. GML h=ds_grid_create(32,32) ds_grid_clear(h,o_block_grass) Problem już rozpracowałem. Chodzi o to że zamiast "o_block_grass" w gridzie pojawia się np.: "14", które (jak mi się wydaje) jest identyfikatorem obiektu. Taki identyfikator jest przyznawany obiektom wg kolejności ich utworzenia w GM-ie, tak więc "14" odpowiada 14-stemu obiektowi utworzonemu przeze mnie. Problem polega na tym że w grze 14-stym obiektem nie jest "o_block_grass". Ja teraz potrzebuję uniwersalnego sposobu na kodowanie i dekodowanie tego, coś jak np.: GML h=ds_grid_create(32,32) ds_grid_clear(h,string(o_block_grass)) Tak żeby zamiast "14" na prawdę pojawiało się tam "o_block_grass". Pomóżcie bo inaczej Shil mnie zabije! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
hudy0070 Opublikowano 6 Listopada 2011 Udostępnij Opublikowano 6 Listopada 2011 Zamiast bawić się w dodawanie kolejnych różnych obiektów, stwórz sobie jeden obiekt i w zależności od tego czym ma być zmieniaj mu parametry. Możesz też zastosować switcha jeżeli znasz ID wszystkich obiektów. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 6 Listopada 2011 Udostępnij Opublikowano 6 Listopada 2011 Zamiast id zapisuj nazwę obiektu. GML ds_grid_clear(h,"o_block_grass") Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 6 Listopada 2011 Autor Udostępnij Opublikowano 6 Listopada 2011 Dobrze ediepl, sam to napisałem w swoim poście. Problem jak to teraz odczytać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 6 Listopada 2011 Administratorzy Udostępnij Opublikowano 6 Listopada 2011 W grze: GML var obj; switch (wartość_zdjęta_z_grida) { case 14: obj = jakis_obiekt; break; case ...: ... break; } instance_create(x,y,obj); Tak to mniej więcej obchodzę w Almorze... mniej więcej, bo tam każdy element na mapie to ten sam obiekt, tylko z inną grafiką. Ponieważ grafiki i tak zapisuję w ds_mapie po nazwach (string), a typy obiektów otocznia tak samo, nie ma konfliktów pomiędzy edytorem a grą (bo wszystko i tak jest czytane z plików zew.) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
hudy0070 Opublikowano 6 Listopada 2011 Udostępnij Opublikowano 6 Listopada 2011 może spróbuj coś pokombinować z object_get_name? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 6 Listopada 2011 Autor Udostępnij Opublikowano 6 Listopada 2011 GML var obj; switch (wartość_zdjęta_z_grida) { case 14: obj = jakis_obiekt; break; case ...: ... break; } instance_create(x,y,obj); To najgorsze rozwiązanie jakie mógłbym obrać, aktualnie mam prawie 60 obiektów, a czekam na nowe. Tak czy inaczej chyba będę musiał zrobić taką listę obiektów, chyba że można uzyskać odniesienie do obiektu podając jego nazwę jako string. Potrzeba mi właśnie czegoś odwrotnego do object_get_name() Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 6 Listopada 2011 Administratorzy Udostępnij Opublikowano 6 Listopada 2011 Niestety takiej opcji nie ma, chyba, że z execute_string(); Trzeba było to przemyśleć zanim się zrobiło 60 obiektów, ja tak zrobiłem i teraz jest z górki :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
hudy0070 Opublikowano 6 Listopada 2011 Udostępnij Opublikowano 6 Listopada 2011 GML (create) oMap=ds_map_create(); for(i=0;i<65536;i+=1;) { if(object_exists(i)) { ds_map_add(oList,i,object_get_name(i)); } } I masz mapę z obiektami jeżeli chcesz się tak męczyć. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 6 Listopada 2011 Administratorzy Udostępnij Opublikowano 6 Listopada 2011 Też jest to jakieś wyjście :) Szukasz po wartości i masz id obiektu (klucz). Mapy pozwalają szukać po obu wartościach (key,value) :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 6 Listopada 2011 Autor Udostępnij Opublikowano 6 Listopada 2011 No i jednak zrobiłem switch. Najbardziej się obawiałem tego że nie znam identyfikatorów poszczególnych obiektów, ale poradziłem sobie wyrzucając show_message gdy nie mam w switch-u danego ID Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę