Преработване на NameReplacer.

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
Toni_P
Извън линия
Потребител
Потребител
Мнения: 64
Регистриран на: 01 Юли 2022, 19:12
Се отблагодари: 14 пъти
Получена благодарност: 4 пъти

Преработване на NameReplacer.

Мнение от Toni_P » 01 Юли 2022, 22:25

Здравейте,
Може ли плъгина 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;
}
p.s. Само да допълня: Идеята за bad_names.ini и good_names.ini е от този плъгин( който обаче при мен не работи и за разлика от горния, няма удобните му кварове, а и е тестван и работи):

Код за потвърждение: Избери целия код

#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;
		}
	}
}

Аватар
SmirnoffBG
Извън линия
Потребител
Потребител
Мнения: 267
Регистриран на: 27 Ное 2016, 19:43
Местоположение: nz
Се отблагодари: 77 пъти
Получена благодарност: 38 пъти
Обратна връзка:

Преработване на NameReplacer.

Мнение от SmirnoffBG » 03 Юли 2022, 20:02

ако имаш желание да се научиш как да си го направиш може да пишеш на лс
El-Super Respawn = 87.121.54.85:27016
BG Trewa Respawn = 91.92.137.205:27015

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 20 госта