bikral 1
bikral
ShadowFon 1
ShadowFon
D 1
delimuratt
PrimeAC 1
PrimeAC
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Best Studio 1
Best Studio
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

ßyMesMes

'Sıradışı Emekli Admin
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye
Fahri Üye
Paylaşım
Katılım
2 Ağu 2010
Konular
5,330
Mesajlar
24,645
Çözüm
54
Online süresi
1mo 20d
Reaksiyon Skoru
6,396
Altın Konu
425
Başarım Puanı
514
MmoLira
-2,509
DevLira
0
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Merhabalar, bu konuda sizlere Skript eklentisi için değişkenleri anlatacağım.Bu konunun aynısını başka forumlarda da paylaştı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.



Ş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::XXX} olabilir. XXX 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.


Neden çoklu değişkenler?
Çünkü çoklu değişkenler disk depolamayı daha düzenli yapar.
Çünkü çoklu değişkenler tek yerde depolandığından aynı anda birçok değişkeni kontrol edebilirsin. (Kısacası Loop kullanabilirsiniz ve bu çok önemli)
Çünkü çoklu değişkenlerle işiniz bittiğinde hepsini tek efekt ile silebilirsiniz delete {_variable::*}
Çünkü çoklu değişkenler adamdır.
Ayrıca çoklu değişkenlere bir şey kaydetmek de oldukça kolay çünkü normal değişkenlerden hiçbir farkı yok. (Kaydederken farklı bir efekt falan kullanmıyorsunuz demek istedim. set {SuperSystem::counter::%player%} to 1 gibi)

Unutmayın!
{Kills.%player%} yazınca bir şey değişmiyor. {Kills%player%}'dan hiçbir farkı yok.
{Kills::%player%} yazdığınızda tüm öldürme sayılarını {Kills::*} değişkeninde toplamış olursunuz ve döngüye alabilirsiniz. Mesela en çok kim öldürmüş diye merak ettiğinizde tüm öldürme sayılarını döngüye almanız gerekiyor. Burada bunu yapabilirsiniz fakat {Kills.%player%} yazınca hiçbir şey yapamazsınız sadece o değişkeni çekebilirsiniz. Hem alternatifler daha fazla oluyor hem de disk tasarrufu sağlıyor ve yapmanız gereken tek şey o "." işareti yerine 2 tane ":" koymak. Bu hatayı yapan Zirilyon tane kişi gördüm. Lütfen siz siz olun {Kills::%player%} yazın.

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.

Unutmayın!
Çoklu değişken kullanırken en çok yapılan hatalardan biri side her değişkeni aynı listeye almamak.
{Bedwars::arenas::*} listesine kaydetmek yerine {arenas::*} listesine kaydediyor halbuki tüm değişkenleri {Bedwars::*} değişkenine kaydetse daha çok disk tasarrufu yapacak.


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.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst