Zapętlanie wykonywanej operacji skryptowej 2762 6

O temacie

Autor FrytaPL

Zaczęty 10.04.2012 roku

Wyświetleń 2762

Odpowiedzi 6

FrytaPL

FrytaPL

Użytkownicy
posty28
Propsy2
  • Użytkownicy
Witam!
Czy jest możliwośc zapętlenia lub skoku do wybranego miejsca w kodzie skryptowym?
Instrukcja goto; w Gothicu nie istnieje, tak jak pętle. Dlatego zwracam się do was o pomoc.
 


FrytaPL

FrytaPL

Użytkownicy
posty28
Propsy2
  • Użytkownicy
 

Zysk

Zysk

Użytkownicy
posty606
Propsy451
  • Użytkownicy
Zwróć uwagę, że i tak nie można indeksować tablic zmiennymi, więc pętle mają ograniczoną użyteczność.
 

FrytaPL

FrytaPL

Użytkownicy
posty28
Propsy2
  • Użytkownicy
właśnie zauważyłem, tu jest coś nie tak, bo ta pętla cały czas się zapętla i.... crash.
Wydziergałem taki kodzik:

/* Spawn npc loop*/

func void Nilbox_loopspawnnpc(var int code, var string waypoint) {



if  (Npc_GetDistToWP (self, waypoint) <= 1000)
{
Nilbox_spawnnpc(code, waypoint);

};

Nilbox_loopspawnnpc(code, waypoint);
};

/*End spawn npc loop */

ps. Nilbox_spawnnpc to alternatywa dla Wld_InsertNpc
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Nie możesz wywoływać rekurencji nieskończenie wiele razy, bo przepełniasz stos. Musisz dodać jakiś licznik, który jeśli jest mniejszy od 1000, to wykonuje funkcję.

A najlepiej użyj tego: http://themodders.org/index.php?/topic/89-wywolywanie-skryptu-co-xx-czyli-wywolanie-skryptu-co-18-sekundy/

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
To kończ wywoływanie rekurencyjne i tyle wystarczy jeden licznik

/* Spawn npc loop*/
var int i; // tworzymy licznik
func void Nilbox_loopspawnnpc(var int code, var string waypoint) {

        i = i +1;

        if  (Npc_GetDistToWP (self, waypoint) <= 1000)
        {              
                Nilbox_spawnnpc(code, waypoint);              
        };
       
        if (i < 10){//rób dopóki i nie jest większe od 10
                Nilbox_loopspawnnpc(code, waypoint);
        };
};

/*End spawn npc loop */

Przy wywoływaniu MUSISZ zerować licznik

i = 0;
Nilbox_loopspawnnpc(12132, "wp");


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry