Najlepszy gracz mapy
dram
07.10.2010
Witam.
Chciałbym napisać coś takiego.
Że pod koniec mapy plugin szuka najlepszego gracza z obydwu teamów i wykonuje na tym graczu dany kod. Przykładowo ten gracz dostaje HE.
Wiem ,że trzeba będzie pętlę użyć. Ale w którym miejscu na liście eventów nie ma eventu który wykonuje się pod koniec mapy tylko pod koniec rundy .
Tutaj ta lista: Half-Life 1 Game Events - AlliedModders Wiki
Pozdrawiam czekam na odpowiedź.
Chciałbym napisać coś takiego.
Że pod koniec mapy plugin szuka najlepszego gracza z obydwu teamów i wykonuje na tym graczu dany kod. Przykładowo ten gracz dostaje HE.
Wiem ,że trzeba będzie pętlę użyć. Ale w którym miejscu na liście eventów nie ma eventu który wykonuje się pod koniec mapy tylko pod koniec rundy .
Tutaj ta lista: Half-Life 1 Game Events - AlliedModders Wiki
Pozdrawiam czekam na odpowiedź.
kyku
07.10.2010
co jakis czas taskiem musisz sprawdzac ile czasu pozostalo do konca mapy
get_timeleft np.
get_timeleft np.
dram
07.10.2010
No dobra ale teraz to w jedną logiczną całość przyjmując domyślne ustawienie ,że do końca mapy pozostało 25 minut. Ale już na 24 minucie będzie task do pętli, i jak ta pętla ma wyglądać która szuka najlepszego gracza na mapie*?
Pozdrawiam
Chociaż wole żeby pobierało mi samo ile zostało do końca mapy bo może być tak że mapa zostanie rozszerzona (podczas votowania w amxX)
Dodano 07 październik 2010 - 17:57:
Dobra mam taska.
Teraz kwestia pętli która szuka gracza który ma najwięcej fragów.
Proszę o pomoc.
Pozdrawiam.
Użytkownik dram edytował ten post 07.10.2010 17:33
Pozdrawiam
Chociaż wole żeby pobierało mi samo ile zostało do końca mapy bo może być tak że mapa zostanie rozszerzona (podczas votowania w amxX)
Dodano 07 październik 2010 - 17:57:
Dobra mam taska.
Teraz kwestia pętli która szuka gracza który ma najwięcej fragów.
Proszę o pomoc.
Pozdrawiam.
Użytkownik dram edytował ten post 07.10.2010 17:33
R3X
08.10.2010
set_task ma flagę "d", która odpowiada za czas przed końcem mapy
Łatwo i szybko można to zrobić z sortowaniem tablicy polecam SortCustom2D
Dokumentacja AMXX.pl - Nieoficjalny polski support AMX Mod X
tu jest przykład użycia; myArray powinien mieć jeszcze 1 kolumnę na id gracza, ale funkcja sortująca porownaj2D się nie zmieni
Ten kod nie uwzględnienia przypadku, gdy jest kilku graczy którzy mają najlepsze fragi.
Łatwo i szybko można to zrobić z sortowaniem tablicy polecam SortCustom2D
Dokumentacja AMXX.pl - Nieoficjalny polski support AMX Mod X
tu jest przykład użycia; myArray powinien mieć jeszcze 1 kolumnę na id gracza, ale funkcja sortująca porownaj2D się nie zmieni
Ten kod nie uwzględnienia przypadku, gdy jest kilku graczy którzy mają najlepsze fragi.
public taskEndMap(){ new myArray[32][3], len = 0; for(int id=1;id<33;id++){ if(!is_user_connected(id)) continue; myArray[len][0] = get_user_frags(id); myArray[len][1] = get_user_deaths(id); myArray[len][2] = id; len++; } if(len == 0) return; SortCustom2D(myArray, len, "porownaj2D"); log_amx("Najlepszy gracz: %d! %d fragów, %d smierci", myArray[0][2], myArray[0][0], myArray[0][1]); } /* * Sortowanie malejące * * Nie używamy własnych danych, więc data[] i data_size nie są potrzebne * podobnie jak array, więc lista parametrów skróciła się do 2 */ public porownaj2D(const elem1[], const elem2[]){ if(elem1[0] == elem2[0]){ //gdy ilość zabójstw obu graczy jest równa //o kolejności decyduje ilość śmierci if(elem1[1] == elem2[1]) //no cóż, takie same staty return 0; else if(elem1[1] < elem2[1]) //zabił tyle samo przeciwników, lecz ginął rzadziej -> idzie przed return -1; //zabił tyle samo przeciwników, lecz ginął częściej return 1; } else if(elem1[0] > elem2[0]) // zabił więcej przeciwników, więc idzie przed return -1; //zabił mniej przeciwników return 1; }
ZixI
08.10.2010
plugin_end ( ) { //code }
Powyzsza funkcja jest wywolywana przy zmianie mapy lub prawidlowym zamknieciu serwera. Prawdopodobnie nie wychwyci crasha.
Nie wiem czy o to Ci chodzi, ale sprawdź
R3X
09.10.2010
Może i dobrze, ale komunikatu wtedy nie wyświetlisz
30s przed zmianą mapy:
30s przed zmianą mapy:
set_task(30.0, "taskEndMap", 356, _, _, "d");