Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Amxbans 6.0.2 by gm

, Подскажите, не побрезгуйте :)
Статус пользователя nepret
сообщение 28.6.2010, 16:22
Сообщение #1
Стаж: 16 лет

Сообщений: 25
Благодарностей: 3
Полезность: 92

Всем привет!

Буквально на днях, нашел плагин, который банит игроков через его кс (что-то типа amx_bancs). У меня возникла идея попробовать "совместить" его с Amxbans 6.0.0
Тойсть... Что должно получиться:
Когда админ банит игрока, идёт стандартная команда amxbans'a на бан, и сразу после этого идёт 2 команда "amx_qwer_ban <name or #userid> <minutes> [reason]" по тем же самым параметрам, типа:
amx_banip Basya 5 test
amx_qwer_ban Basya 5 test
В итоге, бан выдан, как и в amxbans'e так и в amx_qwer_ban... И плеер забанен, и админу без гемора вбивать 2 команды, и никто не в курсе чем собственно был выдан бан, а если игрок не знает чем был выдан бан, соответственно и искать обход будет уже сложнее!

Мои мысли: есть команда, допустим "amx_qwer_ban <name or #userid> <minutes> [reason]", строка бана практически идентична строке бана через amxbans
А вот куда её впихивать и в каком виде?

В ATAC ещё более менее всё ясно:

atac_amxbans.sma
/* ATAC AMXBans
*
* Copyright © 2006-2007, ATAC Team
*
* This file is provided as is (no warranties).
*
*/

#include <amxmodx>
#include <fakemeta>
#include <atac>

#define PLUGIN "ATAC AMXBans"
#define VERSION "1.1"
#define AUTHOR "ATAC Team"

new gBanning[ 33 ]
new gCVARTeamKills
new gCVARBanTime

public plugin_init()
{
register_plugin( PLUGIN, VERSION, AUTHOR )
new amxbans = get_cvar_pointer( "amxbans_version" ) // Check to see if the server has AMX Bans installed

if ( !amxbans )
pause( "ade", PLUGIN )
else
{
atac_register_addon()
gCVARTeamKills = get_cvar_pointer( "atac_team_kills" )
gCVARBanTime = get_cvar_pointer( "atac_ban_time" )
}
}

public client_putinserver( id )
{
gBanning[ id ] = 0
}

public atac_punished( killer, const name[], const authid[], bantype )
{
if ( !bantype ) // 0 = Kick, DO NOT BAN!
return PLUGIN_CONTINUE // Allow ATAC to carry on as normal

if ( gBanning[ killer ] ) // Check to make sure we are not trying to ban the client already
return PLUGIN_HANDLED // Supercede ATAC's banning system

new tk = get_atac_kills( killer )
new maxtk = get_pcvar_num( gCVARTeamKills )

if ( tk >= maxtk ) // Let AMX Bans take over
{
gBanning[ killer ] = 1

switch( bantype )
{
// IP Banning
case 1: server_cmd( "amx_banip %i %s Max Team Kill Warning %i/%i", get_pcvar_num( gCVARBanTime ), authid, tk, maxtk )

1 вариант, добавить после верхней строки//case 1: server_cmd( "amx_qwer_ban %i %s Max Team Kill Warning %i/%i", get_pcvar_num( gCVARBanTime ), authid, tk, maxtk )
2 вариант заменить верхнюю строку//case 1: server_cmd( "amx_banip %i %s Max Team Kill Warning %i/%i", get_pcvar_num( gCVARBanTime ), authid, tk, maxtk, "amx_qwer_ban %i %s Max Team Kill Warning %i/%i", get_pcvar_num( gCVARBanTime ), authid, tk, maxtk )


// STEAMID Banning
case 2: server_cmd( "amx_ban %i %s Max Team Kill Warning %i/%i", get_pcvar_num( gCVARBanTime ), authid, tk, maxtk )
// Invalid Banning Type
default: server_print( "%s: Invalid Banning ID - Name: %s AuthID: %s", PLUGIN, name, ( authid[ 0 ] == 0 ) ? "NULL" : authid )
}

return PLUGIN_HANDLED // Supercede ATAC's banning system
}

return PLUGIN_CONTINUE // Allow ATAC to carry on as normal
}

Тойсть, там есть с чем работать и есть варианты как можно добавть ещё и 2-й бан.

А вот где это можно реализовать в amxbans'e, я так и не понял.

Я подозреваю несколько скриптов:

cmdBan.inl

#if defined _cmdban_included
#endinput
#endif
#define _cmdban_included

#include <amxmodx>
#include <sqlx>
public cmdMenuBan(id)
{
if(!id)
return PLUGIN_HANDLED

if(g_being_banned[g_choicePlayerId[id]])
{
//client_print(id,print_chat,"[AMXBans] Blocking doubleban from <%s>", g_choicePlayerName[id])
ColorChat(id, RED, "[AMXBans]^x01 Blocking doubleban from <%s>", g_choicePlayerName[id])
}
//g_being_banned[g_choicePlayerId[id]]=true

if(!get_ban_type(g_ban_type[id],charsmax(g_ban_type),g_choicePlayerAuthid[id],g_
choicePlayerIp[id]))
{
log_amx("[AMXBans ERROR cmdMenuBan] Steamid / IP Invalid! Bantype: <%s> | Authid: <%s> | IP: <%s>",\
g_ban_type[id], g_choicePlayerAuthid[id], g_choicePlayerIp[id])
g_being_banned[g_choicePlayerId[id]]=false
return PLUGIN_HANDLED
}

if(get_pcvar_num(pcvar_debug) >= 2)
{
log_amx("[AMXBans cmdMenuBan %d] %d | %s | %s | %s | %s (%d min)",id,\
g_choicePlayerId[id], g_choicePlayerName[id], g_choicePlayerAuthid[id], g_choicePlayerIp[id], g_choiceReason[id], g_choiceTime[id])
}


if (equal(g_ban_type[id], "S"))
{
formatex(g_SqlX_Cache, charsmax(g_SqlX_Cache),"SELECT player_id FROM %s WHERE player_id='%s' and expired=0", tbl_bans, g_choicePlayerAuthid[id])
if ( get_pcvar_num(pcvar_debug) >= 2 )
log_amx("[AMXBans cmdMenuBan] Banned a player by SteamID")
}
else
{
formatex(g_SqlX_Cache, charsmax(g_SqlX_Cache),"SELECT player_ip FROM %s WHERE player_ip='%s' AND player_id='%s' and expired=0", tbl_bans, g_choicePlayerIp[id], g_choicePlayerAuthid[id])
if ( get_pcvar_num(pcvar_debug) >= 2 )
log_amx("[AMXBans cmdMenuBan] Banned a player by IP/steamID")
}

new pquery[1024]
prepare_prefix(g_SqlX_Cache,pquery,charsmax(pquery))

new data[3]
data[0] = id
data[1] = g_choicePlayerId[id]
SQL_ThreadQuery(g_SqlX, "_cmdMenuBan", pquery, data, 3)

return PLUGIN_HANDLED
}

