I don't think inflictor will equal to attacker.
Also, if you're changing a parameter you have to return HAM_HANDLED. Otherwise it will be ignored by Ham.
Here's another way, don't know which is better/more efficient though.
Code:
#include <amxmodx>
#include <hamsandwich>
const m_pPlayer = 41;
const CBasePlayerItemOffset = 4;
new bool:gSlashing[33];
public plugin_init() {
RegisterHam(Ham_TakeDamage, "player", "fwdTakeDamage");
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fwdPrimaryAttackKnifePre");
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fwdPrimaryAttackKnifePost", 1);
}
public fwdTakeDamage(Victim, Inflictor, Attacker, Float:Damage, Damagebits) {
if ( is_user_connected(Attacker) && gSlashing[Attacker] ) {
SetHamParamFloat(4, Damage * 1.5);
return HAM_HANDLED;
}
return HAM_IGNORED;
}
public fwdPrimaryAttackKnifePre(ent)
gSlashing[get_pdata_cbase(ent, m_pPlayer, CBasePlayerItemOffset)] = true;
public fwdPrimaryAttackKnifePost(ent)
gSlashing[get_pdata_cbase(ent, m_pPlayer, CBasePlayerItemOffset)] = false;
__________________