Код за потвърждение: Избери целия код
/*
The Description plugin:
Now the HeGrenade will possible blast in game process.
*/
#include <amxmodx>
#include <fakemeta>
new g_FireGre[33][2]
new g_PlayersInEvent[33]
new g_Grenade[33]
new g_sprite
new g_Mins, g_Normal, g_Maxs
new g_expl, g_hedmg
new const g_model[] = "models/w_hegrenade.mdl"
public plugin_precache()
{
g_sprite = precache_model("sprites/zerogxplode2.spr")
}
public plugin_init()
{
register_plugin("ShotOnHeGrenade", "1.0", "defa")
register_event("CurWeapon", "Event_CurWeapon", "b")
g_Mins = register_cvar("minimal_distance", "100")
g_Normal = register_cvar("normal_distance", "101")
g_Maxs = register_cvar("maximum_distance", "500")
g_expl = register_cvar("grenade_explo","150")
g_hedmg = register_cvar("grenade_dmg","23")
}
public Event_CurWeapon(id)
{
static wID, cAmmo
wID = read_data(2)
cAmmo = read_data(3)
if(g_FireGre[id][0] != wID)
{
g_FireGre[id][0] = wID
g_FireGre[id][1] = cAmmo
return PLUGIN_CONTINUE
}
if(g_FireGre[id][1] < cAmmo)
{
g_FireGre[id][1] = cAmmo
return PLUGIN_CONTINUE
}
if(g_FireGre[id][1] == cAmmo)
return PLUGIN_CONTINUE
g_FireGre[id][1] = cAmmo
g_FireGre[id][0] = wID
static entity, Arg[2]
entity = FindeGrenade(Arg[0])
if(entity)
FireGrenade(Arg[0], Arg[1])
return PLUGIN_CONTINUE
}
FindeGrenade(Own)
{
new ent
while((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "grenade")))
g_Grenade[Own] = ent
new model[32]
pev(g_Grenade[Own], pev_model, model, 31)
if(equal(model, g_model))
return true
return false
}
FireGrenade(Owner, Victim)
{
if(!pev_valid(g_Grenade[Owner]))
return
static Float:origin[3], IntOrigin[3]
pev(g_Grenade[Owner], pev_origin, origin)
FVecIVec(origin, IntOrigin)
engfunc(EngFunc_RemoveEntity, g_Grenade[Owner])
static Players[32], i, Nums, Origin[3]
static Dist, Fixed, Float:Damage
static GreDmg, DmgOpr
GreDmg = get_pcvar_num(g_hedmg)
DmgOpr = get_pcvar_num(g_expl)
get_players(Players, Nums)
for(i=0; i<Nums; i++){
get_user_origin(Players[i], Origin)
Dist = get_distance(IntOrigin, Origin)
if(get_pcvar_num(g_Normal) <= Dist <= get_pcvar_num(g_Maxs))
{
message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, Players[i])
write_short(1<<14)
write_short(1<<13)
write_short(1<<14)
message_end()
}
if(Dist <= get_pcvar_num(g_Mins))
{
message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, Players[i])
write_short(1<<14)
write_short(1<<13)
write_short(1<<14)
message_end()
g_PlayersInEvent[Victim] = 1
g_PlayersInEvent[Victim] = Players[i]
static Float:health
Fixed = ((GreDmg*GreDmg)/DmgOpr)
Damage = 1.0*sqroot(((DmgOpr-Dist)*Fixed))
pev(g_PlayersInEvent[Victim], pev_health, health)
if(health <= Damage)
{
user_silentkill(g_PlayersInEvent[Victim])
message_begin(MSG_ONE, get_user_msgid("DeathMsg"), {0,0,0}, g_PlayersInEvent[Victim])
write_byte(g_PlayersInEvent[Victim])
write_byte(g_PlayersInEvent[Victim])
write_byte(0)
write_string("hegrenade")
message_end()
g_PlayersInEvent[Victim] = 0
}else{
set_pev(g_PlayersInEvent[Victim], pev_health, health-Damage)
}
if(health > Damage)
{
g_PlayersInEvent[Victim] = 0
}
}
}
message_begin(MSG_ALL, SVC_TEMPENTITY)
write_byte(TE_EXPLOSION)
write_coord(IntOrigin[0])
write_coord(IntOrigin[1])
write_coord(IntOrigin[2]+7)
write_short(g_sprite)
write_byte(9)
write_byte(255)
write_byte(0)
message_end()
message_begin(MSG_ALL, SVC_TEMPENTITY)
write_byte(TE_WORLDDECAL)
write_coord(IntOrigin[0])
write_coord(IntOrigin[1])
write_coord(IntOrigin[2])
write_byte(28)
message_end()
return
}
public client_putinserver(id)
{
g_PlayersInEvent[id] = 0
}
public client_disconnect(id)
{
g_PlayersInEvent[id] = 0
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/