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í.

4. diel - Skript - SkAddony - SkQuery

Skript - Minecraft modding bez Javy

SkQuery je snáď najstaršie Skript Addon, ktorý existuje. Pokrýva väčšinu pokročilejších funkcií vrátane MySQL, čítanie informácií z internetu alebo tvorby GUI. Dnes si aspoň nejaké jeho funkcie ukážeme a vysvetlíme.

Gui - Menu

Ako som už písal na začiatku, v SkQuery možno okrem iného vytvoriť i GUI. Je to klasické menu, ktoré vytvoríme do určitého okna truhly. Môže to byť využité na mnohé účely - zaujímavé menu pre nápovedu, shop či pre voľbu farby nicku (spôsobov využitia je veľa). GUI sa tvoria do virtuálnej truhly vytvorenej a otvorené hráčovi Skriptom.

Najskôr si je ale treba uvedomiť ako ich očíslované rozdelenie truhly:

Skript - Minecraft modding bez Javy

Na obrázku si môžeme všimnúť, že sa sloty číslujú od nuly - nie od jednotky (pozor na to). Počet dostupných slotov sa samozrejme mení podľa toho, koľko riadkov hráči vytvoríme. Napríklad, keď vytvoríme iba 3 riadky, môžeme použiť číslovanie iba 0-26. Ak však vytvoríme 5 riadkov, môžeme použiť rozsah 0-45.

Virtuálne truhlu hráči otvoríme týmto kódom:

open chest with 5 rows named "Testovací menu" to player #Otevřeme hráči menu s pěti řádky a názvem "Testovací menu"

Formátovanie

