Skocz do zawartości
  • 0

Skrypt na TOP czasu


Legal

Pytanie

Witam serdecznie, znalazłem skrypt od PanaMarudy na Top czasu online, jednakże topka wyświetla tylko godziny, chciałbym aby znajdowały się również dni i minuty, jest szansa jakoś to dodać? Lub czy posiadacie taki skrypt już gotowy? :/ 

 

Jest: (x godz.)

Chciałbym: (x Dni x godz. x min.)

 

function getUnixFromTimespan(t: timespan) :: number:
	set {_} to unix date of 0
	add {_t} to {_}
	set {_return} to unix timestamp of {_}
	return {_return}

on disconnect:
	set {time::%name of player%} to (getUnixFromTimespan(time played of player) / 3600)

command /top [<string>]:
	trigger:
		set {_offline::*} to all offline players
		loop all players:
			set {time::%name of loop-player%} to (getUnixFromTimespan(time played of loop-player) / 3600)
		send "&fTopka czasu online:"
		send createTop("time", 10, {_offline::*}, "&f   &f[index]. &f[player]&f: &e[value] h")

 

Odnośnik do komentarza
Udostępnij na innych stronach

12 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • -2
Teraz, Legal napisał:

Dlaczego niekompletny? Skoro kod działa i pokazuje godziny... ale chciałbym, aby pokazywał dodatkowo dni i minuty.

Okej, chodzi mi o to, że nie ma funkcji createTop. W każdym razie, spróbuj zrobić tak jak wysłałem powyżej. 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Teraz, CoFFeIN04 napisał:

Okej, chodzi mi o to, że nie ma funkcji createTop. W każdym razie, spróbuj zrobić tak jak wysłałem powyżej. 

Napisał, że to jest skrypt od Pana Marudy na top online graczy.

 

Teraz, Legal napisał:

Dlaczego niekompletny? Skoro kod działa i pokazuje godziny... ale chciałbym, aby pokazywał dodatkowo dni i minuty.

W takim wypadku należałoby zmienić kod funkcji createTop, a bez zgody autora wolałbym mimo wszystko tego nie robić, bo nie mam zamiaru grzebać w czyimś kodzie bez jego zgody. Sprawdź czy skrypt nie ma możliwości ustawienia tego, jeżeli nie, to pisz do autora, być może ci ją przerobi.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Tutaj jest funkcja:

 

function createTop(name: string, size: number, list: objects, format: string="[PLAYER] - [VALUE]") :: strings:
    set {_index} to 1
    loop {_list::*}:
        if {%{_name}%::%loop-value%} is set:
            if {%{_name}%::%loop-value%} is a number:
                set {_top::%{_index}%} to {%{_name}%::%loop-value%}
                set {_players::%{_index}%} to "%loop-value%"
                add 1 to {_index}
    if {_size} > (size of {_players::*}):
        set {_size} to (size of {_players::*})
    loop {_size} times:
        loop {_top::*}:
            if {_max} is not set:
                set {_max} to loop-value-2
                set {_index} to loop-index
            else:
                if loop-value-2 > {_max}:
                    set {_max} to loop-value-2
                    set {_index} to loop-index
        set {_var} to {_format}
        replace "[PLAYER]" with {_players::%{_index}%} in {_var}
        replace "[INDEX]" with "%loop-number%" in {_var}
        replace "[VALUE]" with "%{_max}%" in {_var}
        add {_var} to {_return::*}
        delete {_players::%{_index}%}, {_top::%{_index}%}, {_max} and {_index}

    return {_return::*}

 

No to poczekam na PanaMarude, może zerknie tutaj i pomoże :/

Chodzi bardziej o to, aby było top 10 czasu online, a nie sprawdzenie kto ile czasu ma :/

 

Zaktualizowałem sobie funkcję do 4.3.0 i ogólnie wszystkie topki mi działają, ewentualnie wkradło mi się jakieś <none>, ale mniejsza... wszystko segreguje się dobrze, lecz właśnie topka czasu wygląda tak:

(PaperSpigot 1.12.2), Skript najnowszy

 

bnoauFD.png

 

Jak to naprawić i jak ustawić, aby było po polsku ładnie :/ 

 

11 godzin temu, PanMaruda napisał:

trzeba chyba zmienną wyczyścić - wklej sobie to do kodu, przeładuj skrypt, usuń z powrotem i przeładuj jeszcze raz.



on load:
 delete {time::*}

 

co do polskich nazw - musisz topkę pobrać do zmiennej, zmienną zapętlić i podmienić każdą angielską nazwę czasu na polski odpowiednik, dam ci początek bo na telefonie jestem i ciężej się pisze:



