Код:
public pfn_touch(ptr, ptd)
{
//val++;
//if(val == 1)
//{
// If ent is valid
if (pev_valid(ptr))
{
// Get classnames
static classname[32];
pev(ptr, pev_classname, classname, 31);
// Our ent
if(equal(classname, "gr_flame"))
{
// Get it's origin
new Float:originF[3];
pev(ptr, pev_origin, originF);
engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, originF, 0);
write_byte(TE_WORLDDECAL);
engfunc(EngFunc_WriteCoord, originF[0]);
engfunc(EngFunc_WriteCoord, originF[1]);
engfunc(EngFunc_WriteCoord, originF[2]);
write_byte(engfunc(EngFunc_DecalIndex,"{scorch3"));
message_end();
// Draw explosion
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_EXPLOSION); // Temporary entity ID
engfunc(EngFunc_WriteCoord, originF[0]); // engfunc because float
engfunc(EngFunc_WriteCoord, originF[1]);
engfunc(EngFunc_WriteCoord, originF[2]+30.0);
write_short(firespr); // Sprite index
write_byte(25) ;// Scale
write_byte(35); // Framerate
write_byte(4); // Flags
message_end();
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_EXPLOSION); // Temporary entity ID
engfunc(EngFunc_WriteCoord, originF[0] + 50); // engfunc because float
engfunc(EngFunc_WriteCoord, originF[1] + 50);
engfunc(EngFunc_WriteCoord, originF[2]+ 30.0);
write_short(firespr); // Sprite index
write_byte(25) ;// Scale
write_byte(35); // Framerate
write_byte(4); // Flags
message_end();
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_EXPLOSION); // Temporary entity ID
engfunc(EngFunc_WriteCoord, originF[0] - 50); // engfunc because float
engfunc(EngFunc_WriteCoord, originF[1] - 50);
engfunc(EngFunc_WriteCoord, originF[2]+ 20.0);
write_short(firespr); // Sprite index
write_byte(25) ;// Scale
write_byte(35); // Framerate
write_byte(4); // Flags
message_end();
//It's Gibs
message_begin (MSG_BROADCAST,SVC_TEMPENTITY);
write_byte( TE_SPRITETRAIL ); // Throws a shower of sprites or models
engfunc(EngFunc_WriteCoord, originF[ 0 ]); // start pos
engfunc(EngFunc_WriteCoord, originF[ 1 ]);
engfunc(EngFunc_WriteCoord, originF[ 2 ] + 500.0);
engfunc(EngFunc_WriteCoord, originF[ 0 ]); // start pos
engfunc(EngFunc_WriteCoord, originF[ 1 ]);
engfunc(EngFunc_WriteCoord, originF[ 2 ]);
write_short(g_gibs); // spr
write_byte(80); // (count)
write_byte(180); // (life in 0.1's)
write_byte(2) ;// byte (scale in 0.1's)
write_byte(random_num(30,70)); // (velocity along vector in 10's)
write_byte(20); // (randomness of velocity in 10's)
message_end();
/*
Org[0] = originF[ 0 ];
Org[1] = originF[ 1 ];
Org[2] = originF[ 2 ];
*/
// Get owner
new owner = pev(ptr, pev_owner);
// Alive...
new a = FM_NULLENT;
//set_pev(ptr, pev_flags, FL_KILLME);
// Get distance between victim and epicenter
while((a = find_ent_in_sphere(a,originF,300.0)) != 0) {
if( a!=owner&& a!=ptr&&pev(a,pev_takedamage)!=DAMAGE_NO)
{
ExecuteHamB( Ham_TakeDamage, a ,owner ,owner, GRENADE_DAMAGE, DMG_BURN );
}
}
//wpnmod_radius_damage2(originF, ptr, 1, GRENADE_DAMAGE_GIBS, 600.0, CLASS_NONE, DMG_BURN | DMG_ALWAYSGIB);
//set_pev(ptr, pev_flags, FL_KILLME);
emit_sound(ptr, CHAN_WEAPON, SOUND_GLASS, 0.9, ATTN_NORM, 0, PITCH_NORM);
//emit_sound(0, CHAN_WEAPON, SOUND_BURN, 0.9, ATTN_NORM, 0, PITCH_NORM);
set_task(1.0, "snd_burn",ptr);
//snd_burn();
set_task(1.0, "Tiil",ptr, _, _, "a" , 20);
}
}
//CHAN_STATIC
//}
}
public Tiil(taskid)
{
val = 0;
new ent = taskid;
new originN[3];
pev(ent, pev_origin, originN);
wpnmod_radius_damage2(originN, Killer, Killer, GRENADE_DAMAGE_GIBS, 350.0, CLASS_NONE, DMG_BURN);
// Draw explosion
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_EXPLOSION); // Temporary entity ID
engfunc(EngFunc_WriteCoord, originN[0]); // engfunc because float
engfunc(EngFunc_WriteCoord, originN[1]);
engfunc(EngFunc_WriteCoord, originN[2]);
write_short(firespr); // Sprite index
write_byte(25) ;// Scale
write_byte(35); // Framerate
write_byte(4); // Flags
message_end();
}
public snd_burn(taskid)
{
new enty = taskid;
//emit_sound(0, CHAN_WEAPON, SOUND_BURN, 0.9, ATTN_NORM, 0, PITCH_NORM);
//client_cmd(0 , "spk %s" , SOUND_BURN);
emit_sound(enty, CHAN_STATIC, SOUND_BURN, 0.9, ATTN_NORM, 0, PITCH_NORM);
set_task(20.0, "STOP_SND" , enty);
}
public STOP_SND(taskid)
{
set_pev(taskid, pev_flags, FL_KILLME);
client_cmd(0 , "stopsound");
}