Była teraz taka taktyczna zmiana tematu, więc tamtej wiadomości tu nie ma, ale odniosę się do twojego pytania @kiroxtv (link). Trochę spóźnione, ale czekałem z kolejną wersją i tą odpowiedzią przez święta. Nazwijmy to co teraz napiszę "poradnikiem" dotyczącym korzystania ze skryptu:
Można od teraz (tj. wersja druga) ustawiać swoje formatowanie przy każdym tworzeniu nowej topki. Chciałbym tego uniknąć i móc zwracać posortowaną listę, w której nick będzie indeksem, a liczba - wartością zmiennej, lecz niestety ograniczeniem jest skript, który namiętnie segreguje sobie wszystkie indeksy w ustalonym porządku. Dlatego też trzeba skupić się na tym co jest i nauczyć się tego używać.
Chcąc zrobić tak jak Kiro - topkę w GUI z głowami graczy - trzeba rozdzielić uzyskane wartości na nicki graczy oraz ich punkty. Jeżeli nie ustalimy własnego formatu, będzie to bardzo proste, ponieważ te dwie wartości oddziela tylko myślnik. Zwracana lista będzie wyglądać tak:
Kiro - 100
Maruda - 78
ZiemniaQ - 21
Zatem mamy naszą topkę - trzeba ją zapętlić i użyć wyrażenia 'split at', które zwróci kolejną listę, gdzie pierwszym wynikiem będzie nick gracza, a drugim jego punkty:
loop {_topka::*}:
#loop-value przechowuje cały czas format "Gracz - Punkty" (wartości są oddzielone dwoma spacjami i myślnikiem)
#dzielimy więc nasz tekst na dwie wartości znajdujące się pomiędzy spacjami i myślnikiem: " - "
set {_nowaLista::*} to loop-value split at " - "
#{_nowaLista::1} zawiera teraz nick gracza (zapisane jako tekst)
#{_nowaLista::2} zawiera punkty gracza (również jako tekst)
Kod skryptu powinien więc wyglądać mniej więcej tak:
command /topkasmierci [<text>]:
trigger:
#Tworzymy topkę z 9 wynikami (zostawiając domyślny format)
set {_topsmierci::*} to createTop("smierciog", 9, all offline players)
#Otwieramy inventory z jednym rzędem (ten efekt oraz poniższe do formatowania slotów pochodzą z dodatku TuSKe)
open virtual chest inventory with 1 rows named "&f&lTopka &6&lKiroksiewicz" to player
#Zapętlamy uzyskaną zmienną
loop {_topsmierci::*}:
#Oddzielamy graczy od ich punktów (jak w przykładzie powyżej)
set {_lista::*} to loop-value split at " - "
#{_lista::1} przechowuje nick gracza ale zapisany jako tekst, a do pobrania jego głowy potrzebujemy by zmienna zawierała gracza
#Ustawiamy więc tą zmienną na typ gracz
set {_lista::1} to ({_lista::1} parsed as offline player)
#Potrzebujemy również numer zapętlenia, które aktualnie wykonuje skrypt - przyda się do ustawienia slotu w GUI. Te indeksy zapisują się od 1
#w górę oraz są tekstem. Jako że sloty w GUI numerowane są od zera, to potrzebujemy zapisać indeks jako liczbę i pomniejszyć go o 1
set {_index} to ((loop-index parsed as integer) - 1)
#Stwórzmy sobie przedmiot, który wstawimy w GUI - będzie to głowa gracza mająca w nazwie nick gracza, jego punkty oraz zajęte miejsce,
#Do wpisania tych wartości, użyjemy stworzonych zmiennych
#loop-index - miejsce w topce
#{_lista::1} - nick gracza
#{_lista::2} - śmierci gracza
set {_item} to skull of {_lista::1} named "&6%{_lista::1}% &7zajmuje &e%loop-index% &7miejsce ginąc &e%{_lista::2}% razy"
#Mając już przedmiot oraz slot, możemy stworzyć slot w GUI:
format gui slot {_index} of player with {_item}
Pozdrawiam i życzę miłego pisania.
Ps. @xAxee obawiam się że jeżeli chodzi o zwracane wartości, to nic lepszego nie jestem w stanie zrobić poprzez Skripta. Teraz przynajmniej będzie się tego przyjemniej używać (taką mam nadzieję).