IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 2 - Skript - podmínky a argumenty

V minulé lekci, Úvod do jazyka Skript a první kód, jsme si ukázali základní příkazy a naučili se pracovat s proměnnými.

Nyní je ale nutné, abychom si představili ještě jednu velice důležitou a užitečnou věc - podmínky.

Co to vlastně ta podmínka je? Je to takové jak to zní. Jestliže je podmínka splněna, vykoná se část kódu. Pokud není, tato část se nevykoná a přeskočí se na kód pod ní. Podmínek můžeme řetězit více za sebe.

Struktura podmínek v kódu Skriptu vypadá přibližně nějak 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šit minulý home systém, tudíž příkaz se spustí pouze pokud je home nastaven. Jednoduše přidáme podmínku, aby byla proměnná home pro hráče nastavena, jinak vypíše chybovou zprávu.

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!"

Pro jednoduché otestování můžeme vytvořit i příkaz /delhome, který nám home smaže

command /delhome:
  trigger:
    delete {domov.%player%} #Smažeme proměnnou
    send "&aDomov smazan!" to player

Takto to vypadá s nastaveným home:

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

Takto s nenastaveným:

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

Jako podmínku můžeme položit i to, jestli má hráč nějakou permissi, např. u pří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ýsledek:

Oprávnění setrespawnpoint v jazyce Skript - Skript - Minecraft modding bez Javy

Argumenty příkazů

Dobrá tedy, když jsme se již naučili podmínky, tak pro nás bude dobré se naučit pracovat s argumenty příkazu.

Prvně si ale musíme položit otázku - co to je argument?

Argument je část příkazu, která jej nějak rozšiřuje. Argumenty jsou užitečné a velice hojně používané jak v klasických MC pluginech, tak i ve Skriptech.

Příklady využití

  • Pro označení hráče v příkazu (např. /teleport <hráč>)
  • Pro nastavení hodnoty (např. /hodnota 3, /zprava <zpráva>)
  • Pro identifikaci části příkazu (např. /plugin help, /plugin about)

To bychom měli vysvětleno co to vlastně ten argument příkazu je, jak jej ale aplikovat přímo v kódu?

Je to velice jednoduché, stačí v kódu argument identifikovat:

command /prikaz <text>: #Jakýkoliv textový argument, pro hodnoty slovy např.
command /prikaz <offline player>: #Pro určení hráče

Můžeme taktéž udělat to, že argumenty budou nepovinné:

command /prikaz [<text>]:
command /prikaz [<offline player>]:

Základ máme vysvětlený, vytvoříme si první kód. Jako příklad uvedeme jednoduchý teleport systém, jednoduše /tp <hráč>.

Kód bude vypadat 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 vypadá z pohledu toho kdo se teleportuje:

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

A takto z pohledu toho, na koho se teleportoval:

Skript na teleport v jazyce Skriptu z pohledu hráče - Skript - Minecraft modding bez Javy

Pomocí argumentů se však dá dělat plno věcí, které si budeme ukazovat i v dalších lekcích. Pomocí argumentu uděláme třeba i základní help příkaz pro náš skript.

Tady je ukázka toho, co já v základu pro své skripty dělá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 pro dnešní lekci Skriptu vše, většinu ukázaných kódu si můžete stáhnout zde: https://pastebin.com/J8zGhM2w

V příští lekci, Skript - Cykly, si ukážeme, co jsou to cykly a jak je používat.


 

Předchozí článek
Úvod do jazyka Skript a první kód
Všechny články v sekci
Skript - Minecraft modding bez Javy
Přeskočit článek
(nedoporučujeme)
Skript - Cykly
Článek pro vás napsal 205nd
Avatar
Uživatelské hodnocení:
1 hlasů
Autor se věnuje primárně Skriptu, z menší části umí i HTML a naprosté základy PHP.
Aktivity