diff --git a/include/hacks/Events.hpp b/include/hacks/Events.hpp new file mode 100644 index 00000000..dd585e70 --- /dev/null +++ b/include/hacks/Events.hpp @@ -0,0 +1,22 @@ +/* + * Events.hpp + * + * Created on: Feb 24, 2018 + * Author: bencat07 + */ +#pragma once + +#include "common.hpp" + +namespace hacks +{ +namespace shared +{ +namespace event +{ + +void CreateMove(); +char *inttochar(int i); +} +} +} diff --git a/include/hacks/hacklist.hpp b/include/hacks/hacklist.hpp index 46c2b48f..09f02f15 100644 --- a/include/hacks/hacklist.hpp +++ b/include/hacks/hacklist.hpp @@ -24,6 +24,7 @@ #include "AutoReflect.hpp" #include "AutoSticky.hpp" #include "AntiCheat.hpp" +#include "Events.hpp" #include "Bunnyhop.hpp" #include "LagExploit.hpp" #include "Walkbot.hpp" diff --git a/src/hacks/Events.cpp b/src/hacks/Events.cpp new file mode 100644 index 00000000..374103ce --- /dev/null +++ b/src/hacks/Events.cpp @@ -0,0 +1,88 @@ +/* + * Events.cpp + * + * Created on: Feb 24, 2018 + * Author: bencat07 + */ +#include "common.hpp" + +namespace hacks +{ +namespace shared +{ +namespace event +{ +std::array data; +void CreateMove() +{ + if (!event_log) + return; + for (int i; i < g_IEngine->GetMaxClients(); ++i) + { + CachedEntity *ent = ENTITY(i); + if (!CE_GOOD(ent)) + continue; + player_info_s info; + g_IEngine->GetPlayerInfo(ent->m_IDX, &info); + if (!data[i]) + data[i] = CE_INT(ent, netvar.iClass); + + if (data[i] != CE_INT(ent, netvar.iClass)) + { + int skin = RAW_ENT(ent)->GetSkin(); + if (skin == 1) { + PrintChat("\x07%06X%s\x01 changed from \"\x07%06X%s\x01\" to " + "\"\x07%06X%s\x01\"", + 0xb8383b, info.name, 0x6b9ca0, inttochar(data[i]), + 0x6ba072, inttochar(CE_INT(ent, netvar.iClass))); + } + else if (skin == 2) { + PrintChat("\x07%06X%s\x01 changed from \"\x07%06X%s\x01\" to " + "\"\x07%06X%s\x01\"", + 0x5885a2, info.name, 0x6b9ca0, inttochar(data[i]), + 0x6ba072, inttochar(CE_INT(ent, netvar.iClass))); + } + data[i] = CE_INT(ent, netvar.iClass); + + } + } +} +char *inttochar(int i) +{ + switch (i) + { + case tf_scout: + return "Scout"; + break; + case tf_sniper: + return "Sniper"; + break; + case tf_soldier: + return "Soldier"; + break; + case tf_demoman: + return "Demoman"; + break; + case tf_medic: + return "Medic"; + break; + case tf_heavy: + return "Heavy"; + break; + case tf_pyro: + return "Pyro"; + break; + case tf_spy: + return "Spy"; + break; + case tf_engineer: + return "Engineer"; + break; + default: + return "Invalid"; + break; + } +} +} +} +} diff --git a/src/hooks/CreateMove.cpp b/src/hooks/CreateMove.cpp index 4f3b069b..7c07c204 100644 --- a/src/hooks/CreateMove.cpp +++ b/src/hooks/CreateMove.cpp @@ -424,10 +424,14 @@ bool CreateMove_hook(void *thisptr, float inputSample, CUserCmd *cmd) hacks::shared::spam::CreateMove(); } { - PROF_SECTION(CM_AC); + PROF_SECTION(CM_AC); angles::Update(); hacks::shared::anticheat::CreateMove(); } + { + PROF_SECTION(CM_EVENTS); + hacks::shared::event::CreateMove(); + } } if (time_replaced) g_GlobalVars->curtime = curtime_old; diff --git a/src/hooks/others.cpp b/src/hooks/others.cpp index a1c371ab..450fe478 100644 --- a/src/hooks/others.cpp +++ b/src/hooks/others.cpp @@ -692,13 +692,22 @@ bool DispatchUserMessage_hook(void *_this, int type, bf_read &buf) message.push_back(c); } } + static const char *lastfilter; + static const char *lastname; + static bool retrun = false; + if (data[0] != LOCAL_E->m_IDX) { + if (retrun) + PrintChat("\x07%06X%s\x01: \x07%06X%s\x01", 0xe05938, lastname, + 0xefec1f, lastfilter); + } + retrun = false; if (chat_filter_enabled && data[0] != LOCAL_E->m_IDX) { if (!strcmp(chat_filter.GetString(), "")) { - std::string tmp = {}; + std::string tmp = {}; std::string tmp2 = {}; - int iii = 0; + int iii = 0; player_info_s info; g_IEngine->GetPlayerInfo(LOCAL_E->m_IDX, &info); std::string name1 = info.name; @@ -798,6 +807,8 @@ bool DispatchUserMessage_hook(void *_this, int type, bf_read &buf) boost::replace_all(message2, "7", "t"); for (auto filter : res) { + if (retrun) + break; if (boost::contains(message2, filter)) { @@ -807,6 +818,9 @@ bool DispatchUserMessage_hook(void *_this, int type, bf_read &buf) clear += "\n"; } chat_stack::Say(". " + clear, true); + retrun = true; + lastfilter = filter.c_str(); + lastname = name.c_str(); } } } @@ -825,6 +839,8 @@ bool DispatchUserMessage_hook(void *_this, int type, bf_read &buf) boost::replace_all(message2, "7", "t"); for (auto filter : result) { + if (retrun) + break; if (boost::contains(message2, filter)) { if (clear == "") @@ -834,6 +850,9 @@ bool DispatchUserMessage_hook(void *_this, int type, bf_read &buf) clear += "\n"; } chat_stack::Say(". " + clear, true); + retrun = true; + lastfilter = filter.c_str(); + lastname = name.c_str(); } } }