From 49de9dbf6cb39e940d9351369bed1afbc87e80a8 Mon Sep 17 00:00:00 2001 From: div0 Date: Mon, 19 Oct 2009 07:27:47 +0000 Subject: [PATCH] fix rifle crosshair and crash git-svn-id: svn://svn.icculus.org/nexuiz/trunk@8153 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/client/View.qc | 30 ++++++++++++++++++------------ data/qcsrc/client/projectile.qc | 1 + 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/data/qcsrc/client/View.qc b/data/qcsrc/client/View.qc index cad9f48d7..8766ea5fc 100644 --- a/data/qcsrc/client/View.qc +++ b/data/qcsrc/client/View.qc @@ -260,8 +260,12 @@ float TrueAimCheck() vector vecs, trueaimpoint, w_shotorg; vector mi, ma, dv; float shottype; + entity ta; + float mv; mi = ma = '0 0 0'; + ta = trueaim; + mv = MOVE_NOMONSTERS; switch(activeweapon) { @@ -270,10 +274,16 @@ float TrueAimCheck() case WEP_HOOK: // no trueaim case WEP_GRENADE_LAUNCHER: // toss curve return SHOTTYPE_HITWORLD; + case WEP_NEX: + case WEP_MINSTANEX: + mv = MOVE_NORMAL; + break; case WEP_CAMPINGRIFLE: + ta = trueaim_rifle; + mv = MOVE_NORMAL; if(zoomscript_caught) { - tracebox(view_origin, '0 0 0', '0 0 0', view_origin + view_forward * MAX_SHOT_DISTANCE, MOVE_NORMAL, trueaim); + tracebox(view_origin, '0 0 0', '0 0 0', view_origin + view_forward * MAX_SHOT_DISTANCE, mv, ta); return EnemyHitCheck(); } break; @@ -293,10 +303,7 @@ float TrueAimCheck() vecs = decompressShotOrigin(getstati(STAT_SHOTORG)); - if(activeweapon == WEP_CAMPINGRIFLE) - traceline(view_origin, view_origin + view_forward * MAX_SHOT_DISTANCE, MOVE_NORMAL, trueaim_rifle); - else - traceline(view_origin, view_origin + view_forward * MAX_SHOT_DISTANCE, MOVE_NOMONSTERS, trueaim); + traceline(view_origin, view_origin + view_forward * MAX_SHOT_DISTANCE, mv, ta); trueaimpoint = trace_endpos; if(vecs_x > 0) @@ -308,10 +315,10 @@ float TrueAimCheck() w_shotorg = view_origin + dv; // now move the vecs forward as much as requested if possible - tracebox(w_shotorg, mi, ma, w_shotorg + view_forward * (vecs_x + nudge), MOVE_NORMAL, trueaim); // FIXME this MOVE_NORMAL part will misbehave a little in csqc + tracebox(w_shotorg, mi, ma, w_shotorg + view_forward * (vecs_x + nudge), MOVE_NORMAL, ta); // FIXME this MOVE_NORMAL part will misbehave a little in csqc w_shotorg = trace_endpos - view_forward * nudge; - tracebox(w_shotorg, mi, ma, trueaimpoint, MOVE_NORMAL, trueaim); + tracebox(w_shotorg, mi, ma, trueaimpoint, MOVE_NORMAL, ta); shottype = EnemyHitCheck(); if(shottype != SHOTTYPE_HITWORLD) return shottype; @@ -732,22 +739,21 @@ void CSQC_UpdateView(float w, float h) else bullets = 0; -#define CROSSHAIR_DRAW_RING(i,j,sz,dummy1,dummy2) \ +#define CROSSHAIR_DRAW_RING(i,j,sz,wcross_name,wcross_alpha) \ drawpic(wcross_origin - ('0.5 0 0' * (sz * wcross_size_x * ring_scale + i * wcross_blur) + '0 0.5 0' * (sz * wcross_size_y * ring_scale + j * wcross_blur)), strcat("gfx/hud/rifle_ring_", ftos(bullets)), sz * wcross_size * ring_scale, wcross_color, wcross_alpha, DRAWFLAG_NORMAL) -#define CROSSHAIR_DO_BLUR(M,sz,a,b) \ +#define CROSSHAIR_DO_BLUR(M,sz,wcross_name,wcross_alpha) \ do \ { \ if(wcross_blur > 0) \ { \ - wcross_alpha = wcross_alpha * 0.04; \ for(i = -2; i <= 2; ++i) \ for(j = -2; j <= 2; ++j) \ - M(i,j,sz,a,b); \ + M(i,j,sz,wcross_name,wcross_alpha*0.04); \ } \ else \ { \ - M(0,0,sz,a,b); \ + M(0,0,sz,wcross_name,wcross_alpha); \ } \ } \ while(0) diff --git a/data/qcsrc/client/projectile.qc b/data/qcsrc/client/projectile.qc index 93e438186..7024371d9 100644 --- a/data/qcsrc/client/projectile.qc +++ b/data/qcsrc/client/projectile.qc @@ -293,6 +293,7 @@ void Ent_Projectile() case PROJECTILE_ROCKET: setmodel(self, "models/rocket.md3"); self.scale = 2; break; case PROJECTILE_BULLET: setmodel(self, "models/tracer.mdl"); break; case PROJECTILE_BULLET_GLOWING: setmodel(self, "models/tracer.mdl"); break; + case PROJECTILE_BULLET_GLOWING_TRACER: setmodel(self, "models/tracer.mdl"); break; case PROJECTILE_CRYLINK: setmodel(self, "models/plasmatrail.mdl"); break; case PROJECTILE_CRYLINK_BOUNCING: setmodel(self, "models/plasmatrail.mdl"); break; case PROJECTILE_ELECTRO_BEAM: setmodel(self, "models/elaser.mdl"); break; -- 2.39.2