Ta odpowiedź cieszy się zainteresowaniem. piratjsk 700 Opublikowano 1 lutego 2014 Ta odpowiedź cieszy się zainteresowaniem. Udostępnij Opublikowano 1 lutego 2014 Krótki poradnik jak posortować listę zmiennych od największej wartości do najmniejszej lub odwrotnie. Skript - sortowanie listy zmiennychUczymy się sortować listę zmiennych, czyli tworzyć ranking.I. O co chodzi?O co w tym wszystkim chodzi? Co chcemy osiągnąć? Założenia. W tym poradniku będziemy dążyć do stworzenia rankingu (dla przykładu: ilości wykopanego kamienia). Poradnik ten jest adresowany do osób posiadających podstawową wiedzę o pisaniu skryptów dla pluginu Skript.II. Tworzymy... nasz ranking. Na początek musimy stworzyć listę zmiennych przechowującą wartości liczbowe. W praktyce krok ten będzie polegał na przykład na stworzeniu skryptu zliczającego wykopany kamień. on join: {stone::%player%} is not set: set {stone::%player%} to 0 {nick::%player%} is not set: set {nick::%player%} to uncolored display name of player on mine of stone: add 1 to {stone::%player%} Stworzyliśmy więc listę zmiennych w formacie {stone::nazwa_gracza} przechowującą wartość liczbową, w naszym przypadku ilość wykopanego przez gracza kamienia. Dodatkowo stworzyliśmy zmienną przechowującą nick gracza z uwzględnieniem wielkości znaków. Następnym krokiem będzie stworzenie komendy /top, która będzie wyświetlała 5 najlepszych kopaczy kamienia. command /top [<integer=1>]: trigger: set {_strony} to rounded up (size of {stone::*} / 5) arg is between 1 and {_strony}: send "ranking kopaczy kamienia" loop {stone::*}: set {_lista::%loop-index%} to loop-value set {_num} to size of {_lista::*} set {_max} to arg * 5 set {_min} to {_max} - 4 loop {_max} times: loop {_lista::*}: {_wartosc.%loop-number%} is not set: set {_wartosc.%loop-number%} to loop-value-2 set {_nazwa.%loop-number%} to loop-index loop-value-2 is more than {_wartosc.%loop-number%}: set {_wartosc.%loop-number%} to loop-value-2 set {_nazwa.%loop-number%} to loop-index delete {_lista::%{_nazwa.%loop-number%}%} loop {_max} times: loop-number is between {_min} and {_max} loop-number <= {_num}: send "%loop-number%. %{nick::%{_nazwa.%loop-number%}%}% (%{_wartosc.%loop-number%}%)" {_max} is more than {_num}: set {_r} to {_num} loop {_max} - {_num} times: add 1 to {_r} send "%{_r}%. brak" send "Strona: %arg% z %{_strony}%" stop {_strony} is 1: send "Wyniki mieszcza sie na 1 stronie." stop send "Wyniki mieszcza sie na %{_strony}% stronach." Definiujemy komendę uwzględniając argument będący liczbą całkowitą wskazujący na stronę wyników którą chcemy zobaczyć. Zapisujemy do zmiennej {_strony} ilość stron jaką zapełnią wyniki. Sprawdzamy czy podana strona mieści się w przedziale od 1 do wcześniej zdefiniowanej zmiennej {_strony}. Dla bezpieczeństwa kopiujemy naszą listę - tworzymy listę roboczą na której będziemy pracować. Zapisujemy do zmiennej {_num} ilość wyników.(w naszym przypadku kopaczy kamienia) Zapisujemy do zmiennej {_max} nr ostatniego wyniku, który zmieści się na wybranej stronie.(mnożymy stronę razy ilość wyników na stronie) Do zmiennej {_min} zapisujemy nr pierwszego wyniku, który zmieści się na wybranej stronie.(od zmiennej {_max} odejmujemy ilość wyników na stronie minus 1)Sortujemy:Zapętlamy {_max} ilość razy, czyli tyle do jakiego miejsca w rankingu potrzebujemy wyniki.W każdym zapętleniu wykonujemy następujące czynności:- zapętlamy listę- zapisujemy wartość (do {_wartosc.%loop-number%}) i nazwę (do {_nazwa.%loop-number%}) pierwszej zmiennej. %loop-number% jest to numer zapętlenia, czyli pierwsze zapętlenie - 1, drugie - 2 itd...- sprawdzamy wartość każdej zmiennej czy nie jest większa od tej zapisanej - jeśli jest nadpisujemy ją. w ten sposób po sprawdzeniu wartości wszystkich zmiennych w {_wartosc.%loop-number%} mamy zapisaną tą o najwyższej wartości- usuwamy zapisaną zmienną z listyi następne zapętlenie, czyli nasz kod się powtarza z tą różnicą, że zmienna o największej wartości jest już inna gdyż pierwszą usunęliśmy z listy.Efektem naszej dotychczasowej pracy są pary zmiennych:- {_wartosc.1}, {_nazwa.1} - przechowują zmienną o największej wartości- {_wartosc.2}, {_nazwa.2} - przechowują zmienną o mniejszej wartości- {_wartosc.3}, {_nazwa.3} - przechowują zmienną o mniejszej wartości- itd...Wyświetlamy:Ponownie zapętlamy kod tyle razy, do którego miejsca w rankingu potrzebujemy wyniki.W każdym zapętleniu wykonujemy następujące czynności:- sprawdzamy czy numer zapętlenia mieści się w przedziale wyników, które chcemy zobaczyć na danej stronie- sprawdzamy czy numer zapętlenia nie jest większy niż ilość wpisów z listy (w naszym przypadku kopaczy kamienia)- jeśli powyższe warunki są spełniony wyświetlamy wiadomość "%loop-number%. %{nick::%{_nazwa.%loop-number%}%}% (%{_wartosc.%loop-number%}%)", która będzie miała postać np: "1. PiratJaskiniowy (99)"Sortowanie wartości od najmniejszej do największej:Co w przypadku gdy chcemy posortować listę w odwrotnym kierunku? Wystarczy w 12 linii zmienić "more" na "less". Otrzymamy wtedy wyniki w takiej formie jak wcześniej z tą różnicą, że zmienna {_wartosc.1} będzie przechowywać najmniejszą wartość. Co się stanie gdy ostatnia strona nie zostanie zapełniona? - Będzie krótsza od reszty. Możemy jednak temu zaradzić:- Sprawdzamy czy taki stan ma miejsce. (czy maksymalna ilość wyników jest większa niż przechowywana w naszej liście)- Zapisujemy ilość zmiennych w liście do {_r}.- Zapętlamy kod /maksymalna ilość wyników minus liczba wpisów z naszej listy/ razy.- Dodajemy 1 do {_r}.- Wyświetlamy wiadomość "%{_r}%. brak", która będzie miała postać np: "33. brak". HardStyl3r, theneuetimes, Patryk D i 13 innych 16 Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/ Udostępnij na innych stronach Więcej opcji udostępniania...
Nieaktywny Opublikowano 7 lutego 2014 Udostępnij Opublikowano 7 lutego 2014 Poradnik spoko :D . Leci Like. Może ten poradnik wykorzystam w moich skryptach. Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-107 Udostępnij na innych stronach Więcej opcji udostępniania...
theneuetimes 522 Opublikowano 16 lutego 2014 Udostępnij Opublikowano 16 lutego 2014 Świetny poradnik, zrobiłem sobie topkę pvp. :D Ale mam 1 problem - Gdy ktoś ma w nicku duże litery to one są wyświetlane jako małe. Da się coś z tym zrobić? Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-255 Udostępnij na innych stronach Więcej opcji udostępniania...
ToNy 548 Opublikowano 18 kwietnia 2014 Udostępnij Opublikowano 18 kwietnia 2014 Świetny poradnik, zrobiłem sobie topkę pvp. :D Ale mam 1 problem - Gdy ktoś ma w nicku duże litery to one są wyświetlane jako małe. Da się coś z tym zrobić?Niestety nie. Jest to sposób zapisu i tego nie zmienisz. bartek2323` i Boom 2 Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-1941 Udostępnij na innych stronach Więcej opcji udostępniania...
Nieaktywny Opublikowano 27 kwietnia 2014 Udostępnij Opublikowano 27 kwietnia 2014 (edytowane) Świetny poradnik, zrobiłem sobie topkę pvp. :D Ale mam 1 problem - Gdy ktoś ma w nicku duże litery to one są wyświetlane jako małe. Da się coś z tym zrobić? Wiem, że późno, ale może się przyda na przyszłość :P Generalnie zrób sobie zmienną dla każdego gracza, np. {player.nick.%player%} i zapisuj jego nazwę. Później przy wyświetlaniu w rankingu, zamiast podawać zmienne prosto z indexowania, wrzuć naszą zmienną z nickiem, a za %player% podstaw tą z sortowania. :) Tu Ci wrzucam jeszcze topke z moich gildii, co dodaje Ci tu nieskończoną ilość miejsc w rankingu, bo dzielona jest na strony. Może się komuś przyda :)# -- TOP / Ranking --command /gtop [<integer>]: trigger: set {_page} to arg 1 if {_page} is not set: set {_page} to 1 set {_num} to size of {ultimateclans.ranks.list::*} set {_pages-int} to ceil({_num}/10) if {_pages-int} is smaller than 1: set {_pages-int} to 1 if {_page} is smaller than 1: send "&cNie ma takiej strony!" stop if {_page} is greater than {_pages-int}: send "&cNie ma takiej strony!" stop loop {ultimateclans.ranks.list::*}: loop {_num} times: set {_ultimateclans.ranks.list::%loop-index%} to loop-value loop {_num} times: loop {_ultimateclans.ranks.list::*}: if {_point.%loop-number%} is not set: set {_point.%loop-number%} to loop-value set {_clan.%loop-number%} to loop-index else if loop-value is greater than {_point.%loop-number%}: set {_point.%loop-number%} to loop-value set {_clan.%loop-number%} to loop-index remove {_point.%loop-number%} from {_ultimateclans.ranks.list::*} send "&8--------------[ &6Ranking Gildii &8] [&6%{_page}%&8/&6%{_pages-int}%&8]--------------" if {_num} is smaller than 1: send "&71. &6== Na serwerze nie ma jeszcze zadnej gildii ==" stop loop {_num} times: #8 set {_pages-list} to ({_page}-1)*10 #0 add loop-number to {_pages-list} #1 if {ultimateclans.clan.%{_clan.%{_pages-list}%}%.name} is not set: stop send "&7%{_pages-list}%&8. &6%{ultimateclans.clan.%{_clan.%{_pages-list}%}%.name}%&8: &6%{_point.%{_pages-list}%}%" set {_ultimateclans.ranks.list::%{_clan.%{_pages-list}%}%} to {_point.%{_pages-list}%} if {_pages-list} is equal to 10: stop Edytowane 27 kwietnia 2014 przez Nieaktywny Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-2679 Udostępnij na innych stronach Więcej opcji udostępniania...
LeviBoyPL 161 Opublikowano 27 kwietnia 2014 Udostępnij Opublikowano 27 kwietnia 2014 (edytowane) Moglbym ten kod zmodyfikowac pod swoje potrzeby, czy zastrzegasz praw do edycji? Edytowane 27 kwietnia 2014 przez LeviBoyPL Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-2689 Udostępnij na innych stronach Więcej opcji udostępniania...
Nieaktywny Opublikowano 27 kwietnia 2014 Udostępnij Opublikowano 27 kwietnia 2014 (edytowane) Mówisz o moim? Jeżeli tak, to nie ma sprawy, wrzucam żeby można było sobie z tego skorzystać :) Edit: Down @LeviBoyPL Spoko :P Edytowane 27 kwietnia 2014 przez Nieaktywny Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-2691 Udostępnij na innych stronach Więcej opcji udostępniania...
LeviBoyPL 161 Opublikowano 27 kwietnia 2014 Udostępnij Opublikowano 27 kwietnia 2014 Aha bardzo dziekuje, chce na jego podstawie zrobic top 5/10 na pvp. Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-2693 Udostępnij na innych stronach Więcej opcji udostępniania...
franio3321 18 Opublikowano 5 maja 2014 Udostępnij Opublikowano 5 maja 2014 Dzięki :D Przerobiłem sobie nieco kod pod serwer PvP mam TOP graczy właśnie tego szukałem AboundPL 1 Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-3287 Udostępnij na innych stronach Więcej opcji udostępniania...
PoweredDragon 1016 Opublikowano 6 maja 2014 Udostępnij Opublikowano 6 maja 2014 To ja mam wyzwanie: Dodałbyś do poradnika sortowanie od najmniejszej do największej Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-3312 Udostępnij na innych stronach Więcej opcji udostępniania...
Nieaktywny Opublikowano 6 maja 2014 Udostępnij Opublikowano 6 maja 2014 Pierwsza myśl - Zapisujesz moja metoda każdemu pozycję, następnie przy wyswietlaniu, przed petla zapisujesz rozmiar listy. Juz w pętli odejmujesz 1 od wielkosci i tą liczbę podajesz jako pozycja. Izi xd #// Wysłane z Panda Phone Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-3314 Udostępnij na innych stronach Więcej opcji udostępniania...
theneuetimes 522 Opublikowano 6 maja 2014 Udostępnij Opublikowano 6 maja 2014 Proste, ale nie dla każdego, pamiętaj. :D [~] Wyklikane z Tapatalk. [~] ToNy 1 Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-3323 Udostępnij na innych stronach Więcej opcji udostępniania...
LeviBoyPL 161 Opublikowano 6 maja 2014 Udostępnij Opublikowano 6 maja 2014 Dokładnie... Są lepsi i gorsi! Każdy niech zwraca na to uwagę, bo zgrzyty są o to niepotrzebnie... Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-3344 Udostępnij na innych stronach Więcej opcji udostępniania...
PoweredDragon 1016 Opublikowano 6 maja 2014 Udostępnij Opublikowano 6 maja 2014 (edytowane) Żart. Weź to Dziki przekształć, bo nie ogarniam xD Edytowane 6 maja 2014 przez PoweredDragon Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-3348 Udostępnij na innych stronach Więcej opcji udostępniania...
Freeklie 2 Opublikowano 16 maja 2014 Udostępnij Opublikowano 16 maja 2014 (edytowane) Mam problem z tym.{_num} to size of {stone::*}Wykonuje to w czasie rzeczywistym, ale wielkość tej tablicy też w czasie rzeczywistym, więc liczba pokaże się w chwili kiedy gracz wykopie stone. Czy to przez to że korzystam ze spigota? Czy to jest dodatek jakiegoś dodatku? @EditPo dokładnym sprawdzeniu okazuje się, że po wpisaniu top wszystkie wartości się zerują. Czy takie coś jest zamierzone? Edytowane 16 maja 2014 przez Freeklie Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-4143 Udostępnij na innych stronach Więcej opcji udostępniania...
piratjsk 700 Opublikowano 24 maja 2014 Autor Udostępnij Opublikowano 24 maja 2014 Aktualizacja!- dodane zabezpieczenie przed utratą danych- dodane sortowanie listy od najmniejszej do największej wartości- nazwy zmiennych zmienione na przystępniejsze Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-4986 Udostępnij na innych stronach Więcej opcji udostępniania...
Nieaktywny Opublikowano 24 maja 2014 Udostępnij Opublikowano 24 maja 2014 Pirat, wrzuc moze w główny (Twój) post dzielenie na strony + nazwa z uwzględnieniem wielkości liter. Skoro masz ten temat, a ja tak czy inaczej sie nie rozpisze, to chyba warto :p #// Wykarmione z Panda Phone Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-5020 Udostępnij na innych stronach Więcej opcji udostępniania...
piratjsk 700 Opublikowano 24 maja 2014 Autor Udostępnij Opublikowano 24 maja 2014 Aktualizacja nr 2!- dodane stronicowanie - dodane uwzględnianie wielkości znaków w nickach graczy(aktualizacja pisana późno w nocy więc nie miejcie mi za złe jeśli pojawią się jakieś błędy lub niejasności) Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-5059 Udostępnij na innych stronach Więcej opcji udostępniania...
herhor67 916 Opublikowano 30 maja 2014 Udostępnij Opublikowano 30 maja 2014 set {nick::%player} to ... raking A tak to spoko, ale nic z tego nie rozumiem :) Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-5500 Udostępnij na innych stronach Więcej opcji udostępniania...
NeXv 21 Opublikowano 2 czerwca 2014 Udostępnij Opublikowano 2 czerwca 2014 Czy mógł mi ktoś podesłać gotowego tego Topa bo niewiem czemu ale mi wywala błędy Odnośnik do komentarza https://skript.pl/temat/6-skript-sortowanie-listy-zmiennych-tworzymy-top-5/#findComment-5886 Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi