|
Post by Paril on Apr 25, 2006 15:41:08 GMT -5
I emailed you the new DLL, replace your old StroggDM dll and re-host
|
|
|
Post by Wixen1 [Q2C] on Apr 25, 2006 15:44:47 GMT -5
Wix, can I email you the latest DLL? Yep, just be sure to tell me where to put it.... W1
|
|
|
Post by Wixen1 [Q2C] on Apr 25, 2006 15:52:03 GMT -5
Done...shall I launch again? W1
|
|
|
Post by Paril on Apr 25, 2006 16:01:27 GMT -5
Uh oh. Something isn't right in player_die, I'll look into it
|
|
|
Post by Paril on Apr 25, 2006 16:04:21 GMT -5
if someone might be interested in helping, here's the current function.
/* ================== player_die ================== */ void player_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point) { int n; int r; int temp; cplane_t plane; // surface normal at impact
if (self->client->hook) Release_Grapple(self->client->hook);
self->svflags &= ~SVF_NOCLIENT;
VectorClear (self->avelocity);
self->takedamage = DAMAGE_YES; self->movetype = MOVETYPE_TOSS;
self->s.modelindex2 = 0; // remove linked weapon model
self->s.angles[0] = 0; self->s.angles[2] = 0;
self->s.sound = 0; self->client->weapon_sound = 0;
self->maxs[2] = -8;
// self->solid = SOLID_NOT; self->svflags |= SVF_DEADMONSTER;
if (!self->deadflag) { self->client->respawn_time = level.time + 1.0; LookAtKiller (self, inflictor, attacker); self->client->ps.pmove.pm_type = PM_DEAD; ClientObituary (self, inflictor, attacker); if (deathmatch->value) Cmd_Help_f (self); // show scores
// clear inventory // this is kind of ugly, but it's how we want to handle keys in coop for (n = 0; n < game.num_items; n++) { if (coop->value && itemlist[n].flags & IT_KEY) self->client->resp.coop_respawn.inventory[n] = self->client->pers.inventory[n]; self->client->pers.inventory[n] = 0; } }
// remove powerups self->client->quad_framenum = 0; self->client->invincible_framenum = 0; self->client->breather_framenum = 0; self->client->enviro_framenum = 0; self->flags &= ~FL_POWER_ARMOR;
if (self->client->resp.class == 8) { BecomeExplosion1(self); gi.sound (self, CHAN_BODY, gi.soundindex ("flyer/flydeth1.wav"), 1, ATTN_NORM, 0); self->deadflag = DEAD_DEAD; gi.linkentity (self); ThrowClientHead (self);
self->takedamage = DAMAGE_NO; return; } if (self->client->resp.class == 16) { BecomeExplosion1(self); gi.sound (self, CHAN_BODY, gi.soundindex ("floater/fltdeth1.wav"), 1, ATTN_NORM, 0); self->deadflag = DEAD_DEAD; gi.linkentity (self); ThrowClientHead (self);
self->takedamage = DAMAGE_NO; return; } if (self->client->resp.class == 30) { BecomeExplosion1(self); gi.sound (self, CHAN_BODY, gi.soundindex ("widow/death.wav"), 1, ATTN_NORM, 0); self->deadflag = DEAD_DEAD; gi.linkentity (self); ThrowClientHead (self);
self->takedamage = DAMAGE_NO; return; } if (self->health < -40) { // gib gi.sound (self, CHAN_BODY, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0); for (n= 0; n < 4; n++) ThrowGib (self, "models/objects/gibs/sm_meat/tris.md2"); ThrowClientHead (self);
self->takedamage = DAMAGE_NO; } else { // normal death if (!self->deadflag) { static int i;
i = (i+1)%3; // start a death animation self->client->anim_priority = ANIM_DEATH; if (self->client->ps.pmove.pm_flags & PMF_DUCKED) { self->s.frame = FRAME_crdeath1-1; self->client->anim_end = FRAME_crdeath5; } else switch (self->client->resp.class) { case 0: self->s.frame = FRAME_death101-1; self->client->anim_end = FRAME_death106; break; case 1: self->s.frame = 441; self->client->anim_end = 464; break; case 2: self->s.frame = 125; self->client->anim_end = 144; break; case 3: self->s.frame = 222; self->client->anim_end = 253; break; case 4: self->s.frame = 147; self->client->anim_end = 176; break; case 5: self->s.frame = 190; self->client->anim_end = 200; break; case 6: self->s.frame = 61; self->client->anim_end = 82; break; case 7: self->s.frame = 98; self->client->anim_end = 127; break; case 8: break; case 9: self->s.frame = 236; self->client->anim_end = 243; break; case 10: self->s.frame = 48; self->client->anim_end = 59; break; case 11: self->s.frame = 132; self->client->anim_end = 180; break; case 12: self->s.frame = 123; self->client->anim_end = 140; break; case 13: self->s.frame = 15; self->client->anim_end = 23; break; case 14: self->s.frame = 32; self->client->anim_end = 38; break; case 15: self->s.frame = 162; self->client->anim_end = 172; break; case 16: break; case 17: self->s.frame = 104; self->client->anim_end = 159; break; case 18: self->s.frame = 31; self->client->anim_end = 80; break; case 19: self->s.frame = 50; self->client->anim_end = 144; break; case 20: self->s.frame = 441; self->client->anim_end = 464; break; case 21: self->s.frame = 61; self->client->anim_end = 82; break; case 22: self->s.frame = 123; self->client->anim_end = 140; break; case 23: self->s.frame = 48; self->client->anim_end = 59; break; case 24: self->s.frame = 98; self->client->anim_end = 127; break; case 25: self->s.frame = 114; self->client->anim_end = 125; break; case 26: self->s.frame = 162; self->client->anim_end = 172; break; case 27: self->s.frame = 70; self->client->anim_end = 88; break; case 28: self->s.frame = 147; self->client->anim_end = 176; break; case 29: self->s.frame = 62; self->client->anim_end = 77; break; case 30: break; case 31: self->s.frame = 86; self->client->anim_end = 125; break; default: self->s.frame = FRAME_death301-1; self->client->anim_end = FRAME_death308; break; } if (self->client->resp.class == 1) { gi.sound (self, CHAN_VOICE, gi.soundindex("soldier/soldeth1.wav"), 1, ATTN_NORM, 0); } if (self->client->resp.class == 20) { gi.sound (self, CHAN_VOICE, gi.soundindex("soldier/soldeth1.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 2) { gi.sound (self, CHAN_VOICE, gi.soundindex("infantry/infdeth1.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 3) { gi.sound (self, CHAN_VOICE, gi.soundindex("tank/death.wav"), 1, ATTN_NORM, 0); if (self->s.frame == 249) gi.sound (self, CHAN_AUTO, gi.soundindex("tank/thud.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 4) { gi.sound (self, CHAN_VOICE, gi.soundindex("medic/meddeth1.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 28) { gi.sound (self, CHAN_VOICE, gi.soundindex("medic_commander/meddeth.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 5) { gi.sound (self, CHAN_VOICE, gi.soundindex("gunner/death1.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 6) { gi.sound (self, CHAN_VOICE, gi.soundindex("gladiator/glddeth2.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 21) { gi.sound (self, CHAN_VOICE, gi.soundindex("gladiator/glddeth2.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 25) { gi.sound (self, CHAN_VOICE, gi.soundindex("gek/gk_deth1.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 27) { gi.sound (self, CHAN_VOICE, gi.soundindex("stalker/death.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 7) { gi.sound (self, CHAN_VOICE, gi.soundindex("bosstank/btkdeth1.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 24) { gi.sound (self, CHAN_VOICE, gi.soundindex("bosstank/btkdeth1.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 9) { gi.sound (self, CHAN_VOICE, gi.soundindex("berserk/death.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 10) { r = rndnum (1, 3); gi.sound (self, CHAN_VOICE, gi.soundindex(va("chick/Chkdeth%d.wav", r)), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 23) { r = rndnum (1, 3); gi.sound (self, CHAN_VOICE, gi.soundindex(va("chick/Chkdeth%d.wav", r)), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 11) { gi.sound (self, CHAN_VOICE, gi.soundindex("bosshovr/BHVDETH1.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 29) { gi.sound (self, CHAN_VOICE, gi.soundindex("carrier/death.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 12) { gi.sound (self, CHAN_VOICE, gi.soundindex("brain/brndeth1.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 22) { gi.sound (self, CHAN_VOICE, gi.soundindex("brain/brndeth1.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 13) { gi.sound (self, CHAN_VOICE, gi.soundindex("mutant/mutdeth1.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 18) { gi.sound (self, CHAN_VOICE, gi.soundindex("boss3/BS3DETH1.WAV"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 17) { gi.sound (self, CHAN_VOICE, gi.soundindex("flipper/Flpdeth1.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 19) { gi.sound (self, CHAN_VOICE, gi.soundindex("makron/death.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 15) { gi.sound (self, CHAN_VOICE, gi.soundindex("hover/hovdeth1.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 26) { gi.sound (self, CHAN_VOICE, gi.soundindex("daedalus/daeddeth2.wav"), 1, ATTN_NORM, 0); } else if (self->client->resp.class == 14) { gi.sound (self, CHAN_VOICE, gi.soundindex("parasite/Pardeth1.wav"), 1, ATTN_NORM, 0); } } }
self->deadflag = DEAD_DEAD;
gi.linkentity (self); }
I'll try and make a replacement..
|
|
|
Post by Wixen1 [Q2C] on Apr 25, 2006 16:08:17 GMT -5
Jeeez...lol...you dont have to print it all out, I dont understand halfes of it. Il be on again in an hour or so...I have guests... W1
|
|
|
Post by Paril on Apr 25, 2006 16:10:31 GMT -5
Wait, I think I found it, in ClientObituary, time to test..
|
|
|
Post by Paril on Apr 25, 2006 16:13:20 GMT -5
Alright Wixen. Just maybe someone wanted to see it Anyways, found the bug, in clientobituary, it was a check to see if the enemy was a monster.... _Paril
|
|
|
Post by Paril on Apr 25, 2006 16:43:16 GMT -5
While I'm sitting here, I'm going to make (well, remake..) a map. I'll show you it when it's done.
Can someone rad/vis it for me when it's done? It takes hours for me..
(If anyone is wondering why this is still under StroggDM, it's because it will be one of the maps included..)
-Paril
|
|
|
Post by napalmdeath on Apr 25, 2006 17:19:20 GMT -5
Should we all download the V5.3 or continue to wait? I wasn't sure because it seems you sent Wixen a newer dll than what might be in the 5.3 download.
|
|
|
Post by Wixen1 [Q2C] on Apr 25, 2006 17:21:44 GMT -5
Iam ready, if you have another dll or change, let me know. So we can continue testing.. Wixen1
|
|
Whirlingdervish
Clan Q2C
100%
Clan Q2C Resident Smartass BANNED FOR STALKING AND FLAMING
Posts: 962
|
Post by Whirlingdervish on Apr 25, 2006 17:30:46 GMT -5
I had fun trying to tell what all of the nested "if"s were doing without proper code indentation.... lol. I was wondering if it would be easier to use some more switch/case operators instead of all of those "else if"s near the end...
one question...
does this need a comparison operator (== etc..)?
"
else { // normal death if (!self->deadflag)
"
or does it use the "not" to switch the current value of self->deadflag to its opposite and then pass this value to the "if"?
|
|