F4MP/tiltedcode/Code/client/SkyrimVM64.cpp
Jous99 37b16f1547 code upload
codigo original de f4mp y tilted para referencias
2026-01-06 18:45:00 +01:00

60 lines
1.4 KiB
C++

#include <TiltedOnlinePCH.h>
#include "TiltedOnlineApp.h"
extern std::unique_ptr<TiltedOnlineApp> g_appInstance;
#include <GameVM.h>
struct Main;
struct VMContext
{
char pad[0x680];
uint8_t inactive; // 0x680
};
TP_THIS_FUNCTION(TVMUpdate, int, VMContext, float);
TP_THIS_FUNCTION(TMainLoop, short, Main);
TP_THIS_FUNCTION(TVMDestructor, uintptr_t, void);
static TVMUpdate* VMUpdate = nullptr;
static TMainLoop* MainLoop = nullptr;
static TVMDestructor* VMDestructor = nullptr;
int TP_MAKE_THISCALL(HookVMUpdate, VMContext, float a2)
{
if (apThis->inactive == 0)
g_appInstance->Update();
return TiltedPhoques::ThisCall(VMUpdate, apThis, a2);
}
short TP_MAKE_THISCALL(HookMainLoop, Main)
{
TP_EMPTY_HOOK_PLACEHOLDER
return TiltedPhoques::ThisCall(MainLoop, apThis);
}
uintptr_t TP_MAKE_THISCALL(HookVMDestructor, void)
{
TP_EMPTY_HOOK_PLACEHOLDER
return TiltedPhoques::ThisCall(VMDestructor, apThis);
}
static TiltedPhoques::Initializer s_mainHooks(
[]()
{
POINTER_SKYRIMSE(TMainLoop, cMainLoop, 36564);
POINTER_SKYRIMSE(TVMUpdate, cVMUpdate, 53926);
POINTER_SKYRIMSE(TVMDestructor, cVMDestructor, 40412);
VMUpdate = cVMUpdate.Get();
MainLoop = cMainLoop.Get();
VMDestructor = cVMDestructor.Get();
TP_HOOK(&VMUpdate, HookVMUpdate);
TP_HOOK(&MainLoop, HookMainLoop);
TP_HOOK(&VMDestructor, HookVMDestructor);
});