Sol Reklam

Rehber Skript'te değişkenler

Durum
Mesaj gönderimine kapalı.

MoreReal

Bir Kömür Göründü Kaptanım!
Katılım
19 Haziran 2018
Mesajlar
120
Elmaslar
81
Puanlar
8.970
Yaş
22
Merhabalar, bu konuda sizlere Skript eklentisi için değişkenleri anlatacağım. Konu kesinlikle eleştiriye açıktır eğer konuyu biliyorsanız fikirlerinizi belirtmenizi rica ediyorum.

Değişkenlerin İngilizce ismi Variable'dır. Değişkenler plugins>skript>variables dosyasında kayıtlı tutulurlar ve süslü parantez arasında adlandırılırlar örneğin {Deneme} gibi.. Değişkenleri farklı tiplerde tutabilirsiniz. Bir değişkenin tipini değiştirebilirsiniz şimdi değişken tiplerine geçiyoruz.


En sık kullanılan değişken tipleri

Date: Tarih tipi
Number: Sayı tipi
Text: Yazı tipi
Player: Çervim içi oyuncu tipi
Offline Player: Oyuncu tipi
Color: Renk tipi
Money: Para tipi (Para birimiyle beraber)
Item: Eşya tipi
Location: Yer, koordinat tipi
Boolean: Olumlu/Olumsuz belirteç tipi
Entity: Varlık tipi
Object: Tüm tipler (Bir koşulda(if) tüm tipleri kabul eder.)

Tüm tipleri burada göstermediğimi unutmayın. Şimdi gerçekten değişkenlere başlıyoruz. sıkılmayın!



Değişken işlemleri

Deneme değişkenine merhaba deyin! {Deneme} bu değişkeni henüz tanımlamadık. Olduğu yerde duruyor hiçbir işlevi yok. Şimdi onunla biraz oynayalım.
Bu değişken henüz tanımlanmadığı için her türlü tipi hemen kabul edecek. Çünkü tanımlanmak istiyor :D

Kod:
add 10 to {Deneme}
Burada {Deneme} değişkenine 10 artırdık. Bu işlem sadece Number tipi için geçerli ama bu değişken tanımsız olduğundan dolayı sayı tipine geçti. Dediğim gibi, tanımsız olduğu için her tipi hemen kabul ediyor. Şu anda bu değişken Number tipinde!

Kod:
set {Variable} to "Bu bir yazı olduğundan tırnak içine yazıldı"
Buradaki değişken artık Text tipine geçti zaten bir tipi yoktu onu daha tanımlamamıştık. Şimdi bu değişken üzerinde toplama yapmayı deneyelim.

Kod:
add 10 to {Variable}
Eğer denediyseniz bu işlemin olmadığını göreceksiniz. Çünkü artık bu değişkenin bir tipi var ve dört işlemi desteklemeyen bir tipte. Bu kod hata vermez ama işlemi de yapamayacağını bilmeniz gerekiyor.

Not: UTF-8 kullanmıyorsanız değişken üstünde Ü,Ğ,İ,Ç ve Ö gibi ingilizcenin desteklemediği harfler kullanmanızı tavsiye etmiyorum.

Şimdi değişkenlerin ne işe yaradığını anlamanız için bir örnek gösterelim. Sonra matematik dersinde ki "Hocam bunlar ne işimize yarayacak? Allah aşkına söyleyin." gibi olsun istemem :D.

Kod:
command /ElimdekiEşyayıKaydet:
    trigger:
        set {esya} to player's tool
        send "Esyaniz basariyla kaydedildi."
