Код за потвърждение: Избери целия код
#include <dhudmessage>
#include <xs>
new MsgID, cvar_stabb_force
public plugin_init()
{
register_plugin("Knife stabb", "1.0", "KORD_12.7 & { S p @ W n } +++")
RegisterHam(Ham_TakeDamage, "player", "Player_TakeDamage")
cvar_stabb_force = register_cvar("amx_knife_stabb_force", "5");
MsgID = get_user_msgid("ScreenFade")
}
public Player_TakeDamage(iVictim, iInflictor, iAttacker, Float: flDamage, const bitsDamageType)
{
new Float: vecSrc[3];
new Float: vecAngles[3];
new Float: vecForward[3];
new Float: vecAttackDir[3];
GetCenter(iVictim, vecSrc);
GetCenter(iInflictor, vecAttackDir);
xs_vec_sub(vecAttackDir, vecSrc, vecAttackDir);
xs_vec_normalize(vecAttackDir, vecAttackDir);
pev(iVictim, pev_angles, vecAngles);
engfunc(EngFunc_MakeVectors, vecAngles);
global_get(glb_v_forward, vecForward);
xs_vec_mul_scalar(vecAttackDir, -1.0, vecAttackDir);
if (xs_vec_dot(vecForward, vecAttackDir) > 0.3 )
{
if(get_user_team(iVictim) == get_user_team(iAttacker))
{
new Float:vec[3], Float:oldvelo[3]
get_user_velocity(iAttacker, oldvelo)
create_velocity_vector(iAttacker, iVictim , vec)
vec[0] += oldvelo[0]
vec[1] += oldvelo[1]
set_user_velocity(iAttacker, vec)
SetUserScreenFade(iAttacker)
return HAM_IGNORED
}
new Nick[32]
get_user_name(iAttacker, Nick, charsmax(Nick))
set_dhudmessage(127, 127, 127, -1.0, 0.25, 0, 1.5, 1.0, 0.5, 1.2, false)
show_dhudmessage(iVictim, "%s has stabbed knife in your back!", Nick)
SetUserScreenFade(iVictim)
return HAM_SUPERCEDE
}
return HAM_IGNORED
}
GetCenter(const iEntity, Float: vecSrc[3])
{
new Float: vecAbsMax[3];
new Float: vecAbsMin[3];
pev(iEntity, pev_absmax, vecAbsMax);
pev(iEntity, pev_absmin, vecAbsMin);
xs_vec_add(vecAbsMax, vecAbsMin, vecSrc);
xs_vec_mul_scalar(vecSrc, 0.5, vecSrc);
}
SetUserScreenFade(id)
{
message_begin( MSG_ONE, MsgID, _, id )
write_short( 1<<10 )
write_short( 1<<11 )
write_short( 0x0000 )
write_byte( 255 )
write_byte( 0 )
write_byte( 0 )
write_byte( 75 )
message_end()
}
stock create_velocity_vector(victim,attacker,Float:velocity[3])
{
if(!is_user_alive(victim) || !is_user_alive(attacker)) return 0
new Float:vicorigin[3], Float:attorigin[3]
entity_get_vector(victim, EV_VEC_origin , vicorigin)
entity_get_vector(attacker , EV_VEC_origin , attorigin)
new Float:origin2[3]
origin2[0] = vicorigin[0] - attorigin[0]
origin2[1] = vicorigin[1] - attorigin[1]
new Float:largestnum = 0.0
if(floatabs(origin2[0])>largestnum) largestnum = floatabs(origin2[0])
if(floatabs(origin2[1])>largestnum) largestnum = floatabs(origin2[1])
origin2[0] /= largestnum
origin2[1] /= largestnum
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_stabb_force) * 3000) ) / get_entity_distance(victim , attacker)
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_stabb_force) * 3000) ) / get_entity_distance(victim , attacker)
if(velocity[0] <= 20.0 || velocity[1] <= 20.0) velocity[2] = random_float(5.0, 7.0)
return 1
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ ansicpg1251\\ deff0\\ deflang1026{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ f0\\ fs16 \n\\ par }
*/