ah, yush, that did it... adding Vector (0,0,32) to the Origin sorted it out nicely.. I thought it was spawning out of the PAS at one point but I guess I was adding numbers at the wrong point..
ta :) > raise the grenade up off the ground before it explodes. or just increase the > z component of the ORIGIN first. otherwise its more than likely spawning out > of PVS and inside the floor. > > -omega > Blackened Interactive > http://www.nofadz.com/blackened > ----- Original Message ----- > From: "_Phantom_" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Thursday, November 15, 2001 11:02 AM > Subject: Re: [hlcoders] [hlcoders]Temp entity problem > > > > The sprite is being pre-cache'd as it's being per-cache'd in the > > Precache(void) function in my CEMPGrenade class (along with the models it > > uses), also the fact that it works on certain objects but not on others > also > > proves it being precached. > > > > I did try your idea however, but it didnt make any difference at all, > still > > only works on the crossbeams and not on the floor > > :( > > > > > > > > > I had a look through this... like you say there's certainly no obvious > > > reason for it not to work. > > > > > > Just one thing though, you don't show that youv'e precached the > sprite... > > I > > > know you probably have if not it wouldn't compile, but just try > > changing.... > > > WRITE_SHORT( m_iSpriteTexture ); > > > to this: > > > WRITE_SHORT( g_sModelIndexFireball ); > > > > > > As a temporary measure to make sure the sprite is getting called > properly. > > > > > > Mike. > > > ----- Original Message ----- > > > From: "_Phantom_" <[EMAIL PROTECTED]> > > > To: <[EMAIL PROTECTED]> > > > Sent: Wednesday, November 14, 2001 10:47 PM > > > Subject: [hlcoders] [hlcoders]Temp entity problem > > > > > > > > > > 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 > > > > _______________________________________________ > > 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 _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders