[AMXX] Displaying debug trace (plugin "amxbans_main.amxx") [AMXX] Run time error 25: parameter error [AMXX] [0] check_player.inl::prebanned_check_ (line ***)
Po wnikliwej obserwacji doszedłem do takiej sytuacji.
Linijka nr 67 przedstawia się w ten sposób
ColorChat(i, RED, "[AMXBans] ^x01%L",i, "PLAYER_BANNED_BEFORE", name, player_steamid, ban_count)
zaś linijka "PLAYER_BANNED_BEFORE" w pliku amxbans.txt przedstawia się w ten sposób
PLAYER_BANNED_BEFORE = [AMXBans]<%s> %s %s zostal wczesniej zbanowany %i razy.
Przyczyną tworzenia errorlogów z tej funkcji jest róźnica między wymaganą liczbą argumentów a oferowaną liczbą argumentów w funkcji ColorChat po "PLAYER_BANNED_BEFORE", tekst wymaga 4 argumentów, a funkcja oferuje 3 argumenty. Jak się później dowiedziałem, brakującym argumentem jest adres IP gracza
Usunąc z linijki PLAYER_BANNED_BEFORE w pliku amxbans.txt (znajdziesz go w addons -> amxmodx -> data -> lang) "%s". Czyli ma wyglądać tak
PLAYER_BANNED_BEFORE = [AMXBans]<%s> %s zostal wczesniej zbanowany %i razy.
Rozwiązanie nr 2
funkcję prebanned_check_ zamienić na to
public prebanned_check_(failstate, Handle:query, error[], errnum, data[], size) {
new id = data[0]
if (failstate) {
new szQuery[256]
MySqlX_ThreadError( szQuery, error, errnum, failstate, 16 )
return PLUGIN_HANDLED
}
new ban_count=SQL_ReadResult(query, 0)
if(ban_count < get_pcvar_num(pcvar_show_prebanned_num))
return PLUGIN_HANDLED
new name[32], player_steamid[35], player_ip[20];
get_user_authid(id, player_steamid, 34)
get_user_name(id, name, 31)
get_user_ip(id, player_ip, 19, 1)
for(new i=1;i<=plnum;i++) {
if(is_user_bot(i) || is_user_hltv(i) || !is_user_connected(i) || i==id)
continue
if(get_user_flags(i) & ADMIN_CHAT) {
ColorChat(i, RED, "[AMXBans] ^x01%L",i, "PLAYER_BANNED_BEFORE", name, player_ip, player_steamid, ban_count)
}
}
log_amx("[AMXBans] %L",LANG_SERVER, "PLAYER_BANNED_BEFORE", name, player_ip, player_steamid, ban_count)
return PLUGIN_HANDLED
}
To, jakie rozwiązanie wybierzecie, to już jest od Was zależne.
Dziękuję