GUI: Różnice pomiędzy wersjami

Z wiki.skript.pl
Przejdź do nawigacji Przejdź do wyszukiwania
(Znaczniki: Z internetu mobilnego, Z wersji mobilnej www)
m (Tworzenie GUI)
 
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika)
Linia 1: Linia 1:
 
[[Category:Skript]]
 
[[Category:Skript]]
'''GUI''' - graficzny interfejs użytkownika (ang. graphical user interface) oparty na ekwipunku (ang. inventory) gracza to osobne okienko, które można zaprogramować na swój sposób. Aby stworzyć własne GUI można pomóc sobie dodatkami np. [https://www.spigotmc.org/resources/skquery-1-9-1-14.36631/ SkQuery] lub [https://forums.skunity.com/resources/tuske-custom-enchantments-gui-manager-and-more.16/ TuSKe] albo skorzystać z samego Skripta.
+
'''GUI''' - graficzny interfejs użytkownika (ang. graphical user interface), oparty na [[Ekwipunek|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 [https://www.spigotmc.org/resources/skquery-1-9-1-14.36631/ SkQuery] lub [https://forums.skunity.com/resources/tuske-custom-enchantments-gui-manager-and-more.16/ TuSKe], lecz można również skorzystać z samego [[Skript|Skripta]].
 
[[Plik:GUI.png|alt=|brak|ramka|Skript umożliwia tworzenie dowolnych GUI]]
 
[[Plik:GUI.png|alt=|brak|ramka|Skript umożliwia tworzenie dowolnych GUI]]
  
 
==Tworzenie GUI==
 
==Tworzenie GUI==
W celu stworzenia GUI trzeba zapisać [[Zdarzenia|zdarzenie]], [[Pętle|pętlę]] lub [[Komendy|komendę]] która wywoła otworzenie się GUI. Wyświetlanie ekwipunku:<br>
+
W celu stworzenia GUI trzeba zapisać [[Zdarzenia|zdarzenie]], [[Pętle|pętlę]] lub [[Komendy|komendę]], które wywołają otworzenie się GUI. Wyświetlanie [[Ekwipunek|ekwipunku]]:<br>
 
<code>open chest with <integer> rows named "<string>" to <player></code>
 
<code>open chest with <integer> rows named "<string>" to <player></code>
  
*<integer> to 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)
+
*<integer> - liczba rzędów w GUI (może ona być liczbą od 1 do X, jednak musimy pamiętać, że GUI ulegnie zniekształceniu w wypadku wprowadzenia zbyt dużej liczby),
*<string> - nazwa GUI
+
*<string> - nazwa GUI,
*<player> - gracz, któremu ma się owe GUI wyświetlić
+
*<player> - gracz, któremu ma się owe GUI wyświetlić.
  
W takim GUI gracz jest zdolny do manipulowania nim, oraz nie ma w nim nic, ponieważ należy zdefiniować to, co ma się w nim znaleźć oraz później dodać eventy, które wykonują kod po kliknięciu slota w inventory.
+
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 [[Event|eventy]], które wykonają kod po kliknięciu slota w [[Ekwipunek|ekwipunku]].
  
 
===Definiowanie slota===
 
===Definiowanie slota===
 
<code>format slot <integer-1> of <player> with <integer-2> of <item> to <effect></code>
 
<code>format slot <integer-1> of <player> with <integer-2> of <item> to <effect></code>
  
*<integer-1> definiuje, na jakim slocie ma zostać wstawiony podany później przedmiot. ''Uwaga: Slot '''0''' jest pierwszym slotem w ekwipunku, a nie 1''
+
*<integer-1> - definiuje, w którym slocie ma się pojawić wprowadzony [[Przedmiot|przedmiot]]. <u>Pierwszym slotem w ekwipunku jest slot o liczbie porządkowej 0,</u>
*<player> - gracz, któremu ma się slot wyświetlić
+
*<player> - gracz, którego ekwipunkiem w tym momencie operujemy,
*<integer-2> - liczba danego przedmiotu
+
*<integer-2> - ilość danego [[Przedmiot|przedmiotu]],
*<item> - dany przedmiot/blok, np. ''diamond'', ''barrier'', ''bone''.
+
*<item> - angielska nazwa danego [[Przedmiot|przedmiotu]], np. ''diamond'', ''barrier'', ''bone''.
 
*<effect> - tutaj możliwe jest zdefiniowanie czterech efektów:
 
*<effect> - tutaj możliwe jest zdefiniowanie czterech efektów:
**'''be unstealable''' zapobiega 'kradzieży' przedmiotu, czyli nie można go wyjąć z GUI
+
**'''be unstealable''' - zapobiega "kradzieży" [[Przedmiot|przedmiotu]] - powoduje, że nie można wyjąć go z GUI,
**'''run "<command>" umożliwia wywołanie komendy'''
+
**'''run "<command>"''' - po kliknięciu następuje wykonanie polecenia,
**'''close''' zamyka GUI
+
**'''close''' - po kliknięciu następuje zamknięcie GUI,
**'''close then run "<command>" zamyka i wywołuje komendę, która jest wykonywana przez konsolę.'''
+
**'''close then run "<command>"''' - po kliknięciu następuje zamknięcie GUI i wykonanie polecenia z poziomu konsoli.
  
Sposób pierwszy jest niepolecany ze względu, że nie jest rozbudowany oraz nie umożliwia wywołania wielu efektów na raz, dlatego poleca się
+
Sposób pierwszy jest niepolecany. Nie jest on bowiem rozbudowany oraz nie umożliwia wywołania wielu efektów naraz, dlatego też zaleca się skorzystanie z:
  
 
<pre>open chest with <integer> row named "<string>" to <player>
 
<pre>open chest with <integer> row named "<string>" to <player>
set <player>'s current inventory's slot <integer> to <integer-2> of <item> named "<string>"</pre>, gdzie
+
set <player>'s current inventory's slot <integer> to <integer-2> of <item> named "<string>"</pre>gdzie:
  
*<player> określa gracza
+
*<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''', w ostatnim od '''0''' do '''64'''
+
*<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
+
*<string> jest tekstem,
*<item> jest przedmiotem w grze
+
*<item> jest przedmiotem w grze.
  
Aby wywołać kod po kliknięciu przedmiotu należy napisać event <code>on inventory click:</code>
+
Aby wywołać kod po kliknięciu przedmiotu należy napisać [[event]] <code>on inventory click:</code>
 
<pre>on inventory click:
 
<pre>on inventory click:
 
     if inventory name of current inventory of <player> is "<string>":
 
     if inventory name of current inventory of <player> is "<string>":
Linia 45: Linia 45:
 
             # kod 2</pre>
 
             # kod 2</pre>
  
'''Skript''' sprawdza, czy ekwipunek jest nazwany <string>. Jeżeli ten [[Warunki|warunek]] się spełni, to wtedy skrypt anuluje ten event, przez co gracz nie może wyjąć przedmiotu. Następnie sprawdza, czy gracz nacisnął slot numer <integer>. Jeżeli tak, to zostaje wykonany kod 1.  
+
'''Skript''' sprawdza, czy [[ekwipunek]] jest nazwany <string>. Jeżeli ten [[Warunki|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ć  <code>wait <timespan></code> pomiędzy otworzeniem GUI, a definiowaniem slotów.
Aby skuteczniej zabezpieczać serwer od takich przykrości powinno się dopisywać <code>wait <timespan></code>.
 

Aktualna wersja na dzień 18:14, 16 lip 2021

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 ulegnie zniekształceniu w wypadku wprowadzenia zbyt dużej liczby),
  • <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 wykonają 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, w którym slocie ma się pojawić wprowadzony przedmiot. Pierwszym slotem w ekwipunku jest slot o liczbie porządkowej 0,
  • <player> - gracz, którego ekwipunkiem w tym momencie operujemy,
  • <integer-2> - ilość danego przedmiotu,
  • <item> - angielska nazwa danego przedmiotu, np. diamond, barrier, bone.
  • <effect> - tutaj możliwe jest zdefiniowanie czterech efektów:
    • be unstealable - zapobiega "kradzieży" przedmiotu - powoduje, że nie można wyjąć go z GUI,
    • run "<command>" - po kliknięciu następuje wykonanie polecenia,
    • close - po kliknięciu następuje zamknięcie GUI,
    • close then run "<command>" - po kliknięciu następuje zamknięcie GUI i wykonanie polecenia z poziomu konsoli.

Sposób pierwszy jest niepolecany. Nie jest on bowiem rozbudowany oraz nie umożliwia wywołania wielu efektów naraz, dlatego też zaleca 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.