Funkcje

Z skript.pl wiki
Skocz do: nawigacja, szukaj


Autorzy[edytuj]

Oryginalnym autorem treści jest użytkownik o nicku piratjsk. Treść została przemigrowana z forum skript.pl

Wstęp[edytuj]

Możliwość tworzenia własnych funkcji w skryptach do tej pory oferowały tylko dodatki (WS i skQ). Od momentu wydania developerskiej wersji Skript 2.2 można z nich korzystać bez żadnych dodatkowych pluginów.

Wymagania[edytuj]

By móc używać takowej funkcjonalności, należy posiadać plugin: Skript (wersja 2.2 lub wyżej)

Składnia[edytuj]

Istnieją dwa rodzaje funkcji.

Funkcje zwracające wartość[edytuj]

Kod:

function nazwa_funkcji(nazwa_argumentu: %typ_argumentu%, ...) :: %typ_zwracanej_wartości%:
    # kod_funkcji
    return %coś%

Argumenty są opcjonalne, można ich użyć ale nie trzeba.

Funkcje nie zwracające wartości[edytuj]

Kod:

function nazwa_funkcji(nazwa_argumentu: %typ_argumentu%, ...):
    # kod_funkcji

Argumenty są opcjonalne, można ich użyć ale nie trzeba.

Opis[edytuj]

Definiowanie obydwu rodzaji funkcji zaczynamy od słowa kluczowego function, następnie po spacji podajemy nazwę, z której bedziemy później korzystać aby wywołać naszą funkcję. Po tym w nawiasach podajemy argumenty, jeśli nasza funkcja nie będzie z nich korzystać należy wstawić tylko nawiasy (). Argumenty podajemy według wzoru: nazwa: %typ%, np. gracz: player albo p: player, w: world. W przypadku funkcji zwracającej jakąś wartość trzeba w tym momencie podać typ tej wartości (np. number, text, player, location). Na końcu linijki definniującej funkcję należy umieścić dwukropek, a następne linijki (kod funkcji) wciąć o jedną jednostkę.

Podając liczbę mnogą typu argumentu (np. players, entities, worlds) umożliwimy sobie podawanie wielu wartości (o podanmy typie). Tak samo sprawa ma się w przypadku typu zwracanej wartości, gdy podamy jego liczbę mnogą będziemy mogli zwracać listy wartości. Np. function podpal(g: players): function ktoWygral(mecz: text) :: players:. Definicja funkcji nie musi być w pliku, w którym z niej korzystamy. Funkcje zdefiniowane w jednym skrypcie będziemy mogli używać w każdym innym.


Implementacja i przykłady[edytuj]

Wiesz już jak zdefiniować argumenty, teraz czas nauczyć się z nich korzystac. Jest to naprawdę proste. W kodzie naszej funkcji odwołujemy się poprostu do zmiennych lokalnych (zaczynających się od znaku _) o takich nazwach jak podane argumenty:

function dajDiamenta(gracz: player):
    give 1 diamond to {_gracz}

Korzystanie z funkcji

Gdy już zdefiniowaliśmy naszą funkcję przyszedł czas aby ją wykorzystać:

command /daj:
    trigger:
        dajDiamenta(player)
        send "Oto twój diament :)"

Jeśli nasza funkcja zwraca jakąś wartość to możemy ją np. zapisać do zmiennej:

command /punkty:
    trigger:
        set {_punkty} to ileMaPunktow(player)
        send "&eMasz &6%{_punkty}% &epunktow."