Eternal
Arena |
 |
|
 Coding Tutorials
|
Monday, May 14 |
 |
|
Coding Tutorials - Weapon Coding
Code to be Deleted or
Commented out Code to be Added or Changed
| Sticky Grenades |
| You might have noticed that the grenades
bounce about when they hit something, so making them sticy is
a simple change. |
| g_missile.c |
Have a look in g_missile.c for the
fire_grenade function, as we showed you in one of our
previous tutorials, you'll see the checks the game makes when
firing a off a grenade, which will look like that below, now
all you have to do to make them sticky is to comment out the
line that tells them to bounce about, which is marked in red. /*
=================
fire_grenade
=================
*/
gentity_t *fire_grenade (gentity_t *self, vec3_t start, vec3_t dir) {
gentity_t *bolt;
VectorNormalize (dir);
bolt = G_Spawn();
bolt->classname = "grenade";
bolt->nextthink = level.time + 2500;
bolt->think = G_ExplodeMissile;
bolt->s.eType = ET_MISSILE;
bolt->r.svFlags = SVF_USE_CURRENT_ORIGIN;
bolt->s.weapon = WP_GRENADE_LAUNCHER;
// bolt->s.eFlags = EF_BOUNCE_HALF;
bolt->r.ownerNum = self->s.number;
bolt->parent = self;
bolt->damage = 100;
bolt->splashDamage = 100;
bolt->splashRadius = 150;
bolt->methodOfDeath = MOD_GRENADE;
bolt->splashMethodOfDeath = MOD_GRENADE_SPLASH;
bolt->clipmask = MASK_SHOT;
bolt->s.pos.trType = TR_GRAVITY;
bolt->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME;
VectorCopy( start, bolt->s.pos.trBase );
VectorScale( dir, 700, bolt->s.pos.trDelta );
SnapVector( bolt->s.pos.trDelta ); // save net bandwidth
VectorCopy (start, bolt->r.currentOrigin);
return bolt;
} | | |
| Advertisement |
|
Web Search |
|
|
Poll |
|
|
|