Çözüldü Action barda yaptığım countdown çalışmıyor

  • Konuyu Başlatan Konuyu Başlatan wibonsue
  • Başlangıç tarihi Başlangıç tarihi
  • Görüntüleme 478
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

wibonsue

Bir Kömür Göründü Kaptanım!
Katılım
22 Haziran 2022
Mesajlar
109
Elmaslar
4
Puan
6.610
Konum
Türkiye
Minecraft
wibonsue

Discord:

wibonsue#8862

arkadaşlar skript yaptım her damage vurunca hem kendisi hemde damage vurduğu kişinin 10 saniyeliğine komut kullanamamasını istiyorum
ayrıca kaç saniye kaldığını da action barda göstermesini fakat ne denediysem actionbar 10 saniyede kalıyor geri saymıyor. skriptim:

Kod:
on damage:
    if victim is a player:
        delete {_countdown::*}
        wait 1 tick
        set {_countdown::*} to 10
        if {_countdown::*} is set:
            loop 10 times:
                wait 1 second
                if {_countdown::*} > 0:
                    execute console command "actionbarmsg %victim% &b&lCombat Countdown: &7%{_countdown::*}% seconds left"
                    subtract 1 from {_countdown::*}
                    if {_countdown::*} is 0:
                        delete {_countdown::*}
                        exit loop

    if attacker is a player:
        delete {_countdown::*}
        wait 1 tick
        set {_countdown::*} to 10
        if {_countdown::*} is set:
            loop 10 times:
                wait 1 second
                if {_countdown::*} > 0:
                    execute console command "actionbarmsg %attacker% &b&lCombat Countdown: &7%{_countdown::*}% seconds left"
                    subtract 1 from {_countdown::*}
                    if {_countdown::*} is 0:
                        delete {_countdown::*}
                        exit loop

on command:
    if {_countdown::*} is set:
        if player doesn't have permission "combat.bypass":
            send "&cYou cannot use this command while in combat!" to player
            cancel event

Not: Herhangi bir plugin önermeyin skript ile çözmem gereken bir konu bu maalesef :/
@Anemys Hocam siz anlarsınız
 
Plugin önermeyi demişsiniz ama Combatlogx
 
JavaScript:
load:
    delete {player::in::attack::*}
    
damage of player:
    {player::in::attack::%attacker%} is not set:
        set {player::in::attack::%attacker%} and {player::in::attack::%victim%} to true
        geriSayım(attacker)
        geriSayım(victim)

quit:
    {player::in::attack::%player%} is set:
        set all items in player's inventory to {player::in::attack::inventory::%player%::*}# vs vs oyuncu savaştan çıktığında eşyalarını kaydeder ve yere düşürür
        drop {player::in::attack::inventory::%player%::*} at location of player #galiba çıkış etkinliklerinde oyuncu envanter verisini çekemiyoruz :(
        delete {player::in::attack::%player%}
        
function geriSayım(p: player):
    set {_cool::%{_p}%} to 10
    loop 11 times:
        {player::in::attack::%{_p}%} is set:
            wait a seconds
            send action bar "Savaşın bitmesine %{_cool::%{_p}%}% saniye kaldı!" to {_p}
            remove 1 from {_cool::%{_p}%}
            {_cool::%{_p}%} = 0:
                delete {player::in::attack::%{_p}%}
                send "Savaş bitti!" to {_p}
        else:
            stop loop if {player::in::attack::%{_p}%} is not set
        
command:
    {player::in::attack::%player%} is set:
        cancel event
        send "&cSavaştasın! Komut kullanamazsın." to event-player

bunu örnek alarak skript'ini geliştirebilirsin.
 
Plugin önermeyi demişsiniz ama Combatlogx
pluginleri bende biliyorum combatlogun discordunda ticket bile açtım bilmiyoruz dedi buglu benim sunucumda o plugin benim sunucum biraz değişik bi sunucu :Ç
 
JavaScript:
load:
    delete {player::in::attack::*}
   
damage of player:
    {player::in::attack::%attacker%} is not set:
        set {player::in::attack::%attacker%} and {player::in::attack::%victim%} to true
        geriSayım(attacker)
        geriSayım(victim)

quit:
    {player::in::attack::%player%} is set:
        set all items in player's inventory to {player::in::attack::inventory::%player%::*}# vs vs oyuncu savaştan çıktığında eşyalarını kaydeder ve yere düşürür
        drop {player::in::attack::inventory::%player%::*} at location of player #galiba çıkış etkinliklerinde oyuncu envanter verisini çekemiyoruz :(
        delete {player::in::attack::%player%}
       
