David Dark Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 Czesc, chce sobie uproscic i zoptymalizowac kod, mam takie co do petli ktorych wczesniej wogole nie uzywalem: petla szuka wolnego miejsca w plecaku, miejsc jest 32, mysle ze skrypt jest calkiem czytelny GML for (ii = 0; ii < 32; ii+=1) global.inventory[ii,1] = ii+1; { if global.inventory[ii,1] = false//jesli miejsce jest wolne { x = global.inventory[ii,2];//pozycja slota y = global.inventory[ii,3]; in_inventory = 1; global.inventory[ii,1] = true;// miejsce jest 'zajete' persistent = true; depth = -999991; takedepth = -999991; slot = ii;//itemek pobiera informacje w ktorym jest slocie } } Skrypt przeszukuje wolnego slota w plecaku, jednak jak zrobic aby zatrzymal sie gdy natrafi na wolnego slota? bo jak narazie to nawet gdy go znajdzie dalej szuka i przedmiot konczy w ostatnim miejscu w plecaku. Probowalem break ale nie dziala. Dzieki za pomoc :)
Konrad-GM Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 GML for (ii = 0; ii < 32; ii+=1) // global.inventory[ii,1] = ii+1; lol? { if global.inventory[ii,1] = false//jesli miejsce jest wolne { x = global.inventory[ii,2];//pozycja slota y = global.inventory[ii,3]; in_inventory = 1; global.inventory[ii,1] = true;// miejsce jest 'zajete' persistent = true; depth = -999991; takedepth = -999991; slot = ii;//itemek pobiera informacje w ktorym jest slocie break; // Zatrzymujemy pętle :P } }
David Dark Opublikowano 27 Kwietnia 2008 Autor Opublikowano 27 Kwietnia 2008 break nie dziala juz mowilem :jezor: petla sie nie zatrzymuje i przedmiot i tak konczy w ostatnim slocie. Troche to dla mnie dziwne myslalem ze to zalatwi sprawe, dlatego pisze tego posta.
Konrad-GM Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 Zauważyłem że dałeś: GML for (ii = 0; ii < 32; ii+=1) global.inventory[ii,1] = ii+1; i to raczej łamie wszystko :P E: I dlatego daje na ostatni slot ponieważ po pętli ii=32 :P
David Dark Opublikowano 27 Kwietnia 2008 Autor Opublikowano 27 Kwietnia 2008 mozesz wytlumaczyc co mam rozumiec pod tym 'lamie wszystko' to znaczy ze petla jest zbudowana tak ze break; jej nie zatrzyma? Mam ja jakos inaczej skonstrulowac? e wiem. przeciez musi przeszukac wszystkie 32 sloty, ale jak ja zatrzymac gdy znajdzie wolny?
Konrad-GM Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 Pętla się wykonuje tylko dla tego kodu: GML global.inventory[ii,1] = ii+1; I dlatego gdy dochodzi do klamer for już się skończył i ii=32 :P
David Dark Opublikowano 27 Kwietnia 2008 Autor Opublikowano 27 Kwietnia 2008 hmm ok, masz jakies rozwiazanie?
Konrad-GM Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 Najpierw napisz po co to jest: GML global.inventory[ii,1] = ii+1; a jeśli sprawdza ( w co wątpię... :P ) to po co to? ( w klamrach ): GML if global.inventory[ii,1] = false E: Logicznie daj tylko: GML for (ii = 0; ii < 32; ii+=1) { if global.inventory[ii,1] = false//jesli miejsce jest wolne { x = global.inventory[ii,2];//pozycja slota y = global.inventory[ii,3]; in_inventory = 1; global.inventory[ii,1] = true;// miejsce jest 'zajete' persistent = true; depth = -999991; takedepth = -999991; slot = ii;//itemek pobiera informacje w ktorym jest slocie break; // Zatrzymujemy pętle tongue2.gif } }
David Dark Opublikowano 27 Kwietnia 2008 Autor Opublikowano 27 Kwietnia 2008 dzieki Konrad-GM :thumbsup: troche glupio przedstawil to w dokumentacji Mark dlatego nie jarzylem, dziala jak chcialem :) Zamykam.
Rekomendowane odpowiedzi