PanMaruda 624 Opublikowano 22 stycznia 2020 Udostępnij Opublikowano 22 stycznia 2020 (edytowane) PORADNIK W TRAKCIE EDYCJI Jak może część z was wie - od wersji 2.2 do Skripta trafiły funkcje (skracają kod, sprawiają że życie staje się piękniejsze i takie tam gadanie - gdyby ktoś potrzebował poradników to odsyłam tutaj - https://skript.pl/temat/8232-funkcje/). Jednakże poza tymi oczywistymi, które możemy tworzyć sami autor dodał od siebie również kilkanaście gotowych funkcji, a ja w tym "poradniku" postaram się je przedstawić i wytłumaczyć ich działanie. Dokładna lista znajduje się w oficjalnej dokumentacji: https://skriptlang.github.io/Skript/functions.html Zatem zaczynając - nasze funkcje możemy podzielić na dwie grupy: Funkcje wykonujące obliczenia matematyczne i zwracające wynik: abs(n: number) abs - absolute value - czyli wartość bezwzględna Funkcja przyjmuje dowolne liczby rzeczywiste, a następnie zmienia ich wartość na dodatnią (większą od zera), np. abs(2) zwróci liczbę 2 abs(-3) zwróci liczbę 3 abs(-28.199) zwróci liczbę 28.199 ceil(n: number) ceil - ceiling - zaokrąglenie w górę Jak sama nazwa wskazuje - funkcja zaokrągla podaną liczbę w górę do najbliższej liczby całkowitej, np. ceil(10) podana liczbą jest całkowita, więc funkcja zwróci ją z powrotem ceil(2.33) funkcja zwróci cyfrę 3 ceil(-2.33) funkcja zwróci liczbę -2, ponieważ -2 jest większa od -2.33 floor(n: number) floor - zaokrąglenie w dół Funkcja zaokrągli podaną liczbę w dół i zwróci najbliższą liczbę całkowitą, np. floor(2) liczba jest całkowita, więc otrzymamy 2 floor(4.1) funkcja zwróci liczbę 4 floor(-3.90) funkcja zwróci liczbę -4, ponieważ to najbliższa liczba całkowita mniejsza od -3.90 round(n: number) round - zaokrąglenie Funkcja zaokrągli podany argument do najbliższej liczby całkowitej, np. round(1.2) funkcja zwróci 1 round(-0.7) funkcja zwróci -1 round(10.5) funkcja zwróci 11, ponieważ liczba od połowy zaokrąglana jest w górę sqrt(n: number), gdzie n >= 0 sqrt - square root - pierwiastek kwadratowy Funkcja obliczy pierwiastek z podanej liczby, np. sqrt(4) funkcja zwróci 2 sqrt(10.2) funkcja zwróci ~3.19 sqrt(0) funkcja zwróci 0 sqrt(-4) funkcja zwróci błąd - NaN (not a number), ponieważ argument nie może byc ujemny mod(d: number, m: number), gdzie m ≠ 0 mod - modulo - reszta z dzielenia dwóch liczb Funkcja sprawdzi ile razy drugi argument w całości mieści się w pierwszym i następnie zwróci pozostałą różnicę, np. mod(7, 2) funkcja zwróci 1, ponieważ liczba 2 mieści się trzy razy w liczbie 7, zatem resztą jest 1 mod(10031, 100) funkcja zwróci 31 mod(-1, 10) funkcja zwróci 9 mod(1, 0) funkcja zwróci błąd (NaN), ponieważ dzielnik (drugi argument) jest zerem sum(n: numbers) sum - suma Funkcja doda do siebie wszystkie podane liczby i zwróci wynik, np. sum(1, 2, 3 and 4) funkcja zwróci 10, bo 1 + 2 + 3 + 4 = 10 sum(1, 2, -3 and -4) funkcja zwróci -4, bo 1 + 2 - 3 - 4 = -4 sum({_lista::*}) sum({_lista::*}, 10 and {_druga::lista::*}) product(n: numbers) product - mnożenie funkcja pomnoży wszystkie podane liczby i zwróci wynik, np. product(3, 4, 5) funkcja zwróci 60, bo 3 * 4 * 5 = 60 product({_lista::*}) product(integers from 1 to 6) funkcja zwróci 720, bo 1 * 2 * 3 * 4 * 5 * 6 = 6! = 720 min(n: numbers) min - minimum - najniższa wartość Funkcja wybierze najmniejszą liczbę, z podanej listy, np. min(1, 2, 3, 4) funkcja zwróci 1 min({_lista::*}) min(10, -1, 1000) funkcja zwróci -1 max(n: numbers) max - maximum - najwyższa wartość Funkcja wybierze największą liczbę z podanej listy, np. max(1, 2, 3, 4) funkcja zwróci 4 max(10, -1, 1000) funkcja zwróci 1000 max({_lista::*}) log(n: number, base: number), gdzie n i base >= 0 oraz n domyślnie = 10 log - logarithm - logarytm Funkcja zwróci logarytm z podanych wartości, tj. Do jakiej potęgi trzeba podnieść drugi argument, aby otrzymać pierwszy, np. log(100) funkcja zwróci 2, ponieważ 10 ^ 2 = 100 log(16, 2) funkcja zwróci 4, ponieważ 2 ^ 4 = 16 log(-16, -2) funkcja zwróci błąd (NaN), bo argumenty są ujemne Trygonometria: sin(n: number) sin - sinus Funkcja obliczy ile wynosi sinus podanego w argumencie kąta (w stopniach), zwraca wartości w przedziale od -1 do +1, np. sin(30) funkcja zwróci 0.5 sin(-2190) funkcja zwróci -0.5 sun(90) funkcja zwróci 1 cos(n: number) cos - cosinus Funkcja obliczy ile wynosi cosinus podanego w argumencie kąta (w stopniach), np. cos(0) = 1 cos(90) = 0 tan(n: number) tan - tg - tangens Funkcja obliczy ile wynosi tangens podanego w argumencie kąta (w stopniach), np. tan(0) = 0 tan(45) = 1 atan(n: number); acos(n: number); asin(n: number) arcus tangens / sinus / cosinus - odwrotność danej funkcji Gdy zwykła funkcja trygonometryczna zwraca liczbę z kąta (w stopniach), tak funkcja arcus, odwrotnie - z liczby obliczy kąt (w stopniach), np. cos(0) = 1 acos(1) = 0 sin(30) = 0.5 asin(0.5) = 30 atan2(x: number, y: number) arcus tangens - wersja druga Ta funkcja wymaga dwóch argumentów - współrzędnych - wyznaczy z nich kąt (w stopniach) na dwuwymiarowej płaszczyźnie liczony od pionowej osi y (do -180 stopni w lewo oraz do +180 stopni w prawo). W minecraft ten kąt opisany jest jako yaw i mierzony od osi z, np. atan2(0, 1) = 0 atan2(10, 0) = 90 atan2(-10, 5) = -63.4349 Funkcje zwracające określone obiekty z podanych argumentów: location(x: number, y: number, z: number, world: world, yaw: number, pitch: number), gdzie world to domyślnie świat pobrany z eventu oraz yaw i pitch domyślnie = 0 Funkcja tworzy obiekt przechowujący lokalizację danego punktu na mapie, zawiera: współrzędne x, y, z, świat oraz kąty yaw i pitch, przy czym dwa ostatnie argumenty nie są wymagane, przykład: location(1, 2, 3, world of player, -180, 8) location(0, 0, 0, ("spawn" parsed as world)) rgb(r: number, g: number, b: number) Funkcja stworzy kolor z podanych jej parametrów R, G oraz B, ( zawierają się w przedziale od 0 do 255), np. rgb(0, 0, 0) - kolor czarny rgb(255, 0, 0) - kolor czerwony rgb(255, 165, 0) - kolor pomarańczowy world(n: string) Funkcja zwróci obiekt świat z jego nazwy, np. world("world") world("nazwa_mojego_światu") vector(x: number, y: number, z: number) Funkcja zwróci wektor z podanych trzech współrzędnych (tutaj link do przyszłego poradnika o wektorach), np. vector(1, 2, 3) vector(0, 0, 0) vector(-1000, 91, -19) date(year: number, month: number, day: number, hour: number, minute: number, second: number, millisecond: number, zone_offset: number), gdzie hour, minute, second, millisecond oraz zone_offset domyślnie = 0 Funkcja zwróci datę z podanego roku, miesiąca oraz dnia, np. date(2014, 10, 1) 1 października 2014, godzina 00:00:00 date(1990, 3, 5, 14, 30) 5 maja 1990, godzina 14:30 calcExperience(n: number), gdzie n >= 0 Funkcja obliczy ilość punktów doświadczenia wymaganego do osiągnięcia podanego poziomu, np. calcExperience(1) zwróci liczbę 7 calcExperience(10) zwróci 160 calcExperience(578) zwróci 1411673 Przykładowe użycia wybranych funkcji w kodzie: #zróbmy mało optymalną disco zbroję, z wykorzystaniem funkcji rgb() on join: while player is online: set {_r} to random integer between 0 and 255 set {_g} to random integer between 0 and 255 set {_b} to random integer between 0 and 255 dye helmet slot of player rgb({_r}, {_g}, {_b}) dye chestplate slot of player rgb({_r}, {_g}, {_b}) dye legging slot of player rgb({_r}, {_g}, {_b}) dye boot slot of player rgb({_r}, {_g}, {_b}) wait 10 tick #obliczmy ilość pieniędzy wszystkich graczy z wykorzystaniem funkcji sum() command /kasa-serwera: trigger: set {_gracze::*} to all offline players loop {_gracze::*}: set {_kasa::%loop-value%} to balance of loop-value send "Gracze na serwerze mają łącznie %sum({_kasa::*})% pieniędzy." #policzmy przestrzenną odległość między graczem a blokiem na który się patrzy, z wykorzystaniem funkcji sqrt() oraz sum() #dla sprawdzenia można użyć wyrażenia 'distance between' on rightclick: if targeted block is set: set {_blok} to location of targeted block set {_x} to ((x-loc of {_blok}) - (x-loc of player)) ^ 2 set {_y} to ((y-loc of {_blok}) - (y-loc of player)) ^ 2 set {_z} to ((z-loc of {_blok}) - (z-loc of player)) ^ 2 set {_suma} to sum({_x}, {_y} and {_z}) set {_odleglosc} to sqrt({_suma}) set {_odlegloscSprawdzenie} to distance between player and {_blok} send "&6Wyliczona odległość do bloku to: &e%{_odleglosc}%" and "&8Sprawdzona odległość do bloku to:&7 %{_odlegloscSprawdzenie}%" #stwórzmy skrypt na losową teleportację z wykorzystaniem funkcji location() command /rtp: trigger: set {_x} to random integer between 0 and 1000 set {_z} to random integer between 0 and 1000 set {_loc} to location({_x}, 256, {_z}) Edytowane 1 grudnia 2020 przez PanMaruda xAxee 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/36738-funkcje-wbudowane-w-plugin/ Udostępnij na innych stronach Więcej opcji udostępniania...
jaku49 691 Opublikowano 22 stycznia 2020 Udostępnij Opublikowano 22 stycznia 2020 Dzięki przyda się, ale też wiem jak działają logarytmy, a w szkole jeszcze nie miałem (matematyka podstawowa) Cytuj Odnośnik do komentarza https://skript.pl/temat/36738-funkcje-wbudowane-w-plugin/#findComment-234410 Udostępnij na innych stronach Więcej opcji udostępniania...
Gość dudimsp2 Opublikowano 23 stycznia 2020 Udostępnij Opublikowano 23 stycznia 2020 7 godzin temu, PanMaruda napisał: command /rtp: trigger: set {_x} to random integer between 0 and 1000 set {_z} to random integer between 0 and 1000 set {_loc} to location({_x}, 256, {_z}) czasami ten kod juz nie istnial bardzo dawno temu? Cytuj Odnośnik do komentarza https://skript.pl/temat/36738-funkcje-wbudowane-w-plugin/#findComment-234438 Udostępnij na innych stronach Więcej opcji udostępniania...
PanMaruda 624 Opublikowano 23 stycznia 2020 Autor Udostępnij Opublikowano 23 stycznia 2020 Mógł istnieć, ja podałem go tylko jako prosty przykład. Cytuj Odnośnik do komentarza https://skript.pl/temat/36738-funkcje-wbudowane-w-plugin/#findComment-234439 Udostępnij na innych stronach Więcej opcji udostępniania...
xAxee 1968 Opublikowano 29 października 2020 Udostępnij Opublikowano 29 października 2020 (edytowane) Poradnik fajny i dobrze zrobiony, przyjemnie się czyta no i jest wartościowy. Ale lepiej by było gdyby argumenty niewymagane funkcji były na inny kolor. I fajnie by było gdyby były podane wyrażenia zastępujące funkcje np do round, ceil, floor dopisać że można użyć wyrażenia round %number%, round up %number%, round down %number%. Poprawiłbym też opis niektórych funkcji np calcExperience wymagany xp do osiągnięcia od poziomu 0? czy od levelu n do n+1? Edytowane 29 października 2020 przez xAxee PanMaruda 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/36738-funkcje-wbudowane-w-plugin/#findComment-265631 Udostępnij na innych stronach Więcej opcji udostępniania...
CoFFeIN04 696 Opublikowano 23 listopada 2020 Udostępnij Opublikowano 23 listopada 2020 W dniu 22.01.2020 o 18:19, PanMaruda napisał: (tutaj link do przyszłego poradnika o wektorach będzie kiedyś? Kormic i PanMaruda 1 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/36738-funkcje-wbudowane-w-plugin/#findComment-269589 Udostępnij na innych stronach Więcej opcji udostępniania...
PanMaruda 624 Opublikowano 23 listopada 2020 Autor Udostępnij Opublikowano 23 listopada 2020 5 minut temu, CoFFeIN04 napisał: będzie kiedyś? zapomniałem że ten temat w ogóle istnieje, przemyślę aktualizację i wektory Misio12320 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/36738-funkcje-wbudowane-w-plugin/#findComment-269590 Udostępnij na innych stronach Więcej opcji udostępniania...
CoFFeIN04 696 Opublikowano 23 listopada 2020 Udostępnij Opublikowano 23 listopada 2020 18 minut temu, PanMaruda napisał: zapomniałem że ten temat w ogóle istnieje, przemyślę aktualizację i wektory aktualizacja tutaj zbędna, wszystkie funkcje są w dokumentacji o wektorach po prostu nie słyszałem nawet więc chętnie się czegoś dowiem Cytuj Odnośnik do komentarza https://skript.pl/temat/36738-funkcje-wbudowane-w-plugin/#findComment-269593 Udostępnij na innych stronach Więcej opcji udostępniania...
Kormic 1951 Opublikowano 23 listopada 2020 Udostępnij Opublikowano 23 listopada 2020 1 minutę temu, CoFFeIN04 napisał: aktualizacja tutaj zbędna, wszystkie funkcje są w dokumentacji o wektorach po prostu nie słyszałem nawet więc chętnie się czegoś dowiem Wektory również są "opisane" w dokumentacji. https://skriptlang.github.io/Skript/expressions.html#ExprVectorAngleBetween Cytuj Odnośnik do komentarza https://skript.pl/temat/36738-funkcje-wbudowane-w-plugin/#findComment-269597 Udostępnij na innych stronach Więcej opcji udostępniania...
CoFFeIN04 696 Opublikowano 23 listopada 2020 Udostępnij Opublikowano 23 listopada 2020 1 minutę temu, Kormic napisał: Wektory również są "opisane" w dokumentacji. https://skriptlang.github.io/Skript/expressions.html#ExprVectorAngleBetween no funkcje są napisane w jasny sposób, te wektory niekoniecznie Cytuj Odnośnik do komentarza https://skript.pl/temat/36738-funkcje-wbudowane-w-plugin/#findComment-269598 Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.