function geriSayım(p: player):
    set {_cool::%{_p}%} to 10
    loop 11 times:
        {player::in::attack::%{_p}%} is set:
            wait a seconds
            send action bar "Savaşın bitmesine %{_cool::%{_p}%}% saniye kaldı!" to {_p}
            remove 1 from {_cool::%{_p}%}
            {_cool::%{_p}%} = 0:
                delete {player::in::attack::%{_p}%}
                send "Savaş bitti!" to {_p}
        else:
            stop loop if {player::in::attack::%{_p}%} is not set
       
command:
    {player::in::attack::%player%} is set:
        cancel event
        send "&cSavaştasın! Komut kullanamazsın." to event-player

bunu örnek alarak skript'ini geliştirebilirsin.
Hocam countdownu actionbardaki her vuruşta sıfırlanmasını istiyorum şöyle birşey yaptım fakat her eklediğim vuruşta buglanıyor;
ilk vuruş 10 saniye geri sayım
ikinci vuruş 5 saniye kalmışken ikinci vuruşu atınca geri sayın şöyle devam ediyor:
10, 4, 9, 3, 8, 2

JavaScript:
on load:
    delete {player::in::combat::*}

on damage:
    if victim is a player:
        set {player::in::combat::%victim%} to false
        set {player::in::combat::%victim%} to true
        startCombatCountdown(victim)

    if attacker is a player:
        delete {player::in::combat::%attacker%}
        set {player::in::combat::%attacker%} to true
        startCombatCountdown(attacker)

on quit:
    if {player::in::combat::%player%} is set:
        delete {player::in::combat::%player%}

function startCombatCountdown(p: player):
    set {_cooldown::%{_p}%} to false
    set {_cooldown::%{_p}%} to 10
    loop 10 times:
        wait 1 second
        if {player::in::combat::%{_p}%} is set:
            if {_cooldown::%{_p}%} > 0:
                execute console command "actionbarmsg %{_p}% &b&lCombat Countdown: &7%{_cooldown::%{_p}%}% seconds left"
                subtract 1 from {_cooldown::%{_p}%}
            else:
                delete {player::in::combat::%{_p}%}
                send "&aCombat has ended!" to {_p}
                exit loop
        else:
            exit loop

on command:
    if {player::in::combat::%player%} is set:
        if player doesn't have permission "combat.bypass":
            send "&cYou cannot use this command while in combat!" to player
            cancel event
 
Hocam countdownu actionbardaki her vuruşta sıfırlanmasını istiyorum şöyle birşey yaptım fakat her eklediğim vuruşta buglanıyor;
ilk vuruş 10 saniye geri sayım
ikinci vuruş 5 saniye kalmışken ikinci vuruşu atınca geri sayın şöyle devam ediyor:
10, 4, 9, 3, 8, 2

JavaScript:
on load:
    delete {player::in::combat::*}

on damage:
    if victim is a player:
        set {player::in::combat::%victim%} to false
        set {player::in::combat::%victim%} to true
        startCombatCountdown(victim)

    if attacker is a player:
        delete {player::in::combat::%attacker%}
        set {player::in::combat::%attacker%} to true
        startCombatCountdown(attacker)

on quit:
    if {player::in::combat::%player%} is set:
        delete {player::in::combat::%player%}

function startCombatCountdown(p: player):
    set {_cooldown::%{_p}%} to false
    set {_cooldown::%{_p}%} to 10
    loop 10 times:
        wait 1 second
        if {player::in::combat::%{_p}%} is set:
            if {_cooldown::%{_p}%} > 0:
                execute console command "actionbarmsg %{_p}% &b&lCombat Countdown: &7%{_cooldown::%{_p}%}% seconds left"
                subtract 1 from {_cooldown::%{_p}%}
            else:
                delete {player::in::combat::%{_p}%}
                send "&aCombat has ended!" to {_p}
                exit loop
        else:
            exit loop

on command:
    if {player::in::combat::%player%} is set:
        if player doesn't have permission "combat.bypass":
            send "&cYou cannot use this command while in combat!" to player
            cancel event
