Musisz przypisać identyfikator do funkcji infoMessage() bo jest ona wywoływana taskiem więc użycie pętli for może nie być skutecznym rozwiązaniem w tym przypadku.
Zamień:
if (freq_im > 0.0)
set_task(freq_im, "infoMessage", 12345)
Na:
if (freq_im > 0.0) {
for(new i=1; i<=32; i++) {
if(!is_user_connected(i) || is_user_hltv(i)) continue;
set_task(freq_im, "infoMessage", i+12345)
}
}
Oraz te podmień te funkcje
public infoMessage(id)
{
id -= 12345
if (g_Current >= g_MessagesNum)
g_Current = 0
// No messages, just get out of here
if (g_MessagesNum==0)
{
return;
}
new values[3];
new Message[384];
ArrayGetString(g_Messages, g_Current, Message, charsmax(Message));
ArrayGetArray(g_Values, g_Current, values);
new hostname[64];
get_cvar_string("hostname", hostname, charsmax(hostname));
replace(Message, charsmax(Message), "%hostname%", hostname);
new rankmax[10];
formatex(rankmax, charsmax(rankmax), "%i", get_statsnum());
replace(Message, charsmax(Message), "%rankmax%", rankmax);
set_hudmessage(values[0], values[1], values[2], X_POS, Y_POS, 0, 0.5, HOLD_TIME, 2.0, 2.0, -1);
new stats[8], bodyhits[8] //tworzymy tablice na dane statystyk
new pos = get_user_stats(id, stats, bodyhits) // pobieramy statysytki gracza
new rank[10];
formatex(rank, charsmax(rank), "%i", pos);
replace(Message, charsmax(Message), "%rank%", rank);
show_hudmessage(i, "%s", Message);
client_print(0, print_console, "%s", Message);
++g_Current;
new Float:freq_im = get_pcvar_float(amx_freq_imessage);
if (freq_im > 0.0)
set_task(freq_im, "infoMessage", id+12345);
}
Powyższa funkcja jest modyfikacją modyfikacji boskiego wiec nie gwarantuje ze sie skompiluje, ale jest przykładem jak to powinno działać
Użytkownik Deus Vult edytował ten post 14.02.2023 19:28