Запрещает игрокам ставить ники, которые используют админы. Допустим у Вас админка стоит на STEAM или на IP, в данном случае можно не париться с паролем, но бывает такое, что под Вашим ником заходят другие игроки. Чтобы этого избежать, я и написал этот плагин.
Добавить привязку(можно командой, а можно вписать в файл AdminNickGuard.ini, который будет создан при запуске сервера)
001
#include
002
#include
003
#include
004
#include
005
#include
006
007
new DIRINI[64], trash
008
new Array:g_array
009
010
new pcvar_Nick
011
012
public plugin_init() {
013
register_plugin("Admin Nick Guard", "1.0", "SKAJIbnEJIb")
014
015
register_forward(FM_ClientUserInfoChanged, "fwClientUserInfoChanged")
016
017
register_concmd("ang_add", "AddNick", ADMIN_RCON, "-
")
018
019
pcvar_Nick = register_cvar("ang_nick", "Player")
020
021
new configsDir[64]
022
get_configsdir(configsDir, 63)
023
format(DIRINI, 63, "%s/AdminNickGuard.ini", configsDir)
024
g_array = ArrayCreate(64, 1)
025
026
update_nicks()
027
}
028
029
public client_connect(id)
030
{
031
new Name[32]
032
get_user_name(id, Name, 31)
033
if(CheckNick(id, Name))
034
{
035
new Nick_def[32]
036
get_pcvar_string(pcvar_Nick, Nick_def, 31)
037
client_cmd(id, "setinfo name ^"^";name %s", Nick_def)
038
}
039
}
040
041
public fwClientUserInfoChanged(id, buffer) {
042
if (!is_user_connected(id))
043
return FMRES_IGNORED
044
045
static Name[32], val[32]
046
get_user_name(id, Name, sizeof Name - 1)
047
engfunc(EngFunc_InfoKeyValue, buffer, "name", val, sizeof val - 1)
048
if (equal(val, Name))
049
return FMRES_IGNORED
050
051
if(CheckNick(id, val))
052
{
053
new Nick_def[32]
054
get_pcvar_string(pcvar_Nick, Nick_def, 31)
055
engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", Nick_def)
056
client_print(id, print_console, "Запрещено использовать этот ник!")
057
client_cmd(id, "setinfo name ^"^";name %s", Nick_def)
058
return FMRES_SUPERCEDE
059
}
060
return FMRES_IGNORED
061
}
062
063
public CheckNick(id, Name[])
064
{
065
new STEAM[32], IP[32]
066
get_user_authid(id, STEAM, 31)
067
get_user_ip(id, IP, 31, 1)
068
069
for(new i=0; i < ArraySize(g_array); i++)
070
{
071
new str_ini[64], auth_ini[32], nick_ini[32]
072
ArrayGetString(g_array, i, str_ini, 63)
073
strbreak(str_ini, auth_ini, 31, nick_ini, 31)
074
if ( equali(Name, nick_ini) && !(equali(auth_ini, STEAM) || equali(auth_ini, IP)) )
075
{
076
log_to_file("AdminNickGuard.log","Nick | IP | ID ", Name, IP, STEAM)
077
return 1
078
}
079
}
080
return 0
081
}
082
083
public AddNick(id, level, cid) {
084
if(!cmd_access(id, level, cid, 3))
085
return PLUGIN_HANDLED
086
087
new arg_auth[32], arg_nick[32], Auth[32]
088
read_argv(1, arg_auth, 31)
089
read_argv(2, arg_nick, 31)
090
trim(arg_auth)
091
trim(arg_nick)
092
093
if(equal(arg_auth ,"STEAM_", 6))
094
format(Auth, 31, "%s", arg_auth)
095
else if(equali(arg_auth, "S"))
096
get_user_authid(id, Auth, 31)
097
else if(equali(arg_auth, "IP"))
098
get_user_ip(id, Auth, 31, 1)
099
else
100
format(Auth, 31, "%s", arg_auth)
101
102
new in_ini[64]
103
format(in_ini, 63, "%s %s", Auth, arg_nick)
104
105
for(new i=0; i <= file_size(DIRINI, 1); i++)
106
{
107
new find_ini[64]
108
read_file(DIRINI, i, find_ini, 63, trash)
109
if (equali(find_ini, in_ini))
110
{
111
ColorChat(id, RED, "^01[^04AdminNickGuard^01]^03 Такая привязка уже есть!")
112
client_print(id, print_console, "[AdminNickGuard] Такая привязка уже есть!")
113
return PLUGIN_HANDLED
114
}
115
}
116
117
write_file(DIRINI, in_ini, -1)
118
ColorChat(id, BLUE, "^01[^04AdminNickGuard^01]^01 В список добавлена привязка:^03 %s", in_ini)
119
client_print(id, print_console, "[AdminNickGuard] В список добавлена привязка: %s", in_ini)
120
121
update_nicks()
122
123
return PLUGIN_HANDLED
124
}
125
126
public update_nicks()
127
{
128
if(!file_exists(DIRINI))
129
write_file(DIRINI, ";STEAM_0:0:12345678 Nick", 0)
130
131
ArrayClear(g_array)
132
for(new i=0; i <= file_size(DIRINI, 1)-2; i++)
133
{
134
new Nick_ini[64]
135
read_file(DIRINI, i, Nick_ini, 63, trash)
136
if(Nick_ini[0] != ';')
137
ArrayPushString(g_array, Nick_ini)
138
}
139
}