Търся работещ плъгин , който при използване на няколко пъти(дефинирано с квар) командите retry или reconnect от определен играч за дадено време( дефинирано с квар) - да получава временен бан(дефинирано с квар).
Ползвам ReGameDLL_CS, ReAPI ... , а за бан: системата AMXBans 6.13 .
Порових се доста в интернета, но намерих само ето този плъгин(доста стар):
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#define MAX_PLAYERS 32
new pip[MAX_PLAYERS+1][22]
new markedIp[MAX_PLAYERS+1]
public client_connect(id) {
if ((!is_user_bot(id)) && ( !(get_user_flags(id) & ADMIN_IMMUNITY) ) && (get_cvar_num("amx_retryban")==1)) {
new userip[21+1]
new uname[33+1]
get_user_ip(id, userip, 21, 0)
get_user_name(id, uname, 33)
for(new i = 1; i <= MAX_PLAYERS; i++) {
if (equal(userip, pip[i], 21)) {
new userid[1]
userid[0] = get_user_userid(id)
if ( !(get_user_flags(id) & ADMIN_IMMUNITY) ) {
//--------------------------------------------
if (markedIp[i] < get_cvar_num("amx_retrycounttoban"))
{
return PLUGIN_CONTINUE
}
//--------------------------------------------
new txt[128]
get_cvar_string("amx_retrybanmsg", txt, 127)
new min[6]
new min2[6]
new retryCount[3]
num_to_str(get_cvar_num("amx_retrybanduration"),min, 5)
num_to_str(get_cvar_num("amx_retrytimetoban"),min2, 5)
num_to_str(get_cvar_num("amx_retrycounttoban"),retryCount, 2)
replace(txt, 127, "%s", uname)
replace(txt, 127, "%m", min)
replace(txt, 127, "%m2", min2)
replace(txt, 127, "%d", retryCount)
server_cmd("say %s",txt)
set_hudmessage(255, 0, 0, 0.05, 0.70, 0, 5.0, 6.0, 6.0, 0.15, 3)
show_hudmessage(0,"%s",txt)
if (get_cvar_num("amx_retrychat")==1)
{
new sTemp[128]
new text[128]
get_cvar_string("amx_retrychatmsg", sTemp, 127)
format(text, 128, sTemp, get_cvar_num("amx_retrycounttoban"), get_cvar_num("amx_retrytimetoban"), get_cvar_num("amx_retrybanduration"))
client_cmd(id,"echo %s",text)
}
server_cmd("addip %d ^"%s^";wait;writeip",get_cvar_num("amx_retrybanduration"),userip)
markedIp[i] = 0
pip[i][0] = 0
}
return PLUGIN_CONTINUE
}
}
}
return PLUGIN_CONTINUE
}
public client_disconnect(id) {
if ((!is_user_bot(id)) && ( !(get_user_flags(id) & ADMIN_IMMUNITY) ) && (get_cvar_num("amx_retryban")==1)) {
for(new i = 1; i <= MAX_PLAYERS; i++) {
if(pip[i][0] == 0) {
markedIp[i]++;
server_print("say ----Markip[%d] = %d----", i, markedIp[i])
//--------------------------------------------
if (markedIp[i] == 1) // First time retry
{
new para[3]
format(para, 2, "%d", i)
set_task(60.0 * get_cvar_num("amx_retrytimetoban"), "clean_markedip", 0, para, 1)
}
//----------------------------------
else if (markedIp[i] == get_cvar_num("amx_retrycounttoban")) // Reached the retry time count
{
new userip[21+1]
get_user_ip(id, userip, 21, 0)
copy(pip[i], 21, userip)
}
return PLUGIN_CONTINUE
}
}
}
return PLUGIN_CONTINUE
}
public clean_markedip(index[]) {
markedIp[str_to_num(index)]=0;
}
public plugin_init() {
register_plugin("Ban retry player","1.1","[email protected]")
register_cvar("amx_retryban","1")
register_cvar("amx_retrybanduration","3")
register_cvar("amx_retrychat","1")
register_cvar("amx_retrytimetoban","10")
register_cvar("amx_retrycounttoban","2")
// %s is the player name, %m is amx_retrybanduration in minutes
register_cvar("amx_retrybanmsg","Ban %s %m min(s) because retry %d time(s) in %m2 min(s)")
register_cvar("amx_retrychatmsg","You were using command RETRY %d time(s) in %d minute(s) so you has been banned from this server in %d minutes. Come back later please!")
for(new i=0; i< MAX_PLAYERS; i++)
{
markedIp[i]=0;
}
return PLUGIN_CONTINUE
}
C:\Users\pc\Desktop\AMXX\AMXX\scripting\banretryplayer.sma(68) : warning 233: symbol "client_disconnect" is marked as deprecated: Use client_disconnected() instead.
Опитах да го "подкарам" , показа, че е пуснат в списъка с amxx list , дори изписва в конзолата на сървъра някакви подобни неща:
say ----Markip[6] = 1----
say ----Markip[6] = 2----
при влизане на играчи, и дори когато някой премине границата за реконктване - показва, т.е. че уж функционира и че е уж баннат, например:
<.:::SERVER:::.> Ban dimitrij 1 min(s) because retry 3 time(s) in 6 min(s)
Но, ... , бан няма! Не работи, не знам защо но нито в listip.cfg , нито във banned.cfg има записан бан?! Играча не бива банван или дори кикван, никакво действие върху него... Ако е от значение - и самата бансистема не записва бановете там - не знам така ли трябва да е или не. (Иначе самата бансистема си записва в "допълнителната страница" бановете в сървъра и си ги пази там както е редно).
Та, молбата ми е, ако може да се напише работещ подобен плъгин който да изпълнява само онова което съм описал в началото над самия код, или пък, ако е по-лесно - да бъде преработен този стария(което много ме съмнява, но аз лично не съм наясно с това). разчитам на вашата преценка.
Благодаря!