Dawka83 Opublikowano 24 Kwietnia 2010 Udostępnij Opublikowano 24 Kwietnia 2010 Mam sobie oto taki kod: GML (W evencie Left Pressed) if (point_distance(x,y,hero.x,hero.y)<100 and plecak=false) { //Sprawdzamy czy taki item juz jest for(i=1;i<16;i+=1) { if (baza.ido_plecak=2) // Jezeli jest i nie ma max itemkow to sie dodajemy { baza.ilosc_plecak+=1; instance_destroy(); break; } } for(a=1;a<16;a+=1)//Sprawdzamy czy nie ma wolnego miejsca { if (baza.ido_plecak[a]=0) { x=baza.id_plecak[a].x+16 y=baza.id_plecak[a].y+16 baza.ido_plecak[a]=2 baza.ilosc_plecak[a]=1 id_plecak=a plecak=true; depth=-51 break; } } } I teraz obj nie zawsze leci do pierwszej wolnej komórki tylko czasem przeskakuje 2,3 itd. Jak zrobić aby tak nie przeskakiwało? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 24 Kwietnia 2010 Udostępnij Opublikowano 24 Kwietnia 2010 Czy po użyciu jakiegoś itemu ustawiasz komórkę, gdzie był ten item w plecaku na 0? (chodzi o ido_plecak, nie o ilosc_plecak, możliwe, że nie do końca ten item znika, zostawia po sobie jakiś ślad :) ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawka83 Opublikowano 24 Kwietnia 2010 Autor Udostępnij Opublikowano 24 Kwietnia 2010 Zauważyłem ze ten problem występuje np jak zbiorę 2 itemy na raz. Ale tylko w tedy gdy nie ma jeszcze ich w bagu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 24 Kwietnia 2010 Udostępnij Opublikowano 24 Kwietnia 2010 Jedyne co mi się nasuwa na myśl to to, że GM aktualizuje zmienne do innych obiektów dopiero po wykonaniu stepu. Czyli linią : baza.ido_plecak[a]=2 wcale nie zmieniasz wartości, ale tylko wysyłasz do GM info o tym, że ma się zmienić, a on to robi pod koniec stepa - jak już drugi item zostanie przydzielony. A może break nie działa jak należy... ma on wychodzić z pętli, czy z kodu? Jeśli z pętli to po dodaniu itemu, kontynuuje kod i dodaje się po raz kolejny (przechodzi do drugiego for). Takie moje przypuszczenia... :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawka83 Opublikowano 24 Kwietnia 2010 Autor Udostępnij Opublikowano 24 Kwietnia 2010 No to jak temu zaradzić? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 24 Kwietnia 2010 Udostępnij Opublikowano 24 Kwietnia 2010 Jeśli to wina break, zamień je na exit i sprawdź. No a jeśli to pierwsze... po dłuższym przemyśleniu to to chyba tak nie jest :) Miejmy nadzieję, że nie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawka83 Opublikowano 24 Kwietnia 2010 Autor Udostępnij Opublikowano 24 Kwietnia 2010 wykadziłem coś takiego: GML //argument0 rodzaj itemu for(i=1;i<=10;i+=1) { if (baza.iod_plecak=argument0) { baza.liczba_plecak+=1; instance_destroy() } else if (i=10) { for(i=1;i<=10;i+=1) { if (baza.iod_plecak=0) { x=view_xview+1.5+16; if (i=1) { y=view_yview+1+16; } else { y=view_xview+(32*(i-1))+16 } plecak=true baza.iod_plecak=argument0 baza.liczba_plecak=1 id_plecak=i depth=-501 exit; } } } } Ale dalej błąd Edit: Nie wiem jakim cudem ale się naprawiło po dodaniu exit w tej cześci: GML baza.liczba_plecak+=1; instance_destroy() Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 24 Kwietnia 2010 Udostępnij Opublikowano 24 Kwietnia 2010 Więc to wina break. Przy dodawaniu najpierw zwiększało ilość w jednej komórce. break nic nie dawało, po prostu wychodziło z klamry, z której i tak by wyszło. Potem przechodziło do drugiej for i ponownie dodawało się (w końcu wciąż były wolne miejsca). Po dodaniu exit wychodziło się nie tylko z klamer, ale z całego kodu. Minusem jest tylko to, że nie po przejściu przez exit nie wykona nic więcej z tego klocka 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ę