From 7b4cb7535ca00b4455bd1f9f9ec3a01c520d2017 Mon Sep 17 00:00:00 2001 From: Unnamed Date: Sat, 26 Jan 2019 03:58:16 +0000 Subject: [PATCH] tfmm.cpp: better MM ban detection Call function that verifies if you are banned --- src/tfmm.cpp | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/tfmm.cpp b/src/tfmm.cpp index 1bdf0cae..b2313a1e 100644 --- a/src/tfmm.cpp +++ b/src/tfmm.cpp @@ -69,7 +69,8 @@ static CatCommand mm_debug_chat("mm_debug_chat", "Debug party chat", [](const CC namespace tfmm { int queuecount = 0; -bool isMMBanned() + +static bool old_isMMBanned() { auto client = re::CTFPartyClient::GTFPartyClient(); if (!client || ((client->BInQueueForMatchGroup(7) || client->BInQueueForStandby()) && queuecount < 10)) @@ -79,6 +80,39 @@ bool isMMBanned() } return true; } +static bool getMMBanData(int type, int *time, int *time2) +{ + typedef bool (*GetMMBanData_t)(int, int*, int*); + static uintptr_t addr = gSignatures.GetClientSignature("55 89 E5 57 56 53 83 EC ? 8B 5D 08 8B 75 0C 8B 7D 10 83 FB FF"); + static GetMMBanData_t GetMMBanData_fn = GetMMBanData_t(addr); + + if (!addr) + { + *time = -1; + *time2 = -1; + logging::Info("GetMMBanData sig is broken"); + return old_isMMBanned(); + } + return GetMMBanData_fn(type, time, time2); +} + +static CatCommand mm_debug_banned("mm_debug_banned", + "Prints if your are MM banned and extra data if you are banned", +[]() { + int i, time, left, banned; + for (i = 0; i < 1; ++i) + { + time = left = 0; + banned = getMMBanData(0, &time, &left); + logging::Info("%d: banned %d, time %d, left %d", banned, time, left); + } +}); + +bool isMMBanned() +{ + /* Competitive only bans are not interesting */ + return getMMBanData(0, nullptr, nullptr); +} int getQueue() { return *queue;