piratjsk 700 Opublikowano 1 lutego 2014 Udostępnij Opublikowano 1 lutego 2014 (edytowane) Poradnik przedstawiający pętle w Skript. Skript - pętlePoznajemy pętle, ich rodzaje i przykładowe zastosowania. I. WstępCzym są pętle? Jak je dzielimy? Pętle są wyrażeniami, dzięki którym możemy zapętlić w dany sposób/daną ilość razy jakiś kod.Pętle dzielimy na dwie grupy: - pętle skończone (wykonujące określoną ilość razy dany kod) - pętle nieskończone (wykonujące dany kod przez cały czas działania skryptu) wyjątkiem jest pętla while, która może być skończona lub nieskończona. II. Pętle skończoneCzym się charakteryzują? Do czego można ich użyć? Pętle skończone można podzielić na dwie grupy: - pętle ze zdefiniowaną ilością zapętleń: loop 13 times: # kod loop {zmienna} times: # kod loop 4*5+2^30 times: # kod W pętlach tych możemy się odwoływać do zmiennej loop-number, która przechowuje numer zapętlenia. - pętle zapętlające daną grupę obiektów loop {lista::*}: # kod loop all players: # kod loop all sheeps in player's world: # kod loop players in radius 4 of player: # kod loop inventory of clicked block: # kod loop inventory of arg: # kod loop worlds: # kod loop all dropped items: # kod Każda z tych pętli może zawierać inne zmienne: po zapętleniu listy zmiennych: loop-index - nazwa zmiennej, loop-value - wartość zmiennej, po zapętleniu graczy: loop-player - gracz, po zapętleniu owiec: loop-sheep (lub loop-entity) - owca, po zapętleniu ekwipunku: loop-item - przedmiot, po zapętleniu światów: loop-world - świat. Pętle te wykonają dany kod dla każdego obiektu z zapętlonej grupy. Pętle w pętli Jeśli tworzymy kilka pętli w sobie nawzajem i posiadają one zmienne o takich typach, aby się do nich odwołać musimy zdefiniować numer pętli w formacie: nazwa_zmiennej-numer_pętli np. loop-number-2. loop 30 times: loop 4 times: loop-number-1 is 3: send "3 zapętlenie pierwszej pętli, wyświetli się 4 razy" loop-number-2 is 4: send "4 zapętlenie drugiej pętli, wyświetli się 30 razy" loop-number-1 is 30: send "ostatnie zapetlenie pierwszej pętli, wyświetli się 4 razy" III. Pętle nieskończoneCzym się charakteryzują? Do czego można ich użyć? Pętle nieskończone, jak sama nazwa wskazuje, wykonują dany kod nieograniczoną ilość razy. Jako jedyne stanowią samodzielne jednostki (nie muszą być zawarte w komendach, zdarzeniach). every <czas>: # kod every 1 tick: # kod every 5 hours: # kod Dany kod będzie wykonywany w nieskończoność co zdefiniowany czas np. co 5 godzin. IV. Pętla whileCzym się charakteryzuje? Do czego można jej użyć? Ciekawą pętlą jest pętla while, gdyż może być zarówno skończona jaki i nieskończona. while <warunek>: # kod Słownie można opisać ją tak: dopóki warunek jest spełniony wykonuje dany kod. while 1 is 1: # kod Powyższa pętla będzie wykonywała dany kod w nieskończoność. W praktyce jednak nie ma sensu tworzyć nieskończonej pętli while gdyż będzie ona działała tak samo jak pętle every. Jedyną różnicą jest ta, że jeśli kod w pętli nie będzie zawierał polecenia wait to nieskończona pętla while "zlaguje" serwer gdyż będzie on bez najmniejszej przerwy wykonywał kod w pętli "nie mając czasu" na żadne inne działanie. Tak więc tworzenie nieskończonych pętli while - niewskazane! Przy używaniu tej pętli warto zastosować zabezpieczenie przed nieskończonością, mianowicie: set {_limit} to <limit powtorzen> while <warunek>: # kod remove 1 from {_limit} {_limit} is 0: exit loop V. PrzykładyPrzykładowe zastosowania różnych pętli. - Pętla every 5 seconds oraz zapętlenie wszystkich graczy na serwerze: every 5 seconds: loop all players: {vampire.%loop-player%} is true sunlight level at the loop-player is greater than 10 ignite the loop-player for 5 seconds Działanie: jeśli zmienna {vampire.%gracz%} ma wartość true i gracz przebywa w słońcu - będzie się palił. - Zapętlenie wszystkich graczy: command /ac [<text>]: trigger: loop all players: loop-player has permission "jestem.adminem": send arg to loop-player Działanie: wysyła wiadomość do wszystkich graczy posiadających uprawnienie jestem.adminem. - Pętla while: on right click on sign: line 1 is "[sklep]" line 2 constains "S" and "K" and ":" set {_i} to 1 while {_k} or {_s} is not set: line 2 of clicked block constains "S %{_i}%:": set {_s} to {_i} line 2 of clicked block constains ":%{_i}% K": set {_k} to {_i} add 1 to {_i} {_i} is 9999: exit loop send "Cena kupna: %{_k}%, Cena sprzedaży: %{_s}%" Działanie: pętla while jest tu wykorzystana do pobrania kwoty kupna i sprzedaży z tabliczki o wzorze: linia 1: [sklep] linia 2: S <cena sprzedaży>:<cena kupna> K Pętla będzie wykonywana tak długo, aż zmienne {_s} i {_k} będą zapisane lub gdy osiągnie 9999 powtórzeń. Edytowane 12 kwietnia 2017 przez piratjsk poprawienie formatowania HeezQ, VateqS, tropereks i 8 innych 11 Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/ Udostępnij na innych stronach Więcej opcji udostępniania...
Żyraf 170 Opublikowano 2 lutego 2014 Udostępnij Opublikowano 2 lutego 2014 Zarąbisty poradnik, oby takich więcej. Btw, na samym końcu jest błąd: "lina 1" zamiast "linia 1". Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-25 Udostępnij na innych stronach Więcej opcji udostępniania...
piratjsk 700 Opublikowano 2 lutego 2014 Autor Udostępnij Opublikowano 2 lutego 2014 Zarąbisty poradnik, oby takich więcej. Btw, na samym końcu jest błąd: "lina 1" zamiast "linia 1".Dzięki. :) (błąd poprawiony) Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-35 Udostępnij na innych stronach Więcej opcji udostępniania...
theneuetimes 522 Opublikowano 3 lutego 2014 Udostępnij Opublikowano 3 lutego 2014 Czyloop 4*5+2^30 times:te 4*5+2^30 to działanie? I czynność powtórzy się tyle razy jaki będzie wynik tego działania? Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-46 Udostępnij na innych stronach Więcej opcji udostępniania...
piratjsk 700 Opublikowano 3 lutego 2014 Autor Udostępnij Opublikowano 3 lutego 2014 Czyloop 4*5+2^30 times:te 4*5+2^30 to działanie? I czynność powtórzy się tyle razy jaki będzie wynik tego działania?Tak, w tym przypadku zapętlamy kod 1073741844 razy. Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-48 Udostępnij na innych stronach Więcej opcji udostępniania...
ApisEK12 0 Opublikowano 13 lipca 2014 Udostępnij Opublikowano 13 lipca 2014 Czy loop all players wyszukuje wszystkich graczy na serwerze? Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-12364 Udostępnij na innych stronach Więcej opcji udostępniania...
Norbi 1337 Opublikowano 14 lipca 2014 Udostępnij Opublikowano 14 lipca 2014 tak [â—] Napisane dzieki Norbi's smartphone Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-12375 Udostępnij na innych stronach Więcej opcji udostępniania...
ApisEK12 0 Opublikowano 14 lipca 2014 Udostępnij Opublikowano 14 lipca 2014 Dzięki. :) Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-12397 Udostępnij na innych stronach Więcej opcji udostępniania...
herhor67 916 Opublikowano 13 sierpnia 2014 Udostępnij Opublikowano 13 sierpnia 2014 Kurde, zarąbisty poradnik, powinni wszystkie od pirata podpiąć :) Jest kilka błędów # kod loop 4*5+2^30 times <- nie ma : # kod powturze� (ort i polski znak) daj powtorzen i w ostatnim skrypcie masz 2x constains zamiast contains Norbi 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-19480 Udostępnij na innych stronach Więcej opcji udostępniania...
TheRandy 0 Opublikowano 3 stycznia 2017 Udostępnij Opublikowano 3 stycznia 2017 (edytowane) Ej a tą pętle mam dać na końcu czy na początku skryptu ? Sorry nowy jestem Edytowane 3 stycznia 2017 przez TheRandy Zapomniałem kilka wyrazów a teraz jest po Polskiemu xD :P Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-107012 Udostępnij na innych stronach Więcej opcji udostępniania...
Norbi 1337 Opublikowano 3 stycznia 2017 Udostępnij Opublikowano 3 stycznia 2017 20 minut temu, TheRandy napisał: Ej a tą pętle mam dać na końcu czy na początku skryptu ? Sorry nowy jestem gdzie chcesz Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-107015 Udostępnij na innych stronach Więcej opcji udostępniania...
Rafesqu 3 Opublikowano 9 marca 2021 Udostępnij Opublikowano 9 marca 2021 Ej pytanko jak zaloopowac danego gracza? (Np tylko mnie) Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-294151 Udostępnij na innych stronach Więcej opcji udostępniania...
CoFFeIN04 696 Opublikowano 9 marca 2021 Udostępnij Opublikowano 9 marca 2021 to skoro tylko siebie chcesz to po co chcesz zapętlać? Powiedz, co dokładnie chcesz zrobić. Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-294153 Udostępnij na innych stronach Więcej opcji udostępniania...
Rafesqu 3 Opublikowano 9 marca 2021 Udostępnij Opublikowano 9 marca 2021 Teraz, CoFFeIN04 napisał: to skoro tylko siebie chcesz to po co chcesz zapętlać? Powiedz, co dokładnie chcesz zrobić. Chce zrobic tak ze jak skrypt sie loaduje to chce aby mi wysylalo wiadomosc (tylko mi, i nie chodzi o gracza ktory ma dana permisje) Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-294154 Udostępnij na innych stronach Więcej opcji udostępniania...
Glicz 246 Opublikowano 9 marca 2021 Udostępnij Opublikowano 9 marca 2021 14 minut temu, Rafesqu napisał: Chce zrobic tak ze jak skrypt sie loaduje to chce aby mi wysylalo wiadomosc (tylko mi, i nie chodzi o gracza ktory ma dana permisje) no to możesz zrobić: on load: send "wiadomosc" to ("gracz" parsed as player) CoFFeIN04 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-294155 Udostępnij na innych stronach Więcej opcji udostępniania...
CoFFeIN04 696 Opublikowano 9 marca 2021 Udostępnij Opublikowano 9 marca 2021 (edytowane) no to używasz przy tym send oraz parsowania stringa na gracza, poradnik na temat parsowania: Edytowane 9 marca 2021 przez CoFFeIN04 proszę o wybaczenie z powodu kserokopiarkowania.... Glicz 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-294156 Udostępnij na innych stronach Więcej opcji udostępniania...
Rafesqu 3 Opublikowano 9 marca 2021 Udostępnij Opublikowano 9 marca 2021 2 minuty temu, Glitchtrap napisał: no to możesz zrobić: on load: send "wiadomosc" to ("gracz" parsed as player) Bardzo pomogles (porzucilem projekt ktory mialem zrobic ale wykorzystam to do czegos innego) Glicz 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-294157 Udostępnij na innych stronach Więcej opcji udostępniania...
PolsatGraniePL 124 Opublikowano 27 marca 2021 Udostępnij Opublikowano 27 marca 2021 W dniu 1.02.2014 o 20:38, piratjsk napisał: Każda z tych pętli może zawierać inne zmienne: po zapętleniu listy zmiennych: loop-index - nazwa zmiennej, loop-value - wartość zmiennej, chodzi tutaj o loop-index. Albo ja nie zrozumiałem albo jest to źle napisane. Nie jest to nazwa zmiennej tylko liczba która jest z rzędu szybkimp3 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-297299 Udostępnij na innych stronach Więcej opcji udostępniania...
iYowee 2 Opublikowano 11 lipca 2022 Udostępnij Opublikowano 11 lipca 2022 Dzien dobry czy da się zrobić, aby zapetlało w nieskonczonosc? Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-323666 Udostępnij na innych stronach Więcej opcji udostępniania...
xAxee 1968 Opublikowano 11 lipca 2022 Udostępnij Opublikowano 11 lipca 2022 1 minutę temu, iYowee napisał: Dzien dobry czy da się zrobić, aby zapetlało w nieskonczonosc? np while 1 is 1: Cytuj Odnośnik do komentarza https://skript.pl/temat/7-skript-p%C4%99tle/#findComment-323668 Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.