Hi, can someone help me with this knife plugin? When im trying to hit a zombie with this knife it gives me this error as in the title of this topic.
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>
#include <xs>
#define NAME "::Knife Generator ::"
#define VERSION "1.0"
#define AUTHOR "Zombie-Mod.ru"
#define KNIFE_NAME "Golden knife"
#define KNIFE_COST 5
#define SEC_DMG 4.0
#define PRIM_DMG 3.0
#define SEC_HEAD_DMG 10.0
#define PRIM_HEAD_DMG 5.0
static const v_knife[] = "models/zombie_plague/v_knife_shine.mdl"
static const p_knife[] = "models/zombie_plague/p_knife.mdl"
static g_Item_Knife
static bool:Knife[33]
public plugin_init()
{
register_plugin(NAME, VERSION, AUTHOR)
g_Item_Knife = zp_register_extra_item(KNIFE_NAME, KNIFE_COST, ZP_TEAM_HUMAN)
register_event("CurWeapon", "ChangeModel", "be", "1=1")
RegisterHam(Ham_TakeDamage, "player", "TakeDamage_Pre", 0)
RegisterHam(Ham_TakeDamage, "player", "TakeDamage_Post", 1)
RegisterHam(Ham_Player_PreThink, "player", "PreThink")
}
public zp_user_infected_post(id) Knife[id] = false
public zp_extra_item_selected(id, itemid)
{
if(itemid == g_Item_Knife)
{ if(Knife[id]) return ZP_PLUGIN_HANDLED
engclient_cmd(id, "weapon_knife")
Knife[id] = true
change(id)
}
return PLUGIN_CONTINUE
}
public ChangeModel(id)
{
if(!is_user_alive(id) || zp_get_user_zombie(id))
return
static weaponid
weaponid = read_data(2)
if(!Knife[id] || weaponid != CSW_KNIFE)
return
change(id)
}
public TakeDamage_Pre(victim, inflictor, attacker, Float:damage, damagetype)
{
if(!is_user_alive(attacker))
return HAM_IGNORED
if(!Knife[attacker] || get_user_weapon(attacker) != CSW_KNIFE)
return HAM_IGNORED
new hit, target
get_user_aiming(attacker, target, hit)
new bool:head = (hit == HIT_HEAD)
new Float:mult_dmg = 1.0
if(pev(attacker, pev_button, IN_ATTACK))
mult_dmg = head ? PRIM_HEAD_DMG : PRIM_DMG
else
mult_dmg = head ? SEC_HEAD_DMG : SEC_DMG
SetHamParamFloat(4, damage * mult_dmg)
return HAM_HANDLED
}
public TakeDamage_Post(victim, inflictor, attacker, Float:damage, damagetype)
{
if(!is_user_alive(attacker) || !is_user_alive(victim))
return HAM_IGNORED
if(!Knife[attacker] || get_user_weapon(attacker) != CSW_KNIFE)
return HAM_IGNORED
new Float:Origin[3], Float:Origin2[3], Float:Velocity[3]
pev(attacker, pev_origin, Origin)
pev(victim, pev_origin, Origin2)
xs_vec_sub(Origin2, Origin, Velocity)
xs_vec_normalize(Velocity, Velocity)
if(Velocity[2] <= 100.0)
Velocity[2] = random_float(150.0, 250.0)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_BLOODSPRITE);
engfunc(EngFunc_WriteCoord, Origin2[0])
engfunc(EngFunc_WriteCoord, Origin2[1])
engfunc(EngFunc_WriteCoord, Origin2[2])
set_pev(victim, pev_velocity, Velocity)
return HAM_HANDLED
}
public PreThink(id)
{
if(!is_user_alive(id)) return HAM_IGNORED
if(!Knife[id]) return HAM_IGNORED
if(get_user_weapon(id) != CSW_KNIFE)
{
set_pev(id, pev_gravity, get_cvar_float("zp_human_gravity"))
set_pev(id, pev_maxspeed, get_cvar_float("zp_human_speed"))
return HAM_IGNORED
}
return HAM_HANDLED
}
public plugin_precache()
{
precache_model(v_knife)
precache_model(p_knife)
}
change(id)
{
set_pev(id, pev_viewmodel2, v_knife)
set_pev(id, pev_weaponmodel2, p_knife)
}