Skript

Z wiki.skript.pl
Wersja z dnia 21:16, 20 lis 2019 autorstwa Savorski (dyskusja | edycje) (Liczne zmiany merytoryczne, redakcyjne, techniczne. Poprawy wielu definicji.)
Przejdź do nawigacji Przejdź do wyszukiwania

Skript to plugin przeznaczony dla silników serwerowych opartych na bibliotece Bukkit. Wtyczka ta umożliwia tworzenie oraz uruchamianie różnorodnych instrukcji i czynności na odpowiednie zdarzenia, od kilkuset zdarzeń po wiele typów i wyrażeń. Plugin został napisany specjalnie dla użytkowników, którzy chcą dodawać coś autorskiego nie umiejąc Javy. Język Skript opiera się na podstawowym języku angielskim i jest prosty w użyciu.

Dodatki

Skript pozwala na tworzenie dodatków. Istnieje wiele wtyczek, które dodają bardzo dużo nowych wyrażeń, efektów, zdarzeń lub typów. Autorzy bardzo chętnie je tworzą i publikują. Oficjalną kategorię z dodatkami możesz znaleźć tutaj.

Skrypty

Aby stworzyć swój pierwszy skrypt, otwórz klienta FTP i zainstaluj wtyczkę Skript (najnowsza wersja). Po wgraniu wtyczki należy zrestartować serwer, i sprawdzić czy plugin jest kompatybilny z wersją silnika serwera. Oprócz samego uruchamiania skryptów, Skript umożliwia nam manipulację między nimi oraz między samym pluginem poprzez komendy. Możemy uruchomić takie instrukcje jak:

  • /skript help - wyświetla informacje o wtyczce i jej komendy.
  • /skript disable [all/nazwa] - pozwala na wyłączenie skryptu (wszystkich lub konkretnego).
  • /skript enable [all/nazwa] - pozwala na włączenie skryptu (wszystkich lub konkretnego).
  • /skript update - sprawdza wersję Skripta.
  • /skript reload [all/nazwa] - pozwala ponownie wczytać skrypt (lub wszystkie skrypty), więc można je tworzyć podczas gry na bieżąco i co chwilę sprawdzać ich działanie.

Aby napisać swój pierwszy skrypt powinieneś otworzyć dowolny edytor tekstu (np. Windowsowy notatnik) lub Notepad++.

Pisanie skryptu

Przed napisaniem skryptu zapoznaj się z tematami, takimi jak:

Te artykuły dokładnie opisują podstawowe elementy tego języka. Pierwszym skryptem może być np. komenda.

Komendy

Komendy to instrukcje wykonywane przez dowolnego adresata wypisującego w polu chatu określony łańcuch znaków poprzedzony znakiem "/" (w Minecrafcie).

command /hello:
    permission: sk.hello
    permission message: Nie masz uprawnień!
    aliases: /hi
    trigger:
        send "Hello world!" to player

Po krótce:

  • command /hello opisuje budowę komendy. Po wpisaniu komendy "hello" ma się wykonać poniższy kod.
  • permission: sk.hello" jest opcjonalne, ale Skript sprawdza, czy gracz posiada uprawnienia.
  • permission message: Nie masz uprawnień! opisuje wiadomość, która się pojawi graczowi na czacie, jeżeli nie posiada on określonych uprawnień.
  • aliases: /hi - w tym przypadku można dodatkowo wpisać /hi i się wykona komenda /hello.
  • trigger: ten operator jest wymagany przy pisaniu każdej komendy. Trigger opisuje, co ma zrobić gra po wpisaniu komendy.
  • send "Hello world!" to player - send jest operacją, która określa instrukcję wysyłania wiadomości. "Hello world!" jest przykładowym łańcuchem znaków - w tym miejscu powinniśmy napisać wiadomość, którą chcemy wysłać dla danego odbiorcy. to player natomiast oznacza, że wiadomość ma być wysłana do nas. W późniejszym czasie, po większym rozeznaniu się z wtyczką poznacie więcej typów odbiorców wiadomości.

Podsumowując:

<komenda/periodical/zdarzenie>:
    <effect>:
        <kod>

(Periodical jest jedną z pętli.)

Zdarzenia

Zdarzenia to kod wywoływany podczas wykonanej czynności. Czynnością takową może być na przykład rozpoczęcie jedzenia bądź zadanie obrażenia. W Skripcie wyróżniamy bardzo wiele zdarzeń (Wszystkie można znaleźć tutaj).

