Witam,
Jak ustalić np. 15 najlepszych graczy na podstawie np. poziom[id]
Z góry dziękuję za pomoc.
Pozdrawiam, Daniel.
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Napisano 18.01.2015 22:26
Witam,
Jak ustalić np. 15 najlepszych graczy na podstawie np. poziom[id]
Z góry dziękuję za pomoc.
Pozdrawiam, Daniel.
Battlefield 2 Exp Mod
Napisano 18.01.2015 22:30
Na podstawie czego chcesz wyznaczyć? Jakiego moda? Coda? Jaki zapis? Nvault? SQL?
Użytkownik Wielkie Jol edytował ten post 18.01.2015 22:31
"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.
Napisano 18.01.2015 22:34
nvault, bf2 mod.
Chcę wyznaczyć na podstawie: poziom[id]
Tylko że mój bf2 jest edytowany.
Możesz zrobić na podstawie totalkills standardowego bf2.
Użytkownik Danny OK edytował ten post 18.01.2015 22:43
Battlefield 2 Exp Mod
Napisano 18.01.2015 23:44
https://forums.allie...ad.php?t=139584
Sprawdz /top15 dla cod moda na podstawie XP, istnieje takie, a dojdziesz do swojego rozwiazania (nalezy uzyc w/w inc [plugin /top15 codmod, go uzywa])
Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!
Na zlecenie i bez zlecenia zresztą też!
Napisano 19.01.2015 00:08
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
Napisano 19.01.2015 00:23
Napisano 19.01.2015 00:39
Magnet może ustala po największym zdobytym doświadczeniu ?
Napisano 19.01.2015 00:58
Chyba zrobię jednak wyświetlanie statystyk bf2 pierwszych 15 graczy z /rank.
Battlefield 2 Exp Mod
Napisano 19.01.2015 11:38
Napisano 19.01.2015 11:55
Nie rozumiem w jaki sposób Czaso szuka po wszystkich rekordach najwyższy poziom i sytuuje go na miejscu pierwszym, kolejny poziom na drugim etc.
Napisano 19.01.2015 12:12
sortowanie bąbelkowe
Napisano 19.01.2015 12:25
for(new i = 1; i <= num; i ++){ pos = nvault_util_read(vault, pos, key, 63, data, 31, timestamp) replace_all(data, 255, "#", " "); parse(data, dane[0], 31, dane[1], 31, dane[2], 31, dane[3], 31, dane[4], 31, dane[5], 31); split(key, name, 63, class, 63, "-"); replace_all(class, 63, trash, ""); poziom = max(1, str_to_num(dane[1])); doswiadczenie = str_to_num(dane[0]); for(new j = 0; j < MAX_TOP; j ++){ if(doswiadczenie >= top_doswiadczenie[j]){ for(new k = MAX_TOP; k > j; k --){ copy(top_name[k], 31, top_name[k-1]); copy(top_class[k], 31, top_class[k-1]); top_poziom[k] = top_poziom[k-1]; top_doswiadczenie[k] = top_doswiadczenie[k-1]; } copy(top_name[j], 63, name); copy(top_class[j], 31, class); top_poziom[j] = poziom; top_doswiadczenie[j] = doswiadczenie; break; } } }Zasada działania jest bardzo prosta i niestety jedyna słuszna.
for(new i = 1; i <= num; i ++){ pos = nvault_util_read(vault, pos, key, 63, data, 31, timestamp) replace_all(data, 255, "#", " "); parse(data, dane[0], 31, dane[1], 31, dane[2], 31, dane[3], 31, dane[4], 31, dane[5], 31); split(key, name, 63, class, 63, "-"); replace_all(class, 63, trash, ""); poziom = max(1, str_to_num(dane[1])); doswiadczenie = str_to_num(dane[0]); new j; // Wyciągamy tworzenie zmiennej j tutaj, aby móc po pętli sprawdzić czy została przerwana break'iem for(j = MAX_TOP-1; j >= 0; j --){ // Tablicę top15 przeczesujemy od końca, dzięki czemu jeśli dany gracz nie znajdzie się w top15, pętla wykona się tylko RAZ! if(doswiadczenie < top_doswiadczenie[j] && j == MAX_TOP-1) // jeśli nie ma w tablicy żadnego gracza o mniejszej ilości expa, wychodzimy z pętli break; if(doswiadczenie < top_doswiadczenie[j]) { // Ten gracz ma już więcej expa od aktualnie wstawianego, wrzucamy więc dane gracza ZA nim i wychodzimy z pętli. copy(top_name[j+1], 31, name); copy(top_class[j+1], 31, class); top_poziom[j+1] = poziom; top_doswiadczenie[j+1] = doswiadczenie; break; } // Ten gracz ma mniej expa od aktualnie sprawdzanego, przesuwamy więc go o 1 w dół. copy(top_name[j+1], 31, top_name[j]); copy(top_class[j+1], 31, top_class[j]); top_poziom[j+1] = top_poziom[j]; top_doswiadczenie[j+1] = top_doswiadczenie[j]; } if (j<0) { // Jeśli pętla wykonała się do końca, j będzie równe -1. To oznacza, że w top 15 nie ma gracza z większym expem, aktualnie sprawdzany wskakuje więc na 1 miejsce. copy(top_name[0], 31, name); copy(top_class[0], 31, class); top_poziom[0] = poziom; top_doswiadczenie[0] = doswiadczenie; } }W ten sposób po 1. mamy tylko 1 wewnętrzną pętlę, po 2. wewnętrzna pętla wykona się maksymalnie 15 razy dla każdej iteracji zewnętrznej pętli (tylko jeśli gracz wskakuje na 1 lub 2 miejsce w top15, jeśli wskakuje na ostatnie, wykona się całe 2x), a po 3. wewnętrzna pętla zostanie przerwana po 1 iteracji jeśli dany gracz nie wskakuje do top15 wcale.
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
Napisano 19.01.2015 13:00
Aaaa no tak teraz zajarzyłem wykorzystam tą metodę przy robieniu czegoś podobnego w SQL
Napisano 19.01.2015 13:16
SELECT * FROM `Customers` ORDER BY `CustomerID` LIMIT 15W pluginie wykonujesz zapytanie, później http://amxx.pl/dokum...SQL_MoreResults i do przodu
If you can dream it, you can do it.
Napisano 19.01.2015 13:57
Ooo widzisz super, bardzo mi to ułatwi zadanie. Dzięki
0 użytkowników, 0 gości, 0 anonimowych