From fb07065aaf3d0777d4cacef3e211d3b3cd6a09db Mon Sep 17 00:00:00 2001 From: Bugisoft <58910128+BugisoftRSG@users.noreply.github.com> Date: Sun, 19 May 2024 16:17:31 +0200 Subject: [PATCH] Direct implementation of fix vectors (#3147) --- cmake/gtav-classes.cmake | 2 +- src/function_types.hpp | 1 - src/gta_pointers.hpp | 1 - src/invoker/invoker.cpp | 8 +++++++- src/pointers.cpp | 9 --------- 5 files changed, 8 insertions(+), 13 deletions(-) diff --git a/cmake/gtav-classes.cmake b/cmake/gtav-classes.cmake index fec37bc5..3079c503 100644 --- a/cmake/gtav-classes.cmake +++ b/cmake/gtav-classes.cmake @@ -3,7 +3,7 @@ include(FetchContent) FetchContent_Declare( gtav_classes GIT_REPOSITORY https://github.com/Yimura/GTAV-Classes.git - GIT_TAG df0def702dac8f7ba9bf7107734ac30b4db54e96 + GIT_TAG 46c1c63396cf40b206b9f5dd612f293809eefcd1 GIT_PROGRESS TRUE CONFIGURE_COMMAND "" BUILD_COMMAND "" diff --git a/src/function_types.hpp b/src/function_types.hpp index 6197bdc1..5d392e6d 100644 --- a/src/function_types.hpp +++ b/src/function_types.hpp @@ -61,7 +61,6 @@ namespace big::functions { using run_script_threads = bool (*)(uint32_t ops_to_execute); using get_native_handler = rage::scrNativeHandler (*)(rage::scrNativeRegistrationTable* registration_table, rage::scrNativeHash hash); - using fix_vectors = void (*)(rage::scrNativeCallContext* call_ctx); using get_net_game_player = CNetGamePlayer* (*)(Player player); diff --git a/src/gta_pointers.hpp b/src/gta_pointers.hpp index 1439120e..e464011e 100644 --- a/src/gta_pointers.hpp +++ b/src/gta_pointers.hpp @@ -87,7 +87,6 @@ namespace big functions::handle_to_ptr m_handle_to_ptr; rage::scrNativeRegistrationTable* m_native_registration_table; functions::get_native_handler m_get_native_handler; - functions::fix_vectors m_fix_vectors; rage::atArray* m_script_threads; rage::scrProgramTable* m_script_program_table; diff --git a/src/invoker/invoker.cpp b/src/invoker/invoker.cpp index 4c7a6fa8..e701fc54 100644 --- a/src/invoker/invoker.cpp +++ b/src/invoker/invoker.cpp @@ -19,6 +19,12 @@ namespace big void native_invoker::fix_vectors() { - g_pointers->m_gta.m_fix_vectors(&m_call_context); + for (; m_call_context.m_data_count; m_call_context.m_orig[m_call_context.m_data_count][2].Int = m_call_context.m_buffer[m_call_context.m_data_count].z) + { + --m_call_context.m_data_count; + m_call_context.m_orig[m_call_context.m_data_count]->Int = m_call_context.m_buffer[m_call_context.m_data_count].x; + m_call_context.m_orig[m_call_context.m_data_count][1].Int = m_call_context.m_buffer[m_call_context.m_data_count].y; + } + --m_call_context.m_data_count; } } diff --git a/src/pointers.cpp b/src/pointers.cpp index fae2e2b7..e5018c10 100644 --- a/src/pointers.cpp +++ b/src/pointers.cpp @@ -104,15 +104,6 @@ namespace big g_pointers->m_gta.m_get_native_handler = ptr.add(12).rip().as(); } }, - // Fix Vectors - { - "FV", - "83 79 18 00 48 8B D1 74 4A FF 4A 18 48 63 4A 18 48 8D 41 04 48 8B 4C CA", - [](memory::handle ptr) - { - g_pointers->m_gta.m_fix_vectors = ptr.as(); - } - }, // Script Threads { "ST",