PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <fun>
#include <coll_msg>
#include <dhudmessage>
#define PLUGIN "Amxx Knife + Special Abilities"
#define VERSION "2.0"
new string[3], skype[64]
new bool:AmxxSpecial[33]
new cvar_only_admins, cvar_flags, cvar_footsteps, cvar_gravity, cvar_speed, cvar_invisible, cvar_emit, cvar_showicon, ShowIcon, cvar_vampire_enable, cvar_vampire_headshot, cvar_vampire_generic, cvar_vampire_maxhealth, Screen, cvar_info_skype
new const v_combat[] = { "models/knife_items/Combat/v_combat-blood.mdl" }
new const p_combat[] = { "models/knife_items/Combat/p_combat_normal.mdl" }
new const g_CombatHitBody[][] =
{
"knife_items/Combat/cb_hit1.wav", "knife_items/Combat/cb_hit2.wav", "knife_items/Combat/cb_hit3.wav",
"knife_items/Combat/cb_hit4.wav", "knife_items/Combat/cb_hit5.wav", "knife_items/Combat/cb_hit6.wav"
}
new const g_CombatHitWall[][] =
{
"knife_items/Combat/cb_hiwl.wav", "knife_items/Combat/cb_hiwl2.wav", "knife_items/Combat/cb_hiwl3.wav"
}
new const g_CombatStab[][] =
{
"knife_items/Combat/cb_sb.wav", "knife_items/Combat/cb_sb2.wav", "knife_items/Combat/cb_sb.wav"
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, "{ S p @ W n } +++")
register_forward(FM_EmitSound, "forward_EmitSound")
register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
register_event("DeathMsg", "Kill", "a", "1>0")
ShowIcon = get_user_msgid("StatusIcon")
Screen = get_user_msgid("ScreenFade")
set_task(90.0, "info", _, _, _, "b")
read_Cvars()
}
read_Cvars()
{
register_cvar(PLUGIN, VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
cvar_only_admins = register_cvar("amx_sk_only_admins", "1")
cvar_flags = register_cvar("amx_sk_flags", "m")
cvar_footsteps = register_cvar("amx_sk_footsteps", "1")
cvar_gravity = register_cvar("amx_sk_gravity", "0.6")
cvar_speed = register_cvar("amx_sk_speed", "350.0")
cvar_invisible = register_cvar("amx_sk_invisible", "80")
cvar_emit = register_cvar("amx_sk_emit_enable", "1")
cvar_showicon = register_cvar("amx_sk_showicon", "1")
cvar_vampire_enable = register_cvar("amx_sk_vampire_enable", "1")
cvar_vampire_generic = register_cvar("amx_sk_vampire_genereic", "30")
cvar_vampire_headshot = register_cvar("amx_sk_vampire_headshot", "70")
cvar_vampire_maxhealth = register_cvar("amx_sk_vampire_maxhealth", "250")
cvar_info_skype = register_cvar("amx_sk_info_skype", "aleksandar.ralf")
}
public plugin_cfg()
{
get_pcvar_string(cvar_flags, string, charsmax(string))
get_pcvar_string(cvar_info_skype, skype, charsmax(skype))
}
public info(id)
{
new players[32], num
get_players(players, num, "ac")
for( new i = 0; i <= num; i++ )
{
if( get_pcvar_num(cvar_only_admins) ? 1 : 0 )
{
Chat(players[i], "^3(AgZone) ^4Ako iskash da iskash da poluchi knife sus specialni umeniq^1, ^4pishi na Skype^1:^3 %s ^1.", skype)
}
}
}
public Event_CurWeapon(id)
{
if( get_pcvar_num(cvar_only_admins) ? 1 : 0 )
{
if( !(get_user_flags(id) & read_flags(string)) ) return PLUGIN_HANDLED
}
if( read_data(2) != CSW_KNIFE )
{
get_user_maxspeed(id)
set_user_footsteps(id, 0)
set_user_gravity(id, 1.0)
set_user_rendering(id, _, 0, 0, 0, _, 0)
StatusIconOff(id)
AmxxSpecial[id] = false
return PLUGIN_HANDLED
}
set_user_footsteps(id, get_pcvar_num(cvar_footsteps))
set_user_gravity(id, get_pcvar_float(cvar_gravity))
set_user_maxspeed(id, get_pcvar_float(cvar_speed))
set_user_rendering(id, kRenderFxNone, 255, 255, 255, kRenderTransAlpha, get_pcvar_num(cvar_invisible))
set_pev(id, pev_viewmodel2, v_combat)
set_pev(id, pev_weaponmodel2, p_combat)
if( get_pcvar_num(cvar_emit) == 1) emit_sound(id, CHAN_AUTO, "knife_items/Combat/cb_draw.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
StatusIconOn(id)
AmxxSpecial[id] = true
return PLUGIN_CONTINUE
}
public forward_EmitSound(id, chanel, const emit[])
{
if( !is_user_connected(id) || !AmxxSpecial[id] ) return FMRES_IGNORED
if( get_pcvar_num(cvar_emit) != 1 ) return FMRES_IGNORED
if( equal(emit, "weapons/knife_deploy1.wav") ) return FMRES_SUPERCEDE
else if( equal(emit, "weapons/knife_hit1.wav") || equal(emit, "weapons/knife_hit2.wav") || equal(emit, "weapons/knife_hit3.wav") || equal(emit, "weapons/knife_hit4.wav") )
{
emit_sound(id, chanel, g_CombatHitBody[random(sizeof g_CombatHitBody)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
else if( equal(emit, "weapons/knife_hitwall1.wav") )
{
emit_sound(id, chanel, g_CombatHitWall[random(sizeof g_CombatHitWall)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
else if( equal(emit, "weapons/knife_slash1.wav") || equal(emit, "weapons/knife_slash2.wav") )
{
emit_sound(id, chanel, "knife_items/Combat/cb_mis.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
if( equal(emit, "weapons/knife_stab.wav") )
{
emit_sound(id, chanel, g_CombatStab[random(sizeof g_CombatStab)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
public Kill()
{
new attacker = read_data(1), victim = read_data(2), headshot = read_data(3)
if( AmxxSpecial[attacker] && (get_pcvar_num(cvar_vampire_enable) ? 1 : 0) )
{
StatusIconOff(attacker)
new Weapon[20]
read_data(4, Weapon, charsmax(Weapon))
if( equal(Weapon, "knife") && (attacker != victim) )
{
static maxhp, head, generic
maxhp = get_pcvar_num(cvar_vampire_maxhealth)
head = get_pcvar_num(cvar_vampire_headshot)
generic = get_pcvar_num(cvar_vampire_generic)
if( get_user_health(attacker) >= maxhp )
{
set_user_health(attacker, maxhp)
return
}
ShowScreenFading(attacker)
client_cmd(attacker, "spk knife_items/Combat/cb_s_health_b")
set_dhudmessage(127, 255, 255, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, false)
if( !headshot )
{
set_user_health(attacker, get_user_health(attacker) + generic)
show_dhudmessage(attacker, "Healed +%d hp", generic)
} else {
set_user_health(attacker, get_user_health(attacker) + generic)
show_dhudmessage(attacker, "Healed +%d hp", head)
}
}
}
}
StatusIconOn(id)
{
message_begin( MSG_ONE, ShowIcon, _, id )
write_byte( get_pcvar_num(cvar_showicon) ) // 0 - off | 1 - On | 2 - Flash
write_string( "dmg_shock" ) //hud
write_byte( 127 ) //red
write_byte( 255 ) //green
write_byte( 255 ) //blue
message_end( )
}
StatusIconOff(id)
{
message_begin( MSG_ONE, ShowIcon, _, id )
write_byte( 0 ) // 0 - off | 1 - On | 2 - Flash
write_string( "dmg_shock" ) //hud
message_end( )
}
ShowScreenFading(id)
{
message_begin( MSG_ONE, Screen, _, id )
write_short( 1<<10 )
write_short( 1<<10 )
write_short( 0x0000 )
write_byte( 0 ) //red
write_byte( 0 ) //green
write_byte( 200 ) //blue
write_byte( 75 ) //brightness
message_end()
}
public plugin_precache()
{
new index
precache_model(v_combat)
precache_model(p_combat)
precache_sound("knife_items/Combat/cb_draw.wav")
precache_sound("knife_items/Combat/cb_mis.wav")
precache_sound("knife_items/Combat/cb_s_health_b.wav")
for( index = 0; index < sizeof g_CombatHitBody; index++ )
precache_sound(g_CombatHitBody[index])
for( index = 0; index < sizeof g_CombatHitWall; index++ )
precache_sound(g_CombatHitWall[index])
for( index = 0; index < sizeof g_CombatStab; index++ )
precache_sound(g_CombatStab[index])
}