set {_top::*} to cretetop...
loop {_top::*}:
  set {_} to loop-value
  replace all "days" with "dni" in {_}
  replace all "day" with "dzień" in {_}
  replace all "hours"...
  hour...
  minutes...
  minute...
  seconds...
  second...
  replace all "and" with "i" in {_}
  
  send {_}
  

 

Super, sprawdzę później jak będę w domu, dzięki Ci bardzo za poświęcony czas ;) Miłego dniocha.

 

Teraz to cały skrypt się zbugował... Wyświetla wszystkim ten sam czas gry, nie segreguje się, gracz <none> nawet się wkradł :/

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3

Zaktualizuj skrypt bo widzę że jest to stary skrypt Pana Marudy i jeżeli chcesz te godziny i minuty to do zmiennych zapisuj po prostu time span a nie unix 

on disconnect:
	set {time::%name of player%} to time played of player

command /top [<string>]:
	trigger:
		set {_offline::*} to all offline players
		loop all players:
			set {time::%name of loop-player%} to time played of loop-player
		send "&fTopka czasu online:"
		send createTop("time", 10, {_offline::*}, "&f   &f[index]. &f[player]&f: &e[value]")

 

Edytowane przez xAxee
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

dokładnie tak jak ci xAxee podał: jego kod i aktualizacja do 4.2.0

 

jeżeli masz ostatnią wersję 4.3.0 (i spełnione wymagania) to kod może wyglądać nawet tak:

on disconnect:
	set {time::%name of player%} to time played of player

command /top [<string>]:
	trigger:
		loop all players:
			set {time::%name of loop-player%} to time played of player
		send "&fTopka czasu online:"
		send createTop("time", 10, "&f   &f[index]. &f[player]&f: &e[value]")

 

Edytowane przez PanMaruda
Odnośnik do komentarza
Udostępnij na innych stronach

  • 1
8 godzin temu, Legal napisał:

 

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Jak to naprawić i jak ustawić, aby było po polsku ładnie :/ 

trzeba chyba zmienną wyczyścić - wklej sobie to do kodu, przeładuj skrypt, usuń z powrotem i przeładuj jeszcze raz.

on load:
 delete {time::*}

 

co do polskich nazw - musisz topkę pobrać do zmiennej, zmienną zapętlić i podmienić każdą angielską nazwę czasu na polski odpowiednik, dam ci początek bo na telefonie jestem i ciężej się pisze:

set {_top::*} to cretetop...
loop {_top::*}:
  set {_} to loop-value
  replace all "days" with "dni" in {_}
  replace all "day" with "dzień" in {_}
  replace all "hours"...
  hour...
  minutes...
  minute...
  seconds...
  second...
  replace all "and" with "i" in {_}
  
  send {_}
  

 

Edytowane przez PanMaruda
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
12 godzin temu, PanMaruda napisał:

trzeba chyba zmienną wyczyścić - wklej sobie to do kodu, przeładuj skrypt, usuń z powrotem i przeładuj jeszcze raz.


on load:
 delete {time::*}

 

co do polskich nazw - musisz topkę pobrać do zmiennej, zmienną zapętlić i podmienić każdą angielską nazwę czasu na polski odpowiednik, dam ci początek bo na telefonie jestem i ciężej się pisze:


set {_top::*} to cretetop...
loop {_top::*}:
  set {_} to loop-value
  replace all "days" with "dni" in {_}
  replace all "day" with "dzień" in {_}
  replace all "hours"...
  hour...
  minutes...
  minute...
  seconds...
  second...
  replace all "and" with "i" in {_}
  
  send {_}
  

 

 

 

Mógłbyś mi dokończyć ten kod? Byłbym wdzięczny ponieważ coś mi nie chce wyjść to ehh

 

Aktualnie wszystko działa już, jedynie brakuje mi tych dni godzin itd.

 

Kod wygląda teraz tak:

 

on join:
	if {time::%name of player%} is not set:
		set {time::%name of player%} to 0

on disconnect:
	set {time::%name of player%} to time played of player


command /topki:
	trigger:
		open chest with 6 rows named "TEST" to player
		wait 3 tick
		format slot 16 of player with clock named "Czas gry" with lore createTop("time", 10, "&f   &f[index]. &f[player]&f: &e[value]") to be unstealable

command /top [<string>]:
	trigger:
		loop all players:
			set {time::%name of loop-player%} to time played of player
		send "&fTopka czasu online:"
		send createTop("time", 10, "&f   &f[index]. &f[player]&f: &e[value]")


