Plugin Skript- Proměnné a eventy

Návody lis 25, 2020

Předchozí lekce- "úvod"

Proměnné jsou často používaným prvkem ve Skriptu a jsou velmi praktické. Máme několik typů proměnných a několik forem zápisu. Každá proměnná je ohraničena pomocí {}.

Typy proměnných:

  • Jednoduché (Tyhle proměnné mají jednoduchý zápis- {var}. Slouží prakticky k čemukoliv, jsou sdílené všemi vašimi skripty.)
  • Dočasné (Taková proměnná se automaticky smaže po provedení části kódu, ke které patří. Zapisujeme je pomocí {_var}.)
  • Předem definované/nedefinované (Na začátku každého skriptu můžete předem nadefinovat nějakou proměnnou. Ta se automaticky vytvoří, když skript znovu načtete. Pokud proměnnou chcete definovat až v kódu, můžete použít předem nedefinovanou proměnnou, kterou jednoduše napíšete až v místě, kdy ji chcete vytvořit.)
  • Options (Options je zvláštní typ proměnné, který obvykle nenese datovou hodnotu, ale místo toho shlukuje určitou část kódu, místo které pak napíšete jen {@var}. Ale ty máme teprve před sebou, navíc existují i výjimky, kdy mohou Options nést data.)
  • Seznamové/Listové proměnné (Tyhle proměnné vytvoří jakousi podsložku, do které patří všechny prvky pod nimi. Mají 2 typy zápisu- {var::*} nebo {<něco>.var}. Používají se na proměnné, které jsou specifické pro jednoho hráče nebo pro skupinu- {%player%::level} nebo {level.%player%}. Komunita Skriptu je dost nekonzistentní v tom, který zápis je lepší. Já používám oba, ale pro hráčské proměnné používám ten druhý styl zápisu.)

Eventy:

Co se týče eventů, těch je ohromné množství a jediný způsob, jak se je naučit, je z dokumentace. Ani já neumím všechny. Eventy nám detekují nějakou činnost a na základě té činnosti můžeme přidávat podmínky a funkce.

Udělejme si teď jednoduchý kód, který detekuje, že hráč klikl, poté uloží počet kliknutí do proměnné a napíše hráči počet dosavadních kliknutí:

Přejděte do složky scripts v pluginu Skript. Po instalaci by tam mělo být mnoho různých skriptů, které Skript přidává jako příklad. Můžete si je projít a něco se z nich naučit, pokud chcete.
Pokud chcete začít s čistým štítem, tak vše ze složky smažte a vytvoříme si nový soubor. Všechny skripty musí nést koncovku .sk. Pojmenujte si skript podle vlastního uvážení, třeba test.sk je pro začátek dostačující.
Napíšeme první, jednoduchý event on click:, odřádkujeme a uděláme mezeru. Mezery musí být vždy stejné pro řádky, které jsou na stejné úrovni. Mezera může být mezerník, 2 mezerníky, 4 mezerníky nebo tabulátor. V rozhraní GamerHost je lepší používat 4 mezerníky. Taky si pamatujte, že pokaždé, když řádek končí dvojtečkou :, musíte na novém řádku udělat mezeru.
Na nový řádek s mezerou napíšeme dosazení naší proměnné, kterou si pojmenujeme clicks. Proměnným udáváte hodnotu pomocí set/add/remove. V tomhle případě chceme zvýšit naši proměnnou o 1, tak napíšeme add 1 to {clicks}.
Teď by bylo fajn, kdyby nám náš kód oznámil hodnotu, která se skrývá pod naší proměnnou. Použijeme pro to funkci message. Tahle funkce zašle zprávu určenému příjemci. Použijeme ji pomocí- message „%{clicks}%“ to player.
Pokaždé, když chcete parsovat (koukněte se do úvodu, jestli si pamatujete, co to sovo znamená) nějakou proměnnou do textu, zapíšete tu proměnnou mezi znak procenta %%.
Příjemce je část za textem zprávy. Může to být hráč, konzole, skupina hráčů… Vždy musí být přesně definováno, kdo je příjemce, jinak se může zpráva odeslat špatnému hráči. (K tomu si něco řekneme ještě později.)
Teď už zbývá jen váš skript znovu načíst. Uložte váš soubor, přejděte do Minecraftu a napište do chatu jednoduchý příkaz /sk reload test. Zkuste párkrát kliknout a uvidíte, že se vaše proměnná updatuje.
Poznámka: pokud chcete, aby se vaše proměnná smazala a nezabírala místo v databázi, použijte na to funkci delete {clicks}.

Každý event ale může mít také několik dalších prvků, které mohou rozhodnout, jestli se spustí nebo ne. Např. pokud chcete, aby se tento event spustil jen ve chvíli, kdy hráč drží tyčku, můžete to udělat takto:

V tomto případě váš kód zdetekuje, jestli hráč drží tyčku a poté updatuje proměnnou.

Podobným eventem je třeba i on breaking:, který detekuje, jestli hráč zničil nějaký blok. Právě tento event je lepší upřesnit pomocí typu (tohle slovíčko taky bylo v definicích). V případě předchozího příkladu byla tyčka typem, protože se jedná o předmět (byla typem item).

U zničení bloku bude typem právě ten blok, který hráč zničil. Nahraďme tedy náš první řádek, který obsahuje event pro kliknutí, tímto novým eventem pro zničení bloku:

V takovém případě to updatuje naši proměnnou pouze tehdy, kdy hráč zničí cobblestone. Obdobně to jde i s ostatními bloky nebo předměty, které jsou v Minecraftu. Můžete si zkusit různé možnosti.

V další části si ukážeme detekci různých typů předmětů a jejich parametrů (jméno, popis, enchanty...), zároveň si ukážeme jednoduchou tvorbu vlastních příkazů (protože budeme potřebovat ty speciální předměty někde vzít).

Tagy

Darkry

Jsem junior v oblasti programování. Věnuju se C# a pluginu Skript pro Minecraft. Baví mě tvorba her a aplikací, stavění a vedení serverů, psaní příběhů a dělání videí na YouTube :)

Bomba! Úspěsně jste se přihlásil do odběru novinek.
Výborně! Dokončete postup pro plný přístup.
Vítejte zpět! Byl/a jste úspěšně přihlášen/a!
Úspěch! Nyní máte přístup k veškerému obsahu.