Ta odpowiedź cieszy się zainteresowaniem. piratjsk 700 Opublikowano 14 czerwca 2015 Ta odpowiedź cieszy się zainteresowaniem. Udostępnij Opublikowano 14 czerwca 2015 Funkcje 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. Skąd wziąć Skript w wersji 2.2? Najnowszą wersję Skript można pobrać stąd, warto też rozważyć skorzystanie z wersji zawierającej poprawki autorstwa Mirreducki'ego. Składnia Istnieją dwa podstawowe typy funkcji: taka, która coś zwraca, jakąś wartość, oraz taka, która tylko wykonuje kod i nie zwraca żadnej wartości. # Funkcja, która zwraca wartość function nazwa_funkcji(nazwa_argumentu: %typ_argumentu%, ...) :: %typ_zwracanej_wartości%: # kod_funkcji return %coś% # Funkcja, która tylko wykonuje swój kod i nie zwraca żadnej wartości function nazwa_funkcji(nazwa_argumentu: %typ_argumentu%, ...): # kod_funkcji Argumenty są opcjonalne, można ich użyć ale nie trzeba. 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:. Argumenty 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. # np. function dajDiamenta(gracz: player): give 1 diamond to {_gracz} Korzystanie z funkcji Gdy już zdefiniowaliśmy naszą funkcję przyszedł czas aby ją wykorzystać. # np. 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." 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. Jak znajdę chwilę czasu to dodam tu jeszcze kilka przykładowych funkcji. function dodajWarpa(nazwa: text, lokacja: location) :: boolean: if {warpy::%{_nazwa}%} is set: return false else: set {warpy::%{_nazwa}%} to {_lokacja} return true Kacperski, MaTrIS, Mr. Edgarsz i 17 innych 20 Odnośnik do komentarza https://skript.pl/temat/8232-funkcje/ Udostępnij na innych stronach Więcej opcji udostępniania...
boleknowak 961 Opublikowano 14 czerwca 2015 Udostępnij Opublikowano 14 czerwca 2015 Łał. Ciekawe masz lajka. Ale mam pytanie. Mogę używać tego w innych plikach? np. mam funkcję testDiamond i ona daje diaxa to jak użyje tego w innym pliku (.sk) to będzie to działało? Odnośnik do komentarza https://skript.pl/temat/8232-funkcje/#findComment-64800 Udostępnij na innych stronach Więcej opcji udostępniania...
piratjsk 700 Opublikowano 14 czerwca 2015 Autor Udostępnij Opublikowano 14 czerwca 2015 Łał. Ciekawe masz lajka. Ale mam pytanie. Mogę używać tego w innych plikach? np. mam funkcję testDiamond i ona daje diaxa to jak użyje tego w innym pliku (.sk) to będzie to działało?Tak, możesz. Będzie działać. boleknowak 1 Odnośnik do komentarza https://skript.pl/temat/8232-funkcje/#findComment-64801 Udostępnij na innych stronach Więcej opcji udostępniania...
Norbi 1337 Opublikowano 14 czerwca 2015 Udostępnij Opublikowano 14 czerwca 2015 @boleknowakDefinicja 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. Widać, że przy samym wyglądzie stylistycznym musiałeś się napracować. Bardzo przydatny poradnik. Odnośnik do komentarza https://skript.pl/temat/8232-funkcje/#findComment-64802 Udostępnij na innych stronach Więcej opcji udostępniania...
Savorski 176 Opublikowano 16 czerwca 2015 Udostępnij Opublikowano 16 czerwca 2015 Nawet nie wiedziałem że da się takie coś zrobić w skripcie. Napewno się przyda ! :D Łap lajkensa. Odnośnik do komentarza https://skript.pl/temat/8232-funkcje/#findComment-64995 Udostępnij na innych stronach Więcej opcji udostępniania...
Norbi 1337 Opublikowano 23 czerwca 2015 Udostępnij Opublikowano 23 czerwca 2015 Da się sprawdzić, czy podczas, gdy funkcja się wywołuje, czy jakiś z argumentów jest ustawiony? Odnośnik do komentarza https://skript.pl/temat/8232-funkcje/#findComment-65877 Udostępnij na innych stronach Więcej opcji udostępniania...
piratjsk 700 Opublikowano 23 czerwca 2015 Autor Udostępnij Opublikowano 23 czerwca 2015 Da się sprawdzić, czy podczas, gdy funkcja się wywołuje, czy jakiś z argumentów jest ustawiony?Podczas korzystania z funkcji wszystkie zdefiniowane argumenty muszą zostać podane aby funkcja została wykonana, więc sprawdzanie czy argument został podany nie ma sensu. Odnośnik do komentarza https://skript.pl/temat/8232-funkcje/#findComment-65882 Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi