feat(netMsg): log chat and text messages (#567)
This commit is contained in:
parent
07825f84d6
commit
538919d4ca
@ -183,6 +183,8 @@ namespace big
|
|||||||
bool join_queued = false;
|
bool join_queued = false;
|
||||||
rage::rlSessionInfo info;
|
rage::rlSessionInfo info;
|
||||||
bool disable_chat_filter = false;
|
bool disable_chat_filter = false;
|
||||||
|
bool log_chat_messages = false;
|
||||||
|
bool log_text_messages = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct settings {
|
struct settings {
|
||||||
@ -575,6 +577,9 @@ namespace big
|
|||||||
this->self.unlimited_oxygen = j["self"]["unlimited_oxygen"];
|
this->self.unlimited_oxygen = j["self"]["unlimited_oxygen"];
|
||||||
this->self.no_water_collision = j["self"]["no_water_collision"];
|
this->self.no_water_collision = j["self"]["no_water_collision"];
|
||||||
|
|
||||||
|
this->session.log_chat_messages = j["session"]["log_chat_messages"];
|
||||||
|
this->session.log_text_messages = j["session"]["log_text_messages"];
|
||||||
|
|
||||||
this->settings.dev_dlc = j["settings"]["dev_dlc"];
|
this->settings.dev_dlc = j["settings"]["dev_dlc"];
|
||||||
this->settings.hotkeys.menu_toggle = j["settings"]["hotkeys"]["menu_toggle"];
|
this->settings.hotkeys.menu_toggle = j["settings"]["hotkeys"]["menu_toggle"];
|
||||||
|
|
||||||
@ -873,6 +878,12 @@ namespace big
|
|||||||
{ "no_water_collision", this->self.no_water_collision },
|
{ "no_water_collision", this->self.no_water_collision },
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"session", {
|
||||||
|
{ "log_chat_messages", this->session.log_chat_messages },
|
||||||
|
{ "log_text_messages", this->session.log_text_messages },
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"settings", {
|
"settings", {
|
||||||
{ "dev_dlc", this->settings.dev_dlc },
|
{ "dev_dlc", this->settings.dev_dlc },
|
||||||
|
@ -38,7 +38,7 @@ namespace rage
|
|||||||
return big::g_pointers->m_read_bitbuf_bool(this, integer, 1);
|
return big::g_pointers->m_read_bitbuf_bool(this, integer, 1);
|
||||||
}
|
}
|
||||||
bool ReadPeerId(uint64_t* integer) {
|
bool ReadPeerId(uint64_t* integer) {
|
||||||
return this->ReadQWord(integer, 0x32);
|
return this->ReadQWord(integer, 0x40);
|
||||||
}
|
}
|
||||||
uint64_t ReadBits(size_t numBits) {
|
uint64_t ReadBits(size_t numBits) {
|
||||||
auto const totalBits = (m_flagBits & 1) ? m_maxBit : m_curBit;
|
auto const totalBits = (m_flagBits & 1) ? m_maxBit : m_curBit;
|
||||||
|
@ -43,6 +43,32 @@ namespace big
|
|||||||
{
|
{
|
||||||
switch (msgType)
|
switch (msgType)
|
||||||
{
|
{
|
||||||
|
case rage::eNetMessage::CMsgTextMessage:
|
||||||
|
{
|
||||||
|
if (g->session.log_chat_messages)
|
||||||
|
{
|
||||||
|
char message[256];
|
||||||
|
uint64_t unk;
|
||||||
|
bool is_team;
|
||||||
|
buffer.ReadString(message, 256);
|
||||||
|
buffer.ReadQWord(&unk, 64);
|
||||||
|
buffer.ReadBool(&is_team);
|
||||||
|
LOG(INFO) << "[CHAT] from " << player->get_name() << ": " << message << (is_team) ? " [TEAM]" : " [ALL]";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case rage::eNetMessage::CMsgTextMessage2:
|
||||||
|
{
|
||||||
|
if (g->session.log_text_messages)
|
||||||
|
{
|
||||||
|
char message[256];
|
||||||
|
uint64_t unk;
|
||||||
|
buffer.ReadString(message, 256);
|
||||||
|
buffer.ReadQWord(&unk, 64);
|
||||||
|
LOG(INFO) << "[TEXT] from " << player->get_name() << ": " << message;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case rage::eNetMessage::CMsgScriptMigrateHost:
|
case rage::eNetMessage::CMsgScriptMigrateHost:
|
||||||
{
|
{
|
||||||
if (std::chrono::system_clock::now() - player->m_last_transition_msg_sent < 200ms)
|
if (std::chrono::system_clock::now() - player->m_last_transition_msg_sent < 200ms)
|
||||||
@ -67,11 +93,10 @@ namespace big
|
|||||||
buffer.ReadQWord(&session_id, 64);
|
buffer.ReadQWord(&session_id, 64);
|
||||||
uint32_t count;
|
uint32_t count;
|
||||||
buffer.ReadDword(&count, 6);
|
buffer.ReadDword(&count, 6);
|
||||||
pl = nullptr;
|
|
||||||
for (std::uint32_t i = 0; i < count; i++)
|
for (std::uint32_t i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
uint64_t peer_id;
|
uint64_t peer_id;
|
||||||
buffer.ReadQWord((uint64_t*)&peer_id, 64);
|
buffer.ReadQWord(&peer_id, 64);
|
||||||
for (std::uint32_t i = 0; i < gta_util::get_network()->m_game_session_ptr->m_peer_count; i++)
|
for (std::uint32_t i = 0; i < gta_util::get_network()->m_game_session_ptr->m_peer_count; i++)
|
||||||
{
|
{
|
||||||
if (gta_util::get_network()->m_game_session_ptr->m_peers[i]->m_peer_data.m_peer_id_2 == peer_id)
|
if (gta_util::get_network()->m_game_session_ptr->m_peers[i]->m_peer_data.m_peer_id_2 == peer_id)
|
||||||
|
@ -54,7 +54,6 @@ namespace big
|
|||||||
if (hooks::increment_stat_event(increment_stat_event.get(), source_player))
|
if (hooks::increment_stat_event(increment_stat_event.get(), source_player))
|
||||||
{
|
{
|
||||||
g_pointers->m_send_event_ack(event_manager, source_player, target_player, event_index, event_handled_bitset);
|
g_pointers->m_send_event_ack(event_manager, source_player, target_player, event_index, event_handled_bitset);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
buffer->Seek(0);
|
buffer->Seek(0);
|
||||||
|
@ -165,12 +165,6 @@ namespace big
|
|||||||
m_read_bitbuf_bool = ptr.add(1).rip().as<decltype(m_read_bitbuf_bool)>();
|
m_read_bitbuf_bool = ptr.add(1).rip().as<decltype(m_read_bitbuf_bool)>();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Read Bitbuffer Array
|
|
||||||
main_batch.add("RBA", "48 89 5C 24 ? 57 48 83 EC 30 41 8B F8 4C", [this](memory::handle ptr)
|
|
||||||
{
|
|
||||||
m_read_bitbuf_array = ptr.as<decltype(m_read_bitbuf_array)>();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Write Bitbuffer WORD/DWORD
|
// Write Bitbuffer WORD/DWORD
|
||||||
main_batch.add("WBD", "48 8B C4 48 89 58 08 48 89 68 10 48 89 70 18 48 89 78 20 41 56 48 83 EC 20 8B EA BF 01", [this](memory::handle ptr)
|
main_batch.add("WBD", "48 8B C4 48 89 58 08 48 89 68 10 48 89 70 18 48 89 78 20 41 56 48 83 EC 20 8B EA BF 01", [this](memory::handle ptr)
|
||||||
{
|
{
|
||||||
|
@ -28,5 +28,7 @@ namespace big
|
|||||||
|
|
||||||
components::sub_title("Chat");
|
components::sub_title("Chat");
|
||||||
ImGui::Checkbox("Disable Filter", &g->session.disable_chat_filter);
|
ImGui::Checkbox("Disable Filter", &g->session.disable_chat_filter);
|
||||||
|
ImGui::Checkbox("Log Chat Messages", &g->session.log_chat_messages);
|
||||||
|
ImGui::Checkbox("Log Text Messages", &g->session.log_text_messages);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user