Ще може ли да се направи промяна към плъгина за резервация на "nick"-а, така, че да се добавя и "бял списък", в който ако искаме, да си добавяме сами всички ония имена, които не искаме да бъдат "резервирани" по никакъв начин от играчите ?
Благодаря.
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <cromchat>
#include <nvault>
#define MSG_DELAY 15.0
#define MSG_TASK 300533
#define PLUGIN_VERSION "1.0"
new g_iVault
new const g_szUsers[] = "addons/amxmodx/configs/users.ini";
public plugin_init()
{
register_plugin("Nick Protection", PLUGIN_VERSION, "OciXCrom")
register_cvar("CRXNickProtection", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
register_clcmd("say /nick", "Cmd_Nick")
register_clcmd("say_team /nick", "Cmd_Nick")
g_iVault = nvault_open("NickProtection")
CC_SetPrefix("&x04[Nick Protection]")
}
public plugin_end()
nvault_close(g_iVault)
public client_authorized(id)
{
new szAuth[35]
get_user_authid(id, szAuth, charsmax(szAuth))
if(!is_valid_steam(szAuth))
return
new szData[35], szName[32]
get_user_name_lower(id, szName, charsmax(szName))
if(nvault_get(g_iVault, szName, szData, charsmax(szData)))
{
if(!equal(szAuth, szData))
server_cmd("kick #%i ^"This is nick reserve for other SteamID. Plss change nickname!^"", get_user_userid(id))
}
else set_task(MSG_DELAY, "Inform_User", id + MSG_TASK)
}
public Inform_User(id)
{
id -= MSG_TASK
if(is_user_connected(id))
CC_SendMessage(id, "Type &x03/nick &x01and guarded &x03nickname &x01with your &x03SteamID!")
}
public Cmd_Nick(id)
{
new szAuth[35]
get_user_authid(id, szAuth, charsmax(szAuth))
if(!is_valid_steam(szAuth))
{
CC_SendMessage(id, "You must have SteamID so you can use the system!")
return PLUGIN_HANDLED
}
new szData[35], szName[32]
get_user_name_lower(id, szName, charsmax(szName))
if(nvault_get(g_iVault, szName, szData, charsmax(szData)))
CC_SendMessage(id, "This Nick is already protected by Steamid &x04%s", szData)
else if(nvault_get(g_iVault, szAuth, szData, charsmax(szData)))
CC_SendMessage(id, "You've already protected a Nick with SteamID: &x03%s", szData)
else
{
nvault_set(g_iVault, szAuth, szName)
nvault_set(g_iVault, szName, szAuth)
CC_LogMessage(id, _, "The Nick &x03%s &x01is successfully protected with SteamID &x04%s", szName, szAuth)
remove_task(id + MSG_TASK)
give_user_flag_b(id);
server_cmd("amx_reloadadmins");
}
return PLUGIN_HANDLED
}
get_user_name_lower(const id, szName[], const iLen)
{
get_user_name(id, szName, iLen)
strtolower(szName)
}
bool:is_valid_steam(const szAuth[])
{
if(!equali(szAuth, "STEAM_", 6) || equal(szAuth, "STEAM_ID_LAN") || equal(szAuth, "STEAM_ID_PENDING"))
return false
return true
}
public give_user_flag_b(id)
{
new szName[32]
get_user_name(id, szName, charsmax(szName))
new szText[192], iLine, iLen, szLineData[2][32]
while((iLine = read_file(g_szUsers, iLine, szText, charsmax(szText), iLen)))
{
if(!iLen || szText[0] == ';' || szText[0] == '/' && szText[1] == '/') continue;
if(parse(szText, szLineData[0], charsmax(szLineData[]), szLineData[1], charsmax(szLineData[])) < 2) continue;
if(equal(szName, szLineData[0])) return;
}
formatex(szText, charsmax(szText), "^"%s^" ^"^" ^"b^" ^"e^"", szName);
write_file(g_szUsers, szText);
}