4#include <unordered_set>
18 std::unordered_set<std::string> &names, uint8_t
id) {
22 if (node->
data ==
id) {
23 names.insert(node->
name);
26 traverseMemNodes(node->
leftNode, names,
id);
27 traverseMemNodes(node->
rightNode, names,
id);
30std::string getMessageName(uintptr_t MessageManager, uint8_t serviceID,
32 const auto serviceBST =
33 *
reinterpret_cast<uintptr_t *
>(MessageManager + 0x4AD8);
34 const auto messageBST =
35 *
reinterpret_cast<uintptr_t *
>(MessageManager + 0x4AC8);
37 const auto rootServiceNode =
39 const auto rootMessageNode =
42 std::unordered_set<std::string> serviceMsgNames{};
43 traverseMemNodes(rootServiceNode, serviceMsgNames, serviceID);
45 std::unordered_set<std::string> messageNames{};
46 traverseMemNodes(rootMessageNode, messageNames, messageID);
48 for (
const auto &name : messageNames) {
49 for (
const auto &service : serviceMsgNames) {
50 if (name.find(service) != std::string::npos) {
Definition MemoryMessage.h:6
uint8_t data
Definition MemoryMessage.h:14
uint8_t unk1
Definition MemoryMessage.h:10
MemoryMessageNode * leftNode
Definition MemoryMessage.h:7
uint8_t pad[6]
Definition MemoryMessage.h:12
void * unk
Definition MemoryMessage.h:8
MemoryMessageNode * rightNode
Definition MemoryMessage.h:9
bool isLastNode
Definition MemoryMessage.h:11
std::string name
Definition MemoryMessage.h:13