From bc24cea3b56514a301cca1ea4271d1881fbb82c2 Mon Sep 17 00:00:00 2001 From: explorer Date: Mon, 28 Oct 2024 10:33:10 +0300 Subject: [PATCH] eliminate m_flStamina induced errors as spitter for whatever reason m_flStamina inside of C_SpitAbility::UpdateAbility gets pinned at 3000.f (extreme latency concern? or just typo) which in result softlocks C_TerrorPlayer::IsImmobilized for moment ability is updated it does seems as logic remnant before buffering of 1000.f got implemented (C_TerrorPlayer::IsImmobilized tests for >2000.f) which is needed to keep m_flStamina predicted rather than networked... applying same logic but once solves problem hopefully i'm not breaking things by omitting m_zombieClass lol on side note i've thought about adding infinite spit but unfortunately projectiles are using timer-based acceleration revert: prevent buffer underrun on ack build-up (only for css) --- Post_Network_Data_Received.hpp | 21 +++++++++------------ Process_Movement.hpp | 7 +++++++ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/Post_Network_Data_Received.hpp b/Post_Network_Data_Received.hpp index 0c663c6..349a103 100755 --- a/Post_Network_Data_Received.hpp +++ b/Post_Network_Data_Received.hpp @@ -69,22 +69,19 @@ void* Original_Post_Network_Data_Received_Caller; void __thiscall Redirected_Post_Network_Data_Received(void* Unknown_Parameter, __int32 Commands_Acknowledged) { - if (Commands_Acknowledged >= 0) + void* Local_Player = *(void**)((unsigned __int32)Client_Module + 7498712); + + void* Prediction_Frame = *(void**)((unsigned __int32)Local_Player + 900 + (150 - ((Commands_Acknowledged - 1) % 150 + 1) * 150 % -~150) * 4); + + if (Prediction_Frame != nullptr) { - void* Local_Player = *(void**)((unsigned __int32)Client_Module + 7498712); + Predicton_Copy.Construct(Local_Player, Prediction_Frame, (void*)Predicton_Copy_Compare); - void* Prediction_Frame = *(void**)((unsigned __int32)Local_Player + 900 + (150 - ((Commands_Acknowledged - 1) % 150 + 1) * 150 % -~150) * 4); + using Transfer_Data_Type = __int32(__thiscall*)(Prediction_Copy_Structure* Prediction_Copy, void* Unknown_Parameter, __int32 Entity_Number, Prediction_Descriptor_Structure* Descriptor); - if (Prediction_Frame != nullptr) - { - Predicton_Copy.Construct(Local_Player, Prediction_Frame, (void*)Predicton_Copy_Compare); + Transfer_Data_Type((unsigned __int32)Client_Module + 1573744)(&Predicton_Copy, nullptr, -1, (Prediction_Descriptor_Structure*)((unsigned __int32)Client_Module + 7236480)); - using Transfer_Data_Type = __int32(__thiscall*)(Prediction_Copy_Structure* Prediction_Copy, void* Unknown_Parameter, __int32 Entity_Number, Prediction_Descriptor_Structure* Descriptor); - - Transfer_Data_Type((unsigned __int32)Client_Module + 1573744)(&Predicton_Copy, nullptr, -1, (Prediction_Descriptor_Structure*)((unsigned __int32)Client_Module + 7236480)); - - *(__int32*)((unsigned __int32)Local_Player + 5324) += Commands_Acknowledged - Commands_Acknowledged % 150; - } + *(__int32*)((unsigned __int32)Local_Player + 5324) += Commands_Acknowledged - Commands_Acknowledged % 150; } (decltype(&Redirected_Post_Network_Data_Received)(Original_Post_Network_Data_Received_Caller))(Unknown_Parameter, Commands_Acknowledged); diff --git a/Process_Movement.hpp b/Process_Movement.hpp index bc7ca5d..f92b734 100644 --- a/Process_Movement.hpp +++ b/Process_Movement.hpp @@ -12,4 +12,11 @@ void __thiscall Redirected_Process_Movement(void* Unknown_Parameter, void* Playe } (decltype(&Redirected_Process_Movement)(Original_Process_Movement_Caller))(Unknown_Parameter, Player, Move_Data); + + void* Ability = *(void**)((unsigned __int32)Client_Module + 7644532 + (((*(unsigned __int32*)((unsigned __int32)Player + 7892) & 4095) - 4097) << 4)); + + if (Ability != nullptr) + { + *(float*)((unsigned __int32)Ability + 1636) = 0.f; + } } \ No newline at end of file