Skript Paylaşımı Ganimet Sistemi * PvP'de Yeni Dönem! (YAML)

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Harun553

Zombi Geldi, Beni Yedi
Katılım
3 Eylül 2014
Mesajlar
260
Elmaslar
97
Puan
13.950
Konum
Ankara
Minecraft
HarunBulbull

Discord:

HarunBulbull#8233



Selamlar, bugün yapmış olduğum ganimet sistemini paylaşacağım. :)

Nedir Bu Ganimet Sistemi?

Kısaca, PvP attıkça para kazandığınız bir sistem.

Birisini öldürdükten sonra ganimetinize
300 altın ekleniyor ve 1 dakikalık bir sayaç saymaya başlıyor. Sayaç akarken birini daha öldürürseniz, sayaç yenilenir ama bu sefer ganimetinize 600 altın eklenir.

Aynı mantıkla, sayaç bitmeden başka birisini öldürürseniz bu sefer ilk aldığınızın
3 katı altın alırsınız... Yani, sayacı kaç kere yenilerseniz o kadar katlı ganimet alırsınız. :)



İyi Peki Bu Ganimeti Ne Yapacağız?
Ganimetinizi normal hesabınıza para olarak geçirebilirsiniz. Ama nasıl?

Ganimeti hesabınıza çekmek için sayacın bitmesi gerekiyor.
"Ee ne var bunda?" diyebilirsiniz. Ama sorun şu ki ölürseniz ya da oyundan çıkarsanız ganimetiniz sıfırlanır.

Diyelim ki, sayaç bitene kadar hayatta kalmayı başardınız. Tebrikler! Artık /ganimet çek komutunu kullanabilirsiniz. :)



Peki Bunca Skript Sunucuyu Yormaz Mı?
Javanın berbat optimizasyonuna karşın, bu skript yalnızca 170 satırdan oluşuyor. Fonksiyon yapıları kullanılarak alınabilecek maksimum performansı almaya odaklı bir sistem. :)


İyi De Bu Kadar Şeyi Nasıl Ayarlayacağım?
Yapmanız gereken tek şey skripti sunucunuza kurup çalıştırmak. :)

Devamında isterseniz oyun içinden isterseniz de "Plugins/ganimet/ayarlar.yml" içinden gerekli ayarlamaları yapabilirsiniz.



Ee Hani Yok Mu 3-5 Resim?
Olmaz olur mu efendim buyrun :)

2021-12-18_15.53.01.png

Birisini öldürdüğünüz zaman gelen mesaj


2021-12-18_15.53.12.png

2021-12-18_15.53.16.png

Sayaç görünümü (10 saniyede bir ganimeti gösterir.)


2021-12-18_15.53.31.png

Sayaç bitmeden ganimet çekmeye çalışırsanız;


2021-12-18_15.53.41.png

/ganimet gör



2021-12-18_15.54.06.png

Tebrikler! Hala yaşıyorsun. :)


2021-12-18_15.54.18.png

Fakir mi Korkak mı?


2021-12-18_15.54.30.png

Adminler için /ganimet yardım menüsü


2021-12-18_15.55.59.png

Oyuncular için /ganimet yardım menüsü



2021-12-18_15.55.04.png

/ganimet admin


2021-12-18_15.55.52.png

Yetkin yok!



** GEREKLİ EKLENTİLER **
Lütfen skriptin düzgün çalışması için aşağıdaki eklentilerin sunucunuzda kurulu olduğundan emin olun!


Skript (Tercihen; v2.2 veya üstü)
Skript-Yaml
SkRayFall
Tuske
Vault

Essentials


** KURULUM **
Yalnızca skripti kurup reload adın yaml dosyası otomatik oluşturulacaktır.


** YAML ÖRNEĞİ **

Kod:
prefix: '&8[&6Ganimet&8] »&f' #Prefix

altin: 300 #Varsayılan altın miktarı sayaç tekrarlandıkça katlanır.

sayac: 60 #Sayaç kaç saniye olacaksa ona göre ayarlayın.

admin: sk.admin #admin menüsü yetkisi


