Storm/Update_Animations.hpp

58 lines
1.5 KiB
C++
Raw Normal View History

struct Global_Variables_Structure
{
__int8 Additional_Bytes_1[12];
float Current_Time;
float Frame_Time;
__int8 Additional_Bytes_2[8];
float Interval_Per_Tick;
};
2024-10-07 03:45:39 +08:00
float Update_Animation_Time;
__int8 Update_Animation_Type;
void Redirected_Update_Animations()
2024-10-07 03:45:39 +08:00
{
Global_Variables_Structure* Global_Variables = *(Global_Variables_Structure**)((unsigned __int32)Client_Module + 7096744);
2024-10-07 03:45:39 +08:00
float Previous_Current_Time = Global_Variables->Current_Time;
2024-10-07 03:45:39 +08:00
Global_Variables->Current_Time = Update_Animation_Time;
2024-10-07 03:45:39 +08:00
float Previous_Frame_Time = Global_Variables->Frame_Time;
2024-10-07 03:45:39 +08:00
Global_Variables->Frame_Time = Global_Variables->Interval_Per_Tick * Update_Animation_Type;
2024-10-07 03:45:39 +08:00
__int32 Entity_Number = 0;
2024-10-07 03:45:39 +08:00
Traverse_Animation_List_Label:
{
if (Entity_Number != *(__int32*)((unsigned __int32)Client_Module + 7479624))
{
void* Animation_List = *(void**)((unsigned __int32)Client_Module + 7479612);
2024-10-07 03:45:39 +08:00
if ((*(__int8*)((unsigned __int32)Animation_List + 8 * Entity_Number + 4) & 1) != 0)
{
using Update_Animation_Type = void(__thiscall**)(void* Entity);
void* Entity = *(void**)((unsigned __int32)Animation_List + 8 * Entity_Number);
2024-10-07 03:45:39 +08:00
*(float*)((unsigned __int32)Entity + 328) = Update_Animation_Time - Global_Variables->Frame_Time;
2024-10-07 03:45:39 +08:00
(*Update_Animation_Type(*(unsigned __int32*)Entity + 808))(Entity);
}
2024-10-07 03:45:39 +08:00
Entity_Number += 1;
2024-10-07 03:45:39 +08:00
goto Traverse_Animation_List_Label;
}
}
2024-10-07 03:45:39 +08:00
Global_Variables->Frame_Time = Previous_Frame_Time;
2024-10-07 03:45:39 +08:00
Global_Variables->Current_Time = Previous_Current_Time;
2024-10-07 03:45:39 +08:00
}