function createTop(name: string, size: integer, format: string="[P] - [V]") :: strings:
    set {_indices::*} to all indices of {%{_name}%::*}
    set {_index} to 1
    if {_size} = 0:
        return ""
    if {_size} < 0:
        set {_reversed} to true
        set {_size} to ({_size} * (-1))
    loop {_indices::*}:
        if {%{_name}%::%loop-value%} = number or timespan or date:
            set {_values::%{_index}%} to {%{_name}%::%loop-value%}
            set {_indexes::%{_index}%} to "%loop-value%"
            add 1 to {_index}
    if {_size} > (size of {_indexes::*}):
        set {_size} to (size of {_indexes::*})
    loop {_size} times:
        loop {_values::*}:
            if {_max} is not set:
                set {_max} to loop-value-2
                set {_index} to loop-index
            else:
                if {_reversed} is not true:
                    if loop-value-2 > {_max}:
                        set {_max} to loop-value-2
                        set {_index} to loop-index
                else:
                    if loop-value-2 < {_max}:
                        set {_max} to loop-value-2
                        set {_index} to loop-index
        set {_var} to {_format}
        replace "[VALUE]" and "[V]" with "%{_max}%" in {_var}
        replace "[INDEX]" and "[I]" with "%loop-number%" in {_var}
        replace "[PLAYER]" and "[P]" with {_indexes::%{_index}%} in {_var}
        add {_var} to {_return::*}
        delete {_indexes::%{_index}%}, {_values::%{_index}%}, {_max} and {_index}
    return {_return::*}

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2
function translate(return: text) :: text:
    set {_ang::*} to ("years" and "year", "months", "month", "days", "day", "hours" ,  "hour", "minutes" ,  "minute", "seconds", "second", "and")
    set {_pl::*} to ("lata" and "rok", "miesiecy", "miesiac", "dni", "dzien", "godzin", "godzina", "minut", "minuta", "sekund", "sekunda", "i")
    loop {_ang::*}:
        replace all loop-value with {_pl::%loop-index%} in {_return}
    return {_return}
function translateList(r: texts) :: texts:
	loop {_r::*}:
		add translate(loop-value) to {_return::*}
	return {_return::*}
function createTop(name: string, size: integer, format: string="[P] - [V]") :: strings:
    set {_indices::*} to all indices of {%{_name}%::*}
    set {_index} to 1
    if {_size} = 0:
        return ""
    if {_size} < 0:
        set {_reversed} to true
        set {_size} to ({_size} * (-1))
    loop {_indices::*}:
        if {%{_name}%::%loop-value%} = number or timespan or date:
            set {_values::%{_index}%} to {%{_name}%::%loop-value%}
            set {_indexes::%{_index}%} to "%loop-value%"
            add 1 to {_index}
    if {_size} > (size of {_indexes::*}):
        set {_size} to (size of {_indexes::*})
    loop {_size} times:
        loop {_values::*}:
            if {_max} is not set:
                set {_max} to loop-value-2
                set {_index} to loop-index
            else:
                if {_reversed} is not true:
                    if loop-value-2 > {_max}:
                        set {_max} to loop-value-2
                        set {_index} to loop-index
                else:
                    if loop-value-2 < {_max}:
                        set {_max} to loop-value-2
                        set {_index} to loop-index
        set {_var} to {_format}
        replace "[VALUE]" and "[V]" with "%{_max}%" in {_var}
        replace "[INDEX]" and "[I]" with "%loop-number%" in {_var}
        replace "[PLAYER]" and "[P]" with {_indexes::%{_index}%} in {_var}
        add {_var} to {_return::*}
        delete {_indexes::%{_index}%}, {_values::%{_index}%}, {_max} and {_index}
    return {_return::*}

on join:
	if {time::%name of player%} is not set:
		set {time::%name of player%} to time played of player
on disconnect:
	set {time::%name of player%} to time played of player


command /topki [<text>]:
	trigger:
		open chest with 6 rows named "TEST" to player
		wait 3 tick
		format slot 16 of player with clock named "Czas gry" with lore translateList(createTop("time", 10, "&f   &f[index]. &f[player]&f: &e[value]")) to be unstealable

command /top [<text>]:
	trigger:
		loop all players:
			set {time::%name of loop-player%} to time played of loop-player
		send "&fTopka czasu online:"
		send translateList(createTop("time", 10, "&f   &f[index]. &f[player]&f: &e[value]"))

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

@xAxee miejmy tylko nadzieję że funkcja z argumentami w funkcji zadziała poprawnie - a z reguły nie chcą działać i skript dostaje pierdolca XD
 

także w razie gdyby ci się autorze pojawił błąd w którejś linijce z tym kodem

translateList(createTop("time", 10, "&f   &f[index]. &f[player]&f: &e[value]"))

to trzeba go będzie rozpisać osobno:

set {_list::*} to createTop("time", 10, "&f   &f[index]. &f[player]&f: &e[value]")
set {_trans::*} ro translateList({_list::*})

#dopiero tutaj wstawiasz listę {_trans::*} do efektu (np. send albo do lore w gui)
send {_trans::*}

 

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...