- Katılım
- 14 Haziran 2016
- Mesajlar
- 998
- Elmaslar
- 745
- Puanlar
- 15.070
- Minecraft
- SimitSu
Değişkenler | Veri
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
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}%"
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
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
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::*}%"
Eğer ki:
Kod:
send "%{blokKoyanlar::3}%"
-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::*}
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
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ı"
-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
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
*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.
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: