Skocz do zawartości

[SK]Sortowanie list - topka (prosty sposób)


Rekomendowane odpowiedzi

Siemka!

 

Ostatnio stworzyłem taki kod, który pozwala zrobić topkę. Jest on prostszy, ale nie ma bajerów typu podział na strony. No i co najważniejsze, wreszcie mi to działa xD

 

A więc oto kod:

command /top:
	trigger:
		loop (size of {topka::*}) times:
			set {_wynik} to 0
			loop {topka::*}:
				loop-value is greater than {_wynik}:
					set {_wynik} to loop-value
					set {_nick} to loop-index
				clear {topka::%{_nick}%}
				set {_backup::%{_nick}%} to {_wynik}
			{_nick} is set:
				send "&4%loop-number%. &6%{_nick}% = &c%{_wynik}%"
				clear {_nick}
			else:
				exit loop
				loop {_backup::*}:
					loop-index is set:
						set {topka::%loop-index%} to loop-value

//Poprawiam kod, ale może być źle wytabowany. ~ Norbi, 19.04.2016r

Wyjaśnienie:

1. Najpierw tworzymy jakąś komendę, tutaj /top.
2. Zapętlamy ją tyle razy, ile jest w niej "rekordów", żeby wszystkie zostały pokazane. Można dać np. loop 10 times: aby pokazać tylko 10 "rekordów".
3. Ustawiamy wartość początkową na 0, w celu późniejszego porównywania.
4. Zapętlamy listę, w celu wyjęcia z niej najlepszego wyniku.
5. Sprawdzamy czy aktualna wartość jest większa od zapisanej, jeżeli tak to nadpisujemy.
6. Usuwamy końcowy (największy) wynik z listy, żeby się nie powtórzył później.
7. Dodajemy za to ten wynik do chwilowej listy "backup" żeby go potem przywrócić.
8. Dla bezpieczeństwa sprawdzamy czy {_nick} istneje, żeby zapobiec czemuś jak "10. <none> = 123"
9. Wysyłamy wiadomość o miejscu loop-number nicku {_nick} i wyniku {_wynik}.
10. Usuwamy {_nick} dla kolejnego loopa.
11. Zabezpieczenie: Jeżeli nie ma już rekordów spełniających wymagania to następuje wyjście z loopa, żeby bez sensu nie lagować. Można tam dodać wiadomość "Brak"
12. Po skończeniu wysyłania topki, zapętlamy listę z backupem i wracamy wartości do głównej listy.
Gotowe!

Uwagi:

Wyniki mniejsze lub równe pierwotnemu (tutaj 0) nie pokażą się.
Ta topka wyświetla od największego do najmniejszego wyniku.
Jeżeli chcesz to odwrócić, w linii 4-tej wpisz dużą liczbę, np. 99999999999999 a w 6-tej zamień greater na less.

Mam nadzieję, że komuś ten kod rozjaśni listy zmiennych i ogólnie pomoże :D

Odnośnik do komentarza
https://skript.pl/temat/7516-sksortowanie-list-topka-prosty-spos%C3%B3b/
Udostępnij na innych stronach

Masz plusa. Piszę skrypt to teraz będzie też w nim top, ale czy ja dobrze zrozumiałem? Jak zapętlę to 100 razy to będzie top 100? XD

Owszem. Właśnie tak to zadziała. No chyba że braknie zapisów w liście :D
Odnośnik do komentarza
https://skript.pl/temat/7516-sksortowanie-list-topka-prosty-spos%C3%B3b/#findComment-60390
Udostępnij na innych stronach

Offtop@ Czyli mam rozumieć, że większa część SDT nie potrafiła dla swojej potrzeby przerobić TOP 5 Pirata, aby wam dział/napisać własnego top x? OK xd

 

 

 

Co do poradnika, to nie dużo różni się od tego Pirata, widać, że jest to wzorowane na jego kodzie, lecz usunięta została opcja stron. Na dodatek masz inne nazwy zmiennych.

Ogólnie patrząc na oba poradniki, to tutaj jest troszkę lepiej wszystko wyjaśnione, bo w poradniku Pirata można się lekko zgubić. :)

 

O to mi głównie chodziło, im prościej tym lepiej.

Jest jedna zasadnicza różnica:

On potem drugi raz zapętla kod te x razy i wyświela wartości ze zmiennych, ja natomiast wysyłam je od razu ~ herhor

Odnośnik do komentarza
https://skript.pl/temat/7516-sksortowanie-list-topka-prosty-spos%C3%B3b/#findComment-60442
Udostępnij na innych stronach

  • Szifter zablokował(a) ten temat
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ę...