Burada elimizdeki eşyayı(Player's tool) {esya} değişkenine kaydettik. Buradaki değişken({esya}) Item tipinde. Şimdi o eşyayı bize vermesini isteyelim!

Kod:
command /EsyamiVer:
    trigger:
        give {esya} to player
        send "Esyaniz basariyla verildi."
Bu kod ile eşyanızı kendinize verebilirsiniz ama siz yine de farenin orta tuşunu kullanın.

Çoklu değişkenler(Liste)

Çoklu değişkenlere bir örnek verelim {liste::*} bu bir değişken ama içerisinde pek çok değişken var ::* kısmı onun bir Çoklu değişken olduğunu ve Başka değişkenleri temsil ettiğini gösteriyor. {liste::deneme} bu bir tekil değişken. Başta öğrendiğimizi hatırlayın {Deneme}=10 ve {liste::deneme}=10 farklı ama aynı işlevi görebilecek değişkenler yani sırf içinde :: var diye kafanız karışmasın.

Eğer tanımlanmışsa {liste::*} değişkeninin içerisinde {liste::*} olabilir. * yerine her türlü yazı biçimi(Her şey) getirilebilir.

Çoklu değişkenleri toplu halde tutarsınız yani bir listeyi döngüye aldığınızda içerisindeki değişkenleri de döngüye(loop) alırken işiniz kolaylaşacaktır.


Bir değişkeni döngüye almak
Tekil bir değişkeni döngüye alamazsınız. Zaten döngüye neden alasınız ki? çok miktarda olan verileri ayırmak için döngü kullanırız. Bu yüzden {degisken::deneme} veya {isim} gibi tekil yani bir değişken yerine bir veriyi temsil eden değişkenleri döngüye alamazsınız. {degisken::*} ise bir Çoklu değişkendir ve başka değişkenleri temsil eder içerisinde başka değişkenler vardır. Şimdi döngüye aldığımızda olanları gözlemleyelim.


Bir listeyi döngüye aldığınızda 2 şey elde edilir loop-index ve loop-value. set {kills::Slayer} to 300 set {kills::Killer} to 12650 her iki efektin çalıştırıldığını ve {kills::*}'in içerisinde {kills::Slayer} ile {kills::Killer}'ın mevcut olduğunu varsayalım.

Kod:
loop {kills::*}:
    send "%loop-value%"
    send "%loop-index%"
Her zaman döngüde olduğu gibi tek tek işlem yapacak.


Kod:
Kills::*
    kills::Slayer = 300
    kills::Killer = 12650

Döngüye alınan liste
    Döngüye alınan liste::Döngüde olan değişken = Döngüde olan değişkenin değeri
    Döngüye alınan liste::Döngüde olan değişken = Döngüde olan değişkenin değeri

Looping list
    looping list::loop-index = loop-value
    looping list::loop-index = loop-value
Tam olarak bu gerçekleşiyor. value değer. index değişken ismi. bunlarla istediğinizi yapabilirsiniz.

{items::*} değişkenine farklı eşyalar kaydettiniz ve aşağıdaki kodu kullandınız.
Kod:
set {sayi} to 0  #değişkeni 0 yap
loop {item::*}: # listeyi döngüye al
    if loop-index is diamond sword: # eğer döngü halindeki indeks elmas kılıçsa
        add 1 to {sayi} # değişkene 1 ekle
send "listede %{sayi}% adet elmas kılıç var." # oyuncuya mesaj gönder.

her elmas kılıç bulduğunda {sayi} değişkenine 1 ekler böylece kaç tane elmas kılıç olduğunu anlayabiliriz.


Kod:
command /bedwars [<text>] [<text>]:
    trigger:
        if arg 1 is "create":
            if arg 2 is set:
                if {BedWars::arenaList::%arg 2%} is set:
                    set {BedWars::arenaList::%arg 2%} to true
                else:
                    send "Bu isimde bir arena zaten oluşturulmuş."
            else:
                send "Bir arena ismi belirlemelisin."
Özellikle büyük skriptlerde liste değişkenleri çok iyi bilmeniz gerekiyor. Kodu iyice anladıysanız şu komutları kullanalım:
/bedwars create Arena1
/bedwars create Arena2
/bedwars create ÖzelArena
/bedwars create DenemeArena

Kod:
BedWars:
    arenaList:
        Arena1=Hazır
        Arena2=Hazır
        ÖzelArena=Hazır
        DenemeArena=Hazır
Değişkenler bu şekilde gözükür. (Anlamanız için bu şekilde gösterdim. Bu değişkenler iç içedir. {bedwars::*} değişkeni hepsini kapsar ve bu değişkeni silerseniz tüm değişkenler silinir.)


Kod:
command /bedwars [<text>] [<text>]:
    trigger:
        if arg 1 is "create":
            if arg 2 is set:
                if {BedWars::arenaList::%arg 2%} is set:
                    set {BedWars::arenaList::%arg 2%} to true
                else:
                    send "Bu isimde bir arena zaten oluşturulmuş."
            else:
                send "Bir arena ismi belirlemelisin."
        if arg 1 is "join":
            if arg 2 is set:
                {BedWars::arenaList::%arg 2%} is set:
                    add player to {BedWars::arenaPlayers::%arg 2%::*}
                    send "Arenaya katıldın"
                else:
                    send "Bu isimde bir arena yok."
            else:
                send "Bir arena ismi belirtmelisin."
Şimdi bu halinde de şu komutları kullanalım. (iki farklı oyuncu kullanıyor isimleri, XKillerX ve ProHunter)
/bedwars join Arena1
Kod:
BedWars:
    arenaList:
        Arena1=Hazır
        Arena2=Hazır
        ÖzelArena=Hazır
        DenemeArena=Hazır
    arenaPlayers:
        Arena1:
            1=XKillerX
            2=ProHunter
        Arena2:
        ÖzelArena:
        DenemeArena:
Burada da değişkenler bu şekilde gözükecektir. add ile bir liste değişkene element(herhangi bir şey) eklediğinizde. index'i 1 yapar eğer 1 varsa 2. 2 varsa 3... bu şekilde sonsuza kadar gider.


Yerel değişkenler(Local variable)
Bir kod tamamlandığında otomatik olarak silinen değişkenlerdir. Yerel değişken oluşturmak için isimlerinin başlarına "_" eklemeniz yeterli. örneğin {_n} bu benim en çok kullandığım değişken ismi.


Kod:
on join: #oyuncu katıldığında.
    set {_n} to 1 #değişkeni 1 yap.
    send "%{_n}%" #değişkeni oyuncuya gönder.
    #Değişken silindi.
 
Son düzenleme:
Durum
Mesaj gönderimine kapalı.
Neden altınlarını Discord sunucumuzda kazmıyorsun? TIKLA VE KATIL!
Yukarı