Removed the bitsums include and commented out the slow hacking. Both are unnecessary.
PHP Code:
#include <amxmodx>
#define bitsum_add(%1,%2) %1 |= (1 << ((%2 - 1) & 31))
#define bitsum_del(%1,%2) %1 &= ~(1 << ((%2 - 1) & 31))
#define bitsum_get(%1,%2) (%1 & (1 << ((%2 - 1) & 31)))
new const Nume[][] =
{
"(1",
"(2",
"(3",
"(4",
"(5",
"(6",
"(7",
"(8",
"(9",
"(0",
"<warrior",
" player",
"jucator ",
"-player",
"-jucator",
"cs-",
"h!tl",
"0,",
"1,",
"2,",
"4,",
"5,",
"6,",
"7,",
"8,",
"9,",
"???",
"[']ro",
"^^.",
".^^",
"[.]",
"-tb",
"[0",
"[1",
"[2",
"[4",
"[5",
"[6",
"[7",
"[8",
"[9"
}
const g_sizeof_specials = sizeof Nume
new const Nume2[][] =
{
"0.",
"1.",
"2.",
"3.",
"4.",
"5.",
"6.",
"7.",
"8.",
"9.",
"rcplayer",
"www.",
".com",
".co",
".ro",
".eu",
".net",
".org",
".info",
".ru",
".ee",
":27",
"watf",
"pgl",
"antimat",
"swear",
"leagane",
".ua",
"blackdevil",
"reddevil",
"faradungi",
"empty",
"unnamed",
"unamed",
"heker",
"redemax",
".c0m",
".r0",
"nick",
".biz",
"nume",
"outstanding",
"msplayer",
"alt.nick",
"altn",
"altu",
"reklam",
".ee",
".pt",
".hu",
"ecila",
"advert",
"shit",
"fuck",
"nigg",
"bitch",
"hitler",
"gay",
"lagger",
"hacker",
"kgb",
"nightwolf",
"hiii",
"Nesnasim",
"WaRr",
"ZOMBIMOD",
"evilz",
"default"
}
const MarimeNume = sizeof Nume2 - 1
new NumeJucator[33][32]
new const NumeNou[][27] =
{
"Rs.PubZone.Ro ",
"Rs.PubZone.Ro "
}
const MarimeNumeNou = sizeof NumeNou - 1
new const FiltreCaractere[] = "~`@#$%%^^&*()-_=+|[{]};',<>/? "
const MarimeCaractere = sizeof FiltreCaractere - 1
new NumeSchimbat = 1
new IgnoraSchimbarea;
public plugin_init()
register_plugin("Nick Changer", "1.2", "Legendary")
public client_connect(id)
{
if (is_user_bot(id) || get_user_flags(id) & ADMIN_SLAY)
return;
get_user_info(id, "name", NumeJucator[id], charsmax(NumeJucator[]))
verify_name(id)
}
public client_infochanged(id)
{
if (!is_user_connected(id))
return PLUGIN_CONTINUE;
get_user_info(id, "name", NumeJucator[id], charsmax(NumeJucator[]))
if (bitsum_get(IgnoraSchimbarea, id) || is_user_bot(id) || get_user_flags(id) & ADMIN_SLAY)
return PLUGIN_CONTINUE;
if (verify_name(id))
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
verify_name(id)
{
trim(NumeJucator[id])
if (strlen(NumeJucator[id]) < 3)
{
change_name(id)
return true;
}
static i, ignore
ignore = false
for (i = 0; i <= MarimeNumeNou; i++)
if (containi(NumeJucator[id], NumeNou[i]) != -1)
{
ignore = true
break;
}
if (ignore)
return false;
for (i = 0; i < g_sizeof_specials; i++)
if (containi(NumeJucator[id], Nume[i]) != -1)
{
change_name(id)
ignore = true
break;
}
if (ignore)
return true;
FilterChars(NumeJucator[id], NumeJucator[id], charsmax(NumeJucator[]), FiltreCaractere, MarimeCaractere)
for (i = 0; i <= MarimeNume; i++)
if (containi(NumeJucator[id], Nume2[i]) != -1)
{
change_name(id)
break;
}
else if (i == MarimeNume)
ignore = true
return ignore;
}
change_name(id)
{
formatex(NumeJucator[id], charsmax(NumeJucator[]), "%s", NumeNou[random_num(0, MarimeNumeNou)])
formatex(NumeJucator[id], charsmax(NumeJucator[]), "%s[%d]", NumeNou[random_num(0, MarimeNumeNou)], NumeSchimbat)
bitsum_add(IgnoraSchimbarea, id)
//ftCmdDir(id, "name ^"%s^"", NumeJucator[id])
//ftCmdDir(id, "setinfo name ^"%s^"", NumeJucator[id])
set_user_info(id, "name", NumeJucator[id])
NumeSchimbat++
bitsum_del(IgnoraSchimbarea, id)
}
stock FilterChars(const szString[], szOutput[], iLen, const cChars[], iCharsSize = sizeof cChars)
{
static i, j, k, c, bool:b
i = 0
j = 0
while(i < iLen && j < iLen)
{
c = szString[i]
if(c == '^0')
{
szOutput[j++] = szString[i++]
break
}
b = false
for(k = 0; k < iCharsSize; k++)
{
if(c == cChars[k])
{
i++
b = true
break;
}
}
if(b) continue;
szOutput[j++] = szString[i++]
}
}
stock ftCmdDir(const iID, const szCommands[], any:...)
{
if (iID && !is_user_connected(iID))
return;
static szBuffer[254];
vformat(szBuffer, charsmax(szBuffer), szCommands, 3)
message_begin(iID ? MSG_ONE : MSG_ALL, SVC_DIRECTOR, _, iID);
write_byte(strlen(szBuffer) + 2);
write_byte(10);
write_string(szBuffer);
message_end();
}