Yazı Tura Skripti

ceyiz123

Ağaç Yumruklayıcı
En iyi cevaplar
0

Sevgili Gamer.com.tr Ailesi,

Bugün sizlerle kendi yaptığım Yazı Tura Düello skriptini tanıtacağım. Bu benim paylaştığım 4. Skriptim. Daha önceki konularım olan D-Y Event ve Admin Event skriptlerine gösterdiğiniz ilgi için teşekkürler, bugün ise sunucunuzdaki rekabeti artıracak bir sistemle karşınızdayım.

Hadi skriptimden bahsedelim:

KOMUTLAR

  • OYUNCU KOMUTLARI
    • /yazituraduello <isim> <miktar>: Belirlediğiniz miktar karşılığında bir oyuncuya düello teklifi gönderir.
    • /yaziturakabul: Gelen düello teklifini kabul eder.
    • /sec <yazi/tura>: Bahsinizi seçersiniz ve para havaya fırlatılır!
    • /yazitura: Sistem hakkında kısa bilgi verir.

GEREKLİ PLUGİNLER (MUTLAKA YÜKLEYİN)

Skriptin ve bahis sisteminin sorunsuz çalışması için sunucunuzda şu pluginlerin olması gerekir:
  • Skript (Ana eklenti)
  • Vault (Ekonomi sistemi için)
  • EssentialsX (Bakiyelerin kontrol edilmesi ve ödülün verilmesi için)

SKRİPTİN ÖZELLİKLERİ VE AYARLARI

  • Dinamik Bahis Sistemi: Sabit bir ödül yoktur. Düelloyu başlatan kişi miktarı kendi belirler (Örn: 100 TL veya 50k TL).
  • Bakiye Kontrolü: Hem teklif gönderenin hem de kabul edenin yeterli bakiyesi olup olmadığını sistem otomatik kontrol eder.
  • Görsel Bildirimler: Para dönüyormuş hissi veren bekleme süresi ve Action Bar mesajları ile heyecan artırılmıştır.
  • Hile Engelleyici: Bir düello devam ederken oyuncuların odağını bozacak veya sistemi suistimal edecek durumlar optimize edilmiştir.
  • Otomatik Kazanç: Kazanan belirlendiği an toplam ödül havuzu (her iki tarafın koyduğu miktar) otomatik olarak kazananın hesabına yatar.
Küçük Bir Not: Skriptin içindeki kısmından mesaj renklerini ve bekleme sürelerini kendi sunucu temanıza göre kolayca değiştirebilirsiniz.options:

İyi kullanmalar, umarım işinize yarayan bir skript olur. Sorunuz olursa yazabilirsiniz, iyi forumlar!

SKript:
Kod:
# ==========================================
#       YAZI TURA DUELLO SKRIPTI
# ==========================================

options:
    p: &6&lYAZI TURA &8> # Mesaj ön eki
    sure: 3 seconds # Paranın dönme süresi

command /yazituraduello [<player>] [<number>]:
    trigger:
        if arg-1 is set:
            if arg-2 is set:
                if arg-2 > 0:
                    if player's balance >= arg-2:
                        if arg-1's balance >= arg-2:
                            set {duello::teklif::%arg-1%} to player
                            set {duello::miktar::%arg-1%} to arg-2
                            send "{@p} &e%player% &7sizinle &a%arg-2% TL &7karşılığında yazı tura düellosu yapmak istiyor!" to arg-1
                            send "{@p} &e%arg-1% &7adlı oyuncuya &a%arg-2% TL &7lik düello teklifi gönderildi." to player
                            send "{@p} &7Kabul etmek için: &n/yaziturakabul" to arg-1
                        else:
                            send "{@p} &cKarşı tarafın bu kadar parası yok!" to player
                    else:
                        send "{@p} &cSenin bu kadar paran yok!" to player
                else:
                    send "{@p} &cMiktar 0'dan büyük olmalıdır." to player
            else:
                send "{@p} &cKullanım: /yazituraduello <isim> <miktar>" to player
        else:
            send "{@p} &cKullanım: /yazituraduello <isim> <miktar>" to player

