1. diel - Úvod do jazyka Skript a prvý kód
Skript je plugin, ktorý umožňuje tvoriť jednoduché prídavné pluginy k vášmu Minecraft serveru bez znalosti Javy. Tvorba prebieha pomocou série rôznych príkazov písaných do plaintext súboru (je to teda vlastný skriptovací jazyk). Príkazy sú zadávané v angličtine a sú jednoduché. Dajú sa teda tvoriť rôzne pluginy (alebo skôr skripty, pretože pre ich spustenie potrebujete plugin Skript) pre váš Minecraft server.
Ak chcete zistiť čo všetko sa dá pomocou Skriptu vytvoriť, stačí sa pozrieť na rôzne Skript fóra, dokumentáciu (odporúčam SkUnity) alebo napríklad len do kategórie "Skript" na spigot, ktorá značí ako veľmi je Skript vlastne rozšírený.
Výhody Skriptu
- Jednoduchosť celého procesu písania skriptu (netreba znalosť Javy ani žiadneho iného jazyka)
- Rozšírená komunita (takmer vždy nájdete odpoveď, a keď nie, niekto vám rád na fórach pomôže)
- Plno skriptov, ktoré si môžete stiahnuť a učiť sa z nich rôzne nové funkcie
- Mnoho dokumentáciou (či už staršie dokumentácie od pôvodného vývojárov, alebo novší od aktuálneho vývojárov, alebo komunitné SkUnity, na ktoré okrem originálnych kódov máte aj kódy, ktoré môžete využiť s Skript Addony)
- Veľké množstvo addon, ktoré môžu pridať viac možností do vášho kódu, napr. Zapisovanie a čítanie YML súborov, čítanie dát z GitHub (napríklad pri čítaní aktuálnej verzie), tvorba vlastných GUI atď.
- Na písanie skriptu nie je potrebný žiadny profesionálny editor či program, bohato stačí aj Poznámkový blok
Aby to bolo fér, pozrime sa aj na nevýhody.
Nevýhody Skriptu
- Citlivosť formátovanie - Každú časť kódu musíte starostlivo odtabovat, inak bude Skript hlásiť problémy
- Súbory sú ukladané v plaintextu, teda môže úplne ktokoľvek editovať váš kód a vydávať ju za svoj
- Aj na pomerne dosť základných vecí (teda, skôr záleží na tom, čo tvoríte) potrebujete nejaké addony
Jednoducho by som to zhrnul tak, že ak nemáte záujem tvoriť v Jave, alebo skrátka tomu nerozumiete a chcete iba tvoriť pluginy, tak je Skript pre vás, ale treba si uvedomiť aj už spomínané nevýhody.
Práve si vyťažil kameň!
Začneme jednoduchým skriptom, ktorý nám pošle správu do chatu keď vyťažíme kameň. Kód bude vyzerať nejako takto:
on mine of stone: # Event (při vytěžení kamene) send "Prave jsi vytezil kamen!" to player # Odešle zprávu hráčovi
Uložíme ako <název>.sk
a vložíme do zložky plugins /
Skript / scripts
Dobrá, teraz nám to pri vyťažení kameňa zašle správu do chatu. Treba
podotknúť, že správy možno samozrejme aj farebne upravovať pomocou
farebných kódov (&<kód>
, napr. &2
).
Ale povedzme, že chceme zasielať farebne formátovanú správu pri vyťažení
rôznych ore. V tom prípade bude kód vyzerať napríklad takto:
on mine of iron ore: send "&7Prave jsi vytezil &f&lIron Ore&7!" to player on mine of gold ore: send "&7Prave jsi vytezil &e&lGold Ore&7!" to player on mine of diamond ore: send "&7Prave jsi vytezil &b&lDiamond Ore&7!" to player on mine of emerald ore: send "&7Prave jsi vytezil &a&lEmerald Ore&7!" to player on mine of lapis ore: send "&7Prave jsi vytezil &1&lLapis Ore&7!" to player on mine of redstone ore: send "&7Prave jsi vytezil &4&lRedstone Ore&7!" to player
A výsledok zase nejako takto:
Samozrejme namiesto "gold ore" ai. Môžeme do kódu vložiť potrebné "wood planks" alebo iný názov bločkov.
Prvý príkaz
Predpokladám, že budete vo svojich skriptoch zo všetkého najčastejšie využívať príkazy - vyzerajú nejako v tomto štýle:
/prikaz <argument1>
A rovnako sa aj zadávajú priamo do chatu pre ich spustenie. Základ je príkaz a potom ho môžu rozširovať argumenty. Príkazy vo Skriptu tvoríme takto:
command /prikaz: trigger: send "text" to player
Dobrá, takže si môžeme vymyslieť príkaz, napríklad /test
,
keď je spustený, odošle sa hráči do chatu správu "Funguje to!":
command /test: trigger: send "&cFunguje to!"
Výsledok (ak všetko funguje) by mal vyzerať takto:
To bude pre prvú lekciu Skriptu všetko, kód ukázaný v tutoriálu si môžete stiahnuť tu: https://pastebin.com/pC9kEW5p
Skript stiahnete z oficiálneho GitHub vývojárov: https://github.com/...ipt/releases
Premenné
Najprv je ale treba si položiť otázku - čo to vlastne je premenná?
** Premenná ** je niečo, čo uchováva určitú informáciu (hodnotu). Premenná teda môže napr. Uchovávať informáciu o hráčovi a ďalšie. Vo Skriptu sú premenné hojne využívané, práve vďaka tomu, že sa do nich dajú ukladať informácie.
Skript umožňuje použitie troch typov premenných:
- "Normálna" premenné - alebo skrátka premenné - sú unikátne a ich dáta sú uchovávané aj po reštarte servera (alebo Skriptu)
- Lokálne premenné - alebo tiež dočasné premenné - sú lokálne len pre jedného hráča, tieto premenné sa automaticky po reštarte odstráni
- Options - Nemožno ich zmeniť z hry, sú nastavené priamo na začiatku skriptu
Medzi normálne premenné môžete zaradiť aj listy alebo slovensky zoznamy - to znamená, že v jednej premennej je niekoľko samostatných hodnôt (môže byť použité napríklad pre denník Warp atď.)
Samotný Skript však obsahuje už vopred hotové a použiteľné premenné, ako napríklad:
player # Označení hráče now # Aktuální datum, čas... message # Zpráva do chatu (využijeme například při eventu On Chat) block # Právě vytěžený block (využijeme například při eventu On Destroy)
Ich použitie môžeme využiť napríklad v jednoduchom logovanie zničených a položených bločky.
Využijeme eventu "on destroy" a "on place" a taky funkcie "log", ktorú môžeme využiť takto:
log "<text>" to file "<název souboru>"
Všetky súbory tvorené pomocou funkcie "log" sa ukladajú do zložky "plugins / Skript / logs". Teraz teda využijeme dvoch eventov a funkcie log k vytvoreniu tohto kódu:
on break: # Event - při zničení log "DESTROY | %player% znicil block %block%" to file "logovani.log" # Logujeme text do souboru "logovani.log" za použití proměnných block a player on place: # Event - při položení log "PLACE | %player% polozil block %block%" to file "logovani.log"
Na tomto príklade si môžeme všimnúť toho, že premenné zapisujeme s percentami na začiatku a konci. Toto slúži na identifikáciu toho, že sa jedná o premennú.
Výsledok v súbore "logovani.log" vyzerá nejako takto:
pozn. súbory je nutné otvárať v notepad ++ alebo PSPadu, pri otvorení v default windows editore (poznámkový blok) sa text hodí do jedného riadku a je to neprehľadné, pozri tu.
Ďalej máme nami definované premenné. Ich využitie si môžeme ukázať na jednoduchom / home systému:
command /sethome: # Příkaz definován trigger: set {domov.%player%} to location of player # Nastavíme proměnnou {domov.%player%} (závorky tam musí být) na aktuální lokaci hráče send "&aDomov nastaven!" to player # Odešleme hráči zprávu o nastavení domova command /home: trigger: teleport player to {domov.%player%} # Teleportujeme hráče na souřadnice nastavené v jeho proměnné send "&aByl jsi teleportovan do sveho domova!" to player
Výsledok vyzerá nejako takto (či ste všetko urobili správne):
Pri použítí / sethome sa vám nastaví home a pomocou / home sa na neho teleportuje.
Dobrá, ale teraz si ukážeme aplikovanie premenných priamo v texte odosielaného hráčovi. Použijeme tento kód:
command /mycoord: trigger: set {_playerloc} to player's location # Nastavíme proměnnou {_playerloc} na aktuální lokaci hráče send "&cTve souradnice jsou:&a %{_playerloc}%" to player # Zašleme zprávu s proměnnou - musíme ji napsat s procenty
(Áno, do chatu možno napísať aj jednoducho% player 's location%, ale chcel som ukázať ako použiť nadefinovanú premennú)
výsledok:
Dobrá, to by sme mali prebranej obyčajné premenné. Teraz si trošku rozoberieme a ukážeme options. options
Options nastavujeme tak, že na začiatku skriptu vložíme tento kód (samozrejme prispôsobené):
options: verze: 1.0 prefix: &ePlugin
Týmto sme si nastavili option verzie a option prefix - tie môžeme následne ďalej využiť v skripte ako nemenné premenné.
Skúsime teda využiť option prefix v príkaze / mycoord:
command /mycoord: trigger: set {_playerloc} to player's location # Nastavíme proměnnou {_playerloc} na aktuální lokaci hráče send "&c[{@prefix}&c] &cTve souradnice jsou:&a %{_playerloc}%" to player # {@prefix} značí option "prefix", options píšeme bez procent a se zavináčem na začátku názvu
Výsledok po použití Option vyzerá nejako takto:
Samozrejme to môže vyzerať mnohokrát inak, podľa toho, ako si nastavíte option prefix
Využitie oboch definovaných Option naraz možno urobiť napríklad pri príkaze / about:
command /about: trigger: send "&c[{@prefix}&c] &cPlugin v{@verze}" to player
To bude pre prvú lekciu Skriptu všetko, posledný kód ukázaný v tutoriálu si môžete stiahnuť tu: https://pastebin.com/yjN5qMSL