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ć