public _cmdMenuBan(failstate, Handle:query, error[], errnum, data[], size)
{
new id = data[0]
new pid = data[1]

if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans cmdMenuBan function 2]Playerid: %d", pid)

if (failstate)
{
new szQuery[256]
SQL_GetQueryString(query,szQuery,255)
MySqlX_ThreadError( szQuery, error, errnum, failstate, "cmdBan.inl::cmdMenuBan" )
return PLUGIN_HANDLED
}

if (SQL_NumResults(query))
{
//client_print(id,print_console,"[AMXBANS] %L",id,"ALREADY_BANNED", g_choicePlayerAuthid[id], g_choicePlayerIp[id])
ColorChat(id, RED, "[AMXBans]^x01 %L",id,"ALREADY_BANNED", g_choicePlayerAuthid[id], g_choicePlayerIp[id])
g_being_banned[id] = false
return PLUGIN_HANDLED
}

new admin_nick[64], admin_steamid[35], admin_ip[22]
mysql_get_username_safe(id, admin_nick, charsmax(admin_nick))
get_user_ip(id, admin_ip, charsmax(admin_ip), 1)
get_user_authid(id, admin_steamid, charsmax(admin_steamid))

new server_name[256]
get_cvar_string("hostname", server_name, charsmax(server_name))

if ( get_pcvar_num(pcvar_add_mapname) == 1 )
{
new mapname[32]
get_mapname(mapname,31)
format(server_name,charsmax(server_name),"%s (%s)",server_name,mapname)
}

new servername_safe[256]
mysql_escape_string(server_name,servername_safe,charsmax(servername_safe))
new player_nick[64]
mysql_escape_string(g_choicePlayerName[id],player_nick,charsmax(player_nick))

formatex(g_SqlX_Cache, charsmax(g_SqlX_Cache), "INSERT INTO `%s` (player_id,player_ip,player_nick,admin_ip,admin_id,admin_nick,ban_type,ban_reaso
n,ban_created,ban_length,server_name,server_ip,expired) \
VALUES('%s','%s','%s','%s','%s','%s','%s','%s',UNIX_TIMESTAMP(NOW()),%d,'%s','%s:%s',0)", \
tbl_bans,g_choicePlayerAuthid[id],g_choicePlayerIp[id],player_nick,admin_ip,admi
n_steamid,admin_nick,g_ban_type[id],g_choiceReason[id],g_choiceTime[id],serverna
m
e_safe,g_ip,g_port)

new pquery[1024]
prepare_prefix(g_SqlX_Cache,pquery,charsmax(pquery))

new data[4]
data[0] = id
data[1] = g_choicePlayerId[id]
//Add by ~Val~ for trigger menu ban
data[3] = 0
SQL_ThreadQuery(g_SqlX, "insert_bandetails", pquery, data, 4)

return PLUGIN_HANDLED
}

/********************************************************************************
***********************************/
/********************************************************************************
***********************************/
public cmdBan(id, level, cid)
{
/* Checking if the admin has the right access */
if (!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED

new bool:serverCmd = false
// Determine if this was a server command or a command issued by a player in the game
if ( id == 0 )
serverCmd = true;

new text[128]
read_args(text, 127)

// get player ident and bantime depending on the ban cmd format (old or new)
new ban_length[50]
if(get_pcvar_num(pcvar_newbancmd))
parse(text, g_ident, 49, ban_length, 49)
else
parse(text, ban_length, 49, g_ident, 49)

trim(g_ident)
trim(ban_length)

// Check so the ban command has the right format
if( !is_str_num(ban_length) || read_argc() < 3 )
{
if(get_pcvar_num(pcvar_newbancmd))
client_print(id,print_console,"[AMXBans] %L",LANG_PLAYER,"AMX_BAN_SYNTAX_NEW")
else
client_print(id,print_console,"[AMXBans] %L",LANG_PLAYER,"AMX_BAN_SYNTAX")
return PLUGIN_HANDLED
}


//new length1 = strlen(ban_length)
//new length2 = strlen(g_ident)
//new length = length1 + length2
//length+=2
new length = strlen(ban_length) + strlen(g_ident) + 2

// get and format the ban reason
new reason[128]
read_args(reason,127)
formatex(g_choiceReason[id], charsmax(g_choiceReason[]), "%s", reason[length])
trim(g_choiceReason[id])
remove_quotes(g_choiceReason[id])

//if the reason is empty use the default ban reason from cvar
if(!strlen(g_choiceReason[id]))
{
get_pcvar_string(pcvar_default_banreason,g_choiceReason[id],charsmax(g_choiceRea
son[]))
}

g_choiceTime[id] = abs(str_to_num(ban_length))
new cTimeLength[128]
if (g_choiceTime[id] > 0)
get_time_length(id, g_choiceTime[id], timeunit_minutes, cTimeLength, 127)
else
format(cTimeLength, 127, "%L", LANG_PLAYER, "TIME_ELEMENT_PERMANENTLY")

// This stops admins from banning perm in console if not adminflag n
if(!(get_user_flags(id) & get_higher_ban_time_admin_flag()) && g_choiceTime[id] == 0)
{
client_print(id,print_console,"[AMXBans] %L",LANG_PLAYER,"NOT_BAN_PERMANENT")
return PLUGIN_HANDLED
}

// Try to find the player that should be banned
g_choicePlayerId[id] = locate_player(id, g_ident)

// Player is a BOT or has immunity
if (g_choicePlayerId[id] == -1)
return PLUGIN_HANDLED

if(g_being_banned[g_choicePlayerId[id]])
{
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans Blocking doubleban(g_being_banned)] Playerid: %d BanLenght: %s Reason: %s", g_choicePlayerId[id], g_choiceTime[id], g_choiceReason[id])

return PLUGIN_HANDLED
}

g_being_banned[g_choicePlayerId[id]] = true

if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans cmdBan function 1]Playerid: %d", g_choicePlayerId[id])

if (g_choicePlayerId[id])
{
get_user_authid(g_choicePlayerId[id], g_choicePlayerAuthid[id], 49)
get_user_ip(g_choicePlayerId[id], g_choicePlayerIp[id], 29, 1)
}
else
{
g_being_banned[0]=false

if (serverCmd)
server_print("[AMXBans] The Player %s was not found",g_ident)
else
console_print(id, "[AMXBans] The Player %s was not found",g_ident)

if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans] Player %s could not be found",g_ident)

