#define CUSTOM_MODELS 0
#define CUSTOM_SOUNDS 0
#if ( CUSTOM_MODELS )
new MODEL_VIEW[] = "models/v_knife.mdl"
new MODEL_PLAYER[] = "models/p_knife.mdl"
#endif
new SOUND_SLASH1[] = "weapon/knife_slash1.wav"
new SOUND_SLASH2[] = "weapon/knife_slash2.wav"
new SOUND_HIT1[] = "weapon/knife_hit1.wav"
new SOUND_HIT2[] = "weapon/knife_hit2.wav"
new SOUND_HIT3[] = "weapon/knife_hit3.wav"
new SOUND_HIT4[] = "weapon/knife_hit4.wav"
new SOUND_STAB[] = "weapon/knife_stab.wav"
new SOUND_DEPLOY[] = "weapon/knife_deploy1.wav"
new SOUND_HITWALL[] = "weapon/knife_hitwall1.wav"
/* DO NOT EDIT BEYOND THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING */
#include <amxmodx>
#include <fakemeta>
#include <engine>
new PLUGIN_NAME[] = "AIO Knife Plugin"
new PLUGIN_AUTHOR[] = "Cheap_Suit"
new PLUGIN_VERSION[] = "1.4"
public plugin_init()
{
register_plugin( PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR )
register_cvar( "amx_knife_boost", "0.0" )
register_cvar( "amx_knife_damage", "0.0" )
register_cvar( "amx_knife_jump", "0.0" )
register_event( "CurWeapon", "Event_CurWeapon", "be", "1=1" )
register_event( "Damage", "Event_Damage", "b", "2!0" )
#if (CUSTOM_SOUNDS)
register_forward( FM_EmitSound, "fw_EmitSound" )
#endif
}
public plugin_precache()
{
#if ( CUSTOM_MODELS )
precache_model( MODEL_VIEW )
precache_model( MODEL_PLAYER )
#endif
#if ( CUSTOM_SOUNDS )
precache_sound( SOUND_SLASH1 )
precache_sound( SOUND_SLASH2 )
precache_sound( SOUND_HIT1 )
precache_sound( SOUND_HIT2 )
precache_sound( SOUND_HIT3 )
precache_sound( SOUND_HIT4 )
precache_sound( SOUND_DEPLOY )
precache_sound( SOUND_HITWALL )
#endif
}
public Event_CurWeapon( id )
{
if ( !is_user_connected( id ) || !is_user_alive( id ) )
return PLUGIN_CONTINUE
new WeaponID = read_data( 2 )
if ( WeaponID != CSW_KNIFE )
return PLUGIN_CONTINUE
new Float:addSpeed = get_cvar_float( "amx_knife_boost" )
if ( addSpeed > 0.0 )
entity_set_float(id, EV_FL_maxspeed, 240.0 + addSpeed )
#if ( CUSTOM_MODELS )
entity_set_string( id, EV_SZ_viewmodel, MODEL_VIEW )
entity_set_string( id, EV_SZ_weaponmodel, MODEL_PLAYER )
#endif
return PLUGIN_CONTINUE;
}
public Event_Damage( id )
{
new weapon, bodypart
new attacker = get_user_attacker( id, weapon, bodypart )
if ( !is_user_alive( id ) || !is_user_alive( attacker ) )
return PLUGIN_CONTINUE
if ( weapon != CSW_KNIFE )
return PLUGIN_CONTINUE
new iHealth = get_user_health( id )
new iDamage = floatround( float( read_data(2) ) * get_cvar_float( "amx_knife_damage" ) )
if ( iHealth > iDamage )
fakedamage( id, "weapon_knife", float( iDamage ), read_data( 3 ) )
else
{
user_silentkill( id )
make_deathmsg( attacker, id, 0, "knife" )
}
return PLUGIN_CONTINUE
}
public client_PreThink( id )
{
if ( !is_user_connected( id ) || !is_user_alive( id ) )
return PLUGIN_CONTINUE
new temp[2], weapon = get_user_weapon( id, temp[0], temp[1] )
if ( weapon != CSW_KNIFE )
return PLUGIN_CONTINUE
if ( ( get_user_button( id ) & IN_JUMP ) && !( get_user_oldbutton( id ) & IN_JUMP ) )
{
new flags = entity_get_int( id, EV_INT_flags )
new waterlvl = entity_get_int( id, EV_INT_waterlevel )
if ( !( flags & FL_ONGROUND ) )
return PLUGIN_CONTINUE
if ( flags & FL_WATERJUMP )
return PLUGIN_CONTINUE
if ( waterlvl > 1 )
return PLUGIN_CONTINUE
new Float:fVelocity[3]
entity_get_vector( id, EV_VEC_velocity, fVelocity )
fVelocity[2] += get_cvar_float( "amx_knife_jump" )
entity_set_vector( id, EV_VEC_velocity, fVelocity )
entity_set_int( id, EV_INT_gaitsequence, 6 )
}
return PLUGIN_CONTINUE;
}
public fw_EmitSound( id, channel, sound[] )
{
if ( !is_user_connected( id ) || !is_user_alive( id ) )
return FMRES_IGNORED
new temp[2], weapon = get_user_weapon( id, temp[0], temp[1] )
if ( weapon != CSW_KNIFE )
return FMRES_IGNORED
if ( equal ( sound, "weapons/knife_slash1.wav" ) )
{
emit_sound( id, CHAN_WEAPON, SOUND_SLASH1, 1.0, ATTN_NORM, 0, PITCH_NORM )
return FMRES_SUPERCEDE
}
if ( equal ( sound, "weapons/knife_slash2.wav" ) )
{
emit_sound( id, CHAN_WEAPON, SOUND_SLASH2, 1.0, ATTN_NORM, 0, PITCH_NORM )
return FMRES_SUPERCEDE;
}
if ( equal ( sound, "weapons/knife_deploy1.wav" ) )
{
emit_sound( id, CHAN_WEAPON, SOUND_DEPLOY, 1.0, ATTN_NORM, 0, PITCH_NORM )
return FMRES_SUPERCEDE;
}
if ( equal ( sound, "weapons/knife_hitwall1.wav" ) )
{
emit_sound( id, CHAN_WEAPON, SOUND_HITWALL, 1.0, ATTN_NORM, 0, PITCH_NORM )
return FMRES_SUPERCEDE
}
if ( equal ( sound, "weapons/knife_hit1.wav" ) )
{
emit_sound( id, CHAN_WEAPON, SOUND_HIT1, 1.0, ATTN_NORM, 0, PITCH_NORM )
return FMRES_SUPERCEDE
}
if ( equal ( sound, "weapons/knife_hit2.wav" ) )
{
emit_sound( id, CHAN_WEAPON, SOUND_HIT2, 1.0, ATTN_NORM, 0, PITCH_NORM )
return FMRES_SUPERCEDE
}
if ( equal ( sound, "weapons/knife_hit3.wav" ) )
{
emit_sound( id, CHAN_WEAPON, SOUND_HIT3, 1.0, ATTN_NORM, 0, PITCH_NORM )
return FMRES_SUPERCEDE
}
if ( equal ( sound, "weapons/knife_hit4.wav" ) )
{
emit_sound( id, CHAN_WEAPON, SOUND_HIT4, 1.0, ATTN_NORM, 0, PITCH_NORM )
return FMRES_SUPERCEDE
}
if ( equal ( sound, "weapons/knife_stab.wav" ) )
{
emit_sound( id, CHAN_WEAPON, SOUND_STAB, 1.0, ATTN_NORM, 0, PITCH_NORM )
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}