Hali.
Ez az a plugin amikor hátba késelni nem lehet?
Ha igen akkor valaki bele tudja írni azt, hogy aki hátba akar valait késelni akkor eldobja az adott játékost aki hátba akart szúrni, vagy levesz tőle 25hp-t. (KNIFE SZERVERRE KELL).
Kód:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#define PLUGIN "Anti Behind"
#define VERSION "1.1"
#define AUTHOR "Bobs"
#define fm_get_user_team(%1) get_pdata_int(%1, FM_OFFSET_TEAM)
#define FM_OFFSET_TEAM 114
#define BACKSTAB_ANGLE 93.0 //Changeable
#define BACKSTAB_MAX_DAMAGE 0.0 //Changeable
#define FFADE_IN 0x0000
#define FFADE_OUT 0x0001
new gmsgScreenFade;
new gMaxPlayers;
new bool:gBackStabing[33];
new cvar_slap;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_forward(FM_CmdStart, "Fwd_CmdStart");
cvar_slap = register_cvar("ab_slap", "1");
RegisterHam(Ham_TakeDamage, "player", "Event_TakeDamage");
gMaxPlayers = global_get(glb_maxClients);
gmsgScreenFade = get_user_msgid("ScreenFade");
}
public Fwd_CmdStart(id, uc_handle, uc_seed)
{
if(!is_user_alive(id))
return FMRES_IGNORED;
static Float:fViewAngles[3], iButton, iTemp;
get_uc(uc_handle, UC_ViewAngles, fViewAngles);
iButton = get_uc(uc_handle, UC_Buttons);
if(((iButton & IN_ATTACK) || (iButton & IN_ATTACK2)) && get_user_weapon(id, iTemp, iTemp) == CSW_KNIFE)
{
static iEnt, Float:fOrigin[3];
pev(id, pev_origin, fOrigin);
iEnt = fm_trace_target(id, fOrigin, 100);
if(!(1 <= iEnt <= gMaxPlayers))
return FMRES_IGNORED;
static Float:fTViewAngles[3];
pev(iEnt, pev_v_angle, fTViewAngles);
static Float:fMinAngle, Float:fMaxAngle;
fMinAngle = fViewAngles[1] - BACKSTAB_ANGLE;
fMaxAngle = fViewAngles[1] + BACKSTAB_ANGLE;
if(fMinAngle <= fTViewAngles[1] <= fMaxAngle)
{
gBackStabing[id] = true;
}
else
{
gBackStabing[id] = false;
}
}
return FMRES_IGNORED;
}
public Event_TakeDamage(this, inflictor, attacker, Float:damage, dmgbits)
{
if(inflictor == 0)
return HAM_IGNORED;
if(!is_user_alive(attacker) || !gBackStabing[attacker] || (fm_get_user_team(this) == fm_get_user_team(attacker)))
return HAM_IGNORED;
if(damage > BACKSTAB_MAX_DAMAGE)
{
SetHamParamFloat(4, BACKSTAB_MAX_DAMAGE);
set_task(0.1, "FadeScreenAttacker", attacker);
set_task(0.1, "FadeScreenVictim", this);
}
return HAM_HANDLED;
}
stock fm_trace_target(ignoreent, const Float:start[3], distance)
{
new Float:fAim[3], Float:end[3];
velocity_by_aim(ignoreent, distance, fAim);
end[0] = start[0] + fAim[0];
end[1] = start[1] + fAim[1];
end[2] = start[2] + fAim[2];
engfunc(EngFunc_TraceLine, start, end, ignoreent == -1 ? 1 : 0, ignoreent, 0);
new ent = get_tr2(0, TR_pHit);
return pev_valid(ent) ? ent : 0;
}
public FadeScreenAttacker(idattacker)
{
if(!is_user_connected(idattacker))
{
return PLUGIN_HANDLED;
}
if(get_pcvar_num(cvar_slap))
{
user_slap(idattacker, 0);
user_slap(idattacker, 0);
user_slap(idattacker, 0);
}
message_begin(MSG_ONE, gmsgScreenFade, {0,0,0}, idattacker);
write_short(2000); // Timer ex: 1000 = 1 sec
write_short(2000); // Timer ex: 1000 = 1 sec
write_short(FFADE_IN);
write_byte(139); // Red
write_byte(26); // Green
write_byte(26); // Blue
write_byte(255); // Transperency
message_end();
return PLUGIN_HANDLED;
}
public FadeScreenVictim(id)
{
if(!is_user_connected(id))
{
return PLUGIN_HANDLED;
}
message_begin(MSG_ONE, gmsgScreenFade, {0,0,0}, id);
write_short(600); // Timer ex: 1000 = 1 sec
write_short(600); // Timer ex: 1000 = 1 sec
write_short(FFADE_IN);
write_byte(20); // Red
write_byte(20); // Green
write_byte(255); // Blue
write_byte(175); // Transperency
message_end();
return PLUGIN_HANDLED
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1030\\ f0\\ fs16 \n\\ par }
*/