Код за потвърждение: Избери целия код
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <cstrike>
#include <hamsandwich>
#include <colorchat>
#define PLUGIN "[JB] CT BAN"
#define VERSION "1.3"
#define AUTHOR "Natsheh"
#define TASK_UNBANCT 876542
#define ADMIN_FLAG ADMIN_BAN
#define set_flag(%1,%2) (%1 |= (1<<(%2&31)))
#define remove_flag(%1,%2) (%1 &= ~(1<<(%2&31)))
#define check_flag(%1,%2) (%1 & (1<<(%2&31)))
new g_CTBanned;
new g_vault;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("jb_banct", "concmd_banct", ADMIN_FLAG, "Ban a client from CT!")
RegisterHam(Ham_Respawn, "player", "fw_player_respawn_post", 1)
RegisterHam(Ham_Spawn, "player", "fw_player_respawn_post", 1)
g_vault = nvault_open("jailbreak_ctban");
if(g_vault == INVALID_HANDLE)
{
set_fail_state("Error opening nVault!");
}
}
public plugin_end()
{
nvault_close(g_vault);
}
public fw_player_respawn_post(id)
{
if(get_user_team(id) == CS_TEAM_CT && check_flag(g_CTBanned,id))
{
jointeam_ct(id)
}
}
jointeam_ct(id)
{
new sAuthid[32];
get_user_authid(id, sAuthid, 31)
engclient_cmd(id, "jointeam", "1")
cs_set_user_team(id, CS_TEAM_T);
if(is_user_alive(id)) user_kill(id);
new sValue[64], timestmp;
nvault_lookup(g_vault, sAuthid, sValue, charsmax(sValue), timestmp)
new iValue = str_to_num(sValue);
if(iValue)
{
Transfer_seconds(((iValue + timestmp) - get_systime()), sValue, charsmax(sValue))
ColorChat(id,TEAM_COLOR, "^3Sorry^4, ^1But you are ^4banned ^1from the CT! ^3(^4Ban Lift : %s^3)", sValue)
}
else ColorChat(id,TEAM_COLOR, "^3Sorry^4, ^1But you are ^4banned ^1from the CT! ^3(^4Ban Lift : Never^3)")
}
public client_putinserver(id)
{
if(is_user_bot(id)) return;
check_CTBanned(id);
}
public client_disconnect(id)
{
if(is_user_bot(id)) return;
if(task_exists(id+TASK_UNBANCT))
remove_task(id+TASK_UNBANCT)
}
check_CTBanned(id)
{
new sAuthid[32], sValue[16], iTimestamp;
get_user_authid(id, sAuthid, charsmax(sAuthid))
if(nvault_lookup(g_vault, sAuthid, sValue, charsmax(sValue), iTimestamp))
{
new iValue = str_to_num(sValue);
if(!iValue)
{
set_flag(g_CTBanned,id);
return;
}
new length = ((iTimestamp + iValue) - get_systime());
if( length <= 0 )
{
nvault_remove(g_vault, sAuthid)
}
else
{
set_task(float(length), "task_unBanCT", id+TASK_UNBANCT)
set_flag(g_CTBanned,id);
return;
}
}
remove_flag(g_CTBanned,id);
}
public task_unBanCT(const taskid)
{
new id = taskid - TASK_UNBANCT;
new sAuthid[32];
get_user_authid(id, sAuthid, charsmax(sAuthid))
nvault_remove(g_vault, sAuthid)
ColorChat(id,TEAM_COLOR, "You are no longer banned from the CT!")
new sName[32];
get_user_name(id, sName, charsmax(sName))
remove_flag(g_CTBanned,id);
new players[32], pnum;
get_players(players, pnum, "ch");
for(new i, player; i < pnum; i++)
{
player = players[i];
if(id != player) ColorChat(player,TEAM_COLOR, "^4%s ^1is no longer ^3banned ^1from the CT!", sName)
}
remove_task(taskid);
}
public concmd_banct(id, level, cid)
{
if(!cmd_access(id, level, cid, 2))
return 1;
new sTarget[32];
read_argv(1, sTarget, charsmax(sTarget))
new player = cmd_target(id, sTarget, CMDTARGET_NO_BOTS | CMDTARGET_OBEY_IMMUNITY);
if(!player) return 1;
new sLength[64];
read_argv(2, sLength, charsmax(sLength))
new iLength = str_to_num(sLength);
if(iLength < 0 || !is_str_num(sLength))
{
console_print(id, "Please add a positive length time (inSecond's) Or 0 - for permanent!")
return 1;
}
new sAuthid[64];
get_user_authid(player, sAuthid, charsmax(sAuthid))
new bool:is_CTBanned = check_flag(g_CTBanned,player) ? true:false
if(!is_CTBanned)
{
set_flag(g_CTBanned,player)
nvault_set(g_vault, sAuthid, sLength)
if(iLength > 0)
{
set_task(float(iLength), "task_unBanCT", player+TASK_UNBANCT)
Transfer_seconds(iLength, sAuthid, charsmax(sAuthid))
}
if(get_user_team(player) == CS_TEAM_CT)
{
jointeam_ct(player)
}
}
else
{
remove_flag(g_CTBanned,player);
nvault_remove(g_vault, sAuthid)
}
is_CTBanned = check_flag(g_CTBanned,player) ? true:false
new sName[32], sAdminname[32];
get_user_name(id, sAdminname, charsmax(sAdminname))
get_user_name(player, sName, charsmax(sName))
formatex(sLength, charsmax(sLength), "^4Ban Lift: %s ", iLength ? sAuthid:"Never")
ColorChat(0,TEAM_COLOR, "^4%s ^1has been %s ^1from the CT %s^1By ADMIN ^3%s!", sName, is_CTBanned ? "^3Banned":"^4unBanned", is_CTBanned ? sLength:"", sAdminname)
formatex(sLength, charsmax(sLength), " LENGTH: %s", iLength ? sAuthid:"Permanent")
log_amx("ADMIN %s HAS %s %s FROM THE CT%s!", sAdminname, is_CTBanned ? "^3Banned":"^4unBanned", sName, is_CTBanned ? sLength:"")
return 1;
}
Transfer_seconds(Seconds, string[], len)
{
if(Seconds < 0) return 0;
new hours = floatround(Seconds / 3600.0, floatround_floor), iLen
Seconds -= hours * 3600;
new sString[64]
if(hours)
{
iLen = formatex(sString, charsmax(sString), "%d Hour%s, ", hours, hours > 1 ? "s":"");
}
new minutes = floatround(Seconds / 60.0, floatround_floor);
Seconds -= minutes * 60;
if(minutes)
{
iLen += formatex(sString[iLen], charsmax(sString), "%d Minute%s, ", minutes, minutes > 1 ? "s":"");
}
iLen += formatex(sString[iLen], charsmax(sString), "%d Second%s.", Seconds, Seconds > 1 ? "s":"");
copy(string, len, sString);
return 1;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ ansicpg1252\\ deff0{\\ fonttbl{\\ f0\\ fnil\\ fcharset0 Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/