Získej svůj iPhone v nové soutěži! Získej svůj iPhone v nové soutěži!
Nová překladatelská soutěž ITnetwork.cz o telefon iPhone, sluchátka Beats a další věcné ceny za 4 hodiny práce.
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

4. díl - Skript - SkAddony - SkQuery

Java Minecraft Modding Skript Skript - SkAddony - SkQuery

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

SkQuery je snad nejstarší Skript Addon, který existuje. Pokrývá většinu pokročilejších funkcí včetně MySQL, čtení informací z internetu nebo tvorby GUI. Dnes si alespoň nějaké jeho funkce ukážeme a vysvětlíme.

GUI - Menu

Jak jsem již psal na začátku, v SkQuery lze mimo jiné vytvořit i GUI. Je to klasické menu, které vytvoříme do určitého okna truhly. Může to být využito k mnoha účelům - zajímavé menu pro nápovědu, shop či pro volbu barvy nicku (způsobů využití je spousta). GUI se tvoří do virtuální truhly vytvořené a otevřené hráčovi Skriptem.

Nejdříve si je ale třeba uvědomit jak je očíslováno rozdělení truhly:

Na obrázku si můžeme všimnout, že se sloty číslují od nuly - nikoliv od jedničky (pozor na to). Počet dostupných slotů se samozřejmě mění podle toho, kolik řádků hráči vytvoříme. Například, když vytvoříme pouze 3 řádky, můžeme použít číslování pouze 0-26. Pokud ovšem vytvoříme 5 řádků, můžeme použít rozsah 0-45.

Virtuální truhlu hráči otevřeme tímto kódem:

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átování

Dobrá, nyní samotné formátování. Existují různé způsoby jak itemy naformátovat:

  • to be unstealable - Prostě bude uvnitř, nepůjde dát pryč, bude třeba informačního charakteru pomocí názvu a lore
  • to close - Po kliknutí se GUI zavře - zde mě napadá pouze pro tlačítko exit
  • to run (případně to close then run) - Po kliknutí se z konzole vykoná určitý příkaz (při použití varianty s to close then run se GUI po kliknutí zavře a vykoná příkaz z konzole

Control panel

My si nyní 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ýsledek vypadá nějak takto:

Čtení informací z internetu

Výborné například pro upozornění na updaty. Když se změní verze, tak hráče s určitou permissí upozorní, že program není aktuální.

Tedy, na jakémkoliv hostingu (klidně i na githubu) si vytvoříme soubor verze.md, do kterého napíšeme "1.0". Získáme k němu link a nyní se již můžeme vrhnout na samotné psaní 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ýsledek vypadá nějak takto:

MySQL

No a také jak jsme si již zmiňovali na začátku, SkQuery umožňuje i práci s MySQL databází. To se velmi hodí, pokud např. vytváříte auth skript či skript na herní statistiky - v mnoha případech se vám zkrátka bude databáze hodit. K implementování do skriptu budete muset umět alespoň základy SQL dotazů, jelikož Skript bude vlastně pouze posílat dotazy, které vy předdefinujete. Na to vám já příliš neposloužím, spíš vám doporučuji se kouknout na návody SQL zde na síti.

Nejdříve ze všeho musíme skript připojit k databázi. To uděláme tak, že na jeho začátku vložíme tuto část 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ázi provádíme pomocí kódu "update":

update "SQL DOTAZ"

Nyní si vytvoříme jednoduchý příkaz /senddb <text>, který odešle do naší databáze datum odeslání, hráče, který data odeslal, 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

Když se posléze podíváme do databáze přes phpMyAdmin, měli bychom vidět výsledky:

Pro úplnost můžeme doplnit i příkaz /ukazdb, který nám hodnoty z databáze 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::*}

Se SkQuery lze ovšem dělat i spousta dalších věcí, jejich kompletní výpis můžete najít například na SkUnity Docs.

SkQuery stáhnete "zde": http://beta.mclabs.eu/skquery.jar

Kódy z dnešní lekce naleznete zde: https://pastebin.com/8WuNfxss


 

 

Článek pro vás napsal 205nd
Avatar
Jak se ti líbí článek?
1 hlasů
Autor se věnuje primárně Skriptu, z menší části umí i HTML a naprosté základy PHP.
Miniatura
Předchozí článek
Skript - Cykly
Miniatura
Všechny články v sekci
Skript - Minecraft modding bez Javy
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í!