From 1cf0a34597eb54e5ba2e790fd669cc76c57d655f Mon Sep 17 00:00:00 2001 From: Yimura <24669514+Yimura@users.noreply.github.com> Date: Tue, 29 Nov 2022 20:48:58 +0100 Subject: [PATCH] feat(hotkey_service): disable on active chat (#651) --- scripts/gtav-classes.cmake | 2 +- src/pointers.cpp | 5 +++++ src/pointers.hpp | 2 ++ src/services/hotkey/hotkey_service.cpp | 6 ++++++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/scripts/gtav-classes.cmake b/scripts/gtav-classes.cmake index 1e48b54a..93e48aa6 100644 --- a/scripts/gtav-classes.cmake +++ b/scripts/gtav-classes.cmake @@ -3,7 +3,7 @@ include(FetchContent) FetchContent_Declare( gtav_classes GIT_REPOSITORY https://github.com/Yimura/GTAV-Classes.git - GIT_TAG 257115997e5ecea9fafbc820a746d9c6f5889e57 + GIT_TAG 298907d8987862286512bc92cf97b022643315ce GIT_PROGRESS TRUE CONFIGURE_COMMAND "" BUILD_COMMAND "" diff --git a/src/pointers.cpp b/src/pointers.cpp index 0fc3e0ab..89818a83 100644 --- a/src/pointers.cpp +++ b/src/pointers.cpp @@ -592,6 +592,11 @@ namespace big m_security = ptr.add(3).rip().as*>(); }); + main_batch.add("CD", "48 8B 05 ? ? ? ? 0F 45 DF", [this](memory::handle ptr) + { + m_chat_data = ptr.add(3).rip().as(); + }); + auto mem_region = memory::module("GTA5.exe"); main_batch.run(mem_region); diff --git a/src/pointers.hpp b/src/pointers.hpp index 79407c48..6e193d16 100644 --- a/src/pointers.hpp +++ b/src/pointers.hpp @@ -10,6 +10,7 @@ class CCommunications; class FriendRegistry; class CNetworkPlayerMgr; class Network; +class ChatData; namespace rage { @@ -67,6 +68,7 @@ namespace big functions::multiplayer_chat_filter* m_multiplayer_chat_filter{}; functions::write_player_game_state_data_node m_write_player_game_state_data_node{}; + ChatData** m_chat_data; FriendRegistry* m_friend_registry{}; functions::get_screen_coords_for_world_coords m_get_screen_coords_for_world_coords{}; diff --git a/src/services/hotkey/hotkey_service.cpp b/src/services/hotkey/hotkey_service.cpp index ae2cad5e..89dff88b 100644 --- a/src/services/hotkey/hotkey_service.cpp +++ b/src/services/hotkey/hotkey_service.cpp @@ -3,6 +3,9 @@ #include "util/teleport.hpp" #include "hotkey_functions.hpp" +#include "network/ChatData.hpp" +#include "pointers.hpp" + namespace big { hotkey_service::hotkey_service() @@ -50,6 +53,9 @@ namespace big void hotkey_service::wndproc(eKeyState state, key_t key) { + if (const auto chat_data = *g_pointers->m_chat_data; chat_data && (chat_data->m_chat_open || chat_data->m_timer_two)) + return; + if (state == eKeyState::RELEASE || state == eKeyState::DOWN) { auto &hotkey_map = m_hotkeys[state == eKeyState::RELEASE];