* Anti Reconnect Plugin 3.0
3.0 - два режима работы: отсчёт времени после попытки зайти или отсчёт времени после использования команды reconnect
задаётся командой amx_reconnect_static <0|1> 0 - каждый раз заного отсчитывать время, запрещающее заходить.
1 - отсчитывать время только после выхода с сервера
amx_reconnect_stime - кол-во секунд, на протяжении которых сохраняется счёт для пользователя по ip юзера.
- перед киком проверка производится так же на ip пользователя... если зашёдший имеет другой ip - он не кикается.
2.0 - исправлен баг с уведомлением о том, что надо подождать, прежде чем войти на сервер
- добавлена команда amx_reconnect_ss <1|0> - запоминать счёт игрока или нет (работает при amx_reconnect_can 1)
1.01 - кикает всех, кто заходит раньше установленного времени после того как вышел (т.е. использует реконнект)
- поддерживаемые команды:
amx_reconnect_can <1|0> - можно или нет реконнектиться
amx_reconnect_time <sec> - время в секундах, которое нужно ждать после ухода с сервера, чтобы сного на него зайти
new PLUGIN[]="Anti reconnect"
new RTIME[]="amx_reconnect_time"
new RCAN[]="amx_reconnect_can"
new SCORESAVE[]="amx_reconnect_ss"
new RSTATIC[]="amx_reconnect_static"
new RSTIME[]="amx_reconnect_stime"
new t_disconnect[33] = {0, ...}
new t_scoresave[33] = {0, ...}
new sfrags[33] = {0, ...}
new sdeaths[33] = {0, ...}
new useretry[33] = {0, ...}
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar(RTIME, "7")
register_cvar(SCORESAVE, "1")
register_cvar(RSTATIC, "1")
register_cvar(RSTIME, "7")
register_event("TeamInfo","outspec","a") // восстанавливает счёт игроку в соответствии с настройками как только тот зайдёт за команду
public client_connect(id)
new maxexit = get_cvar_num(RTIME)
new maxstata = get_cvar_num(RSTIME)
new canreconnect = get_cvar_num(RCAN)
new ssave = get_cvar_num(SCORESAVE)
if ((maxexit>0) && (canreconnect==0) && (equali(ip,ips[id])))
new Float:nexTime = get_gametime()
if (t_disconnect[id] > nexTime)
new stat = get_cvar_num(RSTATIC)
t_disconnect[id] = floatround(nexTime) + maxexit
t_scoresave[id] = floatround(nexTime) + maxstata
timewait=t_disconnect[id]-floatround(nexTime)
server_cmd("kick #%d ^"Анти реконнект. Ждите %d секунд.^"", get_user_userid(id), timewait)
new Float:nexTime = get_gametime()
if (t_scoresave[id] <= nexTime)
if ((useretry[id]==1) && (is_user_connected(id)))
cs_set_user_deaths(id,sdeaths[id])
set_user_frags(id,sfrags[id])
public client_disconnect(id)
new maxexit = get_cvar_num(RTIME)
new maxstata = get_cvar_num(RSTIME)
new ssave = get_cvar_num(SCORESAVE)
new Float:theTime = get_gametime()
t_disconnect[id] = floatround(theTime) + maxexit
t_scoresave[id] = floatround(theTime) + maxstata
get_user_ip(id,ips[id],23,0)
sdeaths[id] = get_user_deaths(id)
sfrags[id] = get_user_frags(id)