command /yaziturakabul:
    trigger:
        if {duello::teklif::%player%} is set:
            set {_rakip} to {duello::teklif::%player%}
            set {_miktar} to {duello::miktar::%player%}
            if player's balance >= {_miktar}:
                if {_rakip}'s balance >= {_miktar}:
                    remove {_miktar} from player's balance
                    remove {_miktar} from {_rakip}'s balance
                    send "{@p} &aDüello kabul edildi! Seçim aşamasına geçiliyor..." to player and {_rakip}
                    send "{@p} &eLütfen &f/sec yazi &eveyaz &f/sec tura &eyazın!" to player and {_rakip}
                    set {duello::aktif::%player%} to true
                    set {duello::aktif::%{_rakip}%} to true
                else:
                    send "{@p} &cRakibinizin parası artık yetersiz!" to player
            else:
                send "{@p} &cParanız yetersiz!" to player
        else:
            send "{@p} &cSize gelen bir düello teklifi yok." to player

command /sec [<text>]:
    trigger:
        if {duello::aktif::%player%} is true:
            if arg-1 is "yazi" or "tura":
                set {duello::secim::%player%} to arg-1
                send "{@p} &aSeçiminiz kaydedildi: &e%arg-1%" to player
                
                set {_rakip} to {duello::teklif::%player%}
                if {duello::secim::%{_rakip}%} is set:
                    # İki taraf da seçim yaptıysa oyunu başlat
                    send "{@p} &6Para havaya fırlatıldı, dönüyor..." to player and {_rakip}
                    wait {@sure}
                    set {_sonuc} to random integer between 1 and 2
                    if {_sonuc} is 1:
                        set {_kazanan_taraf} to "yazi"
                    else:
                        set {_kazanan_taraf} to "tura"
                    
                    broadcast "{@p} &7Yazı tura sonucu: &e%{_kazanan_taraf}%!"
                    
                    if {duello::secim::%player%} is {_kazanan_taraf}:
                        add ({duello::miktar::%player%} * 2) to player's balance
                        send "{@p} &aTebrikler, kazandınız!" to player
                        send "{@p} &cMaalesef, rakibiniz kazandı." to {_rakip}
                    else:
                        add ({duello::miktar::%player%} * 2) to {_rakip}'s balance
                        send "{@p} &aTebrikler, kazandınız!" to {_rakip}
                        send "{@p} &cMaalesef, rakibiniz kazandı." to player
                    
                    # Verileri temizle
                    delete {duello::teklif::%player%}
                    delete {duello::miktar::%player%}
                    delete {duello::aktif::%player%}
                    delete {duello::aktif::%{_rakip}%}
                    delete {duello::secim::%player%}
                    delete {duello::secim::%{_rakip}%}
            else:
                send "{@p} &cGeçersiz seçim! /sec yazi veya /sec tura" to player
        else:
            send "{@p} &cŞu an aktif bir seçim aşamasında değilsiniz." to player
 
Son düzenleme:

na2000

Altın Madencisi
En iyi cevaplar
56
@ceyiz123 bu skriptini incelememi istemissin:

Degiskenleri {duello::secim::%player%} yerine {duello::%player%::secim} seklinde yapmani oneririm. Ayrica degisken kullanmak yerine metadata kullanabilirsin (Sunucu kapandiginda veya metadatanin bagli oldugu oyuncu sunucudan ciktiginda kendiliginden siliniyorlar).

Oyuncular /sec komutu ile eger isterlerse aynisini secebiliyorlar (yazi/tura), bunu bilerek mi oyle yaptin yoksa fark etmedin mi bilmiyorum ama bu sekilde olmasi biraz tuhaf geldi.
Diger bir sorun ise duello kabul edildiginde paranin aninda azaltilmasi, bunu oyuncular secim sirasinda bilerek paralarini harcayip oyunu kaybetseler bile para kaybetmemelerini engellemek icin yaptin sanirsam ancak bu sefer de insanlar sirf baskalari para kaybetsin diye birine duello istegi atip kabul ettikten sonra secim yapmayabilirler.

