Cherrypick stuff
This commit is contained in:
parent
21ff500dd8
commit
5d8640bcce
@ -1,18 +0,0 @@
|
||||
/*
|
||||
* Announcer.hpp
|
||||
*
|
||||
* Created on: Nov 13, 2017
|
||||
* Author: nullifiedcat
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common.hpp"
|
||||
|
||||
namespace hacks::shared::announcer
|
||||
{
|
||||
|
||||
void playsound(const std::string &);
|
||||
void init();
|
||||
void shutdown();
|
||||
} // namespace hacks::shared::announcer
|
@ -1,15 +0,0 @@
|
||||
/*
|
||||
* AntiDisguise.h
|
||||
*
|
||||
* Created on: Nov 16, 2016
|
||||
* Author: nullifiedcat
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common.hpp"
|
||||
|
||||
namespace hacks::tf2::antidisguise
|
||||
{
|
||||
void Draw();
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
/*
|
||||
* AutoReflect.h
|
||||
*
|
||||
* Created on: Nov 18, 2016
|
||||
* Author: nullifiedcat
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common.hpp"
|
||||
|
||||
namespace hacks::tf::autoreflect
|
||||
{
|
||||
void Draw();
|
||||
void CreateMove();
|
||||
bool ShouldReflect(CachedEntity *ent);
|
||||
bool IsEntStickyBomb(CachedEntity *ent);
|
||||
} // namespace hacks::tf::autoreflect
|
@ -1,19 +0,0 @@
|
||||
/*
|
||||
* DominateSay.h
|
||||
*
|
||||
* Created on: Oct 30, 2017
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common.hpp"
|
||||
|
||||
namespace hacks::shared::dominatesay
|
||||
{
|
||||
|
||||
void init();
|
||||
void shutdown();
|
||||
void reload();
|
||||
|
||||
extern const std::vector<std::string> builtin_default;
|
||||
} // namespace hacks::shared::dominatesay
|
@ -1,22 +0,0 @@
|
||||
/*
|
||||
* KillSay.h
|
||||
*
|
||||
* Created on: Jan 19, 2017
|
||||
* Author: nullifiedcat
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common.hpp"
|
||||
|
||||
namespace hacks::shared::killsay
|
||||
{
|
||||
|
||||
void init();
|
||||
void shutdown();
|
||||
void reload();
|
||||
|
||||
extern const std::vector<std::string> builtin_default;
|
||||
extern const std::vector<std::string> builtin_nonecore_offensive;
|
||||
extern const std::vector<std::string> builtin_nonecore_mlg;
|
||||
} // namespace hacks::shared::killsay
|
@ -1,20 +0,0 @@
|
||||
/*
|
||||
* Killstreak.hpp
|
||||
*
|
||||
* Created on: Nov 13, 2017
|
||||
* Author: nullifiedcat
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common.hpp"
|
||||
|
||||
namespace hacks::tf2::killstreak
|
||||
{
|
||||
|
||||
int current_streak();
|
||||
void init();
|
||||
void shutdown();
|
||||
void fire_event(IGameEvent *event);
|
||||
void apply_killstreaks();
|
||||
} // namespace hacks::tf2::killstreak
|
@ -1,18 +0,0 @@
|
||||
/*
|
||||
* Radar.hpp
|
||||
*
|
||||
* Created on: Mar 28, 2017
|
||||
* Author: nullifiedcat
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#if ENABLE_VISUALS
|
||||
#include "visual/atlas.hpp"
|
||||
#include "common.hpp"
|
||||
|
||||
namespace hacks::tf::radar
|
||||
{
|
||||
std::pair<int, int> WorldToRadar(int x, int y);
|
||||
void Draw();
|
||||
} // namespace hacks::tf::radar
|
||||
#endif
|
@ -6,7 +6,7 @@
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define SPAM_HACK
|
||||
#include "common.hpp"
|
||||
|
||||
class CatCommand;
|
||||
|
@ -1,15 +0,0 @@
|
||||
/*
|
||||
* SpyAlert.h
|
||||
*
|
||||
* Created on: Dec 5, 2016
|
||||
* Author: nullifiedcat
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common.hpp"
|
||||
|
||||
namespace hacks::tf::spyalert
|
||||
{
|
||||
void Draw();
|
||||
}
|
@ -13,22 +13,13 @@
|
||||
|
||||
#include "ESP.hpp"
|
||||
#include "SkinChanger.hpp"
|
||||
#include "Radar.hpp"
|
||||
#include "SpyAlert.hpp"
|
||||
|
||||
#endif
|
||||
#include "Aimbot.hpp"
|
||||
#include "AntiAim.hpp"
|
||||
#include "AntiDisguise.hpp"
|
||||
#include "AutoHeal.hpp"
|
||||
#include "AutoReflect.hpp"
|
||||
#include "AutoSticky.hpp"
|
||||
#include "AutoDetonator.hpp"
|
||||
#include "AntiCheat.hpp"
|
||||
#include "SeedPrediction.hpp"
|
||||
#if ENABLE_VISUALS
|
||||
#include "Radar.hpp"
|
||||
#endif
|
||||
#include "Walkbot.hpp"
|
||||
#include "navparser.hpp"
|
||||
#include "AutoJoin.hpp"
|
||||
@ -37,14 +28,10 @@
|
||||
#include "FollowBot.hpp"
|
||||
#include "Misc.hpp"
|
||||
#include "Trigger.hpp"
|
||||
#include "KillSay.hpp"
|
||||
#include "DominateSay.hpp"
|
||||
#include "UberSpam.hpp"
|
||||
#include "Achievement.hpp"
|
||||
#include "Spam.hpp"
|
||||
#include "NavBot.hpp"
|
||||
#include "FollowBot.hpp"
|
||||
#include "Announcer.hpp"
|
||||
#include "Killstreak.hpp"
|
||||
#include "CatBot.hpp"
|
||||
#include "Backtrack.hpp"
|
||||
|
@ -14,7 +14,12 @@ enum ec_types : int8_t
|
||||
Draw,
|
||||
#endif
|
||||
Paint,
|
||||
LevelInit
|
||||
LevelInit,
|
||||
/* TO DO: Should we permanently store Init events ? They are used only once */
|
||||
Init,
|
||||
Shutdown,
|
||||
/* Append new event above this line. Line below declares amount of events */
|
||||
EcTypesSize
|
||||
};
|
||||
|
||||
enum priority : int8_t
|
||||
|
@ -14,7 +14,9 @@
|
||||
#include <settings/Bool.hpp>
|
||||
|
||||
static settings::Bool enable{ "chat-log.enable", "false" };
|
||||
#ifdef SPAM_HACK
|
||||
static settings::Bool no_spam{ "chat-log.no-spam", "true" };
|
||||
#endif
|
||||
static settings::Bool no_ipc{ "chat-log.no-ipc", "true" };
|
||||
|
||||
namespace chatlog
|
||||
@ -108,8 +110,10 @@ void LogMessage(int eid, std::string message)
|
||||
{
|
||||
return;
|
||||
}
|
||||
#ifdef SPAM_HACK
|
||||
if (no_spam && hacks::shared::spam::isActive() and eid == g_IEngine->GetLocalPlayer())
|
||||
return;
|
||||
#endif
|
||||
player_info_s info{};
|
||||
if (not g_IEngine->GetPlayerInfo(eid, &info))
|
||||
return;
|
||||
|
12
src/hack.cpp
12
src/hack.cpp
@ -292,11 +292,7 @@ free(logname);*/
|
||||
}
|
||||
#endif
|
||||
// FIXME [MP]
|
||||
hacks::shared::killsay::init();
|
||||
hacks::shared::dominatesay::init();
|
||||
hacks::shared::announcer::init();
|
||||
hacks::tf2::killstreak::init();
|
||||
hacks::shared::catbot::init();
|
||||
EC::run(EC::Init);
|
||||
logging::Info("Hooked!");
|
||||
velocity::Init();
|
||||
playerlist::Load();
|
||||
@ -324,9 +320,7 @@ free(logname);*/
|
||||
InitSpinner();
|
||||
logging::Info("Initialized Fidget Spinner");
|
||||
#endif
|
||||
hacks::shared::spam::init();
|
||||
#endif
|
||||
hacks::shared::walkbot::Initialize();
|
||||
#if ENABLE_VISUALS
|
||||
hacks::shared::esp::Init();
|
||||
#endif
|
||||
@ -380,9 +374,7 @@ void hack::Shutdown()
|
||||
logging::Info("Shutting down killsay...");
|
||||
if (!hack::game_shutdown)
|
||||
{
|
||||
hacks::shared::killsay::shutdown();
|
||||
hacks::shared::dominatesay::shutdown();
|
||||
hacks::shared::announcer::shutdown();
|
||||
EC::run(EC::Shutdown);
|
||||
#if ENABLE_VISUALS
|
||||
g_pScreenSpaceEffects->DisableScreenSpaceEffect("_cathook_glow");
|
||||
g_pScreenSpaceEffects->DisableScreenSpaceEffect("_cathook_chams");
|
||||
|
@ -160,4 +160,9 @@ void shutdown()
|
||||
{
|
||||
g_IEventManager2->RemoveListener(&listener());
|
||||
}
|
||||
|
||||
static InitRoutine EC([]() {
|
||||
EC::Register(EC::Init, init, "init_announcer", EC::average);
|
||||
EC::Register(EC::Shutdown, shutdown, "shutdown_announcer", EC::average);
|
||||
});
|
||||
} // namespace hacks::shared::announcer
|
||||
|
@ -48,4 +48,8 @@ void Draw()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static InitRoutine EC([]() {
|
||||
EC::Register(EC::Draw, Draw, "antidisguise", EC::average);
|
||||
});
|
||||
} // namespace hacks::tf2::antidisguise
|
||||
|
@ -6,7 +6,6 @@
|
||||
*/
|
||||
|
||||
#include "common.hpp"
|
||||
#include <hacks/AutoReflect.hpp>
|
||||
#if ENABLE_VISUALS
|
||||
#include <glez/draw.hpp>
|
||||
#endif
|
||||
@ -29,6 +28,55 @@ static settings::Float fovcircle_opacity{ "autoreflect.draw-fov-opacity", "0.7"
|
||||
namespace hacks::tf::autoreflect
|
||||
{
|
||||
|
||||
bool IsEntStickyBomb(CachedEntity *ent)
|
||||
{
|
||||
// Check if the projectile is a sticky bomb
|
||||
if (ent->m_iClassID() == CL_CLASS(CTFGrenadePipebombProjectile))
|
||||
{
|
||||
if (CE_INT(ent, netvar.iPipeType) == 1)
|
||||
{
|
||||
// Ent passed and should be reflected
|
||||
return true;
|
||||
}
|
||||
}
|
||||
// Ent didnt pass the test so return false
|
||||
return false;
|
||||
}
|
||||
|
||||
// Function to determine whether an ent is good to reflect
|
||||
bool ShouldReflect(CachedEntity *ent)
|
||||
{
|
||||
// Check if the entity is a projectile
|
||||
if (ent->m_Type() != ENTITY_PROJECTILE)
|
||||
return false;
|
||||
|
||||
if (!teammates)
|
||||
{
|
||||
// Check if the projectile is your own teams
|
||||
if (!ent->m_bEnemy())
|
||||
return false;
|
||||
}
|
||||
|
||||
// We dont want to do these checks in dodgeball, it breakes if we do
|
||||
if (!dodgeball)
|
||||
{
|
||||
// If projectile is already deflected, don't deflect it again.
|
||||
if (CE_INT(ent, (ent->m_bGrenadeProjectile() ?
|
||||
/* NetVar for grenades */ netvar.Grenade_iDeflected
|
||||
:
|
||||
/* For rockets */ netvar.Rocket_iDeflected)))
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if the projectile is a sticky bomb and if the user settings allow
|
||||
// it to be reflected
|
||||
if (IsEntStickyBomb(ent) && !stickies)
|
||||
return false;
|
||||
|
||||
// Target passed the test, return true
|
||||
return true;
|
||||
}
|
||||
|
||||
// Function called by game for movement
|
||||
void CreateMove()
|
||||
{
|
||||
@ -129,54 +177,6 @@ void CreateMove()
|
||||
current_user_cmd->buttons |= IN_ATTACK2;
|
||||
}
|
||||
|
||||
// Function to determine whether an ent is good to reflect
|
||||
bool ShouldReflect(CachedEntity *ent)
|
||||
{
|
||||
// Check if the entity is a projectile
|
||||
if (ent->m_Type() != ENTITY_PROJECTILE)
|
||||
return false;
|
||||
|
||||
if (!teammates)
|
||||
{
|
||||
// Check if the projectile is your own teams
|
||||
if (!ent->m_bEnemy())
|
||||
return false;
|
||||
}
|
||||
|
||||
// We dont want to do these checks in dodgeball, it breakes if we do
|
||||
if (!dodgeball)
|
||||
{
|
||||
// If projectile is already deflected, don't deflect it again.
|
||||
if (CE_INT(ent, (ent->m_bGrenadeProjectile() ?
|
||||
/* NetVar for grenades */ netvar.Grenade_iDeflected
|
||||
:
|
||||
/* For rockets */ netvar.Rocket_iDeflected)))
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if the projectile is a sticky bomb and if the user settings allow
|
||||
// it to be reflected
|
||||
if (IsEntStickyBomb(ent) && !stickies)
|
||||
return false;
|
||||
|
||||
// Target passed the test, return true
|
||||
return true;
|
||||
}
|
||||
|
||||
bool IsEntStickyBomb(CachedEntity *ent)
|
||||
{
|
||||
// Check if the projectile is a sticky bomb
|
||||
if (ent->m_iClassID() == CL_CLASS(CTFGrenadePipebombProjectile))
|
||||
{
|
||||
if (CE_INT(ent, netvar.iPipeType) == 1)
|
||||
{
|
||||
// Ent passed and should be reflected
|
||||
return true;
|
||||
}
|
||||
}
|
||||
// Ent didnt pass the test so return false
|
||||
return false;
|
||||
}
|
||||
void Draw()
|
||||
{
|
||||
#if ENABLE_VISUALS
|
||||
@ -213,4 +213,11 @@ void Draw()
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static InitRoutine EC([]() {
|
||||
EC::Register(EC::CreateMove, CreateMove, "auto_reflect", EC::average);
|
||||
#if ENABLE_VISUALS
|
||||
EC::Register(EC::Draw, Draw, "auto_reflect", EC::average);
|
||||
#endif
|
||||
});
|
||||
} // namespace hacks::tf::autoreflect
|
||||
|
@ -446,7 +446,8 @@ static void draw()
|
||||
#endif
|
||||
|
||||
static InitRoutine runinit([]() {
|
||||
EC::Register<EC::CreateMove>(cm, "cm_catbot", EC::average);
|
||||
EC::Register(EC::CreateMove, cm, "cm_catbot", EC::average);
|
||||
EC::Register(EC::Init, init, "init_catbot", EC::average);
|
||||
#if ENABLE_VISUALS
|
||||
EC::Register<EC::Draw>(draw, "draw_catbot", EC::average);
|
||||
#endif
|
||||
|
@ -4,20 +4,21 @@
|
||||
* Created on: October 30, 2018
|
||||
*/
|
||||
|
||||
#include <hacks/DominateSay.hpp>
|
||||
#include <settings/Int.hpp>
|
||||
#include "common.hpp"
|
||||
|
||||
static settings::Int dominatesay_mode{ "dominatesay.mode", "0" };
|
||||
static settings::String filename{ "dominatesay.file", "dominatesay.txt" };
|
||||
|
||||
static CatCommand reload_command("dominatesay_reload", "Reload dominatesays", []() { hacks::shared::dominatesay::reload(); });
|
||||
|
||||
namespace hacks::shared::dominatesay
|
||||
{
|
||||
|
||||
// a much better default dominatesay would be appreciated.
|
||||
const std::vector<std::string> builtin_default = {
|
||||
"dominating %name%! (%dominum% dominations)",
|
||||
"%name%, getting tapped?",
|
||||
"%killer% is dominating the server with %dominum% dominations!",
|
||||
};
|
||||
const std::string tf_classes_dominatesay[] = { "class", "scout", "sniper", "soldier", "demoman", "medic", "heavy", "pyro", "spy", "engineer" };
|
||||
|
||||
const std::string tf_teams_dominatesay[] = { "RED", "BLU" };
|
||||
|
||||
static std::string lastmsg{};
|
||||
@ -105,11 +106,11 @@ void shutdown()
|
||||
g_IEventManager2->RemoveListener(&listener);
|
||||
}
|
||||
|
||||
// a much better default dominatesay would be appreciated.
|
||||
const std::vector<std::string> builtin_default = {
|
||||
"dominating %name%! (%dominum% dominations)",
|
||||
"%name%, getting tapped?",
|
||||
"%killer% is dominating the server with %dominum% dominations!",
|
||||
};
|
||||
static CatCommand reload_command("dominatesay_reload", "Reload dominatesays", []() { reload(); });
|
||||
|
||||
static InitRoutine EC([]() {
|
||||
EC::Register(EC::Init, init, "init_dominatesay", EC::average);
|
||||
EC::Register(EC::Shutdown, shutdown, "shutdown_dominatesay", EC::average);
|
||||
});
|
||||
|
||||
} // namespace hacks::shared::dominatesay
|
||||
|
@ -5,7 +5,6 @@
|
||||
* Author: nullifiedcat
|
||||
*/
|
||||
|
||||
#include <hacks/KillSay.hpp>
|
||||
#include <settings/Int.hpp>
|
||||
#include "common.hpp"
|
||||
|
||||
@ -22,15 +21,51 @@ struct KillsayStorage
|
||||
|
||||
static std::unordered_map<int, KillsayStorage> killsay_storage{};
|
||||
|
||||
static CatCommand reload_command("killsay_reload", "Reload killsays", []() { hacks::shared::killsay::reload(); });
|
||||
|
||||
namespace hacks::shared::killsay
|
||||
{
|
||||
|
||||
// Thanks HellJustFroze for linking me http://daviseford.com/shittalk/
|
||||
const std::vector<std::string> builtin_default = { "Don't worry guys, I'm a garbage collector. I'm used to carrying trash.",
|
||||
"%name% is the human equivalent of a participation award.",
|
||||
"I would insult %name%, but nature did a better job.",
|
||||
"%name%, perhaps your strategy should include trying.",
|
||||
"Some people get paid to suck, you do it for free, %name%.",
|
||||
"%name%, I'd tell you to commit suicide, but then you'd have a kill.",
|
||||
"You must really like that respawn timer, %name%.",
|
||||
|
||||
"If your main is %class%, you should give up.",
|
||||
"Hey %name%, i see you can't play %class%. Try quitting the game.",
|
||||
"%team% is filled with spergs",
|
||||
"%name%@gmail.com to vacreview@valvesoftware.com\nFOUND CHEATER",
|
||||
"\n☐ Not rekt\n ☑ Rekt\n ☑ Really Rekt\n ☑ Tyrannosaurus Rekt" };
|
||||
|
||||
const std::vector<std::string> builtin_nonecore_offensive = { "%name%, you are noob.",
|
||||
"%name%, do you even lift?",
|
||||
"%name%, you're a faggot.",
|
||||
"%name%, stop cheating.",
|
||||
"%name%: Mom, call the police - I've got headshoted again!",
|
||||
"Right into your face, %name%.",
|
||||
"Into your face, pal.",
|
||||
"Keep crying, baby.",
|
||||
"Faggot. Noob.",
|
||||
"You are dead, not big surprise.",
|
||||
"Sit down nerd.",
|
||||
"Fuck you with a rake.",
|
||||
"Eat a man spear, you Jamaican manure salesman.",
|
||||
"Wallow in a river of cocks, you pathetic bitch.",
|
||||
"I will go to heaven and you will be in prison.",
|
||||
"Piss off, you poor, ignorant, mullet-wearing porch monkey.",
|
||||
"Your Mom says your turn-ons consist of butthole licking and scat porn.",
|
||||
"Shut up, you'll never be the man your mother is.",
|
||||
"It looks like your face caught on fire and someone tried to put it out "
|
||||
"with a fork.",
|
||||
"You're so ugly Hello Kitty said goodbye to you.",
|
||||
"Don't you love nature, despite what it did to you?"
|
||||
|
||||
};
|
||||
const std::vector<std::string> builtin_nonecore_mlg = { "GET REKT U SCRUB", "GET REKT M8", "U GOT NOSCOPED M8", "U GOT QUICKSCOPED M8", "2 FAST 4 U, SCRUB", "U GOT REKT, M8" };
|
||||
const std::string tf_classes_killsay[] = { "class", "scout", "sniper", "soldier", "demoman", "medic", "heavy", "pyro", "spy", "engineer" };
|
||||
|
||||
const std::string tf_teams_killsay[] = { "RED", "BLU" };
|
||||
|
||||
static std::string lastmsg{};
|
||||
|
||||
TextFile file{};
|
||||
@ -121,8 +156,6 @@ static void ProcessKillsay()
|
||||
}
|
||||
}
|
||||
|
||||
static InitRoutine runinit([]() { EC::Register<EC::Paint>(ProcessKillsay, "paint_killsay", EC::average); });
|
||||
|
||||
static KillSayEventListener listener{};
|
||||
|
||||
void reload()
|
||||
@ -130,6 +163,8 @@ void reload()
|
||||
file.Load(*filename);
|
||||
}
|
||||
|
||||
static CatCommand reload_command("killsay_reload", "Reload killsays", []() { reload(); });
|
||||
|
||||
void init()
|
||||
{
|
||||
g_IEventManager2->AddListener(&listener, (const char *) "player_death", false);
|
||||
@ -140,44 +175,10 @@ void shutdown()
|
||||
g_IEventManager2->RemoveListener(&listener);
|
||||
}
|
||||
|
||||
// Thanks HellJustFroze for linking me http://daviseford.com/shittalk/
|
||||
const std::vector<std::string> builtin_default = { "Don't worry guys, I'm a garbage collector. I'm used to carrying trash.",
|
||||
"%name% is the human equivalent of a participation award.",
|
||||
"I would insult %name%, but nature did a better job.",
|
||||
"%name%, perhaps your strategy should include trying.",
|
||||
"Some people get paid to suck, you do it for free, %name%.",
|
||||
"%name%, I'd tell you to commit suicide, but then you'd have a kill.",
|
||||
"You must really like that respawn timer, %name%.",
|
||||
static InitRoutine runinit([]() {
|
||||
EC::Register(EC::Paint, ProcessKillsay, "paint_killsay", EC::average);
|
||||
EC::Register(EC::Init, init, "init_killsay", EC::average);
|
||||
EC::Register(EC::Shutdown, shutdown, "shutdown_killsay", EC::average);
|
||||
});
|
||||
|
||||
"If your main is %class%, you should give up.",
|
||||
"Hey %name%, i see you can't play %class%. Try quitting the game.",
|
||||
"%team% is filled with spergs",
|
||||
"%name%@gmail.com to vacreview@valvesoftware.com\nFOUND CHEATER",
|
||||
"\n☐ Not rekt\n ☑ Rekt\n ☑ Really Rekt\n ☑ Tyrannosaurus Rekt" };
|
||||
|
||||
const std::vector<std::string> builtin_nonecore_offensive = { "%name%, you are noob.",
|
||||
"%name%, do you even lift?",
|
||||
"%name%, you're a faggot.",
|
||||
"%name%, stop cheating.",
|
||||
"%name%: Mom, call the police - I've got headshoted again!",
|
||||
"Right into your face, %name%.",
|
||||
"Into your face, pal.",
|
||||
"Keep crying, baby.",
|
||||
"Faggot. Noob.",
|
||||
"You are dead, not big surprise.",
|
||||
"Sit down nerd.",
|
||||
"Fuck you with a rake.",
|
||||
"Eat a man spear, you Jamaican manure salesman.",
|
||||
"Wallow in a river of cocks, you pathetic bitch.",
|
||||
"I will go to heaven and you will be in prison.",
|
||||
"Piss off, you poor, ignorant, mullet-wearing porch monkey.",
|
||||
"Your Mom says your turn-ons consist of butthole licking and scat porn.",
|
||||
"Shut up, you'll never be the man your mother is.",
|
||||
"It looks like your face caught on fire and someone tried to put it out "
|
||||
"with a fork.",
|
||||
"You're so ugly Hello Kitty said goodbye to you.",
|
||||
"Don't you love nature, despite what it did to you?"
|
||||
|
||||
};
|
||||
const std::vector<std::string> builtin_nonecore_mlg = { "GET REKT U SCRUB", "GET REKT M8", "U GOT NOSCOPED M8", "U GOT QUICKSCOPED M8", "2 FAST 4 U, SCRUB", "U GOT REKT, M8" };
|
||||
} // namespace hacks::shared::killsay
|
||||
|
@ -126,4 +126,8 @@ bool FireEventClientSide(IGameEventManager2 *manager, IGameEvent *event)
|
||||
void init()
|
||||
{
|
||||
}
|
||||
|
||||
static InitRoutine EC([]() {
|
||||
EC::Register(EC::Paint, apply_killstreaks, "killstreak", EC::average);
|
||||
});
|
||||
} // namespace hacks::tf2::killstreak
|
||||
|
@ -9,7 +9,6 @@
|
||||
#include <glez/draw.hpp>
|
||||
#endif
|
||||
#include <settings/Int.hpp>
|
||||
#include "hacks/Radar.hpp"
|
||||
|
||||
#ifndef FEATURE_RADAR_DISABLED
|
||||
#if ENABLE_VISUALS
|
||||
@ -73,23 +72,6 @@ static std::vector<std::vector<textures::sprite>> tx_class{};
|
||||
static std::vector<textures::sprite> tx_teams{};
|
||||
static std::vector<textures::sprite> tx_items{};
|
||||
|
||||
InitRoutine init([]() {
|
||||
// Background circles
|
||||
for (int i = 0; i < 2; ++i)
|
||||
tx_teams.push_back(textures::atlas().create_sprite(704, 384 + i * 64, 64, 64));
|
||||
// Items
|
||||
for (int i = 0; i < 2; ++i)
|
||||
tx_items.push_back(textures::atlas().create_sprite(640, 384 + i * 64, 64, 64));
|
||||
// Classes
|
||||
for (int i = 0; i < 3; ++i)
|
||||
{
|
||||
tx_class.emplace_back();
|
||||
for (int j = 0; j < 9; ++j)
|
||||
tx_class[i].push_back(textures::atlas().create_sprite(j * 64, 320 + i * 64, 64, 64));
|
||||
}
|
||||
logging::Info("Radar sprites loaded");
|
||||
});
|
||||
|
||||
void DrawEntity(int x, int y, CachedEntity *ent)
|
||||
{
|
||||
int idx = -1;
|
||||
@ -231,6 +213,25 @@ void Draw()
|
||||
glez::draw::line(x + half_size, y + half_size / 2, 0, half_size, colors::Transparent(GUIColor(), 0.4f), 0.5f);
|
||||
glez::draw::line(x + half_size / 2, y + half_size, half_size, 0, colors::Transparent(GUIColor(), 0.4f), 0.5f);
|
||||
}
|
||||
|
||||
|
||||
InitRoutine init([]() {
|
||||
// Background circles
|
||||
for (int i = 0; i < 2; ++i)
|
||||
tx_teams.push_back(textures::atlas().create_sprite(704, 384 + i * 64, 64, 64));
|
||||
// Items
|
||||
for (int i = 0; i < 2; ++i)
|
||||
tx_items.push_back(textures::atlas().create_sprite(640, 384 + i * 64, 64, 64));
|
||||
// Classes
|
||||
for (int i = 0; i < 3; ++i)
|
||||
{
|
||||
tx_class.emplace_back();
|
||||
for (int j = 0; j < 9; ++j)
|
||||
tx_class[i].push_back(textures::atlas().create_sprite(j * 64, 320 + i * 64, 64, 64));
|
||||
}
|
||||
logging::Info("Radar sprites loaded");
|
||||
EC::Register(EC::Draw, Draw, "radar", EC::average);
|
||||
});
|
||||
} // namespace hacks::tf::radar
|
||||
|
||||
#endif
|
||||
|
@ -383,6 +383,11 @@ const std::vector<std::string> builtin_blanks = { ". \n\n\n\n\n\n\n\n\n\n\n\
|
||||
const std::vector<std::string> builtin_nonecore = { "NULL CORE - REDUCE YOUR RISK OF BEING OWNED!", "NULL CORE - WAY TO THE TOP!", "NULL CORE - BEST TF2 CHEAT!", "NULL CORE - NOW WITH BLACKJACK AND HOOKERS!", "NULL CORE - BUTTHURT IN 10 SECONDS FLAT!", "NULL CORE - WHOLE SERVER OBSERVING!", "NULL CORE - GET BACK TO PWNING!", "NULL CORE - WHEN PVP IS TOO HARDCORE!", "NULL CORE - CAN CAUSE KIDS TO RAGE!", "NULL CORE - F2P NOOBS WILL BE 100% NERFED!" };
|
||||
const std::vector<std::string> builtin_lmaobox = { "GET GOOD, GET LMAOBOX!", "LMAOBOX - WAY TO THE TOP", "WWW.LMAOBOX.NET - BEST FREE TF2 HACK!" };
|
||||
const std::vector<std::string> builtin_lithium = { "CHECK OUT www.YouTube.com/c/DurRud FOR MORE INFORMATION!", "PWNING AIMBOTS WITH OP ANTI-AIMS SINCE 2015 - LITHIUMCHEAT", "STOP GETTING MAD AND STABILIZE YOUR MOOD WITH LITHIUMCHEAT!", "SAVE YOUR MONEY AND GET LITHIUMCHEAT! IT IS FREE!", "GOT ROLLED BY LITHIUM? HEY, THAT MEANS IT'S TIME TO GET LITHIUMCHEAT!!" };
|
||||
|
||||
static InitRoutine EC([]() {
|
||||
EC::Register(EC::CreateMove, createMove, "spam", EC::average);
|
||||
init();
|
||||
});
|
||||
} // namespace hacks::shared::spam
|
||||
|
||||
static CatCommand reload("spam_reload", "Reload spam file", hacks::shared::spam::reloadSpamFile);
|
||||
|
@ -103,4 +103,8 @@ void Draw()
|
||||
backstab_triggered = false;
|
||||
}
|
||||
}
|
||||
|
||||
static InitRoutine EC([]() {
|
||||
EC::Register(EC::Draw, Draw, "spyalert", EC::average);
|
||||
});
|
||||
} // namespace hacks::tf::spyalert
|
||||
|
@ -626,4 +626,8 @@ bool CheckLineBox(Vector B1, Vector B2, Vector L1, Vector L2, Vector &Hit)
|
||||
void Draw()
|
||||
{
|
||||
}
|
||||
|
||||
static InitRoutine EC([]() {
|
||||
EC::Register(EC::CreateMove, CreateMove, "triggerbot", EC::average);
|
||||
});
|
||||
} // namespace hacks::shared::triggerbot
|
||||
|
@ -310,25 +310,6 @@ DEFINE_HOOKED_METHOD(CreateMove, bool, void *this_, float input_sample_time, CUs
|
||||
hacks::shared::antiaim::ProcessUserCmd(cmd);
|
||||
}
|
||||
IF_GAME(IsTF())
|
||||
{
|
||||
PROF_SECTION(CM_autosticky);
|
||||
hacks::tf::autosticky::CreateMove();
|
||||
}
|
||||
IF_GAME(IsTF())
|
||||
{
|
||||
PROF_SECTION(CM_autodetonator);
|
||||
hacks::tf::autodetonator::CreateMove();
|
||||
}
|
||||
IF_GAME(IsTF())
|
||||
{
|
||||
PROF_SECTION(CM_autoreflect);
|
||||
hacks::tf::autoreflect::CreateMove();
|
||||
}
|
||||
{
|
||||
PROF_SECTION(CM_triggerbot);
|
||||
hacks::shared::triggerbot::CreateMove();
|
||||
}
|
||||
IF_GAME(IsTF())
|
||||
{
|
||||
PROF_SECTION(CM_autoheal);
|
||||
hacks::tf::autoheal::CreateMove();
|
||||
@ -351,14 +332,6 @@ DEFINE_HOOKED_METHOD(CreateMove, bool, void *this_, float input_sample_time, CUs
|
||||
PROF_SECTION(CM_misc);
|
||||
hacks::shared::misc::CreateMove();
|
||||
}
|
||||
{
|
||||
PROF_SECTION(CM_crits);
|
||||
criticals::create_move();
|
||||
}
|
||||
{
|
||||
PROF_SECTION(CM_spam);
|
||||
hacks::shared::spam::createMove();
|
||||
}
|
||||
{
|
||||
PROF_SECTION(CM_AC);
|
||||
hacks::shared::anticheat::CreateMove();
|
||||
|
@ -29,7 +29,6 @@ DEFINE_HOOKED_METHOD(Paint, void, IEngineVGui *this_, PaintMode_t mode)
|
||||
|
||||
if (mode & PaintMode_t::PAINT_UIPANELS)
|
||||
{
|
||||
hacks::tf2::killstreak::apply_killstreaks();
|
||||
hacks::shared::catbot::update();
|
||||
hitrate::Update();
|
||||
#if ENABLE_ONLINE
|
||||
|
@ -6,7 +6,6 @@
|
||||
#include <settings/Registered.hpp>
|
||||
#include <MiscTemporary.hpp>
|
||||
#include "HookedMethods.hpp"
|
||||
#include "hacks/Radar.hpp"
|
||||
#include "CatBot.hpp"
|
||||
|
||||
static settings::Bool pure_bypass{ "visual.sv-pure-bypass", "false" };
|
||||
|
@ -192,36 +192,10 @@ void DrawCheatVisuals()
|
||||
PROF_SECTION(DRAW_skinchanger);
|
||||
hacks::tf2::skinchanger::DrawText();
|
||||
}
|
||||
#ifndef FEATURE_RADAR_DISABLED
|
||||
IF_GAME(IsTF())
|
||||
{
|
||||
PROF_SECTION(DRAW_radar);
|
||||
hacks::tf::radar::Draw();
|
||||
}
|
||||
#endif
|
||||
IF_GAME(IsTF())
|
||||
{
|
||||
PROF_SECTION(DRAW_autoreflect);
|
||||
hacks::tf::autoreflect::Draw();
|
||||
}
|
||||
{
|
||||
PROF_SECTION(DRAW_walkbot);
|
||||
hacks::shared::walkbot::Draw();
|
||||
}
|
||||
IF_GAME(IsTF())
|
||||
{
|
||||
PROF_SECTION(PT_antidisguise);
|
||||
hacks::tf2::antidisguise::Draw();
|
||||
}
|
||||
IF_GAME(IsTF())
|
||||
{
|
||||
PROF_SECTION(PT_spyalert);
|
||||
hacks::tf::spyalert::Draw();
|
||||
}
|
||||
IF_GAME(IsTF2())
|
||||
{
|
||||
criticals::draw();
|
||||
}
|
||||
#ifndef FEATURE_FIDGET_SPINNER_ENABLED
|
||||
DrawSpinner();
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user