Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

1. díl - Úvod do jazyka Skript a první kód

Java Minecraft Modding Skript Úvod do jazyka Skript a první kód

Unicorn College ONEbit hosting Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Skript je plugin, který umožňuje tvořit jednoduché přídavné pluginy k vašemu Minecraft serveru bez znalosti Javy. Tvorba probíhá pomocí série různých příkazů psaných do plaintext souboru (je to tedy vlastní skriptovací jazyk). Příkazy jsou zadávány v angličtině a jsou jednoduché. Dají se tedy tvořit různé pluginy (nebo spíše skripty, jelikož pro jejich spuštění potřebujete plugin Skript) pro váš Minecraft server.

Pokud chcete zjistit co všechno se dá pomocí Skriptu vytvořit, stačí se podívat na různá Skript fóra, dokumentaci (doporučuji SkUnity) nebo třeba jen do kategorie "Skript" na Spigotu, která značí jak moc je Skript vlastně rozšířen.

Výhody Skriptu

  • Jednoduchost celého procesu psaní skriptu (není třeba znalost Javy ani žádného jiného jazyka)
  • Rozšířená komunita (téměř vždy najdete odpověď, a když ne, někdo vám rád na fórech pomůže)
  • Plno skriptů, které si můžete stáhnout a učit se z nich různé nové funkce
  • Mnoho dokumentací (ať už starší dokumentace od původního vývojáře, nebo novější od aktuálního vývojáře, nebo komunitní SkUnity, na které kromě originálních kódů máte i kódy, které můžete využít s Skript Addony)
  • Velké množství addonů, které mohou přidat více možností do vašeho kódu, např. zapisování a čtení YML souborů, čtení dat z githubu (například při čtení aktuální verze), tvorba vlastních GUI atd.
  • Na psaní skriptu není třeba žádný profesionální editor či program, bohatě stačí i Poznámkový blok

Aby to bylo fér, podívejme se i na nevýhody.

Nevýhody Skriptu

  • Citlivost formátování - Každou část kódu musíte pečlivě odtabovat, jinak bude Skript hlásit problémy
  • Soubory jsou ukládány v plaintextu, tudíž může naprosto kdokoliv editovat váš kód a vydávat ho za svůj
  • I na poměrně dost základních věcí (tedy, spíše záleží na tom, co tvoříte) potřebujete nějaké addony

Jednoduše bych to shrnul tak, že pokud nemáte zájem tvořit v Javě, nebo zkrátka tomu nerozumíte a chcete pouze tvořit pluginy, tak je Skript pro vás, ale je třeba si uvědomit i již zmíněné nevýhody.

Právě jsi vytěžil kámen!

Začneme jednoduchým skriptem, který nám zašle zprávu do chatu když vytěžíme kámen. Kód bude vypadat nějak 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 jako <název>.sk a vložíme do složky plugins/Skrip­t/scripts

Hláška o vytěžení kamene v Minecraftu v jazyce Skript

Dobrá, nyní nám to při vytěžení kamene zašle zprávu do chatu. Nutno podotknout, že zprávy lze samozřejmě i barevně upravovat pomocí barevných kódů (&<kód>, např. &2). Ale řekněme, že chceme zasílat barevně formátovanou zprávu při vytěžení různých ore. V tom případě bude kód vypadat napří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ýsledek zase nějak takto:

barevné hlášky v Minecraftu

Samozřejmě místo "gold ore" aj. můžeme do kódu vložit třeba "wood planks" nebo jiný název blocků.

První příkaz

Předpokládám, že budete ve svých skriptech ze všeho nejčastěji využívat příkazy - vypadají nějak v tomto stylu:

/prikaz <argument1>

A stejně se i zadávají přímo do chatu pro jejich spuštění. Základ je příkaz a poté ho mohou rozšiřovat argumenty. Příkazy ve Skriptu tvoříme takto:

command /prikaz:
  trigger:
    send "text" to player

Dobrá, takže si můžeme vymyslet příkaz, kupříkladu /test, když je spuštěn, odešle se hráči do chatu zprávu "Funguje to!":

command /test:
  trigger:
    send "&cFunguje to!"

Výsledek (pokud vše funguje) by měl vypadat takto:

Výsledek testu příkazu v jazyce Skript

