Funkcje: Różnice pomiędzy wersjami

Z wiki.skript.pl
Przejdź do nawigacji Przejdź do wyszukiwania
m (Zła kategoria)
(kody)
Linia 10: Linia 10:
 
|-
 
|-
 
!Wzór
 
!Wzór
|<code>Nazwa funkcji(Nazwa argumentu 1: Typ argumentu 1, Nazwa argumentu 2: Typ argumentu 2...) :: Typ zwracanej wartości:</code>
+
|<pre>
 
+
Nazwa funkcji(Nazwa argumentu 1: Typ argumentu 1, Nazwa argumentu 2: Typ argumentu 2...) :: Typ zwracanej wartości:
<code>    kod...</code>
+
    kod...
 
+
    return wartość
<code>    return wartość</code>
+
</pre>
 
|-
 
|-
 
!'''Przykład'''
 
!'''Przykład'''
|<code>points(p: player) :: number:</code>
+
|<pre>
<code>return {points::%{_p}%}</code>
+
points(p: player) :: number:
 +
    return {points::%{_p}%}
 +
</pre>
 
|-
 
|-
 
!
 
!
Linia 24: Linia 26:
 
|-
 
|-
 
!'''Wzór'''
 
!'''Wzór'''
|<code>Nazwa funkcji(Nazwa argumentu 1: Typ argumentu 1, Nazwa argumentu 2: Typ argumentu 2...):</code>
+
|<pre>
<code>kod...</code>
+
Nazwa funkcji(Nazwa argumentu 1: Typ argumentu 1, Nazwa argumentu 2: Typ argumentu 2...):
 +
    kod...
 +
</pre>
 
|-
 
|-
 
!'''Przykład'''
 
!'''Przykład'''
|<code>addPoints(p: player, n: number):</code>
+
|<pre>
<code>add {_n} to {points::%{_p}%}</code>
+
addPoints(p: player, n: number):
 +
    add {_n} to {points::%{_p}%}
 +
</pre>
 
|}
 
|}
  
Linia 55: Linia 61:
 
!Przykłady / Zwracana wartość
 
!Przykłady / Zwracana wartość
 
|-
 
|-
|location(x, y, z, "Nazwa świata"=event-world, yaw=0, pitch=0
+
|<code>location(x, y, z, "Nazwa świata"=event-world, yaw=0, pitch=0</code>
|2.2
+
|'''2.2'''
 
|Zwraca lokalizacje.
 
|Zwraca lokalizacje.
|teleport player to location(10, 50, 12)
+
|<code>teleport player to location(10, 50, 12)</code>
  
set {_l} to location(10, 100, 52, "world", 90, 90)
+
<code>set {_l} to location(10, 100, 52, "world", 90, 90)</code>
 
|-
 
|-
|mod(number, number)
+
|<code>mod(number, number)</code>
|2.2
+
|'''2.2'''
 
|Zwraca reszte z dzielenia
 
|Zwraca reszte z dzielenia
|set {_x} to mod(1, 3)
+
|<code>set {_x} to mod(1, 3)</code>
 
|-
 
|-
|floor(number)
+
|<code>floor(number)</code>
|2.2
+
|'''2.2'''
 
|Zwraca liczbe zaokrągloną w dół.
 
|Zwraca liczbe zaokrągloną w dół.
|floor(5.99) = 5
+
|<code>floor(5.99) = 5</code>
floor(3.12) = 3
+
<code>floor(3.12) = 3</code>
 
|-
 
|-
|max(numbers)
+
|<code>max(numbers)</code>
|2.2
+
|'''2.2'''
 
|Zwraca największą z podanych liczb.
 
|Zwraca największą z podanych liczb.
|max(1, 2, 3, 4, 5) = 5
+
|<code>max(1, 2, 3, 4, 5) = 5</code>
max(0, 4, 6, 3, 2) = 6
+
<code>max(0, 4, 6, 3, 2) = 6</code>
 
|-
 
|-
|min(numbers)
+
|<code>min(numbers)</code>
|2.2
+
|'''2.2'''
 
|Zwraca najmniejszą z podanych liczb.
 
|Zwraca najmniejszą z podanych liczb.
|min(0, 2, 5, 6, 6) = 0
+
|<code>min(0, 2, 5, 6, 6) = 0</code>
min(9, 2, 5, 8, 4) = 2
+
<code>min(9, 2, 5, 8, 4) = 2</code>
 
|-
 
|-
|product(numbers)
+
|<code>product(numbers)</code>
|2.2
+
|'''2.2'''
 
|Zwraca iloczyn podanych liczb.
 
|Zwraca iloczyn podanych liczb.
|product(1, 7, 2, 2) = 28
+
|<code>product(1, 7, 2, 2) = 28</code>
product(6, 3, 5, 6) = 540
+
<code>product(6, 3, 5, 6) = 540</code>
 
|-
 
|-
|round(number)
+
|<code>round(number)</code>
|2.2
+
|'''2.2'''
 
|Zwraca zaokrąglona liczbe.
 
|Zwraca zaokrąglona liczbe.
|round(3.54) = 4
+
|<code>round(3.54) = 4</code>
round(3.21) = 3  
+
<code>round(3.21) = 3</code>
 
|-
 
|-
|sqrt(number)
+
|<code>sqrt(number)</code>
|2.2
+
|'''2.2'''
 
|Zwraca pierwiastek kwadratowy podanej liczby
 
|Zwraca pierwiastek kwadratowy podanej liczby
|sqrt(4) = 2
+
|<code>sqrt(4) = 2</code>
sqrt(25) = 5
+
<code>sqrt(25) = 5</code>
  
sqrt(2) = 1.4142  
+
<code>sqrt(2) = 1.4142</code>
 
|-
 
|-
|sum(numbers)
+
|<code>sum(numbers)</code>
|2.2
+
|'''2.2'''
 
|Zwraca sume podanych liczb.
 
|Zwraca sume podanych liczb.
|sum(1, 5, 6) = 12
+
|<code>sum(1, 5, 6) = 12</code>
sum(1, 1, 1) = 3
+
<code>sum(1, 1, 1) = 3</code>
 
|-
 
|-
|world(string)
+
|<code>world(string)</code>
|2.2
+
|'''2.2'''
 
|Zwraca świat o podanej nazwie
 
|Zwraca świat o podanej nazwie
|set {_flat} to world("flat")
+
|<code>set {_flat} to world("flat")</code>
set {_nether} to world("world_nether")
+
<code>set {_nether} to world("world_nether")</code>
 
|-
 
|-
|date(year, month, day, hour=0, minute=0, second=0)
+
|<code>date(year, month, day, hour=0, minute=0, second=0)</code>
|2.2
+
|'''2.2'''
 
|Zwraca stworzoną date z podanych argumentów
 
|Zwraca stworzoną date z podanych argumentów
|date(2014, 10, 1) # 0:00, 1st October 2014
+
|<code>date(2014, 10, 1) # 0:00, 1st October 2014</code>
 
|}
 
|}
 
