xAxee 1968 Opublikowano 29 stycznia 2021 Udostępnij Opublikowano 29 stycznia 2021 Cześć Ten poradnik jest przeznaczony raczej dla początkujących osób w skipcie. Przedstawię tutaj większość dostępnych sposobów na tworzenie warunków. na jakie sposoby możemy robić warunki? [if] %condition%: %condition% %effect% if %condition% %objects-1% if %condition% [else|otherwise] %objects-2% Teraz je trochę omówimy Zacznijmy od pierwszego i najpopularniejszego [if] %condition%: po tym warunku wymagane jest użycie wcięcia. if przed warunkiem nie jest wymagane, ale dla wyglądu kodu powinno się je pisać. w tym sposobie możemy użyć else np: if player has diamond: #warunek send "&7Masz diaxa!" #dalszy kod z wcięciem else: #W przeciwnym razie send "&7Nie masz diaxa" #dalszy kod z wcięciem Następnym sposobem jest "płaski warunek" (inline conditionali) %condition% W przypadku gdy warunek zwróci false, dalszy kod nie wykona się (czyli zadziała jak stop) Często ten sposób nie jest pochwalany, ponieważ kod może się stać mniej przejrzysty (oczywiście zależy od sytuacji) w tym sposobie nie możemy użyć else #... player has emerald #warunek send "Masz emeralda!" #dalszy kod Następnym sposobem jest tzw. do if %effect% if %condition% Dzięki niemu możemy zaoszczędzić linijkę na warunek np: send "&7Masz wystarczajaco duzo zlota!" to player if player has gold ingot Jest jeszcze warunek trójargumentowy (ternary conditional) %objects-1% if %condition% (else|otherwise) %objects-2% Jeżeli warunek będzie spełniony zwróci obiekt-1 jeżeli będzie przeciwny zwróci obiekt-2 add (2 if player has permission "*" else 1) of diamond to player nie używając ternary ten kod byśmy zapisali tak: if player has permission "*": add 2 of diamond to player else: add 1 of diamond to player Często się słyszy żeby nie robić drzew z ifów dlatego jak najlepiej robić warunki? Najlepiej, dla przejrzystości kodu robić tzw. ify łamane, co to znaczy? To znaczy, że przeczymy warunkowi który chcemy uzyskać i wstawiamy tam stop np: if arg is not "tak": #Co ma sie wykonac jeżeli nie jest "tak" stop #to co ma sie wykonac jeżeli jest "tak" Filtry W skripcie od wersji 22-dev36 możemy korzystać z filtrów list %objects% (where|that match) [%condition%] Jak to działa? Działa to dosłownie jak filtr, wybiera wartości tylko te które zgadzają się z warunkiem np: set {_admins::*} to all players where [input has permission "*"] powyższy kod ustawi zmienną {_admins::*} na osoby które posiadają uprawnienie * Taki sam kod bez użycia filtru wyglądałby tak: loop all players: if player has permission "*": add player to {_admins::*} Spoiler Dla ciekawskich w skript-reflect możemy stworzyć inny składniowo (bardziej "programistyczie") warunek trójargumentowy kod: expression %boolean% ? %object% : %object%: get: if expr-1 is true: return expr-2 return expr-3 składnia: %boolean% ? %object-1% : %object-2% obiekt-1 zostanie zwrócony gdy boolean będzie prawdziwy obiekt-2 zostanie zwrócony gdy boolean będzie fałszywy np: send ({privateMsg::%player-arg%} ? "&7Gracz ma wlaczone prywatne wiadomosci!" : "&7Gracz ma wylaczone prywatne wiadomosci!") to player W jaki sposób możemy przeczyć w warunkach? is -> is not / isn't / aren't / are not can -> cannot / can not / can't has -> has not / not have / don't have / doesn't have Dzięki za poświęcony czas na przeczytanie tego poradnika. Wszelkie błędy / poprawki / propozycje proszę zgłaszać. Pozdrawiam Aksik Kormic, Helios1993, knugi i 3 innych 5 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/45097-skript-warunki/ Udostępnij na innych stronach Więcej opcji udostępniania...
Kormic 1951 Opublikowano 29 stycznia 2021 Udostępnij Opublikowano 29 stycznia 2021 Pierwsza sprawa tyczy się tzw. 'inline conditionali' (czy jak ty to powiedziałeś 'płaski warunek'). One nie zmniejszają czytelności kodu, w większości sytuacji są pomocne i pozwalają na uniknięcie zagnieżdżonych warunków. Już prędzej 'do if' oraz 'ternary operator' robią bałagan w kodzie. Druga rzecz to mały błąd w możliwościach przeczenia, a dokładniej to 'doesn't have', które jest poprawną formą w języku angielskim. Trzecia i ostatnia sprawa to to, że nie opisałeś operatora trójskładnikowego ('ternary operator'), a on również podchodzi pod warunki. Mimo wszystko poradnik przyda się osobom początkującym, trzymaj lajka xAxee 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/45097-skript-warunki/#findComment-283781 Udostępnij na innych stronach Więcej opcji udostępniania...
luk4sMC 10 Opublikowano 21 lutego 2021 Udostępnij Opublikowano 21 lutego 2021 (edytowane) Cytat To znaczy, że przeczymy warunkowi który chcemy uzyskać i wstawiamy tam stop np: Myślę, że w wielu sytuacjach użycie tylko negacji jest jedynym i właściwym sposobem. Idealny przykład to sprawdzenie czy plik nie istnieje - nie odwrotnie czyli: czy plik istnieje. Wiem, że o tym napisałeś, ale w wielu sytuacjach ten stop będzie zbędny. #pesudo kod if plik istnieje stop else tworze plik if plik nie istnieje tworze plik Cytat Jeżeli warunek będzie spełniony zwróci obiekt-1 jeżeli będzie przeciwny zwróci obiekt-2 Coś jak operatory logiczne && i ||, które to z javy pochodzą Brakuje mi czegoś na kształt instrukcji case case {zmienna} in jakis_string) wywołaj funkcje ;; lokalizacja_gracza) auto tłumaczenie skryptu. esac Edytowane 21 lutego 2021 przez luk4sMC Cytuj Odnośnik do komentarza https://skript.pl/temat/45097-skript-warunki/#findComment-289884 Udostępnij na innych stronach Więcej opcji udostępniania...
Kormic 1951 Opublikowano 21 lutego 2021 Udostępnij Opublikowano 21 lutego 2021 2 godziny temu, luk4sMC napisał: Brakuje mi czegoś na kształt instrukcji case Zawsze możesz sobie zrobić takiego case'a prostym szeregiem 'else if'. 2 godziny temu, luk4sMC napisał: Coś jak operatory logiczne && i ||, które to z javy pochodzą To prawda, tego to każdemu brakowało (i pewnie nadal brakuje). Niestety z operatorem || trzeba to załatwiać w ten sposób: if arg-1 is 1: set {_t} to true if arg-2 is 2: set {_t} to true {_t} is set # Dalszy kod Z operatorem && sprawa wygląda dość podobnie, ale należy przed warunkami ustawiać jakąś zmienną na true, a jeżeli któryś z warunków jest niezgodny, wykonujemy 'stop', aby zatrzymać kod. Cytuj Odnośnik do komentarza https://skript.pl/temat/45097-skript-warunki/#findComment-289909 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ą.