Bu konu süresiz olarak sabitlenmiş.

Blueyescat

Bedrock Kaşifi
Mesajlar
1,656
En iyi cevaplar
0
Beğeniler
1,177
Puanları
3,120
Ruh hali
Fonksiyon Nedir?
Fonksiyonun diğer anlamı işlev yani bir şeyin yaptığı iştir. Skript'te de aynen böyledir. Bir işlemin birden çok kez kullanılması gerektiğinde kodu uzatmak yerine o işlemin başka yerlerden birçok kere çağrılmasını sağlar. Ayrıca duruma göre kodun güzel gözükmesini sağlar, sistemin karışıklılığını azaltır, performansı arttırır.

Fonksiyon Oluşturma
Fonksiyon oluşturma kodları normal bir olay (event) gibi yazılabilir.
Fonksiyon oluşturmak için aşağıdaki kod kalıbı kullanılabilir. Türkçe kısımlar değiştirilebilir.
function fonksiyonAdı(parametreAdı: tip = varsayılanDeğer) :: dönüşTipi:
  • Parametreler virgüller ile çoğaltılabilir.
  • İstenirse hiç parametre girilmez.
  • = tip girilecek parametrenin zorunlu tipini belirler.
    • Bütün tipleri kabul etmek için object tipi kullanılabilir.
    • Eğer parametreye liste girilmesi istenirse, tip çoğullaştırılabilir. (number -> numbers, entity -> entities gibi.)
  • = varsayılanDeğer eğer fonksiyon çağrılırken bu parametre girilmezse varsayılan olarak kullanılacak değeri belirler. Zorunlu bir parametre girilmezse script yüklenirken hata verir.
    • İsteğe bağlı.
  • :: dönüşTipi eğer fonksiyon bir değer döndürecek ise kullanılır. Bunun yerine dönüş tipi girilir (number, text, object, item gibi).
    • Eğer bir liste döndürülmesi istenirse, tip çoğullaştırılabilir. (object -> objects, item -> items gibi.)
    • İsteğe bağlı.
Parametreler fonksiyon içinde yerel değişkenler olarak alınır. Örneğin değişkenAdı parametresi için {_değişkenAdı} gibi.
Değer döndürmek için return %objeler% etkisi kullanılır. Bu etki kodu stop etkisi kullanmış gibi durdurur.

Fonksiyon Çağırma
Fonksiyon çağırma kodları normal bir etki (effect) olarak yazılabilir. Eğer fonksiyon bir değer döndürebiliyorsa, bir ifade (expression) olarak da yazılabilir. Bir fonksiyon çağrıldığında, fonksiyon oluşturma kodunun içindeki kodlar çalıştırılır.

fonksiyonAdı(parametreler)
  • Parametreler virgüller ile çoğaltılabilir.
  • Eğer bir parametreye liste girilecekse, bu listenin fonksiyon parametreleriyle karışmaması için parantez içine alınması gerekir.
    Örnek:
    fonksiyonAdı(parametre1, (değer1, değer2 and değer3), parametre3) # 3 parametreli bir fonksiyon
    Tabi eğer liste bir değişkenden veya bir ifadeden oluşuyorsa buna gerek olmaz. {liste::*} veya all players direkt olarak parametreye yazılabilir.

Örnekler
JSON:
function sohbetTemizle(p: player):
    loop 100 times:
        send "" to {_p}
Bu fonksiyon 1. parametreye girilen oyuncuyu {_p} değişkenine atar.
2. satır içindeki kod 100 kere çalışacak bir döngü oluşturur.
Son satır {_p} değişkeninde ki oyuncuya boş bir mesaj gönderir.

Kullanım
Less:
command /sohbetimiTemizle:
    trigger:
        sohbetTemizle(player)
