Fix alot of shit and add cat_nullcore_mode for emoji esp and fidget spinner corsshair

This commit is contained in:
BenCat07 2018-04-05 18:28:45 +02:00
parent 00306b6be3
commit abee301f7d
20 changed files with 1735 additions and 1710 deletions

7
include/classinfo/dummy.gen.hpp Executable file → Normal file
View 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
View 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;

View File

@ -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();

View File

@ -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_);
};
}

View File

@ -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:

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
View 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
View 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
View 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
View 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;

View File

@ -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
View 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;

View File

@ -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
View 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
View 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
View 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(),

View File

@ -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
View 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);
}

View File

@ -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
{

View File

@ -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;