Fix alot of shit and add cat_nullcore_mode for emoji esp and fidget spinner corsshair
This commit is contained in:
parent
00306b6be3
commit
abee301f7d
7
include/classinfo/dummy.gen.hpp
Executable file → Normal file
7
include/classinfo/dummy.gen.hpp
Executable file → Normal file
@ -6,9 +6,11 @@
|
||||
#ifndef DUMMY_AUTOGEN_HPP
|
||||
#define DUMMY_AUTOGEN_HPP
|
||||
|
||||
namespace client_classes {
|
||||
namespace client_classes
|
||||
{
|
||||
|
||||
class dummy {
|
||||
class dummy
|
||||
{
|
||||
public:
|
||||
int CTETFParticleEffect{ 0 };
|
||||
int CTETFExplosion{ 0 };
|
||||
@ -531,7 +533,6 @@ namespace client_classes {
|
||||
int CTFProjectile_BallOfFire{ 0 };
|
||||
int CTFPointManager{ 0 };
|
||||
int CTFFlameManager{ 0 };
|
||||
|
||||
};
|
||||
|
||||
extern dummy dummy_list;
|
||||
|
7
include/classinfo/dynamic.gen.hpp
Executable file → Normal file
7
include/classinfo/dynamic.gen.hpp
Executable file → Normal file
@ -6,9 +6,11 @@
|
||||
#ifndef DYNAMIC_AUTOGEN_HPP
|
||||
#define DYNAMIC_AUTOGEN_HPP
|
||||
|
||||
namespace client_classes {
|
||||
namespace client_classes
|
||||
{
|
||||
|
||||
class dynamic {
|
||||
class dynamic
|
||||
{
|
||||
public:
|
||||
dynamic();
|
||||
void Populate();
|
||||
@ -533,7 +535,6 @@ namespace client_classes {
|
||||
int CTFProjectile_BallOfFire{ 0 };
|
||||
int CTFPointManager{ 0 };
|
||||
int CTFFlameManager{ 0 };
|
||||
|
||||
};
|
||||
|
||||
extern dynamic dynamic_list;
|
||||
|
@ -15,6 +15,6 @@ class CatVar;
|
||||
extern std::array<textures::sprite, 4> spinner_states;
|
||||
|
||||
extern CatVar enable_spinner;
|
||||
|
||||
extern CatVar v9mode;
|
||||
void InitSpinner();
|
||||
void DrawSpinner();
|
||||
|
@ -16,10 +16,10 @@ public:
|
||||
static CTFPartyClient *GTFPartyClient();
|
||||
|
||||
static int SendPartyChat(CTFPartyClient *client, const char *message);
|
||||
static int LoadSavedCasualCriteria(CTFPartyClient *client);
|
||||
int LoadSavedCasualCriteria();
|
||||
static ITFGroupMatchCriteria *MutLocalGroupCriteria(CTFPartyClient *client);
|
||||
static bool BCanQueueForStandby(CTFPartyClient *this_);
|
||||
static void RequestQueueForMatch(CTFPartyClient *client);
|
||||
char RequestQueueForMatch(int type);
|
||||
static bool BInQueue(CTFPartyClient *this_);
|
||||
};
|
||||
}
|
||||
|
@ -17,7 +17,15 @@ class ITFGroupMatchCriteria
|
||||
public:
|
||||
enum group
|
||||
{
|
||||
CASUAL = 7
|
||||
MvmPractice = 0,
|
||||
MvmMannup = 1,
|
||||
LadderMatch6v6 = 2,
|
||||
LadderMatch9v9 = 3,
|
||||
LadderMatch12v12 = 4,
|
||||
CasualMatch6v6 = 5,
|
||||
CasualMatch9v9 = 6,
|
||||
CasualMatch12v12 = 7,
|
||||
CompetitiveEventMatch12v12 = 8
|
||||
};
|
||||
|
||||
public:
|
||||
|
BIN
res/atlas.png
BIN
res/atlas.png
Binary file not shown.
Before Width: | Height: | Size: 310 KiB After Width: | Height: | Size: 367 KiB |
95
src/classinfo/dynamic.gen.cpp
Executable file → Normal file
95
src/classinfo/dynamic.gen.cpp
Executable file → Normal file
@ -3,11 +3,13 @@
|
||||
#include "classinfo/dynamic.gen.hpp"
|
||||
#include "common.hpp"
|
||||
|
||||
namespace client_classes {
|
||||
namespace client_classes
|
||||
{
|
||||
|
||||
std::unordered_map<std::string, int *> classid_mapping{};
|
||||
|
||||
dynamic::dynamic() {
|
||||
dynamic::dynamic()
|
||||
{
|
||||
classid_mapping["CTETFParticleEffect"] = &CTETFParticleEffect;
|
||||
classid_mapping["CTETFExplosion"] = &CTETFExplosion;
|
||||
classid_mapping["CTETFBlood"] = &CTETFBlood;
|
||||
@ -27,7 +29,8 @@ dynamic::dynamic() {
|
||||
classid_mapping["CTFProjectile_Rocket"] = &CTFProjectile_Rocket;
|
||||
classid_mapping["CTFProjectile_Flare"] = &CTFProjectile_Flare;
|
||||
classid_mapping["CTFProjectile_EnergyBall"] = &CTFProjectile_EnergyBall;
|
||||
classid_mapping["CTFProjectile_GrapplingHook"] = &CTFProjectile_GrapplingHook;
|
||||
classid_mapping["CTFProjectile_GrapplingHook"] =
|
||||
&CTFProjectile_GrapplingHook;
|
||||
classid_mapping["CTFProjectile_HealingBolt"] = &CTFProjectile_HealingBolt;
|
||||
classid_mapping["CTFProjectile_Arrow"] = &CTFProjectile_Arrow;
|
||||
classid_mapping["CTFPlayerResource"] = &CTFPlayerResource;
|
||||
@ -109,7 +112,8 @@ dynamic::dynamic() {
|
||||
classid_mapping["CTEBaseBeam"] = &CTEBaseBeam;
|
||||
classid_mapping["CTEArmorRicochet"] = &CTEArmorRicochet;
|
||||
classid_mapping["CTEMetalSparks"] = &CTEMetalSparks;
|
||||
classid_mapping["CTest_ProxyToggle_Networkable"] = &CTest_ProxyToggle_Networkable;
|
||||
classid_mapping["CTest_ProxyToggle_Networkable"] =
|
||||
&CTest_ProxyToggle_Networkable;
|
||||
classid_mapping["CTestTraceline"] = &CTestTraceline;
|
||||
classid_mapping["CTesla"] = &CTesla;
|
||||
classid_mapping["CTeamTrainWatcher"] = &CTeamTrainWatcher;
|
||||
@ -117,7 +121,8 @@ dynamic::dynamic() {
|
||||
classid_mapping["CTeam"] = &CTeam;
|
||||
classid_mapping["CSun"] = &CSun;
|
||||
classid_mapping["CSteamJet"] = &CSteamJet;
|
||||
classid_mapping["CParticlePerformanceMonitor"] = &CParticlePerformanceMonitor;
|
||||
classid_mapping["CParticlePerformanceMonitor"] =
|
||||
&CParticlePerformanceMonitor;
|
||||
classid_mapping["CSpotlightEnd"] = &CSpotlightEnd;
|
||||
classid_mapping["DustTrail"] = &DustTrail;
|
||||
classid_mapping["CFireTrail"] = &CFireTrail;
|
||||
@ -200,9 +205,12 @@ dynamic::dynamic() {
|
||||
classid_mapping["CTFWearableRobotArm"] = &CTFWearableRobotArm;
|
||||
classid_mapping["CTFRobotArm"] = &CTFRobotArm;
|
||||
classid_mapping["CTFWrench"] = &CTFWrench;
|
||||
classid_mapping["CTFProjectile_ThrowableBreadMonster"] = &CTFProjectile_ThrowableBreadMonster;
|
||||
classid_mapping["CTFProjectile_ThrowableBrick"] = &CTFProjectile_ThrowableBrick;
|
||||
classid_mapping["CTFProjectile_ThrowableRepel"] = &CTFProjectile_ThrowableRepel;
|
||||
classid_mapping["CTFProjectile_ThrowableBreadMonster"] =
|
||||
&CTFProjectile_ThrowableBreadMonster;
|
||||
classid_mapping["CTFProjectile_ThrowableBrick"] =
|
||||
&CTFProjectile_ThrowableBrick;
|
||||
classid_mapping["CTFProjectile_ThrowableRepel"] =
|
||||
&CTFProjectile_ThrowableRepel;
|
||||
classid_mapping["CTFProjectile_Throwable"] = &CTFProjectile_Throwable;
|
||||
classid_mapping["CTFThrowable"] = &CTFThrowable;
|
||||
classid_mapping["CTFSyringeGun"] = &CTFSyringeGun;
|
||||
@ -226,8 +234,10 @@ dynamic::dynamic() {
|
||||
classid_mapping["CTFShotgun"] = &CTFShotgun;
|
||||
classid_mapping["CTFCrossbow"] = &CTFCrossbow;
|
||||
classid_mapping["CTFRocketLauncher_Mortar"] = &CTFRocketLauncher_Mortar;
|
||||
classid_mapping["CTFRocketLauncher_AirStrike"] = &CTFRocketLauncher_AirStrike;
|
||||
classid_mapping["CTFRocketLauncher_DirectHit"] = &CTFRocketLauncher_DirectHit;
|
||||
classid_mapping["CTFRocketLauncher_AirStrike"] =
|
||||
&CTFRocketLauncher_AirStrike;
|
||||
classid_mapping["CTFRocketLauncher_DirectHit"] =
|
||||
&CTFRocketLauncher_DirectHit;
|
||||
classid_mapping["CTFRocketLauncher"] = &CTFRocketLauncher;
|
||||
classid_mapping["CTFRevolver"] = &CTFRevolver;
|
||||
classid_mapping["CTFDRGPomson"] = &CTFDRGPomson;
|
||||
@ -238,10 +248,14 @@ dynamic::dynamic() {
|
||||
classid_mapping["CTFPistol"] = &CTFPistol;
|
||||
classid_mapping["CTFPipebombLauncher"] = &CTFPipebombLauncher;
|
||||
classid_mapping["CTFWeaponPDA_Spy"] = &CTFWeaponPDA_Spy;
|
||||
classid_mapping["CTFWeaponPDA_Engineer_Destroy"] = &CTFWeaponPDA_Engineer_Destroy;
|
||||
classid_mapping["CTFWeaponPDA_Engineer_Build"] = &CTFWeaponPDA_Engineer_Build;
|
||||
classid_mapping["CTFWeaponPDAExpansion_Teleporter"] = &CTFWeaponPDAExpansion_Teleporter;
|
||||
classid_mapping["CTFWeaponPDAExpansion_Dispenser"] = &CTFWeaponPDAExpansion_Dispenser;
|
||||
classid_mapping["CTFWeaponPDA_Engineer_Destroy"] =
|
||||
&CTFWeaponPDA_Engineer_Destroy;
|
||||
classid_mapping["CTFWeaponPDA_Engineer_Build"] =
|
||||
&CTFWeaponPDA_Engineer_Build;
|
||||
classid_mapping["CTFWeaponPDAExpansion_Teleporter"] =
|
||||
&CTFWeaponPDAExpansion_Teleporter;
|
||||
classid_mapping["CTFWeaponPDAExpansion_Dispenser"] =
|
||||
&CTFWeaponPDAExpansion_Dispenser;
|
||||
classid_mapping["CTFWeaponPDA"] = &CTFWeaponPDA;
|
||||
classid_mapping["CPasstimeGun"] = &CPasstimeGun;
|
||||
classid_mapping["CTFParticleCannon"] = &CTFParticleCannon;
|
||||
@ -264,7 +278,8 @@ dynamic::dynamic() {
|
||||
classid_mapping["CTFJarMilk"] = &CTFJarMilk;
|
||||
classid_mapping["CTFJar"] = &CTFJar;
|
||||
classid_mapping["CTFWeaponInvis"] = &CTFWeaponInvis;
|
||||
classid_mapping["CTFGrenadePipebombProjectile"] = &CTFGrenadePipebombProjectile;
|
||||
classid_mapping["CTFGrenadePipebombProjectile"] =
|
||||
&CTFGrenadePipebombProjectile;
|
||||
classid_mapping["CTFCannon"] = &CTFCannon;
|
||||
classid_mapping["CTFGrenadeLauncher"] = &CTFGrenadeLauncher;
|
||||
classid_mapping["CTFGrapplingHook"] = &CTFGrapplingHook;
|
||||
@ -287,7 +302,8 @@ dynamic::dynamic() {
|
||||
classid_mapping["CTFBat_Fish"] = &CTFBat_Fish;
|
||||
classid_mapping["CTFBat"] = &CTFBat;
|
||||
classid_mapping["CTFBaseRocket"] = &CTFBaseRocket;
|
||||
classid_mapping["CTFWeaponBaseMerasmusGrenade"] = &CTFWeaponBaseMerasmusGrenade;
|
||||
classid_mapping["CTFWeaponBaseMerasmusGrenade"] =
|
||||
&CTFWeaponBaseMerasmusGrenade;
|
||||
classid_mapping["CTFWeaponBaseMelee"] = &CTFWeaponBaseMelee;
|
||||
classid_mapping["CTFWeaponBaseGun"] = &CTFWeaponBaseGun;
|
||||
classid_mapping["CTFWeaponBaseGrenadeProj"] = &CTFWeaponBaseGrenadeProj;
|
||||
@ -302,12 +318,16 @@ dynamic::dynamic() {
|
||||
classid_mapping["CBaseObjectUpgrade"] = &CBaseObjectUpgrade;
|
||||
classid_mapping["CMannVsMachineStats"] = &CMannVsMachineStats;
|
||||
classid_mapping["CTFRobotDestructionLogic"] = &CTFRobotDestructionLogic;
|
||||
classid_mapping["CTFRobotDestruction_RobotGroup"] = &CTFRobotDestruction_RobotGroup;
|
||||
classid_mapping["CTFRobotDestruction_RobotSpawn"] = &CTFRobotDestruction_RobotSpawn;
|
||||
classid_mapping["CTFRobotDestruction_RobotGroup"] =
|
||||
&CTFRobotDestruction_RobotGroup;
|
||||
classid_mapping["CTFRobotDestruction_RobotSpawn"] =
|
||||
&CTFRobotDestruction_RobotSpawn;
|
||||
classid_mapping["CTFPlayerDestructionLogic"] = &CTFPlayerDestructionLogic;
|
||||
classid_mapping["CPlayerDestructionDispenser"] = &CPlayerDestructionDispenser;
|
||||
classid_mapping["CPlayerDestructionDispenser"] =
|
||||
&CPlayerDestructionDispenser;
|
||||
classid_mapping["CTFMinigameLogic"] = &CTFMinigameLogic;
|
||||
classid_mapping["CTFHalloweenMinigame_FallingPlatforms"] = &CTFHalloweenMinigame_FallingPlatforms;
|
||||
classid_mapping["CTFHalloweenMinigame_FallingPlatforms"] =
|
||||
&CTFHalloweenMinigame_FallingPlatforms;
|
||||
classid_mapping["CTFHalloweenMinigame"] = &CTFHalloweenMinigame;
|
||||
classid_mapping["CTFMiniGame"] = &CTFMiniGame;
|
||||
classid_mapping["CTFWearableVM"] = &CTFWearableVM;
|
||||
@ -319,19 +339,27 @@ dynamic::dynamic() {
|
||||
classid_mapping["CBonusRoundLogic"] = &CBonusRoundLogic;
|
||||
classid_mapping["CTFGameRulesProxy"] = &CTFGameRulesProxy;
|
||||
classid_mapping["CTFDroppedWeapon"] = &CTFDroppedWeapon;
|
||||
classid_mapping["CTFProjectile_SpellKartBats"] = &CTFProjectile_SpellKartBats;
|
||||
classid_mapping["CTFProjectile_SpellKartBats"] =
|
||||
&CTFProjectile_SpellKartBats;
|
||||
classid_mapping["CTFProjectile_SpellKartOrb"] = &CTFProjectile_SpellKartOrb;
|
||||
classid_mapping["CTFHellZap"] = &CTFHellZap;
|
||||
classid_mapping["CTFProjectile_SpellLightningOrb"] = &CTFProjectile_SpellLightningOrb;
|
||||
classid_mapping["CTFProjectile_SpellTransposeTeleport"] = &CTFProjectile_SpellTransposeTeleport;
|
||||
classid_mapping["CTFProjectile_SpellMeteorShower"] = &CTFProjectile_SpellMeteorShower;
|
||||
classid_mapping["CTFProjectile_SpellSpawnBoss"] = &CTFProjectile_SpellSpawnBoss;
|
||||
classid_mapping["CTFProjectile_SpellLightningOrb"] =
|
||||
&CTFProjectile_SpellLightningOrb;
|
||||
classid_mapping["CTFProjectile_SpellTransposeTeleport"] =
|
||||
&CTFProjectile_SpellTransposeTeleport;
|
||||
classid_mapping["CTFProjectile_SpellMeteorShower"] =
|
||||
&CTFProjectile_SpellMeteorShower;
|
||||
classid_mapping["CTFProjectile_SpellSpawnBoss"] =
|
||||
&CTFProjectile_SpellSpawnBoss;
|
||||
classid_mapping["CTFProjectile_SpellMirv"] = &CTFProjectile_SpellMirv;
|
||||
classid_mapping["CTFProjectile_SpellPumpkin"] = &CTFProjectile_SpellPumpkin;
|
||||
classid_mapping["CTFProjectile_SpellSpawnHorde"] = &CTFProjectile_SpellSpawnHorde;
|
||||
classid_mapping["CTFProjectile_SpellSpawnZombie"] = &CTFProjectile_SpellSpawnZombie;
|
||||
classid_mapping["CTFProjectile_SpellSpawnHorde"] =
|
||||
&CTFProjectile_SpellSpawnHorde;
|
||||
classid_mapping["CTFProjectile_SpellSpawnZombie"] =
|
||||
&CTFProjectile_SpellSpawnZombie;
|
||||
classid_mapping["CTFProjectile_SpellBats"] = &CTFProjectile_SpellBats;
|
||||
classid_mapping["CTFProjectile_SpellFireball"] = &CTFProjectile_SpellFireball;
|
||||
classid_mapping["CTFProjectile_SpellFireball"] =
|
||||
&CTFProjectile_SpellFireball;
|
||||
classid_mapping["CTFSpellBook"] = &CTFSpellBook;
|
||||
classid_mapping["CHightower_TeleportVortex"] = &CHightower_TeleportVortex;
|
||||
classid_mapping["CTeleportVortex"] = &CTeleportVortex;
|
||||
@ -343,7 +371,8 @@ dynamic::dynamic() {
|
||||
classid_mapping["CBonusPack"] = &CBonusPack;
|
||||
classid_mapping["CHandleTest"] = &CHandleTest;
|
||||
classid_mapping["CTeamRoundTimer"] = &CTeamRoundTimer;
|
||||
classid_mapping["CTeamplayRoundBasedRulesProxy"] = &CTeamplayRoundBasedRulesProxy;
|
||||
classid_mapping["CTeamplayRoundBasedRulesProxy"] =
|
||||
&CTeamplayRoundBasedRulesProxy;
|
||||
classid_mapping["CSpriteTrail"] = &CSpriteTrail;
|
||||
classid_mapping["CSpriteOriented"] = &CSpriteOriented;
|
||||
classid_mapping["CSprite"] = &CSprite;
|
||||
@ -529,12 +558,13 @@ dynamic::dynamic() {
|
||||
classid_mapping["CTFProjectile_BallOfFire"] = &CTFProjectile_BallOfFire;
|
||||
classid_mapping["CTFPointManager"] = &CTFPointManager;
|
||||
classid_mapping["CTFFlameManager"] = &CTFFlameManager;
|
||||
|
||||
}
|
||||
|
||||
void dynamic::Populate() {
|
||||
void dynamic::Populate()
|
||||
{
|
||||
ClientClass *cc = g_IBaseClient->GetAllClasses();
|
||||
while (cc) {
|
||||
while (cc)
|
||||
{
|
||||
std::string name(cc->GetName());
|
||||
if (classid_mapping.find(name) != classid_mapping.end())
|
||||
*classid_mapping[name] = cc->m_ClassID;
|
||||
@ -543,5 +573,4 @@ void dynamic::Populate() {
|
||||
}
|
||||
|
||||
dynamic dynamic_list;
|
||||
|
||||
}
|
8
src/fidgetspinner.cpp
Executable file → Normal file
8
src/fidgetspinner.cpp
Executable file → Normal file
@ -14,6 +14,7 @@
|
||||
|
||||
CatVar enable_spinner(CV_SWITCH, "fidgetspinner", "0", "Fidget Spinner",
|
||||
"Part of Cathook Autism Awareness program");
|
||||
CatVar v9mode(CV_SWITCH, "nullcore_mode", "0", "Nullcore mode", "Part of Cathook Autism Awareness program");
|
||||
|
||||
float spinning_speed = 0.0f;
|
||||
float angle = 0;
|
||||
@ -90,11 +91,12 @@ void DrawSpinner()
|
||||
|
||||
const glez_rgba_t color = glez_rgba(255, 255, 255, 255);
|
||||
|
||||
|
||||
static glez_texture_t tex = glez_texture_load_png_rgba("/opt/cathook/data/res/atlas.png");
|
||||
static glez_texture_t tex =
|
||||
glez_texture_load_png_rgba("/opt/cathook/data/res/atlas.png");
|
||||
while (!tex)
|
||||
tex = glez_texture_load_png_rgba("/opt/cathook/data/res/atlas.png");
|
||||
glez_rect_textured(draw::width / 2, draw::height / 2, size, size, color, tex, 0 + 64 * state, 3 * 64, 64, 64, angle);
|
||||
glez_rect_textured(draw::width / 2, draw::height / 2, size, size, color,
|
||||
tex, 0 + 64 * state, (3 + (v9mode ? 1 : 0)) * 64, 64, 64, angle);
|
||||
if (angle > PI * 4)
|
||||
angle -= PI * 4;
|
||||
}
|
||||
|
4
src/hacks/Aimbot.cpp
Executable file → Normal file
4
src/hacks/Aimbot.cpp
Executable file → Normal file
@ -790,7 +790,9 @@ const Vector &PredictEntity(CachedEntity *entity)
|
||||
if ((entity->m_Type == ENTITY_PLAYER))
|
||||
{
|
||||
// If using projectiles, predict a vector
|
||||
if (projectile_mode && (g_pLocalPlayer->weapon_mode == weapon_projectile || g_pLocalPlayer->weapon_mode == weapon_throwable) )
|
||||
if (projectile_mode &&
|
||||
(g_pLocalPlayer->weapon_mode == weapon_projectile ||
|
||||
g_pLocalPlayer->weapon_mode == weapon_throwable))
|
||||
{
|
||||
// Use prediction engine if user settings allow
|
||||
if (engine_projpred)
|
||||
|
3
src/hacks/AntiAim.cpp
Executable file → Normal file
3
src/hacks/AntiAim.cpp
Executable file → Normal file
@ -463,7 +463,8 @@ void ProcessUserCmd(CUserCmd *cmd)
|
||||
angstate = !angstate;
|
||||
if (!LOCAL_E->m_bAlivePlayer)
|
||||
angstate = true;
|
||||
if (lagexploit::ExploitActive() || g_pUserCmd->buttons & IN_ATTACK || g_pUserCmd->buttons & IN_ATTACK2)
|
||||
if (lagexploit::ExploitActive() || g_pUserCmd->buttons & IN_ATTACK ||
|
||||
g_pUserCmd->buttons & IN_ATTACK2)
|
||||
angstate = true;
|
||||
*bSendPackets = angstate;
|
||||
float &p = cmd->viewangles.x;
|
||||
|
@ -52,11 +52,10 @@ void UpdateSearch()
|
||||
if (g_IEngine->IsInGame())
|
||||
return;
|
||||
|
||||
if (autoqueue_timer.test_and_set(5000))
|
||||
if (autoqueue_timer.test_and_set(10000))
|
||||
{
|
||||
re::CTFGCClientSystem *gc = re::CTFGCClientSystem::GTFGCClientSystem();
|
||||
|
||||
if (gc && !gc->BConnectedToMatchServer(false) && !gc->BHaveLiveMatch())
|
||||
if (gc && !gc->BConnectedToMatchServer(false) && CE_BAD(LOCAL_E))
|
||||
{
|
||||
logging::Info("Starting queue");
|
||||
tfmm::queue_start();
|
||||
|
2
src/hacks/AutoSticky.cpp
Executable file → Normal file
2
src/hacks/AutoSticky.cpp
Executable file → Normal file
@ -114,7 +114,6 @@ void CreateMove()
|
||||
bombs.clear();
|
||||
targets.clear();
|
||||
|
||||
|
||||
// Cycle through the ents and search for valid ents
|
||||
for (int i = 0; i < HIGHEST_ENTITY; i++)
|
||||
{
|
||||
@ -175,7 +174,6 @@ void CreateMove()
|
||||
// Use silent
|
||||
g_pLocalPlayer->bUseSilentAngles = true;
|
||||
|
||||
|
||||
// Detonate
|
||||
g_pUserCmd->buttons |= IN_ATTACK2;
|
||||
|
||||
|
@ -392,6 +392,8 @@ void _FASTCALL emoji(CachedEntity *ent)
|
||||
{
|
||||
float size = emoji_esp_scaling ? fabs(hbm.y - hbx.y)
|
||||
: float(emoji_esp_size);
|
||||
if (v9mode)
|
||||
size *= 1.4;
|
||||
if (!size || !float(emoji_min_size))
|
||||
return;
|
||||
if (emoji_esp_scaling && (size < float(emoji_min_size)))
|
||||
@ -399,21 +401,19 @@ void _FASTCALL emoji(CachedEntity *ent)
|
||||
size = float(emoji_min_size);
|
||||
}
|
||||
glez_rgba_t white = glez_rgba(255, 255, 255, 255);
|
||||
if (!textur)
|
||||
while (!textur)
|
||||
textur = glez_texture_load_png_rgba(
|
||||
"/opt/cathook/data/res/atlas.png");
|
||||
player_info_s info;
|
||||
unsigned int steamID;
|
||||
unsigned int steamidarray[32]{};
|
||||
bool hascall = false;
|
||||
steamidarray[0] = 263966176;
|
||||
steamidarray[1] = 479487126;
|
||||
steamidarray[2] = 840899897;
|
||||
steamidarray[0] = 479487126;
|
||||
steamidarray[1] = 263966176;
|
||||
steamidarray[2] = 840255344;
|
||||
steamidarray[3] = 147831332;
|
||||
if (g_IEngine->GetPlayerInfo(ent->m_IDX, &info))
|
||||
{
|
||||
steamID = info.friendsID;
|
||||
}
|
||||
if (!idspecific)
|
||||
idspecific = glez_texture_load_png_rgba(
|
||||
"/opt/cathook/data/res/idspec.png");
|
||||
@ -423,59 +423,27 @@ void _FASTCALL emoji(CachedEntity *ent)
|
||||
glez_rect_textured(
|
||||
head_scr.x - size / 2, head_scr.y - size / 2, size,
|
||||
size, white, idspecific, 2 * 64, 1 * 64, 64, 64, 0);
|
||||
for (auto i : steamidarray)
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
if (steamID == i)
|
||||
{
|
||||
if (!idspecific)
|
||||
if (steamID == steamidarray[i])
|
||||
{
|
||||
while (!idspecific)
|
||||
idspecific = glez_texture_load_png_rgba(
|
||||
"/opt/cathook/data/res/idspec.png");
|
||||
}
|
||||
if (idspecific)
|
||||
{
|
||||
if (i == steamidarray[0])
|
||||
glez_rect_textured(head_scr.x - size / 2,
|
||||
head_scr.y - size / 2,
|
||||
size, size, white,
|
||||
idspecific, 1 * 64,
|
||||
idspecific, i * 64,
|
||||
1 * 64, 64, 64, 0);
|
||||
else if (i == steamidarray[1])
|
||||
glez_rect_textured(head_scr.x - size / 2,
|
||||
head_scr.y - size / 2,
|
||||
size, size, white,
|
||||
idspecific, 0, 1 * 64,
|
||||
64, 64, 0);
|
||||
|
||||
else if (i == steamidarray[2])
|
||||
glez_rect_textured(head_scr.x - size / 2,
|
||||
head_scr.y - size / 2,
|
||||
size, size, white,
|
||||
idspecific, 2 * 64,
|
||||
1 * 64, 64, 64, 0);
|
||||
else if (i == steamidarray[3])
|
||||
glez_rect_textured(head_scr.x - size / 2,
|
||||
head_scr.y - size / 2,
|
||||
size, size, white,
|
||||
idspecific, 3 * 64,
|
||||
1 * 64, 64, 64, 0);
|
||||
}
|
||||
hascall = true;
|
||||
}
|
||||
}
|
||||
if (textur && !hascall)
|
||||
{
|
||||
if (emoji_esp == 1)
|
||||
glez_rect_textured(head_scr.x - size / 2,
|
||||
draw_api::draw_rect_textured(head_scr.x - size / 2,
|
||||
head_scr.y - size / 2, size,
|
||||
size, white, textur, 4 * 64,
|
||||
size, colors::white, {textur}, (3 + (v9mode ? 3 : (int)emoji_esp)) * 64,
|
||||
3 * 64, 64, 64, 0);
|
||||
else if (emoji_esp == 2)
|
||||
glez_rect_textured(head_scr.x - size / 2,
|
||||
head_scr.y - size / 2, size,
|
||||
size, white, textur, 5 * 64,
|
||||
3 * 64, 64, 64, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
25
src/hacks/LagExploit.cpp
Executable file → Normal file
25
src/hacks/LagExploit.cpp
Executable file → Normal file
@ -34,6 +34,12 @@ CatVar cart(CV_SWITCH, "se_cart", "0", "Farm cart points",
|
||||
CatVar instant_weapon_switch(CV_SWITCH, "se_switch", "0",
|
||||
"Instant weapon switch", "");
|
||||
CatVar key(CV_KEY, "se_key", "0", "Sequence exploit key");
|
||||
CatVar weaponswitch(CV_KEY, "se_switch_key", "0",
|
||||
"Switch spam key (for gru) key");
|
||||
CatVar delay1(CV_INT, "se_switch_delay1", "0",
|
||||
"Delay before switching to melee");
|
||||
CatVar delay2(CV_INT, "se_switch_delay2", "0",
|
||||
"Delay before switching to Primary");
|
||||
CatVar master_switch(CV_SWITCH, "se_master", "1", "Enable sequence exploit",
|
||||
"Master switch for the sequence exploit\nDisabling this "
|
||||
"disables everything else that uses it");
|
||||
@ -243,6 +249,22 @@ void CreateMove()
|
||||
}
|
||||
if (!master_switch)
|
||||
return;
|
||||
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));
|
||||
@ -411,7 +433,8 @@ void CreateMove()
|
||||
servertime =
|
||||
(float) (CE_INT(g_pLocalPlayer->entity, netvar.nTickBase)) *
|
||||
g_GlobalVars->interval_per_tick;
|
||||
if (!nextattack || !i || g_pLocalPlayer->weapon()->m_iClassID != lastwep)
|
||||
if (!nextattack || !i ||
|
||||
g_pLocalPlayer->weapon()->m_iClassID != lastwep)
|
||||
nextattack =
|
||||
CE_FLOAT(g_pLocalPlayer->weapon(), netvar.flNextPrimaryAttack);
|
||||
if (servertime - nextattack > 30.0f)
|
||||
|
3
src/helpers.cpp
Executable file → Normal file
3
src/helpers.cpp
Executable file → Normal file
@ -682,7 +682,8 @@ bool GetProjectileData(CachedEntity *weapon, float &speed, float &gravity)
|
||||
rspeed = re::C_TFWeaponBaseGun::GetProjectileSpeed(
|
||||
RAW_ENT(g_pLocalPlayer->weapon()));
|
||||
// TODO Wrong grenade launcher gravity
|
||||
rgrav = re::C_TFWeaponBaseGun::GetProjectileGravity(RAW_ENT(g_pLocalPlayer->weapon()));
|
||||
rgrav = re::C_TFWeaponBaseGun::GetProjectileGravity(
|
||||
RAW_ENT(g_pLocalPlayer->weapon()));
|
||||
}
|
||||
else IF_GAME(IsTF2C())
|
||||
{
|
||||
|
3
src/menu/ncc/Menu.cpp
Executable file → Normal file
3
src/menu/ncc/Menu.cpp
Executable file → Normal file
@ -79,7 +79,8 @@ void RefreshFonts()
|
||||
font_title = g_ISurface->CreateFont();
|
||||
font_item = g_ISurface->CreateFont();
|
||||
g_ISurface->SetFontGlyphSet(
|
||||
font_title, fonts::fonts
|
||||
font_title,
|
||||
fonts::fonts
|
||||
.at(_clamp(0, (int) (fonts::fonts.size() - 1),
|
||||
(int) font_title_family))
|
||||
.c_str(),
|
||||
|
@ -14,8 +14,7 @@ CTFGCClientSystem *CTFGCClientSystem::GTFGCClientSystem()
|
||||
{
|
||||
typedef CTFGCClientSystem *(*GTFGCClientSystem_t)();
|
||||
static uintptr_t addr1 = gSignatures.GetClientSignature(
|
||||
"E8 ? ? ? ? 84 C0 0F 85 7B 02 00 00 E8 ? ? ? ? BE 01 00 00 00 89 04 24 "
|
||||
"E8 ? ? ? ? 85 C0 0F 84 E5 02 00 00");
|
||||
"E8 ? ? ? ? 84 C0 0F 85 ? ? ? ? E8 ? ? ? ? 89 04 24 E8 ? ? ? ? 85 C0");
|
||||
static GTFGCClientSystem_t GTFGCClientSystem_fn =
|
||||
GTFGCClientSystem_t(e8call((void *) (addr1 + 14)));
|
||||
|
||||
@ -40,8 +39,7 @@ bool CTFGCClientSystem::BConnectedToMatchServer(bool flag)
|
||||
{
|
||||
typedef bool (*BConnectedToMatchServer_t)(CTFGCClientSystem *, bool);
|
||||
static uintptr_t addr = gSignatures.GetClientSignature(
|
||||
"55 89 E5 53 80 7D 0C 00 8B 55 08 75 1B 8B 82 F8 04 00 00 83 E8 01 83 "
|
||||
"F8 01 0F 96 C0 8D 74 26 00 5B 5D C3");
|
||||
"55 89 E5 53 80 7D ? ? 8B 55 ? 75 ?");
|
||||
static BConnectedToMatchServer_t BConnectedToMatchServer_fn =
|
||||
BConnectedToMatchServer_t(addr);
|
||||
|
||||
@ -50,12 +48,13 @@ bool CTFGCClientSystem::BConnectedToMatchServer(bool flag)
|
||||
|
||||
bool CTFGCClientSystem::BHaveLiveMatch()
|
||||
{
|
||||
typedef bool (*BHaveLiveMatch_t)(CTFGCClientSystem *);
|
||||
static uintptr_t addr = gSignatures.GetClientSignature(
|
||||
"55 31 C0 89 E5 53 8B 4D 08 0F B6 91 0F 05 00 00 89 D3 81 E3 F0 00 00 "
|
||||
"00 74 36 80 FA AF");
|
||||
typedef int (*BHaveLiveMatch_t)(CTFGCClientSystem *);
|
||||
static uintptr_t addr = gSignatures.GetClientSignature("55 31 C0 89 E5 53 8B 4D ? 0F B6 91 ? ? ? ?");
|
||||
static BHaveLiveMatch_t BHaveLiveMatch_fn = BHaveLiveMatch_t(addr);
|
||||
|
||||
if (BHaveLiveMatch_fn == nullptr)
|
||||
{
|
||||
logging::Info("calling NULL!");
|
||||
}
|
||||
return BHaveLiveMatch_fn(this);
|
||||
}
|
||||
|
||||
|
40
src/reclasses/CTFPartyClient.cpp
Executable file → Normal file
40
src/reclasses/CTFPartyClient.cpp
Executable file → Normal file
@ -11,12 +11,10 @@
|
||||
re::CTFPartyClient *re::CTFPartyClient::GTFPartyClient()
|
||||
{
|
||||
typedef re::CTFPartyClient *(*GTFPartyClient_t)(void);
|
||||
static uintptr_t addr = gSignatures.GetClientSignature(
|
||||
"83 04 02 00 00 00 00 00 00 ? 83 08 02 00 00 "
|
||||
"01 E8 ? ? ? ? 89 04 24 E8 ? ? ? ?") +
|
||||
17;
|
||||
static GTFPartyClient_t GTFPartyClient_fn =
|
||||
GTFPartyClient_t(e8call((void *) addr));
|
||||
uintptr_t addr =
|
||||
gSignatures.GetClientSignature("55 A1 ? ? ? ? 89 E5 5D C3 8D B6 00 00 00 00 A1 ? ? ? ? 85 C0");
|
||||
GTFPartyClient_t GTFPartyClient_fn =
|
||||
GTFPartyClient_t(addr);
|
||||
|
||||
return GTFPartyClient_fn();
|
||||
}
|
||||
@ -50,35 +48,31 @@ re::CTFPartyClient::MutLocalGroupCriteria(re::CTFPartyClient *client)
|
||||
typedef re::ITFGroupMatchCriteria *(*MutLocalGroupCriteria_t)(
|
||||
re::CTFPartyClient *);
|
||||
static uintptr_t addr = gSignatures.GetClientSignature(
|
||||
"55 89 E5 8B 45 08 8B 50 38 C6 80 BC 01 00 00 01 85 D2 74 06 80 78 44 "
|
||||
"00 74 07");
|
||||
"55 89 E5 8B 45 ? 8B 50 ? C6 80 ? ? ? ? ?");
|
||||
static MutLocalGroupCriteria_t MutLocalGroupCriteria_fn =
|
||||
MutLocalGroupCriteria_t(addr);
|
||||
|
||||
return MutLocalGroupCriteria_fn(client);
|
||||
}
|
||||
|
||||
int re::CTFPartyClient::LoadSavedCasualCriteria(re::CTFPartyClient *client)
|
||||
int re::CTFPartyClient::LoadSavedCasualCriteria()
|
||||
{
|
||||
typedef int (*LoadSavedCasualCriteria_t)(re::CTFPartyClient *);
|
||||
static uintptr_t addr = gSignatures.GetClientSignature(
|
||||
"83 04 02 00 00 00 00 00 00 ? 83 08 02 00 00 "
|
||||
"01 E8 ? ? ? ? 89 04 24 E8 ? ? ? ?") +
|
||||
25;
|
||||
static LoadSavedCasualCriteria_t LoadSavedCasualCriteria_fn =
|
||||
LoadSavedCasualCriteria_t(e8call((void *) addr));
|
||||
uintptr_t addr = gSignatures.GetClientSignature(
|
||||
"55 89 E5 83 EC ? 8B 45 ? 8B 50 ? C6 80 ? ? ? ? ?");
|
||||
LoadSavedCasualCriteria_t LoadSavedCasualCriteria_fn =
|
||||
LoadSavedCasualCriteria_t(addr);
|
||||
|
||||
return LoadSavedCasualCriteria_fn(client);
|
||||
return LoadSavedCasualCriteria_fn(this);
|
||||
}
|
||||
|
||||
void re::CTFPartyClient::RequestQueueForMatch(re::CTFPartyClient *client)
|
||||
char re::CTFPartyClient::RequestQueueForMatch(int type)
|
||||
{
|
||||
typedef void (*RequestQueueForMatch_t)(re::CTFPartyClient *);
|
||||
static uintptr_t addr = gSignatures.GetClientSignature(
|
||||
"55 89 E5 57 56 53 81 EC 8C 00 00 00 8B 7D 08 80 BF C1 01 00 00 00 0F "
|
||||
"85 4F 04 00 00 80 7F 45 00 0F 85 45 04 00 00");
|
||||
static RequestQueueForMatch_t RequestQueueForMatch_fn =
|
||||
typedef char (*RequestQueueForMatch_t)(re::CTFPartyClient *, int);
|
||||
uintptr_t addr = gSignatures.GetClientSignature(
|
||||
"55 89 E5 57 56 53 81 EC ? ? ? ? 8B 75 ? 89 F0");
|
||||
RequestQueueForMatch_t RequestQueueForMatch_fn =
|
||||
RequestQueueForMatch_t(addr);
|
||||
|
||||
return RequestQueueForMatch_fn(client);
|
||||
return RequestQueueForMatch_fn(this, type);
|
||||
}
|
||||
|
12
src/tfmm.cpp
12
src/tfmm.cpp
@ -26,16 +26,14 @@ CatCommand get_state("mm_state", "Get party state", []() {
|
||||
namespace tfmm
|
||||
{
|
||||
|
||||
void queue_start()
|
||||
{
|
||||
void queue_start() {
|
||||
re::CTFPartyClient *client = re::CTFPartyClient::GTFPartyClient();
|
||||
if (client)
|
||||
{
|
||||
re::ITFGroupMatchCriteria::SetMatchGroup(
|
||||
re::CTFPartyClient::MutLocalGroupCriteria(client),
|
||||
re::ITFGroupMatchCriteria::group::CASUAL);
|
||||
re::CTFPartyClient::LoadSavedCasualCriteria(client);
|
||||
re::CTFPartyClient::RequestQueueForMatch(client);
|
||||
logging::Info("test1");
|
||||
client->LoadSavedCasualCriteria();
|
||||
logging::Info("test2");
|
||||
client->RequestQueueForMatch(re::ITFGroupMatchCriteria::CasualMatch12v12);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -40,6 +40,7 @@ CatVar info_text(CV_SWITCH, "info", "1", "Show info",
|
||||
"Show cathook version in top left corner");
|
||||
CatVar info_text_min(CV_SWITCH, "info_min", "0", "Show minimal info",
|
||||
"Only show cathook title in top left corner");
|
||||
CatVar enable_logo(CV_SWITCH, "nullcore_mode_logo", "1", "Enable Nullcore watermark", "");
|
||||
|
||||
void DrawCheatVisuals()
|
||||
{
|
||||
@ -50,7 +51,6 @@ void DrawCheatVisuals()
|
||||
PROF_SECTION(DRAW_misc);
|
||||
hacks::shared::misc::DrawText();
|
||||
}
|
||||
if (info_text)
|
||||
{
|
||||
PROF_SECTION(DRAW_info);
|
||||
std::string name_s, reason_s;
|
||||
|
Reference in New Issue
Block a user