sohbetTemizle fonksiyonunu 1. parametreye komutu yazan oyuncuyu girerek çalıştırır.
SQL:
function mesajGönder(oyuncular: players, mesaj: text, sayı: number = 1):
    loop {_sayı} times:
        send {_mesaj} to {_oyuncular::*}
Bu fonksiyon 1. parametreye girilen oyunculara 2. parametrede ki yazıyı 3. parametrede ki sayı kadar gönderir.
Eğer 3. parametrede girilmemiş ise {_sayı} değişkeni otomatik olarak 1 yapılır.

Kullanımlar
SQL:
mesajGönder(player, "mesaj", 10) #10 Kere

mesajGönder(all players, "mesaj") #1 Kere
Java:
function toplam(sayilar: numbers) :: number:
    broadcast "topla fonksiyonu çalıştırıldı"
    loop {_sayilar::*}:
        add loop-value to {_toplam}
    return {_toplam}
Bu fonksiyon 1. parametreye girilen sayı listesini döngüye alır ve döngüdeki her değeri {_toplam} değişkeninin üzerine ekler. Örneğin listede 1, 2 ve 3 sayıları varsa {_toplam} değişkenine önce 1, sonra 2 ve en son 3 eklenir. Sonuçta {_toplam} değişkeni 6 olur.

Kullanımlar
Ruby:
set {_sayıListesi::*} to 6, 3 and 9
set {_sonuç} to toplam({_sayıListesi::*})

if toplam(1, 6 and 9) is 16: # Fonksiyon zaten 1 parametreli olduğu için listenin parantez içine alınmasına gerek yok
    send "Doğru"

send "%toplam({_sayılar::*})%"
C-like:
function değişkenleriAyarla():
    set {değişkenler::1} to "değer"
    set {değişkenler::liste::2} to true
    set {değişkenler::3} to 3
Hiçbir parametresi olmayan bir fonksiyon oluşturur.

Kullanım
Ruby:
on load:
    değişkenleriAyarla() # Tabii ki load olayı zorunlu değil
Ruby:
function tersListe(liste: objects) :: objects:
    loop size of {_liste::*} times:
        set {_index} to size of {_liste::*} - loop-number - 1
        add {_liste::%{_index}%} to {_ters::*}
    return {_ters::*}
Bu fonksiyon 1. parametreye girilen listeyi ters çevirip geri döndürür. Örneğin 1, 2 ve 3 --> 3, 2 ve 1

Kullanım
Ruby:
set {_liste::*} to tersListe({_liste::*}) # {_liste::*} listesi ters çevrilmiş olur
Ruby:
function içeriyorMu(liste: objects, arama: object) :: boolean:
    loop {_liste::*}:
        if loop-value is {_arama}:
            return true
    return false
Bu fonksiyon 1. parametreye girilen liste 2. parametrede ki değeri içeriyor mu diye kontrol eder. İçeriyorsa true, içermiyorsa false döndürür.
return kodu durduracağı için üstteki return çalışmamış ise alttaki return çalışır, yani liste belirtilen şeyi içermiyordur ve false döndürülür.

Kullanımlar
Ruby:
if içeriyorMu(("a", "b" and "c"), "d") is true: # Fonksiyon 1 yazı listesi ve 1 yazı ile çağrılır
    send "Evet"
else:
    send "Hayır"

set {_liste::*} to "a", "b" and "c"
send "Kontrol: %içeriyorMu({_liste::*}, ""c"")%"

Varsayılan Fonksiyonlar
Skript varsayılan olarak birçok fonksiyon kaydeder. Bunların listesini, kalıplarını, açıklamalarını ve örneklerini burada bulabilirsiniz.


————————————————————————————————————————
Sorularınızı yorum yazarak sorabilirsiniz.

Discord Skript Topluluğu
 


Son düzenleme:

DonsuzT

Kızıltaş Madencisi
Mesajlar
566
En iyi cevaplar
0
Beğeniler
341
Puanları
590
Güzel ve yararlı bir konu olmuş.
 

Üst