denemedim ama bir dener misin ? smokeun patlama animasyonunu bulamadığım için sekans değerini 1 olarak yaptım. Yine de bir dene.
Kod: Tümünü seç
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
new silahsesler[][][] = {
{CSW_SMOKEGRENADE,"weapons/smokesesi/sg_explode.wav",1},
}
public plugin_precache(){
for(new i;i<sizeof(silahsesler);i++){
precache_sound(silahsesler[i][1])
}
}
public plugin_init(){
register_plugin("smoke ses degis", "1.0", "smoke sesi icin edit: enesizm")
RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack")
RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack")
register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
register_forward(FM_PlaybackEvent, "fw_PlaybackEvent")
}
public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
{
if(!is_user_alive(id) || !is_user_connected(id))
return FMRES_IGNORED
for(new i;i<sizeof(silahsesler);i++)
{
if(get_user_weapon(id) == silahsesler[i][0][0])
set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001)
}
return FMRES_HANDLED
}
public fw_PlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
{
if (!is_user_connected(invoker))
return FMRES_IGNORED
engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
for(new i;i<sizeof(silahsesler);i++)
{
if(get_user_weapon(invoker) == silahsesler[i][0][0])
{
UTIL_PlayWeaponAnimation(invoker, silahsesler[i][2][0])
emit_sound(invoker, CHAN_WEAPON, silahsesler[i][1], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
}
return FMRES_SUPERCEDE
}
stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
set_pev(Player, pev_weaponanim, Sequence)
message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
write_byte(Sequence)
write_byte(pev(Player, pev_body))
message_end()
}
public fw_TraceAttack(Victim, Attacker, Float:Damage, Float:Direction[3], Ptr, DamageBits)
{
static Float:flEnd[3], Float:vecPlane[3]
get_tr2(Ptr, TR_vecEndPos, flEnd)
get_tr2(Ptr, TR_vecPlaneNormal, vecPlane)
if(!is_user_alive(Victim))
{
Make_BulletHole(Attacker, flEnd, Damage)
}
return HAM_IGNORED
}
stock Make_BulletHole(id, Float:Origin[3], Float:Damage)
{
static Decal; Decal = random_num(41, 45)
static LoopTime;
if(Damage > 100.0) LoopTime = 2
else LoopTime = 1
for(new i = 0; i < LoopTime; 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()
}
}