orzechyarachidowe Opublikowano 17 Lipca 2014 Udostępnij Opublikowano 17 Lipca 2014 Witam, ustanowiłem sobie trochę zmiennych global.name których wartości to string z nazwą miasta. Załóżmy global.name jest 10 (global.name1,global.name2, itd.) i mam funkcje choose w create która wybiera jedną z tych zmiennych. Problem w tym, że zmienna się powtarza. Chciałbym napisać skrypt który kiedy zmienna jest już w użyciu by choose jej nie wybierał. Miałem pomysł ale był żmudny i słabo wydajny wiec zgłaszam się do was o pomoc c; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 17 Lipca 2014 Administratorzy Udostępnij Opublikowano 17 Lipca 2014 Ojej... ja bym to na tablicę przerobił to raz. Dwa, można wtedy zrobić pętelkę która dodaje to do listy/mapy i sprawdza czy wpis nie istnieje. 3 - za pomocą funkcji random/irandom wybieramy nty element z tej map/listy a mapę/listę niszczymy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 17 Lipca 2014 Udostępnij Opublikowano 17 Lipca 2014 GML //Stworz liste global.nameList = ds_list_create() ds_list_add(global.nameList,name1,name2,...,name10) //jesli wiecej niz 15 elementow, powinienes uzyc petli albo cos ds_list_shuffle(global.nameList) GML //Losuj element var chosenName; chosenName = '' if(!ds_list_empty(global.nameList)) { chosenName = global.nameList[| 0] ds_list_delete(global.nameList,0) } return chosenName Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
orzechyarachidowe Opublikowano 26 Lipca 2014 Autor Udostępnij Opublikowano 26 Lipca 2014 GML FATAL ERROR in action number 1 of Draw Event for object ocity: Push :: Execution Error - Variable Get -1.chosenName(100000, -1) at gml_Object_ocity_DrawEvent_1 (line 8) - draw_text(x-32,y-32,string(chosenName)) ################################################################################ ############ W Begin step mam losowanie, w obiekcie ocontroller mam stworzenie listy, Instance order ustawiony, że controller wchodzi pierwszy. Ten kod próbuje stworzyć napis na podstawie zmiennej którą ustalam podczas losowania, ale przeczytałem, że funkcja var usuwa zmienną po ukończeniu, czy to może być problem ? Kombinuje i kombinuje i ciągle ten sam błąd podczas rysowania nazwy Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 27 Lipca 2014 Udostępnij Opublikowano 27 Lipca 2014 GML LosujElement() zmienna = chosenName To nie zadziała, chosenName istnieje tylko wewnątrz skryptu LosujElement(). Należy zrobić: GML zmienna = LosujElement() chosenName w skrypcie to wartość, jaką ten skrypt zwraca, działa to na zasadzie funkcji. Jeszcze jedno - gdy skończysz korzystać z listy, powinieneś ją usunąć - ewentualnie, jeśli zawsze chcesz mieć tylko jedną listę, a nie chcesz jej usuwać, możesz dodać warunek, żeby nie tworzyło listy, jeśli już istnieje, np. if(!ds_list_exists(global.nameList)) global.nameList = ds_list_create() 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ę