return PLUGIN_HANDLED
}

if(!get_ban_type(g_ban_type[id],charsmax(g_ban_type[]),g_choicePlayerAuthid[id],
g_choicePlayerIp[id]))
{
log_amx("[AMXBans ERROR cmdBan] Steamid / IP Invalid! Bantype: <%s> | Authid: <%s> | IP: <%s>",g_ban_type[id],g_choicePlayerAuthid[id],g_choicePlayerIp[id])
g_being_banned[g_choicePlayerId[id]]=false
return PLUGIN_HANDLED
}

if (equal(g_ban_type[id], "S"))
{
formatex(g_SqlX_Cache, charsmax(g_SqlX_Cache),"SELECT player_id FROM %s WHERE player_id='%s' AND expired=0", tbl_bans, g_choicePlayerAuthid[id])

if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans cmdBan] Banned a player by SteamID: %s",g_choicePlayerAuthid[id])
}
else
{
formatex(g_SqlX_Cache, charsmax(g_SqlX_Cache),"SELECT player_ip FROM %s WHERE player_ip='%s' AND expired=0", tbl_bans, g_choicePlayerIp[id])

if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans cmdBan] Banned a player by IP/steamID: %s",g_choicePlayerIp[id])
}
new pquery[1024]
prepare_prefix(g_SqlX_Cache,pquery,charsmax(pquery))

new data[1]
data[0] = id
SQL_ThreadQuery(g_SqlX, "cmd_ban_", pquery, data, 1)

return PLUGIN_HANDLED
}

public cmd_ban_(failstate, Handle:query, error[], errnum, data[], size)
{
new id = data[0]

if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans cmd_ban_ function 2]Playerid: %d", g_choicePlayerId[id])

new bool:serverCmd = false
/* Determine if this was a server command or a command issued by a player in the game */
if ( id == 0 )
serverCmd = true;

if (failstate)
{
new szQuery[256]
SQL_GetQueryString(query,szQuery,255)
MySqlX_ThreadError( szQuery, error, errnum, failstate, "cmdBan.inl::cmdBan" )
}
else
{
if (!SQL_NumResults(query))
{
if (g_choicePlayerId[id])
{
get_user_name(g_choicePlayerId[id], g_choicePlayerName[id], charsmax(g_choicePlayerName[]))
}
else /* The player was not found in server */
{
// Must make that false to be able to ban another player not on the server
// Players that aren't in the server always get id = 0
g_being_banned[0] = false

if (serverCmd)
server_print("[AMXBans] The Player %s was not found",g_ident)
else
console_print(id, "[AMXBans] The Player %s was not found",g_ident)

if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans] Player %s could not be found",g_ident)

return PLUGIN_HANDLED
}

new admin_nick[100], admin_steamid[50], admin_ip[20]
mysql_get_username_safe(id, admin_nick, 99)
get_user_ip(id, admin_ip, 19, 1)

if (!serverCmd)
{
get_user_authid(id, admin_steamid, 49)

if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans cmdBan] Adminsteamid: %s, Servercmd: %s", admin_steamid, (serverCmd)?"Yes":"No")
}
else
{
/* If the server does the ban you cant get any steam_ID or team */
admin_steamid = ""

/* This is so you can have a shorter name for the servers hostname.
Some servers hostname can be very long b/c of sponsors and that will make the ban list on the web bad */
new servernick[100]
get_pcvar_string(pcvar_server_nick, servernick, 99)
if (strlen(servernick))
copy(admin_nick,charsmax(admin_nick),servernick)
}

/* If HLGUARD ban, the admin nick will be set to [HLGUARD] */
if ( contain(g_choiceReason[id], "[HLGUARD]") != -1 )
copy(admin_nick,charsmax(admin_nick),"[HLGUARD]")

/* If ATAC ban, the admin nick will be set to [ATAC] */
if ( contain(g_choiceReason[id], "Max Team Kill Violation") != -1 )
copy(admin_nick,charsmax(admin_nick),"[ATAC]")

if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans cmdBan] Admin nick: %s, Admin userid: %d", admin_nick, get_user_userid(id))

new server_name[200]
mysql_get_servername_safe(server_name, charsmax(server_name))

if ( get_pcvar_num(pcvar_add_mapname) ) {
new mapname[32]//, pre[4],post[4]
get_mapname(mapname,31)
format(server_name,charsmax(server_name),"%s (%s)",server_name,mapname)
}

new player_nick[64]
mysql_escape_string(g_choicePlayerName[id],player_nick,charsmax(player_nick))
new admin_nick_safe[200]
mysql_escape_string(admin_nick,admin_nick_safe,charsmax(admin_nick_safe))

format(g_SqlX_Cache, charsmax(g_SqlX_Cache), "INSERT INTO `%s` \
(player_id,player_ip,player_nick,admin_ip,admin_id,admin_nick,ban_type,ban_reaso
n,ban_created,ban_length,server_name,server_ip,expired) \
VALUES('%s','%s','%s','%s','%s','%s','%s','%s',UNIX_TIMESTAMP(NOW()),%d,'%s','%s:%s',0)", \
tbl_bans, g_choicePlayerAuthid[id], g_choicePlayerIp[id], player_nick, admin_ip, admin_steamid, admin_nick_safe, g_ban_type[id], \
g_choiceReason[id], g_choiceTime[id], server_name, g_ip, g_port)

new pquery[1024]
prepare_prefix(g_SqlX_Cache,pquery,charsmax(pquery))

new data[4]
data[0] = id
//Add by ~Val~ for trigger on cmd ban
data[3] = 1

SQL_ThreadQuery(g_SqlX, "insert_bandetails", pquery, data, 4)
}
else
{
if ( serverCmd )
log_message("[AMXBans] %L",LANG_SERVER,"ALREADY_BANNED", g_choicePlayerAuthid[id], g_choicePlayerIp[id])
else
client_print(id,print_console,"[AMXBans] %L",LANG_PLAYER,"ALREADY_BANNED", g_choicePlayerAuthid[id], g_choicePlayerIp[id])
// Must make that false to be able to ban another player not on the server
// Players that aren't in the server always get id = 0
g_being_banned[g_choicePlayerId[id]] = false

}
}

return PLUGIN_HANDLED
}

/********************************************************************************
***********************************/
/********************************************************************************
***********************************/
/********************************************************************************
***********************************/
public insert_bandetails(failstate, Handle:query, error[], errnum, data[], size)
{
new id = data[0]
new cmd = data[3]

if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans cmdBan function 5]Playerid: %d",g_choicePlayerId[id])

