poloborota, попробуйте этот.
Код:
// Copyright © 2016 Vaqtincha
#define ACCESS ADMIN_BAN
new BAN_CMD[16] = "amx_ban"
new REASON[64] = "KiW OtSyUdoVa!"
const MODE_1_TIME = 10
const MODE_2_TIME = 20
const MODE_3_TIME = 30
#define VERSION "0.0.1"
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#define MAX_PLAYERS 32
#define IsPlayer(%1) (1<= %1 <= g_iMaxPlayers)
#define get_weapon_owner(%1) (get_pdata_cbase(%1, m_pPlayer, XO_WEAPON) > 0)
const m_pPlayer = 41
const m_flNextAttack = 83
const m_flNextSecondaryAttack = 47
const m_flNextPrimaryAttack = 46
const XO_WEAPON = 4
new g_iMaxPlayers
enum _:Modes{
NORMAL,
MODE_1,
MODE_2,
MODE_3
}
new g_iMode[MAX_PLAYERS + 1] = {Modes}
public plugin_init()
{
register_plugin("Ban Fire Pistol", VERSION, "Vaqtincha")
RegisterHam(Ham_TraceAttack, "player", "TraceAttack", true)
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_usp", "SecondaryAttack_Post", true)
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_glock18", "SecondaryAttack_Post", true)
RegisterHam(Ham_Item_Deploy, "weapon_usp", "ItemDeploy_Post", true)
RegisterHam(Ham_Item_Deploy, "weapon_glock18", "ItemDeploy_Post", true)
g_iMaxPlayers = get_maxplayers()
}
public TraceAttack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)
{
if(IsPlayer(attacker))
{
switch(g_iMode[attacker])
{
case NORMAL: return
case MODE_1: server_cmd("%s #%d %d ^"%s^"", BAN_CMD, get_user_userid(victim), MODE_1_TIME, REASON)
case MODE_2: server_cmd("%s #%d %d ^"%s^"", BAN_CMD, get_user_userid(victim), MODE_2_TIME, REASON)
case MODE_3: server_cmd("%s #%d %d ^"%s^"", BAN_CMD, get_user_userid(victim), MODE_3_TIME, REASON)
default: return
}
}
}
public ItemDeploy_Post(wEnt)
{
if(wEnt <=0)
return
new id = get_weapon_owner(wEnt)
if(get_user_flags(id) & ACCESS)
{
switch(g_iMode[id])
{
case NORMAL: client_print(id, print_center, "Normal Fire")
case MODE_1: client_print(id, print_center, "Ban Fire^r^nTime: %d", MODE_1_TIME)
case MODE_2: client_print(id, print_center, "Ban Fire^r^nTime: %d", MODE_2_TIME)
case MODE_3: client_print(id, print_center, "Ban Fire^r^nTime: %d", MODE_3_TIME)
default: return
}
set_pdata_float(id, m_flNextAttack, 0.0)
set_pdata_float(wEnt, m_flNextPrimaryAttack, -1.0, XO_WEAPON)
}
}
public SecondaryAttack_Post(wEnt)
{
if(wEnt <=0)
return
new id = get_weapon_owner(wEnt)
if(get_user_flags(id) & ACCESS)
{
++g_iMode[id]
switch(g_iMode[id])
{
case NORMAL: client_print(id, print_center, "Normal Fire")
case MODE_1: client_print(id, print_center, "Ban Fire^r^nTime: 10")
case MODE_2: client_print(id, print_center, "Ban Fire^r^nTime: 20")
case MODE_3: client_print(id, print_center, "Ban Fire^r^nTime: 30")
default:{
g_iMode[id] = NORMAL
client_print(id, print_center, "Normal Fire")
}
}
set_pdata_float(id, m_flNextAttack, 0.5)
set_pdata_float(wEnt, m_flNextSecondaryAttack, 0.5, XO_WEAPON)
}
}