PHP Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <xs>
#define PLUGIN "Test explosion"
#define VERSION "1.0"
#define AUTHOR "Natsheh"
const m_Player = 41;
const WEAPON_LINUX_OFFSET_EXTRA = 4;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fwKnifeSlashPost",1)
}
public fwKnifeSlashPost(ent)
{
new id = get_pdata_cbase(ent, m_Player, WEAPON_LINUX_OFFSET_EXTRA);
new iOrigin[3], Float:fOrigin[3];
get_user_origin(id, iOrigin, Origin_AimEndEyes);
IVecFVec(iOrigin, fOrigin);
entity_explosion_knockback(id, fOrigin);
}
entity_explosion_knockback(victim, Float:fExpOrigin[3], Float:fExpShockwaveRadius=500.0, Float:fExpShockwavePower=500.0)
{
new Float:fOrigin[3], Float:fDistVec[3];
pev(victim, pev_origin, fOrigin);
xs_vec_sub(fOrigin, fExpOrigin, fDistVec);
new Float:g_fTemp;
// victim is in the range of the shockwave explosion!
if((g_fTemp=xs_vec_len(fDistVec)) <= fExpShockwaveRadius)
{
new Float:fPower = fExpShockwavePower * ( 1.0 - ( g_fTemp / floatmax(fExpShockwaveRadius, 1.0) ) ), Float:fVelo[3], Float:fKnockBackVelo[3];
pev(victim, pev_velocity, fVelo);
xs_vec_normalize(fDistVec, fKnockBackVelo);
xs_vec_mul_scalar(fKnockBackVelo, fPower, fKnockBackVelo);
xs_vec_add(fVelo, fKnockBackVelo, fVelo);
set_pev(victim, pev_velocity, fVelo);
//client_print(victim, print_chat, "fVelo : %.2f %.2f %.2f fPower: %.2f fTemp: %.2f", fVelo[0], fVelo[1], fVelo[2], fPower, g_fTemp);
}
}