diff --git a/src/hooks/CreateMove.cpp b/src/hooks/CreateMove.cpp index d6c047ab..c5c0bfb3 100644 --- a/src/hooks/CreateMove.cpp +++ b/src/hooks/CreateMove.cpp @@ -480,17 +480,20 @@ DEFINE_HOOKED_METHOD(CreateMove, bool, void *this_, float input_sample_time, } 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 > 10) { - votelogger::antikick_ticks--; - for (int i = 0; i < (int) 70; i++) - g_IEngine->ServerCmd("use", false); + for (int i = 0; i < (int) 500; i++) + ch2->SendNetMsg(senddata, false); + ch2->Transmit(); } - else { - NET_StringCmd senddata("voicemenu 0 0"); - INetChannel *ch2 = (INetChannel *) g_IEngine->GetNetChannelInfo(); - senddata.SetNetChannel(ch2); - senddata.SetReliable(false); + else if (!votelogger::antikick_ticks) + { for (int i = 0; i < (int) serverlag_amount; i++) ch2->SendNetMsg(senddata, false); ch2->Transmit(); diff --git a/src/votelogger.cpp b/src/votelogger.cpp index 852d3d13..73bdaa2c 100644 --- a/src/votelogger.cpp +++ b/src/votelogger.cpp @@ -13,9 +13,9 @@ namespace votelogger static CatVar enabled(CV_SWITCH, "votelog", "0", "Log votes"); static CatVar requeue(CV_SWITCH, "votelog_requeue", "1", "Auto requeue on vote kick", "Auto requeue on vote kick"); -static CatVar anti_votekick(CV_SWITCH, "anti_votekick", "0", "requires votelog", +static CatVar anti_votekick(CV_SWITCH, "anti_votekick", "0", "anti-votekick", "Prevent votekicks by lagging the server in a way " - "that every vote comes in delayed"); + "that every vote comes is delayed.\ndo not forget to enable votelog and that this\nmakes the server be down for about 30 seconds\ncl_timeout 60 is a must"); int antikick_ticks = 0; void user_message(bf_read &buffer, int type) { @@ -50,9 +50,9 @@ void user_message(bf_read &buffer, int type) if (eid == LOCAL_E->m_IDX) { islocalplayer = true; - if (anti_votekick) + if (anti_votekick && !antikick_ticks) { - antikick_ticks = 600; + antikick_ticks = 66 * 100; for (int i = 0; i < (int) 70; i++) g_IEngine->ServerCmd("voicemenu 0 0", false); }