Otwórz menu główne

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...")
 
m
 
(Nie pokazano 1 wersji utworzonej przez jednego użytkownika)
Linia 1: Linia 1:
 
'''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:
 
'''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 ==
+
*Skończone, wykonujące kod określoną liczbę razy
Pętla '''while''' jest wykonywana w nieskończoność dopóki warunki się zgadzają.
+
*Nieskończone, wykonujące kod przez cały czas działania skryptu.
 +
*Warunkowe, wykonujące kod, dopóki podany warunek będzie spełniony.
 +
 
 +
==Pętla while==
 +
Pętla '''while''' jest wykonywana w nieskończoność dopóki warunek jest prawdziwy (zwróci true).
 
<pre>on script load:
 
<pre>on script load:
     while true:
+
     while 1 is 1:
         broadcast "Nie zapomnij dodać "wait 10 minutes" :)"
+
         broadcast "Nie zapomnij dodać ""wait 10 minutes"" :)"
 
         wait 10 minutes</pre>
 
         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ść.
 
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ętla loop==
 
Pętle loop można podzielić na dwie kategorie:
 
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 ===
+
*Takie, które powtarzają kod podaną ilość razy.
 +
*Takie, które powtórzą wszystkie wartości listy.
  
Pętla '''loop''' może loopować
+
===Zapętlające obiekty===
* 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.
+
Pętla '''loop''' może loopować wszystkie skriptowe typy np:
  
Przykład takiej pętli:
+
* Graczy
<pre>on projectile hit:
+
* Itemy
    if {gasnica::%projectile%} is true:
+
* Teksty
        loop blocks in radius 4 around projectile:
+
* Liczby
        if loop-block is fire:
+
* Bloki
            set loop-block to air
 
            delete {gasnica::%projectile%}
 
        loop players in radius 4 around projectile:
 
            extinguish loop-player</pre>
 
  
=== Inne pętle loop ===
+
W takich pętlach zapętlony obiekt jest określany zawsze '''loop-value''', a jego indeks jako '''loop-index''' ale można używać (zależnie od typu obiektów w liście) np:
 +
 
 +
* '''loop-number,''' gdy zapętlane wartości są liczbami.
 +
* '''loop-integer,''' gdy zapętlane wartości są liczbami całkowitymi.
 +
* '''loop-player,''' gdy zapętlana wartość jest graczem.
 +
* '''loop-block,''' gdy zapętlana wartość jest blokiem.
 +
* '''loop-item,''' gdy zapętlana wartość jest przedmiotem.
 +
 
 +
Przykłady takich pętli:
 +
<pre>command /liczby [<text>]:
 +
    trigger:
 +
        loop (0.2, 0.12, 2, 3, 12 and 2):
 +
            send "Liczba: %loop-number%"</pre><pre>
 +
command /itemy [<text>]:
 +
trigger:
 +
loop all items in player's inventory:
 +
send "%loop-item%"
 +
</pre>
 +
 
 +
===Inne pętle loop===
 
Kody można zapętlać określoną liczbę razy, np:
 
Kody można zapętlać określoną liczbę razy, np:
<pre>set {_a} to 0
+
<pre>loop 30 times:
loop 30 times:
+
     broadcast loop-number</pre>
    add 1 to {_a}
 
     broadcast {_a}</pre>
 
  
== periodical ==
+
==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).
 
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).
  
Linia 66: Linia 71:
 
     else if {_msg} is 3:
 
     else if {_msg} is 3:
 
         broadcast coloured {@msg3}</pre>
 
         broadcast coloured {@msg3}</pre>
 +
 +
[[Kategoria: Skript]]

Aktualna wersja na dzień 19:16, 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.
  • Warunkowe, wykonujące kod, dopóki podany warunek będzie spełniony.

Spis treści

Pętla while

Pętla while jest wykonywana w nieskończoność dopóki warunek jest prawdziwy (zwróci true).

on script load:
    while 1 is 1:
        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 powtarzają kod podaną ilość razy.
  • Takie, które powtórzą wszystkie wartości listy.

Zapętlające obiekty

Pętla loop może loopować wszystkie skriptowe typy np:

  • Graczy
  • Itemy
  • Teksty
  • Liczby
  • Bloki

W takich pętlach zapętlony obiekt jest określany zawsze loop-value, a jego indeks jako loop-index ale można używać (zależnie od typu obiektów w liście) np:

  • loop-number, gdy zapętlane wartości są liczbami.
  • loop-integer, gdy zapętlane wartości są liczbami całkowitymi.
  • loop-player, gdy zapętlana wartość jest graczem.
  • loop-block, gdy zapętlana wartość jest blokiem.
  • loop-item, gdy zapętlana wartość jest przedmiotem.

Przykłady takich pętli:

command /liczby [<text>]:
    trigger:
        loop (0.2, 0.12, 2, 3, 12 and 2):
            send "Liczba: %loop-number%"

command /itemy [<text>]: trigger: loop all items in player's inventory: send "%loop-item%"

Inne pętle loop

Kody można zapętlać określoną liczbę razy, np:

loop 30 times:
    broadcast loop-number

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}