on mine of stone:
    if player's tool is diamond pickaxe of unbreaking 10 named "Kilof Mocy" with lore "Linia 1","Linia 2","Linia 3":
        chance of 15%:
            drop 1 nether star of unbreaking 10 named "&cGwiazda Piekła" at event-block
  • on mine of stone uruchamia instrukcje wskazane poniżej podczas, gdy gracz zacznie kopać kamień.
  • if player's tool is diamond pickaxe sprawdza, czy narzędziem w ręce gracza jest diamentowy kilof.
  • of unbreaking 10 sprawdza, czy ten kilof ma Niezniszczalność X (w miejscu unbreaking 10 można wpisać wszystkie typy zaklęć).
  • named "Kilof Mocy" with lore "Linia 1","Linia 2","Linia 3" sprawdza, czy kilof jest nazwany Kilof Mocy i czy ma on opis (lore). Tutaj można dodać wiele linijek, wystarczy że po pierwszej "linii" opisu dopiszemy przecinek. Cudzysłowiem rozpoczynamy drugą linię.
  • chance of 15% Information.png Artykuł główny: Losowość
  • drop 1 nether star nakazuje wyrzucić jedną gwiazdę netheru (ang. nether star).
  • event-block - miejsce zdarzenia (miejsce wykopanego kamienia). W zdarzeniach można używać terminów event-() aby określić miejsce zdarzenia. np. on death of cow: drop 1 of milk bucket at event-entity

Wgrywanie skryptu

Napisany skrypt należy zapisać w rozszerzeniu .sk i wgrać do folderu Skript/scripts, który znajduje się w katalogu plugins katalogu naszego serwera. Przykładowe skrypty można usunąć, ale warto się również z nich nauczyć pewnych efektów lub wyrażeń.

Wchodząc do gry wpisujemy komendę /sk reload <nazwa skryptu> (bez .sk, ponieważ wtedy Skript nam nie znajdzie pliku.)

Jak rozumieć błędy?

Aby pierw zrozumieć błędy, należy ze zrozumieniem przeczytać wyswietlony przez plugin Skript błąd. Plugin zawsze podaje, w jakiej linii kodu wystąpił błąd, więc należy się tam udać i wyszukać źle napisany fragment skryptu. Dodatkowo trzeba się upewnić, czy poprawnie efekt/wyrażenie/zdarzenie zostało zapisane. Poniższy przykład ilustruje mnogość zapisanych warunków, które odegrają taką samą instrukcję.

on step over dirt:
on step on dirt:
on steping on dirt:
on steping over dirt:
step over dirt:
step on dirt:
steping over dirt:
steping on dirt:
on walk over dirt:
on walk on dirt:
on walking on dirt:
on walking over dirt:
walk over dirt:
walk on dirt:
walking over dirt:
walking on dirt:

Najczęstszym błędem jest can't understand this condition/effect. Wynika to z tego faktu, że jak sam Skript nam mówi, nie może zrozumieć efektu/warunku w danej linii. Przed wyszukaniem fragmentu kodu z błędem warto pierw sprawdzić, czy w katalogu plugins posiadamy odpowiedni dodatek, do którego próbujemy się odwołać. Jeżeli posiadamy odpowiedni addon w naszym katalogu - należy sprawdzić, czy jest on kompatybilny z wersją serwera. Jeżeli mimo wszystko uważamy, że dodatek posiada wersję wspierającą naszą edycję silnika, należy upewnić się, czy nasz serwer odpowiednio wczytał addon komendą /plugins na serwerze.

Najczęstsze błędy
Błąd Opis i wyjaśnienie
can't understand this condition/effect Skript nie może zrozumieć warunku/efektu. Warto zobaczyć, czy posiadamy dodatek bądź czy fragment kodu jest poprawny.
indentation error Błąd z wcięciami w kodzie. Wcięcia są bardzo ważne w pluginie Skript - podczas wczytywania kodu Skript sprawdza każde wcięcie.
invalid use of quotes Złe użycie cudzysłowia. W tekstach ważne jest prawidłowe ich użycie. Aby Skript wziął cudzysłów za tekst należy go wpisać dwukrotnie - "" #To jest tekst!
the percent sign is used for expressions (e.g. %player%). To insert a '%' type it twice: %% Procenty w tekście. Aby były wzięte za tekst należy je wstawić dwa razy. Tak samo jak z cudzysłowiem.
can't understand expression Skript nie rozumie wyrażenia.

Jeżeli naprawdę Skript cię wycieńcza z błędami - koniecznie odwiedź forum.