Skocz do zawartości
  • 0

Ranking z yml (nietypowe)


HackerPL
 Udostępnij

Pytanie

A więc tak, posiadam plik yml z Takim czymś:

Ranking:  HackerPL:    deaths: 2    rank: 904  JakisInnyGracz:    kills: 7    rank: 1076    deaths: 17  Gown1:    deaths: 31    rank: 875    kills: 36  Down2:    kills: 12    rank: 808    deaths: 36

 

(jest tego dosyć dużo) 

I chciał bym to ułożyć w postać rankingu. Dało by się to jakoś objąć i zrobić z tego top10 najlepszych graczy (po wpisaniu np. /top10) ? może być top10 samego rankingu. Był bym wdzięczny, bo męczę się z tym już kilka godzin i nie potrafie tego ogarnąć. PS. plik YML znajduje się w folderze innego pluginu.

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

14 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

Musiałbyś jakoś zrobić liste tych graczy i dopisać do nich punkty ranku. Wymyśliłem coś takiego:

 

set {_gracze::*} to value list "Ranking" get of "... .yml"

niestety nie działa, nie da się tak zrobić. :/

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

  • 0

Problem jest w tym, żeby pobrać listę graczy.

No więc mój drugi pomysł:
Musisz zapisać cały tekst do zmiennej (o ile tak sie da, wiem, że dało sie tak zapisać plik, podając adres www)
I używają c:

replace "tekst" in {zmienna} with "tekst"

Usunąć liczby, ':', 'Ranking', 'rank', 'kills', 'deaths' itd.
Tak, aby zostały tylko nicki, wtedy dodajesz je do zmiennej grupowej.
Nie mam już więcej pomysłów xD

Musisz spróbować sam, albo poczekać na kogoś innego.

Bez API nie ma chyba żadnej innej możliwości :(

 

@edit
W sumie to ciężko będzię usunać liczby, bo gracz może mieć liczby w nicku :/

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

  • 0

Odczytujesz poprostu single value z tego pliku z sciezki "Ranking.%player%.kills" parsetujac jako liczba. Pamietaj aby zapisac to do zmiennej listy czyli np {kills::%player%}. I wtedy bierzesz prosty skrypt na ranking. Gdzies na tym forum jest i wg tej listy robisz top10 :)

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

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

Tylko, że tym sposobem to on może odczytać punkty itd. dla jednego gracza a do zrobienia rankingu potrzeba wszystkich graczy.. (nie tylko tych online)

 

@topic

Ten ranking co piszesz jest na serwie, gdzie grają już gracze?
Jak tak, to nie miałbyś możliwości zrobić 'resetu' tego rankingu?

 

Wtedy mógłbyś zrobić tak:

on join:    if {ranking::gracze::*} contains player:        stop    add player to {ranking::gracze::*}    stop

I w komendzie:

loop {ranking::gracze::*}:    set {_rank::%loop-value%} to single value "Ranking.%loop-value%.rank" get of "... .yml"

No i dalej to co jest od 7 linijki w tym co podałem w 2 poście.

 

PS. Ja to mam pomysły xD Przez ciebie spać w nocy nie mogłem ;)

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

  • 0
Ranking:  HackerPL:	deaths: 2	rank: 904  JakisInnyGracz:	kills: 7	rank: 1076	deaths: 17  Gown1:	deaths: 31	rank: 875	kills: 36  Down2:	kills: 12	rank: 808	deaths: 36
on join:  player hasn't played before:    add player to {players::*}on load:  loop {players::*}:    set {deaths::%loop-value%} to (value "Ranking.%loop-value%.deaths" get of "sciezka do pliku") parsed as number    set {kills::%loop-value%} to (value "Ranking.%loop-value%.kills" get of "sciezka do pliku") parsed as number    set {rank::%loop-value%} to (value "Ranking.%loop-value%.rank" get of "sciezka do pliku") parsed as number

Dalej to już czysta topka ;f Zależy jaką chcesz. Podział na strony/auto przewijanie/tylko 10 wyników :f

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

PS.  @Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! Dał byś radę coś zaradzić na mój drugi post z znikaniem graczy ? Bo widzę że się łapiesz w tym wszystkim.

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

 

@edit

Jeszcze jedno ! Bo ty tam napisałeś że po załadowaniu skryptu te zmienne są czytane, a gdyby zrobić że po wpisaniu komendy one są czytane ? Bo ten plik się ciągle aktualizuje bo to plik z pluginu na ranking. I zależy mi by ranking był aktualny :D ( takie rozwiązanie mocno by muliło serwer ? )

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

  • 0
every 30 minutes:  broadcast "&cAktualizacja rankingu rozpoczeta..."  loop {players::*}:	set {deaths::%loop-value%} to (value "Ranking.%loop-value%.deaths" get of "sciezka do pliku") parsed as number	set {kills::%loop-value%} to (value "Ranking.%loop-value%.kills" get of "sciezka do pliku") parsed as number	set {rank::%loop-value%} to (value "Ranking.%loop-value%.rank" get of "sciezka do pliku") parsed as number  brodcast "&aAktualizacja rankingu zakonczona! Nastepna aktualizacja za pol godziny!"
Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

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