Dobrá, teraz samotnej formátovanie. Existujú rôzne spôsoby ako itemy naformátovať:

  • to be unstealable - Proste bude vo vnútri, nepôjde dať preč, bude treba informačného charakteru pomocou názvu a lore
  • to close - Po kliknutí sa GUI zavrie - tu ma napadá len pre tlačidlo exit
  • to run (prípadne to close then run) - Po kliknutí sa z konzoly vykoná určitý príkaz (pri použití variantu s to close then run sa GUI po kliknutí zavrie a vykoná príkaz z konzoly

Control panel

My si teraz naprogramujeme jednoduchý control panel:

command /controlpanel:
  trigger:
    open chest with 5 rows named "&a&lControl panel" to player #Otevřeme virtuální truhlu
    wait 10 ticks
    format slot 13 of player with compass named "&a&lNápověda" with lore "&eTady se dozvíš vše důležité!" to be unstealable #Naformátujeme slot 13 itemem "compass" s názvem a lorem, který si nastavíme
    format slot 29 of player with clock named "&e&lDen" with lore "&eKliknutím na tento item nastavíš den!" to close then run "time set day" #Naformátujeme slot 29 itemem "clock" s názvem a lorem, který si nastavíme
    format slot 31 of player with water bucket named "&6&lSucho &0&l/ &1&lDéšť" with lore "&eKliknutím zrušíš nebo zapneš déšť!" to close then run "toggledownfall" #Naformátujeme slot 31 itemem "water bucket" s názvem a lorem, který si nastavíme
    format slot 33 of player with anvil named "&7&lObtížnost" with lore "&eKliknutím nastavíš obtížnost hry na mírumilovnou!" to close then run "difficulty peaceful" #Naformátujeme slot 33 itemem "anvil" s názvem a lorem, který si nastavíme

Výsledok vyzerá nejako takto:

Skript - Minecraft modding bez Javy

Čítanie informácií z internetu

Výborné napríklad pre upozornenie na updaty. Keď sa zmení verzia, tak hráča s určitou Permissi upozorní, že program nie je aktuálne.

Teda, na akomkoľvek hostingu (pokojne aj na GitHub) si vytvoríme súbor verze.md, do ktorého napíšeme "1.0". Získame k nemu link a teraz sa už môžeme vrhnúť na samotné písanie kódu:

options:
  version: 1.0

on join:  #Event - při připojení
  if player has permission "plugin.notify": #Kontrola jestli má hráč permissi na zobrazení notifikací
    message "&6Kontrola updatů..." to player
    if text from "http://www.mclabs.tk/205nd/verze.md" is not "{@version}": #Jestliže text z našeho souboru se neshoduje s verzí...
      wait 40 ticks
      message "&4&lMáte zastaralou verzi! Aktualizujte si ji z: *link*" to player
    else:
      wait 40 ticks
      message "&2&lMáte nejnovější verzi!" to player

Výsledok vyzerá nejako takto:

Skript - Minecraft modding bez Javy

MySQL

No a tiež ako sme si už spomínali na začiatku, SkQuery umožňuje aj prácu s MySQL databázou. To sa veľmi hodí, pokiaľ napr. Vytvárate auth skript či skript na herné štatistiky - v mnohých prípadoch sa vám skrátka bude databázy hodiť. K implementovanie do skriptu budete musieť vedieť aspoň základy SQL dotazov, pretože Skript bude vlastne iba posielať otázky, ktoré vy Preddefinuje-. Na to vám ja príliš neposloužím, skôr vám odporúčam sa pozrieť na návody SQL tu na sieti.

Najskôr zo všetkého musíme skript pripojiť k databáze. To urobíme tak, že na jeho začiatku vložíme túto časť kódu:

script options:
  $ db url jdbc:mysql://<adresa k mysql databázi>:<port>/<název databáze>
  $ db username <uživatelské jméno>
  $ db password <heslo>

Updaty v databáze vykonávame pomocou kódu "update":

update "SQL DOTAZ"

Teraz si vytvoríme jednoduchý príkaz /senddb <text>, ktorý odošle do našej databázy dátum odoslania, hráča, ktorý dáta odoslal, a text v argumentu:

script options:
  $ db url jdbc:mysql://sql11.freemysqlhosting.net:3306/sql11200159
  $ db username sql11200159
  $ db password vaseheslo

on load: #Při loadu...
  update "CREATE TABLE IF NOT EXISTS `sql11200159`.`itnetworktut` ( `Datum` TEXT NOT NULL , `Hodnota` TEXT NOT NULL , `Hrac` TEXT NOT NULL ) ENGINE = MyISAM;" #Pokud naše tabulka neexistuje, necháme si ji vytvořit

command /senddb [<text>]:
  trigger:
    if arg-1 is not set:
      send "Musis nastavit argument prikazu!"
    else:
      update "INSERT INTO `sql11200159`.`itnetworktut` (`Datum`, `Hodnota`, `Hrac`) VALUES ('%now%', '%arg-1%', '%player%');" #Vložíme do tabulky čas, hodnotu v argumentu a hráče

Keď sa neskôr pozrieme do databázy cez phpMyAdmin, mali by sme vidieť výsledky:

Skript - Minecraft modding bez Javy

Pre úplnosť môžeme doplniť aj príkaz /ukazdb, ktorý nám hodnoty z databázy vypíše do chatu:

command /ukazdb:
  trigger:
    set {hodnoty::*} to objects in column "hodnota" from result of query "SELECT * FROM `itnetworktut`" #nastavíme proměnnou {hodnoty::*} na hodnoty z databáze
    send "%{hodnoty::*}%"
    clear {hodnoty::*}
Skript - Minecraft modding bez Javy

So SkQuery možno ale robiť aj veľa ďalších vecí, ich kompletný výpis môžete nájsť napríklad na SkUnity Docs.

SkQuery stiahnete "tu": http://beta.mclabs.eu/skquery.jar

Kódy z dnešnej lekcie nájdete tu: https://pastebin.com/8WuNfxss


 

Predchádzajúci článok
Skript - Cykly
Všetky články v sekcii
Skript - Minecraft modding bez Javy
Preskočiť článok
(neodporúčame)
Skript - SkAddony - SkRayfall
Č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