Team chat uber spam

This commit is contained in:
nullifiedcat 2017-05-04 06:48:09 +03:00
parent 9bdc12094e
commit 59508b182b
6 changed files with 31 additions and 13 deletions

View File

@ -11,15 +11,23 @@
namespace chat_stack { namespace chat_stack {
void Say(const std::string& message, bool team) {
stack.push({ message, team });
}
void OnCreateMove() { void OnCreateMove() {
if (last_say > g_GlobalVars->curtime) last_say = 0; if (last_say > g_GlobalVars->curtime) last_say = 0;
if (g_GlobalVars->curtime - last_say <= CHATSTACK_INTERVAL) return; if (g_GlobalVars->curtime - last_say <= CHATSTACK_INTERVAL) return;
std::string message;
if (!stack.empty()) { if (!stack.empty()) {
message = stack.top(); const msg_t& msg = stack.top();
stack.pop(); stack.pop();
if (message.size()) { if (msg.text.size()) {
g_IEngine->ServerCmd(format("say \"", message, '"').c_str()); //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; last_say = g_GlobalVars->curtime;
} }
} }
@ -30,7 +38,7 @@ void Reset() {
last_say = 0.0f; last_say = 0.0f;
} }
std::stack<std::string> stack; std::stack<msg_t> stack;
float last_say = 0.0f; float last_say = 0.0f;
} }

View File

@ -18,10 +18,16 @@
namespace chat_stack { namespace chat_stack {
struct msg_t {
std::string text;
bool team;
};
void Say(const std::string& message, bool team = false);
void OnCreateMove(); void OnCreateMove();
void Reset(); void Reset();
extern std::stack<std::string> stack; extern std::stack<msg_t> stack;
extern float last_say; extern float last_say;
}; };

View File

@ -536,6 +536,7 @@ static const std::string list_tf2 = R"(
"uberspam_ready" "uberspam_ready"
"uberspam_used" "uberspam_used"
"uberspam_ended" "uberspam_ended"
"uberspam_team"
] ]
"Follow Bot" [ "Follow Bot" [

View File

@ -130,6 +130,6 @@ void KillSayEventListener::FireGameEvent(IGameEvent* event) {
if (!hacks::shared::killsay::killsay_mode) return; if (!hacks::shared::killsay::killsay_mode) return;
std::string message = hacks::shared::killsay::ComposeKillSay(event); std::string message = hacks::shared::killsay::ComposeKillSay(event);
if (message.size()) { if (message.size()) {
chat_stack::stack.push(message); chat_stack::Say(message);
} }
} }

View File

@ -62,7 +62,7 @@ void CreateMove() {
if (random_order) current_index = rand() % source->size(); if (random_order) current_index = rand() % source->size();
std::string spamString = source->at(current_index); std::string spamString = source->at(current_index);
ReplaceString(spamString, "\\n", "\n"); ReplaceString(spamString, "\\n", "\n");
chat_stack::stack.push(spamString); chat_stack::Say(spamString);
current_index++; current_index++;
} }
} }

View File

@ -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_used(CV_SWITCH, "uberspam_used", "1", "Uber Used");
static CatVar on_ended(CV_SWITCH, "uberspam_ended", "1", "Uber Ended"); 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 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 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", []() { static CatCommand custom_file_reload("uberspam_file_reload", "Reload Ubercharge Spam File", []() {
custom_lines.Load(std::string(custom_file.GetString())); custom_lines.Load(std::string(custom_file.GetString()));
@ -56,20 +57,22 @@ void CreateMove() {
bool release = CE_BYTE(LOCAL_W, netvar.bChargeRelease); bool release = CE_BYTE(LOCAL_W, netvar.bChargeRelease);
if (release_last_frame != release) { if (release_last_frame != release) {
if (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 { } 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 (!release && ((int)(100.0f * charge) != last_charge)) {
if (charge == 1.0f) { 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 { } else {
if ((int)(charge * 100.0f) != 0 && on_build) { 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)); std::string res = GetSource()->at(ChargePercentLineIndex(charge));
ReplaceString(res, "%i%", std::to_string((int)(charge * 100.0f))); ReplaceString(res, "%i%", std::to_string((int)(charge * 100.0f)));
chat_stack::stack.push(res); chat_stack::Say(res, !!team_chat);
} }
} }
} }