#include <amxmodx>
#include <amxmisc>
#include <xs>
#include <hamsandwich>
#include <fakemeta>
#define PLUGIN "Anti Recoil"
#define VERSION "1.0"
#define AUTHOR "mde"
#define FLAG ADMIN_LEVEL_B
new g_norecoil[33];
const WEAPONS_BITSUM = (1<<CSW_KNIFE|1<<CSW_HEGRENADE|1<<CSW_FLASHBANG|1<<CSW_SMOKEGRENADE|1<<CSW_C4);
new Float: cl_pushangle[33][3];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("amx_recoil" , "cmd_recoil")
new weapon_name[24];
for (new i = 1; i <= 30; i++)
{
if (!(WEAPONS_BITSUM & 1 << i) && get_weaponname(i, weapon_name, 23))
{
RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "fw_Weapon_PrimaryAttack_Pre");
RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "fw_Weapon_PrimaryAttack_Post", 1);
}
}
}
public cmd_recoil(id)
{
if(get_user_flags(id) & FLAG)
{
new i_Menu = menu_create("No-Recoil szabályozás", "recoil_hand")
new s_Players[32], i_Num, i_Player, msg[222]
new s_Name[32], s_Player[10]
get_players(s_Players, i_Num)
for (new i; i < i_Num; i++)
{
i_Player = s_Players[i]
get_user_name(i_Player, s_Name, charsmax(s_Name))
num_to_str(i_Player, s_Player, charsmax(s_Player))
if(g_norecoil[i_Player])
{
formatex(msg, charsmax(msg), "%s \d[\rBekapcsolva\d]", s_Name)
menu_additem(i_Menu, msg, s_Player, 0)
}
else
{
formatex(msg, charsmax(msg), "%s \d[\rKikapcsolva\d]", s_Name)
menu_additem(i_Menu, msg, s_Player, 0)
}
menu_setprop(i_Menu, MPROP_BACKNAME, "\yVissza");
menu_setprop(i_Menu, MPROP_NEXTNAME, "\yTovább");
menu_setprop(i_Menu, MPROP_EXITNAME, "\yKilépés");
}
menu_display(id, i_Menu, 0)
}
}
public recoil_hand(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Player = str_to_num(s_Data)
new name[32]
new name2[32]
get_user_name(id, name, 31)
get_user_name(i_Player, name2, 31)
if(g_norecoil[i_Player])
{
g_norecoil[i_Player] = false
cmd_recoil(id)
log_to_file("Recoil.log", "%s kikapcsolta a norecoilt neki: %s ", name, name2)
}
else
{
g_norecoil[i_Player] = true
cmd_recoil(id)
log_to_file("Recoil.log", "%s bekapcsolta a norecoilt neki: %s ", name, name2)
}
return PLUGIN_HANDLED
}
public fw_Weapon_PrimaryAttack_Pre(entity)
{
new id = pev(entity, pev_owner);
if (g_norecoil[id])
{
pev(id, pev_punchangle, cl_pushangle[id]);
return HAM_IGNORED;
}
return HAM_IGNORED;
}
public fw_Weapon_PrimaryAttack_Post(entity)
{
new id = pev(entity, pev_owner);
if (g_norecoil[id])
{
new Float: push[3];
pev(id, pev_punchangle, push);
xs_vec_sub(push, cl_pushangle[id], push);
xs_vec_mul_scalar(push, 0.0, push);
xs_vec_add(push, cl_pushangle[id], push);
set_pev(id, pev_punchangle, push);
return HAM_IGNORED;
}
return HAM_IGNORED;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/