tomalas Opublikowano 6 Lipca 2008 Udostępnij Opublikowano 6 Lipca 2008 Witam, Jaki jest dobry sposób na zrobienie listy dwóch zmiennych obiektów tego samego typu których liczba może się zmienić i wszystko jest uporządkowane. Prościej, mamy powiedzmy 5 obiektów name_obj liczba ich może się zmienić na bieżąco i chciałbym otrzymać uporządkowaną tabele mniej więcej tego typu: name_obj.name----------string(count) name_obj.name----------string(count) name_obj.name----------string(count) name_obj.name----------string(count) name_obj.name----------string(count) Lista porządkowałaby się na podstawie zmiennej count od największej (u góry) do najmniejszej. W przypadku 4 obiektów wyświetliły by się tylko 4 linijki tabeli. Moje pytanie brzmi: Jak taki efekt otrzymać ? Kombinowałem coś z funkcjami ds_map ale nic mi z tego nie wychodzi. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Misiek999 Opublikowano 7 Lipca 2008 Udostępnij Opublikowano 7 Lipca 2008 create : GML list = ds_list_create(); for(i=0;i<instance_number(object0);i+=1) { ds_list_add(list,instance_find(object0,i).count); } ds_list_sort(list,0); draw : GML for(i=0;i<instance_number(object0);i+=1) { draw_text(x,y+(i*15), "object0."+string( instance_find(object0,i).name )+ "--------" + string( ds_list_find_value(list,i) ) ) } w momencie gdy tworzy się obiekt, musisz powtarzac kod z create ( tylko list = ds_list_create(); zastąp ds_list_clear(list); ;p). Możesz sobie zrobić funkcje zeby bylo szybciej. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
tomalas Opublikowano 7 Lipca 2008 Autor Udostępnij Opublikowano 7 Lipca 2008 Co nie poprawie to wyskakuje kolejny błąd zawiesiłem się już na tym że uważa że nie istnieje ta zmienna count w obiekcie a jest na pewno już w create przypisywana na 0. Chce po prostu zrobić uporządkowaną listę graczy i ilość punktów jakie posiadają w grze multiplayer. Szukam przykładów nigdzie znaleźć nie mogę. Edit: Obydwie zmienne mam w obiekcie nic nie muszę przesyłać. obj.username i obj.frags lista sortowała by się pod względem zmiennej frags Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Misiek999 Opublikowano 7 Lipca 2008 Udostępnij Opublikowano 7 Lipca 2008 to co ci dałem daj w obiekcie game. a w obiekcie object0 daj w create : count : round(random(100)); name : choose("Jasio","Stasio","Pawel"); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
tomalas Opublikowano 7 Lipca 2008 Autor Udostępnij Opublikowano 7 Lipca 2008 To nie problem zmiennych. Zmienne na pewno są w obiekcie bo wykorzystuje je też do czego innego i działają. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Misiek999 Opublikowano 7 Lipca 2008 Udostępnij Opublikowano 7 Lipca 2008 https://gmclan.org/up2321_12_MASZ.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
tomalas Opublikowano 7 Lipca 2008 Autor Udostępnij Opublikowano 7 Lipca 2008 Ok już wiem w czym był problem bez przykładu. instance_find(object0,i).count musi być w nawiasie jako obiekt (instance_find(object0,i)).count Twój sposób działa ;] Dzięki wielkie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Misiek999 Opublikowano 7 Lipca 2008 Udostępnij Opublikowano 7 Lipca 2008 musi być w nawiasie Tutaj nawias nie gra istonej roli, jedynie zwiększa czytelność - musiałeś coś innego pomieszać ;d (instance_find(object0,i)).count - instance_find(object0,i).count to sie niczym nie różni. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
tomalas Opublikowano 7 Lipca 2008 Autor Udostępnij Opublikowano 7 Lipca 2008 Widocznie się różni jak było bez nawiasu to pisało że nie istnieje zmienna count jak jest to błąd nie wyskakuje. Z początku też myślałem że to nie gra roli dlatego pisałem, że zawiesiłem się na tym. Potem jednak spróbowałem. Sposób i tak jednak nie działa do końca chyba. Sortuje zmienną count ale name zostają tak jak były. Jeszcze musze dokładnie sprawdzić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Misiek999 Opublikowano 7 Lipca 2008 Udostępnij Opublikowano 7 Lipca 2008 Jeżeli każda instancja ma takie same name to normalne. Ale jak mają różne to na górze powinna być ta z największą zmienną count ;p EDIT : Jest taki wał O-O. Wiesz dlaczego on nie widzi zmiennej count ? :D to ci powiem : jeśli w pierwszej kolejności rozłożysz graczy na planszy ( w edytorze jeszcze ), a w drugiej kolejności obiekt game to ci obliczy wszystko.... a jak chcesz dodać nowy obiekt po tym jak już dodałeś game ( też w edytorze ) to ci wywala "nieznana zmienna count". Wywaliłem obiekt game, dodalem nowych "graczy" a potem go dodałem na końcu i żadnego buga. Ale podczas tworzenia w czasie gry nie powinno go być. Nie wiem dlaczego on wyskakuje ale pewnie jest to spowodowane kolejnością obliczeń GM-a. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
tomalas Opublikowano 7 Lipca 2008 Autor Udostępnij Opublikowano 7 Lipca 2008 No ale i tak sortuje tylko zmienną count i nie dziwie się dlaczego miałoby sortować nazwę obiektu skoro nie jest w funkcji list... na moje trzeba zastosować ds_map który sortuje też argument key razem z wartością. Dobra będę kombinował i tak dużo mi pomogłeś ;] 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ę