To bude pro první lekci Skriptu vše, kód ukázaný v tutoriálu si můžete stáhnout zde: https://pastebin.com/pC9kEW5p

Skript stáhnete z oficiálního GitHubu vývojáře: https://github.com/…ipt/releases

Proměnné

Prvně je ale třeba si položit otázku - co to vlastně je proměnná?

**Proměnná **je něco, co uchovává určitou informaci (hodnotu). Proměnná tedy může např. uchovávat informaci o hráči a další. Ve Skriptu jsou proměnné hojně využívány, právě díky tomu, že se do nich dají ukládat informace.

Skript umožňuje použití tří typů proměnných:

  • "Normální" proměnné - nebo zkrátka proměnné - jsou unikátní a jejich data jsou uchovávána i po restartu serveru (nebo Skriptu)
  • Lokální proměnné - nebo také dočasné proměnné - jsou lokální pouze pro jednoho hráče, tyto proměnné se automaticky po restartu odstraní
  • Options - Nelze je změnit ze hry, jsou nastaveny přímo na začátku skriptu

Mezi normální proměnné můžete zařadit i listy nebo česky seznamy - to znamená, že v jedné proměnné je několik samostatných hodnot (může být použito například pro list warpů atd.)

Samotný Skript ovšem obsahuje už předem hotové a použitelné proměnné, jako třeba:

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)

Jejich použití můžeme využít například v jednoduchém logování zničených a položených blocků.

Využijeme eventu "on destroy" a "on place" a taky funkce "log", kterou můžeme využít takto:

log "<text>" to file "<název souboru>"

Všechny soubory tvořené pomocí funkce "log" se ukládají do složky "plugins/Skrip­t/logs". Nyní tedy využijeme dvou eventů a funkce log k vytvoření tohoto 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 příkladu si můžeme všimnout toho, že proměnné zapisujeme s procenty na začátku a konci. Toto slouží pro identifikaci toho, že se jedná o proměnnou.

Výsledek v souboru "logovani.log" vypadá nějak takto:

Výsledek logování

pozn. soubory je nutné otevírat v notepad++ nebo pspadu, při otevření v default windows editoru (poznámkový blok) se text hodí do jednoho řádku a je to nepřehledné, viz zde.

Dále máme námi definované proměnné. Jejich využití si můžeme ukázat na jednoduchém /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ýsledek vypadá nějak takto (jestli jste vše udělali správně):

Výsledek /home

Při použítí /sethome se vám nastaví home a pomocí /home se na něj teleportujete.

Dobrá, ale nyní si ukážeme aplikování proměnných přímo v textu odesílané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

(ano, do chatu lze napsat i jednoduše %player's location%, ale chtěl jsem ukázat jak použít nadefinovanou proměnnou)

Výsledek:

Aplikování proměnných přímo v textu odesílaného hráčovi

Dobrá, to bychom měli probrané obyčejné proměnné. Nyní si trošku rozebereme a ukážeme options. Options


Options nastavujeme tak, že na začátku skriptu vložíme tento kód (samozřejmě přizpůsobený):

options:
  verze: 1.0
  prefix: &ePlugin

Tímto jsme si nastavili option verze a option prefix - ty můžeme následně dále využít ve skriptu jako neměnné proměnné.

Zkusíme tedy využít option prefix v příkazu /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ýsledek po použití optionu vypadá nějak takto:

Použití option v jazyce Skript

Samozřejmě to může vypadat mnohokrát jinak, podle toho, jak si nastavíte option prefix :)

Využití obou definovaných optionů naráz lze udělat například u příkazu /about:

command /about:
  trigger:
    send "&c[{@prefix}&c] &cPlugin v{@verze}" to player
Využití více options najednou v jazyce Skript

To bude pro první lekci Skriptu vše, poslední kód ukázaný v tutoriálu si můžete stáhnout zde: https://pastebin.com/yjN5qMSL


 

 

Článek pro vás napsal 205nd
Avatar
Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!
Autor se věnuje primárně Skriptu, z menší části umí i HTML a naprosté základy PHP.
Miniatura
Všechny články v sekci
Skript - Minecraft modding bez Javy
Miniatura
Následující článek
Skript - podmínky a argumenty
Aktivity (4)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!