removing more catvars
This commit is contained in:
parent
c08fb38189
commit
be955a54c4
@ -28,7 +28,6 @@ target_sources(cathook PRIVATE
|
|||||||
"${CMAKE_CURRENT_LIST_DIR}/HealArrows.hpp"
|
"${CMAKE_CURRENT_LIST_DIR}/HealArrows.hpp"
|
||||||
"${CMAKE_CURRENT_LIST_DIR}/KillSay.hpp"
|
"${CMAKE_CURRENT_LIST_DIR}/KillSay.hpp"
|
||||||
"${CMAKE_CURRENT_LIST_DIR}/Killstreak.hpp"
|
"${CMAKE_CURRENT_LIST_DIR}/Killstreak.hpp"
|
||||||
"${CMAKE_CURRENT_LIST_DIR}/LagExploit.hpp"
|
|
||||||
"${CMAKE_CURRENT_LIST_DIR}/LightESP.hpp"
|
"${CMAKE_CURRENT_LIST_DIR}/LightESP.hpp"
|
||||||
"${CMAKE_CURRENT_LIST_DIR}/Misc.hpp"
|
"${CMAKE_CURRENT_LIST_DIR}/Misc.hpp"
|
||||||
"${CMAKE_CURRENT_LIST_DIR}/Noisemaker.hpp"
|
"${CMAKE_CURRENT_LIST_DIR}/Noisemaker.hpp"
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
/*
|
|
||||||
* LagExploit.hpp
|
|
||||||
*
|
|
||||||
* Created on: May 7, 2017
|
|
||||||
* Author: nullifiedcat
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "common.hpp"
|
|
||||||
|
|
||||||
// Idea from UC (instant bomb defuse thread)
|
|
||||||
|
|
||||||
namespace hacks::shared::lagexploit
|
|
||||||
{
|
|
||||||
extern const model_t *pointarr[5];
|
|
||||||
extern bool bcalled;
|
|
||||||
void CreateMove();
|
|
||||||
void Draw();
|
|
||||||
void AddExploitTicks(int ticks);
|
|
||||||
bool ExploitActive();
|
|
||||||
}
|
|
@ -5,19 +5,15 @@
|
|||||||
* Author: nullifiedcat
|
* Author: nullifiedcat
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <settings/Bool.hpp>
|
||||||
#include "common.hpp"
|
#include "common.hpp"
|
||||||
|
|
||||||
|
static settings::Bool enable{ "bunnyhop.enable", "false" };
|
||||||
|
|
||||||
namespace hacks::shared::bunnyhop
|
namespace hacks::shared::bunnyhop
|
||||||
{
|
{
|
||||||
|
|
||||||
// Var for user settings
|
// Var for user settings
|
||||||
static CatVar
|
|
||||||
enabled(CV_SWITCH, "bhop_enabled", "0", "Bunnyhop",
|
|
||||||
"Enable Bunnyhop. All extra features like autojump and perfect "
|
|
||||||
"jump limit were temporary removed.");
|
|
||||||
// CatVar perfect_jump_limit(CV_INT, "bhop_enabled", "0", "Bunnyhop", "Enable
|
|
||||||
// Bunnyhop. All extra features like autojump and perfect jump limit were
|
|
||||||
// temporary removed.");
|
|
||||||
|
|
||||||
static int ticks_last_jump = 0;
|
static int ticks_last_jump = 0;
|
||||||
// static int perfect_jumps = 0;
|
// static int perfect_jumps = 0;
|
||||||
@ -26,7 +22,7 @@ static int ticks_last_jump = 0;
|
|||||||
void CreateMove()
|
void CreateMove()
|
||||||
{
|
{
|
||||||
// Check user settings if bhop is enabled
|
// Check user settings if bhop is enabled
|
||||||
if (!enabled)
|
if (!enable)
|
||||||
return;
|
return;
|
||||||
if (!g_pUserCmd)
|
if (!g_pUserCmd)
|
||||||
return;
|
return;
|
||||||
|
@ -26,7 +26,6 @@ if(NOT LagbotMode)
|
|||||||
"${CMAKE_CURRENT_LIST_DIR}/HealArrows.cpp"
|
"${CMAKE_CURRENT_LIST_DIR}/HealArrows.cpp"
|
||||||
"${CMAKE_CURRENT_LIST_DIR}/KillSay.cpp"
|
"${CMAKE_CURRENT_LIST_DIR}/KillSay.cpp"
|
||||||
"${CMAKE_CURRENT_LIST_DIR}/Killstreak.cpp"
|
"${CMAKE_CURRENT_LIST_DIR}/Killstreak.cpp"
|
||||||
"${CMAKE_CURRENT_LIST_DIR}/LagExploit.cpp"
|
|
||||||
"${CMAKE_CURRENT_LIST_DIR}/LightESP.cpp"
|
"${CMAKE_CURRENT_LIST_DIR}/LightESP.cpp"
|
||||||
"${CMAKE_CURRENT_LIST_DIR}/Misc.cpp"
|
"${CMAKE_CURRENT_LIST_DIR}/Misc.cpp"
|
||||||
"${CMAKE_CURRENT_LIST_DIR}/Noisemaker.cpp"
|
"${CMAKE_CURRENT_LIST_DIR}/Noisemaker.cpp"
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
|
|
||||||
#include "common.hpp"
|
#include "common.hpp"
|
||||||
#include <hacks/FollowBot.hpp>
|
#include <hacks/FollowBot.hpp>
|
||||||
#include <hacks/LagExploit.hpp>
|
|
||||||
#include <glez/draw.hpp>
|
#include <glez/draw.hpp>
|
||||||
|
|
||||||
namespace hacks::shared::followbot
|
namespace hacks::shared::followbot
|
||||||
|
@ -1,584 +0,0 @@
|
|||||||
/*
|
|
||||||
* LagExploit.cpp
|
|
||||||
*
|
|
||||||
* Created on: May 7, 2017
|
|
||||||
* Author: nullifiedcat
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <hacks/LagExploit.hpp>
|
|
||||||
#include <hacks/Announcer.hpp>
|
|
||||||
#include "common.hpp"
|
|
||||||
|
|
||||||
namespace hacks::shared::lagexploit
|
|
||||||
{
|
|
||||||
|
|
||||||
static CatVar toggle(CV_SWITCH, "se_toggle", "0", "toggle",
|
|
||||||
"Toggle sequence exploit");
|
|
||||||
static CatVar shoot(CV_SWITCH, "se_shoot", "0", "Instant revvup/shoot",
|
|
||||||
"Instant revvup/shoot two shots at once");
|
|
||||||
|
|
||||||
// SHOUTOUTS TO BLACKFIRE
|
|
||||||
static CatVar doom(CV_SWITCH, "se_doom", "0", "Shoot 2+ shots at once",
|
|
||||||
"See Center string on activation.");
|
|
||||||
static CatVar piss(CV_SWITCH, "se_piss", "0", "Piss", "Spam Jarate");
|
|
||||||
static CatVar razorback(CV_SWITCH, "se_antirazorback", "0", "Anti-Razorback",
|
|
||||||
"Stab through razorbacks");
|
|
||||||
static CatVar stickyspam(CV_SWITCH, "se_stickyspam", "0", "Sticky spam",
|
|
||||||
"Allows Spam of stickies simply by holding Mouse1.");
|
|
||||||
static CatVar
|
|
||||||
infinitecharge(CV_SWITCH, "se_infinite_charge", "0",
|
|
||||||
"Infinite sticky charge",
|
|
||||||
"Infinitely charge stickies, (can be used for sniping "
|
|
||||||
"and or b1g dmg using the quickiebomb launcher)");
|
|
||||||
static CatVar cloak(CV_SWITCH, "se_cloak", "0", "Instant decloak/cloak", "");
|
|
||||||
static CatVar cap(CV_SWITCH, "se_cap", "0", "Auto instant cap", "");
|
|
||||||
static CatVar cart(CV_SWITCH, "se_cart", "0", "Farm cart points",
|
|
||||||
"Automatically farm points by touching "
|
|
||||||
"the cart (only works on attacking "
|
|
||||||
"team)");
|
|
||||||
static CatVar instant_weapon_switch(CV_SWITCH, "se_switch", "0",
|
|
||||||
"Instant weapon switch", "");
|
|
||||||
static CatVar key(CV_KEY, "se_key", "0", "Sequence exploit key");
|
|
||||||
static CatVar weaponswitch(CV_KEY, "se_switch_key", "0",
|
|
||||||
"Switch spam key (for gru) key");
|
|
||||||
static CatVar delay1(CV_INT, "se_switch_delay1", "0",
|
|
||||||
"Delay before switching to melee");
|
|
||||||
static CatVar delay2(CV_INT, "se_switch_delay2", "0",
|
|
||||||
"Delay before switching to Primary");
|
|
||||||
static CatVar
|
|
||||||
master_switch(CV_SWITCH, "se_master", "0", "Enable sequence exploit",
|
|
||||||
"Master switch for the sequence exploit\nDisabling this "
|
|
||||||
"disables everything else that uses it");
|
|
||||||
static CatVar value(CV_INT, "se_value", "900", "Sequence exploit value",
|
|
||||||
"Value of user cmds to spam with");
|
|
||||||
static CatVar
|
|
||||||
cap_range(CV_FLOAT, "se_cap_range", "200.0f", "Autocap range",
|
|
||||||
"Autocap range, increase if you notice that you only lagy "
|
|
||||||
"once you are already in the cap zone");
|
|
||||||
CatCommand do_lagexploit("se_do", "Sequence exploit (for use in scripts)",
|
|
||||||
[]() { AddExploitTicks(6); });
|
|
||||||
int exticks = 0;
|
|
||||||
const model_t *pointarr[5] = { nullptr, nullptr, nullptr, nullptr, nullptr };
|
|
||||||
bool bcalled = false;
|
|
||||||
void AddExploitTicks(int ticks)
|
|
||||||
{
|
|
||||||
exticks = std::max(ticks, exticks);
|
|
||||||
}
|
|
||||||
bool active = false;
|
|
||||||
bool ExploitActive()
|
|
||||||
{
|
|
||||||
if (toggle)
|
|
||||||
return true;
|
|
||||||
if (exticks > 0)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (g_IInputSystem->IsButtonDown((ButtonCode_t)((int) key)))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (active)
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static CatVar infinite_packs(CV_SWITCH, "infinite_packs", "0",
|
|
||||||
"Infinite Pickups",
|
|
||||||
"Activate sequence exploit when standing on "
|
|
||||||
"pickups while having not full HP/Ammo");
|
|
||||||
float servertime, nextattack, nextattack2;
|
|
||||||
static int lastwep = 0;
|
|
||||||
void CreateMove()
|
|
||||||
{
|
|
||||||
if (!bcalled)
|
|
||||||
for (int i = 1; i < HIGHEST_ENTITY; i++)
|
|
||||||
{
|
|
||||||
CachedEntity *pEnt = ENTITY(i);
|
|
||||||
if (!CE_GOOD(pEnt))
|
|
||||||
continue;
|
|
||||||
const model_t *model = RAW_ENT(pEnt)->GetModel();
|
|
||||||
if (!model)
|
|
||||||
continue;
|
|
||||||
const char *model_name = g_IModelInfo->GetModelName(model);
|
|
||||||
if (strstr("models/props_gameplay/cap_point_base.mdl", model_name))
|
|
||||||
pointarr[0] = model;
|
|
||||||
if (strstr("models/props_trainyard/bomb_cart.mdl", model_name))
|
|
||||||
pointarr[1] = model;
|
|
||||||
if (strstr("models/props_2fort/trainwheel001.mdl", model_name))
|
|
||||||
pointarr[2] = model;
|
|
||||||
if (strstr("models/custom/dirty_bomb_cart.mdl", model_name))
|
|
||||||
pointarr[3] = model;
|
|
||||||
if (strstr("models/props_trainyard/bomb_cart_red.mdl", model_name))
|
|
||||||
pointarr[4] = model;
|
|
||||||
}
|
|
||||||
bcalled = true;
|
|
||||||
if (!master_switch)
|
|
||||||
return;
|
|
||||||
active = false;
|
|
||||||
if (CE_BAD(LOCAL_E))
|
|
||||||
return;
|
|
||||||
if (!LOCAL_E->m_bAlivePlayer())
|
|
||||||
return;
|
|
||||||
if (exticks > 0)
|
|
||||||
exticks--;
|
|
||||||
int classid = LOCAL_W->m_iClassID();
|
|
||||||
if (!exticks)
|
|
||||||
{
|
|
||||||
// Infinite pickups (health and ammo)
|
|
||||||
if (infinite_packs && CE_GOOD(LOCAL_E))
|
|
||||||
{
|
|
||||||
ICollideable *p = RAW_ENT(LOCAL_E)->GetCollideable();
|
|
||||||
const Vector &max1 =
|
|
||||||
p->OBBMaxs() + RAW_ENT(LOCAL_E)->GetAbsOrigin();
|
|
||||||
const Vector &min1 =
|
|
||||||
p->OBBMins() + RAW_ENT(LOCAL_E)->GetAbsOrigin();
|
|
||||||
for (int i = 1; i < entity_cache::max; i++)
|
|
||||||
{
|
|
||||||
CachedEntity *e = ENTITY(i);
|
|
||||||
// CE_BAD is used to prevent removeconding on empty spaces where
|
|
||||||
// the item hasn't respawned Class check to ensure entity is
|
|
||||||
// pickup item
|
|
||||||
if (CE_BAD(e) || e->m_iClassID() != CL_CLASS(CBaseAnimating))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
ICollideable *c = RAW_ENT(e)->GetCollideable();
|
|
||||||
|
|
||||||
// Bounds check
|
|
||||||
const Vector &max2 =
|
|
||||||
c->OBBMaxs() + e->m_vecOrigin() + Vector(8, 8, 8);
|
|
||||||
const Vector &min2 =
|
|
||||||
c->OBBMins() + e->m_vecOrigin() - Vector(8, 8, 8);
|
|
||||||
if ((min1.x <= max2.x && max1.x >= min2.x) &&
|
|
||||||
(min1.y <= max2.y && max1.y >= min2.y) &&
|
|
||||||
(min1.z <= max2.z && max1.z >= min2.z))
|
|
||||||
{
|
|
||||||
// logging::Info("Collision with %d", i);
|
|
||||||
|
|
||||||
// Lag for health
|
|
||||||
if (LOCAL_E->m_iHealth() < LOCAL_E->m_iMaxHealth() &&
|
|
||||||
(e->m_ItemType() == ITEM_HEALTH_SMALL ||
|
|
||||||
e->m_ItemType() == ITEM_HEALTH_MEDIUM ||
|
|
||||||
e->m_ItemType() == ITEM_HEALTH_LARGE))
|
|
||||||
{
|
|
||||||
AddExploitTicks(3);
|
|
||||||
}
|
|
||||||
// Lag for ammo / metal
|
|
||||||
// TODO: Alternative to - LOCAL_E->m_iAmmo <
|
|
||||||
// LOCAL_E->m_iMaxAmmo That is pseudocode but checking each
|
|
||||||
// weapon for ammo + engie for metal would be ideal
|
|
||||||
if (CE_INT(g_pLocalPlayer->weapon(), netvar.m_iAmmo) < 5 &&
|
|
||||||
(e->m_ItemType() == ITEM_AMMO_SMALL ||
|
|
||||||
e->m_ItemType() == ITEM_AMMO_MEDIUM ||
|
|
||||||
e->m_ItemType() == ITEM_AMMO_LARGE))
|
|
||||||
{
|
|
||||||
AddExploitTicks(3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Previously was in GetUserCmd
|
|
||||||
// Thanks Blackfire for helping me improve removecond!
|
|
||||||
|
|
||||||
if (!g_pUserCmd)
|
|
||||||
return;
|
|
||||||
if (!g_pUserCmd->command_number)
|
|
||||||
return;
|
|
||||||
int amount = 0;
|
|
||||||
if (cart)
|
|
||||||
{
|
|
||||||
for (int i = 1; i < HIGHEST_ENTITY; i++)
|
|
||||||
{
|
|
||||||
if (!pointarr[1] && !pointarr[2] && !pointarr[3] && !pointarr[4])
|
|
||||||
continue;
|
|
||||||
CachedEntity *pEnt = ENTITY(i);
|
|
||||||
if (!CE_GOOD(pEnt))
|
|
||||||
continue;
|
|
||||||
if (pEnt->m_iTeam() == LOCAL_E->m_iTeam())
|
|
||||||
continue;
|
|
||||||
const model_t *model = RAW_ENT(pEnt)->GetModel();
|
|
||||||
if (!model)
|
|
||||||
continue;
|
|
||||||
if (model == pointarr[1] || model == pointarr[2] ||
|
|
||||||
model == pointarr[3] || model == pointarr[4])
|
|
||||||
{
|
|
||||||
if (!CE_GOOD(LOCAL_E))
|
|
||||||
continue;
|
|
||||||
ICollideable *c = RAW_ENT(pEnt)->GetCollideable();
|
|
||||||
ICollideable *p = RAW_ENT(LOCAL_E)->GetCollideable();
|
|
||||||
const Vector &max1 =
|
|
||||||
p->OBBMaxs() + RAW_ENT(LOCAL_E)->GetAbsOrigin();
|
|
||||||
const Vector &min1 =
|
|
||||||
p->OBBMins() + RAW_ENT(LOCAL_E)->GetAbsOrigin();
|
|
||||||
const Vector &max2 =
|
|
||||||
c->OBBMaxs() + pEnt->m_vecOrigin() + Vector(25, 25, 25);
|
|
||||||
const Vector &min2 =
|
|
||||||
c->OBBMins() + pEnt->m_vecOrigin() - Vector(25, 25, 25);
|
|
||||||
if ((min1.x <= max2.x && max1.x >= min2.x) &&
|
|
||||||
(min1.y <= max2.y && max1.y >= min2.y) &&
|
|
||||||
(min1.z <= max2.z && max1.z >= min2.z))
|
|
||||||
{
|
|
||||||
amount = 50;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (weaponswitch.KeyDown())
|
|
||||||
{
|
|
||||||
static int aa = 0, bb = 0;
|
|
||||||
if (aa > (int) delay1)
|
|
||||||
{
|
|
||||||
g_IEngine->ExecuteClientCmd("slot1");
|
|
||||||
aa = 0;
|
|
||||||
}
|
|
||||||
if (bb > (int) delay1 + (int) delay2)
|
|
||||||
{
|
|
||||||
g_IEngine->ExecuteClientCmd("slot3");
|
|
||||||
bb = 0;
|
|
||||||
}
|
|
||||||
aa++;
|
|
||||||
bb++;
|
|
||||||
}
|
|
||||||
static bool bWasHolding = false;
|
|
||||||
bool bIsHolding = ((g_pUserCmd->buttons & IN_ATTACK) ||
|
|
||||||
(g_pUserCmd->buttons & IN_ATTACK2));
|
|
||||||
|
|
||||||
if (cap)
|
|
||||||
{
|
|
||||||
for (int i = 1; i < HIGHEST_ENTITY; i++)
|
|
||||||
{
|
|
||||||
if (!pointarr[0])
|
|
||||||
continue;
|
|
||||||
CachedEntity *pEnt = ENTITY(i);
|
|
||||||
if (!CE_GOOD(pEnt))
|
|
||||||
continue;
|
|
||||||
if (pEnt->m_iTeam() == LOCAL_E->m_iTeam())
|
|
||||||
continue;
|
|
||||||
const model_t *model = RAW_ENT(pEnt)->GetModel();
|
|
||||||
if (!model)
|
|
||||||
continue;
|
|
||||||
if (model == pointarr[0])
|
|
||||||
{
|
|
||||||
if (!CE_GOOD(LOCAL_E))
|
|
||||||
continue;
|
|
||||||
ICollideable *c = RAW_ENT(pEnt)->GetCollideable();
|
|
||||||
ICollideable *p = RAW_ENT(LOCAL_E)->GetCollideable();
|
|
||||||
const Vector &max1 =
|
|
||||||
p->OBBMaxs() + RAW_ENT(LOCAL_E)->GetAbsOrigin();
|
|
||||||
const Vector &min1 =
|
|
||||||
p->OBBMins() + RAW_ENT(LOCAL_E)->GetAbsOrigin();
|
|
||||||
const Vector &max2 =
|
|
||||||
c->OBBMaxs() + pEnt->m_vecOrigin() +
|
|
||||||
Vector((float) cap_range, (float) cap_range,
|
|
||||||
(float) cap_range);
|
|
||||||
const Vector &min2 =
|
|
||||||
c->OBBMins() + pEnt->m_vecOrigin() -
|
|
||||||
Vector((float) cap_range, (float) cap_range,
|
|
||||||
(float) cap_range);
|
|
||||||
if ((min1.x <= max2.x && max1.x >= min2.x) &&
|
|
||||||
(min1.y <= max2.y && max1.y >= min2.y) &&
|
|
||||||
(min1.z <= max2.z && max1.z >= min2.z))
|
|
||||||
{
|
|
||||||
amount = (int) value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (cloak && shoot && CE_INT(LOCAL_E, netvar.iClass) != tf_class::tf_spy)
|
|
||||||
{
|
|
||||||
if ((g_pUserCmd->buttons & IN_ATTACK) && !bWasHolding &&
|
|
||||||
HasCondition<TFCond_Cloaked>(LOCAL_E))
|
|
||||||
{
|
|
||||||
g_pUserCmd->buttons &= ~IN_ATTACK;
|
|
||||||
g_pUserCmd->buttons |= IN_ATTACK2;
|
|
||||||
amount = 2 * 90;
|
|
||||||
}
|
|
||||||
else if (CanShoot() && bIsHolding && !bWasHolding &&
|
|
||||||
classid != CL_CLASS(CTFFlareGun))
|
|
||||||
amount = 1 * 90;
|
|
||||||
else if (CanShoot() && bIsHolding && !bWasHolding &&
|
|
||||||
classid == CL_CLASS(CTFFlareGun))
|
|
||||||
amount = 2 * 90;
|
|
||||||
else if (bWasHolding && !bIsHolding)
|
|
||||||
amount = 1 * 90;
|
|
||||||
|
|
||||||
bWasHolding = (g_pUserCmd->buttons & IN_ATTACK) ||
|
|
||||||
(g_pUserCmd->buttons & IN_ATTACK2);
|
|
||||||
}
|
|
||||||
else if (!cloak)
|
|
||||||
{
|
|
||||||
if (shoot)
|
|
||||||
{
|
|
||||||
if (not g_pLocalPlayer->holding_sniper_rifle)
|
|
||||||
{
|
|
||||||
if (CanShoot() && bIsHolding && !bWasHolding &&
|
|
||||||
classid != CL_CLASS(CTFFlareGun))
|
|
||||||
amount = 1 * 90;
|
|
||||||
else if (CanShoot() && bIsHolding && !bWasHolding &&
|
|
||||||
classid == CL_CLASS(CTFFlareGun))
|
|
||||||
amount = 2 * 90;
|
|
||||||
else if (bWasHolding && !bIsHolding)
|
|
||||||
amount = 1 * 90;
|
|
||||||
bWasHolding = (g_pUserCmd->buttons & IN_ATTACK) ||
|
|
||||||
(g_pUserCmd->buttons & IN_ATTACK2);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
bIsHolding = (g_pUserCmd->buttons & IN_ATTACK);
|
|
||||||
if (CanShoot() && bIsHolding && !bWasHolding)
|
|
||||||
amount = 1 * 90;
|
|
||||||
else if (bWasHolding && !bIsHolding)
|
|
||||||
amount = 1 * 90;
|
|
||||||
bWasHolding = (g_pUserCmd->buttons & IN_ATTACK);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (!shoot)
|
|
||||||
{
|
|
||||||
if (cloak && CE_INT(LOCAL_E, netvar.iClass) != tf_class::tf_spy)
|
|
||||||
{
|
|
||||||
if ((g_pUserCmd->buttons & IN_ATTACK2) && !bWasHolding &&
|
|
||||||
!HasCondition<TFCond_Cloaked>(LOCAL_E))
|
|
||||||
{
|
|
||||||
amount = 1 * 90;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((g_pUserCmd->buttons & IN_ATTACK) && !bWasHolding &&
|
|
||||||
HasCondition<TFCond_Cloaked>(LOCAL_E))
|
|
||||||
{
|
|
||||||
g_pUserCmd->buttons &= ~IN_ATTACK;
|
|
||||||
g_pUserCmd->buttons |= IN_ATTACK2;
|
|
||||||
amount = 2 * 90;
|
|
||||||
}
|
|
||||||
bWasHolding = (g_pUserCmd->buttons & IN_ATTACK) ||
|
|
||||||
(g_pUserCmd->buttons & IN_ATTACK2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (key.KeyDown() || exticks || toggle)
|
|
||||||
amount = int(value);
|
|
||||||
|
|
||||||
// Thanks Wheaties For help!
|
|
||||||
if (stickyspam)
|
|
||||||
{
|
|
||||||
if (classid == (CL_CLASS(CTFCannon)) ||
|
|
||||||
classid == (CL_CLASS(CTFPipebombLauncher)))
|
|
||||||
{
|
|
||||||
static bool bSwitch = false;
|
|
||||||
bSwitch = !bSwitch;
|
|
||||||
if ((g_pUserCmd->buttons & IN_ATTACK) && bSwitch)
|
|
||||||
{
|
|
||||||
amount = 1 * 50;
|
|
||||||
g_pUserCmd->buttons &= ~IN_ATTACK;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
static int charge = 0;
|
|
||||||
if (g_pLocalPlayer->bAttackLastTick && infinitecharge &&
|
|
||||||
classid == (CL_CLASS(CTFPipebombLauncher)) &&
|
|
||||||
(g_pUserCmd->buttons & IN_ATTACK) &&
|
|
||||||
CE_BYTE(LOCAL_W, netvar.m_flChargeLevel))
|
|
||||||
{
|
|
||||||
charge++;
|
|
||||||
if (charge > 5)
|
|
||||||
amount = (int) value;
|
|
||||||
}
|
|
||||||
else if (!(g_pUserCmd->buttons & IN_ATTACK))
|
|
||||||
charge = 0;
|
|
||||||
if (instant_weapon_switch && not HasCondition<TFCond_Cloaked>(LOCAL_E))
|
|
||||||
{
|
|
||||||
if (lastwep != classid)
|
|
||||||
{
|
|
||||||
amount = 4 * 66;
|
|
||||||
lastwep = classid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// SHOUTOUTS TO BLACKFIRE
|
|
||||||
if (doom || razorback)
|
|
||||||
{
|
|
||||||
// Variablse to store Primary and secondary nextfire times
|
|
||||||
static float i = 0.0;
|
|
||||||
static float i2 = 0.0;
|
|
||||||
// Servertime to predict the next Primary and secondary times in seconds
|
|
||||||
servertime =
|
|
||||||
(float) (CE_INT(g_pLocalPlayer->entity, netvar.nTickBase)) *
|
|
||||||
g_GlobalVars->interval_per_tick;
|
|
||||||
// If not the holding the same weapon as last tick or i(2) is smaller
|
|
||||||
// than 0.1f
|
|
||||||
// Get a new nextattack(2)
|
|
||||||
if (!nextattack || i < 0.1f || classid != lastwep)
|
|
||||||
nextattack =
|
|
||||||
CE_FLOAT(g_pLocalPlayer->weapon(), netvar.flNextPrimaryAttack);
|
|
||||||
if (!nextattack2 || i2 < 0.1f || classid != lastwep)
|
|
||||||
nextattack2 = CE_FLOAT(g_pLocalPlayer->weapon(),
|
|
||||||
netvar.flNextSecondaryAttack);
|
|
||||||
// If the next attack (2) time would exceed 75 seconds, set it to 75 to
|
|
||||||
// prevent
|
|
||||||
// The server disconnecting you for lagging too much
|
|
||||||
if (servertime - nextattack > 75.0f)
|
|
||||||
nextattack = servertime - 75.0f;
|
|
||||||
if (servertime - nextattack2 > 75.0f)
|
|
||||||
nextattack2 = servertime - 75.0f;
|
|
||||||
// If doom is active and nextattack is positive (not reloading/holding
|
|
||||||
// m1 since a while)
|
|
||||||
// and you are holding m1 run the Doom code
|
|
||||||
if (doom && servertime - nextattack > 0.0f &&
|
|
||||||
(g_pUserCmd->buttons & IN_ATTACK ||
|
|
||||||
g_pUserCmd->buttons & IN_ATTACK2))
|
|
||||||
{
|
|
||||||
// Incase i ever goes below 0.1 recalculate it (or if it's just
|
|
||||||
// inited)
|
|
||||||
if (i < 0.1f)
|
|
||||||
i = servertime - (int) nextattack;
|
|
||||||
// Set amount to i * 66 (which lags for i seconds)
|
|
||||||
amount = i * 66;
|
|
||||||
// Don't attack if the clip is empty so you also instantly reload
|
|
||||||
if (!CE_BYTE(g_pLocalPlayer->weapon(), netvar.m_iClip1))
|
|
||||||
{
|
|
||||||
g_pUserCmd->buttons &= ~IN_ATTACK;
|
|
||||||
g_pUserCmd->buttons &= ~IN_ATTACK2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// if anti-razorback is active and you can stab through the shieled
|
|
||||||
if (razorback && servertime - nextattack > 3.0f &&
|
|
||||||
(g_pUserCmd->buttons & IN_ATTACK))
|
|
||||||
{
|
|
||||||
CachedEntity *snoiper = nullptr;
|
|
||||||
for (int ii = 0; ii < g_IEngine->GetMaxClients(); ii++)
|
|
||||||
{
|
|
||||||
CachedEntity *snooiper = ENTITY(ii);
|
|
||||||
// nullptr and dormant check
|
|
||||||
if (CE_BAD(snooiper))
|
|
||||||
continue;
|
|
||||||
// Alive check
|
|
||||||
if (!snooiper->m_bAlivePlayer())
|
|
||||||
continue;
|
|
||||||
// Vischeck
|
|
||||||
if (!VisCheckEntFromEnt(LOCAL_E, snooiper))
|
|
||||||
continue;
|
|
||||||
// Range should be more than high enough
|
|
||||||
if (!snooiper->m_flDistance() < 200.0f)
|
|
||||||
continue;
|
|
||||||
int clazz = CE_INT(snooiper, netvar.iClass);
|
|
||||||
if (clazz != tf_sniper)
|
|
||||||
continue;
|
|
||||||
// found entity
|
|
||||||
snoiper = snooiper;
|
|
||||||
// Break if you found an Entity, no need to go on further
|
|
||||||
// checking
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
// Return if no snipers were found
|
|
||||||
if (CE_BAD(snoiper))
|
|
||||||
return;
|
|
||||||
// Only works with knife out obviously
|
|
||||||
if (classid == CL_CLASS(CTFKnife))
|
|
||||||
{
|
|
||||||
if (!i)
|
|
||||||
i = 3;
|
|
||||||
amount = i * 66;
|
|
||||||
g_pUserCmd->buttons |= IN_ATTACK;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// If i is not below 0.1f then substract one from it to slowly decrease
|
|
||||||
// lag amount
|
|
||||||
if (i > 0.1f)
|
|
||||||
i -= 1.0f;
|
|
||||||
// Set last weapon classid
|
|
||||||
lastwep = classid;
|
|
||||||
}
|
|
||||||
// if Jarate spam active
|
|
||||||
if (piss)
|
|
||||||
{
|
|
||||||
// Get Servertime
|
|
||||||
servertime =
|
|
||||||
(float) (CE_INT(g_pLocalPlayer->entity, netvar.nTickBase)) *
|
|
||||||
g_GlobalVars->interval_per_tick;
|
|
||||||
// Get nextattack when it's invalid or the player selected another
|
|
||||||
// weapon (which is a tick, not a time like 1 second, but servertime + 1
|
|
||||||
// second)
|
|
||||||
if (!nextattack || classid != lastwep)
|
|
||||||
nextattack =
|
|
||||||
CE_FLOAT(g_pLocalPlayer->weapon(), netvar.flNextPrimaryAttack);
|
|
||||||
// Set last weapon since it's not needed anymore this cycle
|
|
||||||
lastwep = classid;
|
|
||||||
// Check if holding JARAAATE
|
|
||||||
if (CE_INT(g_pLocalPlayer->weapon(), netvar.iItemDefinitionIndex) == 58)
|
|
||||||
{
|
|
||||||
// Setup Switch variable to not constantly spam jarate, since else
|
|
||||||
// the jarate may vanish
|
|
||||||
static int bSwitch = 0;
|
|
||||||
// Only play Piss.wav once every second
|
|
||||||
if ((g_pUserCmd->command_number % 66) == 0 &&
|
|
||||||
(g_pUserCmd->buttons & IN_ATTACK))
|
|
||||||
announcer::playsound("piss.wav");
|
|
||||||
// If in attack and bSwitch is 0 do not attack but increment bSwitch
|
|
||||||
if ((g_pUserCmd->buttons & IN_ATTACK) && !bSwitch)
|
|
||||||
{
|
|
||||||
bSwitch++;
|
|
||||||
g_pUserCmd->buttons &= ~IN_ATTACK;
|
|
||||||
}
|
|
||||||
// Else attack and set bSwitch to 0 once it's over 20
|
|
||||||
else if (bSwitch)
|
|
||||||
{
|
|
||||||
amount = 21 * 66;
|
|
||||||
bSwitch++;
|
|
||||||
if (bSwitch > 20)
|
|
||||||
bSwitch = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!amount)
|
|
||||||
return;
|
|
||||||
active = true;
|
|
||||||
/*g_pUserCmd->command_number += amount;
|
|
||||||
g_pUserCmd->hasbeenpredicted = true;
|
|
||||||
*(int *) ((unsigned) g_IBaseClientState + offsets::lastoutgoingcommand()) +=
|
|
||||||
amount;*/
|
|
||||||
INetChannel *ch = (INetChannel *) g_IEngine->GetNetChannelInfo();
|
|
||||||
int &m_nOutSequenceNr =
|
|
||||||
*(int *) ((unsigned) ch + offsets::m_nOutSequenceNr());
|
|
||||||
m_nOutSequenceNr += amount;
|
|
||||||
//*bSendPackets = true;
|
|
||||||
}
|
|
||||||
void Draw()
|
|
||||||
{
|
|
||||||
#if ENABLE_VISUALS
|
|
||||||
if (!master_switch)
|
|
||||||
return;
|
|
||||||
if (doom && (servertime - nextattack > 0.0f))
|
|
||||||
{
|
|
||||||
auto amount = servertime - nextattack;
|
|
||||||
if (amount > 0.0f)
|
|
||||||
AddCenterString(format("Fireable amount: ", (int) amount),
|
|
||||||
colors::orange);
|
|
||||||
}
|
|
||||||
if (razorback)
|
|
||||||
{
|
|
||||||
if (servertime - nextattack > 3.0f)
|
|
||||||
{
|
|
||||||
AddCenterString(format("Can Stab through Razorback"),
|
|
||||||
colors::green);
|
|
||||||
}
|
|
||||||
else if (servertime - nextattack < 3.0f)
|
|
||||||
AddCenterString(format("Can't Stab through Razorback"),
|
|
||||||
colors::red);
|
|
||||||
}
|
|
||||||
if (piss)
|
|
||||||
{
|
|
||||||
if (servertime - nextattack > 21.0f)
|
|
||||||
{
|
|
||||||
AddCenterString(format("Can Spam piss"), colors::green);
|
|
||||||
}
|
|
||||||
else if (servertime - nextattack < 21.0f)
|
|
||||||
AddCenterString(format("Can't spam piss, ",
|
|
||||||
(int) ((servertime - nextattack) * 100 / 21),
|
|
||||||
"% charge"),
|
|
||||||
colors::red);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
@ -5,18 +5,17 @@
|
|||||||
* Author: nullifiedcat
|
* Author: nullifiedcat
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <settings/Bool.hpp>
|
||||||
#include "common.hpp"
|
#include "common.hpp"
|
||||||
|
|
||||||
|
static settings::Bool enable{ "noisemaker-spam.enable", "false" };
|
||||||
|
|
||||||
namespace hacks::tf2::noisemaker
|
namespace hacks::tf2::noisemaker
|
||||||
{
|
{
|
||||||
|
|
||||||
static CatVar
|
|
||||||
enabled(CV_SWITCH, "noisemaker", "0", "Noisemaker spam",
|
|
||||||
"Spams noisemakers Infinitly\nWorks with limited use noisemakers");
|
|
||||||
|
|
||||||
void CreateMove()
|
void CreateMove()
|
||||||
{
|
{
|
||||||
if (enabled)
|
if (enable)
|
||||||
{
|
{
|
||||||
if (g_GlobalVars->framecount % 100 == 0)
|
if (g_GlobalVars->framecount % 100 == 0)
|
||||||
{
|
{
|
||||||
@ -26,6 +25,5 @@ void CreateMove()
|
|||||||
g_IEngine->ServerCmdKeyValues(kv2);
|
g_IEngine->ServerCmdKeyValues(kv2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,17 +7,16 @@
|
|||||||
|
|
||||||
#include <hacks/ac/aimbot.hpp>
|
#include <hacks/ac/aimbot.hpp>
|
||||||
#include <hacks/AntiCheat.hpp>
|
#include <hacks/AntiCheat.hpp>
|
||||||
|
#include <settings/Float.hpp>
|
||||||
#include "common.hpp"
|
#include "common.hpp"
|
||||||
|
|
||||||
|
static settings::Bool enable{ "find-cheaters.aimbot.enable", "true" };
|
||||||
|
static settings::Float detect_angle{ "find-cheaters.aimbot.angle", "30" };
|
||||||
|
static settings::Int detections_warning{ "find-cheaters.aimbot.detections", "3" };
|
||||||
|
|
||||||
namespace ac::aimbot
|
namespace ac::aimbot
|
||||||
{
|
{
|
||||||
|
|
||||||
static CatVar enabled(CV_SWITCH, "ac_aimbot", "1", "Detect Aimbot",
|
|
||||||
"Is not recommended");
|
|
||||||
static CatVar detect_angle(CV_FLOAT, "ac_aimbot_angle", "30", "Aimbot Angle");
|
|
||||||
static CatVar detections_warning(CV_INT, "ac_aimbot_detections", "3",
|
|
||||||
"Min detections to warn");
|
|
||||||
|
|
||||||
ac_data data_table[32];
|
ac_data data_table[32];
|
||||||
int amount[32];
|
int amount[32];
|
||||||
|
|
||||||
|
@ -6,12 +6,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <hacks/AntiCheat.hpp>
|
#include <hacks/AntiCheat.hpp>
|
||||||
|
#include <settings/Bool.hpp>
|
||||||
#include "common.hpp"
|
#include "common.hpp"
|
||||||
|
|
||||||
|
static settings::Bool enable{ "find-cheaters.antiaim.enable", "true" };
|
||||||
|
|
||||||
namespace ac::antiaim
|
namespace ac::antiaim
|
||||||
{
|
{
|
||||||
|
|
||||||
static CatVar enabled(CV_SWITCH, "ac_antiaim", "1", "Detect Antiaim");
|
|
||||||
unsigned long last_accusation[32]{ 0 };
|
unsigned long last_accusation[32]{ 0 };
|
||||||
|
|
||||||
void ResetEverything()
|
void ResetEverything()
|
||||||
|
@ -6,14 +6,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <hacks/AntiCheat.hpp>
|
#include <hacks/AntiCheat.hpp>
|
||||||
|
#include <settings/Int.hpp>
|
||||||
#include "common.hpp"
|
#include "common.hpp"
|
||||||
|
|
||||||
|
static settings::Int bhop_detect_count{ "find-cheaters.bunnyhop.detections", "4" };
|
||||||
|
|
||||||
namespace ac::bhop
|
namespace ac::bhop
|
||||||
{
|
{
|
||||||
|
|
||||||
static CatVar bhop_detect_count(CV_INT, "ac_bhop_count", "4",
|
|
||||||
"BHop Detections");
|
|
||||||
|
|
||||||
ac_data data_table[32]{};
|
ac_data data_table[32]{};
|
||||||
|
|
||||||
void ResetEverything()
|
void ResetEverything()
|
||||||
|
@ -8,20 +8,18 @@
|
|||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <MiscTemporary.hpp>
|
#include <MiscTemporary.hpp>
|
||||||
#include <hacks/AntiAim.hpp>
|
#include <hacks/AntiAim.hpp>
|
||||||
|
#include <settings/Bool.hpp>
|
||||||
#include "HookedMethods.hpp"
|
#include "HookedMethods.hpp"
|
||||||
|
|
||||||
|
static settings::Bool clean_chat{ "misc.clean-chat", "false" };
|
||||||
|
static settings::Bool dispatch_log{ "debug.log-dispatch-user-msg", "false" };
|
||||||
|
static settings::String chat_filter{ "misc.chat-censor.filter", "" };
|
||||||
|
static settings::Bool chat_filter_enable{ "misc.chat-censor.enable", "false" };
|
||||||
|
|
||||||
static bool retrun = false;
|
static bool retrun = false;
|
||||||
static Timer sendmsg{};
|
static Timer sendmsg{};
|
||||||
static Timer gitgud{};
|
static Timer gitgud{};
|
||||||
static CatVar clean_chat(CV_SWITCH, "clean_chat", "0", "Clean chat",
|
|
||||||
"Removes newlines from chat");
|
|
||||||
static CatVar dispatch_log(CV_SWITCH, "debug_log_usermessages", "0",
|
|
||||||
"Log dispatched user messages");
|
|
||||||
static CatVar chat_filter(CV_STRING, "chat_censor", "", "Censor words",
|
|
||||||
"Spam Chat with newlines if the chosen words are "
|
|
||||||
"said, seperate with commas");
|
|
||||||
static CatVar chat_filter_enabled(CV_SWITCH, "chat_censor_enabled", "0",
|
|
||||||
"Enable censor", "Censor Words in chat");
|
|
||||||
const std::string clear = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
const std::string clear = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
||||||
"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
||||||
"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
||||||
|
@ -3,17 +3,11 @@
|
|||||||
Copyright (c) 2018 nullworks. All rights reserved.
|
Copyright (c) 2018 nullworks. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <settings/String.hpp>
|
||||||
#include "HookedMethods.hpp"
|
#include "HookedMethods.hpp"
|
||||||
|
|
||||||
static CatVar ipc_name(CV_STRING, "name_ipc", "", "IPC Name");
|
static settings::String ipc_name{ "name.ipc", "" };
|
||||||
|
static settings::Int namesteal{ "name.namesteal", "0" };
|
||||||
static CatEnum namesteal_enum({ "OFF", "PASSIVE", "ACTIVE" });
|
|
||||||
static CatVar
|
|
||||||
namesteal(namesteal_enum, "name_stealer", "0", "Name Stealer",
|
|
||||||
"Attemt to steal your teammates names. Usefull for avoiding "
|
|
||||||
"kicks\nPassive only changes when the name stolen is no "
|
|
||||||
"longer the best name to use\nActive Attemps to change the "
|
|
||||||
"name whenever possible");
|
|
||||||
|
|
||||||
static std::string stolen_name;
|
static std::string stolen_name;
|
||||||
|
|
||||||
|
@ -4,12 +4,16 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <hacks/hacklist.hpp>
|
#include <hacks/hacklist.hpp>
|
||||||
|
#include <settings/Bool.hpp>
|
||||||
#include "HookedMethods.hpp"
|
#include "HookedMethods.hpp"
|
||||||
#include "MiscTemporary.hpp"
|
#include "MiscTemporary.hpp"
|
||||||
#if not LAGBOT_MODE
|
#if not LAGBOT_MODE
|
||||||
#include "hacks/Backtrack.hpp"
|
#include "hacks/Backtrack.hpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static settings::Bool halloween_mode{ "misc.force-halloween", "false" };
|
||||||
|
static settings::Int skybox_changer{ "misc.skybox-override", "0" };
|
||||||
|
|
||||||
const char *skynum[] = { "sky_tf2_04",
|
const char *skynum[] = { "sky_tf2_04",
|
||||||
"sky_upward",
|
"sky_upward",
|
||||||
"sky_dustbowl_01",
|
"sky_dustbowl_01",
|
||||||
@ -72,12 +76,6 @@ static CatEnum skys({ "sky_tf2_04",
|
|||||||
"sky_pyroland_01",
|
"sky_pyroland_01",
|
||||||
"sky_pyroland_02",
|
"sky_pyroland_02",
|
||||||
"sky_pyroland_03" });
|
"sky_pyroland_03" });
|
||||||
static CatVar
|
|
||||||
skybox_changer(skys, "skybox_changer", "0", "Change Skybox to this skybox",
|
|
||||||
"Change Skybox to this skybox, only changes on map load");
|
|
||||||
static CatVar halloween_mode(CV_SWITCH, "halloween_mode", "0",
|
|
||||||
"Forced Halloween mode",
|
|
||||||
"forced tf_forced_holiday 2");
|
|
||||||
|
|
||||||
namespace hooked_methods
|
namespace hooked_methods
|
||||||
{
|
{
|
||||||
|
@ -7,12 +7,12 @@
|
|||||||
|
|
||||||
#include <hacks/hacklist.hpp>
|
#include <hacks/hacklist.hpp>
|
||||||
#include <online/Online.hpp>
|
#include <online/Online.hpp>
|
||||||
|
#include <settings/Bool.hpp>
|
||||||
#include "common.hpp"
|
#include "common.hpp"
|
||||||
#include "hitrate.hpp"
|
#include "hitrate.hpp"
|
||||||
#include "hack.hpp"
|
#include "hack.hpp"
|
||||||
|
|
||||||
static CatVar cursor_fix_experimental(CV_SWITCH, "experimental_cursor_fix", "1",
|
static settings::Bool cursor_fix_experimental{ "debug.cursor-fix", "false" };
|
||||||
"Cursor fix");
|
|
||||||
|
|
||||||
namespace hooked_methods
|
namespace hooked_methods
|
||||||
{
|
{
|
||||||
|
@ -5,13 +5,11 @@
|
|||||||
|
|
||||||
#include <ucccccp.hpp>
|
#include <ucccccp.hpp>
|
||||||
#include <MiscTemporary.hpp>
|
#include <MiscTemporary.hpp>
|
||||||
|
#include <settings/Int.hpp>
|
||||||
#include "HookedMethods.hpp"
|
#include "HookedMethods.hpp"
|
||||||
|
|
||||||
static CatVar newlines_msg(CV_INT, "chat_newlines", "0", "Prefix newlines",
|
static settings::Int newlines_msg{ "chat.prefix-newlines", "0" };
|
||||||
"Add # newlines before each your message", 0, 24);
|
static settings::Bool log_sent{ "debug.log-sent-chat", "false" };
|
||||||
|
|
||||||
static CatVar log_sent(CV_SWITCH, "debug_log_sent_messages", "0",
|
|
||||||
"Log sent messages");
|
|
||||||
|
|
||||||
namespace hooked_methods
|
namespace hooked_methods
|
||||||
{
|
{
|
||||||
|
@ -4,10 +4,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <hacks/hacklist.hpp>
|
#include <hacks/hacklist.hpp>
|
||||||
|
#include <settings/Bool.hpp>
|
||||||
#include "HookedMethods.hpp"
|
#include "HookedMethods.hpp"
|
||||||
|
|
||||||
static CatVar die_if_vac(CV_SWITCH, "die_if_vac", "0", "Die if VAC banned");
|
static settings::Bool die_if_vac{ "misc.die-if-vac", "false" };
|
||||||
static CatVar autoabandon(CV_SWITCH, "cbu_abandon", "0", "Auto abandon");
|
static settings::Bool autoabandon{ "misc.auto-abandon", "false" };
|
||||||
|
|
||||||
namespace hooked_methods
|
namespace hooked_methods
|
||||||
{
|
{
|
||||||
Timer t{};
|
Timer t{};
|
||||||
|
@ -70,4 +70,3 @@ static CatCommand minus_use_action_slot_item_server(
|
|||||||
// static CatVar queue_messages(CV_SWITCH, "chat_queue", "0", "Queue messages",
|
// static CatVar queue_messages(CV_SWITCH, "chat_queue", "0", "Queue messages",
|
||||||
// "Use this if you want to use spam/killsay and still be able to chat normally
|
// "Use this if you want to use spam/killsay and still be able to chat normally
|
||||||
// (without having your msgs eaten by valve cooldown)");
|
// (without having your msgs eaten by valve cooldown)");
|
||||||
static CatVar airstuck(CV_KEY, "airstuck", "0", "Airstuck", "");
|
|
||||||
|
@ -16,6 +16,9 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <init.hpp>
|
#include <init.hpp>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
#include <settings/Bool.hpp>
|
||||||
|
|
||||||
|
static settings::Bool enable{ "online.enable", "false" };
|
||||||
|
|
||||||
namespace online
|
namespace online
|
||||||
{
|
{
|
||||||
@ -30,7 +33,6 @@ static Timer identify_timer{};
|
|||||||
static bool identify_stale{ false };
|
static bool identify_stale{ false };
|
||||||
static std::string api_key{};
|
static std::string api_key{};
|
||||||
|
|
||||||
static CatVar enable(CV_SWITCH, "online", "1", "Enable online features");
|
|
||||||
static CatCommand login("online_login", "Login", [](const CCommand &args) {
|
static CatCommand login("online_login", "Login", [](const CCommand &args) {
|
||||||
if (args.ArgC() != 3)
|
if (args.ArgC() != 3)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user