From cd1297e5c70f7007506f0ba6279b07c27dcde397 Mon Sep 17 00:00:00 2001 From: GLoOoccK <155241167+GLoOoccK@users.noreply.github.com> Date: Sun, 31 May 2026 10:52:00 -0300 Subject: [PATCH 1/5] cl_dll: ammo: fix MsgFunc_CurWeapon --- cl_dll/ammo.cpp | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/cl_dll/ammo.cpp b/cl_dll/ammo.cpp index 23fe2dba..935b36d1 100644 --- a/cl_dll/ammo.cpp +++ b/cl_dll/ammo.cpp @@ -565,7 +565,7 @@ int CHudAmmo::MsgFunc_HideWeapon( const char *pszName, int iSize, void *pbuf ) if (gEngfuncs.IsSpectateOnly()) return 1; - if ( gHUD.m_iHideHUDDisplay & ( HIDEHUD_WEAPONS | HIDEHUD_FLASHLIGHT | HIDEHUD_ALL ) ) + if ( gHUD.m_iHideHUDDisplay & ( HIDEHUD_WEAPONS | HIDEHUD_FLASHLIGHT | HIDEHUD_ALL | HIDEHUD_CROSSHAIR ) ) { gpActiveSel = NULL; HideCrosshair(); @@ -581,12 +581,20 @@ int CHudAmmo::MsgFunc_HideWeapon( const char *pszName, int iSize, void *pbuf ) // int CHudAmmo::MsgFunc_CurWeapon(const char *pszName, int iSize, void *pbuf ) { + int fOnTarget = FALSE; + BufferReader reader( pszName, pbuf, iSize ); int iState = reader.ReadByte(); int iId = reader.ReadChar(); int iClip = reader.ReadChar(); + // detect if we're also on target + if( iState > 1 ) + { + fOnTarget = TRUE; + } + if ( iId < 1 ) { HideCrosshair(); @@ -621,6 +629,18 @@ int CHudAmmo::MsgFunc_CurWeapon(const char *pszName, int iSize, void *pbuf ) m_pWeapon = pWeapon; + if( gHUD.m_iFOV >= 90 ) + { // normal crosshairs + HideCrosshair(); // hide static + } + else + { // zoomed crosshairs + if( fOnTarget && m_pWeapon->hZoomedAutoaim ) + SetCrosshair( m_pWeapon->hZoomedAutoaim, m_pWeapon->rcZoomedAutoaim, 255, 255, 255 ); + else + SetCrosshair( m_pWeapon->hZoomedCrosshair, m_pWeapon->rcZoomedCrosshair, 255, 255, 255 ); + } + m_fFade = 200.0f; //!!! return 1; @@ -1030,10 +1050,9 @@ int CHudAmmo::Draw(float flTime) // place it here, so pretty dynamic crosshair will work even in spectator! if( gHUD.m_iFOV > 40 ) { - HideCrosshair(); // hide static - // draw a dynamic crosshair DrawCrosshair(); + DrawSpriteCrosshair(); } else { From 800bc3a531fb14de0bb5a1ddf471e7a0e3089912 Mon Sep 17 00:00:00 2001 From: GLoOoccK <155241167+GLoOoccK@users.noreply.github.com> Date: Sun, 31 May 2026 11:03:40 -0300 Subject: [PATCH 2/5] cl_dll: ammo: fix MsgFunc_CurWeapon --- cl_dll/ammo.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cl_dll/ammo.cpp b/cl_dll/ammo.cpp index 935b36d1..498731b2 100644 --- a/cl_dll/ammo.cpp +++ b/cl_dll/ammo.cpp @@ -1051,7 +1051,9 @@ int CHudAmmo::Draw(float flTime) if( gHUD.m_iFOV > 40 ) { // draw a dynamic crosshair - DrawCrosshair(); + if( !( gHUD.m_iHideHUDDisplay & HIDEHUD_CROSSHAIR ) ) + DrawCrosshair(); + DrawSpriteCrosshair(); } else From c9b4123d2f9f8d372d5bd0bd741e56465d40aa20 Mon Sep 17 00:00:00 2001 From: GLoOoccK <155241167+GLoOoccK@users.noreply.github.com> Date: Sun, 31 May 2026 11:40:38 -0300 Subject: [PATCH 3/5] cl_dll: ammo: fix MsgFunc_CurWeapon --- cl_dll/ammo.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cl_dll/ammo.cpp b/cl_dll/ammo.cpp index 498731b2..968867a8 100644 --- a/cl_dll/ammo.cpp +++ b/cl_dll/ammo.cpp @@ -631,6 +631,11 @@ int CHudAmmo::MsgFunc_CurWeapon(const char *pszName, int iSize, void *pbuf ) if( gHUD.m_iFOV >= 90 ) { // normal crosshairs + if( fOnTarget && m_pWeapon->hAutoaim ) + SetCrosshair( m_pWeapon->hAutoaim, m_pWeapon->rcAutoaim, 255, 255, 255 ); + else + SetCrosshair( m_pWeapon->hCrosshair, m_pWeapon->rcCrosshair, 255, 255, 255 ); + HideCrosshair(); // hide static } else From 0ee2ec4c26d220f065b0ad22c4fa4ce862c9fd60 Mon Sep 17 00:00:00 2001 From: GLoOoccK <155241167+GLoOoccK@users.noreply.github.com> Date: Sun, 31 May 2026 17:48:31 -0300 Subject: [PATCH 4/5] cl_dll: ammo: fix Draw --- cl_dll/ammo.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cl_dll/ammo.cpp b/cl_dll/ammo.cpp index 968867a8..5a8dcdb3 100644 --- a/cl_dll/ammo.cpp +++ b/cl_dll/ammo.cpp @@ -1052,6 +1052,9 @@ int CHudAmmo::Draw(float flTime) if (!(gHUD.m_iWeaponBits & (1<<(WEAPON_SUIT)) )) return 1; + if( gHUD.m_iHideHUDDisplay & ( HIDEHUD_WEAPONS | HIDEHUD_ALL ) ) + return 1; + // place it here, so pretty dynamic crosshair will work even in spectator! if( gHUD.m_iFOV > 40 ) { @@ -1071,9 +1074,6 @@ int CHudAmmo::Draw(float flTime) } } - if ( (gHUD.m_iHideHUDDisplay & ( HIDEHUD_WEAPONS | HIDEHUD_ALL )) ) - return 1; - // Draw Weapon Menu DrawWList(flTime); From cd9fedbfdb4b23cd7db87adf5795ee43bfa06906 Mon Sep 17 00:00:00 2001 From: GLoOoccK <155241167+GLoOoccK@users.noreply.github.com> Date: Tue, 2 Jun 2026 18:20:48 -0300 Subject: [PATCH 5/5] cl_dll: ammo: fix DrawCrosshair --- cl_dll/ammo.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/cl_dll/ammo.cpp b/cl_dll/ammo.cpp index 5a8dcdb3..a5ac4683 100644 --- a/cl_dll/ammo.cpp +++ b/cl_dll/ammo.cpp @@ -1049,12 +1049,6 @@ int CHudAmmo::Draw(float flTime) int a, x, y, r, g, b; int AmmoWidth; - if (!(gHUD.m_iWeaponBits & (1<<(WEAPON_SUIT)) )) - return 1; - - if( gHUD.m_iHideHUDDisplay & ( HIDEHUD_WEAPONS | HIDEHUD_ALL ) ) - return 1; - // place it here, so pretty dynamic crosshair will work even in spectator! if( gHUD.m_iFOV > 40 ) { @@ -1074,6 +1068,12 @@ int CHudAmmo::Draw(float flTime) } } + if (!(gHUD.m_iWeaponBits & (1<<(WEAPON_SUIT)) )) + return 1; + + if( gHUD.m_iHideHUDDisplay & ( HIDEHUD_WEAPONS | HIDEHUD_ALL ) ) + return 1; + // Draw Weapon Menu DrawWList(flTime); @@ -1602,6 +1602,9 @@ void CHudAmmo::DrawCrosshair( int weaponId ) void CHudAmmo::DrawCrosshair() { + if( g_iUser1 && g_iUser1 != OBS_IN_EYE ) + return; + int flags, iDeltaDistance, iDistance, iLength, weaponid; float flCrosshairDistance;