Mr_Obliviate
Play.BlokDunyasi.Net
- Mesajlar
- 1,002
- En iyi cevaplar
- 18
- Beğeniler
- 749
- Puanları
- 1,480
- Ruh hali
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
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!
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.
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 .
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!
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
Eğer tanımlanmışsa
Ç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
Çü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.
Unutmayı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
Bir listeyi döngüye aldığınızda 2 şey elde edilir loop-index ve loop-value.
Her zaman döngüde olduğu gibi tek tek işlem yapacak.
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.
her elmas kılıç bulduğunda {sayi} değişkenine 1 ekler böylece kaç tane elmas kılıç olduğunu anlayabiliriz.
Özellikle büyük skriptlerde liste değişkenleri çok iyi bilmeniz gerekiyor. Kodu iyice anladıysanız şu komutları kullanalım:
Değişkenler bu şekilde gözükür. (Anlamanız için bu şekilde gösterdim. Bu değişkenler iç içedir.
Şimdi bu halinde de şu komutları kullanalım. (iki farklı oyuncu kullanıyor isimleri, XKillerX ve ProHunter)
Burada da değişkenler bu şekilde gözükecektir.
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
Skript'i daha iyi öğrenmek için Discord - Skript Topluluğu Discord grubuna gelebilirsiniz.
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
Kod:
add 10 to {Deneme}
Kod:
set {Variable} to "Bu bir yazı olduğundan tırnak içine yazıldı"
Kod:
add 10 to {Variable}
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 .
Kod:
command /ElimdekiEşyayıKaydet:
trigger:
set {esya} to player's tool
send "Esyaniz basariyla kaydedildi."
Kod:
command /EsyamiVer:
trigger:
give {esya} to player
send "Esyaniz basariyla verildi."
Ç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. Oldukça alternatifler ve yapmanız gereken tek şey o "." işareti yerine tane "::" koymak. Bu hatayı yapan 1 trilyon 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%"
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
{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-value is diamond sword: # eğer döngü'deki değer elmas kılıç ise
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."
/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
{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."
/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:
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 yerel 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.
Skript'i daha iyi öğrenmek için Discord - Skript Topluluğu Discord grubuna gelebilirsiniz.
Son düzenleme: