Sol Reklam

Rehber Değişkenler - Variables | Skript'te Bilinmesi Gereken şeyler | Bölüm #2

Durum
Mesaj gönderimine kapalı.

kingOf0

"~SimitSu"

Discord:

kingOf0!#4055

Katılım
14 Haziran 2016
Mesajlar
998
Elmaslar
745
Puanlar
15.070
Yer
getPlayer("SimitSu").getLocation()
Minecraft
SimitSu
M.header2 .png

Değişkenler | Veri

data-1.jpg

Eğer, "Değişken nedir?" sorusuna cevap verebiliyorsanız, biraz da olsa veri türleri ve nasıl çalıştıkları hakkında bilginiz var demektir. Peki biliyormusunuz nedir değişkenler?

Değişkenler adı üstünde, değişken verilerdir, siz bu verileri istediğiniz gibi değiştirip düzenleyebilirsiniz.*
İngilizce "Var, Variable" olarak'ta bilinmektedir.


Peki, ne işimize yarar?
Örneğin, bir takvim yapacaksınız bu takvimde bu verileri tutabilirsiniz veya Text** türünde bir veri ile bir kelime ve sözcük barındırıp sürekli bu veriden bu kelimeleri elde edebilir, bir değeri bir değere atayarak o değeri kaydedebilir sonrasında bu değeri tekrar kaydettiğiniz yerden okutabilirsiniz.

Ben @kingOf0, siz Mc-Tr sakinlerine bu konuda bunu anlatmaya çalıştım, iyi forumlar!

Skript'te Değişkenler | Variables
1539183393058.png


Skriptte, değişkenler bir veriyi kaydetmenize yarar.
Her tür skriptte variable kullanmak işinize kolaylık sağlayabilir, bu variable lar expression lara benzerler fakat biraz daha farklılar.

Değişkenler, <KümeParantezi>[_]DeğişkeninAdı<KümeParantezi> şeklinde kullanılırlar, Örneğin:

Kod:
set {variable} to 1

Yukarıdaki kod'da ki gibi bir değişkeni bir değere atayabilirsiniz. Skriptte {variable} değişkenini 1 değerine atadık. 1 bir sayı olduğundan, değişkenimiz Int*** türünde bir değişken olarak skript klasöründeki variables.csv dosyasına kaydedildi.

Kod:
log "%{variable}%"
-Konsola metin göndermek için Log %string% kullanılır.

Bir değişkeni eğer "" içinde kullanacaksanız o değişkeni %% içine almalısınız(yukarıda olduğu gibi).

Eğer değişkeniniz Text türünde ise "" ve %% kullanmadan aşşağıdaki gibi kullanabiliriz.

Kod:
log {variable}

Fakat, bazı addonlar*+ bunu desteklememektedir.

Önceden kaydedilmiş veri türleri
1539183268838.png

Kod:
variables:
    {int} = 0

Bu şekilde bir veriyi kaydedebilirsiniz, böylelikle eğer o veri daha önce kayıt edilmemiş ise kaydedilecektir ve null, <none> döndürmeyecektir.

-Bu veri tipi genelde kodların en üstünde bulunmaktadır, aksi taktirde verilerinizi tanıyamaz.
Kod:
variables:
    {int} = 0
  
on join:
    add 1 to {int}#int'e bir ekle
    send "Şuan %{int}% kişi online"
  
on quit:
    remove 1 from {int}#int'ten 1 azalt
şeklinde kullanabiliriz.

Eğer bir veri kaydedilmemiş ise null, oyun içinde <none> olarak gözükecektir.Bunu önmelek için bu yöntem kullanılmaktadır fakat, ben bu yöntemi hiç kullanmam.


Variable Türleri
skript klasöründeki variables.csv dosyasına kaydedilirler, bu dosyayı el ile değiştirmeniz önerilmez. Veri kaybı yaşayabilirsiniz.

Normal
Klasik, bildiğimiz değişkenlerdir, set kullanılarak bir değere atanıp, delete ile silinebilmektedirler. aynı anda en fazla 1 veri tutabilirler.
Bu veri tiplerine tüm skript dosyalarınızdan ulaşabilirsiniz.

Lokal
Bu veri tipleri, yazıldığı skript'in yazıldığı skript parçacığına(event'ine vb) aittir, bu veri tipleri asla kaydedilmezler, kod parçacığında ilk kullanıldıklarında hafızaya alınır, işlem görür ve kod parçacığının sonuna gelindiğinde kaydedilmeden silinirler.

bu veri tiplerinin başında _ olmaktadır, Örneğin {_var} değişkeni bir lokal veridir.

Kod:
on place:#blok yerleştirildiğinde:
    set {_loc} to event-block's location#loc adındaki lokal veriyi koyulan  bloğun lokasyonuna eşitle
    send "Lokasyon: %{_loc}% "#Lokasyon : bloğun lokasyonu şeklinde mesaj yolla
    send "Blok: %event-block%" #oyuncuya bloğu yolla(türünü, örn: dirt)
    add event-player to {blokKoyanlar::*} #oyuncunun adını {blokKoyanlar::*}'a ekle, bunu birazdan anlatacağım
    log "%player% - Lokasyon: %{_loc}% Blok: %event-block%" #bunları log dosyasına kaydet.

Liste
Liste türündeki veri tipleri benim en çok kullandıklarımdır, diğer veri tiplerinden daha az yer kapladıkları ve kolay işlem görülüp, temizlendikleri için daha performanslıdırlar ki doğru kullanılırlarsa. Bu veri tiplerinde :: , loop-value, loop-player gibi kavramlar'a çok rastlarsınız. Birden fazla değer tutabilirler.

{liste::*} değerindeki yıldız işareti(*) olabilecek tüm senaryoları, tüm içeriğini demektir. yani {liste::*} değeri bize {liste::*} değerine kaydedilmiş tüm değerleri döndürecektir.

Örneğin:
Kod:
on place:
    add event-player to {blokKoyanlar::*}

yukarıdaki örnekte, blok koyan oyuncu yu(adını) {blokKoyanlar::*} değişkenine eklemiş olduk,
eğer:
Kod:
send "%{blokKoyanlar::*}%"
kodunu kullanırsak, bize şimdiye kadar blok yerleştirmiş oyuncuların adını yollayacaktır.

Eğer ki:
Kod:
send "%{blokKoyanlar::3}%"
kodunu kullanırsak, bize şidmiye kadar blok koymuş 3. oyuncuyu yollayacaktır.
-Bu kısıma yazılan sayılar 1 den başlamaktadır.
-Eğer belirtilen sayıda bir değer yoksa <none> döndürür.

Bu kısmı, bir otel gibi düşünebilirsiniz, eğer oda varsa o odanın anahtarını gönderecek yoksa <none> gönderecektir.
Kod:
set {blokKoyanlar::253} to "Burası 253. oda anahtarı ise şu an okuduğun mesajdır."

kodu ile belirli bir odayı belirli bir anahtar(değer)a eşitleye(kaydede)bilirsiniz


ve otelden atmak için ise
Kod:
remove player from {kayitliOyuncular::*}
-Sadece örnektir.

kodunu kullanabiliriz, bu kodu kullandığımızda {kayitliOyuncular::*} değerindeki Oyuncuyu(player verisini, eventteki oyuncuyu) silecektir
-Eğer birden fazla kez oyuncu bu değere kaydedilmişse, oda numarası en düşük olanı silecektir.

Liste verisinin kullanımı çoktur, bu yüzden en sevdiğimdir, daha fazla anlatırsam konu aşırı uzayacağı için burada bırakıyorum.

Options
Bu veriler değişmezler, sabittirler, iç içe kullanılamazlar ve %% içine alınmazlar ne olursa olsun. Bu veri tipleri genelde Türkçeleştirme ve basit ayar işlevleri için kullanılmaktadır.

-Bu veri tipi genelde kodların en üstünde bulunmaktadır, aksi taktirde verilerinizi tanıyamaz.
örneğin:
Kod:
options:
    p: Mc-Tr >> #prefix'in kısaltılmışıdır, keyfi yere p yazdım.
    userJoined: %player% adlı oyuncu sunucuya giriş yaptı. #Eğer %player% gibi değişkenler kullanıldığı yer player destekliyorsa çalışacak aksi taktirde <none> döndürecektir.
    loop-message: Şuan %loop-player% looplanıyor #doğru yerde kullanılmazsa <none> döndürür.
    int: 1

command /a:
    trigger:
        send "{@p} >> {@int}" #bu veri tipi 1'e eşit yani bir sayıya, yani bir TEXT değil bu yüzden bunu "" içine almalıyız. Optionslar %% içine girmezler.
   
