Otwórz menu główne

Funkcje: Różnice pomiędzy wersjami

(dodanie funkcji mod)
 
(Nie pokazano 3 wersji utworzonych przez 2 użytkowników)
Linia 1: Linia 1:
Skript posiada wbudowane funkcje, ale możemy też tworzyć swoje funkcje, które zwracają jakąś wartość albo takie, które nie zwracają żadnej wartości.
+
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.<br>
 +
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 <code>function <nazwa funkcji></code>, następnie zdefiniowania nazw argumentów oraz ich typów.
 +
 
 
{| class="wikitable"
 
{| class="wikitable"
 
!
 
!
!Funkcja która wykonuje kod i zwraca jakąś wartość.
+
!Funkcja zwracająca wartość
 
|-
 
|-
 
!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 [<= Domyślna wartość argumentu 1>], Nazwa argumentu 2: Typ argumentu 2 [<= Domyślna wartość 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>
+
add(a: integer = 5, b: integer) :: number:
 +
    return a + b
 +
</pre>
 
|-
 
|-
 
!
 
!
!Funkcja która wykonuje kod ale nic nie zwraca.
+
!Funkcja wykonująca kod
 
|-
 
|-
 
!'''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 [<= Domyślna wartość argumentu 1>], Nazwa argumentu 2: Typ argumentu 2 [<= Domyślna wartość argumentu 2>]...):
 +
    kod...
 +
</pre>
 
|-
 
|-
 
!'''Przykład'''
 
!'''Przykład'''
|<code>addPoints(p: player, n: number):</code>
+
|<pre>
<code>add {_n} to {points::%{_p}%}</code>
+
kill(e: entity):
 +
    kill {_e}
 +
</pre>
 
|}
 
|}
  
 +
W funkcjach można wykorzystywać jedynie zmienne lokalne (rozpoczynają się na '''_''') <code>{_p}, {_max}</code>. Się biorą od nazw argumentów wypisanych na początku: <pre>function Skript(gracz: player):
 +
    send "Ty napewno piszesz skrypty" to {_gracz}</pre>
 +
 +
===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. <code>function Prawda(gracz: player) :: '''boolean''':</code>
 +
Wartość można zwrócić używając ''return <wartość>'', np. boolean <code>return true</code>
 +
 +
<pre>function Prawda(gracz: player) :: boolean:
 +
    if {_gracz}'s inventory contains 64 diamonds:
 +
        return true
 +
    else:
 +
        return false</pre>
 +
 +
==Wybrane funkcje==
  
 
Liste wbudowanych wszystkich funkcji znajdziecie [https://skriptlang.github.io/Skript/functions.html tutaj.]
 
Liste wbudowanych wszystkich funkcji znajdziecie [https://skriptlang.github.io/Skript/functions.html tutaj.]
Linia 36: 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]]

Aktualna wersja na dzień 15:55, 26 sie 2020

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 [<= Domyślna wartość argumentu 1>], Nazwa argumentu 2: Typ argumentu 2 [<= Domyślna wartość argumentu 2>]...) :: Typ zwracanej wartości:
    kod...
    return wartość
Przykład
add(a: integer = 5, b: integer) :: number:
    return a + b
Funkcja wykonująca kod
Wzór
Nazwa funkcji(Nazwa argumentu 1: Typ argumentu 1 [<= Domyślna wartość argumentu 1>], Nazwa argumentu 2: Typ argumentu 2 [<= Domyślna wartość argumentu 2>]...):
    kod...
Przykład
kill(e: entity):
    kill {_e}

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