This may be because the entity event you are sending is embedded in a wall or floor.
I imagine because the event it happening inside a floor/wall its not being sent to 
the client because its not within there PVS.  Try checking to see if the point where 
you 
are spawning the effect is embedded - perhaps using a trace etc.  Moving out away 
from the surface that the grenade contacted might help a little.  The reason it may
be working on doors etc is because they are entities and wont stop the entity from 
being within the PVS.  Only doors that act as a Portal, and the entities spawn on 
the opposite side of the portal to the client, would stop the effect from being within 
the clients PVS.

That's the theory. Hope it helps.


On 14 November 2001 22:48, _Phantom_ [SMTP:[EMAIL PROTECTED]] wrote:
| lo ppl
| 
| Here the basic problem, we have an EMP Gren in our mod and when it goes off
| we dont want the normal bang and flash, instead we want the same effect the
| houndeye does when it fires it's sonic attack (the nice circles).
| 
| Now, in theory this is easy, the Emp Gren is a contact gren, however instead
| of looking like the MP5 contact gren is looks like a standard HE gren
| (pending a model change). It throw alright using a modified ShootContact(..)
| function, it set the model correct, apon contact with something the explode
| routine works (its a copy of the ExplodeTouch(..) function with the damage
| type changed to DMG_EMPBLAST so I can find it later).
| 
| the EMP Gren is throw using this call -- CGrenade::ShootContactEMP(
| m_pPlayer->pev, vecSrc, vecThrow, m_iSpriteTexture ); (in Precache
| m_iSpriteTexutre is the result of a loadmodel)
| 
| which calls this is CGrenade :
| 
| CGrenade * CGrenade:: ShootContactEMP( entvars_t *pevOwner, Vector vecStart,
| Vector vecVelocity, int SpriteTexture)
| {
|  CGrenade *pGrenade = GetClassPtr( (CGrenade *)NULL );
|  pGrenade->Spawn();
|  // contact grenades arc lower
|  // below commented out coz it's a normal gren
| // pGrenade->pev->gravity = 0.5;// lower gravity since grenade is
| aerodynamic and engine doesn't know it.
|  UTIL_SetOrigin( pGrenade->pev, vecStart );
|  pGrenade->pev->velocity = vecVelocity;
|  pGrenade->pev->angles = UTIL_VecToAngles (pGrenade->pev->velocity);
|  pGrenade->pev->owner = ENT(pevOwner);
| 
|  // make monsters afaid of it while in the air
|  pGrenade->SetThink( DangerSoundThink );
|  pGrenade->pev->nextthink = gpGlobals->time;
| 
|  // Tumble in air
|  pGrenade->pev->avelocity.x = RANDOM_FLOAT ( -100, -500 );
| 
|  // Explode on contact
|  pGrenade->SetTouch( ExplodeEMPTouch );
| 
|  SET_MODEL(ENT(pGrenade->pev), "models/w_grenade.mdl");
|  pGrenade->pev->dmg = 0;
| 
|  // grab the SpriteTexture passed to me
|  pGrenade->m_iSpriteTexture = SpriteTexture;
| 
|  return pGrenade;
| }
| 
| -----
| The modified explode function looks like this :
| -----
| void CGrenade::Explode( TraceResult *pTrace, int bitsDamageType )
| {
|  float  flRndSound;// sound randomizer
| 
|  pev->model = iStringNull;//invisible
|  pev->solid = SOLID_NOT;// intangible
| 
|  pev->takedamage = DAMAGE_NO;
| 
|  // Pull out of the wall a bit
|  if ( pTrace->flFraction != 1.0 )
|  {
|   pev->origin = pTrace->vecEndPos + (pTrace->vecPlaneNormal * (pev->dmg -
| 24) * 0.6);
|  }
| 
|  int iContents = UTIL_PointContents ( pev->origin );
|  if (bitsDamageType == DMG_EMPBLAST)
|  {
|   // emp gren has gone off so do the EMP effect
|   ALERT(at_console, "EMP Burst!!\n");        // code to check we are fireing
| this event!
|   MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin );
|    WRITE_BYTE( TE_BEAMCYLINDER );
|    WRITE_COORD( pev->origin.x);
|    WRITE_COORD( pev->origin.y);
|    WRITE_COORD( pev->origin.z + 32);
|    WRITE_COORD( pev->origin.x);
|    WRITE_COORD( pev->origin.y);
|    WRITE_COORD( pev->origin.z + 32 + 320 / .4); // reach damage radius over
| .3 seconds (replaced houndeye constand with 320)
|    WRITE_SHORT( m_iSpriteTexture );
|    WRITE_BYTE( 0 ); // startframe
|    WRITE_BYTE( 0 ); // framerate
|    WRITE_BYTE( 4 ); // life
|    WRITE_BYTE( 16 );  // width
|    WRITE_BYTE( 0 );   // noise
| 
|    WRITE_BYTE(0);
|    WRITE_BYTE(255); // bright green
|    WRITE_BYTE(0);
| 
|    WRITE_BYTE( 255 ); //brightness
|    WRITE_BYTE( 0 );  // speed
|   MESSAGE_END();
| 
|   MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin );
|    WRITE_BYTE( TE_BEAMCYLINDER );
|    WRITE_COORD( pev->origin.x);
|    WRITE_COORD( pev->origin.y);
|    WRITE_COORD( pev->origin.z + 32);
|    WRITE_COORD( pev->origin.x);
|    WRITE_COORD( pev->origin.y);
|    WRITE_COORD( pev->origin.z + 32 + ( 320 / 2 ) / .4); // reach damage
| radius over .3 seconds (replaced houndeye constand with 320)
|    WRITE_SHORT( m_iSpriteTexture );
|    WRITE_BYTE( 0 ); // startframe
|    WRITE_BYTE( 0 ); // framerate
|    WRITE_BYTE( 4 ); // life
|    WRITE_BYTE( 16 );  // width
|    WRITE_BYTE( 0 );   // noise
| 
|    WRITE_BYTE(0);
|    WRITE_BYTE(255); // bright green
|    WRITE_BYTE(0);
| 
|    WRITE_BYTE( 255 ); //brightness
|    WRITE_BYTE( 0 );  // speed
|   MESSAGE_END();
| 
|   CSoundEnt::InsertSound ( bits_SOUND_COMBAT, pev->origin,
| NORMAL_EXPLOSION_VOLUME, 3.0 ); // TODO : replace this sound
|  }
|  else
|  {
|   // normal gren effects
| 
|   MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin );
|    WRITE_BYTE( TE_EXPLOSION );  // This makes a dynamic light and the
| explosion sprites/sound
|    WRITE_COORD( pev->origin.x ); // Send to PAS because of the sound
|    WRITE_COORD( pev->origin.y );
|    WRITE_COORD( pev->origin.z );
|    if (iContents != CONTENTS_WATER)
|    {
|     WRITE_SHORT( g_sModelIndexFireball );
|    }
|    else
|    {
|     WRITE_SHORT( g_sModelIndexWExplosion );
|    }
|    WRITE_BYTE( (pev->dmg - 50) * .60  ); // scale * 10
|    WRITE_BYTE( 15  ); // framerate
|    WRITE_BYTE( TE_EXPLFLAG_NONE );
|   MESSAGE_END();
|   CSoundEnt::InsertSound ( bits_SOUND_COMBAT, pev->origin,
| NORMAL_EXPLOSION_VOLUME, 3.0 );
|  }
| 
| 
| // nuffin changed below here
| ...
| ....
| ...
|  }
| }
| 
| Now, the problem is, when you throw the EMP Gren, it hits say the floor, it
| prints the message that the EMP effect has happened, it don't explode like
| an HE gren, however the green circles dont appear. However, I've found a few
| instantance when it will make the effect happen, at the spawn point there
| are some barriers, throwing the gren so it hit either the top or the bottom
| one causes the effect to appear, also some garage doors also cause the
| effect to happen.
| At first I thought it might work coz it was off the ground.. however
| throwing the gren so it strikes a wall a few feet up fails to make it
| happen.
| 
| Any one shead any light on this problem as I'm baffled now.
| Applogise for the amount of code as well, but I thought I'd better give as
| much info as I could..
| 
| Cheers,
| Rob
| 
| _______________________________________________
| To unsubscribe, edit your list preferences, or view the list archives, please visit:
| http://list.valvesoftware.com/mailman/listinfo/hlcoders
| 
| 
_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to