From 819941d0818a9ef4c800702b62d1654df16e75af Mon Sep 17 00:00:00 2001 From: div0 Date: Sun, 4 Oct 2009 11:24:11 +0000 Subject: [PATCH] cl_noantilag g_balance_campingrifle_tracer git-svn-id: svn://svn.icculus.org/nexuiz/trunk@8050 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/balance.cfg | 3 +- data/balance25.cfg | 3 +- data/balanceHavoc.cfg | 3 +- data/balanceSamual.cfg | 3 +- data/defaultNexuiz.cfg | 2 + data/qcsrc/server/cl_weaponsystem.qc | 72 +--------------------------- data/qcsrc/server/constants.qh | 2 +- data/qcsrc/server/defs.qh | 1 + data/qcsrc/server/g_subs.qc | 4 +- data/qcsrc/server/miscfunctions.qc | 1 + data/qcsrc/server/w_campingrifle.qc | 2 +- data/qcsrc/server/w_common.qc | 2 +- 12 files changed, 18 insertions(+), 80 deletions(-) diff --git a/data/balance.cfg b/data/balance.cfg index 5348327f5..a4458be01 100644 --- a/data/balance.cfg +++ b/data/balance.cfg @@ -3,7 +3,7 @@ // // And... don't forget to edit the other balance*.cfg too. -set cvar_check_balance 9b590c8f7c3065d917ac8e2e5e842a88 +set cvar_check_balance 78188ae599396a346b72738a042880c5 // {{{ weapon replacement // NOTE: this only replaces weapons on the map @@ -487,6 +487,7 @@ set g_balance_campingrifle_magazinecapacity 0 set g_balance_campingrifle_reloadtime 2 // matches reload anim set g_balance_campingrifle_auto_reload_after_changing_weapons 0 set g_balance_campingrifle_bursttime 0.85 // 0.35 - 0.1 + 0.35 - 0.1 + 0.35 = three secondaries +set g_balance_campingrifle_tracer 1 set g_balance_campingrifle_primary_damage 50 set g_balance_campingrifle_primary_headshotaddeddamage 50 set g_balance_campingrifle_primary_spread 0 diff --git a/data/balance25.cfg b/data/balance25.cfg index f5706222b..7d49cf607 100644 --- a/data/balance25.cfg +++ b/data/balance25.cfg @@ -3,7 +3,7 @@ // // And... don't forget to edit the other balance*.cfg too. -set cvar_check_balance 9b590c8f7c3065d917ac8e2e5e842a88 +set cvar_check_balance 78188ae599396a346b72738a042880c5 // {{{ weapon replacement // NOTE: this only replaces weapons on the map @@ -487,6 +487,7 @@ set g_balance_campingrifle_magazinecapacity 8 set g_balance_campingrifle_reloadtime 2 // matches reload anim set g_balance_campingrifle_auto_reload_after_changing_weapons 0 set g_balance_campingrifle_bursttime 0 +set g_balance_campingrifle_tracer 0 set g_balance_campingrifle_primary_damage 60 set g_balance_campingrifle_primary_headshotaddeddamage 100 set g_balance_campingrifle_primary_spread 0 diff --git a/data/balanceHavoc.cfg b/data/balanceHavoc.cfg index 3b53b3359..2b11d341d 100644 --- a/data/balanceHavoc.cfg +++ b/data/balanceHavoc.cfg @@ -3,7 +3,7 @@ // // And... don't forget to edit the other balance*.cfg too. -set cvar_check_balance 9b590c8f7c3065d917ac8e2e5e842a88 +set cvar_check_balance 78188ae599396a346b72738a042880c5 // {{{ weapon replacement // NOTE: this only replaces weapons on the map @@ -487,6 +487,7 @@ set g_balance_campingrifle_magazinecapacity 0 set g_balance_campingrifle_reloadtime 2 // matches reload anim set g_balance_campingrifle_auto_reload_after_changing_weapons 0 set g_balance_campingrifle_bursttime 0.85 // 0.35 - 0.1 + 0.35 - 0.1 + 0.35 = three secondaries +set g_balance_campingrifle_tracer 1 set g_balance_campingrifle_primary_damage 50 set g_balance_campingrifle_primary_headshotaddeddamage 50 set g_balance_campingrifle_primary_spread 0 diff --git a/data/balanceSamual.cfg b/data/balanceSamual.cfg index 3adb0a8f3..26930eb4b 100644 --- a/data/balanceSamual.cfg +++ b/data/balanceSamual.cfg @@ -3,7 +3,7 @@ // // And... don't forget to edit the other balance*.cfg too. -set cvar_check_balance 9b590c8f7c3065d917ac8e2e5e842a88 +set cvar_check_balance 78188ae599396a346b72738a042880c5 // {{{ weapon replacement // NOTE: this only replaces weapons on the map @@ -487,6 +487,7 @@ set g_balance_campingrifle_magazinecapacity 0 set g_balance_campingrifle_reloadtime 2 // matches reload anim set g_balance_campingrifle_auto_reload_after_changing_weapons 0 set g_balance_campingrifle_bursttime 0.85 // 0.35 - 0.1 + 0.35 - 0.1 + 0.35 = three secondaries +set g_balance_campingrifle_tracer 1 set g_balance_campingrifle_primary_damage 50 set g_balance_campingrifle_primary_headshotaddeddamage 50 set g_balance_campingrifle_primary_spread 0 diff --git a/data/defaultNexuiz.cfg b/data/defaultNexuiz.cfg index 342245a34..02f51f836 100644 --- a/data/defaultNexuiz.cfg +++ b/data/defaultNexuiz.cfg @@ -1646,3 +1646,5 @@ set g_ghost_items 1 "enable ghosted items (when between 0 and 1, overrides the a set sv_weaponstats_damagefile "" "when set to a file name, per-weapon damage stats get written to that file" set sv_weaponstats_killfile "" "when set to a file name, per-weapon kill stats get written to that file" + +seta cl_noantilag 0 "turn this on if you believe antilag is bad" diff --git a/data/qcsrc/server/cl_weaponsystem.qc b/data/qcsrc/server/cl_weaponsystem.qc index 900251838..2d6bfce55 100644 --- a/data/qcsrc/server/cl_weaponsystem.qc +++ b/data/qcsrc/server/cl_weaponsystem.qc @@ -184,77 +184,8 @@ void W_SetupShot_Dir_ProjectileSize(entity ent, vector s_forward, vector mi, vec // calculate the shotdir from the chosen shotorg w_shotdir = normalize(trueaimpoint - w_shotorg); -#if 0 - // explanation of g_antilag: - // if client reports it was aiming at a player, and the serverside trace - // says it would miss, change the aim point to the player's new origin, - // but only if the shot at the player's new origin would hit of course - // - // FIXME: a much better method for bullet weapons would be to leave a - // trail of lagged 'ghosts' behind players, and see if the bullet hits the - // ghost corresponding to this player's ping time, and if so it would do - // damage to the real player - if (antilag) - if (ent.cursor_trace_ent) // client was aiming at someone - if (ent.cursor_trace_ent != ent) // just to make sure - if (ent.cursor_trace_ent.takedamage) // and that person is killable - if (ent.cursor_trace_ent.classname == "player") // and actually a player - if (cvar("g_antilag") == 1) - { - // verify that the shot would miss without antilag - // (avoids an issue where guns would always shoot at their origin) - traceline(w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, MOVE_NORMAL, ent); - if (!trace_ent.takedamage) - { - // verify that the shot would hit if altered - traceline(w_shotorg, ent.cursor_trace_ent.origin, MOVE_NORMAL, ent); - if (trace_ent == ent.cursor_trace_ent) - { - // verify that the shot would hit in the past - if(ent.antilag_debug) - antilag_takeback(ent.cursor_trace_ent, time - ent.antilag_debug); - else - antilag_takeback(ent.cursor_trace_ent, time - ANTILAG_LATENCY(ent)); - - traceline(ent.origin + ent.view_ofs, ent.origin + ent.view_ofs + v_forward * MAX_SHOT_DISTANCE, MOVE_NORMAL, ent); - antilag_restore(ent.cursor_trace_ent); - - if(trace_ent == ent.cursor_trace_ent) - { - // HIT! - w_shotdir = normalize(ent.cursor_trace_ent.origin - w_shotorg); - dprint("ANTILAG HIT for ", ent.netname, "\n"); - } - else - { - // prydon cursor aimbot or odd network conditions - dprint("WARNING: antilag ghost trace for ", ent.netname, " failed!\n"); - } - - if(cvar("developer") >= 2) - { - vector v, vplus, vel; - float X; - v = antilag_takebackorigin(ent.cursor_trace_ent, time - (ANTILAG_LATENCY(ent) )); - vplus = antilag_takebackorigin(ent.cursor_trace_ent, time - (ANTILAG_LATENCY(ent) + 0.01)); - vel = (vplus - v) * (1 / 0.01); - // solve: v + X * vel = closest to ent.origin + ent.view_ofs, v_forward axis - v -= (ent.origin + ent.view_ofs); - // solve: v + X * vel = closest to v_forward axis - // project into 2D by subtracting v_forward components: - v -= (v * v_forward) * v_forward; - vel -= (vel * v_forward) * v_forward; - // solve: v + X * vel = closest to origin - // (v + X * vel)^2 closest to 0 - // v^2 + 2 * X * (v * vel) + X^2 * vel^2 closest to 0 - X = -(v * vel) / (vel * vel); - dprint("dead center needs adjustment of ", ftos(X), " (that is, ", ftos(ANTILAG_LATENCY(ent) + X), " instead of ", ftos(ANTILAG_LATENCY(ent)), "\n"); - } - } - } - } -#else if (antilag) + if (!ent.cvar_cl_noantilag) { if (cvar("g_antilag") == 1) // switch to "ghost" if not hitting original { @@ -294,7 +225,6 @@ void W_SetupShot_Dir_ProjectileSize(entity ent, vector s_forward, vector mi, vec } } } -#endif ent.dphitcontentsmask = oldsolid; // restore solid type (generally SOLID_SLIDEBOX) diff --git a/data/qcsrc/server/constants.qh b/data/qcsrc/server/constants.qh index b01af9229..c2d764ebe 100644 --- a/data/qcsrc/server/constants.qh +++ b/data/qcsrc/server/constants.qh @@ -1,5 +1,5 @@ string CVAR_CHECK_DEFAULT = "091f36c4fb0d7b22bbd2d2fdff8b1447"; -string CVAR_CHECK_BALANCE = "9b590c8f7c3065d917ac8e2e5e842a88"; +string CVAR_CHECK_BALANCE = "78188ae599396a346b72738a042880c5"; float FALSE = 0; float TRUE = 1; diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index 86dded16e..d81c607e8 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -338,6 +338,7 @@ float sv_clforceplayermodels; float sv_loddistance1; float sv_loddistance2; .float cvar_cl_gunalign; +.float cvar_cl_noantilag; .float version_nagtime; diff --git a/data/qcsrc/server/g_subs.qc b/data/qcsrc/server/g_subs.qc index 10da32618..624ead5a8 100644 --- a/data/qcsrc/server/g_subs.qc +++ b/data/qcsrc/server/g_subs.qc @@ -360,13 +360,13 @@ void traceline_antilag_force (entity source, vector v1, vector v2, float nomonst } void traceline_antilag (entity source, vector v1, vector v2, float nomonst, entity forent, float lag) { - if (cvar("g_antilag") != 2) + if (cvar("g_antilag") != 2 || source.cvar_cl_noantilag) lag = 0; traceline_antilag_force(source, v1, v2, nomonst, forent, lag); } void tracebox_antilag (entity source, vector v1, vector mi, vector ma, vector v2, float nomonst, entity forent, float lag) { - if (cvar("g_antilag") != 2) + if (cvar("g_antilag") != 2 || source.cvar_cl_noantilag) lag = 0; tracebox_antilag_force(source, v1, mi, ma, v2, nomonst, forent, lag); } diff --git a/data/qcsrc/server/miscfunctions.qc b/data/qcsrc/server/miscfunctions.qc index 4d1857eee..2df65cd1f 100644 --- a/data/qcsrc/server/miscfunctions.qc +++ b/data/qcsrc/server/miscfunctions.qc @@ -560,6 +560,7 @@ void GetCvars(float f) GetCvars_handleFloat(s, f, cvar_cl_forceplayermodelsfromnexuiz, "cl_forceplayermodelsfromnexuiz"); #endif GetCvars_handleFloatOnce(s, f, cvar_cl_gunalign, "cl_gunalign"); + GetCvars_handleFloatOnce(s, f, cvar_cl_noantilag, "cl_noantilag"); // fixup of switchweapon (needed for LMS or when spectating is disabled, as PutClientInServer comes too early) diff --git a/data/qcsrc/server/w_campingrifle.qc b/data/qcsrc/server/w_campingrifle.qc index 69211cc65..218681593 100644 --- a/data/qcsrc/server/w_campingrifle.qc +++ b/data/qcsrc/server/w_campingrifle.qc @@ -88,7 +88,7 @@ void W_CampingRifle_FireBullet(float pSpread, float pDamage, float pHeadshotAdde w_shotorg = self.origin + self.view_ofs + ((w_shotorg - self.origin - self.view_ofs) * v_forward) * v_forward; } - fireBallisticBullet(w_shotorg, w_shotdir, pSpread, pSpeed, pLifetime, pDamage, pHeadshotAddedDamage / pDamage, pForce, deathtype, EF_RED, 1, pBulletConstant); + fireBallisticBullet(w_shotorg, w_shotdir, pSpread, pSpeed, pLifetime, pDamage, pHeadshotAddedDamage / pDamage, pForce, deathtype, (cvar("g_balance_campingrifle_tracer") ? EF_RED : 0), 1, pBulletConstant); endFireBallisticBullet(); if (cvar("g_casings") >= 2) diff --git a/data/qcsrc/server/w_common.qc b/data/qcsrc/server/w_common.qc index e88625dec..93ed57bef 100644 --- a/data/qcsrc/server/w_common.qc +++ b/data/qcsrc/server/w_common.qc @@ -411,7 +411,7 @@ void fireBallisticBullet(vector start, vector dir, float spread, float pSpeed, f lag = 0; if(clienttype(self) != CLIENTTYPE_REAL) lag = 0; - if(cvar("g_antilag") == 0) + if(cvar("g_antilag") == 0 || self.cvar_cl_noantilag) lag = 0; // only do hitscan, but no antilag if(lag) -- 2.39.2