[[Kategoria:Skript]]
 
[[Kategoria:Skript]]

Wersja z 21:33, 28 paź 2019

Funkcje zostały dodane do Skripta w wersji deweloperskiej 2.2, a służą przede wszystkim do skrócenia kodu oraz jego wygładzenia. Skript posiada kilkanaście wbudowanych matematycznych funkcji, jednak gracz jest w stanie stworzyć funkcję zwracającą wartość lub jedynie wykonującą kod.
Funkcje mogą być przechowywane w każdym pliku skryptowym, niezależnie od jego położenia będzie on działał w każdym pliku.

Budowa

Pisanie funkcji należy rozpocząć od napisania function <nazwa funkcji>, następnie zdefiniowania nazw argumentów oraz ich typów.

Funkcja zwracająca wartość
Wzór
Nazwa funkcji(Nazwa argumentu 1: Typ argumentu 1, Nazwa argumentu 2: Typ argumentu 2...) :: Typ zwracanej wartości:
    kod...
    return wartość
Przykład
points(p: player) :: number:
    return {points::%{_p}%}
Funkcja wykonująca kod
Wzór
Nazwa funkcji(Nazwa argumentu 1: Typ argumentu 1, Nazwa argumentu 2: Typ argumentu 2...):
    kod...
Przykład
addPoints(p: player, n: number):
    add {_n} to {points::%{_p}%}

W funkcjach można wykorzystywać jedynie zmienne lokalne (rozpoczynają się na _) {_p}, {_max}. Się biorą od nazw argumentów wypisanych na początku:

function Skript(gracz: player):
    send "Ty napewno piszesz skrypty" to {_gracz}

Funkcje zwracające wartość

W tej funkcji oprócz zdefiniowania nazw i typów argumentów dodatkowo należy zdefiniować typ zwracanej wartości, np. function Prawda(gracz: player) :: boolean: Wartość można zwrócić używając return <wartość>, np. boolean return true

function Prawda(gracz: player) :: boolean:
    if {_gracz}'s inventory contains 64 diamonds:
        return true
    else:
        return false

Wybrane funkcje

Liste wbudowanych wszystkich funkcji znajdziecie tutaj.

Najprzydatniejsze wbudowane funkcje:
Nazwa i argumenty Wydanie skripta Opis Przykłady / Zwracana wartość
location(x, y, z, "Nazwa świata"=event-world, yaw=0, pitch=0 2.2 Zwraca lokalizacje. teleport player to location(10, 50, 12)

set {_l} to location(10, 100, 52, "world", 90, 90)

mod(number, number) 2.2 Zwraca reszte z dzielenia set {_x} to mod(1, 3)
floor(number) 2.2 Zwraca liczbe zaokrągloną w dół. floor(5.99) = 5

floor(3.12) = 3

max(numbers) 2.2 Zwraca największą z podanych liczb. max(1, 2, 3, 4, 5) = 5

max(0, 4, 6, 3, 2) = 6

min(numbers) 2.2 Zwraca najmniejszą z podanych liczb. min(0, 2, 5, 6, 6) = 0

min(9, 2, 5, 8, 4) = 2

product(numbers) 2.2 Zwraca iloczyn podanych liczb. product(1, 7, 2, 2) = 28

product(6, 3, 5, 6) = 540

round(number) 2.2 Zwraca zaokrąglona liczbe. round(3.54) = 4

round(3.21) = 3

sqrt(number) 2.2 Zwraca pierwiastek kwadratowy podanej liczby sqrt(4) = 2

sqrt(25) = 5

sqrt(2) = 1.4142

sum(numbers) 2.2 Zwraca sume podanych liczb. sum(1, 5, 6) = 12

sum(1, 1, 1) = 3

world(string) 2.2 Zwraca świat o podanej nazwie set {_flat} to world("flat")

set {_nether} to world("world_nether")

date(year, month, day, hour=0, minute=0, second=0) 2.2 Zwraca stworzoną date z podanych argumentów date(2014, 10, 1) # 0:00, 1st October 2014