Önce değişken kullanarak kilitle ki daha sonraki saldırılarda fonksiyonun çalışmasını engelle veya tekrar saldırılarda geri sayım değişkenini sıfırla. Senin aldığın hata ekstra döngüye girmiş olması, döngüye telrar girmemesi için dediğim gibi süre bitene kadar fonksiyonu kilitle.
 
Önce değişken kullanarak kilitle ki daha sonraki saldırılarda fonksiyonun çalışmasını engelle veya tekrar saldırılarda geri sayım değişkenini sıfırla. Senin aldığın hata ekstra döngüye girmiş olması, döngüye telrar girmemesi için dediğim gibi süre bitene kadar fonksiyonu kilitle.
nasıl yapacağım
 
nasıl yapacağım
JavaScript:
load:
    delete {player::in::attack::*}
   
damage of player:
    {player::in::attack::%attacker%} is not set:
        set {player::in::attack::%attacker%} and {player::in::attack::%victim%} to true
        geriSayım(attacker)
        geriSayım(victim)

quit:
    {player::in::attack::%player%} is set:
        set all items in player's inventory to {player::in::attack::inventory::%player%::*}# vs vs oyuncu savaştan çıktığında eşyalarını kaydeder ve yere düşürür
        drop {player::in::attack::inventory::%player%::*} at location of player #galiba çıkış etkinliklerinde oyuncu envanter verisini çekemiyoruz :(
        delete {player::in::attack::%player%}
       
function geriSayım(p: player):
    set {_cool::%{_p}%} to 10
    loop 11 times:
        {player::in::attack::%{_p}%} is set:
            wait a seconds
            send action bar "Savaşın bitmesine %{_cool::%{_p}%}% saniye kaldı!" to {_p}
            remove 1 from {_cool::%{_p}%}
            {_cool::%{_p}%} = 0:
                delete {player::in::attack::%{_p}%}
                send "Savaş bitti!" to {_p}
        else:
            stop loop if {player::in::attack::%{_p}%} is not set
       
command:
    {player::in::attack::%player%} is set:
        cancel event
        send "&cSavaştasın! Komut kullanamazsın." to event-player

bunu örnek alarak skript'ini geliştirebilirsin.
bu şekilde...
 
Size önemli bir öneri vereyim, skriptleri olabildiğince az kullanın ya da hiç kullanmayın. O skriptlerde çok güzel yoruyor sunucunun beynini. Heleki bazıları efsane yedek kaydediyor havalarda GB'ler dolaşıyor.
 
Size önemli bir öneri vereyim, skriptleri olabildiğince az kullanın ya da hiç kullanmayın. O skriptlerde çok güzel yoruyor sunucunun beynini. Heleki bazıları efsane yedek kaydediyor havalarda GB'ler dolaşıyor.
%90 skript olan o meşhur sunucu: MC.LIMEWORK.NET

Ayrıca benim sunucum %60 skript ve timings baktığım zaman hiç bir sorun olmadığını görüyorum. Değişkenlere değinecek olursak; gereksiz yere değişken kullanımını (DB yapmak varken) ancak skripti kötüleyen birisi yapar.
 
%90 skript olan o meşhur sunucu: MC.LIMEWORK.NET

Ayrıca benim sunucum %60 skript ve timings baktığım zaman hiç bir sorun olmadığını görüyorum. Değişkenlere değinecek olursak; gereksiz yere değişken kullanımını (DB yapmak varken) ancak skripti kötüleyen birisi yapar.
Burada tam olarak bana gönderme mi yaptın tam anlamış değilim fakat. Ben kime sorarsam sorayım. Kim bana bu konu ile alakalı soru sorarsa sorsun habire Skript kullanma, skript makinayı yorar vs. Gibi cümleler kullandı. Ben duyduğumu buraya söylüyorum.
 
Burada tam olarak bana gönderme mi yaptın tam anlamış değilim fakat. Ben kime sorarsam sorayım. Kim bana bu konu ile alakalı soru sorarsa sorsun habire Skript kullanma, skript makinayı yorar vs. Gibi cümleler kullandı. Ben duyduğumu buraya söylüyorum.
Yanlış anlaşılma olmasın ama kulaktan dolma bilgilerle insanları yanlış bilgilendirmek pek doğru değil. İyi forumlar...
 
Yanlış anlaşılma olmasın ama kulaktan dolma bilgilerle insanları yanlış bilgilendirmek pek doğru değil. İyi forumlar...
Sana göre yararlı, bana göre zararlı. Herkesin kendine göre bir fikri olabilir değil mi?

İyi forumlar..
 
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