Skocz do zawartości

Funkcje wbudowane w plugin


Rekomendowane odpowiedzi

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 przez PanMaruda
Odnośnik do komentarza
https://skript.pl/temat/36738-funkcje-wbudowane-w-plugin/
Udostępnij na innych stronach

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?

Odnośnik do komentarza
https://skript.pl/temat/36738-funkcje-wbudowane-w-plugin/#findComment-234438
Udostępnij na innych stronach

  • 9 miesięcy temu...

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 przez xAxee
Odnośnik do komentarza
https://skript.pl/temat/36738-funkcje-wbudowane-w-plugin/#findComment-265631
Udostępnij na innych stronach

  • 4 tygodnie później...
18 minut temu, PanMaruda napisał:

zapomniałem że ten temat w ogóle istnieje, przemyślę aktualizację i wektory :thinkcap:

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 :)

Odnośnik do komentarza
https://skript.pl/temat/36738-funkcje-wbudowane-w-plugin/#findComment-269593
Udostępnij na innych stronach

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

Odnośnik do komentarza
https://skript.pl/temat/36738-funkcje-wbudowane-w-plugin/#findComment-269597
Udostępnij na innych stronach

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

Odnośnik do komentarza
https://skript.pl/temat/36738-funkcje-wbudowane-w-plugin/#findComment-269598
Udostępnij na innych stronach

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ą.

Nieaktywny
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...