Код за потвърждение: Избери целия код
new AUTHOR[36] =
{
89, 111, 77, 97, 109, 97, 47, 76, 117, 120, 32, 38, 32, 108, 97, 110, 116, 122, 54, 57, 32, 45, 83, 113, 108, 120, 32, 98, 121, 32, 71, 105, 122, 109, 111, 0
}
new PLUGIN_NAME[8] =
{
65, 77, 88, 66, 97, 110, 115, 0
}
new VERSION[4] =
{
53, 46, 48, 0
}
new amxbans_version[9] =
{
97, 109, 120, 120, 95, 53, 46, 48, 0
}
new g_MyMsgSync;
new g_LowBanMenuValues[12];
new g_HighBanMenuValues[12];
new g_coloredMenus;
new g_banReasons[7][128];
new g_menuPlayers[33][32];
new g_menuPlayersNum[33];
new g_menuPosition[33];
new g_menuOption[33];
new g_menuSettings[33];
new g_bannedPlayer;
new g_lastCustom[33][128];
new g_inCustomReason[33];
new bool:g_player_flagged[33];
new amxbans_cmd_sql;
new amxbans_debug;
new server_nick;
new ban_evenif_disconn;
new complainurl;
new show_prebanned;
new show_prebanned_num;
new max_time_to_show_preban;
new banhistmotd_url;
new show_atacbans;
new show_name_evenif_mole;
new firstBanmenuValue;
new consoleBanMax;
new max_time_gone_to_unban;
new higher_ban_time_admin;
new admin_mole_access;
new show_in_hlsw;
new show_hud_messages;
new add_mapname_in_servername;
new Handle:g_SqlX;
new g_aNum;
new g_ip[32];
new g_port[10];
new ban_motd[4096];
new Float:kick_delay = 10.00/*1092616192*/;
new g_highbantimesnum;
new g_lowbantimesnum;
new g_steamidorusername[50];
new g_ban_reason[256];
new g_ban_type[4];
new bool:g_being_banned[33];
new g_player_nick[50];
new g_unban_player_steamid[50];
new g_unban_admin_nick[100];
new g_admin_steamid[50];
new g_unban_admin_team[10];
new g_search_player_steamid[50];
bool:operator>(Float:,Float:)(Float:oper1, Float:oper2)
{
return 0 < floatcmp(oper1, oper2);
}
replace_all(String:string[], len, String:what[], String:with[])
{
new pos = 0;
new var1 = contain(string, what);
pos = var1;
if (var1 == -1)
{
return 0;
}
new total = 0;
new with_len = strlen(with);
new diff = strlen(what) - with_len;
new total_len = strlen(string);
new temp_pos = 0;
while (replace(string[pos], len - pos, what, with))
{
pos = with_len + pos;
total_len -= diff;
if (pos >= total_len)
{
return total;
}
else
{
temp_pos = contain(string[pos], what);
if (temp_pos == -1)
{
return total;
}
else
{
pos = temp_pos + pos;
total++;
}
return total;
}
return total;
}
return total;
}
cmd_access(id, level, cid, num)
{
!!! Removed Phi
new has_access = 0;
new var1;
if (is_dedicated_server())
{
var1 = 0;
}
else
{
var1 = 1;
}
if (var1 == id)
{
has_access = 1;
}
else
{
if (level == 16777216)
{
if (is_user_admin(id))
{
has_access = 1;
}
}
if (level & get_user_flags(id, 0))
{
has_access = 1;
}
if (level)
{
}
else
{
has_access = 1;
}
}
if (has_access)
{
if (num > read_argc())
{
new hcmd[32];
new hinfo[128];
new hflag = 0;
get_concmd(cid, hcmd, 31, hflag, hinfo, 127, level, -1);
console_print(id, "%L: %s %s", id, "USAGE", hcmd, hinfo);
return 0;
}
return 1;
}
console_print(id, "%L", id, "NO_ACC_COM");
return 0;
}
access(id, level)
{
if (level == 16777216)
{
return is_user_admin(id);
}
return level & get_user_flags(id, 0);
}
get_configsdir(String:name[], len)
{
return get_localinfo("amxx_configsdir", name, len);
}
AddMenuItem(String:MENU_TEXT[], String:MENU_CMD[], MENU_ACCESS, String:MENU_PLUGIN[])
{
AddMenuItem_call(MENU_TEXT, MENU_CMD, MENU_ACCESS, MENU_PLUGIN, false);
return 0;
}
AddMenuItem_call(String:MENU_TEXT[], String:MENU_CMD[], MENU_ACCESS, String:MENU_PLUGIN[], bool:ADD_TO_CLIENT_MENU)
{
new pluginid = is_plugin_loaded("Menus Front-End");
if (pluginid == -1)
{
log_amx("Can't add menu item \"%s\" from plugin \"%s\" to menu set because the Menus Front-End plugin itself is not loaded!", MENU_TEXT, MENU_PLUGIN);
return 0;
}
new filename[64];
new b[1];
get_plugin(pluginid, filename, 63, b, 0, b, 0, b, 0, b, 0);
new status;
new var1;
if (ADD_TO_CLIENT_MENU)
{
var1[0] = 996;
}
else
{
var1[0] = 1052;
}
/ * ERROR! Unable to cast object of type 'Lysis.DSentinel' to type 'Lysis.DReturn'. * /
function "AddMenuItem_call"
AddMenuItem_call(String:MENU_TEXT[], String:MENU_CMD[], MENU_ACCESS, String:MENU_PLUGIN[], bool:ADD_TO_CLIENT_MENU)
get_time_length(id, unitCnt, type, String:output[], outputLen)
{
!!! Removed Phi
if (0 < unitCnt)
{
new weekCnt = 0;
new dayCnt = 0;
new hourCnt = 0;
new minuteCnt = 0;
new secondCnt = 0;
switch (type)
{
case 0:
{
secondCnt = unitCnt;
}
case 1:
{
secondCnt = unitCnt * 60;
}
case 2:
{
secondCnt = unitCnt * 3600;
}
case 3:
{
secondCnt = unitCnt * 86400;
}
case 4:
{
secondCnt = unitCnt * 604800;
}
default:
{
}
}
weekCnt = secondCnt / 604800;
secondCnt -= weekCnt * 604800;
dayCnt = secondCnt / 86400;
secondCnt -= dayCnt * 86400;
hourCnt = secondCnt / 3600;
secondCnt -= hourCnt * 3600;
minuteCnt = secondCnt / 60;
secondCnt -= minuteCnt * 60;
new maxElementIdx = -1;
new timeElement[5][33];
timeElement[0] = 1612;
if (0 < weekCnt)
{
new var1;
if (weekCnt == 1)
{
var1 = 1656;
}
else
{
var1 = 1728;
}
maxElementIdx++;
format(timeElement[maxElementIdx], 32, "%i %L", weekCnt, id, var1);
}
if (0 < dayCnt)
{
new var2;
if (dayCnt == 1)
{
var2 = 1828;
}
else
{
var2 = 1896;
}
maxElementIdx++;
format(timeElement[maxElementIdx], 32, "%i %L", dayCnt, id, var2);
}
if (0 < hourCnt)
{
new var3;
if (hourCnt == 1)
{
var3 = 1992;
}
else
{
var3 = 2064;
}
maxElementIdx++;
format(timeElement[maxElementIdx], 32, "%i %L", hourCnt, id, var3);
}
if (0 < minuteCnt)
{
new var4;
if (minuteCnt == 1)
{
var4 = 2164;
}
else
{
var4 = 2244;
}
maxElementIdx++;
format(timeElement[maxElementIdx], 32, "%i %L", minuteCnt, id, var4);
}
if (0 < secondCnt)
{
new var5;
if (secondCnt == 1)
{
var5 = 2352;
}
else
{
var5 = 2432;
}
maxElementIdx++;
format(timeElement[maxElementIdx], 32, "%i %L", secondCnt, id, var5);
}
switch (maxElementIdx)
{
case 0:
{
format(output, outputLen, "%s", timeElement[0][timeElement]);
}
case 1:
{
format(output, outputLen, "%s %L %s", timeElement[0][timeElement], id, "TIME_ELEMENT_AND", 4[timeElement]);
}
case 2:
{
format(output, outputLen, "%s, %s %L %s", timeElement[0][timeElement], 4[timeElement], id, "TIME_ELEMENT_AND", 8[timeElement]);
}
case 3:
{
format(output, outputLen, "%s, %s, %s %L %s", timeElement[0][timeElement], 4[timeElement], 8[timeElement], id, "TIME_ELEMENT_AND", 12[timeElement]);
}
case 4:
{
format(output, outputLen, "%s, %s, %s, %s %L %s", timeElement[0][timeElement], 4[timeElement], 8[timeElement], 12[timeElement], id, "TIME_ELEMENT_AND", 16[timeElement]);
}
default:
{
}
}
}
return 0;
}
public banmod_online(id)
{
get_cvar_string("ip", g_ip, 31);
new ip_port[42];
new ip_tmp[32];
get_user_ip(0, ip_port, 41, 0);
strtok(ip_port, ip_tmp, 31, "", 9, 58, 0);
if (get_pcvar_num(amxbans_debug) == 1)
{
server_print("[AMXBANS DEBUG] The server IP:PORT is: %s:%s", g_ip, g_port);
log_amx("[AMXBANS DEBUG] The server IP:PORT is: %s:%s", g_ip, g_port);
}
new query[512];
new data[1];
format(query, 511, "SELECT timestamp,hostname,address,gametype,rcon,amxban_version,amxban_motd,motd_delay FROM `%s` WHERE address = '%s:%s'", "amx_serverinfo", g_ip, g_port);
data[0] = id;
SQL_ThreadQuery(g_SqlX, "banmod_online_", query, data, 1);
return 0;
}
public banmod_online_(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
!!! Removed Phi
new id = data[0];
new timestamp = get_systime(0);
new servername[100];
get_cvar_string("hostname", servername, 99);
new modname[32];
get_modname(modname, 31);
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 1);
}
else
{
replace_all(servername, 99, "\", "");
replace_all(servername, 99, "'", "?");
if (!SQL_NumResults(query))
{
if (get_pcvar_num(amxbans_debug) == 1)
{
server_print("AMXBANS DEBUG] INSERT INTO `%s` VALUES ('', '%i','%s', '%s:%s', '%s', '', '%s', '', '', '0')", "amx_serverinfo", timestamp, servername, g_ip, g_port, modname, amxbans_version);
log_amx("AMXBANS DEBUG] INSERT INTO `%s` VALUES ('', '%i','%s', '%s:%s', '%s', '', '%s', '', '', '0')", "amx_serverinfo", timestamp, servername, g_ip, g_port, modname, amxbans_version);
}
new query[512];
new data[1];
format(query, 511, "INSERT INTO `%s` (timestamp, hostname, address, gametype, amxban_version, amxban_menu) VALUES ('%i', '%s', '%s:%s', '%s', '%s', '1')", "amx_serverinfo", timestamp, servername, g_ip, g_port, modname, amxbans_version);
data[0] = id;
SQL_ThreadQuery(g_SqlX, "banmod_online_insert", query, data, 1);
}
else
{
new kick_delay_str[10];
SQL_ReadResult(query, 7, kick_delay_str, 10);
if (floatstr(kick_delay_str) > 2.00/*1073741824*/)
{
kick_delay = floatstr(kick_delay_str);
}
else
{
kick_delay = 10.00/*1092616192*/;
}
if (get_pcvar_num(amxbans_debug) == 1)
{
server_print("AMXBANS DEBUG] UPDATE `%s` SET timestamp='%i',hostname='%s',gametype='%s',amxban_version='%s', amxban_menu='1' WHERE address = '%s:%s'", "amx_serverinfo", timestamp, servername, modname, amxbans_version, g_ip, g_port);
log_amx("[AMXBANS DEBUG] UPDATE `%s` SET timestamp='%i',hostname='%s',gametype='%s',amxban_version='%s', amxban_menu='1' WHERE address = '%s:%s'", "amx_serverinfo", timestamp, servername, modname, amxbans_version, g_ip, g_port);
}
new query[512];
new data[1];
format(query, 511, "UPDATE `%s` SET timestamp='%i',hostname='%s',gametype='%s',amxban_version='%s', amxban_menu='1' WHERE address = '%s:%s'", "amx_serverinfo", timestamp, servername, modname, amxbans_version, g_ip, g_port);
data[0] = id;
SQL_ThreadQuery(g_SqlX, "banmod_online_update", query, data, 1);
}
if (!get_pcvar_num(amxbans_debug) == 10)
{
log_amx("[AMXBANS] %L", 0, "SQL_BANMOD_ONLINE", VERSION);
}
}
return 0;
}
public banmod_online_insert(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 2);
}
return 0;
}
public banmod_online_update(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 3);
}
return 0;
}
public fetchReasons(id)
{
new query[512];
new data[1];
format(query, 511, "SELECT reason FROM %s WHERE address = '%s:%s'", "amx_banreasons", g_ip, g_port);
data[0] = id;
SQL_ThreadQuery(g_SqlX, "fetchReasons_", query, data, 1);
return 0;
}
public fetchReasons_(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 5);
}
else
{
if (!SQL_NumResults(query))
{
server_print("[AMXBANS] %L", 0, "NO_REASONS");
new var1 = g_banReasons;
format(var1[0][0][var1], 127, "%L", 0, "REASON_1");
format(g_banReasons[1][0], 127, "%L", 0, "REASON_2");
format(g_banReasons[2][0], 127, "%L", 0, "REASON_3");
format(g_banReasons[3][0], 127, "%L", 0, "REASON_4");
format(g_banReasons[4][0], 127, "%L", 0, "REASON_5");
format(g_banReasons[5][0], 127, "%L", 0, "REASON_6");
format(g_banReasons[6][0], 127, "%L", 0, "REASON_7");
server_print("[AMXBANS] %L", 0, "SQL_LOADED_STATIC_REASONS");
log_amx("[AMXBANS] %L", 0, "SQL_LOADED_STATIC_REASONS");
g_aNum = 7;
return 1;
}
g_aNum = 0;
while (SQL_MoreResults(query))
{
SQL_ReadResult(query, 0, g_banReasons[g_aNum][0][0], 127);
SQL_NextRow(query);
g_aNum += 1;
}
if (g_aNum == 1)
{
server_print("[AMXBANS] %L", 0, "SQL_LOADED_REASON");
}
server_print("[AMXBANS] %L", 0, "SQL_LOADED_REASONS", g_aNum);
}
return 1;
}
public prebanned_check(id)
{
if (is_user_bot(id))
{
return 1;
}
new player_steamid[32];
new player_ip[20];
get_user_authid(id, player_steamid, 31);
get_user_ip(id, player_ip, 19, 1);
new query[4096];
new data[1];
format(query, 4096, "SELECT ban_created,admin_nick FROM `%s` WHERE ( player_id='%s' AND ban_type='S' ) OR ( player_ip='%s' AND ban_type='SI' )", "amx_banhistory", player_steamid, player_ip);
data[0] = id;
SQL_ThreadQuery(g_SqlX, "prebanned_check_", query, data, 1);
return 1;
}
public prebanned_check_(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
!!! Removed Phi
new id = data[0];
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 16);
}
else
{
if (!SQL_NumResults(query))
{
return 1;
}
new admin_nick[32];
new current_time_int = 0;
new ban_count = 0;
new ban_created = 0;
new banned_days_ago = 0;
current_time_int = get_systime(0);
new preBanTime = get_pcvar_num(max_time_to_show_preban);
new showAtacbans = get_pcvar_num(show_atacbans);
while (SQL_MoreResults(query))
{
if (banned_days_ago > preBanTime || (containi(admin_nick, "[ATAC]") != -1 && showAtacbans))
{
if (get_pcvar_num(amxbans_debug) == 1 && banned_days_ago > preBanTime)
{
log_amx("To OLD ban: %i > %d", banned_days_ago, preBanTime);
}
if (get_pcvar_num(amxbans_debug) == 1 && (containi(admin_nick, "[ATAC]") != -1 && showAtacbans))
{
log_amx("Showing atacbans is off, admin: %s", admin_nick);
}
}
else
{
ban_count++;
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("PreBan count: %i < %d Total:%i", banned_days_ago, preBanTime, ban_count);
}
}
SQL_NextRow(query);
}
if (!get_user_flags(id, 0) & 1 && !is_user_bot(id) && !equal("", player_steamid, 0) && ban_count >= get_pcvar_num(show_prebanned_num))
{
server_cmd("amx_chat %L", -1, "PLAYER_BANNED_BEFORE", name, player_steamid, ban_count);
}
}
return 1;
}
public check_player(id)
{
new player_steamid[32];
new player_ip[20];
get_user_authid(id, player_steamid, 31);
get_user_ip(id, player_ip, 19, 1);
new query[4096];
new data[1];
format(query, 4095, "SELECT bid,ban_created,ban_length,ban_reason,admin_nick,admin_id,admin_ip,player_nick,player_id,player_ip,server_name,server_ip,ban_type FROM `%s` WHERE ( player_id='%s' AND ban_type='S' ) OR ( player_ip='%s' AND ban_type='SI' )", "amx_bans", player_steamid, player_ip);
data[0] = id;
SQL_ThreadQuery(g_SqlX, "check_player_", query, data, 1);
return 1;
}
public check_player_(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
!!! Removed Phi
new id = data[0];
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 17);
}
else
{
if (!SQL_NumResults(query))
{
return 1;
}
new ban_length[50];
new ban_reason[255];
new admin_nick[100];
new admin_steamid[50];
new admin_ip[30];
new ban_type[4];
new player_nick[50];
new player_steamid[50];
new player_ip[30];
new server_name[100];
new server_ip[30];
new bid = SQL_ReadResult(query, 0);
new ban_created = SQL_ReadResult(query, 1);
SQL_ReadResult(query, 2, ban_length, 49);
SQL_ReadResult(query, 3, ban_reason, 254);
SQL_ReadResult(query, 4, admin_nick, 99);
SQL_ReadResult(query, 5, admin_steamid, 49);
SQL_ReadResult(query, 6, admin_ip, 29);
SQL_ReadResult(query, 7, player_nick, 49);
SQL_ReadResult(query, 8, player_steamid, 49);
SQL_ReadResult(query, 9, player_ip, 29);
SQL_ReadResult(query, 10, server_name, 99);
SQL_ReadResult(query, 11, server_ip, 29);
SQL_ReadResult(query, 12, ban_type, 3);
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("\nbid: %d \nwhen: %d \nlenght: %s \nreason: %s \nadmin: %s \nadminsteamID: %s \nPlayername %s \nserver: %s \nserverip: %s \nbantype: %s", bid, ban_created, ban_length, ban_reason, admin_nick, admin_steamid, player_nick, server_name, server_ip, ban_type);
}
if (ban_length_int && ban_created && ban_length_int + ban_created > current_time_int)
{
if (get_user_flags(id, 0) & 131072 || id)
{
show_activity = 1;
}
if (show_activity == 2)
{
client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_8", admin_nick);
}
if (show_activity == 1)
{
client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_9");
}
if (ban_length_int)
{
new cTimeLength[128];
new iSecondsLeft = ban_length_int + ban_created - current_time_int;
get_time_length(id, iSecondsLeft, 0, cTimeLength, 127);
client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_12", cTimeLength);
}
else
{
client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_10");
}
client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_13", player_nick);
client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_2", ban_reason);
client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_7", complain_url);
client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_4", player_steamid);
client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_5", player_ip);
client_cmd(id, "echo [AMXBANS] ===============================================");
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[AMXBANS DEBUG] BID:<%d> Player:<%s> <%s> connected and got kicked, because of an active ban", bid, player_nick, player_steamid);
}
new id_str[3];
num_to_str(id, id_str, 3);
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[AMXBANS DEBUG] Delayed Kick-TASK ID1: <%d> ID2: <%s>", id, id_str);
}
new var3 = Heap_4;
var3[0] = 58580;
set_task(3.50, "delayed_kick", 0, id_str, 3, var3, 0);
return 1;
}
client_cmd(id, "echo [AMXBANS] %L", -1, "MSG_11");
new unban_created = get_systime(0);
replace_all(player_nick, 49, "\", "");
replace_all(player_nick, 49, "'", "?");
replace_all(admin_nick, 99, "\", "");
replace_all(admin_nick, 99, "'", "?");
replace_all(ban_reason, 254, "\", "");
replace_all(ban_reason, 254, "'", "?");
replace_all(server_name, 99, "\", "");
replace_all(server_name, 99, "'", "?");
new query[512];
new data[2];
format(query, 511, "INSERT INTO `%s` (player_id,player_ip,player_nick,admin_id,admin_nick,admin_ip,ban_type,ban_reason,ban_created,ban_length,server_ip,server_name,unban_created,unban_reason,unban_admin_nick) VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%d','%s','%s','%s','%i','Bantime expired','amxbans')", "amx_banhistory", player_steamid, player_ip, player_nick, admin_steamid, admin_nick, admin_ip, ban_type, ban_reason, ban_created, ban_length, server_ip, server_name, unban_created);
data[0] = id;
data[1] = bid;
SQL_ThreadQuery(g_SqlX, "insert_to_banhistory", query, data, 2);
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[AMXBANS DEBUG] PRUNE BAN: INSERT INTO `%s` (VALUES('%s','%s','%s')", "amx_banhistory", player_steamid, player_nick, ban_length);
}
}
return 1;
}
public insert_to_banhistory(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
new id = data[0];
new bid = data[1];
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 18);
}
else
{
new query[512];
new data[1];
format(query, 511, "DELETE FROM `%s` WHERE bid='%d'", "amx_bans", bid);
data[0] = id;
SQL_ThreadQuery(g_SqlX, "delete_expired_ban", query, data, 1);
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[AMXBANS DEBUG] PRUNE BAN: DELETE FROM `%s` WHERE bid='%d'", "amx_bans", bid);
}
}
return 1;
}
public delete_expired_ban(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 19);
}
return 0;
}
public actionBanMenu(id, key)
{
switch (key)
{
case 7:
{
if (get_higher_ban_time_admin_flag() & get_user_flags(id, 0))
{
g_menuOption[id]++;
new var6 = g_menuOption[id];
var6 = var6[0][0];
new i = 0;
i = 0;
while (i < g_highbantimesnum)
{
new var1;
if (i == g_menuOption[id][0][0])
{
new var7 = g_menuSettings[id];
var7 = g_HighBanMenuValues[i][0][0];
var1 = var7;
i++;
}
else
{
new var8 = g_menuOption;
if (var8[id][0][0] == -1)
{
new var9 = g_menuSettings[id];
var9 = -1;
var1 = var9;
i++;
}
var1 = var8;
i++;
}
i++;
}
}
else
{
g_menuOption[id]++;
new var10 = g_menuOption[id];
var10 = var10[0][0];
new i = 0;
i = 0;
while (i < g_lowbantimesnum)
{
new var2;
if (i == g_menuOption[id][0][0])
{
new var11 = g_menuSettings[id];
var11 = g_LowBanMenuValues[i][0][0];
var2 = var11;
i++;
}
else
{
new var12 = g_menuOption;
if (var12[id][0][0] == -1)
{
new var13 = g_menuSettings[id];
var13 = -1;
var2 = var13;
i++;
}
var2 = var12;
i++;
}
i++;
}
}
displayBanMenu(id, g_menuPosition[id][0][0]);
}
case 8:
{
new var5 = g_menuPosition[id];
var5++;
displayBanMenu(id, var5[0][0]);
}
case 9:
{
new var4 = g_menuPosition[id];
var4--;
displayBanMenu(id, var4[0][0]);
}
default:
{
g_bannedPlayer = g_menuPlayers[id][0][0][key + g_menuPosition[id][0][0] * 7];
new var14 = g_menuSettings;
new var3;
if (var14[id][0][0] == -1)
{
flag_player(id);
new var15 = g_menuPosition[id];
var15 = 0;
displayBanMenu(id, 0);
var3 = var15;
}
else
{
displayBanMenuReason(id);
var3 = var14;
}
}
}
/ * ERROR! Unable to cast object of type 'Lysis.DSentinel' to type 'Lysis.DReturn'. * /
function "actionBanMenu"
public actionBanMenu(id, key)
displayBanMenu(id, pos)
{
!!! Removed Phi
if (0 > pos)
{
return 0;
}
get_players(g_menuPlayers[id][0][0], g_menuPlayersNum[id], "", "");
new menuBody[512];
new b = 0;
new i = 0;
new name[32];
new start = pos * 7;
if (g_menuPlayersNum[id][0][0] <= start)
{
g_menuPosition[id] = 0;
pos = 0;
start = 0;
}
new len;
new var1;
if (g_menuPlayersNum[id][0][0])
{
var1 = 1;
}
else
{
var1 = 0;
}
new var2;
if (g_coloredMenus)
{
var2[0] = 60952;
}
else
{
var2[0] = 61016;
}
len = format(menuBody, 511, var2, id, "BAN_MENU", pos + 1, var1 + g_menuPlayersNum[id][0][0] / 7);
new end = start + 7;
new keys = 640;
new flagged[32];
if (g_menuPlayersNum[id][0][0] < end)
{
end = g_menuPlayersNum[id][0][0];
}
new a = start;
while (a < end)
{
i = g_menuPlayers[id][0][0][a];
get_user_name(i, name, 31);
if (g_player_flagged[i][0][0])
{
format(flagged, 31, "%L", id, "FLAGGED");
}
else
{
format(flagged, 31, "");
}
if (is_user_bot(i) || access(i, 1))
{
b++;
if (g_coloredMenus)
{
len = format(menuBody[len], 511 - len, "\d%d. %s\w\n", b, name, flagged) + len;
a++;
}
else
{
len = format(menuBody[len], 511 - len, "#. %s %s\n", name, flagged) + len;
a++;
}
a++;
}
else
{
keys = 1 << b | keys;
if (is_user_admin(i))
{
b++;
new var4;
if (g_coloredMenus)
{
var4[0] = 61236;
}
else
{
var4[0] = 61312;
}
len = format(menuBody[len], 511 - len, var4, b, name, flagged) + len;
a++;
}
b++;
new var5;
if (g_coloredMenus)
{
var5[0] = 61372;
}
else
{
var5[0] = 61440;
}
len = format(menuBody[len], 511 - len, var5, b, name, flagged) + len;
a++;
}
a++;
}
new iBanLength = g_menuSettings[id][0][0];
new cTimeLength[128];
if (iBanLength == -1)
{
new var6;
if (g_coloredMenus)
{
var6[0] = 61492;
}
else
{
var6[0] = 61532;
}
len = format(menuBody[len], 511 - len, var6, id, "FLAG_PLAYER") + len;
}
else
{
if (iBanLength)
{
get_time_length(id, iBanLength, 1, cTimeLength, 127);
new var8;
if (g_coloredMenus)
{
var8[0] = 61740;
}
else
{
var8[0] = 61780;
}
len = format(menuBody[len], 511 - len, var8, id, "BAN_FOR_MINUTES", cTimeLength) + len;
}
new var7;
if (g_coloredMenus)
{
var7[0] = 61612;
}
else
{
var7[0] = 61652;
}
len = format(menuBody[len], 511 - len, var7, id, "BAN_PERMANENT") + len;
}
if (g_menuPlayersNum[id][0][0] != end)
{
new var9;
if (pos)
{
var9 = 61960;
}
else
{
var9 = 61980;
}
len = format(menuBody[len], 511 - len, "\n9. %L...\n0. %L", id, "MORE", id, var9) + len;
keys |= 256;
}
else
{
new var10;
if (pos)
{
var10 = 62028;
}
else
{
var10 = 62048;
}
len = format(menuBody[len], 511 - len, "\n0. %L", id, var10) + len;
}
new var11;
if (g_coloredMenus)
{
var11[0] = 62068;
}
else
{
var11[0] = 62168;
}
len = format(menuBody[len], 1023 - len, var11, VERSION) + len;
show_menu(id, keys, menuBody, -1, "Ban Menu");
return 0;
}
public cmdBanMenu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
{
return 1;
}
g_menuOption[id] = 0;
g_menuSettings[id] = get_pcvar_num(firstBanmenuValue);
g_menuPosition[id] = 0;
displayBanMenu(id, 0);
return 1;
}
public actionBanMenuReason(id, key)
{
new var1;
switch (key)
{
case 7:
{
g_inCustomReason[id] = 1;
client_cmd(id, "messagemode amxbans_custombanreason");
return 1;
}
case 8:
{
new var3 = g_lastCustom[id];
banUser(id, var3[0][0]);
var1 = var3;
}
case 9:
{
new var2 = g_menuPosition;
displayBanMenu(id, var2[id][0][0]);
var1 = var2;
}
default:
{
new var4 = g_banReasons[key];
banUser(id, var4[0][0]);
var1 = var4;
}
}
g_menuPosition[id] = 0;
displayBanMenu(id, 0);
return 1;
}
displayBanMenuReason(id)
{
!!! Removed Phi
new menuBody[1024];
new len;
new var1;
if (g_coloredMenus)
{
var1[0] = 62432;
}
else
{
var1[0] = 62476;
}
len = format(menuBody, 1023, var1, "Reason");
new i = 0;
while (i < g_aNum)
{
if (strlen(g_banReasons[i][0][0]))
{
len = format(menuBody[len], 1023 - len, "%d. %s\n", i + 1, g_banReasons[i][0][0]) + len;
}
i++;
}
len = format(menuBody[len], 1023 - len, "\n8. Custom\n") + len;
if (g_lastCustom[id][0][0][0])
{
len = format(menuBody[len], 1023 - len, "\n9. %s\n", g_lastCustom[id][0][0]) + len;
}
len = format(menuBody[len], 1023 - len, "\n0. %L\n", id, "EXIT") + len;
new var2;
if (g_coloredMenus)
{
var2[0] = 62688;
}
else
{
var2[0] = 62780;
}
len = format(menuBody[len], 1023 - len, var2, VERSION) + len;
new keys = 767;
if (g_lastCustom[id][0][0][0])
{
keys |= 256;
}
show_menu(id, keys, menuBody, -1, "Ban Reason Menu");
return 0;
}
public setCustomBanReason(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
{
return 1;
}
new szReason[128];
read_argv(1, szReason, 127);
copy(g_lastCustom[id][0][0], 127, szReason);
new var2 = g_inCustomReason;
new var1;
if (var2[id][0][0])
{
g_inCustomReason[id] = 0;
new var3 = g_lastCustom[id];
banUser(id, var3[0][0]);
var1 = var3;
}
else
{
var1 = var2;
}
return 1;
}
banUser(id, String:banReason[])
{
!!! Removed Phi
if (equal("4294967295", authid2, 0) || equal("HLTV", authid2, 0) || equal("STEAM_ID_LAN", authid2, 0) || equal("VALVE_ID_LAN", authid2, 0) || equal("STEAM_ID_PENDING", authid2, 0) || equal("VALVE_ID_PENDING", authid2, 0))
{
new ipa[32];
get_user_ip(player, ipa, 31, 1);
console_cmd(id, "amx_banip %d %s %s", g_menuSettings[id], ipa, banReason);
}
else
{
console_cmd(id, "amx_ban %d %s %s", g_menuSettings[id], authid2, banReason);
}
return 0;
}
public actionBanhistoryMenu(id, key)
{
!!! Removed Phi
switch (key)
{
case 8:
{
new var2 = g_menuPosition[id];
var2++;
displayBanhistoryMenu(id, var2[0][0]);
}
case 9:
{
new var1 = g_menuPosition[id];
var1--;
displayBanhistoryMenu(id, var1[0][0]);
}
default:
{
new authid[32];
new player = g_menuPlayers[id][0][0][key + g_menuPosition[id][0][0] * 8];
new banhistMOTD_url[256];
new msg[2048];
get_user_authid(player, authid, 31);
get_pcvar_string(banhistmotd_url, banhistMOTD_url, 255);
format(msg, 2047, banhistMOTD_url, authid);
show_motd(id, msg, "Banhistory");
g_menuPosition[id] = 0;
displayBanhistoryMenu(id, 0);
}
}
return 1;
}
displayBanhistoryMenu(id, pos)
{
!!! Removed Phi
if (0 > pos)
{
return 0;
}
get_players(g_menuPlayers[id][0][0], g_menuPlayersNum[id], "", "");
new menuBody[512];
new b = 0;
new i = 0;
new name[32];
new start = pos * 8;
if (g_menuPlayersNum[id][0][0] <= start)
{
g_menuPosition[id] = 0;
pos = 0;
start = 0;
}
new len;
new var1;
if (g_menuPlayersNum[id][0][0])
{
var1 = 1;
}
else
{
var1 = 0;
}
new var2;
if (g_coloredMenus)
{
var2[0] = 63428;
}
else
{
var2[0] = 63492;
}
len = format(menuBody, 511, var2, id, "BANHISTORY_MENU", pos + 1, var1 + g_menuPlayersNum[id][0][0] / 8);
new end = start + 8;
new keys = 640;
if (g_menuPlayersNum[id][0][0] < end)
{
end = g_menuPlayersNum[id][0][0];
}
new a = start;
while (a < end)
{
i = g_menuPlayers[id][0][0][a];
get_user_name(i, name, 31);
if (is_user_bot(i))
{
b++;
if (g_coloredMenus)
{
len = format(menuBody[len], 511 - len, "\d%d. %s\w\n", b, name) + len;
a++;
}
else
{
len = format(menuBody[len], 511 - len, "#. %s\n", name) + len;
a++;
}
a++;
}
else
{
keys = 1 << b | keys;
if (is_user_admin(i))
{
b++;
new var3;
if (g_coloredMenus)
{
var3[0] = 63676;
}
else
{
var3[0] = 63732;
}
len = format(menuBody[len], 511 - len, var3, b, name) + len;
a++;
}
b++;
new var4;
if (g_coloredMenus)
{
var4[0] = 63792;
}
else
{
var4[0] = 63832;
}
len = format(menuBody[len], 511 - len, var4, b, name) + len;
a++;
}
a++;
}
if (g_menuPlayersNum[id][0][0] != end)
{
new var5;
if (pos)
{
var5 = 63968;
}
else
{
var5 = 63988;
}
format(menuBody[len], 511 - len, "\n9. %L...\n0. %L", id, "MORE", id, var5);
keys |= 256;
}
else
{
new var6;
if (pos)
{
var6 = 64036;
}
else
{
var6 = 64056;
}
format(menuBody[len], 511 - len, "\n0. %L", id, var6);
}
show_menu(id, keys, menuBody, -1, "Banhistory Menu");
return 0;
}
public cmdBanhistoryMenu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
{
return 1;
}
g_menuPosition[id] = 0;
displayBanhistoryMenu(id, 0);
return 1;
}
flag_player(id)
{
new player = g_bannedPlayer;
new name[32];
get_user_name(player, name, 31);
if (!g_player_flagged[player][0][0])
{
g_player_flagged[player] = 1;
client_print(id, print_chat, "[AMXBANS] %L", -1, "FLAGG_MESS", name);
}
else
{
g_player_flagged[player] = 0;
client_print(id, print_chat, "[AMXBANS] %L", -1, "UN_FLAGG_MESS", name);
}
return 1;
}
public cmdBan(id, level, cid)
{
!!! Removed Phi
if (!cmd_access(id, level, cid, 3))
{
return 1;
}
new bool:serverCmd = 0;
if (!id)
{
serverCmd = 1;
}
if (!is_str_num(ban_length) || read_argc() < 4)
{
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_BAN_SYNTAX");
return 1;
}
new length1 = strlen(ban_length);
new length2 = strlen(steamidorusername);
new length = length2 + length1;
length += 2;
new reason[128];
read_args(reason, 127);
format(g_ban_reason, 255, "%s", reason[length]);
replace_all(g_ban_reason, 255, "\", "");
replace_all(g_ban_reason, 255, "'", "?");
new iBanLength = str_to_num(ban_length);
new cTimeLength[128];
if (0 < iBanLength)
{
get_time_length(id, iBanLength, 1, cTimeLength, 127);
}
else
{
format(cTimeLength, 127, "%L", -1, "TIME_ELEMENT_PERMANENTLY");
}
if (!get_higher_ban_time_admin_flag() & get_user_flags(id, 0) && iBanLength)
{
client_print(id, print_console, "[AMXBANS] %L", -1, "NOT_BAN_PERMANENT");
return 1;
}
if (!get_higher_ban_time_admin_flag() & get_user_flags(id, 0) && iBanLength > get_pcvar_num(consoleBanMax))
{
client_print(id, print_console, "[AMXBANS] %L", -1, "BAN_MAX", get_pcvar_num(consoleBanMax));
return 1;
}
new player = locate_player(id, steamidorusername);
if (player == -1)
{
return 1;
}
if (g_being_banned[player][0][0])
{
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[AMXBANS DEBUG Blocking doubleban(g_being_banned)] Playerid: %d BanLenght: %s Reason: %s", player, ban_length, g_ban_reason);
}
return 1;
}
g_being_banned[player] = 1;
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[cmdBan function 1]Playerid: %d", player);
}
new player_steamid[50];
new player_ip[30];
if (player)
{
get_user_authid(player, player_steamid, 49);
get_user_ip(player, player_ip, 29, 1);
}
else
{
if (contain(steamidorusername, "STEAM_") != -1 && get_pcvar_num(ban_evenif_disconn) == 1)
{
format(player_steamid, 49, "%s", steamidorusername);
format(player_ip, 29, "unknown_%s", player_steamid);
if (equal(steamidorusername, "", 0))
{
if (serverCmd)
{
server_print("[AMXXBANS] SteamID %s is already being banned", g_steamidorusername);
}
else
{
console_print(id, "[AMXXBANS] SteamID %s is already being banned", g_steamidorusername);
}
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[AMXXBANS DEBUG] SteamID %s is already being banned", g_steamidorusername);
}
return 1;
}
format(g_steamidorusername, 49, "%s", steamidorusername);
}
if (serverCmd)
{
server_print("[AMXXBANS] The Player %s was not found", g_steamidorusername);
}
else
{
console_print(id, "[AMXXBANS] The Player %s was not found", g_steamidorusername);
}
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[AMXXBANS DEBUG] Player %s could not be found", g_steamidorusername);
}
return 1;
}
if (equal("4294967295", player_steamid, 0) || equal("HLTV", player_steamid, 0) || equal("STEAM_ID_LAN", player_steamid, 0) || equal("VALVE_ID_LAN", player_steamid, 0) || equal("VALVE_ID_PENDING", player_steamid, 0) || equal("STEAM_ID_PENDING", player_steamid, 0))
{
new var6 = g_ban_type;
var6[0] = 66772;
player_steamid[0] = 66784;
}
new query[1024];
if (equal("", "S", 0))
{
format(query, 1023, "SELECT player_id FROM %s WHERE player_id='%s'", "amx_bans", player_steamid);
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[AMXBANS DEBUG cmdBan] Banned a player by SteamID");
}
}
else
{
format(query, 1023, "SELECT player_ip FROM %s WHERE player_ip='%s'", "amx_bans", player_ip);
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[AMXBANS DEBUG cmdBan] Banned a player by IP/steamID");
}
}
new data[3];
data[0] = id;
data[1] = player;
data[2] = iBanLength;
SQL_ThreadQuery(g_SqlX, "cmd_ban_", query, data, 3);
return 1;
}
public cmd_ban_(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
!!! Removed Phi
new id = data[0];
new player = data[1];
new iBanLength = data[2];
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[cmdBan function 2]Playerid: %d", player);
}
new bool:serverCmd = 0;
if (!id)
{
serverCmd = 1;
}
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 6);
}
else
{
new player_steamid[50];
new player_ip[30];
new player_nick[50];
if (!SQL_NumResults(query))
{
if (player)
{
get_user_authid(player, player_steamid, 49);
get_user_name(player, player_nick, 49);
get_user_ip(player, player_ip, 29, 1);
replace_all(player_nick, 49, "\", "");
replace_all(player_nick, 49, "'", "?");
}
else
{
if (contain("", "STEAM_") != -1 && get_pcvar_num(ban_evenif_disconn) == 1)
{
format(player_steamid, 49, "%s", g_steamidorusername);
format(player_nick, 49, "unknown_%s", player_steamid);
format(player_ip, 29, "unknown_%s", player_steamid);
}
if (serverCmd)
{
server_print("[AMXXBANS] The Player %s was not found", g_steamidorusername);
}
else
{
console_print(id, "[AMXXBANS] The Player %s was not found", g_steamidorusername);
}
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[AMXXBANS DEBUG] Player %s could not be found", g_steamidorusername);
}
return 1;
}
new admin_nick[100];
new admin_steamid[50];
new admin_ip[20];
get_user_name(id, admin_nick, 99);
get_user_ip(id, admin_ip, 19, 1);
replace_all(admin_nick, 99, "\", "");
replace_all(admin_nick, 99, "'", "?");
if (!serverCmd)
{
get_user_authid(id, admin_steamid, 49);
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[AMXBANS DEBUG cmdBan] Adminsteamid: %s, Servercmd: %s", admin_steamid, serverCmd);
}
}
else
{
admin_steamid[0] = 68712;
new servernick[100];
get_pcvar_string(server_nick, servernick, 99);
if (strlen(servernick))
{
admin_nick[0] = servernick;
}
}
if (contain("", "[HLGUARD]") != -1)
{
admin_nick[0] = 68756;
}
if (contain("", "Max Team Kill Violation") != -1)
{
admin_nick[0] = 68892;
}
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[AMXBANS DEBUG cmdBan] Admin nick: %s, Admin userid: %d", admin_nick, get_user_userid(id));
}
new server_name[100];
get_cvar_string("hostname", server_name, 99);
new ban_created = get_systime(0);
if (get_pcvar_num(add_mapname_in_servername) == 1)
{
new mapname[32];
new pre[4];
new post[4];
get_mapname(mapname, 31);
pre[0] = 69180;
post[0] = 69192;
add(server_name, 255, pre, 0);
add(server_name, 255, mapname, 0);
add(server_name, 255, post, 0);
}
if (equal("4294967295", player_steamid, 0) || equal("HLTV", player_steamid, 0) || equal("STEAM_ID_LAN", player_steamid, 0) || equal("VALVE_ID_LAN", player_steamid, 0) || equal("VALVE_ID_PENDING", player_steamid, 0) || equal("STEAM_ID_PENDING", player_steamid, 0))
{
new var3 = g_ban_type;
var3[0] = 69532;
player_steamid[0] = 69544;
}
new query[512];
format(query, 511, "INSERT INTO `%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) VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%i','%s','%s','%s:%s')", "amx_bans", player_steamid, player_ip, player_nick, admin_ip, admin_steamid, admin_nick, g_ban_type, g_ban_reason, ban_created, BanLength, server_name, g_ip, g_port);
new data[3];
data[0] = id;
data[1] = player;
data[2] = iBanLength;
SQL_ThreadQuery(g_SqlX, "insert_bandetails", query, data, 3);
}
else
{
if (serverCmd)
{
log_message("[AMXBANS] %L", 0, "ALREADY_BANNED", player_steamid, player_ip);
}
else
{
client_print(id, print_console, "[AMXBANS] %L", -1, "ALREADY_BANNED", player_steamid, player_ip);
}
g_being_banned[0] = 0;
}
}
return 1;
}
public insert_bandetails(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
new id = data[0];
new player = data[1];
new iBanLength = data[2];
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[cmdBan function 4]Playerid: %d", player);
}
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 7);
}
else
{
new player_steamid[50];
new player_ip[30];
get_user_authid(player, player_steamid, 49);
get_user_ip(player, player_ip, 29, 1);
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[cmdBan function 4]PlayerSteamid: %s,PlayerIp: %s, BanType: %s", player_steamid, player_ip, g_ban_type);
}
new query[512];
if (equal("", "S", 0))
{
format(query, 511, "SELECT bid FROM `%s` WHERE player_id='%s' AND player_ip='%s' AND ban_type='%s'", "amx_bans", player_steamid, player_ip, g_ban_type);
}
else
{
format(query, 511, "SELECT bid FROM `%s` WHERE player_ip='%s' AND ban_type='%s'", "amx_bans", player_ip, g_ban_type);
}
new data[3];
data[0] = id;
data[1] = player;
data[2] = iBanLength;
SQL_ThreadQuery(g_SqlX, "select_bid", query, data, 3);
}
return 1;
}
public select_bid(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
new id = data[0];
new player = data[1];
new iBanLength = data[2];
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[cmdBan function 5]Playerid: %d", player);
}
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 8);
}
else
{
new bid = 0;
if (!SQL_NumResults(query))
{
bid = 0;
}
else
{
bid = SQL_ReadResult(query, 0);
}
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[cmdBan function 5]Bid: %d", bid);
}
new query[512];
format(query, 511, "SELECT amxban_motd FROM `%s` WHERE address = '%s:%s'", "amx_serverinfo", g_ip, g_port);
new data[4];
data[0] = id;
data[1] = player;
data[2] = bid;
data[3] = iBanLength;
SQL_ThreadQuery(g_SqlX, "select_amxbans_motd", query, data, 4);
}
return 1;
}
public select_amxbans_motd(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
!!! Removed Phi
new id = data[0];
new player = data[1];
new bid = data[2];
new iBanLength = data[3];
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[cmdBan function 6]Playerid: %d, Bid: %d", player, bid);
}
new bool:serverCmd = 0;
if (!id)
{
serverCmd = 1;
}
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 9);
}
else
{
new player_steamid[50];
new player_ip[30];
new player_nick[50];
get_user_authid(player, player_steamid, 49);
get_user_name(player, player_nick, 49);
get_user_ip(player, player_ip, 29, 1);
replace_all(player_nick, 49, "\", "");
replace_all(player_nick, 49, "'", "?");
new amxban_motd_url[256];
if (!SQL_NumResults(query))
{
copy(amxban_motd_url, 256, "0");
}
else
{
SQL_ReadResult(query, 0, amxban_motd_url, 256);
}
new admin_team[11];
new admin_steamid[50];
new admin_nick[100];
get_user_team(id, admin_team, 10);
get_user_authid(id, admin_steamid, 49);
get_user_name(id, admin_nick, 99);
replace_all(admin_nick, 99, "\", "");
replace_all(admin_nick, 99, "'", "?");
new cTimeLengthPlayer[128];
new cTimeLengthServer[128];
if (0 < iBanLength)
{
get_time_length(player, iBanLength, 1, cTimeLengthPlayer, 127);
get_time_length(0, iBanLength, 1, cTimeLengthServer, 127);
}
else
{
format(cTimeLengthPlayer, 127, "%L", -1, "TIME_ELEMENT_PERMANENTLY");
format(cTimeLengthServer, 127, "%L", 0, "TIME_ELEMENT_PERMANENTLY");
}
if ((get_admin_mole_access_flag() & get_user_flags(id, 0) || id) && get_pcvar_num(show_name_evenif_mole))
{
show_activity = 1;
}
if (player)
{
new complain_url[256];
get_pcvar_string(complainurl, complain_url, 255);
client_print(player, print_console, "[AMXBANS] ===============================================");
if (show_activity == 2)
{
client_print(player, print_console, "[AMXBANS] %L", -1, "MSG_6", admin_nick);
client_print(player, print_console, "[AMXBANS] %L", -1, "MSG_7", complain_url);
format(ban_motd, 4095, "%L", -1, "MSG_MOTD_2", g_ban_reason, cTimeLengthPlayer, player_steamid, admin_nick);
}
else
{
client_print(player, print_console, "[AMXBANS] %L", -1, "MSG_1");
client_print(player, print_console, "[AMXBANS] %L", -1, "MSG_7", complain_url);
format(ban_motd, 4095, "%L", -1, "MSG_MOTD_1", g_ban_reason, cTimeLengthPlayer, player_steamid);
}
client_print(player, print_console, "[AMXBANS] %L", -1, "MSG_2", g_ban_reason);
client_print(player, print_console, "[AMXBANS] %L", -1, "MSG_3", cTimeLengthPlayer);
client_print(player, print_console, "[AMXBANS] %L", -1, "MSG_4", player_steamid);
client_print(player, print_console, "[AMXBANS] %L", -1, "MSG_5", player_ip);
client_print(player, print_console, "[AMXBANS] ===============================================");
new msg[4096];
new bidstr[10];
num_to_str(bid, bidstr, 9);
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[cmdBan function 6.2]Bidstr: %s URL= %s Kickdelay:%f", bidstr, amxban_motd_url, kick_delay);
}
if (equal(amxban_motd_url, "", 0))
{
format(msg, 4095, ban_motd);
}
else
{
format(msg, 4095, amxban_motd_url, bidstr);
}
new motdTitle[19];
motdTitle[0] = 74316;
add(motdTitle, 255, "5.0", 0);
show_motd(player, msg, motdTitle);
new id_str[3];
num_to_str(player, id_str, 3);
new var8 = Heap_4;
var8[0] = 58580;
set_task(kick_delay, "delayed_kick", 1, id_str, 3, var8, 0);
}
else
{
if (contain("", "STEAM_") != -1 && get_pcvar_num(ban_evenif_disconn) == 1)
{
format(player_steamid, 49, "%s", g_steamidorusername);
format(player_nick, 49, "unknown_%s", player_steamid);
format(player_ip, 29, "unknown_%s", player_steamid);
}
if (serverCmd)
{
server_print("[AMXXBANS] The Player %s was not found", g_steamidorusername);
}
else
{
console_print(id, "[AMXXBANS] The Player %s was not found", g_steamidorusername);
}
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[AMXXBANS DEBUG] Player %s could not be found", g_steamidorusername);
}
return 1;
}
if (equal("", "S", 0))
{
if (serverCmd)
{
log_message("[AMXBANS] %L", -1, "STEAMID_BANNED_SUCCESS_IP_LOGGED", player_steamid);
}
else
{
client_print(id, print_console, "[AMXBANS] %L", -1, "STEAMID_BANNED_SUCCESS_IP_LOGGED", player_steamid);
}
}
else
{
if (serverCmd)
{
log_message("[AMXBANS] %L", -1, "STEAMID_IP_BANNED_SUCCESS");
}
client_print(id, print_console, "[AMXBANS] %L", -1, "STEAMID_IP_BANNED_SUCCESS");
}
if (serverCmd)
{
admin_steamid[0] = 75756;
admin_team[0] = 75760;
}
if (0 < iBanLength)
{
log_amx("%L", 0, "BAN_LOG", admin_nick, get_user_userid(id), admin_steamid, admin_team, player_nick, player_steamid, cTimeLengthServer, iBanLength, g_ban_reason);
if (get_pcvar_num(show_in_hlsw) == 1)
{
log_message("\"%s<%d><%s><%s>\" triggered \"amx_chat\" (text \"%L\")", admin_nick, get_user_userid(id), admin_steamid, admin_team, 0, "BAN_CHATLOG", player_nick, player_steamid, cTimeLengthServer, iBanLength, g_ban_reason);
}
}
else
{
log_amx("%L", 0, "BAN_LOG_PERM", admin_nick, get_user_userid(id), admin_steamid, admin_team, player_nick, player_steamid, g_ban_reason);
if (get_pcvar_num(show_in_hlsw) == 1)
{
log_message("\"%s<%d><%s><%s>\" triggered \"amx_chat\" (text \"%L\")", admin_nick, get_user_userid(id), admin_steamid, admin_team, 0, "BAN_CHATLOG_PERM", player_nick, player_steamid, g_ban_reason);
}
}
new message[192];
if (show_activity == 1)
{
if (0 < iBanLength)
{
new playerCount = 0;
new idx = 0;
new players[32];
get_players(players, playerCount, "", "");
idx = 0;
while (idx < playerCount)
{
if (is_user_hltv(players[idx]) || is_user_bot(players[idx]))
{
}
else
{
get_time_length(players[idx], iBanLength, 1, cTimeLengthPlayer, 127);
format(message, 191, "%L", players[idx], "PUBLIC_BAN_ANNOUNCE", player_nick, cTimeLengthPlayer, g_ban_reason);
if (get_pcvar_num(show_hud_messages) == 1)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.00, 10.00, 0.50, 0.15, -1);
ShowSyncHudMsg(players[idx], g_MyMsgSync, "%s", message);
}
client_print(players[idx], print_chat, "%s", message);
client_print(players[idx], print_console, "%s", message);
}
idx++;
}
}
new playerCount = 0;
new idx = 0;
new players[32];
get_players(players, playerCount, "", "");
idx = 0;
while (idx < playerCount)
{
if (is_user_hltv(players[idx]) || is_user_bot(players[idx]))
{
}
else
{
get_time_length(players[idx], iBanLength, 1, cTimeLengthPlayer, 127);
format(message, 191, "%L", players[idx], "PUBLIC_BAN_ANNOUNCE_PERM", player_nick, g_ban_reason);
if (get_pcvar_num(show_hud_messages) == 1)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.00, 10.00, 0.50, 0.15, -1);
ShowSyncHudMsg(players[idx], g_MyMsgSync, "%s", message);
}
client_print(players[idx], print_chat, "%s", message);
client_print(players[idx], print_console, "%s", message);
}
idx++;
}
}
if (show_activity == 2)
{
if (0 < iBanLength)
{
new playerCount = 0;
new idx = 0;
new players[32];
get_players(players, playerCount, "", "");
idx = 0;
while (idx < playerCount)
{
if (is_user_hltv(players[idx]) || is_user_bot(players[idx]))
{
}
else
{
get_time_length(players[idx], iBanLength, 1, cTimeLengthPlayer, 127);
format(message, 191, "%L", players[idx], "PUBLIC_BAN_ANNOUNCE_2", player_nick, cTimeLengthPlayer, g_ban_reason, admin_nick);
if (get_pcvar_num(show_hud_messages) == 1)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.00, 10.00, 0.50, 0.15, -1);
ShowSyncHudMsg(players[idx], g_MyMsgSync, "%s", message);
}
client_print(players[idx], print_chat, "%s", message);
client_print(players[idx], print_console, "%s", message);
}
idx++;
}
}
new playerCount = 0;
new idx = 0;
new players[32];
get_players(players, playerCount, "", "");
idx = 0;
while (idx < playerCount)
{
if (is_user_hltv(players[idx]) || is_user_bot(players[idx]))
{
}
else
{
get_time_length(players[idx], iBanLength, 1, cTimeLengthPlayer, 127);
format(message, 191, "%L", players[idx], "PUBLIC_BAN_ANNOUNCE_2_PERM", player_nick, g_ban_reason, admin_nick);
if (get_pcvar_num(show_hud_messages) == 1)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.00, 10.00, 0.50, 0.15, -1);
ShowSyncHudMsg(players[idx], g_MyMsgSync, "%s", message);
}
client_print(players[idx], print_chat, "%s", message);
client_print(players[idx], print_console, "%s", message);
}
idx++;
}
}
if (get_pcvar_num(amxbans_cmd_sql) == 1)
{
new query[512];
new data[1];
new command[16];
command[0] = 76956;
new stime[32];
get_time("%Y-%m-%d %H:%M:%S", stime, 31);
format(query, 511, "INSERT INTO `admincommands` (authid,name,authid2,name2,value,command,reason,stime) values('%s','%s','%s','%s','%i','%s','%s','%s')", admin_steamid, admin_nick, player_steamid, player_nick, iBanLength, command, g_ban_reason, stime);
data[0] = id;
SQL_ThreadQuery(g_SqlX, "insert_ban_cmd", query, data, 1);
}
}
return 1;
}
public insert_ban_cmd(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 12);
}
return 1;
}
public cmdUnBan(id, level, cid)
{
if (!cmd_access(id, level, cid, 3))
{
return 1;
}
read_args(g_unban_player_steamid, 50);
trim(g_unban_player_steamid);
if (contain("", "STEAM_") == -1)
{
client_print(id, print_console, "[AMXBANS] %L", -1, "UNABAN_STEAMID_ONLY");
return 1;
}
new query[512];
new data[1];
format(query, 511, "SELECT bid,ban_created,ban_length,ban_reason,admin_nick,admin_id,player_nick,player_ip,player_id,ban_type,server_ip,server_name FROM `%s` WHERE player_id='%s'", "amx_bans", g_unban_player_steamid);
data[0] = id;
SQL_ThreadQuery(g_SqlX, "cmd_unban_select", query, data, 1);
return 1;
}
public cmd_unban_select(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
!!! Removed Phi
new id = data[0];
new bool:serverCmd = 0;
if (!id)
{
serverCmd = 1;
}
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 11);
}
else
{
if (!SQL_NumResults(query))
{
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_NORESULT", g_unban_player_steamid);
server_print("[AMXBANS] %L", -1, "AMX_FIND_NORESULT", g_unban_player_steamid);
return 1;
}
if (banned_minutes_ago > get_pcvar_num(max_time_gone_to_unban) && !get_higher_ban_time_admin_flag() & get_user_flags(id, 0))
{
client_print(id, print_console, "[AMXBANS] %L", -1, "UNBAN_TO_OLD_BAN", banned_ago_str);
client_print(id, print_console, "[AMXBANS] %L", -1, "UNBAN_TO_OLD_BAN2", banned_ago_str2);
return 1;
}
client_print(id, print_console, " ");
client_print(id, print_console, "[AMXBANS] =================");
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_2", bid, g_player_nick);
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_3", admin_nick, g_admin_steamid, ban_reason);
client_print(id, print_console, "[AMXBANS] =================");
client_print(id, print_console, " ");
server_print(" ");
server_print("[AMXBANS] =================");
server_print("[AMXBANS] %L", 0, "AMX_FIND_RESULT_2", bid, g_player_nick);
server_print("[AMXBANS] %L", 0, "AMX_FIND_RESULT_3", admin_nick, g_admin_steamid, ban_reason);
server_print("[AMXBANS] =================");
server_print(" ");
new unban_admin_steamid[32];
if (!serverCmd)
{
get_user_authid(id, unban_admin_steamid, 31);
get_user_team(id, g_unban_admin_team, 9);
get_user_name(id, g_unban_admin_nick, 99);
}
else
{
unban_admin_steamid[0] = 80120;
new var2 = g_unban_admin_team;
var2[0] = 80124;
new servernick[100];
get_pcvar_string(server_nick, servernick, 99);
if (strlen(servernick))
{
new var3 = g_unban_admin_nick;
var3[0] = servernick;
}
else
{
get_cvar_string("hostname", g_unban_admin_nick, 99);
}
}
new unban_created = get_systime(0);
new query[512];
format(query, 511, "INSERT INTO `%s` (player_id,player_ip,player_nick,admin_id,admin_nick,ban_type,ban_reason,ban_created,ban_length,server_ip,server_name,unban_created,unban_reason,unban_admin_nick) VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%i','UnBanned in Game','%s %s')", "amx_banhistory", g_unban_player_steamid, player_ip, g_player_nick, g_admin_steamid, admin_nick, ban_type, ban_reason, ban_created, ban_length, server_ip, server_name, unban_created, g_unban_admin_nick, unban_admin_steamid);
new data[2];
data[0] = id;
data[1] = bid;
SQL_ThreadQuery(g_SqlX, "cmd_unban_insert", query, data, 2);
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[AMXBANS DEBUG] UNBAN IN GAME: INSERT INTO `%s` (VALUES('%s','%s','%s', '%s')", "amx_banhistory", g_unban_player_steamid, g_player_nick, ban_length, g_unban_admin_nick);
}
}
return 1;
}
public cmd_unban_insert(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
new id = data[0];
new bid = data[1];
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 12);
}
else
{
new query[512];
new data[1];
format(query, 511, "DELETE FROM `%s` WHERE bid=%d", "amx_bans", bid);
data[0] = id;
SQL_ThreadQuery(g_SqlX, "cmd_unban_delete_and_print", query, data, 1);
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[AMXBANS DEBUG] UNBAN IN GAME: DELETE FROM `%s` WHERE bid=%d", "amx_bans", bid);
}
}
return 1;
}
public cmd_unban_delete_and_print(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
!!! Removed Phi
new id = data[0];
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 13);
}
else
{
log_amx("%L", 0, "UNBAN_LOG", g_unban_admin_nick, get_user_userid(id), g_admin_steamid, g_unban_admin_team, g_player_nick, g_unban_player_steamid);
if (get_pcvar_num(show_in_hlsw) == 1)
{
log_message("\"%s<%d><%s><%s>\" triggered \"amx_chat\" (text \"%L\")", g_unban_admin_nick, get_user_userid(id), g_admin_steamid, g_unban_admin_team, 0, "UNBAN_CHATLOG", g_player_nick, g_unban_player_steamid);
}
if ((get_admin_mole_access_flag() & get_user_flags(id, 0) || id) && get_pcvar_num(show_name_evenif_mole))
{
show_activity = 1;
}
if (show_activity == 1)
{
client_print(0, print_chat, "%L", -1, "PUBLIC_UNBAN_ANNOUNCE", g_player_nick);
}
if (show_activity == 2)
{
client_print(0, print_chat, "%L", -1, "PUBLIC_UNBAN_ANNOUNCE_2", g_player_nick, g_unban_admin_nick);
}
client_print(id, print_console, " ");
client_print(id, print_console, "[AMXBANS] =================");
client_print(id, print_console, "%L", -1, "PUBLIC_UNBAN_ANNOUNCE", g_player_nick);
client_print(id, print_console, "[AMXBANS] =================");
client_print(id, print_console, " ");
server_print(" ");
server_print("[AMXBANS] =================");
server_print("[AMXBANS] %L", 0, "PUBLIC_UNBAN_ANNOUNCE", g_player_nick);
server_print("[AMXBANS] =================");
server_print(" ");
}
return 1;
}
public amx_find(id, level, cid)
{
if (!cmd_access(id, level, cid, 3))
{
return 1;
}
read_args(g_search_player_steamid, 50);
trim(g_search_player_steamid);
new query[512];
new data[2];
format(query, 511, "SELECT bid,ban_created,ban_length,ban_reason,admin_nick,admin_id,player_nick FROM `%s` WHERE player_id='%s'", "amx_bans", g_search_player_steamid);
data[0] = id;
SQL_ThreadQuery(g_SqlX, "amx_find_", query, data, 1);
return 1;
}
public amx_find_(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
!!! Removed Phi
new id = data[0];
new bool:serverCmd = 0;
if (!id)
{
serverCmd = 1;
}
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 14);
}
else
{
new bid[20];
new ban_created[50];
new ban_length[50];
new ban_reason[255];
new admin_nick[100];
new admin_steamid[50];
new player_nick[100];
new remaining[128];
new ban_created_int = 0;
new ban_length_int = 0;
new current_time_int = 0;
new ban_left = 0;
if (!SQL_NumResults(query))
{
if (serverCmd)
{
log_message("[AMXBANS] %L", -1, "AMX_FIND_NORESULT", g_search_player_steamid);
}
else
{
console_print(id, "[AMXBANS] %L", -1, "AMX_FIND_NORESULT", g_search_player_steamid);
}
return 1;
}
if (serverCmd)
{
log_message("[AMXBANS] %L", -1, "AMX_FIND_RESULT_1", g_search_player_steamid);
while (SQL_MoreResults(query))
{
if (ban_length_int && ban_created_int)
{
format(remaining, 127, "%L", -1, "MSG_10");
}
else
{
ban_left = ban_length_int + ban_created_int - current_time_int;
if (0 >= ban_left)
{
format(remaining, 127, "%L", -1, "AMX_FIND_RESULT_5");
}
get_time_length(id, ban_left, 0, remaining, 127);
}
if (serverCmd)
{
log_message(" ");
log_message("[AMXBANS] =================");
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_2", bid, player_nick);
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_4", ban_length, remaining);
log_message("[AMXBANS] =================");
log_message(" ");
}
else
{
client_print(id, print_console, " ");
client_print(id, print_console, "[AMXBANS] =================");
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_2", bid, player_nick);
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_4", ban_length, remaining);
client_print(id, print_console, "[AMXBANS] =================");
client_print(id, print_console, " ");
}
SQL_NextRow(query);
}
}
else
{
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_1", g_search_player_steamid);
while (SQL_MoreResults(query))
{
if (ban_length_int && ban_created_int)
{
format(remaining, 127, "%L", -1, "MSG_10");
}
else
{
ban_left = ban_length_int + ban_created_int - current_time_int;
if (0 >= ban_left)
{
format(remaining, 127, "%L", -1, "AMX_FIND_RESULT_5");
}
get_time_length(id, ban_left, 0, remaining, 127);
}
if (serverCmd)
{
log_message(" ");
log_message("[AMXBANS] =================");
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_2", bid, player_nick);
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_4", ban_length, remaining);
log_message("[AMXBANS] =================");
log_message(" ");
}
else
{
client_print(id, print_console, " ");
client_print(id, print_console, "[AMXBANS] =================");
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_2", bid, player_nick);
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_4", ban_length, remaining);
client_print(id, print_console, "[AMXBANS] =================");
client_print(id, print_console, " ");
}
SQL_NextRow(query);
}
}
while (SQL_MoreResults(query))
{
if (ban_length_int && ban_created_int)
{
format(remaining, 127, "%L", -1, "MSG_10");
}
else
{
ban_left = ban_length_int + ban_created_int - current_time_int;
if (0 >= ban_left)
{
format(remaining, 127, "%L", -1, "AMX_FIND_RESULT_5");
}
get_time_length(id, ban_left, 0, remaining, 127);
}
if (serverCmd)
{
log_message(" ");
log_message("[AMXBANS] =================");
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_2", bid, player_nick);
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_4", ban_length, remaining);
log_message("[AMXBANS] =================");
log_message(" ");
}
else
{
client_print(id, print_console, " ");
client_print(id, print_console, "[AMXBANS] =================");
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_2", bid, player_nick);
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_4", ban_length, remaining);
client_print(id, print_console, "[AMXBANS] =================");
client_print(id, print_console, " ");
}
SQL_NextRow(query);
}
}
return 1;
}
public amx_findex(id, level, cid)
{
!!! Removed Phi
if (!cmd_access(id, level, cid, 3))
{
return 1;
}
new steamidorusername[50];
new player_steamid[50];
read_args(steamidorusername, 50);
trim(steamidorusername);
new player = find_player("c", steamidorusername);
if (!player)
{
player = find_player("bl", steamidorusername);
}
if (player)
{
if (get_user_flags(player, 0) & 1)
{
client_print(id, print_console, "[AMXX] %L", -1, "HAS_IMMUNITY");
return 1;
}
if (is_user_bot(player))
{
client_print(id, print_console, "[AMXX] %L", -1, "IS_BOT");
return 1;
}
if (is_user_hltv(player))
{
client_print(id, print_console, "[AMXX] %L", -1, "IS_HLTV");
return 1;
}
get_user_authid(player, player_steamid, 50);
}
else
{
format(player_steamid, 50, "%s", steamidorusername);
}
new query[512];
new data[2];
format(query, 511, "SELECT bhid,ban_created,ban_length,ban_reason,admin_nick,admin_id,player_nick FROM `%s` WHERE player_id='%s' ORDER BY ban_created DESC LIMIT 0,10", "amx_banhistory", player_steamid);
data[0] = id;
data[1] = player;
SQL_ThreadQuery(g_SqlX, "amx_findex_", query, data, 2);
return 0;
}
public amx_findex_(failstate, Handle:query, String:error[], errnum, String:data[], size)
{
!!! Removed Phi
new id = data[0];
new player = data[1];
new bool:serverCmd = 0;
if (!id)
{
serverCmd = 1;
}
if (failstate)
{
new szQuery[256];
MySqlX_ThreadError(szQuery, error, errnum, failstate, 15);
}
else
{
new player_steamid[50];
get_user_authid(player, player_steamid, 50);
new bid[20];
new ban_created[50];
new ban_length[50];
new ban_reason[255];
new admin_nick[100];
new admin_steamid[50];
new player_nick[100];
new remaining[128];
new ban_created_int = 0;
new ban_length_int = 0;
new current_time_int = 0;
new ban_left = 0;
if (!SQL_NumResults(query))
{
if (serverCmd)
{
log_message("[AMXBANS] %L", -1, "AMX_FIND_NORESULT", player_steamid);
}
else
{
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_NORESULT", player_steamid);
}
return 1;
}
if (serverCmd)
{
log_message("[AMXBANS] %L", -1, "AMX_FIND_RESULT_1", player_steamid);
while (SQL_MoreResults(query))
{
if (ban_length_int && ban_created_int)
{
remaining[0] = 87620;
}
else
{
ban_left = ban_length_int + ban_created_int - current_time_int;
if (0 >= ban_left)
{
format(remaining, 127, "none", ban_left);
}
get_time_length(id, ban_left, 0, remaining, 127);
}
if (serverCmd)
{
log_message(" ");
log_message("[AMXBANS] =================");
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_2", bid, player_nick);
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_4", ban_length, remaining);
log_message("[AMXBANS] =================");
log_message(" ");
}
else
{
client_print(id, print_console, " ");
client_print(id, print_console, "[AMXBANS] =================");
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_2", bid, player_nick);
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_4", ban_length, remaining);
client_print(id, print_console, "[AMXBANS] =================");
client_print(id, print_console, " ");
}
SQL_NextRow(query);
}
}
else
{
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_1", player_steamid);
while (SQL_MoreResults(query))
{
if (ban_length_int && ban_created_int)
{
remaining[0] = 87620;
}
else
{
ban_left = ban_length_int + ban_created_int - current_time_int;
if (0 >= ban_left)
{
format(remaining, 127, "none", ban_left);
}
get_time_length(id, ban_left, 0, remaining, 127);
}
if (serverCmd)
{
log_message(" ");
log_message("[AMXBANS] =================");
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_2", bid, player_nick);
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_4", ban_length, remaining);
log_message("[AMXBANS] =================");
log_message(" ");
}
else
{
client_print(id, print_console, " ");
client_print(id, print_console, "[AMXBANS] =================");
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_2", bid, player_nick);
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_4", ban_length, remaining);
client_print(id, print_console, "[AMXBANS] =================");
client_print(id, print_console, " ");
}
SQL_NextRow(query);
}
}
while (SQL_MoreResults(query))
{
if (ban_length_int && ban_created_int)
{
remaining[0] = 87620;
}
else
{
ban_left = ban_length_int + ban_created_int - current_time_int;
if (0 >= ban_left)
{
format(remaining, 127, "none", ban_left);
}
get_time_length(id, ban_left, 0, remaining, 127);
}
if (serverCmd)
{
log_message(" ");
log_message("[AMXBANS] =================");
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_2", bid, player_nick);
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
log_message("[AMXBANS] %L", 0, "AMX_FIND_RESULT_4", ban_length, remaining);
log_message("[AMXBANS] =================");
log_message(" ");
}
else
{
client_print(id, print_console, " ");
client_print(id, print_console, "[AMXBANS] =================");
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_2", bid, player_nick);
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_3", admin_nick, admin_steamid, ban_reason);
client_print(id, print_console, "[AMXBANS] %L", -1, "AMX_FIND_RESULT_4", ban_length, remaining);
client_print(id, print_console, "[AMXBANS] =================");
client_print(id, print_console, " ");
}
SQL_NextRow(query);
}
}
return 1;
}
public plugin_init()
{
new var1 = Heap_4;
var1[0] = 89028;
register_concmd("amx_reloadreasons", "reasonReload", 128, var1);
register_clcmd("amx_banmenu", "cmdBanMenu", 8, "- displays ban menu");
register_clcmd("amxbans_custombanreason", "setCustomBanReason", 8, "- configures custom ban message");
register_clcmd("amx_banhistorymenu", "cmdBanhistoryMenu", 8, "- displays banhistorymenu");
register_menucmd(register_menuid("Ban Menu", 0), 1023, "actionBanMenu");
register_menucmd(register_menuid("Ban Reason Menu", 0), 1023, "actionBanMenuReason");
register_menucmd(register_menuid("Banhistory Menu", 0), 1023, "actionBanhistoryMenu");
g_coloredMenus = colored_menus();
g_MyMsgSync = CreateHudSyncObj(0);
register_plugin("AMXBans", "5.0", AUTHOR);
register_cvar("amxbans_version", VERSION, 332, 0.00);
amxbans_cmd_sql = register_cvar("amxbans_cmd_sql", "0", 0, 0.00);
amxbans_debug = register_cvar("amxbans_debug", "0", 0, 0.00);
server_nick = register_cvar("amxbans_servernick", "", 0, 0.00);
ban_evenif_disconn = register_cvar("amxbans_ban_evenif_disconnected", "0", 0, 0.00);
complainurl = register_cvar("amxbans_complain_url", "www.yoursite.com", 0, 0.00);
show_prebanned = register_cvar("amxbans_show_prebanned", "1", 0, 0.00);
show_prebanned_num = register_cvar("amxbans_show_prebanned_num", "2", 0, 0.00);
max_time_to_show_preban = register_cvar("amxbans_max_time_to_show_preban", "9999", 0, 0.00);
banhistmotd_url = register_cvar("amxbans_banhistmotd_url", "http://pathToYour/findex.php?steamid=%s", 0, 0.00);
show_atacbans = register_cvar("amxbans_show_prebans_from_atac", "1", 0, 0.00);
show_name_evenif_mole = register_cvar("amxbans_show_name_evenif_mole", "1", 0, 0.00);
firstBanmenuValue = register_cvar("amxbans_first_banmenu_value", "5", 0, 0.00);
consoleBanMax = register_cvar("amxbans_consolebanmax", "1440", 0, 0.00);
max_time_gone_to_unban = register_cvar("amxbans_max_time_gone_to_unban", "1440", 0, 0.00);
higher_ban_time_admin = register_cvar("amxbans_higher_ban_time_admin", "n", 0, 0.00);
admin_mole_access = register_cvar("amxbans_admin_mole_access", "r", 0, 0.00);
show_in_hlsw = register_cvar("amxbans_show_in_hlsw", "1", 0, 0.00);
show_hud_messages = register_cvar("amxbans_show_hud_messages", "1", 0, 0.00);
add_mapname_in_servername = register_cvar("amxbans_add_mapname_in_servername", "0", 0, 0.00);
register_dictionary("amxbans.txt");
register_dictionary("common.txt");
register_dictionary("time.txt");
register_concmd("amx_ban", "cmdBan", 8, "<time in mins> <steamID or nickname or #authid or IP> <reason>");
register_srvcmd("amx_ban", "cmdBan", -1, "<time in min> <steamID or nickname or #authid or IP> <reason>");
register_concmd("amx_banip", "cmdBan", 8, "<time in mins> <steamID or nickname or #authid or IP> <reason>");
register_srvcmd("amx_banip", "cmdBan", -1, "<time in mins> <steamID or nickname or #authid or IP> <reason>");
register_concmd("amx_unban", "cmdUnBan", 8, "<steamID>");
register_srvcmd("amx_unban", "cmdUnBan", -1, "<steamID>");
register_concmd("amx_find", "amx_find", 8, "<steamID>");
register_srvcmd("amx_find", "amx_find", -1, "<steamID>");
register_concmd("amx_findex", "amx_findex", 8, "<steamID>");
register_srvcmd("amx_findex", "amx_findex", -1, "<steamID>");
register_srvcmd("amx_list", "cmdLst", -1, "Displays playerinfo");
new var2 = Heap_4;
var2[0] = 94936;
register_srvcmd("amx_sethighbantimes", "setHighBantimes", -1, var2);
new var3 = Heap_4;
var3[0] = 94936;
register_srvcmd("amx_setlowbantimes", "setLowBantimes", -1, var3);
new configsDir[64];
get_configsdir(configsDir, 63);
new configfile[128];
format(configfile, 127, "%s/amxbans.cfg", configsDir);
server_cmd("exec %s/sql.cfg", configsDir);
if (file_exists(configfile))
{
server_cmd("exec %s", configfile);
}
else
{
loadDefaultBantimes(0);
server_print("[AMXBANS] Could not find amxbans.cfg, loading default bantimes");
log_amx("[AMXBANS] Could not find amxbans.cfg, loading default bantimes");
log_amx("[AMXBANS] You should put amxbans.cfg in addons/amxmodx/configs/");
}
new var4 = Heap_4;
var4[0] = 58580;
new var5 = Heap_4;
var5[0] = 96028;
set_task(0.50, "sql_init", 0, var5, 0, var4, 0);
new var6 = Heap_4;
var6[0] = 58580;
new var7 = Heap_4;
var7[0] = 96028;
set_task(5.00, "addBanhistMenu", 0, var7, 0, var6, 0);
return 0;
}
public addBanhistMenu()
{
AddMenuItem("Banhistory Menu", "amx_banhistorymenu", 8, "AMXBans");
return 0;
}
public sql_init()
{
new host[64];
new user[64];
new pass[64];
new db[64];
get_cvar_string("amx_sql_host", host, 63);
get_cvar_string("amx_sql_user", user, 63);
get_cvar_string("amx_sql_pass", pass, 63);
get_cvar_string("amx_sql_db", db, 63);
g_SqlX = SQL_MakeDbTuple(host, user, pass, db);
new var1 = Heap_4;
var1[0] = 58580;
new var2 = Heap_4;
var2[0] = 96028;
set_task(1.00, "banmod_online", 0, var2, 0, var1, 0);
new var3 = Heap_4;
var3[0] = 58580;
new var4 = Heap_4;
var4[0] = 96028;
set_task(1.00, "fetchReasons", 0, var4, 0, var3, 0);
return 0;
}
public reasonReload(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
{
return 1;
}
fetchReasons(id);
if (id)
{
if (g_aNum == 1)
{
console_print(id, "[AMXBANS] %L", 0, "SQL_LOADED_REASON");
}
console_print(id, "[AMXBANS] %L", 0, "SQL_LOADED_REASONS", g_aNum);
}
return 1;
}
public client_connect(id)
{
!!! Removed Phi
if ((id > 0 || id < 32) && is_user_connected(id))
{
g_lastCustom[id][0][0][0] = 0;
g_inCustomReason[id] = 0;
g_player_flagged[id] = 0;
g_being_banned[id] = 0;
}
return 0;
}
public client_disconnect(id)
{
g_lastCustom[id][0][0][0] = 0;
g_inCustomReason[id] = 0;
g_player_flagged[id] = 0;
g_being_banned[id] = 0;
return 0;
}
public client_authorized(id)
{
if (get_pcvar_num(show_prebanned) == 1)
{
new var1 = Heap_4;
var1[0] = 58580;
new var2 = Heap_4;
var2[0] = 96028;
set_task(1.00, "prebanned_check", id, var2, 0, var1, 0);
}
new var3 = Heap_4;
var3[0] = 58580;
new var4 = Heap_4;
var4[0] = 96028;
set_task(1.10, "check_player", id, var4, 0, var3, 0);
return 0;
}
public delayed_kick(String:id_str[])
{
new player_id = str_to_num(id_str);
new userid = get_user_userid(player_id);
new kick_message[128];
format(kick_message, 127, "%L", -1, "KICK_MESSAGE");
if (get_pcvar_num(amxbans_debug) == 1)
{
log_amx("[AMXBANS DEBUG] Delayed Kick ID: <%s>", id_str);
}
server_cmd("kick #%d %s", userid, kick_message);
return 0;
}
public cmdLst(id, level, cid)
{
new players[32];
new inum = 0;
new authid[32];
new name[32];
new ip[50];
get_players(players, inum, "", "");
console_print(id, "playerinfo");
new a = 0;
while (a < inum)
{
get_user_ip(players[a], ip, 49, 1);
get_user_authid(players[a], authid, 31);
get_user_name(players[a], name, 31);
console_print(id, "#WM#%s#WMW#%s#WMW#%s#WMW#", name, authid, ip);
a++;
}
return 1;
}
public get_higher_ban_time_admin_flag()
{
new flags[24];
get_pcvar_string(higher_ban_time_admin, flags, 23);
return read_flags(flags);
}
public get_admin_mole_access_flag()
{
new flags[24];
get_pcvar_string(admin_mole_access, flags, 23);
return read_flags(flags);
}
public locate_player(id, String:identifier[])
{
!!! Removed Phi
new var2 = g_ban_type;
var2[0] = 97356;
new player = find_player("c", identifier);
if (!player)
{
player = find_player("bl", identifier);
}
if (!player)
{
player = find_player("d", identifier);
if (player)
{
new var3 = g_ban_type;
var3[0] = 97392;
}
}
if (!player && identifier[0] == 35 && identifier[1])
{
player = find_player("k", str_to_num(identifier[1]));
}
if (player)
{
if (get_user_flags(player, 0) & 1)
{
new name[32];
get_user_name(player, name, 31);
if (id)
{
console_print(id, "[AMXBANS] Client \"%s\" has immunity", name);
}
else
{
server_print("[AMXBANS] Client \"%s\" has immunity", name);
}
return -1;
}
if (is_user_bot(player))
{
new name[32];
get_user_name(player, name, 31);
if (id)
{
console_print(id, "[AMXBANS] Client \"%s\" is a bot", name);
}
else
{
server_print("[AMXBANS] Client \"%s\" is a bot", name);
}
return -1;
}
}
return player;
}
public setHighBantimes()
{
!!! Removed Phi
if (argc < 1 || argc > 12)
{
log_amx("[AMXBANS] You have more than 12 or less than 1 bantimes set in amx_sethighbantimes");
log_amx("[AMXBANS] Loading default bantimes");
loadDefaultBantimes(1);
return 1;
}
new i = 0;
new num[32];
new flag[32];
while (i < argc)
{
read_argv(i + 1, arg, 31);
parse(arg, num, 31, flag, 31);
if (equali(flag, "m", 0))
{
g_HighBanMenuValues[i] = str_to_num(num);
}
else
{
if (equali(flag, "h", 0))
{
g_HighBanMenuValues[i] = str_to_num(num) * 60;
}
if (equali(flag, "d", 0))
{
g_HighBanMenuValues[i] = str_to_num(num) * 1440;
}
if (equali(flag, "w", 0))
{
g_HighBanMenuValues[i] = str_to_num(num) * 10080;
}
}
i++;
}
return 1;
}
public setLowBantimes()
{
!!! Removed Phi
if (argc < 1 || argc > 12)
{
log_amx("[AMXBANS] You have more than 12 or less than 1 bantimes set in amx_setlowbantimes");
log_amx("[AMXBANS] Loading default bantimes");
loadDefaultBantimes(2);
return 1;
}
new i = 0;
new num[32];
new flag[32];
while (i < argc)
{
read_argv(i + 1, arg, 31);
parse(arg, num, 31, flag, 31);
if (equali(flag, "m", 0))
{
g_LowBanMenuValues[i] = str_to_num(num);
}
else
{
if (equali(flag, "h", 0))
{
g_LowBanMenuValues[i] = str_to_num(num) * 60;
}
if (equali(flag, "d", 0))
{
g_LowBanMenuValues[i] = str_to_num(num) * 1440;
}
if (equali(flag, "w", 0))
{
g_LowBanMenuValues[i] = str_to_num(num) * 10080;
}
}
i++;
}
return 1;
}
loadDefaultBantimes(num)
{
!!! Removed Phi
if (num == 1 || num)
{
server_cmd("amx_sethighbantimes 5 60 240 600 6000 0 -1");
}
if (num == 2 || num)
{
server_cmd("amx_setlowbantimes 5 30 60 480 600 1440 -1");
}
return 0;
}
MySqlX_ThreadError(String:szQuery[], String:error[], errnum, failstate, id)
{
if (failstate == -2)
{
log_amx("%L", 0, "TCONNECTION_FAILED");
}
else
{
if (failstate == -1)
{
log_amx("%L", 0, "TQUERY_FAILED");
}
}
log_amx("%L", 0, "TQUERY_ERROR", id);
log_amx("%L", 0, "TQUERY_MSG", error, errnum);
log_amx("%L", 0, "TQUERY_STATEMENT", szQuery);
return 0;
}
public plugin_end()
{
SQL_FreeHandle(g_SqlX);
return 0;
}