** SKRİPT **
Kod:
function ganimet(p: player, v: text):
    set {ganimet::%{_p}%::sayac} to {sayac}
    add 1 to {ganimet::%{_p}%::kill}
    set {_x.%{_p}%} to ({ganimet::%{_p}%::kill} * {altin})
    add {_x.%{_p}%} to {ganimet::%{_p}%::altin}
    send "%{prefix}% %{_v}% &f, adlı oyuncuyu öldürdüğün için &6%{_x.%{_p}%}% Altın &fganimetine eklendi!" to {_p}

function ganimetsil(p: player):
    delete {ganimet::%{_p}%::*}
    set {ganimet::%{_p}%::altin} to 0

command /ganimet [<text>] [<text>] [<text>]:
    trigger:
        if arg-1 isn't set:
            execute player command "/ganimet yardım"
        if arg-1 isn't "yardim" or "yardım" or "çek" or "cek" or "gör" or "gor" or "admin":
            execute player command "/ganimet yardım"
        if arg-1 is "yardım" or "yardim":
            send ""
            send "&8&l&m-------------►&6&l GANIMET &8&l&m◄-------------"
            send ""
            send "&8&l&m-►&c Ganimet&f, birini öldürdükçe &6altın &fkazandığınız"
            send "ve bu altınları &c&nsavaş sonrası&f hesabınıza çekmenize"
            send "olanak sağlayan bir sistemdir."
            send ""
            send "&8&l&m-►&f Birini öldürükten sonra &cekranınızın altına &fsayaç"
            send "&fbelirecek. &cSayaç bitene kadar&f başka birini daha öldürürseniz"
            send "&f&c&nöldürdüğünüz kişi kadar katlı&6 altın &falırsınız."
            send ""
            send "&8&l&m-►&f Ölürseniz ya da oyundan çıkarsanız &c&nganimetiniz silinir&f."
            send ""
            send "&8&l&m-►&c&l Ganimetini görmek için; &f/ganimet gör"
            send "&8&l&m-►&c&l Ganimetini çekmek için; &f/ganimet çek"
            if player have the permission "%{admin}%":
                send "&8&l&m-►&c&l Admin komutları için; &f/ganimet admin"
            send ""
            send "&8&l&m------------------------------------"
            send ""
        if arg-1 is "gör" or "gor":
            send "%{prefix}% Ganimetin: &6%{ganimet::%player%::altin}% Altın"
        if arg-1 is "çek" or "cek":
            if {ganimet::%player%::sayac} isn't set:
                if {ganimet::%player%::altin} > 0:
                    add {ganimet::%player%::altin} to player's balance
                    ganimetsil(player)
                    send "%{prefix}% Ganimetini başarıyla çektin!"
                    stop
                else:
                    send "%{prefix}% Hiç ganimetin yok. :("
                    stop
            else:
                send "%{prefix}% Öncelikle sayacın bitmesini beklemelisin."
                stop
        if arg-1 is "admin":
            if player have the permission "%{admin}%":
                if arg-2 isn't set:
                    send ""
                    send "&8&l&m-------------►&6&l GANIMET &8&l&m◄-------------"
                    send ""
                    send "&8&l&m-►&c&l Prefix ayarlama; &f/ganimet admin prefix (prefix)"
                    send "&8&l&m-►&c&l Varsayılan altın ayarlama; &f/ganimet admin altın (miktar)"
                    send "&8&l&m-►&c&l Sayaç ayarlama; &f/ganimet admin sayaç (saniye)"
                    send "&8&l&m-►&c&l Yetki ayarlama; &f/ganimet admin yetki (yetki)"
                    send ""
                    send "&8&l&m------------------------------------"
                    send ""
                    stop
                if arg-2 is "prefix":
                    if arg-3 is set:
                        set yaml value "prefix" from "ayar" to "%arg-3%"
                        save yaml "ayar"
                        set {prefix} to yaml value "prefix" from "ayar"
                        send "%{prefix}% Prefix ayarlandı!"
                        stop
                    else:
                        send "%{prefix}% Lütfen bir prefix yazın."
                        stop
                if arg-2 is "altın" or "altin":
                    if arg-3 is set:
                        set {_nonNumbers::*} to regex replace all "[^0-9]" with "" in arg-3 parsed as a number
                        set {_ayar} to "%{_nonNumbers::*}%"
                        if {_ayar} isn't "<none>":
                            set yaml value "altin" from "ayar" to {_ayar}
                            save yaml "ayar"
                            set {altin} to yaml value "altin" from "ayar"
                            send "%{prefix}% Altın miktarı %{altin}% olarak ayarlandı!"
                            stop
                        else:
                            send "%{prefix}% Lütfen içinde harf bulunmayan bir değer girin."
                            stop
                    else:
                        send "%{prefix}% Lütfen bir miktar yazın."
                        stop
                if arg-2 is "sayaç" or "sayac":
                    if arg-3 is set:
                        set {_nonNumbers::*} to regex replace all "[^0-9]" with "" in arg-3 parsed as a number
                        set {_ayar} to "%{_nonNumbers::*}%"
                        if {_ayar} isn't "<none>":
                            set yaml value "sayac" from "ayar" to {_ayar}
                            save yaml "ayar"
                            set {sayac} to yaml value "sayac" from "ayar"
                            send "%{prefix}% Sayaç zamanı %{sayac}% saniye olarak ayarlandı!"
                            stop
                        else:
                            send "%{prefix}% Lütfen içinde harf bulunmayan bir değer girin."
                            stop
                    else:
                        send "%{prefix}% Lütfen bir miktar yazın."
                        stop
                if arg-2 is "yetki":
                    if arg-3 is set:
                        set yaml value "admin" from "ayar" to "%arg-3%"
                        save yaml "ayar"
                        set {admin} to yaml value "admin" from "ayar"
                        send "%{prefix}% Yetki, %{admin}% olarak ayarlandı!"
                        stop
                    else:
                        send "%{prefix}% Lütfen bir yetki yazın. &c(Örn. ""sk.admin"")"
                        stop
            else:
                send "%{prefix}% Bunun için yetkin yok!"

    
