GUI: Różnice pomiędzy wersjami

Z wiki.skript.pl
Przejdź do nawigacji Przejdź do wyszukiwania
m (Tworzenie GUI)
 
(Nie pokazano 9 wersji utworzonych przez 4 użytkowników)
Linia 1: Linia 1:
 
[[Category:Skript]]
 
[[Category:Skript]]
'''GUI, Inventory''' - w grze jest to ekwipunek gracza, lecz w nazewnictwie potocznym w skryptach jest to osobne okienko, które można zaprogramować na swój sposób. Aby stworzyć własny ekwipunek należy zainstalować dodatek [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].
+
'''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ć [[event]], [[pętle|periodical]] lub [[komenda|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 6)
+
*<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 44: Linia 45:
 
             # kod 2</pre>
 
             # kod 2</pre>
  
'''Skript''' sprawdza, czy ekwipunek jest nazwany <string>. Jeżeli ten [[Condition|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.