#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#define PLUGIN "Fegyver Hang"
#define VERSION "1.0"
#define AUTHOR "KCs"
enum _:WeaponData
{
WD_WeaponId,
WD_Sound[64],
WD_Anim
}
new const g_WeaponData[][WeaponData] =
{
{ CSW_AK47, "weapons/fegyver_hangok/ak47.wav", 4 },
{ CSW_AUG, "weapons/fegyver_hangok/aug-6.wav", 4 },
{ CSW_AWP, "weapons/fegyver_hangok/awp_12yn.wav", 2 },
{ CSW_SG552, "weapons/fegyver_hangok/sg552-5.wav", 4 },
{ CSW_FAMAS, "weapons/fegyver_hangok/famas-6.wav", 4 },
{ CSW_P90, "weapons/fegyver_hangok/p90-2.wav", 4 },
{ CSW_MP5NAVY, "weapons/fegyver_hangok/mp5-2.wav", 4 },
{ CSW_MAC10, "weapons/fegyver_hangok/mac10.wav", 4 },
{ CSW_M249, "weapons/fegyver_hangok/m249.wav", 2 },
{ CSW_GLOCK18, "weapons/fegyver_hangok/glock18-12yn.wav", 5 },
{ CSW_GALIL, "weapons/fegyver_hangok/galil-2.wav", 4 },
{ CSW_DEAGLE, "weapons/fegyver_hangok/deagle_012yn.wav", 2 },
{ CSW_SCOUT, "weapons/fegyver_hangok/scout-2.wav", 2 },
{ CSW_UMP45, "weapons/fegyver_hangok/ump45-2.wav", 4 },
{ CSW_M3, "weapons/fegyver_hangok/m3-2.wav", 2 },
{ CSW_P228, "weapons/fegyver_hangok/usp-sesli.wav", 2 },
{ CSW_XM1014, "weapons/fegyver_hangok/xm1014-2.wav", 2 }
}
new const g_SilencedUSP[] = "weapons/fegyver_hangok/usp-sessiz.wav"
new const g_SilencedM4A1[] = "weapons/fegyver_hangok/m4a1-Susturuculuxx.wav"
new const g_UnsilencedUSP[] = "weapons/fegyver_hangok/usp-sesli.wav"
new const g_UnsilencedM4A1[] = "weapons/fegyver_hangok/m4a4soundwf.wav"
public plugin_precache()
{
for (new i = 0; i < sizeof g_WeaponData; i++)
precache_sound(g_WeaponData[i][WD_Sound])
precache_sound(g_SilencedUSP)
precache_sound(g_SilencedM4A1)
precache_sound(g_UnsilencedUSP)
precache_sound(g_UnsilencedM4A1)
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack")
RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack")
register_forward(FM_PlaybackEvent, "fw_PlaybackEvent")
}
public fw_PlaybackEvent(flags, id, eventid, Float:delay, Float:origin[3], Float:angles[3],
Float:f1, Float:f2, p1, p2, b1, b2)
{
if (!is_user_alive(id))
return FMRES_IGNORED
new weapon = get_user_weapon(id)
if (!(1 <= weapon <= 30))
return FMRES_IGNORED
engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, id, eventid,
delay, origin, angles, f1, f2, p1, p2, b1, b2)
for (new i = 0; i < sizeof g_WeaponData; i++)
{
if (weapon == g_WeaponData[i][WD_WeaponId])
{
UTIL_PlayWeaponAnimation(id, g_WeaponData[i][WD_Anim])
emit_sound(id, CHAN_WEAPON, g_WeaponData[i][WD_Sound],
VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
}
if (weapon == CSW_M4A1)
{
new ent = fm_get_user_weapon_entity(id, CSW_M4A1)
if (cs_get_weapon_silen(ent))
{
UTIL_PlayWeaponAnimation(id, 2)
emit_sound(id, CHAN_WEAPON, g_SilencedM4A1, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
else
{
UTIL_PlayWeaponAnimation(id, 9)
emit_sound(id, CHAN_WEAPON, g_UnsilencedM4A1, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
return FMRES_SUPERCEDE
}
if (weapon == CSW_USP)
{
new ent = fm_get_user_weapon_entity(id, CSW_USP)
if (cs_get_weapon_silen(ent))
{
UTIL_PlayWeaponAnimation(id, 2)
emit_sound(id, CHAN_WEAPON, g_SilencedUSP, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
else
{
UTIL_PlayWeaponAnimation(id, 10)
emit_sound(id, CHAN_WEAPON, g_UnsilencedUSP, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
stock UTIL_PlayWeaponAnimation(id, anim)
{
set_pev(id, pev_weaponanim, anim)
message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = id)
write_byte(anim)
write_byte(pev(id, pev_body))
message_end()
}
public fw_TraceAttack(victim, attacker, Float:damage, Float:dir[3], ptr, dmgBits)
{
if (!is_user_connected(attacker))
return HAM_IGNORED
new weapon = get_user_weapon(attacker)
if (weapon == CSW_KNIFE)
return HAM_IGNORED
static Float:end[3]
get_tr2(ptr, TR_vecEndPos, end)
Make_BulletHole(attacker, end, damage)
return HAM_IGNORED
}
stock Make_BulletHole(id, const Float:origin[3], Float:damage)
{
new decal = random_num(41, 45)
new loops = (damage > 100.0) ? 2 : 1
for (new i = 0; i < loops; i++)
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_WORLDDECAL)
engfunc(EngFunc_WriteCoord, origin[0])
engfunc(EngFunc_WriteCoord, origin[1])
engfunc(EngFunc_WriteCoord, origin[2])
write_byte(decal)
message_end()
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_GUNSHOTDECAL)
engfunc(EngFunc_WriteCoord, origin[0])
engfunc(EngFunc_WriteCoord, origin[1])
engfunc(EngFunc_WriteCoord, origin[2])
write_short(id)
write_byte(decal)
message_end()
}
}