112
edycji
Zmiany
Przejdź do nawigacji
Przejdź do wyszukiwania
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..."
'''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ą.
<pre>on script load:
while true:
broadcast "Nie zapomnij dodać "wait 10 minutes" :)"
wait 10 minutes</pre>
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:
<pre>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</pre>
=== Inne pętle loop ===
Kody można zapętlać określoną liczbę razy, np:
<pre>set {_a} to 0
loop 30 times:
add 1 to {_a}
broadcast {_a}</pre>
== 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).
<code>every 1 tick:</code>
<code>every 30 seconds:</code>
<code>every 1 minute:</code>
<code>every 1 real day:</code>
Przykład:
<pre>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}</pre>
* 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ą.
<pre>on script load:
while true:
broadcast "Nie zapomnij dodać "wait 10 minutes" :)"
wait 10 minutes</pre>
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:
<pre>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</pre>
=== Inne pętle loop ===
Kody można zapętlać określoną liczbę razy, np:
<pre>set {_a} to 0
loop 30 times:
add 1 to {_a}
broadcast {_a}</pre>
== 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).
<code>every 1 tick:</code>
<code>every 30 seconds:</code>
<code>every 1 minute:</code>
<code>every 1 real day:</code>
Przykład:
<pre>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}</pre>