Во-первых, фикс уже существует (и даже лучше):
[pawn]
#include <amxmodx>
#include <regex>
new Regex:g_iPattern;
public plugin_init()
{
register_plugin("Plus in nick fix", "0.2", "Flash");
new szError[64], iError;
g_iPattern = regex_compile("\[abcdfghijlmnprstuv]", iError, szError, charsmax(szError), "i");
if(iError < 0)
{
set_fail_state(szError);
}
}
public client_infochanged(id)
{
new szNewName[32], szOldName[32];
get_user_info(id, "name", szNewName, 31);
get_user_name(id, szOldName, 31);
if(!equal(szNewName, szOldName))
{
Check(id, szNewName);
}
}
Check(id, szNewName[] = "")
{
new szName[32];
if(szNewName[0])
{
copy(szName, 31, szNewName);
}
else
{
get_user_name(id, szName, 31);
}
new iNum;
new szSubStr[3];
new szNewTxtPart[3];
while(regex_match_c(szName, g_iPattern, iNum))
{
regex_substr(g_iPattern, 0, szSubStr, 2);
copy(szNewTxtPart, 2, szSubStr);
replace(szNewTxtPart, 2, "", "nick_is_nulled");
replace_all(szName, 31, szSubStr, szNewTxtPart);
}
set_user_info(id, "name", szName);
}
[/pawn]
Во-вторых, проверка у вас не каждый раунд, а каждый спаун (это не одно и то же). Далее, что это:
[pawn]
public client_authorized(id)
{
set_task(0.1, "Name_Check", id)
}
public client_putinserver(id)
{
set_task(0.1, "Name_Check", id)
}
[/pawn]
а это так вообще класс:
[pawn]
public Name_Check(id)
{
if(is_user_connected(id))
{
new player_name[32]
get_user_name(id, player_name, 31)
if ( ( contain(player_name, "+") != -1) )
{
new bad_name[32]
get_user_name(id, bad_name, 31)
server_cmd("kick ^"%s^" ^"[BAD NICK!] Смени ник и зайди снова!^"", bad_name)
}
}
}
[/pawn]
Получается, если в моём никнейме будет содержаться символ "+" (неважно, где, вначале, в конце, по центру) - меня выкинет.