diff --git a/Copy_Command.hpp b/Copy_Command.hpp index 7296fc8..3490590 100644 --- a/Copy_Command.hpp +++ b/Copy_Command.hpp @@ -179,7 +179,19 @@ void __thiscall Redirected_Copy_Command(void* Unknown_Parameter, Command_Structu { if (Extra_Commands < 1) { - *(__int32*)((unsigned __int32)Network_Channel + 8) += (*(__int32*)((unsigned __int32)Local_Player + 5324) + ~-150) / 150 * 150 + (Reserve * 150); + if (Reserve == 0) + { + *(__int32*)((unsigned __int32)Network_Channel + 8) += 150; + } + else + { + __int32 Sequence_Shift = (*(__int32*)((unsigned __int32)Local_Player + 5324) + ~- 150) / 150 * 150 + (Reserve * 150); + + if (Sequence_Shift > 0) + { + *(__int32*)((unsigned __int32)Network_Channel + 8) += Sequence_Shift; + } + } } *(__int32*)((unsigned __int32)Local_Player + 20) = 1 + (Reserve > 0); @@ -198,7 +210,7 @@ void __thiscall Redirected_Copy_Command(void* Unknown_Parameter, Command_Structu { if (*(void**)((unsigned __int32)Local_Player + 10008) != INVALID_HANDLE_VALUE) { - Sequence_Shift(0); + Sequence_Shift(2); } } } @@ -351,7 +363,7 @@ void __thiscall Redirected_Copy_Command(void* Unknown_Parameter, Command_Structu __int8 Is_Melee = *(__int32*)((unsigned __int32)Weapon_Data + 352) * (*(__int32*)((unsigned __int32)Weapon_Data + 348) ^ 1) <= 1; - __int8 Healing = *(void**)((unsigned __int32)Local_Player + 8076) != INVALID_HANDLE_VALUE; + __int8 Healing = (*(__int32*)((unsigned __int32)Local_Player + 7080) == 1) + (*(void**)((unsigned __int32)Local_Player + 8076) != INVALID_HANDLE_VALUE); __int8 Reloading = *(__int8*)((unsigned __int32)Weapon + 2493); @@ -387,7 +399,7 @@ void __thiscall Redirected_Copy_Command(void* Unknown_Parameter, Command_Structu } } - if ((Target->Identifier >= 263) + (Target->Identifier <= 270 - Is_Cold_Melee - (*(__int8*)((unsigned __int32)Local_Player + 8070) ^ 1)) == 2) + if (((270 - Is_Cold_Melee - (*(__int8*)((unsigned __int32)Local_Player + 8070) ^ 1) - Target->Identifier) ^ Target->Identifier - 263) > 0) { Shove_Label: { @@ -480,7 +492,7 @@ void __thiscall Redirected_Copy_Command(void* Unknown_Parameter, Command_Structu { __int8 Can_Attack = (*(float*)((unsigned __int32)Weapon + 2400) <= Global_Variables->Current_Time) * (*(__int32*)((unsigned __int32)Weapon + 2436) > 0 - Is_Melee * 2) * (*(float*)((unsigned __int32)Local_Player + 3872) <= Global_Variables->Current_Time); - if ((Can_Attack ^ 1) + (Weapon_Identifier == 96) + Healing == 0) + if (Healing + (Can_Attack ^ 1) + (Weapon_Identifier == 96) == 0) { Target_Structure* Aim_Target = nullptr; @@ -688,6 +700,34 @@ void __thiscall Redirected_Copy_Command(void* Unknown_Parameter, Command_Structu } } } + else + { + if (Weapon_Identifier == 73) + { + //ideally 150 commands should always be buffered beforehand + //at worst buffer them right before slot* command + //current solution without buffering takes (interval_per_tick*150) seconds to prepare itself + //reason why i'm not doing that now is because it'll take time to redesign prediction code to function properly + //specifically: + //ignoring network time updates for good period of time isn't good idea + //viewmodel animations will jitter at moment of centering around network time + //so is interpolation + //besides all that, it'll invoke clock correction on server's side and that's pretty unstable (especially on ~100 tickrate) + + Global_Variables->Current_Time -= Global_Variables->Interval_Per_Tick * 150; + + //leaving other ones of sanity for later + if (*(float*)((unsigned __int32)Weapon + 2400) <= Global_Variables->Current_Time) + { + if ((Command->Buttons & 2049) != 0) + { + Sequence_Shift(0); + + Block_Buttons = 1; + } + } + } + } if ((Command->Buttons & 1) == 1) { diff --git a/Get_Glow_Color.hpp b/Get_Glow_Color.hpp index 91151fa..5ad9f3e 100755 --- a/Get_Glow_Color.hpp +++ b/Get_Glow_Color.hpp @@ -2,7 +2,7 @@ void* Original_Get_Glow_Color_Caller; void __thiscall Redirected_Get_Glow_Color(void* Entity, void* Unknown_Parameter_1, void* Unknown_Parameter_2, void* Unknown_Parameter_3, void* Unknown_Parameter_4) { - if (Get_Identifier(Entity, 0, 0) != 232) + if (Get_Identifier(Entity, 0, 0) == -1) { (decltype(&Redirected_Get_Glow_Color)(Original_Get_Glow_Color_Caller))(Entity, Unknown_Parameter_1, Unknown_Parameter_2, Unknown_Parameter_3, Unknown_Parameter_4); }