Yes but automatic show with hud and not use sql if is possible
PHP Code:
public prebanned_check(id)
{
if(is_user_bot(id) || get_user_flags(id) & ADMIN_LEVEL_A)
return PLUGIN_HANDLED
new player_steamid[32], 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' )",tbl_banhist, player_steamid, player_ip)
data[0] = id
SQL_ThreadQuery(g_SqlX, "prebanned_check_", query, data, 1)
return PLUGIN_HANDLED
}
public prebanned_check_(failstate, Handle:query, error[], errnum, data[], size)
{
new id = data[0]
if (failstate)
{
new szQuery[256]
MySqlX_ThreadError(szQuery, error, errnum, failstate, 16)
}
else
{
if(!SQL_NumResults(query))
{
return PLUGIN_HANDLED
}
else
{
new admin_nick[32]
new current_time_int, ban_count, ban_created, banned_days_ago
current_time_int = get_systime(0)
new preBanTime = get_pcvar_num(max_time_to_show_preban)
while (SQL_MoreResults(query))
{
ban_created = SQL_ReadResult(query, 0)
SQL_ReadResult(query, 1, admin_nick, 31)
banned_days_ago = (current_time_int - ban_created) / 86400
if (banned_days_ago > preBanTime)
{
}
else
{
ban_count++
}
SQL_NextRow(query)
}
new name[32], players[32], inum
get_user_name(id, name, 31)
get_players(players, inum)
for (new i = 0; i < inum; ++i)
{
if (get_user_flags(players[i]) & ADMIN_CHAT)
{
set_hudmessage(255, 0, 0, 0.05, 0.30, 0, 6.0, 10.0 , 0.5, 0.15, -1)
ShowSyncHudMsg(players[i], g_MyMsgSync, "!!!! WARNING !!!!^n'%s' was banned '%i' times before!", name, ban_count)
}
}
}
}
return PLUGIN_HANDLED
}
public check_player(id)
{
if(is_user_bot(id) || get_user_flags(id) & ADMIN_LEVEL_A)
return PLUGIN_HANDLED
new player_steamid[32], player_ip[20]
get_user_authid(id, player_steamid, 31)
get_user_ip(id, player_ip, 19, 1)
get_user_info(id, "lanka", sInfo[id], 20);
if(containi(sInfo[id], lan_sql_server) != -1)
{
server_cmd("kick #%d ^"[Server Name] You are banned :( Check your console.^"", get_user_userid(id));
}
new query[4096]
new data[1]
format(query, 4095, "SELECT bid,ban_created,ban_length,ban_reason,admin_nick,admin_ip,player_nick,player_id,player_ip,server_name,ban_type FROM `%s` WHERE ( player_id='%s' AND ban_type='S' ) OR ( player_ip='%s' AND ban_type='SI' )",tbl_bans, player_steamid, player_ip)
data[0] = id
SQL_ThreadQuery(g_SqlX, "check_player_", query, data, 1)
return PLUGIN_HANDLED
}
public check_player_(failstate, Handle:query, error[], errnum, data[], size)
{
new id = data[0]
if (failstate)
{
new szQuery[256]
MySqlX_ThreadError( szQuery, error, errnum, failstate, 17 )
}
else
{
if(!SQL_NumResults(query))
{
return PLUGIN_HANDLED
}
else
{
new bid[20], ban_created[20], ban_length[50], ban_reason[255], admin_nick[100],admin_ip[30],ban_type[4]
new player_nick[50],player_steamid[50],player_ip[30],server_name[100]
new Qbid = SQL_FieldNameToNum(query, "bid")
new Qplayer_ip = SQL_FieldNameToNum(query, "player_ip")
new Qplayer_id = SQL_FieldNameToNum(query, "player_id")
new Qplayer_nick = SQL_FieldNameToNum(query, "player_nick")
new Qadmin_ip = SQL_FieldNameToNum(query, "admin_ip")
new Qadmin_nick = SQL_FieldNameToNum(query, "admin_nick")
new Qban_type = SQL_FieldNameToNum(query, "ban_type")
new Qban_reason = SQL_FieldNameToNum(query, "ban_reason")
new Qban_created = SQL_FieldNameToNum(query, "ban_created")
new Qban_length = SQL_FieldNameToNum(query, "ban_length")
new Qserver_name = SQL_FieldNameToNum(query, "server_name")
SQL_ReadResult(query, Qbid, bid, sizeof(bid)-1);
SQL_ReadResult(query, Qplayer_ip, player_ip, sizeof(player_ip)-1);
SQL_ReadResult(query, Qplayer_id, player_steamid, sizeof(player_steamid)-1);
SQL_ReadResult(query, Qplayer_nick, player_nick, sizeof(player_nick)-1);
SQL_ReadResult(query, Qadmin_ip, admin_ip, sizeof(admin_ip)-1);
SQL_ReadResult(query, Qadmin_nick, admin_nick, sizeof(admin_nick)-1);
SQL_ReadResult(query, Qban_type, ban_type, sizeof(ban_type)-1);
SQL_ReadResult(query, Qban_reason, ban_reason, sizeof(ban_reason)-1);
SQL_ReadResult(query, Qban_created, ban_created, sizeof(ban_created)-1);
SQL_ReadResult(query, Qban_length, ban_length, sizeof(ban_length)-1);
SQL_ReadResult(query, Qserver_name, server_name, sizeof(server_name)-1);
new current_time_int = get_systime(0)
new bid_int = str_to_num(bid)
new ban_created_int = str_to_num(ban_created)
new ban_length_int = str_to_num(ban_length) * 60 // in secs
log_amx("%i", ban_length_int)
// A ban was found for the connecting player!! Lets see how long it is or if it has expired
if ((ban_length_int == 0) || (ban_created_int == 0) || (ban_created_int+ban_length_int > current_time_int))
{
new complain_url[256]
get_pcvar_string(complainurl ,complain_url,255)
client_cmd(id, "echo [Server Name] ===============================================")
client_cmd(id, "echo [Server Name] %L",LANG_PLAYER,"MSG_8", admin_nick)
if (ban_length_int==0)
{
client_cmd(id, "echo [Server Name] %L",LANG_PLAYER,"MSG_10")
}
else
{
new cTimeLength[128]
new iSecondsLeft = (ban_created_int + ban_length_int - current_time_int)
get_time_length(id, iSecondsLeft, timeunit_seconds, cTimeLength, 127)
client_cmd(id, "echo [Server Name] %L" ,LANG_PLAYER, "MSG_12", cTimeLength)
}
client_cmd(id, "echo [Server Name] %L", LANG_PLAYER, "MSG_13", player_nick)
client_cmd(id, "echo [Server Name] %L", LANG_PLAYER, "MSG_2", ban_reason)
client_cmd(id, "echo [Server Name] %L", LANG_PLAYER, "MSG_7", complain_url)
client_cmd(id, "echo [Server Name] %L", LANG_PLAYER, "MSG_4", player_steamid)
client_cmd(id, "echo [Server Name] %L", LANG_PLAYER, "MSG_5", player_ip)
client_cmd(id, "echo [Server Name] ===============================================")
new kick_message[128]
new userid = get_user_userid(id)
format(kick_message,127,"%L", LANG_PLAYER,"KICK_MESSAGE")
server_cmd("kick #%d %s",userid, kick_message)
return PLUGIN_HANDLED
}
else // The ban has expired
{
client_cmd(id, "echo [Server Name] %L",LANG_PLAYER,"MSG_11")
new unban_created = get_systime(0)
//make sure there are no single quotes in these 4 vars
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]
format(query, 511, "INSERT INTO `%s` (player_id,player_ip,player_nick,admin_nick,admin_ip,ban_type,ban_reason,ban_created,ban_length,server_name,unban_created,unban_reason,unban_admin_nick) VALUES('%s','%s','%s','%s','%s','%s','%s','%d','%s','%s','%i','Bantime expired','amxbans')",tbl_banhist, player_steamid, player_ip, player_nick, admin_nick, admin_ip, ban_type, ban_reason, ban_created_int, ban_length, server_name, unban_created)
new data[2]
data[0] = id
data[1] = bid_int
SQL_ThreadQuery(g_SqlX, "insert_to_banhistory", query, data, 2)
log_amx("%i", bid_int)
}
}
}
return PLUGIN_HANDLED
}
public insert_to_banhistory(failstate, Handle:query, error[], errnum, 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'",tbl_bans, bid)
data[0] = id
SQL_ThreadQuery(g_SqlX, "delete_expired_ban", query, data, 1)
}
return PLUGIN_HANDLED
}
public delete_expired_ban(failstate, Handle:query, error[], errnum, data[], size)
{
if (failstate)
{
new szQuery[256]
MySqlX_ThreadError(szQuery, error, errnum, failstate, 19)
}
}