on join:
    send "{@p} {@userJoined}" to all players
   
every 10 second:
    loop all players:
        send {@loop-message} #eğer bu veri tipi TEXT olmasaydı hata verirdi, çünkü "" içine almadık
-Sadece örnek amaçlıdır.

Variable ile Expression ve Type kullanımı
Örneğin, player's display name adındaki expression bize oyuncunun adını renkleri vs ile vermektedir eğer biz,

Kod:
add player's display name to {kayitliAdlar::*}

Yukarıdaki kod'da Liste türünde bir değişken kullandık, bu değişkene oyuncunun adını eklemesini söyledik
-Sadece örnek amaçlıdır.

Kod:
options:
    prefix: Mc-Tr
command /parti <text> [<player>]:
    trigger:
        if arg-1 is "kur":
            add player to {parti::%player%::uyeler::*}
            set {aktifParti::%player%} to true
           
        else if arg-1 is "liste":
            loop size of {parti::%player%::uyeler::*} times:
                send "&%loop-value% &7→ &8 %{parti::%player%::uyeler::%loop-value%}%"
        else if arg-1 is "ekle":
            if arg-2 is set:
                add arg-2 to {parti::%player%::uyeler::*}  
            else:
                send "{@prefix} Oyuncu bulunamadı"
-Skriptte bahsedilen parti takım arkadaşı mantığında düşünülüp yazılmıştır. Siyasi parti ile alakası yoktur.
-Sadece örnektir, kullanım amaçlı değildir.

Yukarıdaki şekildeki gibi expressionlar kullanılabilir.


Örnek
Kod:
on block break:
    set {blok::%event-block%.durum} to false
   
on block place:
    set {blok::%event-block%.durum} to true
Koyulan blokları aktif, kırılanları ise deaktif yapmaktadır, bu skriptteki Liste türündeki blok değişkeninde Event-block expression'u kullanılmıştır.

Kod:
command /a:
    trigger:
        set {bilgi::%player's location%::isim} to player
        set {bilgi::%player's location%::elindekiEsya} to player's tool
        set {bilgi::%player's location%::renkliIsim} to player's display name
       
command /b:
    trigger:
        send "%{bilgi::%player's location%::*}%" to player
Bu skriptte ise, a komutu ile oyuncunun birkaç bilgisini kaydedip, b komutu ile o bilgiyi yollamaktadır.


*Bazı istisnalar hariç
**Text: Yazı, Metin
***Int: sayı türündeki bir değerdir, 0,1,2,3,4,5,6 gibi Doğal Sayıları içerir.
*+Addon: Skript plugini her türlü desteği bize sunamadığından bazı gerekli ek pluginlere denir.

Bu gönderinin: Lütfen , başka bir foruma veyahut bu forumda isim belirtilmeden kopyalalanması yasaktır, bu konuya verdiğim emeği hiçe saymayınız.

Z - yeni_logo - Bottom.png

Bu konuda sizlere elimden geldiğince bildiklerimi aktarmaya çalıştım, umarım doğru bir üslub ile anlaşılabilir bir biçimde anlatabilmişimdir.
Bu konu: 16:01 saatinde yazılmaya başlanmış olup, 18:05 tarihinde bitmiştir.
 
Son düzenleme:

Alpho320

powered by Fabulous.

Discord:

Alpho320#9202

Katılım
20 Haziran 2018
Mesajlar
1.396
Elmaslar
1.285
Puanlar
17.175
Yer
Istanbul
Minecraft
Alpho320
Görüp görebileceğiniz en iyi skript rehberlerinden biri olmuş.EE kimin kankası.<3
 

Volume

Skripter & BackEnd Coder
Katılım
14 Ağustos 2018
Mesajlar
225
Elmaslar
75
Puanlar
8.975
Yaş
30
Minecraft
VolumeGG
Eline Sağlık ! İyi bir rehber olmuş.
 

MrBerkayWinner

Demir Cevheri Gibiyim
Katılım
6 Eylül 2018
Mesajlar
188
Elmaslar
74
Puanlar
6.470
Yer
Ankara
Minecraft
2kwk
Güzel olmuş. Bilmeyenlere göre ideal..
 
Durum
Mesaj gönderimine kapalı.
Neden altınlarını Discord sunucumuzda kazmıyorsun? TIKLA VE KATIL!
Yukarı