2. diel - Skript - podmienky a argumenty
V minulej lekcii, Úvod do jazyka Skript a prvý kód , sme si ukázali základné príkazy a naučili sa pracovať s premennými. Teraz je ale nutné, aby sme si predstavili ešte jednu veľmi dôležitú a užitočnú vec - podmienky.
Čo to vlastne tá podmienka je? Je to také ako to znie. Ak je podmienka splnená, vykoná sa časť kódu. Ak nie je, táto časť sa nevykoná a preskočí sa na kód pod ňou. Podmienok môžeme reťaziť viac za seba.
Štruktúra podmienok v kóde Skriptu vyzerá približne nejako takto:
if <podmínka>: #Podmínka, která musí být splněná pro spuštění nějaké části kódu else if <podmínka>: #Další podmínka která musí být splněna, jestliže není splněna první pro vykonání další části kódu else: #Jestliže podmínka není splněna # Pozor na odmezerování a dvojtečky, části podmínek (if, else...) musí být ve stejné úrovni a musí mít dvojtečky!
Môžeme si týmto vylepšiť minulý home systém, teda príkaz sa spustí len ak je home nastavený. Jednoducho pridáme podmienku, aby bola premenná home pre hráča nastavená, inak vypíše chybové hlásenie.
command /sethome: trigger: set {domov.%player%} to location of player send "&aDomov nastaven!" to player command /home: trigger: if {domov.%player%} is set: #Jestliže je proměnná domova hráče nastavena, tak se vykoná kód pod tím teleport player to {domov.%player%} send "&aByl jsi teleportovan do sveho domova!" to player else: #Pokud podmínka není splněná, vykoná se toto: send "&cNemas nastaven domov! Nastav si ho pomoci /sethome!"
Pre jednoduché otestovanie môžeme vytvoriť aj príkaz / delhome, ktorý nám home zmaže
command /delhome: trigger: delete {domov.%player%} #Smažeme proměnnou send "&aDomov smazan!" to player
Takto to vyzerá s nastaveným home:
Takto s nenastaveným:
Ako podmienku môžeme položiť aj to, či má hráč nejakú Permissi, napr. U príkazu / setrespawnpoint
command /setrespawnpoint: trigger: if player has permission "plugin.setrespawnpoint": #Jesliže má hráč permissi "plugin.setrespawnpoint"... set {respawnpoint} to location of player send "&aRespawn point nastaven!" to player else: send "&cNemas prava na tento prikaz!" on respawn: #Event - při respawnu hráče if {respawnpoint} is set: teleport player to {respawnpoint} #Teleportuje hráče na respawn point
výsledok:
Argumenty príkazov
Dobre teda, keď sme sa už naučili podmienky, tak pre nás bude dobré sa naučiť pracovať s argumentmi príkazu.
Najprv si ale musíme položiť otázku - čo to je argument?
Argument je časť príkazu, ktorá ho nejako rozširuje. Argumenty sú užitočné a veľmi hojne používané ako v klasických MC pluginoch, tak aj vo skriptu.
Príklady využitia
- Pre označenie hráčov v príkaze (napr. / Teleport <hráč>)
- Pre nastavenie hodnoty (napr. / Hodnota 3, / sprava <správa>)
- Pre identifikáciu časti príkazu (napr. / Plugin help, / plugin about)
To by sme mali vysvetlené, čo to vlastne ten argument príkazu je, ako ho ale aplikovať priamo v kóde?
Je to veľmi jednoduché, stačí v kóde argument identifikovať:
command /prikaz <text>: #Jakýkoliv textový argument, pro hodnoty slovy např. command /prikaz <offline player>: #Pro určení hráče
Môžeme taktiež urobiť to, že tvrdenia budú nepovinné:
command /prikaz [<text>]: command /prikaz [<offline player>]:
Základ máme vysvetlený, vytvoríme si prvý kód. Ako príklad uvedieme
jednoduchý teleport systém, jednoducho /tp <hráč>
.
Kód bude vyzerať asi takto:
command /teleport <offline player>: trigger: if player has permission "plugin.teleport": if arg-1 is online: #Jestliže uvedený v argumentu 1 je online... teleport player to arg-1 #Teleportace hráče k hráči uvedenému v argumentu 1 send "&aTeleportuji..." to player send "&b%player%&a se k tobe teleportoval!" to arg-1 #Odešleme zprávu argumentu 1 else: send "&cHrac musi byt online!" to player else: send "&cNemas prava!" to player
Takto to vyzerá z pohľadu toho kto sa teleportuje:
A takto z pohľadu toho, na koho sa teleportoval:
Pomocou argumentov sa však dá robiť plno vecí, ktoré si budeme ukazovať aj v ďalších lekciách. Pomocou argumentu urobíme potrebné aj základné help príkaz pre náš skript.
Tu je ukážka toho, čo ja v základe pre svoje skripty robím - help a about.
# Ukázka ze skriptu AlertSK command /alertsk [<text>]: #Deklarace příkazu trigger: if player has permission "alertsk.commands": #Permisse if arg-1 is "configinfo": #Pokud argument 1 je configinfo - příkaz tedy vypadá /alertsk configinfo send "&cAlertSK Config info:" send "&c" send "&ePrefix: &f%{prefix}%" send "&eNeed permission: &f%{needperm}%" send "&ePermission node: &f%{permnode}%" else if arg-1 is "config": #Pokud argument 1 je config - příkaz tedy vypadá /alertsk config send "&cAlertSK Config info:" send "&c" send "&ePrefix: &f%{prefix}%" send "&eNeed permission: &f%{needperm}%" send "&ePermission node: &f%{permnode}%" else if arg-1 is "about": #Pokud argument 1 je about - příkaz tedy vypadá /alertsk about send "&cAlertSK" send "&c" send "&eSimple skript to send a global message to players!" send "&a&l&nwww.205nd.tk" send "&e(c)2017 205nd" else if arg-1 is "help": #Pokud argument 1 je help - příkaz tedy vypadá /alertsk help send "&cAlertSK Help:" send "&c" send "&eConfig info: &b/alertsk config" send "&eAbout skript: &b/alertsk about" send "&eHelp: &b/alertsk help" send "&eSend alert message: &b/alert <text>" else if arg-1 is "reload": #Pokud argument 1 je reload - příkaz tedy vypadá /alertsk reload send "&cAlertSK Reloading..." make player run cmd "/sk reload alertsk" as op else: #Pokud argument 1 není nic co by se shodovalo s dostupnými argumenty send "&cAlertSK - Help command: /alertsk help" else: send "&cNope."
To bude pre dnešné lekciu Skriptu všetko, väčšinu ukázaných kódu si môžete stiahnuť tu: https://pastebin.com/J8zGhM2w