From 21b012c8aaf30df2608ede8f222c4994cecfad39 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Tue, 11 Jan 2011 12:01:51 +0100 Subject: [PATCH] trueaim: add a cvar g_trueaim_minrange to customize it --- defaultXonotic.cfg | 1 + qcsrc/client/Main.qc | 2 ++ qcsrc/client/View.qc | 3 +++ qcsrc/client/main.qh | 1 + qcsrc/server/autocvars.qh | 1 + qcsrc/server/cl_client.qc | 1 + qcsrc/server/cl_weaponsystem.qc | 4 ++++ 7 files changed, 13 insertions(+) diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index 72f43f6fd..cac55e472 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -461,6 +461,7 @@ locs_enable 0 pausable 0 seta g_spawnshieldtime 1.000000 "number of seconds you are invincible after you spawned, this shield is lost after you fire" seta g_antilag 2 "AntiLag (0 = no AntiLag, 1 = verified client side hit scan, 2 = server side hit scan in the past, 3 = unverified client side hit scan)" +set g_trueaim_minrange 128 "TrueAim minimum range (TrueAim adjusts shots so they hit the crosshair point even though the gun is not at the screen center)" set g_antilag_nudge 0 "don't touch" set g_antilag_bullets 1 "Bullets AntiLag (0 = no AntiLag, 1 = server side hit scan in the past) - DO NOT TOUCH (severely changes weapon balance)" set g_shootfromclient 1 "let client decide if it has the gun left or right; if set to 2, center handedness is allowed, and defaulted to, too; see also cl_gunalign" diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index 048773a01..044569fb5 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -1099,6 +1099,8 @@ void Ent_Init() cr_maxbullets = ReadByte(); + g_trueaim_minrange = ReadCoord(); + if(!postinit) PostInit(); } diff --git a/qcsrc/client/View.qc b/qcsrc/client/View.qc index 704e58107..1cb624de6 100644 --- a/qcsrc/client/View.qc +++ b/qcsrc/client/View.qc @@ -306,6 +306,9 @@ float TrueAimCheck() traceline(view_origin, view_origin + view_forward * MAX_SHOT_DISTANCE, mv, ta); trueaimpoint = trace_endpos; + if(vlen(trueaimpoint - view_origin) < g_trueaim_minrange) + trueaimpoint = view_origin + view_forward * g_trueaim_minrange; + if(vecs_x > 0) vecs_y = -vecs_y; else diff --git a/qcsrc/client/main.qh b/qcsrc/client/main.qh index 3219d338f..364e5a999 100644 --- a/qcsrc/client/main.qh +++ b/qcsrc/client/main.qh @@ -162,3 +162,4 @@ float g_balance_grenadelauncher_bouncefactor; float g_balance_grenadelauncher_bouncestop; float g_balance_electro_secondary_bouncefactor; float g_balance_electro_secondary_bouncestop; +float g_trueaim_minrange; diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index b00c1acc4..427a60c5e 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -1184,3 +1184,4 @@ float autocvar_timelimit_suddendeath; float autocvar_waypoint_benchmark; float autocvar_welcome_message_time; float autocvar_sv_gameplayfix_gravityunaffectedbyticrate; +float autocvar_g_trueaim_minrange; diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index cb2d2ed3d..2e5c60118 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -1108,6 +1108,7 @@ float ClientInit_SendEntity(entity to, float sf) WriteByte(MSG_ENTITY, autocvar_g_balance_sniperrifle_secondary); // client has to know if it should zoom or not WriteByte(MSG_ENTITY, serverflags); // client has to know if it should zoom or not WriteByte(MSG_ENTITY, autocvar_g_balance_sniperrifle_magazinecapacity); // rifle max bullets + WriteCoord(MSG_ENTITY, autocvar_g_trueaim_minrange); return TRUE; } diff --git a/qcsrc/server/cl_weaponsystem.qc b/qcsrc/server/cl_weaponsystem.qc index a1d6fed14..057c5cb1d 100644 --- a/qcsrc/server/cl_weaponsystem.qc +++ b/qcsrc/server/cl_weaponsystem.qc @@ -158,6 +158,10 @@ void W_SetupShot_Dir_ProjectileSize_Range(entity ent, vector s_forward, vector m v_right = vr; v_up = vu; + // un-adjust trueaim if shotend is too close + if(vlen(w_shotend - (ent.origin + ent.view_ofs)) < autocvar_g_trueaim_minrange) + w_shotend = ent.origin + ent.view_ofs + s_forward * autocvar_g_trueaim_minrange; + // track max damage if(accuracy_canbegooddamage(ent)) accuracy_add(ent, ent.weapon, maxdamage, 0); -- 2.39.2