Kod:
#include <amxmodx>
#include <reapi>
#include <fakemeta_util>
new g_explode_sound[] = "csgo_bomba/hegrenade-1.wav"
//new g_explode_sounddis[] = "csgo_bomba/distant/explode5_distant.wav"
new g_sprite_grenade[] = "sprites/csgo_bomba/bexplo.spr"
const NADE_TYPE_HEGRENADE = 2222
new g_exploSpr
public plugin_init()
{
register_plugin("CS:GO Patlama Efekti", "0.2", "deciduous")
register_forward(FM_SetModel, "fw_SetModel");
//RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade")
//RegisterHam(Ham_Touch, "grenade", "World_Touch")
}
public fw_SetModel(iWeapon, const szModelName[])
{
if (strlen(szModelName) < 8)
return;
if (szModelName[7] != 'w' || szModelName[8] != '_')
return;
static Float:time;
get_entvar(iWeapon, var_dmgtime, time);
if(time == 0.0)
{
return;
}
if (szModelName[9] == 'h' && szModelName[10] == 'e')
{
set_entvar(iWeapon, var_flTimeStepSound, NADE_TYPE_HEGRENADE);
SetThink(iWeapon, "ThinkGrenade");
set_entvar(iWeapon, var_nextthink, get_gametime() + 0.15);
}
}
public ThinkGrenade(const entity)
{
if(is_nullent(entity))
{
SetThink(entity, "");
return HC_SUPERCEDE;
}
static Float:dmgtime
get_entvar(entity, var_dmgtime, dmgtime);
if (dmgtime > get_gametime())
{
set_entvar(entity, var_nextthink, get_gametime())
return HC_SUPERCEDE;
}
ExplodeEffect(entity);
set_entvar(entity, var_flTimeStepSound, 0);
set_entvar(entity, var_flags, FL_KILLME);
SetThink(entity, "");
return HC_CONTINUE;
}
ExplodeEffect(Entity)
{
static Owner;
Owner = get_entvar(Entity, var_owner);
rh_emit_sound2(Entity, 0, CHAN_WEAPON, g_explode_sound, VOL_NORM, ATTN_NORM , 0, PITCH_NORM);
//PlaySound(0, g_explode_sounddis);
new Float:flNadeOrigin[3], Float:flVictimOrigin[3], Float:flDistance, tr = create_tr2(), Float:flFraction, Float:FinalDamage;
get_entvar(Entity, var_origin, flNadeOrigin)
for(new iVictim = 1; iVictim <= 32; iVictim++)
{
if (!is_user_alive(iVictim)) //|| any:get_member(iVictim, m_iTeam) == any:get_member(Owner, m_iTeam))
continue
get_entvar(iVictim, var_origin, flVictimOrigin)
flDistance = vector_distance(flNadeOrigin, flVictimOrigin)
if(flDistance > 380.0)
continue
flNadeOrigin[2] += 2.0;
engfunc(EngFunc_TraceLine, flNadeOrigin, flVictimOrigin, DONT_IGNORE_MONSTERS, Entity, tr);
flNadeOrigin[2] -= 2.0;
get_tr2(tr, TR_flFraction, flFraction);
if(flFraction != 1.0 && get_tr2(tr, TR_pHit) != iVictim)
continue;
FinalDamage = float(95) - ((float(95) / 380) * flDistance);
rg_multidmg_clear();
if(iVictim == Owner)
{
rg_multidmg_add(Entity, iVictim, FinalDamage, DMG_GRENADE);
}
else if(any:get_member(iVictim, m_iTeam) != any:get_member(Owner, m_iTeam))
{
rg_multidmg_add(Entity, iVictim, FinalDamage, DMG_GRENADE);
}
rg_multidmg_apply(Entity, Owner);
//rg_dmg_radius(flNadeOrigin, Entity, Owner, FinalDamage, 380.0, 0, DMG_GRENADE); //ExecuteHamB(Ham_TakeDamage, i, ent, Owner, FinalDamage, DMG_GRENADE)
}
free_tr2(tr);
CreateExplodeEffect(flNadeOrigin)
}
public plugin_precache()
{
g_exploSpr = precache_model(g_sprite_grenade)
precache_sound(g_explode_sound)
//precache_sound(g_explode_sounddis)
}
/*
stock PlaySound(id, const sound[])
{
if(equal(sound[strlen(sound)-4], ".mp3")) client_cmd(id, "mp3 play ^"sound/%s^"", sound);
else client_cmd(id, "spk ^"%s^"", sound);
}*/
CreateExplodeEffect(const Float:origin[3])
{
engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, origin, 0)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, origin[0]) // x axis
engfunc(EngFunc_WriteCoord, origin[1]) // y axis
engfunc(EngFunc_WriteCoord, origin[2]+80) // z axis
write_short(g_exploSpr)
write_byte(45)
write_byte(12)
write_byte(TE_EXPLFLAG_NOSOUND)
message_end()
}
Tavsiyem wav dosyasının db düzeylerini düşürmeniz.