Minecraft Online Süre Skripti! | Oyuncuların ne kadar online kaldığını öğrenin!

Nothingkat

Kömür madencisi
Katılım
1 Haz 2019
Mesajlar
9
Beğeni
1
Puanları
10
Merhaba değerli forum üyeleri , bugün /süre top ve /süre özelliği bulunan güzel kolay ve türevlerine benzemeyen bir skript paylaşacağım öncelikle 1 - 2 bilgi vereyim, skript'in çalışması için skript-mirror ve TuSKe adlı add-on gereklidir indirmek için
tıklayın skript-mirror. tıklayın TuSKe

Eğer sunucu sürümünüz 1.8 gibi alt sürümler ise timestatistic: kısmını ellemeyin eğer 1.14.4 gibi sürümler ise PLAY_ONE_MINUTE olarak ayarlamanız gerekiyor
skript her saniye tüm oyuncuları kaydetmek yerine istatistikten verileri çekiyor bu sayede lag yapmıyor, neyse fazla uzatmadan kodu bırakayım.

Kod:
options:
    topx: 9
    timestatistic: PLAY_ONE_TICK
import:
    org.bukkit.Statistic
players property total time:
    return type: number
    get:
        return round(expression-1.getStatistic(Statistic.{@timestatistic})/20)
on skript load:
    set {timelist::*} to sırala({time::*}, {@topx})
on skript unload:
    set {timelist::*} to sırala({time::*}, {@topx})
every 30 minutes:
    set {timelist::*} to sırala({time::*}, {@topx})

function formattedTime(süre: number) :: String:
    return "&e%floor({_süre}/86400)% &7gün, &e%floor(mod({_süre},86400)/3600)% &7saat, &e%floor(mod({_süre},3600)/60)% &7dakika, &e%floor(mod({_süre},60))% &7saniye"

function sırala(x: objects, n: number) :: Objects:
    loop {_n} times:
        set {_maxValuetime} to -1
        loop {_x::*}:
            set {_time::*} to loop-value-2 split at "\\"
            set {_time::2} to {_time::2} parsed as number
            if {_time::2} > {_maxValuetime}:
                set {_maxValuetime} to {_time::2}
                set {_maxValues} to loop-value-2
        add {_maxValues} to {_return::*}
        remove {_maxValues} from {_x::*}
        delete {_maxValues}
        delete {_maxValuetime}
    return {_return::*}

command /süre [<text>]:
    trigger:
        if arg 1 is not set:
            set {_time} to total time of player
            open virtual chest inventory with size 1 named "&cSüre Top" to player
            make gui slot 0,1,2,3,5,6,7 and 8 of player with shiny lime stained glass pane named " " to nothing
            make gui slot 4 of player with ("%player%" parsed as offline player)'s skull named "&6Oyunda kalma süreniz" with lore "","&7Oyunda toplamda",formattedTime({_time}) and "&7süre boyunca kalmışsınız." to nothing
            set {time::%player%} to "%player%\\%{_time}%"
        else if arg 1 is "top" or "sıralama" or "sırala":
            open virtual chest inventory with size ceil({@topx}/9) named "&cSüre Top" to player
            loop {timelist::*}:
                set {_sıralama::*} to loop-value-1 split at "\\"
                make gui slot {_n} otherwise 0 of player with ("%{_sıralama::1}%" parsed as offline player)'s skull named "&c%{_n}+1%. Kişi" with lore "", "&9%{_sıralama::1}% &7adlı oyuncu", "&6%formattedTime({_sıralama::2} parsed as number)%" and "&7kadar oyunda kalarak &3%{_n}+1%. &7sıraya çıkmıştır." to nothing
                add 1 to {_n}
        else if arg 1 is "yenile":
            if player is op:
                set {timelist::*} to sırala({time::*}, {@topx})
                send "&aSistem yenilendi."
            else:
                send "&cYetkin yok."
 

Castrum

Kömür madencisi
Katılım
25 Ocak 2021
Mesajlar
14
Beğeni
0
Puanları
10
eline sağlık fakat gui yaparken loop alabilirdin bu sayede daha kolay kontrol edilip daha bi optimize olurdu. başarılı
 
Üst