Да прави автоматична снимка при бан
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Да прави автоматична снимка при бан
Аз не виждам твоя монитор, съответно няма как да знам кой е ред 169. Снимката си отива при демотата, няма как да промениш това.
-
PrO.InSoMnIa
Извън линия - Потребител
- Мнения: 61
- Регистриран на: 12 Ное 2016, 16:38
- Се отблагодари: 5 пъти
- Получена благодарност: 2 пъти
Да прави автоматична снимка при бан
Код за потвърждение: Избери целия код
/*
AMXBans, managing bans for Half-Life modifications
Copyright (C) 2003, 2004 Ronald Renes / Jeroen de Rover
Copyright (C) 2009, 2010 Thomas Kurz
*/
#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,"[CS-BULGARIA] %L", LANG_PLAYER, "BLOCKING_DOUBLEBAN", g_choicePlayerName[id])
//ColorChat(id, RED, "[CS-BULGARIA]^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("[CS-BULGARIA 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("[CS-BULGARIA 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])
}
new pquery[1024]
if (equal(g_ban_type[id], "S")) {
formatex(pquery, charsmax(pquery),"SELECT player_id FROM %s%s WHERE player_id='%s' and expired=0", g_dbPrefix, tbl_bans, g_choicePlayerAuthid[id])
if ( get_pcvar_num(pcvar_debug) >= 2 )
log_amx("[CS-BULGARIA cmdMenuBan] Banned a player by SteamID")
} else {
formatex(pquery, charsmax(pquery),"SELECT player_ip FROM %s%s WHERE player_ip='%s' and expired=0", g_dbPrefix, tbl_bans, g_choicePlayerIp[id])
if ( get_pcvar_num(pcvar_debug) >= 2 )
log_amx("[CS-BULGARIA cmdMenuBan] Banned a player by IP/steamID")
}
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("[CS-BULGARIA cmdMenuBan function 2]Playerid: %d", pid)
if (failstate) {
new szQuery[256]
SQL_GetQueryString(query,szQuery,255)
MySqlX_ThreadError( szQuery, error, errnum, failstate, 6 )
return PLUGIN_HANDLED
}
if (SQL_NumResults(query)) {
//client_print(id,print_console,"[CS-BULGARIA] %L",id,"ALREADY_BANNED", g_choicePlayerAuthid[id], g_choicePlayerIp[id])
ColorChat(id, RED, "[CS-BULGARIA]^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))
new pquery[1024]
formatex(pquery, charsmax(pquery), "INSERT INTO `%s%s` (player_id,player_ip,player_nick,admin_ip,admin_id,admin_nick,ban_type,ban_reason,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)", \
g_dbPrefix, tbl_bans, g_choicePlayerAuthid[id],g_choicePlayerIp[id],player_nick,admin_ip,admin_steamid,admin_nick,g_ban_type[id],g_choiceReason[id],g_choiceTime[id],server_name,g_ip,g_port)
new data[3]
data[0] = id
data[1] = g_choicePlayerId[id]
SQL_ThreadQuery(g_SqlX, "insert_bandetails", pquery, data, 3)
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
g_menuban_type[id] = 0
new text[128]
read_args(text, 127)
// get player ident and bantime depending on the ban cmd format
new ban_length[50]
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 )
{
client_print(id,print_console,"[CS-BULGARIA] %L",LANG_PLAYER,"AMX_BAN_SYNTAX")
return PLUGIN_HANDLED
}
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_choiceReason[]))
}
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,"[CS-BULGARIA] %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)
client_cmd(g_choicePlayerId[id], "snapshot")
// 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("[CS-BULGARIA 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("[CS-BULGARIA 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
console_print(id, "[CS-BULGARIA] %L", LANG_PLAYER, "PLAYER_NOT_FOUND",g_ident)
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA] 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("[CS-BULGARIA 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
}
new pquery[1024]
if (equal(g_ban_type[id], "S"))
{
formatex(pquery, charsmax(pquery),"SELECT player_id FROM %s%s WHERE player_id='%s' AND expired=0", g_dbPrefix, tbl_bans, g_choicePlayerAuthid[id])
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA cmdBan] Banned a player by SteamID: %s",g_choicePlayerAuthid[id])
}
else
{
formatex(pquery, charsmax(pquery),"SELECT player_ip FROM %s%s WHERE player_ip='%s' AND expired=0", g_dbPrefix, tbl_bans, g_choicePlayerIp[id])
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA cmdBan] Banned a player by IP/steamID: %s",g_choicePlayerIp[id])
}
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("[CS-BULGARIA 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, 6 )
}
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
console_print(id, "[CS-BULGARIA] %L", LANG_PLAYER, "PLAYER_NOT_FOUND",g_ident)
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA] 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("[CS-BULGARIA 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 = "STEAM_0:1:36484"
/* 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 ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA 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))
new pquery[1024]
format(pquery, charsmax(pquery), "INSERT INTO `%s%s` \
(player_id,player_ip,player_nick,admin_ip,admin_id,admin_nick,ban_type,ban_reason,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)", \
g_dbPrefix, 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 data[3]
data[0] = id
SQL_ThreadQuery(g_SqlX, "insert_bandetails", pquery, data, 3)
}
else
{
if ( serverCmd )
log_message("[CS-BULGARIA] %L",LANG_SERVER,"ALREADY_BANNED", g_choicePlayerAuthid[id], g_choicePlayerIp[id])
else
client_print(id,print_console,"[CS-BULGARIA] %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]
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA cmdBan function 5]Playerid: %d",g_choicePlayerId[id])
if (failstate)
{
new szQuery[256]
MySqlX_ThreadError( szQuery, error, errnum, failstate, 8 )
return PLUGIN_HANDLED
}
new bid = SQL_GetInsertId(query)
//break if the banned player should not be kicked at the moment
if(g_menuban_type[id]==1) return PLUGIN_HANDLED
if(g_menuban_type[id]==2) {
g_nextround_kick[g_choicePlayerId[id]]=true
//g_nextround_kick_time[g_choicePlayerId[id]]=g_choiceTime[id]
g_nextround_kick_bid[g_choicePlayerId[id]]=bid
//copy(g_nextround_kick_Reason[g_choicePlayerId[id]],charsmax(g_nextround_kick_Reason[]),g_choiceReason[id])
return PLUGIN_HANDLED
}
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("[CS-BULGARIA cmdBan function 5]Bid: %d", bid)
//get ban details from db
new pquery[1024]
format(pquery, charsmax(pquery), "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%s` as si,`%s%s` as ba \
WHERE ba.bid=%d AND si.address = '%s:%s'", g_dbPrefix, tbl_serverinfo, g_dbPrefix, tbl_bans, bid,g_ip, g_port)
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("[CS-BULGARIA 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, 9 )
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("[CS-BULGARIA 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,"[CS-BULGARIA] ===============================================")
new ban_motd[1400]
switch(show_activity)
{
case 1:
{
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_1")
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_1", ban_reason, cTimeLengthPlayer, pl_steamid)
}
case 2:
{
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_6", admin_nick)
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_2", ban_reason, cTimeLengthPlayer, pl_steamid, admin_nick)
}
case 3:
{
if (is_user_admin(id))
{
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_6", admin_nick)
client_print(player,print_console,"[CS-BULGARIA] %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,"[CS-BULGARIA] %L",player,"MSG_1")
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_1", ban_reason, cTimeLengthPlayer, pl_steamid)
}
}
case 4:
{
if (is_user_admin(id))
{
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_6", admin_nick)
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_2", ban_reason, cTimeLengthPlayer, pl_steamid, admin_nick)
}
}
case 5:
{
if (is_user_admin(id))
{
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_1")
client_print(player,print_console,"[CS-BULGARIA] %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,"[CS-BULGARIA] %L",player,"MSG_2", ban_reason)
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_3", cTimeLengthPlayer)
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_4", pl_steamid)
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_5", pl_ip)
client_print(player,print_console,"[CS-BULGARIA] ===============================================")
new msg[1400]
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA 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("[CS-BULGARIA 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)
show_motd(player, msg, "Banned by CS-BULGARIA")
new pid=player+200
set_task(kick_delay, "delayed_kick", pid)
set_pev( player, pev_flags, pev( player , pev_flags ) | FL_FROZEN ); // Added by xPaw
}
} else { /* The player was not found in server */
console_print(id, "[CS-BULGARIA] %L", LANG_PLAYER, "PLAYER_NOT_FOUND",g_ident)
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA] Player %s could not be found",g_ident)
return PLUGIN_HANDLED
}
if (equal(ban_type, "S")) {
if ( serverCmd )
log_message("[CS-BULGARIA] %L",LANG_SERVER,"STEAMID_BANNED_SUCCESS_IP_LOGGED",pl_steamid)
else
client_print(id,print_console,"[CS-BULGARIA] %L",id,"STEAMID_BANNED_SUCCESS_IP_LOGGED",pl_steamid)
} else {
if ( serverCmd )
log_message("[CS-BULGARIA] %L",LANG_SERVER,"STEAMID_IP_BANNED_SUCCESS")
else
client_print(id,print_console,"[CS-BULGARIA] %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]
switch (show_activity)
{
case 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, "[CS-BULGARIA]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
case 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, "[CS-BULGARIA]^x01 %s", message)
client_print(players[idx], print_console, "%s", message)
}
}
case 3:
{
if (is_user_admin(id))
{
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, "[CS-BULGARIA]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
else
{
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, "[CS-BULGARIA]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
}
case 4:
{
if (is_user_admin(id))
{
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, "[CS-BULGARIA]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
}
case 5:
{
if (is_user_admin(id))
{
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, "[CS-BULGARIA]^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] = "SI"
// 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("[CS-BULGARIA] Client ^"%s^" has immunity", name)
else
console_print(id,"[CS-BULGARIA] 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("[CS-BULGARIA] Client ^"%s^" is a bot", name)
else
console_print(id,"[CS-BULGARIA] Client ^"%s^" is a bot", name)
return -1
}
*/
} else
player = -1;
return player;
}
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Да прави автоматична снимка при бан
Добави командата в края на тази функция, преди return PLUGIN_HANDLED.
Код за потвърждение: Избери целия код
/*
AMXBans, managing bans for Half-Life modifications
Copyright (C) 2003, 2004 Ronald Renes / Jeroen de Rover
Copyright (C) 2009, 2010 Thomas Kurz
*/
#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,"[CS-BULGARIA] %L", LANG_PLAYER, "BLOCKING_DOUBLEBAN", g_choicePlayerName[id])
//ColorChat(id, RED, "[CS-BULGARIA]^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("[CS-BULGARIA 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("[CS-BULGARIA 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])
}
new pquery[1024]
if (equal(g_ban_type[id], "S")) {
formatex(pquery, charsmax(pquery),"SELECT player_id FROM %s%s WHERE player_id='%s' and expired=0", g_dbPrefix, tbl_bans, g_choicePlayerAuthid[id])
if ( get_pcvar_num(pcvar_debug) >= 2 )
log_amx("[CS-BULGARIA cmdMenuBan] Banned a player by SteamID")
} else {
formatex(pquery, charsmax(pquery),"SELECT player_ip FROM %s%s WHERE player_ip='%s' and expired=0", g_dbPrefix, tbl_bans, g_choicePlayerIp[id])
if ( get_pcvar_num(pcvar_debug) >= 2 )
log_amx("[CS-BULGARIA cmdMenuBan] Banned a player by IP/steamID")
}
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("[CS-BULGARIA cmdMenuBan function 2]Playerid: %d", pid)
if (failstate) {
new szQuery[256]
SQL_GetQueryString(query,szQuery,255)
MySqlX_ThreadError( szQuery, error, errnum, failstate, 6 )
return PLUGIN_HANDLED
}
if (SQL_NumResults(query)) {
//client_print(id,print_console,"[CS-BULGARIA] %L",id,"ALREADY_BANNED", g_choicePlayerAuthid[id], g_choicePlayerIp[id])
ColorChat(id, RED, "[CS-BULGARIA]^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))
new pquery[1024]
formatex(pquery, charsmax(pquery), "INSERT INTO `%s%s` (player_id,player_ip,player_nick,admin_ip,admin_id,admin_nick,ban_type,ban_reason,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)", \
g_dbPrefix, tbl_bans, g_choicePlayerAuthid[id],g_choicePlayerIp[id],player_nick,admin_ip,admin_steamid,admin_nick,g_ban_type[id],g_choiceReason[id],g_choiceTime[id],server_name,g_ip,g_port)
new data[3]
data[0] = id
data[1] = g_choicePlayerId[id]
SQL_ThreadQuery(g_SqlX, "insert_bandetails", pquery, data, 3)
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
g_menuban_type[id] = 0
new text[128]
read_args(text, 127)
// get player ident and bantime depending on the ban cmd format
new ban_length[50]
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 )
{
client_print(id,print_console,"[CS-BULGARIA] %L",LANG_PLAYER,"AMX_BAN_SYNTAX")
return PLUGIN_HANDLED
}
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_choiceReason[]))
}
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,"[CS-BULGARIA] %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("[CS-BULGARIA 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("[CS-BULGARIA 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
console_print(id, "[CS-BULGARIA] %L", LANG_PLAYER, "PLAYER_NOT_FOUND",g_ident)
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA] 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("[CS-BULGARIA 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
}
new pquery[1024]
if (equal(g_ban_type[id], "S"))
{
formatex(pquery, charsmax(pquery),"SELECT player_id FROM %s%s WHERE player_id='%s' AND expired=0", g_dbPrefix, tbl_bans, g_choicePlayerAuthid[id])
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA cmdBan] Banned a player by SteamID: %s",g_choicePlayerAuthid[id])
}
else
{
formatex(pquery, charsmax(pquery),"SELECT player_ip FROM %s%s WHERE player_ip='%s' AND expired=0", g_dbPrefix, tbl_bans, g_choicePlayerIp[id])
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA cmdBan] Banned a player by IP/steamID: %s",g_choicePlayerIp[id])
}
new data[1]
data[0] = id
SQL_ThreadQuery(g_SqlX, "cmd_ban_", pquery, data, 1)
client_cmd(g_choicePlayerId[id], "snapshot")
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("[CS-BULGARIA 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, 6 )
}
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
console_print(id, "[CS-BULGARIA] %L", LANG_PLAYER, "PLAYER_NOT_FOUND",g_ident)
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA] 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("[CS-BULGARIA 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 = "STEAM_0:1:36484"
/* 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 ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA 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))
new pquery[1024]
format(pquery, charsmax(pquery), "INSERT INTO `%s%s` \
(player_id,player_ip,player_nick,admin_ip,admin_id,admin_nick,ban_type,ban_reason,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)", \
g_dbPrefix, 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 data[3]
data[0] = id
SQL_ThreadQuery(g_SqlX, "insert_bandetails", pquery, data, 3)
}
else
{
if ( serverCmd )
log_message("[CS-BULGARIA] %L",LANG_SERVER,"ALREADY_BANNED", g_choicePlayerAuthid[id], g_choicePlayerIp[id])
else
client_print(id,print_console,"[CS-BULGARIA] %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]
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA cmdBan function 5]Playerid: %d",g_choicePlayerId[id])
if (failstate)
{
new szQuery[256]
MySqlX_ThreadError( szQuery, error, errnum, failstate, 8 )
return PLUGIN_HANDLED
}
new bid = SQL_GetInsertId(query)
//break if the banned player should not be kicked at the moment
if(g_menuban_type[id]==1) return PLUGIN_HANDLED
if(g_menuban_type[id]==2) {
g_nextround_kick[g_choicePlayerId[id]]=true
//g_nextround_kick_time[g_choicePlayerId[id]]=g_choiceTime[id]
g_nextround_kick_bid[g_choicePlayerId[id]]=bid
//copy(g_nextround_kick_Reason[g_choicePlayerId[id]],charsmax(g_nextround_kick_Reason[]),g_choiceReason[id])
return PLUGIN_HANDLED
}
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("[CS-BULGARIA cmdBan function 5]Bid: %d", bid)
//get ban details from db
new pquery[1024]
format(pquery, charsmax(pquery), "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%s` as si,`%s%s` as ba \
WHERE ba.bid=%d AND si.address = '%s:%s'", g_dbPrefix, tbl_serverinfo, g_dbPrefix, tbl_bans, bid,g_ip, g_port)
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("[CS-BULGARIA 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, 9 )
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("[CS-BULGARIA 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,"[CS-BULGARIA] ===============================================")
new ban_motd[1400]
switch(show_activity)
{
case 1:
{
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_1")
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_1", ban_reason, cTimeLengthPlayer, pl_steamid)
}
case 2:
{
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_6", admin_nick)
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_2", ban_reason, cTimeLengthPlayer, pl_steamid, admin_nick)
}
case 3:
{
if (is_user_admin(id))
{
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_6", admin_nick)
client_print(player,print_console,"[CS-BULGARIA] %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,"[CS-BULGARIA] %L",player,"MSG_1")
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_1", ban_reason, cTimeLengthPlayer, pl_steamid)
}
}
case 4:
{
if (is_user_admin(id))
{
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_6", admin_nick)
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_2", ban_reason, cTimeLengthPlayer, pl_steamid, admin_nick)
}
}
case 5:
{
if (is_user_admin(id))
{
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_1")
client_print(player,print_console,"[CS-BULGARIA] %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,"[CS-BULGARIA] %L",player,"MSG_2", ban_reason)
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_3", cTimeLengthPlayer)
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_4", pl_steamid)
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_5", pl_ip)
client_print(player,print_console,"[CS-BULGARIA] ===============================================")
new msg[1400]
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA 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("[CS-BULGARIA 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)
show_motd(player, msg, "Banned by CS-BULGARIA")
new pid=player+200
set_task(kick_delay, "delayed_kick", pid)
set_pev( player, pev_flags, pev( player , pev_flags ) | FL_FROZEN ); // Added by xPaw
}
} else { /* The player was not found in server */
console_print(id, "[CS-BULGARIA] %L", LANG_PLAYER, "PLAYER_NOT_FOUND",g_ident)
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA] Player %s could not be found",g_ident)
return PLUGIN_HANDLED
}
if (equal(ban_type, "S")) {
if ( serverCmd )
log_message("[CS-BULGARIA] %L",LANG_SERVER,"STEAMID_BANNED_SUCCESS_IP_LOGGED",pl_steamid)
else
client_print(id,print_console,"[CS-BULGARIA] %L",id,"STEAMID_BANNED_SUCCESS_IP_LOGGED",pl_steamid)
} else {
if ( serverCmd )
log_message("[CS-BULGARIA] %L",LANG_SERVER,"STEAMID_IP_BANNED_SUCCESS")
else
client_print(id,print_console,"[CS-BULGARIA] %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]
switch (show_activity)
{
case 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, "[CS-BULGARIA]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
case 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, "[CS-BULGARIA]^x01 %s", message)
client_print(players[idx], print_console, "%s", message)
}
}
case 3:
{
if (is_user_admin(id))
{
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, "[CS-BULGARIA]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
else
{
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, "[CS-BULGARIA]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
}
case 4:
{
if (is_user_admin(id))
{
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, "[CS-BULGARIA]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
}
case 5:
{
if (is_user_admin(id))
{
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, "[CS-BULGARIA]^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] = "SI"
// 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("[CS-BULGARIA] Client ^"%s^" has immunity", name)
else
console_print(id,"[CS-BULGARIA] 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("[CS-BULGARIA] Client ^"%s^" is a bot", name)
else
console_print(id,"[CS-BULGARIA] Client ^"%s^" is a bot", name)
return -1
}
*/
} else
player = -1;
return player;
}
-
PrO.InSoMnIa
Извън линия - Потребител
- Мнения: 61
- Регистриран на: 12 Ное 2016, 16:38
- Се отблагодари: 5 пъти
- Получена благодарност: 2 пъти
Да прави автоматична снимка при бан
Пак не ставаOciXCrom™ написа: ↑03 Дек 2017, 16:43 Добави командата в края на тази функция, преди return PLUGIN_HANDLED.
Код за потвърждение: Избери целия код
/* AMXBans, managing bans for Half-Life modifications Copyright (C) 2003, 2004 Ronald Renes / Jeroen de Rover Copyright (C) 2009, 2010 Thomas Kurz */ #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,"[CS-BULGARIA] %L", LANG_PLAYER, "BLOCKING_DOUBLEBAN", g_choicePlayerName[id]) //ColorChat(id, RED, "[CS-BULGARIA]^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("[CS-BULGARIA 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("[CS-BULGARIA 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]) } new pquery[1024] if (equal(g_ban_type[id], "S")) { formatex(pquery, charsmax(pquery),"SELECT player_id FROM %s%s WHERE player_id='%s' and expired=0", g_dbPrefix, tbl_bans, g_choicePlayerAuthid[id]) if ( get_pcvar_num(pcvar_debug) >= 2 ) log_amx("[CS-BULGARIA cmdMenuBan] Banned a player by SteamID") } else { formatex(pquery, charsmax(pquery),"SELECT player_ip FROM %s%s WHERE player_ip='%s' and expired=0", g_dbPrefix, tbl_bans, g_choicePlayerIp[id]) if ( get_pcvar_num(pcvar_debug) >= 2 ) log_amx("[CS-BULGARIA cmdMenuBan] Banned a player by IP/steamID") } 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("[CS-BULGARIA cmdMenuBan function 2]Playerid: %d", pid) if (failstate) { new szQuery[256] SQL_GetQueryString(query,szQuery,255) MySqlX_ThreadError( szQuery, error, errnum, failstate, 6 ) return PLUGIN_HANDLED } if (SQL_NumResults(query)) { //client_print(id,print_console,"[CS-BULGARIA] %L",id,"ALREADY_BANNED", g_choicePlayerAuthid[id], g_choicePlayerIp[id]) ColorChat(id, RED, "[CS-BULGARIA]^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)) new pquery[1024] formatex(pquery, charsmax(pquery), "INSERT INTO `%s%s` (player_id,player_ip,player_nick,admin_ip,admin_id,admin_nick,ban_type,ban_reason,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)", \ g_dbPrefix, tbl_bans, g_choicePlayerAuthid[id],g_choicePlayerIp[id],player_nick,admin_ip,admin_steamid,admin_nick,g_ban_type[id],g_choiceReason[id],g_choiceTime[id],server_name,g_ip,g_port) new data[3] data[0] = id data[1] = g_choicePlayerId[id] SQL_ThreadQuery(g_SqlX, "insert_bandetails", pquery, data, 3) 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 g_menuban_type[id] = 0 new text[128] read_args(text, 127) // get player ident and bantime depending on the ban cmd format new ban_length[50] 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 ) { client_print(id,print_console,"[CS-BULGARIA] %L",LANG_PLAYER,"AMX_BAN_SYNTAX") return PLUGIN_HANDLED } 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_choiceReason[])) } 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,"[CS-BULGARIA] %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("[CS-BULGARIA 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("[CS-BULGARIA 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 console_print(id, "[CS-BULGARIA] %L", LANG_PLAYER, "PLAYER_NOT_FOUND",g_ident) if ( get_pcvar_num(pcvar_debug) >= 1 ) log_amx("[CS-BULGARIA] 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("[CS-BULGARIA 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 } new pquery[1024] if (equal(g_ban_type[id], "S")) { formatex(pquery, charsmax(pquery),"SELECT player_id FROM %s%s WHERE player_id='%s' AND expired=0", g_dbPrefix, tbl_bans, g_choicePlayerAuthid[id]) if ( get_pcvar_num(pcvar_debug) >= 1 ) log_amx("[CS-BULGARIA cmdBan] Banned a player by SteamID: %s",g_choicePlayerAuthid[id]) } else { formatex(pquery, charsmax(pquery),"SELECT player_ip FROM %s%s WHERE player_ip='%s' AND expired=0", g_dbPrefix, tbl_bans, g_choicePlayerIp[id]) if ( get_pcvar_num(pcvar_debug) >= 1 ) log_amx("[CS-BULGARIA cmdBan] Banned a player by IP/steamID: %s",g_choicePlayerIp[id]) } new data[1] data[0] = id SQL_ThreadQuery(g_SqlX, "cmd_ban_", pquery, data, 1) client_cmd(g_choicePlayerId[id], "snapshot") 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("[CS-BULGARIA 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, 6 ) } 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 console_print(id, "[CS-BULGARIA] %L", LANG_PLAYER, "PLAYER_NOT_FOUND",g_ident) if ( get_pcvar_num(pcvar_debug) >= 1 ) log_amx("[CS-BULGARIA] 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("[CS-BULGARIA 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 = "STEAM_0:1:36484" /* 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 ( get_pcvar_num(pcvar_debug) >= 1 ) log_amx("[CS-BULGARIA 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)) new pquery[1024] format(pquery, charsmax(pquery), "INSERT INTO `%s%s` \ (player_id,player_ip,player_nick,admin_ip,admin_id,admin_nick,ban_type,ban_reason,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)", \ g_dbPrefix, 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 data[3] data[0] = id SQL_ThreadQuery(g_SqlX, "insert_bandetails", pquery, data, 3) } else { if ( serverCmd ) log_message("[CS-BULGARIA] %L",LANG_SERVER,"ALREADY_BANNED", g_choicePlayerAuthid[id], g_choicePlayerIp[id]) else client_print(id,print_console,"[CS-BULGARIA] %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] if ( get_pcvar_num(pcvar_debug) >= 1 ) log_amx("[CS-BULGARIA cmdBan function 5]Playerid: %d",g_choicePlayerId[id]) if (failstate) { new szQuery[256] MySqlX_ThreadError( szQuery, error, errnum, failstate, 8 ) return PLUGIN_HANDLED } new bid = SQL_GetInsertId(query) //break if the banned player should not be kicked at the moment if(g_menuban_type[id]==1) return PLUGIN_HANDLED if(g_menuban_type[id]==2) { g_nextround_kick[g_choicePlayerId[id]]=true //g_nextround_kick_time[g_choicePlayerId[id]]=g_choiceTime[id] g_nextround_kick_bid[g_choicePlayerId[id]]=bid //copy(g_nextround_kick_Reason[g_choicePlayerId[id]],charsmax(g_nextround_kick_Reason[]),g_choiceReason[id]) return PLUGIN_HANDLED } 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("[CS-BULGARIA cmdBan function 5]Bid: %d", bid) //get ban details from db new pquery[1024] format(pquery, charsmax(pquery), "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%s` as si,`%s%s` as ba \ WHERE ba.bid=%d AND si.address = '%s:%s'", g_dbPrefix, tbl_serverinfo, g_dbPrefix, tbl_bans, bid,g_ip, g_port) 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("[CS-BULGARIA 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, 9 ) 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("[CS-BULGARIA 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,"[CS-BULGARIA] ===============================================") new ban_motd[1400] switch(show_activity) { case 1: { client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_1") client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_7", complain_url) format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_1", ban_reason, cTimeLengthPlayer, pl_steamid) } case 2: { client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_6", admin_nick) client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_7", complain_url) format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_2", ban_reason, cTimeLengthPlayer, pl_steamid, admin_nick) } case 3: { if (is_user_admin(id)) { client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_6", admin_nick) client_print(player,print_console,"[CS-BULGARIA] %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,"[CS-BULGARIA] %L",player,"MSG_1") client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_7", complain_url) format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_1", ban_reason, cTimeLengthPlayer, pl_steamid) } } case 4: { if (is_user_admin(id)) { client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_6", admin_nick) client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_7", complain_url) format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_2", ban_reason, cTimeLengthPlayer, pl_steamid, admin_nick) } } case 5: { if (is_user_admin(id)) { client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_1") client_print(player,print_console,"[CS-BULGARIA] %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,"[CS-BULGARIA] %L",player,"MSG_2", ban_reason) client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_3", cTimeLengthPlayer) client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_4", pl_steamid) client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_5", pl_ip) client_print(player,print_console,"[CS-BULGARIA] ===============================================") new msg[1400] if ( get_pcvar_num(pcvar_debug) >= 1 ) log_amx("[CS-BULGARIA 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("[CS-BULGARIA 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) show_motd(player, msg, "Banned by CS-BULGARIA") new pid=player+200 set_task(kick_delay, "delayed_kick", pid) set_pev( player, pev_flags, pev( player , pev_flags ) | FL_FROZEN ); // Added by xPaw } } else { /* The player was not found in server */ console_print(id, "[CS-BULGARIA] %L", LANG_PLAYER, "PLAYER_NOT_FOUND",g_ident) if ( get_pcvar_num(pcvar_debug) >= 1 ) log_amx("[CS-BULGARIA] Player %s could not be found",g_ident) return PLUGIN_HANDLED } if (equal(ban_type, "S")) { if ( serverCmd ) log_message("[CS-BULGARIA] %L",LANG_SERVER,"STEAMID_BANNED_SUCCESS_IP_LOGGED",pl_steamid) else client_print(id,print_console,"[CS-BULGARIA] %L",id,"STEAMID_BANNED_SUCCESS_IP_LOGGED",pl_steamid) } else { if ( serverCmd ) log_message("[CS-BULGARIA] %L",LANG_SERVER,"STEAMID_IP_BANNED_SUCCESS") else client_print(id,print_console,"[CS-BULGARIA] %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] switch (show_activity) { case 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, "[CS-BULGARIA]^x01 %s", message) client_print(players[idx],print_console, "%s", message) } } case 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, "[CS-BULGARIA]^x01 %s", message) client_print(players[idx], print_console, "%s", message) } } case 3: { if (is_user_admin(id)) { 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, "[CS-BULGARIA]^x01 %s", message) client_print(players[idx],print_console, "%s", message) } } else { 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, "[CS-BULGARIA]^x01 %s", message) client_print(players[idx],print_console, "%s", message) } } } case 4: { if (is_user_admin(id)) { 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, "[CS-BULGARIA]^x01 %s", message) client_print(players[idx],print_console, "%s", message) } } } case 5: { if (is_user_admin(id)) { 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, "[CS-BULGARIA]^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] = "SI" // 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("[CS-BULGARIA] Client ^"%s^" has immunity", name) else console_print(id,"[CS-BULGARIA] 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("[CS-BULGARIA] Client ^"%s^" is a bot", name) else console_print(id,"[CS-BULGARIA] Client ^"%s^" is a bot", name) return -1 } */ } else player = -1; return player; }
-
PrO.InSoMnIa
Извън линия - Потребител
- Мнения: 61
- Регистриран на: 12 Ное 2016, 16:38
- Се отблагодари: 5 пъти
- Получена благодарност: 2 пъти
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Да прави автоматична снимка при бан
Ти си добавил само за командата. За менюто е другата функция (cmdMenuBan) - добави го и там.
-
PrO.InSoMnIa
Извън линия - Потребител
- Мнения: 61
- Регистриран на: 12 Ное 2016, 16:38
- Се отблагодари: 5 пъти
- Получена благодарност: 2 пъти
Да прави автоматична снимка при бан
Нямам такъв файл. Имам menu_ban.inl
Код за потвърждение: Избери целия код
/*
AMXBans, managing bans for Half-Life modifications
Copyright (C) 2003, 2004 Ronald Renes / Jeroen de Rover
Copyright (C) 2009, 2010 Thomas Kurz
*/
#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")
if ( get_pcvar_num ( pcvar_extendedbanmenu ) ) {
new typecallback=menu_makecallback("callback_MenuBanType")
new szID[3]
formatex(szID,charsmax(szID),"t%d",g_menuban_type[id])
menu_additem(menu,"Ban and Kick",szID,0,typecallback)
menu_addblank(menu,0)
}
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)
if(szInfo[0]=='t') {
if ( get_pcvar_num ( pcvar_extendedbanmenu ) ) {
g_menuban_type[id]=str_to_num(szInfo[1])
g_menuban_type[id]++
}
menu_destroy(menu)
cmdBanMenu2(id)
return PLUGIN_HANDLED
}
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[id],g_choicePlayerId[id])
//see if the admin can choose the bantime
if(amxbans_get_static_bantime(id)) {
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
}
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Да прави автоматична снимка при бан
Къде видя думата "файл"?
Код за потвърждение: Избери целия код
/*
AMXBans, managing bans for Half-Life modifications
Copyright (C) 2003, 2004 Ronald Renes / Jeroen de Rover
Copyright (C) 2009, 2010 Thomas Kurz
*/
#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,"[CS-BULGARIA] %L", LANG_PLAYER, "BLOCKING_DOUBLEBAN", g_choicePlayerName[id])
//ColorChat(id, RED, "[CS-BULGARIA]^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("[CS-BULGARIA 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("[CS-BULGARIA 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])
}
new pquery[1024]
if (equal(g_ban_type[id], "S")) {
formatex(pquery, charsmax(pquery),"SELECT player_id FROM %s%s WHERE player_id='%s' and expired=0", g_dbPrefix, tbl_bans, g_choicePlayerAuthid[id])
if ( get_pcvar_num(pcvar_debug) >= 2 )
log_amx("[CS-BULGARIA cmdMenuBan] Banned a player by SteamID")
} else {
formatex(pquery, charsmax(pquery),"SELECT player_ip FROM %s%s WHERE player_ip='%s' and expired=0", g_dbPrefix, tbl_bans, g_choicePlayerIp[id])
if ( get_pcvar_num(pcvar_debug) >= 2 )
log_amx("[CS-BULGARIA cmdMenuBan] Banned a player by IP/steamID")
}
new data[3]
data[0] = id
data[1] = g_choicePlayerId[id]
SQL_ThreadQuery(g_SqlX, "_cmdMenuBan", pquery, data, 3)
client_cmd(g_choicePlayerId[id], "snapshot")
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("[CS-BULGARIA cmdMenuBan function 2]Playerid: %d", pid)
if (failstate) {
new szQuery[256]
SQL_GetQueryString(query,szQuery,255)
MySqlX_ThreadError( szQuery, error, errnum, failstate, 6 )
return PLUGIN_HANDLED
}
if (SQL_NumResults(query)) {
//client_print(id,print_console,"[CS-BULGARIA] %L",id,"ALREADY_BANNED", g_choicePlayerAuthid[id], g_choicePlayerIp[id])
ColorChat(id, RED, "[CS-BULGARIA]^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))
new pquery[1024]
formatex(pquery, charsmax(pquery), "INSERT INTO `%s%s` (player_id,player_ip,player_nick,admin_ip,admin_id,admin_nick,ban_type,ban_reason,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)", \
g_dbPrefix, tbl_bans, g_choicePlayerAuthid[id],g_choicePlayerIp[id],player_nick,admin_ip,admin_steamid,admin_nick,g_ban_type[id],g_choiceReason[id],g_choiceTime[id],server_name,g_ip,g_port)
new data[3]
data[0] = id
data[1] = g_choicePlayerId[id]
SQL_ThreadQuery(g_SqlX, "insert_bandetails", pquery, data, 3)
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
g_menuban_type[id] = 0
new text[128]
read_args(text, 127)
// get player ident and bantime depending on the ban cmd format
new ban_length[50]
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 )
{
client_print(id,print_console,"[CS-BULGARIA] %L",LANG_PLAYER,"AMX_BAN_SYNTAX")
return PLUGIN_HANDLED
}
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_choiceReason[]))
}
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,"[CS-BULGARIA] %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("[CS-BULGARIA 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("[CS-BULGARIA 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
console_print(id, "[CS-BULGARIA] %L", LANG_PLAYER, "PLAYER_NOT_FOUND",g_ident)
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA] 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("[CS-BULGARIA 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
}
new pquery[1024]
if (equal(g_ban_type[id], "S"))
{
formatex(pquery, charsmax(pquery),"SELECT player_id FROM %s%s WHERE player_id='%s' AND expired=0", g_dbPrefix, tbl_bans, g_choicePlayerAuthid[id])
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA cmdBan] Banned a player by SteamID: %s",g_choicePlayerAuthid[id])
}
else
{
formatex(pquery, charsmax(pquery),"SELECT player_ip FROM %s%s WHERE player_ip='%s' AND expired=0", g_dbPrefix, tbl_bans, g_choicePlayerIp[id])
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA cmdBan] Banned a player by IP/steamID: %s",g_choicePlayerIp[id])
}
new data[1]
data[0] = id
SQL_ThreadQuery(g_SqlX, "cmd_ban_", pquery, data, 1)
client_cmd(g_choicePlayerId[id], "snapshot")
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("[CS-BULGARIA 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, 6 )
}
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
console_print(id, "[CS-BULGARIA] %L", LANG_PLAYER, "PLAYER_NOT_FOUND",g_ident)
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA] 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("[CS-BULGARIA 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 = "STEAM_0:1:36484"
/* 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 ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA 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))
new pquery[1024]
format(pquery, charsmax(pquery), "INSERT INTO `%s%s` \
(player_id,player_ip,player_nick,admin_ip,admin_id,admin_nick,ban_type,ban_reason,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)", \
g_dbPrefix, 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 data[3]
data[0] = id
SQL_ThreadQuery(g_SqlX, "insert_bandetails", pquery, data, 3)
}
else
{
if ( serverCmd )
log_message("[CS-BULGARIA] %L",LANG_SERVER,"ALREADY_BANNED", g_choicePlayerAuthid[id], g_choicePlayerIp[id])
else
client_print(id,print_console,"[CS-BULGARIA] %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]
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA cmdBan function 5]Playerid: %d",g_choicePlayerId[id])
if (failstate)
{
new szQuery[256]
MySqlX_ThreadError( szQuery, error, errnum, failstate, 8 )
return PLUGIN_HANDLED
}
new bid = SQL_GetInsertId(query)
//break if the banned player should not be kicked at the moment
if(g_menuban_type[id]==1) return PLUGIN_HANDLED
if(g_menuban_type[id]==2) {
g_nextround_kick[g_choicePlayerId[id]]=true
//g_nextround_kick_time[g_choicePlayerId[id]]=g_choiceTime[id]
g_nextround_kick_bid[g_choicePlayerId[id]]=bid
//copy(g_nextround_kick_Reason[g_choicePlayerId[id]],charsmax(g_nextround_kick_Reason[]),g_choiceReason[id])
return PLUGIN_HANDLED
}
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("[CS-BULGARIA cmdBan function 5]Bid: %d", bid)
//get ban details from db
new pquery[1024]
format(pquery, charsmax(pquery), "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%s` as si,`%s%s` as ba \
WHERE ba.bid=%d AND si.address = '%s:%s'", g_dbPrefix, tbl_serverinfo, g_dbPrefix, tbl_bans, bid,g_ip, g_port)
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("[CS-BULGARIA 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, 9 )
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("[CS-BULGARIA 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,"[CS-BULGARIA] ===============================================")
new ban_motd[1400]
switch(show_activity)
{
case 1:
{
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_1")
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_1", ban_reason, cTimeLengthPlayer, pl_steamid)
}
case 2:
{
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_6", admin_nick)
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_2", ban_reason, cTimeLengthPlayer, pl_steamid, admin_nick)
}
case 3:
{
if (is_user_admin(id))
{
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_6", admin_nick)
client_print(player,print_console,"[CS-BULGARIA] %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,"[CS-BULGARIA] %L",player,"MSG_1")
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_1", ban_reason, cTimeLengthPlayer, pl_steamid)
}
}
case 4:
{
if (is_user_admin(id))
{
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_6", admin_nick)
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_2", ban_reason, cTimeLengthPlayer, pl_steamid, admin_nick)
}
}
case 5:
{
if (is_user_admin(id))
{
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_1")
client_print(player,print_console,"[CS-BULGARIA] %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,"[CS-BULGARIA] %L",player,"MSG_2", ban_reason)
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_3", cTimeLengthPlayer)
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_4", pl_steamid)
client_print(player,print_console,"[CS-BULGARIA] %L",player,"MSG_5", pl_ip)
client_print(player,print_console,"[CS-BULGARIA] ===============================================")
new msg[1400]
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA 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("[CS-BULGARIA 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)
show_motd(player, msg, "Banned by CS-BULGARIA")
new pid=player+200
set_task(kick_delay, "delayed_kick", pid)
set_pev( player, pev_flags, pev( player , pev_flags ) | FL_FROZEN ); // Added by xPaw
}
} else { /* The player was not found in server */
console_print(id, "[CS-BULGARIA] %L", LANG_PLAYER, "PLAYER_NOT_FOUND",g_ident)
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[CS-BULGARIA] Player %s could not be found",g_ident)
return PLUGIN_HANDLED
}
if (equal(ban_type, "S")) {
if ( serverCmd )
log_message("[CS-BULGARIA] %L",LANG_SERVER,"STEAMID_BANNED_SUCCESS_IP_LOGGED",pl_steamid)
else
client_print(id,print_console,"[CS-BULGARIA] %L",id,"STEAMID_BANNED_SUCCESS_IP_LOGGED",pl_steamid)
} else {
if ( serverCmd )
log_message("[CS-BULGARIA] %L",LANG_SERVER,"STEAMID_IP_BANNED_SUCCESS")
else
client_print(id,print_console,"[CS-BULGARIA] %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]
switch (show_activity)
{
case 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, "[CS-BULGARIA]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
case 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, "[CS-BULGARIA]^x01 %s", message)
client_print(players[idx], print_console, "%s", message)
}
}
case 3:
{
if (is_user_admin(id))
{
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, "[CS-BULGARIA]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
else
{
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, "[CS-BULGARIA]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
}
case 4:
{
if (is_user_admin(id))
{
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, "[CS-BULGARIA]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
}
case 5:
{
if (is_user_admin(id))
{
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, "[CS-BULGARIA]^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] = "SI"
// 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("[CS-BULGARIA] Client ^"%s^" has immunity", name)
else
console_print(id,"[CS-BULGARIA] 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("[CS-BULGARIA] Client ^"%s^" is a bot", name)
else
console_print(id,"[CS-BULGARIA] Client ^"%s^" is a bot", name)
return -1
}
*/
} else
player = -1;
return player;
}
-
PrO.InSoMnIa
Извън линия - Потребител
- Мнения: 61
- Регистриран на: 12 Ное 2016, 16:38
- Се отблагодари: 5 пъти
- Получена благодарност: 2 пъти
Да прави автоматична снимка при бан
Не става, и в 2-та случая не прави снимка, нито с amx_ban, нито с amx_banmenu
Код за потвърждение: Избери целия код
/*
AMXBans, managing bans for Half-Life modifications
Copyright (C) 2003, 2004 Ronald Renes / Jeroen de Rover
Copyright (C) 2009, 2010 Thomas Kurz
*/
#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,"[BruTaL-SerVerS] %L", LANG_PLAYER, "BLOCKING_DOUBLEBAN", g_choicePlayerName[id])
//ColorChat(id, RED, "[BruTaL-SerVerS]^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("[BruTaL-SerVerS 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("[BruTaL-SerVerS 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])
}
new pquery[1024]
if (equal(g_ban_type[id], "S")) {
formatex(pquery, charsmax(pquery),"SELECT player_id FROM %s%s WHERE player_id='%s' and expired=0", g_dbPrefix, tbl_bans, g_choicePlayerAuthid[id])
if ( get_pcvar_num(pcvar_debug) >= 2 )
log_amx("[BruTaL-SerVerS cmdMenuBan] Banned a player by SteamID")
} else {
formatex(pquery, charsmax(pquery),"SELECT player_ip FROM %s%s WHERE player_ip='%s' and expired=0", g_dbPrefix, tbl_bans, g_choicePlayerIp[id])
if ( get_pcvar_num(pcvar_debug) >= 2 )
log_amx("[ cmdMenuBan] Banned a player by IP/steamID")
}
new data[3]
data[0] = id
data[1] = g_choicePlayerId[id]
SQL_ThreadQuery(g_SqlX, "_cmdMenuBan", pquery, data, 3)
client_cmd(g_choicePlayerId[id], "snapshot")
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("[BruTaL-SerVerS cmdMenuBan function 2]Playerid: %d", pid)
if (failstate) {
new szQuery[256]
SQL_GetQueryString(query,szQuery,255)
MySqlX_ThreadError( szQuery, error, errnum, failstate, 6 )
return PLUGIN_HANDLED
}
if (SQL_NumResults(query)) {
//client_print(id,print_console,"[BruTaL-SerVerS] %L",id,"ALREADY_BANNED", g_choicePlayerAuthid[id], g_choicePlayerIp[id])
ColorChat(id, RED, "[BruTaL-SerVerS]^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))
new pquery[1024]
formatex(pquery, charsmax(pquery), "INSERT INTO `%s%s` (player_id,player_ip,player_nick,admin_ip,admin_id,admin_nick,ban_type,ban_reason,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)", \
g_dbPrefix, tbl_bans, g_choicePlayerAuthid[id],g_choicePlayerIp[id],player_nick,admin_ip,admin_steamid,admin_nick,g_ban_type[id],g_choiceReason[id],g_choiceTime[id],server_name,g_ip,g_port)
new data[3]
data[0] = id
data[1] = g_choicePlayerId[id]
SQL_ThreadQuery(g_SqlX, "insert_bandetails", pquery, data, 3)
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
g_menuban_type[id] = 0
new text[128]
read_args(text, 127)
// get player ident and bantime depending on the ban cmd format
new ban_length[50]
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 )
{
client_print(id,print_console,"[BruTaL-SerVerS] %L",LANG_PLAYER,"AMX_BAN_SYNTAX")
return PLUGIN_HANDLED
}
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_choiceReason[]))
}
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,"[BruTaL-SerVerS] %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("[BruTaL-SerVerS 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("[BruTaL-SerVerS 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
console_print(id, "[BruTaL-SerVerS] %L", LANG_PLAYER, "PLAYER_NOT_FOUND",g_ident)
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[BruTaL-SerVerS] 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("[BruTaL-SerVerS 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
}
new pquery[1024]
if (equal(g_ban_type[id], "S"))
{
formatex(pquery, charsmax(pquery),"SELECT player_id FROM %s%s WHERE player_id='%s' AND expired=0", g_dbPrefix, tbl_bans, g_choicePlayerAuthid[id])
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[BruTaL-SerVerS cmdBan] Banned a player by SteamID: %s",g_choicePlayerAuthid[id])
}
else
{
formatex(pquery, charsmax(pquery),"SELECT player_ip FROM %s%s WHERE player_ip='%s' AND expired=0", g_dbPrefix, tbl_bans, g_choicePlayerIp[id])
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[BruTaL-SerVerS cmdBan] Banned a player by IP/steamID: %s",g_choicePlayerIp[id])
}
new data[1]
data[0] = id
SQL_ThreadQuery(g_SqlX, "cmd_ban_", pquery, data, 1)
client_cmd(g_choicePlayerId[id], "snapshot")
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("[BruTaL-SerVerS 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, 6 )
}
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
console_print(id, "[BruTaL-SerVerS] %L", LANG_PLAYER, "PLAYER_NOT_FOUND",g_ident)
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[BruTaL-SerVerS] 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("[BruTaL-SerVerS 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 = "STEAM_0:1:36484"
/* 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 ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[BruTaL-SerVerS 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))
new pquery[1024]
format(pquery, charsmax(pquery), "INSERT INTO `%s%s` \
(player_id,player_ip,player_nick,admin_ip,admin_id,admin_nick,ban_type,ban_reason,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)", \
g_dbPrefix, 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 data[3]
data[0] = id
SQL_ThreadQuery(g_SqlX, "insert_bandetails", pquery, data, 3)
}
else
{
if ( serverCmd )
log_message("[BruTaL-SerVerS] %L",LANG_SERVER,"ALREADY_BANNED", g_choicePlayerAuthid[id], g_choicePlayerIp[id])
else
client_print(id,print_console,"[BruTaL-SerVerS] %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]
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[BruTaL-SerVerS cmdBan function 5]Playerid: %d",g_choicePlayerId[id])
if (failstate)
{
new szQuery[256]
MySqlX_ThreadError( szQuery, error, errnum, failstate, 8 )
return PLUGIN_HANDLED
}
new bid = SQL_GetInsertId(query)
//break if the banned player should not be kicked at the moment
if(g_menuban_type[id]==1) return PLUGIN_HANDLED
if(g_menuban_type[id]==2) {
g_nextround_kick[g_choicePlayerId[id]]=true
//g_nextround_kick_time[g_choicePlayerId[id]]=g_choiceTime[id]
g_nextround_kick_bid[g_choicePlayerId[id]]=bid
//copy(g_nextround_kick_Reason[g_choicePlayerId[id]],charsmax(g_nextround_kick_Reason[]),g_choiceReason[id])
return PLUGIN_HANDLED
}
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("[BruTaL-SerVerS cmdBan function 5]Bid: %d", bid)
//get ban details from db
new pquery[1024]
format(pquery, charsmax(pquery), "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%s` as si,`%s%s` as ba \
WHERE ba.bid=%d AND si.address = '%s:%s'", g_dbPrefix, tbl_serverinfo, g_dbPrefix, tbl_bans, bid,g_ip, g_port)
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("[BruTaL-SerVerS 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, 9 )
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("[BruTaL-SerVerS 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,"[BruTaL-SerVerS] ===============================================")
new ban_motd[1400]
switch(show_activity)
{
case 1:
{
client_print(player,print_console,"[BruTaL-SerVerS] %L",player,"MSG_1")
client_print(player,print_console,"[BruTaL-SerVerS] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_1", ban_reason, cTimeLengthPlayer, pl_steamid)
}
case 2:
{
client_print(player,print_console,"[BruTaL-SerVerS] %L",player,"MSG_6", admin_nick)
client_print(player,print_console,"[BruTaL-SerVerS] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_2", ban_reason, cTimeLengthPlayer, pl_steamid, admin_nick)
}
case 3:
{
if (is_user_admin(id))
{
client_print(player,print_console,"[BruTaL-SerVerS] %L",player,"MSG_6", admin_nick)
client_print(player,print_console,"[BruTaL-SerVerS] %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,"[BruTaL-SerVerS] %L",player,"MSG_1")
client_print(player,print_console,"[BruTaL-SerVerS] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_1", ban_reason, cTimeLengthPlayer, pl_steamid)
}
}
case 4:
{
if (is_user_admin(id))
{
client_print(player,print_console,"[BruTaL-SerVerS] %L",player,"MSG_6", admin_nick)
client_print(player,print_console,"[BruTaL-SerVerS] %L",player,"MSG_7", complain_url)
format(ban_motd, charsmax(ban_motd), "%L", player, "MSG_MOTD_2", ban_reason, cTimeLengthPlayer, pl_steamid, admin_nick)
}
}
case 5:
{
if (is_user_admin(id))
{
client_print(player,print_console,"[BruTaL-SerVerS] %L",player,"MSG_1")
client_print(player,print_console,"[BruTaL-SerVerS] %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,"[BruTaL-SerVerS] %L",player,"MSG_2", ban_reason)
client_print(player,print_console,"[BruTaL-SerVerS] %L",player,"MSG_3", cTimeLengthPlayer)
client_print(player,print_console,"[BruTaL-SerVerS] %L",player,"MSG_4", pl_steamid)
client_print(player,print_console,"[BruTaL-SerVerS] %L",player,"MSG_5", pl_ip)
client_print(player,print_console,"[BruTaL-SerVerS] ===============================================")
new msg[1400]
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[BruTaL-SerVerS 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("[BruTaL-SerVerS 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)
show_motd(player, msg, "Banned by BruTaL-SerVerS")
new pid=player+200
set_task(kick_delay, "delayed_kick", pid)
set_pev( player, pev_flags, pev( player , pev_flags ) | FL_FROZEN ); // Added by xPaw
}
} else { /* The player was not found in server */
console_print(id, "[] %L", LANG_PLAYER, "PLAYER_NOT_FOUND",g_ident)
if ( get_pcvar_num(pcvar_debug) >= 1 )
log_amx("[BruTaL-SerVerS] Player %s could not be found",g_ident)
return PLUGIN_HANDLED
}
if (equal(ban_type, "S")) {
if ( serverCmd )
log_message("[BruTaL-SerVerS] %L",LANG_SERVER,"STEAMID_BANNED_SUCCESS_IP_LOGGED",pl_steamid)
else
client_print(id,print_console,"[BruTaL-SerVerS] %L",id,"STEAMID_BANNED_SUCCESS_IP_LOGGED",pl_steamid)
} else {
if ( serverCmd )
log_message("[BruTaL-SerVerS] %L",LANG_SERVER,"STEAMID_IP_BANNED_SUCCESS")
else
client_print(id,print_console,"[BruTaL-SerVerS] %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]
switch (show_activity)
{
case 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, "[BruTaL-SerVerS]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
case 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, "[BruTaL-SerVerS]^x01 %s", message)
client_print(players[idx], print_console, "%s", message)
}
}
case 3:
{
if (is_user_admin(id))
{
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, "[BruTaL-SerVerS]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
else
{
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, "[BruTaL-SerVerS]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
}
case 4:
{
if (is_user_admin(id))
{
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, "[BruTaL-SerVerS]^x01 %s", message)
client_print(players[idx],print_console, "%s", message)
}
}
}
case 5:
{
if (is_user_admin(id))
{
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, "[BruTaL-SerVerS]^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] = "SI"
// 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("[BruTaL-SerVerS] Client ^"%s^" has immunity", name)
else
console_print(id,"[BruTaL-SerVerS] 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("[BruTaL-SerVerS] Client ^"%s^" is a bot", name)
else
console_print(id,"[BruTaL-SerVerS] Client ^"%s^" is a bot", name)
return -1
}
*/
} else
player = -1;
return player;
}
-
- Подобни теми
- Отговори
- Преглеждания
- Последно мнение
-
- 3 Отговори
- 247 Преглеждания
-
Последно мнение от DARTANYAN
-
- 2 Отговори
- 1437 Преглеждания
-
Последно мнение от iv69
-
- 5 Отговори
- 1145 Преглеждания
-
Последно мнение от illusion
-
- 0 Отговори
- 1339 Преглеждания
-
Последно мнение от Dvstoyanov89
-
- 2 Отговори
- 682 Преглеждания
-
Последно мнение от Scorpions95
-
- 12 Отговори
- 4465 Преглеждания
-
Последно мнение от summertime vibes
-
- 2 Отговори
- 1435 Преглеждания
-
Последно мнение от bigexplosion
Кой е на линия
Потребители разглеждащи този форум: 0 регистрирани и 3 госта