if (failstate)
{
new szQuery[256]
if(cmd)
MySqlX_ThreadError( szQuery, error, errnum, failstate, "cmdBan.inl::cmd_ban_")
else
MySqlX_ThreadError( szQuery, error, errnum, failstate, "cmdBan.inl::_cmdMenuBan" )

return PLUGIN_HANDLED
}

new bid = SQL_GetInsertId(query)

select_amxbans_motd(id,g_choicePlayerId[id],bid)
return PLUGIN_HANDLED
}
/********************************************************************************
***********************************/
public select_amxbans_motd(id,player,bid)
{
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans cmdBan function 5]Bid: %d", bid)

//get ban details from db
format(g_SqlX_Cache, charsmax(g_SqlX_Cache), "SELECT si.amxban_motd,ba.player_nick,ba.player_id,ba.player_ip, \
ba.admin_nick,ba.admin_id,ba.ban_type,ba.ban_reason,ba.ban_length FROM `%s` as si,`%s` as ba \
WHERE ba.bid=%d AND si.address = '%s:%s'", tbl_serverinfo, tbl_bans,bid,g_ip, g_port)
new pquery[1024]
prepare_prefix(g_SqlX_Cache,pquery,charsmax(pquery))

new data[4]
data[0] = id
data[1] = bid
data[2] = player
SQL_ThreadQuery(g_SqlX, "_select_amxbans_motd", pquery, data, 4)


return PLUGIN_HANDLED
}

public _select_amxbans_motd(failstate, Handle:query, error[], errnum, data[], size)
{
new id = data[0]
new bid = data[1]
new player = data[2]
//new iBanLength = g_choiceTime[id]

if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans cmdBan function 6]Playerid: %d, Bid: %d", player, bid)

new bool:serverCmd = false
/* Determine if this was a server command or a command issued by a player in the game */
if ( id == 0 )
serverCmd = true;

if (failstate)
{
new szQuery[256]
MySqlX_ThreadError( szQuery, error, errnum, failstate, "cmdBan.inl::select_amxbans_motd" )
return PLUGIN_HANDLED
}

new amxban_motd_url[256]
new admin_steamid[35], admin_nick[100],pl_steamid[35],pl_nick[100],pl_ip[22]
new ban_type[32],ban_reason[128],iBanLength
if (!SQL_NumResults(query))
{
amxban_motd_url[0]='^0'
log_amx("[AMXBans cmdBan function 6.1] select_motd without result: %d, Bid: %d", player, bid)

if(player && is_user_connected(player))
{
new pid=player+200
set_task(kick_delay, "delayed_kick", pid)
}
return PLUGIN_HANDLED
//copy(amxban_motd_url,256, "0")
}
else
{
SQL_ReadResult(query, 0, amxban_motd_url, 256)
SQL_ReadResult(query, 1, pl_nick, 99)
SQL_ReadResult(query, 2, pl_steamid, 34)
SQL_ReadResult(query, 3, pl_ip, 21)
SQL_ReadResult(query, 4, admin_nick, 99)
SQL_ReadResult(query, 5, admin_steamid, 34)
SQL_ReadResult(query, 6, ban_type, 31)
SQL_ReadResult(query, 7, ban_reason, 127)
iBanLength=SQL_ReadResult(query,8)
}

new admin_team[11]

get_user_team(id, admin_team, 10)
//get_user_authid(id, admin_steamid, charsmax(admin_steamid))
//mysql_get_username_safe(id,admin_nick,charsmax(admin_nick))

new cTimeLengthPlayer[128]
new cTimeLengthServer[128]

if (iBanLength > 0)
{
get_time_length(player, iBanLength, timeunit_minutes, cTimeLengthPlayer, 127)
get_time_length(0, iBanLength, timeunit_minutes, cTimeLengthServer, 127)
}
else
{ //Permanent Ban
format(cTimeLengthPlayer, 127, "%L", player, "TIME_ELEMENT_PERMANENTLY")
format(cTimeLengthServer, 127, "%L", LANG_SERVER, "TIME_ELEMENT_PERMANENTLY")
}

new show_activity = get_cvar_num("amx_show_activity")
if( (get_user_flags(id)&get_admin_mole_access_flag() || id == 0) && (get_pcvar_num(pcvar_show_name_evenif_mole) == 0) )
show_activity = 1

if (player)
{
new complain_url[256]
get_pcvar_string(pcvar_complainurl ,complain_url, 255)

client_print(player,print_console,"[AMXBans] ===============================================")

new ban_motd[1400]
if (show_activity == 2)
{
client_print(player,print_console,"[AMXBans] %L",player,"MSG_6", admin_nick)
client_print(player,print_console,"[AMXBans] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_2", ban_reason, cTimeLengthPlayer, pl_steamid, admin_nick)
}
else
{
client_print(player,print_console,"[AMXBans] %L",player,"MSG_1")
client_print(player,print_console,"[AMXBans] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_1", ban_reason, cTimeLengthPlayer, pl_steamid)
}

client_print(player,print_console,"[AMXBans] %L",player,"MSG_2", ban_reason)
client_print(player,print_console,"[AMXBans] %L",player,"MSG_3", cTimeLengthPlayer)
client_print(player,print_console,"[AMXBans] %L",player,"MSG_4", pl_steamid)
client_print(player,print_console,"[AMXBans] %L",player,"MSG_5", pl_ip)
client_print(player,print_console,"[AMXBans] ===============================================")

new msg[1400]

if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans cmdBan function 6.2]Bid: %d URL= %s Kickdelay:%f", bid, amxban_motd_url, kick_delay)

if(contain(amxban_motd_url,"sid=%s&adm=%d&lang=%s") != -1)
{
new bidstr[10],lang[5]
formatex(bidstr,9,"B%d",bid)
get_user_info(player,"lang",lang,charsmax(lang))
if(equal(lang,""))
get_cvar_string("amx_language",lang,charsmax(lang))
format(msg, charsmax(msg), amxban_motd_url,bidstr,(show_activity==2)?1:0,lang)
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans cmdBan function 6.3]Motd: %s",msg)
}
else
formatex(msg, charsmax(msg), ban_motd)

if(is_user_connected(player))
{
new ret
ExecuteForward(MFHandle[Ban_MotdOpen],ret,player)

new motdTitle[64]
formatex(motdTitle,charsmax(motdTitle),"Banned by Amxbans %s",VERSION)
//add(motdTitle,255,VERSION,0)
show_motd(player, msg, motdTitle)

new pid=player+200
set_task(kick_delay, "delayed_kick", pid)
}
}
else
{ /* The player was not found in server */
if (serverCmd)
server_print("[AMXBans] The Player %s was not found",g_ident)
else
console_print(id, "[AMXBans] The Player %s was not found",g_ident)

if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans] Player %s could not be found",g_ident)

