diff --git a/src/lua/bindings/scr_patch.cpp b/src/lua/bindings/scr_patch.cpp index e978e9c3..1e27649b 100644 --- a/src/lua/bindings/scr_patch.cpp +++ b/src/lua/bindings/scr_patch.cpp @@ -8,18 +8,17 @@ namespace lua::scr_patch { scr_patch::scr_patch(const std::string& script_name, const std::string& patch_name, const std::string& pattern, const int offset, sol::table patch_, sol::this_state state) : - m_script_name(script_name), + m_script(rage::joaat(script_name)), m_patch_name(patch_name), m_pattern(pattern), m_offset(offset), m_patch(patch_), m_enable(true) { - auto patch = convert_sequence(m_patch); - auto script = rage::joaat(m_script_name); + auto patch = convert_sequence(m_patch); - big::g_script_patcher_service->add_patch({script, m_patch_name, ::memory::pattern(m_pattern), m_offset, patch, &m_enable}); - if (auto program = big::gta_util::find_script_program(script)) + big::g_script_patcher_service->add_patch({m_script, m_patch_name, ::memory::pattern(m_pattern), m_offset, patch, &m_enable}); + if (auto program = big::gta_util::find_script_program(m_script)) big::g_script_patcher_service->on_script_load(program); big::lua_module* module = sol::state_view(state)["!this"]; @@ -31,7 +30,7 @@ namespace lua::scr_patch if (!m_enable) { m_enable = true; - big::g_script_patcher_service->update(); + big::g_script_patcher_service->update_all_patches_for_script(m_script); } } @@ -40,7 +39,7 @@ namespace lua::scr_patch if (m_enable) { m_enable = false; - big::g_script_patcher_service->update(); + big::g_script_patcher_service->update_all_patches_for_script(m_script); } } diff --git a/src/lua/bindings/scr_patch.hpp b/src/lua/bindings/scr_patch.hpp index 2067b71d..2e509366 100644 --- a/src/lua/bindings/scr_patch.hpp +++ b/src/lua/bindings/scr_patch.hpp @@ -4,7 +4,7 @@ namespace lua::scr_patch { struct scr_patch { - std::string m_script_name; + rage::joaat_t m_script; std::string m_patch_name; std::string m_pattern; int m_offset; diff --git a/src/services/script_patcher/script_patcher_service.hpp b/src/services/script_patcher/script_patcher_service.hpp index dc595cb4..4b29cd2a 100644 --- a/src/services/script_patcher/script_patcher_service.hpp +++ b/src/services/script_patcher/script_patcher_service.hpp @@ -14,7 +14,6 @@ namespace big script_data* get_data_for_script(rage::joaat_t script); bool does_script_have_patches(rage::joaat_t script); void create_data_for_script(rage::scrProgram* program); - void update_all_patches_for_script(rage::joaat_t script); public: script_patcher_service(); @@ -23,6 +22,7 @@ namespace big void add_patch(script_patch&& patch); void on_script_load(rage::scrProgram* program); uint8_t** get_script_bytecode(rage::joaat_t script); + void update_all_patches_for_script(rage::joaat_t script); void update(); };