From 59508b182baac67d812eb43b12fa3b9c1123e75b Mon Sep 17 00:00:00 2001 From: nullifiedcat Date: Thu, 4 May 2017 06:48:09 +0300 Subject: [PATCH] Team chat uber spam --- src/chatstack.cpp | 18 +++++++++++++----- src/chatstack.h | 8 +++++++- src/gui/ncc/Menu.cpp | 1 + src/hacks/KillSay.cpp | 2 +- src/hacks/Spam.cpp | 2 +- src/hacks/UberSpam.cpp | 13 ++++++++----- 6 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/chatstack.cpp b/src/chatstack.cpp index 689e3bac..b73bab20 100644 --- a/src/chatstack.cpp +++ b/src/chatstack.cpp @@ -11,15 +11,23 @@ namespace chat_stack { + +void Say(const std::string& message, bool team) { + stack.push({ message, team }); +} + void OnCreateMove() { if (last_say > g_GlobalVars->curtime) last_say = 0; if (g_GlobalVars->curtime - last_say <= CHATSTACK_INTERVAL) return; - std::string message; if (!stack.empty()) { - message = stack.top(); + const msg_t& msg = stack.top(); stack.pop(); - if (message.size()) { - g_IEngine->ServerCmd(format("say \"", message, '"').c_str()); + if (msg.text.size()) { + //logging::Info("Saying %s %i", msg.text.c_str(), msg.text.size()); + if (msg.team) + g_IEngine->ServerCmd(format("say_team \"", msg.text.c_str(), '"').c_str()); + else + g_IEngine->ServerCmd(format("say \"", msg.text.c_str(), '"').c_str()); last_say = g_GlobalVars->curtime; } } @@ -30,7 +38,7 @@ void Reset() { last_say = 0.0f; } -std::stack stack; +std::stack stack; float last_say = 0.0f; } diff --git a/src/chatstack.h b/src/chatstack.h index 10c68de4..4026a9fd 100644 --- a/src/chatstack.h +++ b/src/chatstack.h @@ -18,10 +18,16 @@ namespace chat_stack { +struct msg_t { + std::string text; + bool team; +}; + +void Say(const std::string& message, bool team = false); void OnCreateMove(); void Reset(); -extern std::stack stack; +extern std::stack stack; extern float last_say; }; diff --git a/src/gui/ncc/Menu.cpp b/src/gui/ncc/Menu.cpp index 7e45c31d..2d7017cf 100644 --- a/src/gui/ncc/Menu.cpp +++ b/src/gui/ncc/Menu.cpp @@ -536,6 +536,7 @@ static const std::string list_tf2 = R"( "uberspam_ready" "uberspam_used" "uberspam_ended" + "uberspam_team" ] "Follow Bot" [ diff --git a/src/hacks/KillSay.cpp b/src/hacks/KillSay.cpp index c2c147dd..71cb0397 100644 --- a/src/hacks/KillSay.cpp +++ b/src/hacks/KillSay.cpp @@ -130,6 +130,6 @@ void KillSayEventListener::FireGameEvent(IGameEvent* event) { if (!hacks::shared::killsay::killsay_mode) return; std::string message = hacks::shared::killsay::ComposeKillSay(event); if (message.size()) { - chat_stack::stack.push(message); + chat_stack::Say(message); } } diff --git a/src/hacks/Spam.cpp b/src/hacks/Spam.cpp index defc8fad..12d6e5d7 100644 --- a/src/hacks/Spam.cpp +++ b/src/hacks/Spam.cpp @@ -62,7 +62,7 @@ void CreateMove() { if (random_order) current_index = rand() % source->size(); std::string spamString = source->at(current_index); ReplaceString(spamString, "\\n", "\n"); - chat_stack::stack.push(spamString); + chat_stack::Say(spamString); current_index++; } } diff --git a/src/hacks/UberSpam.cpp b/src/hacks/UberSpam.cpp index 962c9bfe..b76c0890 100644 --- a/src/hacks/UberSpam.cpp +++ b/src/hacks/UberSpam.cpp @@ -17,6 +17,7 @@ static CatVar on_ready(CV_SWITCH, "uberspam_ready", "1", "Uber Ready"); static CatVar on_used(CV_SWITCH, "uberspam_used", "1", "Uber Used"); static CatVar on_ended(CV_SWITCH, "uberspam_ended", "1", "Uber Ended"); static CatVar on_build(CV_INT, "uberspam_build", "25", "Uber Build", "Send a message every #% ubercharge. 0 = never send", 0, 100); +static CatVar team_chat(CV_SWITCH, "uberspam_team", "1", "Uber Team Chat", "Send uberspam messages in team chat"); static CatVar custom_file(CV_STRING, "uberspam_file", "uberspam.txt", "Ubercharge Spam File", "Use cat_uberspam_file_reload! Same as spam/killsay files."); static CatCommand custom_file_reload("uberspam_file_reload", "Reload Ubercharge Spam File", []() { custom_lines.Load(std::string(custom_file.GetString())); @@ -56,20 +57,22 @@ void CreateMove() { bool release = CE_BYTE(LOCAL_W, netvar.bChargeRelease); if (release_last_frame != release) { if (release) { - if (on_used) chat_stack::stack.push(GetSource()->at(1)); + if (on_used) chat_stack::Say(GetSource()->at(1), !!team_chat); } else { - if (on_ended) chat_stack::stack.push(GetSource()->at(2)); + if (on_ended) chat_stack::Say(GetSource()->at(2), !!team_chat); } } if (!release && ((int)(100.0f * charge) != last_charge)) { if (charge == 1.0f) { - if (on_ready) chat_stack::stack.push(GetSource()->at(0)); + if (on_ready) chat_stack::Say(GetSource()->at(0), !!team_chat); } else { if ((int)(charge * 100.0f) != 0 && on_build) { - if (((int)(charge * 100.0f) % (int)on_build) == 0) { + int chargeperline = ((int)on_build >= 100) ? (100 / (GetSource()->size() - 2)) : (int)on_build; + if (chargeperline < 1) chargeperline = 1; + if ((int)(charge * 100.0f) % chargeperline == 0) { std::string res = GetSource()->at(ChargePercentLineIndex(charge)); ReplaceString(res, "%i%", std::to_string((int)(charge * 100.0f))); - chat_stack::stack.push(res); + chat_stack::Say(res, !!team_chat); } } }