return PLUGIN_HANDLED
}

if (equal(ban_type, "S"))
{
if ( serverCmd )
log_message("[AMXBans] %L",LANG_SERVER,"STEAMID_BANNED_SUCCESS_IP_LOGGED",pl_steamid)
else
client_print(id,print_console,"[AMXBans] %L",id,"STEAMID_BANNED_SUCCESS_IP_LOGGED",pl_steamid)
}
else
{
if ( serverCmd )
log_message("[AMXBans] %L",LANG_SERVER,"STEAMID_IP_BANNED_SUCCESS")
else
client_print(id,print_console,"[AMXBans] %L",id,"STEAMID_IP_BANNED_SUCCESS")
}

if (serverCmd)
{
/* If the server does the ban you cant get any steam_ID or team */
admin_steamid[0] = '^0'
admin_team[0] = '^0'
}

// Logs all bans by admins/server to amxx logs
if (g_choiceTime[id] > 0)
{
log_amx("%L", LANG_SERVER, "BAN_LOG",admin_nick, get_user_userid(id), admin_steamid, admin_team, \
pl_nick, pl_steamid, cTimeLengthServer, iBanLength, ban_reason)

if ( get_pcvar_num(pcvar_show_in_hlsw) )
{
// If you use HLSW you will see when someone ban a player if you can see the chatlogs
log_message("^"%s<%d><%s><%s>^" triggered ^"amx_chat^" (text ^"%L^")", admin_nick, get_user_userid(id), admin_steamid, admin_team, \
LANG_SERVER, "BAN_CHATLOG", pl_nick, pl_steamid, cTimeLengthServer, iBanLength, ban_reason)
}
}
else
{
log_amx("%L", LANG_SERVER, "BAN_LOG_PERM", admin_nick, get_user_userid(id), admin_steamid, admin_team, pl_nick, pl_steamid, ban_reason)

if ( get_pcvar_num(pcvar_show_in_hlsw) )
{
// If you use HLSW you will see when someone ban a player if you can see the chatlogs
log_message("^"%s<%d><%s><%s>^" triggered ^"amx_chat^" (text ^"%L^")", admin_nick, get_user_userid(id), admin_steamid, admin_team, \
LANG_SERVER, "BAN_CHATLOG_PERM", pl_nick, pl_steamid, ban_reason)
}
}

new message[191]

if (show_activity == 1)
{
new playerCount, idx, players[32]
get_players(players, playerCount)

for (idx=0; idx<playerCount; idx++)
{
if (is_user_hltv(players[idx]) || is_user_bot(players[idx]))
continue // Dont count HLTV or bots as players

get_time_length(players[idx], iBanLength, timeunit_minutes, cTimeLengthPlayer, 127)

if (g_choiceTime[id] > 0)
format(message,190,"%L", players[idx],"PUBLIC_BAN_ANNOUNCE", pl_nick, cTimeLengthPlayer, ban_reason)
else
format(message,190,"%L", players[idx],"PUBLIC_BAN_ANNOUNCE_PERM", pl_nick, ban_reason)

if ( get_pcvar_num(pcvar_show_hud_messages) == 1 )
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 10.0 , 0.5, 0.15, -1)
ShowSyncHudMsg(players[idx], g_MyMsgSync, "%s", message)
}
//client_print(players[idx],print_chat, "%s", message)
ColorChat(players[idx], RED, "[AMXBans]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}

if (show_activity == 2)
{
new playerCount, idx, players[32]
get_players(players, playerCount)

for (idx=0; idx<playerCount; idx++)
{
if (is_user_hltv(players[idx]) || is_user_bot(players[idx]))
continue // Dont count HLTV or bots as players
get_time_length(players[idx], iBanLength, timeunit_minutes, cTimeLengthPlayer, 127)

if (g_choiceTime[id] > 0)
format(message,190, "%L", players[idx], "PUBLIC_BAN_ANNOUNCE_2", pl_nick, cTimeLengthPlayer, ban_reason, admin_nick)
else
format(message,190, "%L", players[idx], "PUBLIC_BAN_ANNOUNCE_2_PERM", pl_nick, ban_reason, admin_nick)

if ( get_pcvar_num(pcvar_show_hud_messages) == 1 ) {
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 10.0 , 0.5, 0.15, -1)
ShowSyncHudMsg(players[idx], g_MyMsgSync, "%s", message)
}
//client_print(players[idx],print_chat, "%s", message)
ColorChat(players[idx], RED, "[AMXBans]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
return PLUGIN_HANDLED
}
/*
public insert_ban_cmd(failstate, Handle:query, error[], errnum, data[], size)
{
if (failstate)
{
new szQuery[256]
MySqlX_ThreadError( szQuery, error, errnum, failstate, 12 )
}
return PLUGIN_HANDLED
}
*/

public locate_player(id, identifier[])
{
g_ban_type[id] = "S"

// Check based on steam ID
new player = find_player("c", identifier)

// Check based on a partial non-case sensitive name
if (!player)
{
player = find_player("bl", identifier)
}
// Check based on IP address
if (!player)
{
player = find_player("d", identifier)
if ( player )
g_ban_type[id] = "SI"
}
// Check based on user ID
if ( !player && identifier[0]=='#' && identifier[1] )
{
player = find_player("k",str_to_num(identifier[1]))
}

if ( player )
{
/* Check for immunity */
if (get_user_flags(player) & ADMIN_IMMUNITY)
{
new name[32]
get_user_name(player, name, 31)
if( id == 0 )
server_print("[AMXBans] Client ^"%s^" has immunity", name)
else
console_print(id,"[AMXBans] Client ^"%s^" has immunity", name)
return -1
}
/* Check for a bot */
else if (is_user_bot(player))
{
new name[32]
get_user_name(player, name, 31)
if( id == 0 )
server_print("[AMXBans] Client ^"%s^" is a bot", name)
else
console_print(id,"[AMXBans] Client ^"%s^" is a bot", name)
return -1
}
}
else
{
// add function for disconnected players, maybe later ^^
return -1
}
return player
}

amxbans_main.sma
new AUTHOR[] = "AMXBans & ~Val~"
new PLUGIN_NAME[] = "AMXBans Main"
new VERSION[] = "6.0.2" // This is used in the plugins name

new amxbans_version[] = "6.0.0" // This is for the DB

#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#include <time>

// Amxbans Core natives
#include "include/amxbans_core.inc"

// Amxbans .inl files
#include "amxbans/global_vars.inl" // edited (endless)
#include "amxbans/color_chat.inl" // not need edit
#include "amxbans/init_functions.inl" // edited
#include "amxbans/check_player.inl" // edited
#include "amxbans/check_flag.inl" // not edit
#include "amxbans/menu_stocks.inl" // edited (endless)
#include "amxbans/menu_ban.inl" // edited
#include "amxbans/menu_disconnected.inl" // edited
#include "amxbans/menu_history.inl" // edited
#include "amxbans/menu_flag.inl" // not edit
#include "amxbans/cmdBan.inl" // edited
#include "amxbans/web_handshake.inl" // edited


// 16k * 4 = 64k stack size
#pragma dynamic 16384 // Give the plugin some extra memory to use


public plugin_init()
{
register_plugin(PLUGIN_NAME, VERSION, AUTHOR)
register_cvar("amxbans_version", VERSION, FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_UNLOGGED|FCVAR_SPONLY)

register_dictionary("amxbans.txt")
register_dictionary("common.txt")
register_dictionary("time.txt")

register_clcmd("amx_banmenu", "cmdBanMenu", ADMIN_BAN, "- displays ban menu")
register_clcmd("amxbans_custombanreason", "setCustomBanReason", ADMIN_BAN, "- configures custom ban message")
register_clcmd("amx_banhistorymenu", "cmdBanhistoryMenu", ADMIN_BAN, "- displays banhistorymenu")
register_clcmd("amx_bandisconnectedmenu", "cmdBanDisconnectedMenu", ADMIN_BAN, "- displays bandisconnectedmenu")
register_clcmd("amx_flaggingmenu","cmdFlaggingMenu",ADMIN_BAN,"- displays flagging menu")

register_srvcmd("amx_sethighbantimes", "setHighBantimes")
register_srvcmd("amx_setlowbantimes", "setLowBantimes")
register_srvcmd("amx_setflagtimes","setFlagTimes")

register_concmd("amx_reloadreasons", "cmdFetchReasons", ADMIN_CFG)

pcvar_serverip = register_cvar("amxbans_server_address","")
pcvar_server_nick = register_cvar("amxbans_servernick", "")
pcvar_complainurl = register_cvar("amxbans_complain_url", "www.yoursite.com") // Dont use http:// then the url will not show
pcvar_debug = register_cvar("amxbans_debug", "0") // Set this to 1 to enable debug
pcvar_newbancmd = register_cvar("amxbans_use_newbancmd","1")
pcvar_add_mapname = register_cvar("amxbans_add_mapname_in_servername", "0")
pcvar_flagged_all = register_cvar("amxbans_flagged_all_server","1")
pcvar_show_in_hlsw = register_cvar("amxbans_show_in_hlsw", "1")
pcvar_show_hud_messages = register_cvar("amxbans_show_hud_messages", "1")
pcvar_higher_ban_time_admin = register_cvar("amxbans_higher_ban_time_admin", "n")
pcvar_admin_mole_access = register_cvar("amxbans_admin_mole_access", "r")
pcvar_show_name_evenif_mole = register_cvar("amxbans_show_name_evenif_mole", "1")
pcvar_custom_statictime = register_cvar("amxbans_custom_statictime","1440")
pcvar_show_prebanned = register_cvar("amxbans_show_prebanned","1")
pcvar_show_prebanned_num = register_cvar("amxbans_show_prebanned_num","2")
pcvar_default_banreason = register_cvar("amxbans_default_ban_reason","unknown")

register_concmd("amx_ban", "cmdBan", ADMIN_BAN, "<steamID or nickname or #authid or IP> <time in mins> <reason>")
register_srvcmd("amx_ban", "cmdBan", -1, "<steamID or nickname or #authid or IP> <time in mins> <reason>")
register_concmd("amx_banip", "cmdBan", ADMIN_BAN, "<steamID or nickname or #authid or IP> <time in mins> <reason>")
register_srvcmd("amx_banip", "cmdBan", -1, "<steamID or nickname or #authid or IP> <time in mins> <reason>")

register_srvcmd("amx_list", "cmdLst", ADMIN_RCON, "sends playerinfos to web")

g_coloredMenus = colored_menus()
g_MyMsgSync = CreateHudSyncObj()

g_banReasons = ArrayCreate(128,7)
g_banReasons_Bantime = ArrayCreate(1,7)

g_disconPLname = ArrayCreate(32)
g_disconPLauthid = ArrayCreate(35)
g_disconPLip = ArrayCreate(22)

iMaxPlrs = get_maxplayers()

new configsDir[64]
get_configsdir(configsDir, 63)

server_cmd("exec %s/sql.cfg", configsDir)
server_cmd("exec %s/amxbans.cfg", configsDir)

color_chat_init()
}

create_forwards()
{
MFHandle[Ban_MotdOpen]=CreateMultiForward("amxbans_ban_motdopen",ET_IGNORE,FP_CELL)
MFHandle[Player_Flagged]=CreateMultiForward("amxbans_player_flagged",ET_IGNORE,FP_CELL,FP_CELL,FP_STRING)
MFHandle[Player_UnFlagged]=CreateMultiForward("amxbans_player_unflagged",ET_IGNORE,FP_CELL)
}

public addMenus()
{
new szKey[64]
format(szKey,charsmax(szKey),"%L",LANG_SERVER,"ADMMENU_FLAGGING")
AddMenuItem(szKey,"amx_flaggingmenu",ADMIN_BAN,PLUGIN_NAME)
format(szKey,charsmax(szKey),"%L",LANG_SERVER,"ADMMENU_DISCONNECTED")
AddMenuItem(szKey,"amx_bandisconnectedmenu",ADMIN_BAN,PLUGIN_NAME)
format(szKey,charsmax(szKey),"%L",LANG_SERVER,"ADMMENU_HISTORY")
AddMenuItem(szKey,"amx_banhistorymenu",ADMIN_BAN,PLUGIN_NAME)
}

//forward from amxbans_core
public amxbans_sql_initialized(Handle:sqlTuple,dbPrefix[])
{

copy(g_dbPrefix,charsmax(g_dbPrefix),dbPrefix)
//db was already initialized, second init can be caused by a second forward from main plugin
//this should never happen!!
if(g_SqlX != Empty_Handle) {
log_amx("[AMXBans Error] DB Info Tuple from amxbans_core initialized twice!!")
return PLUGIN_HANDLED
}

g_SqlX=sqlTuple
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBans] Received DB Info Tuple from amxbans_core: %d | %s", sqlTuple,g_dbPrefix)
if(g_SqlX==Empty_Handle)
{
log_amx("[AMXBans Error] DB Info Tuple from amxbans_main is empty! Trying to get a valid one")
new host[64], user[64], pass[64], db[64]

get_cvar_string("amx_sql_host", host, 63)
get_cvar_string("amx_sql_user", user, 63)
get_cvar_string("amx_sql_pass", pass, 63)
get_cvar_string("amx_sql_db", db, 63)

g_SqlX = SQL_MakeDbTuple(host, user, pass, db)

get_cvar_string("amx_sql_prefix",g_dbPrefix,charsmax(g_dbPrefix))
}
create_forwards()
set_task(0.1, "banmod_online")
set_task(0.2, "fetchReasons")
set_task(2.0, "addMenus")

return PLUGIN_HANDLED
}

/*
public plugin_cfg() {
//set_task(0.1, "sql_init")
}
public sql_init() {
new host[64], user[64], pass[64], db[64]

get_cvar_string("amx_sql_host", host, 63)
get_cvar_string("amx_sql_user", user, 63)
get_cvar_string("amx_sql_pass", pass, 63)
get_cvar_string("amx_sql_db", db, 63)

get_cvar_string("amx_sql_prefix",g_dbPrefix,charsmax(g_dbPrefix))
//amxbans_get_db_prefix(g_dbPrefix,charsmax(g_dbPrefix))

g_SqlX = SQL_MakeDbTuple(host, user, pass, db)

create_forwards()
set_task(0.1, "banmod_online")
set_task(0.2, "fetchReasons")
set_task(2.0, "addMenus")
}
*/
//////////////////////////////////////////////////////////////////
public get_higher_ban_time_admin_flag()
{
new flags[24]
get_pcvar_string(pcvar_higher_ban_time_admin, flags, 23)

return(read_flags(flags))
}

public get_admin_mole_access_flag()
{
new flags[24]
get_pcvar_string(pcvar_admin_mole_access, flags, 23)

return(read_flags(flags))
}

public delayed_kick(player_id)
{

player_id-=200
new userid = get_user_userid(player_id)
new kick_message[128]

format(kick_message,127,"%L", player_id,"KICK_MESSAGE")

if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[AMXBANS DEBUG] Delayed Kick ID: <%d>", player_id)

server_cmd("kick #%d %s",userid, kick_message)

g_kicked_by_amxbans[player_id]=true
g_being_banned[player_id] = false

return PLUGIN_CONTINUE
}

/********* Error handler ***************/
MySqlX_ThreadError(szQuery[], error[], errnum, failstate, place[])
{
if (failstate == TQUERY_CONNECT_FAILED)
log_amx("%L", LANG_SERVER, "TCONNECTION_FAILED")
else if (failstate == TQUERY_QUERY_FAILED)
log_amx("%L", LANG_SERVER, "TQUERY_FAILED")

log_amx("%L", LANG_SERVER, "TQUERY_ERROR", place)
log_amx("%L", LANG_SERVER, "TQUERY_MSG", error, errnum)
log_amx("%L", LANG_SERVER, "TQUERY_STATEMENT", szQuery)
}
/********* client functions ************/

public client_authorized(id)
{
//fix for the invalid tuple error at mapchange, only a fast fix now
if(g_SqlX==Empty_Handle)
{
set_task(2.0,"client_authorized",id)
return PLUGIN_HANDLED
}

//check if an activ ban exists
check_player(id)
return PLUGIN_CONTINUE
}
public client_putinserver(id)
{
//fix for the invalid tuple error at mapchange, only a fast fix now
if(g_SqlX==Empty_Handle)
{
set_task(5.0,"client_putinserver",id)
return PLUGIN_HANDLED
}
//check if the player was banned before
prebanned_check(id)
//remove the player from the disconnect player list because he is already connected ;-)
disconnect_remove_player(id)
return PLUGIN_CONTINUE
}

public client_disconnect(id)
{
g_being_banned[id]=false

if(!g_kicked_by_amxbans[id])
{
//only add players to disconnect list if not kicked by amxbans
disconnected_add_player(id)
}
else if(g_being_flagged[id])
{
// if kicked by amxbans maybe remove the flagged, not added yet
/*****///remove_flagged_by_steam(0,id,0)
}
//reset some vars

g_kicked_by_amxbans[id]=false
g_being_flagged[id]=false
}

/********* timecmd functions ************/
public setHighBantimes()
{
new arg[32]
new argc = read_argc() - 1
g_highbantimesnum = argc

if(argc < 1 || argc > 14)
{
log_amx("[AMXBANS] You have more than 14 or less than 1 bantimes set in amx_sethighbantimes")
log_amx("[AMXBANS] Loading default bantimes")
loadDefaultBantimes(1)

return PLUGIN_HANDLED
}

new i = 0
new num[32], flag[32]
while (i < argc)
{
read_argv(i + 1, arg, 31)
parse(arg, num, 31, flag, 31)

if(equali(flag, "m"))
g_HighBanMenuValues[i] = str_to_num(num)
else if(equali(flag, "h"))
g_HighBanMenuValues[i] = (str_to_num(num) * 60)
else if(equali(flag, "d"))
g_HighBanMenuValues[i] = (str_to_num(num) * 1440)
else if(equali(flag, "w"))
g_HighBanMenuValues[i] = (str_to_num(num) * 10080)

i++
}
return PLUGIN_HANDLED
}

public setLowBantimes()
{
new arg[32]
new argc = read_argc() - 1
g_lowbantimesnum = argc

if(argc < 1 || argc > 14)
{
log_amx("[AMXBANS] You have more than 14 or less than 1 bantimes set in amx_setlowbantimes")
log_amx("[AMXBANS] Loading default bantimes")
loadDefaultBantimes(2)

return PLUGIN_HANDLED
}

new i = 0
new num[32], flag[32]
while (i < argc)
{
read_argv(i + 1, arg, 31)
parse(arg, num, 31, flag, 31)

if(equali(flag, "m"))
g_LowBanMenuValues[i] = str_to_num(num)
else if(equali(flag, "h"))
g_LowBanMenuValues[i] = (str_to_num(num) * 60)
else if(equali(flag, "d"))
g_LowBanMenuValues[i] = (str_to_num(num) * 1440)
else if(equali(flag, "w"))
g_LowBanMenuValues[i] = (str_to_num(num) * 10080)

i++
}
return PLUGIN_HANDLED
}

public setFlagTimes()
{
new arg[32]
new argc = read_argc() - 1
g_flagtimesnum = argc
if(argc < 1 || argc > 14)
{
log_amx("[AMXBANS] You have more than 14 or less than 1 flagtimes set in amx_setflagtimes")
log_amx("[AMXBANS] Loading default flagtimes")
loadDefaultBantimes(3)

return PLUGIN_HANDLED
}

new i = 0
new num[32], flag[32]
while (i < argc)
{
read_argv(i + 1, arg, 31)
parse(arg, num, 31, flag, 31)

if(equali(flag, "m"))
g_FlagMenuValues[i] = str_to_num(num)
else if(equali(flag, "h"))
g_FlagMenuValues[i] = (str_to_num(num) * 60)
else if(equali(flag, "d"))
g_FlagMenuValues[i] = (str_to_num(num) * 1440)
else if(equali(flag, "w"))
g_FlagMenuValues[i] = (str_to_num(num) * 10080)

i++
}
return PLUGIN_HANDLED
}

loadDefaultBantimes(num)
{
if(num == 1 || num == 0)
server_cmd("amx_sethighbantimes 5 60 240 600 6000 0")
if(num == 2 || num == 0)
server_cmd("amx_setlowbantimes 5 30 60 480 600 1440")
if(num == 3 || num == 0)
server_cmd("amx_setflagtimes 60 240 600 1440 10080 40320 90720 0")
}

/********* mysql escape functions ************/

mysql_escape_string(const source[],dest[],len)
{
SQL_QuoteString(Empty_Handle,dest,len,source)
}

mysql_get_username_safe(id,dest[],len)
{
new name[128]
get_user_name(id,name,127)
SQL_QuoteString(Empty_Handle,dest,len,name)
}

mysql_get_servername_safe(dest[],len)
{
new server_name[256]
get_cvar_string("hostname", server_name, charsmax(server_name))
SQL_QuoteString(Empty_Handle,dest,len,server_name)
}

Подозреваю что этот исходжник оперирует параметрами скриптов .inl и на прямую к выдаче бана он не относиться
menu_ban.inl

#if defined _menu_ban_included
#endinput
#endif
#define _menu_ban_included

#include <amxmodx>
#include <amxmisc>

public cmdBanMenu(id,level,cid)
{
if (!cmd_access(id,level,cid,1))
return PLUGIN_HANDLED

cmdBanMenu2(id)
return PLUGIN_HANDLED
}

public cmdBanMenu2(id)
{
new menu = menu_create("menu_player","actionBanMenu")

MenuSetProps(id,menu,"BAN_MENU")
new callback=menu_makecallback("callback_MenuGetPlayers")
MenuGetPlayers(menu,callback)

menu_display(id,menu,0)

return PLUGIN_HANDLED
}

public actionBanMenu(id,menu,item)
{
if(item < 0)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}

new acc,szInfo[3],szText[128],callb
menu_item_getinfo(menu,item,acc,szInfo,charsmax(szInfo),szText,charsmax(szText),
callb)
new pid=str_to_num(szInfo)

if(!is_user_connected(pid))
{
//client_print(id,print_chat,"%L",id,"PLAYER_LEAVED",g_PlayerName[pid])
ColorChat(id, RED, "[AMXBans]^x01 %L",id,"PLAYER_LEAVED",g_PlayerName[pid])
client_cmd(id,"amx_bandisconnectedmenu")
return PLUGIN_HANDLED
}

copy(g_choicePlayerName[id],charsmax(g_choicePlayerName[]),g_PlayerName[pid])
get_user_authid(pid,g_choicePlayerAuthid[id],charsmax(g_choicePlayerAuthid[]))
get_user_ip(pid,g_choicePlayerIp[id],charsmax(g_choicePlayerIp[]),1)

g_choicePlayerId[id]=pid

if(get_pcvar_num(pcvar_debug) >= 2)
log_amx("[AMXBans PlayerMenu %d] %d choice: %d | %s | %s | %d",menu,id,g_choicePlayerName[id],g_choicePlayerAuthid[id],g_choicePlayerIp[i
d],g_choicePlayerId[id])

//see if the admin can choose the bantime
if(amxbans_get_static_bantime(id) && !bLoadStatReason )
{
set_task(0.2,"cmdReasonMenu",id)
}
else
{
set_task(0.2,"cmdBantimeMenu",id)
}

menu_destroy(menu)
return PLUGIN_HANDLED
}

public cmdBantimeMenu(id)
{

new menu = menu_create("menu_bantime","actionBantimeMenu")

MenuSetProps(id,menu,"BANTIME_MENU")
MenuGetBantime(id,menu)

menu_display(id,menu,0)

return PLUGIN_HANDLED
}

public actionBantimeMenu(id,menu,item)
{
if(item < 0)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}

new acc,szInfo[11],szText[128],callb
menu_item_getinfo(menu,item,acc,szInfo,10,szText,127,callb)

g_choiceTime[id]=str_to_num(szInfo)

if(get_pcvar_num(pcvar_debug) >= 2)
log_amx("[AMXBans BantimeMenu %d] %d choice: %d min",menu,id,g_choiceTime[id])

set_task(0.2,"cmdReasonMenu",id)

menu_destroy(menu)
return PLUGIN_HANDLED
}

public cmdReasonMenu(id)
{

new menu = menu_create("menu_banreason","actionReasonMenu")

MenuSetProps(id,menu,"REASON_MENU")
MenuGetReason(id,menu,amxbans_get_static_bantime(id))

menu_display(id,menu,0)

return PLUGIN_HANDLED
}

public actionReasonMenu(id,menu,item)
{
if(item < 0)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}

new acc,szInfo[3],szText[128],callb
menu_item_getinfo(menu,item,acc,szInfo,charsmax(szInfo),szText,charsmax(szText),
callb)

