IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

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:

Nastavený home v jazyku Skript - Skript - Minecraft modding bez Javy

Takto s nenastaveným:

Nenastavený home v jazyku Skript - Skript - Minecraft modding bez Javy

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:

Oprávnenie setrespawnpoint v jazyku Skript - Skript - Minecraft modding bez Javy

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:

Skript na teleport v jazyku Skriptu - Skript - Minecraft modding bez Javy

A takto z pohľadu toho, na koho sa teleportoval:

Skript na teleport v jazyku Skriptu z pohľadu hráča - Skript - Minecraft modding bez Javy

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


 

Predchádzajúci článok
Úvod do jazyka Skript a prvý kód
Všetky články v sekcii
Skript - Minecraft modding bez Javy
Preskočiť článok
(neodporúčame)
Skript - Cykly
Článok pre vás napísal 205nd
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje primárně Skriptu, z menší části umí i HTML a naprosté základy PHP.
Aktivity