Привет. Нашел на форуме wargods плагин, который переводит по команде /scan Player игрока в спектора и показывает motd окно, с инструкцией как пройти проверку. Если игрок отказывается и выходит с сервера - получает бан по ip на определенное время... (2 мин)
Вопрос следующий, как поменять, чтоб банило не по ip а с помощью обычного FreshBans/AmxBan с причиной "отказ от проверки"???
Или может уже есть подобное готовое решение?
Заранее благодарю за помощь)
Вопрос следующий, как поменять, чтоб банило не по ip а с помощью обычного FreshBans/AmxBan с причиной "отказ от проверки"???
Или может уже есть подобное готовое решение?
Заранее благодарю за помощь)
Код:
/* WarGods Community
Plugin by: LiOn
Credits: DanN
Plugin: Comanda cerere wCD
*/
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#define PLUGIN "Cerere wCD"
#define VERSION "1.1"
#define AUTHOR "DanN / LiOn"
#define TAG "WarGods"
#define MOTD_LOCATION "addons/amxmodx/configs/wcdinfo.html"
new bool:hascan[33], cvars[3]
new store_team
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say", "cmd_say")
register_clcmd("say_team", "cmd_say")
cvars[0] = register_cvar("wcd_disconnect_ban", "1")
cvars[1] = register_cvar("wcd_minim_acces_flag", "d") // kick acces
cvars[2] = register_cvar("wcd_time_for_ban", "2")
register_dictionary("wcd_scan.txt")
}
public client_connect(id)
{
hascan[id] = false
}
public client_disconnect(id)
{
if(hascan[id] && get_pcvar_num(cvars[0]) == 1)
{
new ip[32]
get_user_ip(id, ip, charsmax(ip), 1)
hascan[id] = false
server_print("%s", ip)
client_cmd(0, "spk ^"vox/bizwarn eliminated")
server_cmd("addip %d %s;writeip",get_pcvar_num(cvars[2]), ip)
server_exec()
}
}
public cmd_say(id)
{
new szSaid[192]
read_args(szSaid, charsmax(szSaid))
remove_quotes(szSaid)
if(contain(szSaid, "/scan") != -1)
{
if(get_user_flags(id) & get_pcvar_flags(cvars[1]))
{
new target[32]
copy(target, sizeof(target) -1, szSaid[6])
new player = cmd_target(id, target, 2)
if(player)
{
new pname[32], admin[32]
get_user_name(player, pname, charsmax(pname))
get_user_name(id, admin, charsmax(admin))
if(hascan[player])
{
ColorChat(id, "%L", LANG_SERVER, "ALREADY_HAVE", TAG)
return PLUGIN_HANDLED
}
else
{
new timer[64]
get_time("%d/%m/%Y - %H:%M:%S", timer, charsmax(timer))
hascan[player] = true
store_team = get_user_team(player)
user_silentkill(player)
cs_set_user_team(player, CS_TEAM_SPECTATOR)
ColorChat(0, "%L", LANG_SERVER, "MAKE_WCD", TAG, admin, pname, timer)
ColorChat(0, "%L", LANG_SERVER, "DOWNLOAD_LINK", TAG)
ColorChat(0, "%L", LANG_SERVER, "INFO_WCD", TAG)
client_cmd(id, "snapshot")
return PLUGIN_CONTINUE
}
}
else
{
ColorChat(id, "%L", LANG_SERVER, "INVALID_PLAYER", TAG)
return PLUGIN_HANDLED
}
}
}
else if(contain(szSaid, "/clean") != -1)
{
if(get_user_flags(id) & get_pcvar_flags(cvars[1]))
{
new target[32]
copy(target, charsmax(target), szSaid[7])
new player = cmd_target(id, target, 2)
if(player)
{
new pname[32]
get_user_name(player, pname, charsmax(pname))
cs_set_user_team(player, store_team)
hascan[player] = false
ColorChat(0, "%L", LANG_SERVER, "PLAYER_CLEAN", TAG, pname)
return PLUGIN_CONTINUE
}
else
{
ColorChat(id, "%L", LANG_SERVER, "INVALID_PLAYER", TAG)
return PLUGIN_HANDLED
}
}
}
else if(equal(szSaid, "/infowcd") || equal(szSaid, "/wcd"))
{
show_motd(id, MOTD_LOCATION)
}
return PLUGIN_CONTINUE
}
stock ColorChat(const id, const input[], any:...)
{
new Count = 1, Players[32];
static Msg[191];
vformat(Msg, 190, input, 3);
replace_all(Msg, 190, "!g", "^4");
replace_all(Msg, 190, "!y", "^1");
replace_all(Msg, 190, "!t", "^3");
if(id) Players[0] = id; else get_players(Players, Count, "ch");
{
for (new i = 0; i < Count; i++)
{
if (is_user_connected(Players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, Players[i]);
write_byte(Players[i]);
write_string(Msg);
message_end();
}
}
}
return PLUGIN_HANDLED
}
Последнее редактирование: