2022-11-12 18:35:28 +00:00
|
|
|
#include "hooking.hpp"
|
|
|
|
#include <script/scrProgram.hpp>
|
|
|
|
|
|
|
|
#include "services/script_patcher/script_patcher_service.hpp"
|
|
|
|
|
|
|
|
namespace big
|
|
|
|
{
|
|
|
|
rage::eThreadState hooks::script_vm(uint64_t* start_stack, uint64_t** scr_globals, rage::scrProgram* program, rage::scrThreadContext* ctx)
|
|
|
|
{
|
|
|
|
uint8_t** orig_bytecode = program->m_code_blocks;
|
|
|
|
|
2022-11-12 21:02:50 +00:00
|
|
|
if (auto bytecode = g_script_patcher_service->get_script_bytecode(program->m_name_hash); bytecode && g_running)
|
2022-11-12 18:35:28 +00:00
|
|
|
program->m_code_blocks = bytecode;
|
|
|
|
|
|
|
|
auto ret = g_hooking->get_original<hooks::script_vm>()(start_stack, scr_globals, program, ctx);
|
|
|
|
|
|
|
|
program->m_code_blocks = orig_bytecode;
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
}
|