new aid=str_to_num(szInfo)

if(aid == 99)
{
if(amxbans_get_static_bantime(id)) g_choiceTime[id]=get_pcvar_num(pcvar_custom_statictime)
set_custom_reason[id]=true
client_cmd(id,"messagemode amxbans_custombanreason")
menu_destroy(menu)
return PLUGIN_HANDLED
}
else
{
ArrayGetString(g_banReasons,aid,g_choiceReason[id],charsmax(g_choiceReason[]))
if(amxbans_get_static_bantime(id))
g_choiceTime[id]=ArrayGetCell(g_banReasons_Bantime,aid)
}

if(get_pcvar_num(pcvar_debug) >= 2)
log_amx("[AMXBans ReasonMenu %d] %d choice: %s (%d min)",menu,id,g_choiceReason[id],g_choiceTime[id])

if(g_choicePlayerId[id] == -1)
//disconnected ban
cmdMenuBanDisc(id)
else
cmdMenuBan(id)

menu_destroy(menu)
return PLUGIN_HANDLED
}

Подозреваю, что этот скрипт относиться только к самому меню, но не к выдачи бана


Прошу помощи и содействия :)

Прикрепил к теме все скрипты
Прикрепленные файлы:
Прикрепленный файл  scripting.rar ( 37,34 килобайт ) Кол-во скачиваний: 29
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: