Skript ile ekonomi sistemi geliştirmek isteyenler için bu rehberimizde özel bir ekonomi sisteminin nasıl yapılacağını anlatıyor olacağız.
Skript, dünyası gereği pek çok şeye imkan veren bir eklenti. Kullanıcılar, bu eklentiyi kullanarak kendi kod dosyasını oluşturup derleme ile uğraşmadan hemen konsoldan çalıştırabiliyor. Bu bakımdan pratiklik sağlayan Skript, dünya üzerinde çeşitli Minecraft sunucularında kendine yer veriyor. Bu yazılımdan yararlanmak ve ekonomi sistemi geliştirmek isteyenler için bir rehber hazırladık.
Skript ile Ekonomi Sistemi Kodlama
Skript kullanarak özel bir ekonomi geliştirmek isterseniz yapmanız gereken ilk şey bir kod dosyası oluşturmak. Bunun için “economy.sk” gibi bir isimle dosyayı oluşturabilirsiniz. Dosyanın “plugins/skript/scripts” dizininde yer alması gerekiyor. Oluşturulan dosyayı açın ve aşağıdaki kodu girin:
on first join:
if {money::%player%} is not set:
add 1000 to {money::%player%}
on join:
if {money::%player%} is not set:
add 1000 to {money::%player%}
Bu kodlar, sunucuya oyuncu girdiğinde eğer para hesabı bulunmuyor ise ona para hesabı açar ve 1.000 birim para verir. Buna ek olarak şunu belirtelim ki ilk girişte para vermenin dışında normal girişte para vermenin sebebi kod dosyasının sonradan eklenmesi durumunda eski kullanıcıların sorunsuz para hesabına sahip olmasını sağlamak. Ayrıca hata oluşmaması için kodu koşul ile destekliyoruz.
command /Para:
trigger:
send “&6Bakiyeniz: &f%{money::%player%}%”
Bir diğer kod “/Para” komutu ekleme. Bu kod ile birlikte kullanıcı, kendi hesabındaki para miktarını öğrenebiliyor. Buradaki “&6” gibi değişkenler ise yazının biçimlendirilmiş bir formatta görünmesine olanak tanıyor. Örneğin kalın, altı çizili veya renkli yazmak mümkün olmakta.
Şimdi diğer kodlara geçelim. Bu sefer 2 fonksiyon ekleyeceğiz. Fonksiyonlar, daha az kod yazmak için kullanılması gereken sistemlerdir. Bir kullanıcıya para verme ve kullanıcıya fatura kesme fonksiyonu ekleyeceğiz. Para verme fonksiyonu, kullanıcıya para aktarımı yapar. Ayrıca bir de belge gösterir. Fatura fonksiyonu ise kullanıcıdan para alır ve makbuz gönderir.
function ParaVer(a: number, p: player, b: text):
add {_a} to {money::%{_p}%}
send “&bPara Ekleme Belgesi%nl%&f&l——-%nl%&eAçıklama: &f%{_b}%%nl%&eVerilen Tutar: &f%{_a}%%nl%&eToplam Bakiye: &f%{money::%{_p}%}%” to {_p}
function Fatura(a: number, p: player, b: text) :: text:
remove {_a} from {money::%{_p}%}
send “&bFatura Belgesi%nl%&f&l——-%nl%&eAçıklama: &f%{_b}%%nl%&eKesilen Tutar: &f%{_a}%%nl%&eKalan Bakiye: &f%{money::%{_p}%}%” to {_p}
Kodu incelediğimizde “ParaVer” fonksiyonunda kullanıcıya para verildiği ve bununla beraber açıklamaya ek olarak oyuncunun toplam bakiyesinin ne kadar olduğu yazılıyor. “Fatura” fonksiyonunda ise oyuncudan para alınıyor. Ardından açıklamaya ek olarak kalan para ekrana yazdırılıyor.
Skript ile Kullanıcıya Para Gönderme
Skript ile ekonomi sistemi kodlamak isteyenler, bir kullanıcıya nasıl para gönderileceğini de araştırabilir. Bunun için size aşağıdaki kodu sade haliyle bırakıyoruz.
command /ekonomi [<text>] [<offline player>] [<number>]:
trigger:
if arg 1 is not set:
send “&6Kullanım: &b/ekonomi &f<Hesap/Ver> <Oyuncu> <Miktar>”
else:
if arg 1 is “Hesap”:
if sender is console:
if arg 2 is set:
if {money::%arg-2%} is not set:
send “&6Uyari: &bBoyle bir oyuncu yok.”
else:
send “&6%arg-2% &eadli oyuncunun bakiyesi: &b%{money::%arg-2%}%”
else:
send “&cHata: &6Oyuncu &fadi &bgirmediniz.”
else if sender is player:
if arg 2 is not set:
send “&6Bakiyeniz: &f%{money::%player%}%”
else:
if sender has permission “economy.money.otherplayers”:
send “&6%arg-2% &eadlı oyuncunun bakiyesi: &b%{money::%arg-2%}%”
else if arg 1 is “Ver”:
if arg 3 > 0:
if sender is console:
send “&cHata: &bKonsolda bu komut kullanilamaz.”
else:
if arg 2 is not set:
send “&cHata: &bKullanıcı adı girilmedi.”
else:
if arg 3 is not set:
send “&cHata: &bMiktarı belirtmediniz.”
else:
if {money::%player%} < arg-3:
send “&cHata: &bHesabınızdaki paradan büyük bir miktar giremezsiniz.”
else:
ParaVer(arg 3, arg 2, “Para Transferi”)
Fatura(arg-3, player, “Para Transferi”)
send “&eBilgi: &b%arg-3% &6%arg-2% &badlı oyuncuya ödendi.”
send “&6%player% &bsana &5%arg-3% verdi.” to arg 2
Bu kodda birçok komut bizlerle karşılaşıyor. Bunlardan birisi “/ekonomi hesap” olarak yer alıyor. Bu komutun amacı oyuncunun para bilgisini görmesini sağlamak. Eğer oyuncu ismi girilirse o oyuncunun sahip olduğu para öğreniliyor. Buna ek olarak konsol üzerinden de denetim yapılıyor.
Bir diğer komut “/ekonomi ver” olarak yer alıyor. Bu komutun amacı, kullanıcıya para aktarmak. Öncelikle komutun konsoldan girilip girilmediği denetleniyor. Ardından eğer oyuncu ise argümanlar için kontroller yapılıyor. Yani gerekli girdilerin komutta verilip verilmediği inceleniyor.
Sonraki aşamada ise oyuncunun toplam parası inceleniyor ve aktarmak istediği parayı aşıp aşmadığı tespit ediliyor. Eğer verilecek olan para, toplam parayı aşmıyor ise diğer kullanıcıya aktarılıyor. Ardından 2 kullanıcıya da mesaj paylaşılıyor.
if sender is console | Komutu gönderenin konsol olup olmadığını kontrol eder. |
if arg 1 is set | Komut girdisinin varlığını denetler. |
if arg 1 is “Hesap” | İlk argümanın “Hesap” olup olmadığını tespit eder. |
send “Mesaj” | Komutu giren kullanıcıya mesaj gönderir. |
send “Mesaj” to arg 2 | Belirlenen oyuncuya mesaj gönderir. |
if sender has permission “economy.money.otherplayers”: | Yetki kontrolü yapar. |
add {_a} to {money::%{_p}%} | Belirlenen değişkene belirlenen miktarda para ekler. |
remove {_a} from {money::%{_p}%} | Belirlenen değişkenden belirlenen miktarda para kaldırır. |
Skript için Vault Ekleme
Eğer kendi marketinizi veya bunun gibi çeşitli özellikleri kodlamayacaksanız bu parayı diğer eklentilerle kullanmanız gerekiyor. Bunun için Vault eklentisi gerekiyor. Skript ile ekonomi sistemi kodladıktan sonra bu sistemi diğer eklentilerle uyumlu hale getiren yazılım Vault olmakta. Skript ile kodlanan para sistemi, Vault aracılığıyla diğer ekonomi eklentilerini tetikler. Bu şekilde eklentiler, birbirleriyle iletişim kurarlar.
on script load:
enable automatic vault linking with balance variable {money::%player%}
set automatic linking economy name to “Ekonomi Sistemi”
set automatic linking singular currency name to “Para”
set automatic linking plural currency name to “Para”
set automatic linking currency format to “%%number%% Para”
set automatic linking currency decimals to 2
Burada yer alan kod, dosya başlarken çalıştırılıyor. Bundan dolayı kodların en üstüne eklenmesi tavsiye edilir. Bu kod ile beraber Vault API’sinden yararlanılıyor. Bu kodu ekledikten sonra örneğin ChestShop eklentisi ile sandık marketi kurulduğunu varsayalım. sandık marketinden eşya alındığında geliştirilen ekonomi sistemi üzerinden para alınıyor.
on script load: | Dosya yüklenirken çalışacak kodlar burada yer alır. |
enable automatic vault linking with balance variable {money::%player%} | Vault API’sine hangi değişken bağlanacak ise buradan belirtilmeli. |
set automatic linking economy name to “Ekonomi Sistemi” | Ekonomi sisteminin adı buraya yazılmalı. |
set automatic linking singular currency name to “Para” | Paranın ismi belirtilmeli. |
set automatic linking plural currency name to “Para” | Paranın ismi belirtilmeli. |
set automatic linking currency format to “%%number%% Para” | Paranın kısaltmasının ne olacağı açıklanmalı. |
set automatic linking currency decimals to 2 | Ondalık kısmının kaç basamaklı olacağı yazılmalı. |
Eğer sen de Minecraft sunucusu kurmak istiyorsan Minecraft sunucu kirala!