Skript: Pętle

Z skript.pl wiki
Skocz do: nawigacja, szukaj


Pętla - służy do powtarzania danego kawałka kodu.

Czysty Skript zawiera trzy rodzaje pętli:

  • Coś w stylu pętli for(each) - po wartościach, listach i po wyrażeniach - np. all players, {lista::*} lub the attacker and the victim
  • Pętla nieskończona czasowa - powtarza kawałek kodu co określony czas.
  • Od wersji 2.0 - pętla while.


Pętla for(each)-podobna[edytuj]

Jej funkcja jest identyczna jak w innych językach programowania - leci po listach.

Aby pobrać aktualny element z danej iteracji pętli używamy loop-<typ>

Lista typów dla pętli:

  • loop-index - aktualna iteracja pętli
  • loop-value - aktualna wartość elementu z danej iteracji
  • loop-entity - aktualny byt z danej iteracji
  • loop-block - aktualny blok z danej iteracji
  • <...>

Gdy mamy kilka pętli w sobie dopisujemy numer pętli. Przykład:

loop 10 times:
    loop 3 times:
        send "&c%loop-value-2%
    send "&a%loop-value-1%"

Najprostsza pętla wykonująca kod 5 razy:

loop 5 times:
    send "Witaj po raz %loop-value%"

Przykład pętli wykonującej kod dla każdego elementu z wartości - listy graczy:

loop all players:
    send "%loop-player%, dostales maly prezent ;)" to loop-player
    give diamond to loop-player
    chance of 10%:
        give 10 diamonds to loop-player
        stop

Przykład pętli wykonującej kod dla każdego bloku w promieniu 3 kratek od gracza:

loop blocks in radius 3 around the player:
    send "&e&lBOOGACTFO!!!"
    loop-block is stone:
        set the block to diamond ore

Przykład pętli wykonującej kod dla każdego elementu z listy zwróconej przez wyrażenie:

loop the victim and the attacker:
    send "&aWalka rozpoczeta!"

Przykład pętli wykonującej kod dla każdego elementu w liście w zmiennej:

on join:
    loop {banlist::*}:
        kick loop-player due to "Zostales zbanowany!"

Pętla while[edytuj]

Pętla while powtarza dany kod póki nie zwróci on wartości fałsz.

Przykład użycia:

on join:
    while {authed.%player%} is 0:
        send "&6&lZaloguj się» &a&l/login haslo"
        wait 5 seconds

Pętla czasowa[edytuj]

Gdy chcemy wykonywać jakąś czynność co jakiś czas najlepiej użyć every [czas].

Przykład użycia:

every 5 seconds:
    spawn 1 pig at {swiniarka}
    spawn 1 cow at {swiniarka}
    spawn 1 chicken at {swiniarka}