I mean find
PHP Code:
public fw_TraceAttack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damage_type)
{
// Non-player damage or self damage
if (victim == attacker || !is_user_connected(attacker))
return HAM_IGNORED;
// New round starting or round ended
if (g_newround || g_endround)
return HAM_SUPERCEDE;
// Victim shouldn't take damage or victim is frozen
if (g_nodamage[victim] || g_frozen[victim])
return HAM_SUPERCEDE;
// Prevent friendly fire
if (g_zombie[attacker] == g_zombie[victim])
return HAM_SUPERCEDE;
// Victim isn't a normal zombie
if (!g_zombie[victim] || g_nemesis[victim])
return HAM_IGNORED;
// Get custom hitzones setting
static hitzones
hitzones = get_pcvar_num(cvar_hitzones)
// Check if we hit an allowed one
if (hitzones && !(hitzones & (1<<get_tr2(tracehandle, TR_iHitgroup))))
return HAM_SUPERCEDE;
// Knockback disabled or not bullet damage
if (!(damage_type & DMG_BULLET) || !get_pcvar_num(cvar_knockback))
return HAM_IGNORED;
// Get victim flags and knockback while ducking setting
static victimflags, Float:knockduck
victimflags = pev(victim, pev_flags)
knockduck = get_pcvar_float(cvar_knockbackducking)
// Zombie is ducking on ground
if (knockduck == 0.0 && (victimflags & FL_DUCKING) && (victimflags & FL_ONGROUND))
return HAM_IGNORED;
// Get distance between players
static Float:origin1F[3], Float:origin2F[3]
pev(victim, pev_origin, origin1F)
pev(attacker, pev_origin, origin2F)
// Max distance exceeded
if (get_distance_f(origin1F, origin2F) > get_pcvar_float(cvar_knockbackdist))
return HAM_IGNORED;
// Get victim's velocity
static Float:velocity[3]
pev(victim, pev_velocity, velocity)
// Use damage on knockback calculation
if (get_pcvar_num(cvar_knockbackdamage))
xs_vec_mul_scalar(direction, damage, direction)
// Use weapon power on knockback calculation
if (kb_weapon_power[g_currentweapon[attacker]] > 0.0 && get_pcvar_num(cvar_knockbackpower))
xs_vec_mul_scalar(direction, kb_weapon_power[g_currentweapon[attacker]], direction)
// Apply ducking knockback multiplier
if ((victimflags & FL_DUCKING) && (victimflags & FL_ONGROUND))
xs_vec_mul_scalar(direction, knockduck, direction)
// Apply zombie class knockback multiplier
xs_vec_mul_scalar(direction, g_zclass_kb[g_zombieclass[victim]], direction)
// Add up the new vector
xs_vec_add(velocity, direction, direction)
// Should knockback also affect vertical velocity?
if (!get_pcvar_num(cvar_knockbackzvel))
direction[2] = velocity[2]
// Set the knockback'd victim's velocity
set_pev(victim, pev_velocity, direction)
return HAM_IGNORED;
}
In zombie_plague40.sma and add
if (user_has_antiknocback_extraitem[id]) retund HAM_IGNORED;
Into it.
Also you'll need to add extraitem itself and variable that stores if player has this item or not. In example above this variable is
user_has_antiknocback_extraitem
__________________