Warunki
Warunek (ang. condition) – jeden z podstawowych elementów Skript'a, służy do wykonania kodu, jeżeli gracz spełni odpowiednie warunki if. Warunków jest bardzo dużo, szczególnie w samym Skript'cie, dodatkowo istnieją addon'y dodające wiele nowych warunków. Warunki typu can hold, can build, can fly, can see muszą zostać spełnione przez gracza (tzn. musi mieć możliwość budowania, latania itp.) a jeżeli nie spełni warunku to można zastosować else / else if. Do warunków da się stosować negacje (cannot build, isn't edible, isn't burning, cannot see). "if" przed warunkiem piszemy opcjonalnie, ale dla jakości kodu najlepiej pisać.
command /setblock <material>: trigger: player cannot build at the targeted block: message "Nie możesz tutaj budować :|" stop else: set the targeted block to argument
Typy warunków
W skripcie możemy użyć trzech typów warunków:
Typ warunku | Opis | Przykład |
---|---|---|
Typ 1 | Stosujemy tzw. wcięcie w kodzie po którym spełnia się kod | if player has permission "admin":
|
Typ 2 | Możemy go użyć bez stosowania wcięcia przez co nie możemy postawić else,
nie piszemy if na początku oraz nie dajemy : na końcu |
player has permission "admin"
|
Typ 3 | Piszemy if po napisaniu efektu, nie możemy wykonać else oraz nie dajemy : na końcu | add diamond to player if player has permission "admin"
|
Typ 4 | Warunki na podstawie przeczeń - zaprzeczamy warunek, a gdy jest spełniony to zatrzymujemy kod. | if player doesn't have permission "admin":
[tab]stop |
Lista warunków
Poniższa lista jest kompatybilna wraz z wersją Skript v2.4.
Warunek | Wydanie | Opis | Przykłady |
---|---|---|---|
can build | Skript 2.0 | Sprawdza, czy gracz może budować | player cannot build at the targeted block: cancel event send "Nie możesz tu budować!" |
can fly | Skript 2.3 | Sprawdza, czy gracz może latać | player cannot fly at the player's location: disallow flight for player |
can hold | Skript 1.0 | Sprawdza, czy gracz może trzymać przedmiot | if player is holding stick of unbreaking 10 named "&cAdmin-Tool": if player cannot hold stick of unbreaking 10 named "&cAdmin-Tool": remove player's tool from player's inventory drop player's tool at player |
can see | Skript 2.3 | Sprawdza, czy gracz może widzieć innych graczy | if {vanish::%player%} is true: loop all players: if loop-player can see player: hide player from loop-player |
chance | Skript 1.0 | Dodaje możliwość dodania prawdopodobieństwa wykonania kodu | chance of 0.25%: drop 1 of diamond at player send "Znalazłeś diament!" |
comparison | Skript 1.0 | Porównuje liczby, bloki, byty i obiekty w świecie gry (zazwyczaj dwie podane liczby) | if {money::%player%} > 10000: give 1 of diamond sword of unbreaking 3, sharpness 5 and mending to player else: send "Nie stać cię na to!" on mine: time in the player's world < 8:00: send "Idź odpoczywać, a nie kopiesz!" the clicked block is a stone slab or a double stone slab: send "Kliknąłeś na płytę kamienną :O" |
contains | Skript 1.0 | Sprawdza, czy tekst, liczba lub skrzynia itp. zawiera litery/cyfry/przedmioty (i wiele więcej) | if {lista::*} contains "Linijka 1": send "Ta lista zawiera linijkę 1." set {_var} to text from "https://wiki.skript.pl/Condition" if {_var} contains "Condition": send "Ta strona opisuje chyba wszystkie conditiony! player has 128 of cobblestone: send "Masz 2 staki bruku!" |
damage cause | Skript 2.0 | Sprawdza, co było przyczyną obrażeń | damage was caused by lava: broadcast "%victim% próbował pływać w lawie :O" |
event cancelled | Skript 2.2-dev36 | Sprawdza, czy wydarzenie zostało anulowane | on click: if event is cancelled: broadcast "Co ty odjaniepawlasz?" |
exists / is set | Skript 1.2 | Sprawdza, czy obiekt istnieje / argument jest ustawiony itp. | if arg 1 isn't set: send "Poprawne użycie: /komenda <argument>" |
has client weather | Skript 2.3 | Sprawdza, czy gracze mają niestandardową pogodę | if the player has custom weather: send "Twoja pogoda: %player's weather%" |
has metadata | Skript 2.2-dev36 | Sprawdza, czy gracz ma metadatę | if player has metadata value "medyk": send "Jesteś medykiem" |
has permission | Skript 1.0 | Sprawdza, czy gracz ma permisję | player has permission "admin.ban": ban player-argument due to text-argument else: send "Lol, nie masz permisji do banowania" |
has played before | Skript 1.4 | Sprawdza, czy gracz grał wcześniej | if player has played before: send "Witaj ponownie!" else: send "Witaj tutaj pierwszy raz :O" |
has resource pack | Skript 2.4 | Sprawdza, czy gracz ma resource-pack | if the player has a resource pack loaded: send "Używaj tą broń do woli :)" else: remove player's tool from player's inventory drop player's tool at player send "Tego kałasznikowa nie możesz używać, bo nie masz resource-packa :(" |
has scoreboard tag | Skript 2.3 | Sprawdza, czy gracz ma włączoną tabelę (tą z prawej strony) | if player has the scoreboard tag "Test": send "Masz to włączone ;)" else: remove player's tool from player's inventory drop player's tool at player send "Tego kałasznikowa nie możesz używać, bo nie masz resource-packa :(" |
is alive | Skript 2.0 | Sprawdza, czy byt żyje | if player is alive: send "Jeszcze tutaj jakimś cudem żyjesz" else: send "Świeczki [*]" |
is banned | Skript 1.4 | Sprawdza, czy gracz został zbanowany (Nota: Działa tylko na ten ban "bukkitowy") | if the player is banned: broadcast "%player% próbował dołączyć, ale ma bana. Znicze dla niego! [*]" |
is block | Skript 2.4 | Sprawdza, czy przedmiot jest blokiem | player's held item is a block: set targeted block to player's tool remove player's tool from player's inventory |
is blocking | Skript 2.0 | Sprawdza, czy gracz zablokował uderzenie/pocisk tarczą | on damage of player: victim is blocking damage attacker by 0.5 hearts send "A masz! Karma wraca" |
is burning | Skript 1.4.4 | Sprawdza, czy gracz ma resource-pack | player is burning: player is holding diamond: add 1 to the player's health remove 1 of diamond from player's inventory send "Ten diament ci życie uratuje :)" |
Warunek | Wydanie | Opis | Przykłady |
---|---|---|---|
is edible | Skript 2.2-dev36 | Sprawdza, czy przedmiot jest jadalny | if the player's tool is edible: send "Jak miło, można to zjeść" |
is empty | Skript 2.0 | Sprawdza, czy coś jest puste (skrzynia, ekwipunek itp.) | player's inventory is empty: give 2304 of dirt to player |
is enchanted | Skript 1.4.6 | Sprawdza, czy coś jest zaklęte | if the player's tool is enchanted with efficiency 3: set the targeted block to air drop 1 of obsidian at player else: cancel event send "Nie możesz wykopać obsydianu bez Wydajności III" |
is flammable | Skript 2.2-dev36 | Sprawdza, czy przedmiot może się zapalić | if wood is flammable: send "Uważaj, ta deska może się zapalić od ognia :)" |
is flying | Skript 1.4.4 | Sprawdza, czy gracz lata | if the player is flying: disallow flight for player |
is holding | Skript 1.0 | Sprawdza, czy gracz trzyma przedmiot w ekwipunku | if the player is holding a blaze rod of unbreaking 10 named "Róg mocy": create fake explosion at targeted block |
is member / owner of region | Skript 2.1 | Sprawdza, czy gracz jest członkiem / właścicielem regionu | on region enter: if player is the owner of the region: message "Witaj w swoim domu ponownie, %player%!" send "%player% zawitał w %region%!" to all members of the region |
is of type | Skript 1.4 | Sprawdza, jakim typem jest byt/obiekt/blok | victim is of type {villager type}: send "Czemu bijesz wieśniaków?" |
is on ground | Skript 2.2-dev26 | Sprawdza, czy byt znajduje się na ziemi | if player isn't on ground: push player down at speed 10 |
is online | Skript 1.4 | Sprawdza, czy gracz jest w grze | if arg-1 is online: kick arg-1 due to arg-2 else: send "%player% nie jest online!" |
is poisoned | Skript 1.4.4 | Sprawdza, czy byt jest zatruty | if player is poisoned: apply regeneration to player |
is riding | Skript 2.0 | Sprawdza, czy byt ujeżdza inne zwierzę/jest w pojeździe (łódka, wagonik) | player is riding a saddled pig: send "Chrum, chrum!" |
is script loaded | Skript 2.2-dev31 | Sprawdza, czy skrypt został załadowany | if script "przyklad.sk" is loaded: send "Już ten skrypt jest załadowany!" to console |
is sleeping | Skript 1.4.4 | Sprawdza, czy gracz śpi | if player is sleeping: chance of 50%: drop 1 of ghast tear named "Ząb" at player |
is slime chunk | Skript 2.3 | Sprawdza, czy gracz znajduje się na chunku "szlamowym" (tzn. czy tam szlamy się odradzają) | if chunk at player is a slime chunk: send "Znajdujesz się na chunku szlamowym!" else: send "To nie jest tu!" |
is sneaking / sprinting | Skript 1.4.4 | Sprawdza, czy gracz skrada się / sprintuje | if player is sneaking: send "Teraz masz być cicho!" |
is solid | Skript 2.2-dev36 | Sprawdza, czy przedmiot/blok jest solidny | if grass block is solid: send "Bądź spokojny, nie spadniesz" |
is swimming | Skript 2.3 | Sprawdza, czy gracz/byt pływa | if player is swimming: apply water breathing to player |
is transparent | Skript 2.2-dev36 | Sprawdza, czy przedmiot jest przezroczysty | if glass is transparent: send "Czy wiedziałeś, że przez szkło można widzieć?" |
is wearing | Skript 1.0 | Sprawdza, czy gracz nosi zbroję | player is wearing all diamond armour: set max health of player to 30 |
is PvP | Skript 1.3.4 | Sprawdza, czy PvP jest włączone/wyłączone na świecie | PvP is disabled in "world": send "PvP jest tutaj wyłączone!" |
region contains | Skript 2.1 | Sprawdza, czy region coś zawiera | on region enter: region contains {flags.%world%.red} message "Czerwona flaga jest blisko!" |
resource pack | Skript 2.4 | Sprawdza, czy gracz odpowiedział na pozwolenie do pobrania resource-pack'a | on resource pack response: if the resource pack wasn't accepted: kick the player due to "Aby tu grać, musisz zainstalować resource-pack!" |
starts / ends with | Skript 2.2-dev36 | Sprawdza, czy przedmiot jest przezroczysty | if glass is transparent: send "Czy wiedziałeś, że przez szkło można widzieć?" |
weather | Skript 1.0 | Sprawdza pogodę na świecie | if is raining in "world" or "lobby": send "Pada!" |
time | Skript 2.0 | Sprawdza różnicę %now% (teraz czasu realnego) i np. czasu użycia komendy | {command::%player's uuid%::last-usage} was less than a minute ago: message "Zaczekaj minutę zanim użyjesz tej komendy ponownie :)" stop set {command::%player's uuid%::last-usage} to now |