GUI

Z wiki.skript.pl
Wersja z dnia 00:20, 31 paź 2019 autorstwa Rejszpat (dyskusja | edycje) (poprawki stylistyczne, gramatyczne i interpunkcyjne)
Przejdź do nawigacji Przejdź do wyszukiwania

GUI - graficzny interfejs użytkownika (ang. graphical user interface), oparty na ekwipunku (ang. inventory) gracza. Jest to osobne okienko, które można utworzyć i dostosować wedle własnych upodobań. Aby stworzyć własne GUI, można pomóc sobie dodatkami takimi jak SkQuery lub TuSKe, lecz można również skorzystać z samego Skripta.

Skript umożliwia tworzenie dowolnych GUI

Tworzenie GUI

W celu stworzenia GUI trzeba zapisać zdarzenie, pętlę lub komendę, które wywołają otworzenie się GUI. Wyświetlanie ekwipunku:
open chest with <integer> rows named "<string>" to <player>

  • <integer> - liczba rzędów w GUI (może ona być liczbą od 1 do X jednak musimy pamiętać że gui będzie sie zniekształcać przy większej ilości slotów),
  • <string> - nazwa GUI,
  • <player> - gracz, któremu ma się owe GUI wyświetlić.

W powyższym GUI gracz ma nad nim pełną kontrolę, lecz - w takim zestawieniu - jest ono puste, gdyż należy zdefiniować to, co ma się w nim znaleźć oraz dodać odpowiednie eventy, które wykonują kod po kliknięciu slota w ekwipunku.

Definiowanie slota

format slot <integer-1> of <player> with <integer-2> of <item> to <effect>

  • <integer-1> - definiuje, na jakim slocie ma zostać wstawiony podany przedmiot. Pierwszym slotem w ekwipunku jest slot, o liczbie porządkowej 0,
  • <player> - gracz, któremu ma się slot wyświetlić,
  • <integer-2> - liczba danego przedmiotu,
  • <item> - angielska nazwa danego itemu, np. diamond, barrier, bone.
  • <effect> - tutaj możliwe jest zdefiniowanie czterech efektów:
    • be unstealable - zapobiega "kradzieży" przedmiotu, czyli nie można go wyjąć z GUI,
    • run "<command>" - umożliwia wywołanie komendy,
    • close - zamyka GUI,
    • close then run "<command>" - zamyka i wywołuje komendę, która jest wykonywana przez konsolę.

Sposób pierwszy jest niepolecany. Nie jest on bowiem rozbudowany oraz nie umożliwia wywołania wielu efektów naraz, dlatego poleca się skorzystanie z:

open chest with <integer> row named "<string>" to <player>
set <player>'s current inventory's slot <integer> to <integer-2> of <item> named "<string>"

gdzie:

  • <player> określa gracza,
  • <integer> jest liczbą całkowitą. W pierwszym przypadku może to być liczba od 1 do 6, w drugim zależnie od liczby rzędów od 0 do 9*int-1, a w ostatnim od 0 do 64,
  • <string> jest tekstem,
  • <item> jest przedmiotem w grze.

Aby wywołać kod po kliknięciu przedmiotu należy napisać event on inventory click:

on inventory click:
    if inventory name of current inventory of <player> is "<string>":
        cancel event
        if clicked slot is <integer>:
            # kod 1
        else if clicked slot is <integer>:
            # kod 2

Skript sprawdza, czy ekwipunek jest nazwany <string>. Jeżeli ten warunek będzie spełniony, skrypt anuluje event, co poskutkuje tym, że gracz nie będzie mógł wyjąć przedmiotu. Następnie sprawdzane jest, czy gracz nacisnął slot o numerze <integer>, jeśli tak, zostaje wykonany kod 1. Aby skuteczniej zabezpieczyć serwer od takich przykrości należy dopisać wait <timespan> pomiędzy otworzeniem GUI, a definiowaniem slotów.