Pętle: Różnice pomiędzy wersjami
(Utworzono nową stronę "'''Pętle''' umożliwiają cykliczne wykonywanie kodu określoną liczbę razy, do momentu zajścia pewnych warunków lub w nieskończoność. '''Skript''' umożliwia p...") |
|||
| Linia 66: | Linia 66: | ||
else if {_msg} is 3: | else if {_msg} is 3: | ||
broadcast coloured {@msg3}</pre> | broadcast coloured {@msg3}</pre> | ||
| + | |||
| + | [[Kategoria: Skript]] | ||
Wersja z 15:37, 27 paź 2019
Pętle umożliwiają cykliczne wykonywanie kodu określoną liczbę razy, do momentu zajścia pewnych warunków lub w nieskończoność. Skript umożliwia pętlowanie wybranych bloków, wartości, graczy, liczb lub pozwala na loopowanie kodu określoną ilość razy. Pętle dzielimy na dwie grupy:
- skończone, wykonujące kod określoną liczbę razy
- nieskończone, wykonujące kod przez cały czas działania skryptu.
pętla while
Pętla while jest wykonywana w nieskończoność dopóki warunki się zgadzają.
on script load:
while true:
broadcast "Nie zapomnij dodać "wait 10 minutes" :)"
wait 10 minutes
Kiedy skrypt zostanie wczytany pętla while zostaje uruchomiona, ponieważ while true zawsze się zgadza. Wtedy co 10 minut zostaje ogłoszona wiadomość.
pętla loop
Pętle loop można podzielić na dwie kategorie:
- takie, które pętlują fizyczne rzeczy w grze, np. bloki, graczy
- takie, które loopują kod określoną ilość razy
Zapętlające obiekty
Pętla loop może loopować
- graczy
- bloki
- bloki, które zostały zniszczone przez eksplozję
- graczy on-line
- wartości
- indeksy
- ekwipunki
- światy
- byty
W takich pętlach zapętlony obiekt jest teraz określany jako loop-player, loop-index, loop-entity itp.
Przykład takiej pętli:
on projectile hit:
if {gasnica::%projectile%} is true:
loop blocks in radius 4 around projectile:
if loop-block is fire:
set loop-block to air
delete {gasnica::%projectile%}
loop players in radius 4 around projectile:
extinguish loop-player
Inne pętle loop
Kody można zapętlać określoną liczbę razy, np:
set {_a} to 0
loop 30 times:
add 1 to {_a}
broadcast {_a}
periodical
Pętle te są nieskończone i wykonują się co pewien czas, określany przez timespan. Mimo skuteczności wcale nie są polecane, ponieważ mogą obciążać serwer, jeżeli periodical jest co 1 tick i zapętla wszystkich graczy (zakładając, że gra ich dużo).
every 1 tick:
every 30 seconds:
every 1 minute:
every 1 real day:
Przykład:
every 1 minute:
set {_msg} to random integer between 1 and 3
if {_msg} is 1:
broadcast coloured {@msg1}
else if {_msg} is 2:
broadcast coloured {@msg2}
else if {_msg} is 3:
broadcast coloured {@msg3}