Diger onemli sorun ise verileri temizledigin yer; teklif ve miktar'i siliyorsun ancak sadece en son komudu calistiran her kimse onun icin siliyorsun. Eger sec komudunu ilk kullanan kisi oyunu baslatan kisi degil de rakip ise ve oyunu baslatan kisi sec komudunu en son kullanirsa teklif ve miktar degiskenleri silinmeyecek cunku bunlari sadece rakip oyuncusuna kaydettin. Eger rakip kisi tekrar duello kabul komudunu kullanirsa herhangi bir istek gelmemis olmasina ragmen yine duello baslayacak. Bunu engellemenin en basit yolu sadece %player% icin degil %{_rakip}% icin de bu iki degiskeni sildirmen.

Bir duelloyu kabul ettikten sonra bir baskasina teklif gonderebiliyor ya da bir baskasindan gelen teklifi kabul edebiliyorsun, baskalarina para kaybettirmek icin bu yolu kullanabilirler.
Baska bir sorun ise oyuncular kendilerine duello istegi atabiliyorlar... Tabii ki herhangi bir oyunu bozan sorun teskil etmiyor, sonucta kazandiklari para kaybettikleri paraya esit oluyor ve her halukarda kazaniyorlar ama yine de biraz sacma :D

Baska dikkatimi ceken bir sorun goremedim, umarim yardimci olabilmisimdir. ^^
Incelememi istedigin baska bir skriptin varsa yine soyleyebilirsin. (Discord uzerinden daha detayli yardimci olabilirim: lil.sosig)
 

ceyiz123

Ağaç Yumruklayıcı
En iyi cevaplar
0
@ceyiz123 bu skriptini incelememi istemissin:

Degiskenleri {duello::secim::%player%} yerine {duello::%player%::secim} seklinde yapmani oneririm. Ayrica degisken kullanmak yerine metadata kullanabilirsin (Sunucu kapandiginda veya metadatanin bagli oldugu oyuncu sunucudan ciktiginda kendiliginden siliniyorlar).

Oyuncular /sec komutu ile eger isterlerse aynisini secebiliyorlar (yazi/tura), bunu bilerek mi oyle yaptin yoksa fark etmedin mi bilmiyorum ama bu sekilde olmasi biraz tuhaf geldi.
Diger bir sorun ise duello kabul edildiginde paranin aninda azaltilmasi, bunu oyuncular secim sirasinda bilerek paralarini harcayip oyunu kaybetseler bile para kaybetmemelerini engellemek icin yaptin sanirsam ancak bu sefer de insanlar sirf baskalari para kaybetsin diye birine duello istegi atip kabul ettikten sonra secim yapmayabilirler.

Diger onemli sorun ise verileri temizledigin yer; teklif ve miktar'i siliyorsun ancak sadece en son komudu calistiran her kimse onun icin siliyorsun. Eger sec komudunu ilk kullanan kisi oyunu baslatan kisi degil de rakip ise ve oyunu baslatan kisi sec komudunu en son kullanirsa teklif ve miktar degiskenleri silinmeyecek cunku bunlari sadece rakip oyuncusuna kaydettin. Eger rakip kisi tekrar duello kabul komudunu kullanirsa herhangi bir istek gelmemis olmasina ragmen yine duello baslayacak. Bunu engellemenin en basit yolu sadece %player% icin degil %{_rakip}% icin de bu iki degiskeni sildirmen.

Bir duelloyu kabul ettikten sonra bir baskasina teklif gonderebiliyor ya da bir baskasindan gelen teklifi kabul edebiliyorsun, baskalarina para kaybettirmek icin bu yolu kullanabilirler.
Baska bir sorun ise oyuncular kendilerine duello istegi atabiliyorlar... Tabii ki herhangi bir oyunu bozan sorun teskil etmiyor, sonucta kazandiklari para kaybettikleri paraya esit oluyor ve her halukarda kazaniyorlar ama yine de biraz sacma :D

Baska dikkatimi ceken bir sorun goremedim, umarim yardimci olabilmisimdir. ^^
Incelememi istedigin baska bir skriptin varsa yine soyleyebilirsin. (Discord uzerinden daha detayli yardimci olabilirim: lil.sosig)
çok teşekkür ederim düzeltim yakında sunucam birde admin event skriptime bakabilirmisin
 
Üst