Може ли плъгина NameReplacer от тази тема: https://forums.alliedmods.net/showthread.php?t=77401 да се преработи така, че "Nick"-ове на играчи в сървъра от типа: player, <Warrior> Player, Fullserver, ServerBoost Prime, Master-User и други подобни които излишно пълнят топ15 на всеки един сървър(всички тези имена да са изредени например в bad_names.ini) - да бъдат заменяни с други различни, но от друг файл(примерно good_names.ini) и то на случаен принцип(randum)?
Ето NameReplacer-плъгина за преработка:
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Name Replacer"
#define VERSION "1.0"
#define AUTHOR "anakin_cstrike"
#define NAMES 32
new g_NameList[2][NAMES][32],g_Count;
public plugin_init()
register_plugin(PLUGIN, VERSION, AUTHOR);
public plugin_cfg()
{
new iDir[64],iFile[64];
get_configsdir(iDir,sizeof iDir - 1);
formatex(iFile,sizeof iFile - 1, "%s/name_list.txt",iDir);
if(!file_exists(iFile))
write_file(iFile, "[Name Replacer]", -1);
new szFile = fopen(iFile, "rt"),Buffer[512];
while(!feof(szFile))
{
fgets(szFile, Buffer,sizeof Buffer - 1);
if(!Buffer[0] || Buffer[0] == ';' || strlen(Buffer) < 3)
continue;
trim(Buffer);
strtok(Buffer,g_NameList[0][g_Count],sizeof g_NameList[][] - 1,g_NameList[1][g_Count],sizeof g_NameList[][] - 1, ';',0);
g_Count++;
}
fclose(szFile);
}
public client_putinserver(id) set_task(10.0,"verify",id);
public verify(id)
{
if(!is_user_connected(id))
return PLUGIN_CONTINUE;
new name[32],i;
get_user_name(id,name,sizeof name - 1);
for(i = 0;i < g_Count;i++)
{
if(equali(name,g_NameList[0][i]))
{
client_print(id,print_chat,"That name is not allowed here! Changing name to ^"%s^"",g_NameList[1][i]);
client_cmd(id,"name ^"%s^"",g_NameList[1][i]);
}
}
return PLUGIN_CONTINUE;
}
public client_infochanged(id)
{
new newname[32],oldname[32],i;
get_user_info(id,"name",newname, sizeof newname - 1);
get_user_name(id,oldname,sizeof oldname - 1);
if(equali(newname,oldname))
return PLUGIN_CONTINUE;
for(i = 0;i < g_Count;i++)
{
if(equali(newname,g_NameList[0][i]))
{
client_print(id,print_chat,"That name is not allowed here! Changing name to ^"%s^"",g_NameList[1][i]);
client_cmd(id,"name ^"%s^"",g_NameList[1][i]);
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#define MAX_NAMES 100
new g_iGoodNameCount;
new g_sGoodNames[MAX_NAMES][32];
const iNameSize = sizeof(g_sGoodNames[]);
const iNameLen = iNameSize - 1;
new g_iBadNameCount;
new g_sBadNames[MAX_NAMES][iNameSize];
public plugin_precache()
{
new sConfigsDir[200];
get_configsdir(sConfigsDir, sizeof(sConfigsDir) - 1);
new sFileName[200];
new iFileNameLen = sizeof(sFileName) - 1;
formatex(sFileName, iFileNameLen, "%s/good_names.ini", sConfigsDir);
if(file_exists(sFileName))
{
new file = fopen(sFileName, "rt");
while(!feof(file) && (g_iGoodNameCount < MAX_NAMES))
{
fgets(file, g_sGoodNames[g_iGoodNameCount++], iNameLen);
}
fclose(file);
}
formatex(sFileName, iFileNameLen, "%s/bad_names.ini", sConfigsDir);
if(file_exists(sFileName))
{
new file = fopen(sFileName, "rt");
while(!feof(file) && (g_iBadNameCount < MAX_NAMES))
{
fgets(file, g_sBadNames[g_iBadNameCount++], iNameLen);
}
fclose(file);
}
}
public plugin_init()
{
register_plugin("Bad Name Manager", "0.1", "Exolent");
}
public client_putinserver(id)
{
if(!g_iBadNameCount || !g_iGoodNameCount)
{
return;
}
new sName[iNameSize];
get_user_name(id, sName, iNameLen);
check_name(id, sName);
}
public client_infochanged(id)
{
if(!g_iBadNameCount || !g_iGoodNameCount)
{
return;
}
new sNewName[iNameSize], sOldName[iNameSize];
get_user_info(id, "name", sNewName, iNameLen);
get_user_name(id, sOldName, iNameLen);
if(!equali(sNewName, sOldName))
{
check_name(id, sNewName);
}
}
stock check_name(id, const sName[])
{
for(new i = 0; i < g_iBadNameCount; i++)
{
if(equali(sName, g_sBadNames[i]))
{
i = (g_iGoodNameCount > 1) ? random(g_iGoodNameCount) : 0;
set_user_info(id, "name", g_sGoodNames[i]);
client_cmd(id, "name ^"%s^"", g_sGoodNames[i]);
break;
}
}
}