Skip to content

Commit df4d35d

Browse files
authored
Fix healthbar blinking faster on high fps (#2487)
1 parent 9c571d6 commit df4d35d

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

Client/multiplayer_sa/CMultiplayerSA.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,8 @@ DWORD RETURN_CTaskSimpleSwim_ProcessSwimmingResistance = 0x68A50E;
288288
const DWORD HOOKPOS_Idle_CWorld_ProcessPedsAfterPreRender = 0x53EA03;
289289
const DWORD RETURN_Idle_CWorld_ProcessPedsAfterPreRender = 0x53EA08;
290290

291+
#define HOOKPOS_CHud_RenderHealthBar 0x5892AF
292+
291293
#define HOOKPOS_CAEAmbienceTrackManager__UpdateAmbienceTrackAndVolume_StartRadio 0x4D7198
292294
#define HOOKPOS_CAEAmbienceTrackManager__UpdateAmbienceTrackAndVolume_StopRadio 0x4D71E7
293295

@@ -530,6 +532,8 @@ void HOOK_CAEVehicleAudioEntity__ProcessDummyProp();
530532
void HOOK_CTaskSimpleSwim_ProcessSwimmingResistance();
531533
void HOOK_Idle_CWorld_ProcessPedsAfterPreRender();
532534

535+
void HOOK_CHud_RenderHealthBar();
536+
533537
void HOOK_CAEAmbienceTrackManager__UpdateAmbienceTrackAndVolume_StartRadio();
534538
void HOOK_CAEAmbienceTrackManager__UpdateAmbienceTrackAndVolume_StopRadio();
535539

@@ -762,6 +766,8 @@ void CMultiplayerSA::InitHooks()
762766
HookInstall(HOOKPOS_CAnimManager_AddAnimationAndSync, (DWORD)HOOK_CAnimManager_AddAnimationAndSync, 10);
763767
HookInstall(HOOKPOS_CAnimManager_BlendAnimation_Hierarchy, (DWORD)HOOK_CAnimManager_BlendAnimation_Hierarchy, 5);
764768

769+
HookInstall(HOOKPOS_CHud_RenderHealthBar, (DWORD)HOOK_CHud_RenderHealthBar, 9);
770+
765771
HookInstall(HOOKPOS_CAEAmbienceTrackManager__UpdateAmbienceTrackAndVolume_StartRadio,
766772
(DWORD)HOOK_CAEAmbienceTrackManager__UpdateAmbienceTrackAndVolume_StartRadio, 5);
767773
HookInstall(HOOKPOS_CAEAmbienceTrackManager__UpdateAmbienceTrackAndVolume_StopRadio,
@@ -6945,6 +6951,29 @@ void _declspec(naked) HOOK_Idle_CWorld_ProcessPedsAfterPreRender()
69456951
}
69466952
}
69476953

6954+
const DWORD RETURN_CHud_RenderHealthBar = 0x5892B8;
6955+
const DWORD RETURN_CHud_RenderHealthBarNoRender = 0x58939E;
6956+
void _declspec(naked) HOOK_CHud_RenderHealthBar()
6957+
{
6958+
__asm {
6959+
//(CTimer::m_snTimeInMilliseconds / 250) % 2
6960+
mov eax, 0xB7CB84
6961+
mov eax, [eax]
6962+
xor edx, edx
6963+
mov ecx, 250
6964+
div ecx
6965+
xor edx, edx
6966+
mov ecx, 2
6967+
div ecx
6968+
test edx, edx
6969+
jz norender
6970+
jmp RETURN_CHud_RenderHealthBar
6971+
6972+
norender:
6973+
jmp RETURN_CHud_RenderHealthBarNoRender
6974+
}
6975+
}
6976+
69486977
DWORD dwLastRequestedStation = -1;
69496978
void CAEAmbienceTrackManager__UpdateAmbienceTrackAndVolume_ChangeStation(DWORD dwStationID)
69506979
{

0 commit comments

Comments
 (0)