GUI: Różnice pomiędzy wersjami
m (→Tworzenie GUI) |
|||
| (Nie pokazano 9 wersji utworzonych przez 4 użytkowników) | |||
| Linia 1: | Linia 1: | ||
[[Category:Skript]] | [[Category:Skript]] | ||
| − | '''GUI | + | '''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]] | ||
| − | == Tworzenie GUI == | + | ==Tworzenie GUI== |
| − | W celu stworzenia GUI trzeba zapisać [[ | + | 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> | + | *<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 | + | 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, | + | *<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, | + | *<player> - gracz, którego ekwipunkiem w tym momencie operujemy, |
| − | * <integer-2> - | + | *<integer-2> - ilość danego [[Przedmiot|przedmiotu]], |
| − | * <item> - | + | *<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 | + | **'''be unstealable''' - zapobiega "kradzieży" [[Przedmiot|przedmiotu]] - powoduje, że nie można wyjąć go z GUI, |
| − | ** '''run "<command>" | + | **'''run "<command>"''' - po kliknięciu następuje wykonanie polecenia, |
| − | ** '''close''' | + | **'''close''' - po kliknięciu następuje zamknięcie GUI, |
| − | ** '''close then run "<command>" | + | **'''close then run "<command>"''' - po kliknięciu następuje zamknięcie GUI i wykonanie polecenia z poziomu konsoli. |
| − | Sposób pierwszy jest niepolecany | + | 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: | |
| − | * <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 44: | Linia 45: | ||
# kod 2</pre> | # kod 2</pre> | ||
| − | '''Skript''' sprawdza, czy ekwipunek jest nazwany <string>. Jeżeli ten [[ | + | '''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 | ||
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.
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.
