Otwórz menu główne

Skript-mirror: Różnice pomiędzy wersjami

 
(Nie pokazano 3 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 1: Linia 1:
'''Skript-mirror''' jest dodatkiem do [[Skript]]a umożliwiającym importowanie poszczególnych klas (wydarzeń, wyrażeń i efektów) z silników gry, np. Bukkita lub Spigota oraz z zewnętrznych pluginów, pozwalając jednocześnie na rozszerzenie możliwości Skripta. Aby zrozumieć ten dodatek zaleca się podstawową naukę języka programowania Javy, jednak nie jest on wymagany, ponieważ wystarczy importować i zastosowywać klasy w skryptach.
+
'''Ten artykuł wymaga nieco wiedzy na temat Javy od czytelnika.'''
  
=== Instalacja ===
+
'''Skript-mirror''' lub '''Skript-reflect''' to dodatek do [[Skript]], który pozwala na interakcję języka skryptowego z językiem Java, import klas i głębsze wykonywanie kodu, np. nie mając chcianych wyrażeń w Skripcie da się stworzyć własne, jednocześnie rozszerzając możliwości. Domyślnie, dodatek pozwala na import klas z Javy, silników Bukkit, Spigot i jego forków, tak samo jak i klas z pluginów, które są zainstalowane na naszym serwerze. W katalogu <code>plugins/Skript-reflect</code> można wgrać '''dowolny''' plik .jar, by następnie z niego pozyskać chcianą klasę.
1. Pobierz dodatek z [https://forums.skunity.com/resources/skript-mirror.254/ tej strony].<br>
+
 
2. Wgraj wtyczkę do folderu \plugins.<br>
+
Ten plugin już nie jest aktualizowany na bieżąco, chociaż powstał nowy fork autorstwa TPGamesNL o nazwie <code>skript-reflect</code>. Dlatego, w tym artykule będziemy omawiać tę wersję, i rzeczy, które dodaje również zostaną tutaj wspomniane.
3. Zrestartuj serwer.<br>
 
  
== Czytanie dokumentacji ==
+
Opis dodatku wg autora znajduje się [https://tpgamesnl.gitbook.io/skript-reflect/ tutaj].
Wiele pluginów oferuje swoje publiczne dokumentacje, aby z nich korzystać importując klasy, na przykład [https://docs.oracle.com/javase/8/docs/api/index.html?overview-summary.html Java] lub [https://hub.spigotmc.org/javadocs/bukkit/index.html?overview-summary.html Spigot]. Każda pełna nazwa jest skonstruowana z pakietu oraz "rodziców", po kropce następuje sub-klasa, czyli "dziecko", i tak dalej. <code>org.bukkit.event.Player</code> ''org'' rozpoczyna nazwę, jest on "rodzicem" dalszych subklas, ''bukkit'' natomiast zawiera wiele sub-klas, w tym właśnie ''event'' który z kolei zawiera sub-klasę ''Player''. Taką pełną klasę należy importować, aby zadziałała. W kodach źródłowych pluginów także można pozyskać klasy.
 
  
=== Instalacja zewnętrznych pluginów ===
+
== Instalacja ==
Czysty skript-mirror rozpoznaje jedynie klasy z paru silników i Javy. Aby rozszerzyć ten zbiór należy wgrać swój chciany dodatek do folderu \plugins\skript-mirror. Jeżeli nie ma go, to należy go zrobić pod nazwą ''skript-mirror''.
+
1. Pobierz plik .jar wersji skript-reflect z [https://github.com/TPGamesNL/skript-reflect/releases tej strony].<br>
 +
2. Wgraj plik do folderu <code>/plugins</code>.<br>
 +
3. Zrestartuj serwer.<br>
  
 
== Importowanie klas ==
 
== Importowanie klas ==
Aby zaimportować klasę pomyślnie, należy zatwierdzić jej pełną nazwę. W tym celu używa się nowego bloku kodu ''import:''
+
Klasy importuje się w bloku kodu <code>import:</code> w pliku .sk, aby później z nich skorzystać. Wymaga się pełnej ścieżki, żeby klasa została importowana prawidłowo.
<pre>import:
+
 
    org.bukkit.event.player.PlayerJoinEvent
+
=== Czytanie dokumentacji ===
    org.bukkit.event.player.PlayerQuitEvent</pre>
+
Większość pluginów oferuje ''Javadocs'', czyli dokumentacje przyjazne dla użytkownika. Przydają się wtedy, kiedy chcemy dodać coś nowego na nasz serwer.
Zostały zaimportowane zdarzenia. Do określania zdarzeń w następnej części kodu trzeba określić jedynie najdalsze "dziecko" czyli ''PlayerJoinEvent''.
 
<pre>on PlayerJoinEvent:
 
    # kod</pre>
 
  
== Zastosowanie klas ==
+
* [https://hub.spigotmc.org/javadocs/spigot Dokumentacja Spigot]
<pre>on PlayerJoinEvent:
 
    set {_gracz} to event.getPlayer()
 
    broadcast "&8>> &6%{_gracz}% &adołączył na serwer!
 
  
on PlayerQuitEvent:
+
<pre>
     set {_gracz} to event.getPlayer()
+
import:
    broadcast "&8>> &6%{_gracz}% &copuścił serwer!"</pre>
+
    org.bukkit.event.player.PlayerJoinEvent
 +
</pre>
 +
Zostało zaimportowane zdarzenie. Do określania zdarzeń w następnej części kodu trzeba określić jedynie najdalsze "dziecko" czyli ''PlayerJoinEvent''.
 +
<pre>
 +
on PlayerJoinEvent:
 +
     set join message to "%event.getPlayer()% dołączył do gry"
  
Użyto metody ''.getPlayer()''. Pozyskuje nazwę gracza i przydzielana jest ona do tymczasowej [[zmienne]]j ''{_gracz}''. Następnie Skript ogłasza wiadomość. W powyższym kodzie został połączony język Skript oraz Java, ponieważ jest to możliwe.
+
on join:
 +
    set join message to "%event.getPlayer()% dołączył do gry"
  
Do pobierania danych w np. zdarzeniach służą '''metody''', np. jak ta opisana powyżej. Jej przedrostkiem jest ''event.'' ponieważ nawiązuje ona do wywołanego zdarzenia.
+
on join:
 +
    set join message to "%player% dołączył do gry"
 +
</pre> Te trzy sekcje kodu są identyczne, drugi z nich pokazuje, że składnię Skript można łączyć ze składnią Java. Przydaje się to szczególnie wtedy, kiedy w Skripcie nie ma tego, czego chcielibyśmy uzyskać sami (a jest to w dokumentacji np. Spigota), dlatego sięgamy wtedy po skript-reflect, aby to otrzymać.
  
 
== Własne wyrażenia ==
 
== Własne wyrażenia ==
Skript-mirror udostępnia możliwość tworzenia własnych efektów, zdarzeń lub wyrażeń.
+
Skript-reflect udostępnia możliwość tworzenia własnych efektów, zdarzeń lub wyrażeń.
  
 
Ogólny wzór składni:
 
Ogólny wzór składni:
Linia 71: Linia 73:
  
 
     </pre>
 
     </pre>
 +
 +
 +
[[Kategoria:Skript]]

Aktualna wersja na dzień 00:56, 27 sie 2020

Ten artykuł wymaga nieco wiedzy na temat Javy od czytelnika.

Skript-mirror lub Skript-reflect to dodatek do Skript, który pozwala na interakcję języka skryptowego z językiem Java, import klas i głębsze wykonywanie kodu, np. nie mając chcianych wyrażeń w Skripcie da się stworzyć własne, jednocześnie rozszerzając możliwości. Domyślnie, dodatek pozwala na import klas z Javy, silników Bukkit, Spigot i jego forków, tak samo jak i klas z pluginów, które są zainstalowane na naszym serwerze. W katalogu plugins/Skript-reflect można wgrać dowolny plik .jar, by następnie z niego pozyskać chcianą klasę.

Ten plugin już nie jest aktualizowany na bieżąco, chociaż powstał nowy fork autorstwa TPGamesNL o nazwie skript-reflect. Dlatego, w tym artykule będziemy omawiać tę wersję, i rzeczy, które dodaje również zostaną tutaj wspomniane.

Opis dodatku wg autora znajduje się tutaj.

Spis treści

Instalacja

1. Pobierz plik .jar wersji skript-reflect z tej strony.
2. Wgraj plik do folderu /plugins.
3. Zrestartuj serwer.

Importowanie klas

Klasy importuje się w bloku kodu import: w pliku .sk, aby później z nich skorzystać. Wymaga się pełnej ścieżki, żeby klasa została importowana prawidłowo.

Czytanie dokumentacji

Większość pluginów oferuje Javadocs, czyli dokumentacje przyjazne dla użytkownika. Przydają się wtedy, kiedy chcemy dodać coś nowego na nasz serwer.

import:
    org.bukkit.event.player.PlayerJoinEvent

Zostało zaimportowane zdarzenie. Do określania zdarzeń w następnej części kodu trzeba określić jedynie najdalsze "dziecko" czyli PlayerJoinEvent.

on PlayerJoinEvent:
    set join message to "%event.getPlayer()% dołączył do gry"

on join:
    set join message to "%event.getPlayer()% dołączył do gry"

on join:
    set join message to "%player% dołączył do gry"

Te trzy sekcje kodu są identyczne, drugi z nich pokazuje, że składnię Skript można łączyć ze składnią Java. Przydaje się to szczególnie wtedy, kiedy w Skripcie nie ma tego, czego chcielibyśmy uzyskać sami (a jest to w dokumentacji np. Spigota), dlatego sięgamy wtedy po skript-reflect, aby to otrzymać.

Własne wyrażenia

Skript-reflect udostępnia możliwość tworzenia własnych efektów, zdarzeń lub wyrażeń.

Ogólny wzór składni:

  • [text] - Opcjonalne
  • (text) - Wymagane
  • text1|text2 - lub
  • %text% - typ zmiennej

Na przykład (fill) %expression-1% (with) [%integer%] %expression-2%. To jest efekt, ale w tym momencie nie może nic zrobić, ponieważ nie ma kodu w sobie. Wymagany jest blok trigger:.

effect [GM] announce %expr-1%:
    trigger:
        send "%colored expr-1%" to all players
			
on rightclick:
    announce "&8>> &6&lSkript-mirror jest świetnym dodatkiem"

Ten skrypt dodaje efekt ogłaszający wiadomość na czacie. Aby sprawdzić tego skuteczność, dodano zdarzenie który wywołuje nowo powstały efekt. Aby dodać efekt trzeba przed składnią napisać effect. Niektóre dodane przez nas rzeczy mogą być już zawarte w innych pluginach, poleca się więc dodawać przedrostki przed nimi, np. [GM] aby Skript wiedział, że jest to akurat nasze.
%expr-1% oznacza to, co wpisze się w efekcie po announce czyli tekst.

Warunki

Warunki w skript-mirror wyglądają mniej więcej tak:

[local] condition [AxTops] %player% can buy (for|with) %number%:
    check:
        if {points::%expr-1%} >= expr-2:
            continue
  • [local] oznacza globalność tego warunku, tzn. jeżeli [local] zostało zastosowane to znaczy, że można tego warunku użyć w jednym skrypcie.
  • [AxTops] jest przedrostkiem opcjonalnym.

Warunek sprawdza, czy gracz może kupić coś za "punkty" w zmiennej {points}. %expr-1% to gracz, nawiązanie do %player% w składni, a %expr-2% nawiązuje do %number%.

check to blok specjalnie dla warunków. Jeżeli kod w bloku się zgadza, to należy zastosować continue. Continue tymczasem daje wartość true więc skrypt idzie dalej.