on load:
    load yaml "plugins/Ganimet/ayarlar.yml" as "ayar"
    if yaml "ayar" is empty:
        set yaml value "admin" from "ayar" to "sk.admin"
        set yaml value "prefix" from "ayar" to "&8[&6Ganimet&8] » &f"
        set yaml value "altin" from "ayar" to 300
        set yaml value "sayac" from "ayar" to 60
        save yaml "ayar"
    set {altin} to yaml value "altin" from "ayar"
    set {prefix} to yaml value "prefix" from "ayar"
    set {sayac} to yaml value "sayac" from "ayar"
    set {admin} to yaml value "admin" from "ayar"

on join:
    ganimetsil(player)

on death:
    victim is a player:
        if {ganimet::%victim%::altin} > 0:
            send "%{prefix}% Öldüğün için ganimetin silindi." to victim
        ganimetsil(victim)
        attacker is a player:
            ganimet(attacker, "&c%victim%")
    
every seconds:
    loop all players:
        if {ganimet::%loop-player%::sayac} > 0:
            remove 1 from {ganimet::%loop-player%::sayac}
            if {ganimet::%loop-player%::sayac1} isn't set:
                set action bar of loop-player to "&9&l✪ &3&lGanimet Sayacı: &f%{ganimet::%loop-player%::sayac}% &9&l✪"
            else:
                set action bar of loop-player to "&9&l✪ &3&lGanimetin: &f%{ganimet::%loop-player%::altin}% Altın &9&l✪"
            if {ganimet::%loop-player%::sayac} is 50 or 40 or 30 or 20 or 10 or 1:
                set {ganimet::%loop-player%::sayac1} to 1
                wait 5 seconds
                delete {ganimet::%loop-player%::sayac1}
        else:
            delete {ganimet::%loop-player%::sayac}
            delete {ganimet::%loop-player%::kill}
        
every 1 minutes:
    loop all players:
        if {ganimet::%loop-player%::sayac} isn't set:
            if {ganimet::%loop-player%::altin} > 0:
                loop 5 times:
                    wait 1 seconds
                    set action bar of loop-player to "&9&l✪ &3&lGanimetini çekmeyi unutma! &f/ganimet çek &9&l✪"

Not: Lütfen izinsiz paylaşmayınız.




 
Güzel bir skripte benziyor. PVP veya Faction sunucuları için kullanılışlı, elinize sağlık.
 
Elinize sağlık çok kaliteli bir skript
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Hala Discord sunucumuza katılmadın mı?

Büyük bir topluluğun parçası ol, etkinliklere katıl ve özel hediyeler kazanma şansı yakala!

Şimdi Katıl
Üst