Some wip changes + ac fix
This commit is contained in:
parent
d78495b4c2
commit
04b8bae1af
2
TODO
2
TODO
@ -28,8 +28,6 @@ MAX -> MIN priority // //
|
||||
// //
|
||||
Hunter Rifle? // //
|
||||
// //
|
||||
AutoDetonator // //
|
||||
// //
|
||||
No AutoShoot when disguised // //
|
||||
Ambassador bodyshotting // //
|
||||
No Trigger Mediguns // //
|
||||
|
@ -6,11 +6,9 @@
|
||||
#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 };
|
||||
@ -255,6 +253,7 @@ public:
|
||||
int CTFMinigun { 0 };
|
||||
int CTFMedigunShield { 0 };
|
||||
int CWeaponMedigun { 0 };
|
||||
int CTFProjectile_MechanicalArmOrb { 0 };
|
||||
int CTFMechanicalArm { 0 };
|
||||
int CTFLunchBox_Drink { 0 };
|
||||
int CTFLunchBox { 0 };
|
||||
@ -533,6 +532,7 @@ public:
|
||||
int CTFProjectile_BallOfFire { 0 };
|
||||
int CTFPointManager { 0 };
|
||||
int CTFFlameManager { 0 };
|
||||
|
||||
};
|
||||
|
||||
extern dummy dummy_list;
|
||||
|
@ -6,11 +6,9 @@
|
||||
#ifndef DYNAMIC_AUTOGEN_HPP
|
||||
#define DYNAMIC_AUTOGEN_HPP
|
||||
|
||||
namespace client_classes
|
||||
{
|
||||
namespace client_classes {
|
||||
|
||||
class dynamic
|
||||
{
|
||||
class dynamic {
|
||||
public:
|
||||
dynamic();
|
||||
void Populate();
|
||||
@ -257,6 +255,7 @@ public:
|
||||
int CTFMinigun { 0 };
|
||||
int CTFMedigunShield { 0 };
|
||||
int CWeaponMedigun { 0 };
|
||||
int CTFProjectile_MechanicalArmOrb { 0 };
|
||||
int CTFMechanicalArm { 0 };
|
||||
int CTFLunchBox_Drink { 0 };
|
||||
int CTFLunchBox { 0 };
|
||||
@ -535,6 +534,7 @@ public:
|
||||
int CTFProjectile_BallOfFire { 0 };
|
||||
int CTFPointManager { 0 };
|
||||
int CTFFlameManager { 0 };
|
||||
|
||||
};
|
||||
|
||||
extern dynamic dynamic_list;
|
||||
|
18
include/hacks/AutoDeadringer.hpp
Normal file
18
include/hacks/AutoDeadringer.hpp
Normal file
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* AutoDeadringer.hpp
|
||||
*
|
||||
* Created on: Apr 12, 2018
|
||||
* Author: bencat07
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
namespace hacks
|
||||
{
|
||||
namespace shared
|
||||
{
|
||||
namespace deadringer
|
||||
{
|
||||
void CreateMove();
|
||||
}
|
||||
}
|
||||
}
|
@ -25,6 +25,7 @@
|
||||
#include "AutoSticky.hpp"
|
||||
#include "AutoDetonator.hpp"
|
||||
#include "AntiCheat.hpp"
|
||||
#include "AutoDeadringer.hpp"
|
||||
#include "Bunnyhop.hpp"
|
||||
#include "LagExploit.hpp"
|
||||
#include "Walkbot.hpp"
|
||||
|
@ -62,6 +62,8 @@ public:
|
||||
offset_t iBuildingHealth;
|
||||
offset_t iBuildingMaxHealth;
|
||||
offset_t m_iAmmo;
|
||||
offset_t m_iPrimaryAmmoType;
|
||||
offset_t m_iSecondaryAmmoType;
|
||||
offset_t iHitboxSet;
|
||||
offset_t vVelocity;
|
||||
offset_t bGlowEnabled;
|
||||
@ -72,8 +74,10 @@ public:
|
||||
offset_t flNextAttack;
|
||||
offset_t iNextMeleeCrit;
|
||||
offset_t flNextPrimaryAttack;
|
||||
offset_t flNextSecondaryAttack;
|
||||
offset_t iNextThinkTick;
|
||||
offset_t m_iClip1;
|
||||
offset_t m_iClip2;
|
||||
// offset_t flReloadPriorNextFire;
|
||||
// offset_t flObservedCritChance;
|
||||
offset_t nTickBase;
|
||||
|
7
include/reclasses/C_TFWeaponBaseMelee.hpp
Executable file → Normal file
7
include/reclasses/C_TFWeaponBaseMelee.hpp
Executable file → Normal file
@ -22,9 +22,12 @@ public:
|
||||
self, offsets::PlatformOffset(522, offsets::undefined, 522),
|
||||
0)(self, trace);
|
||||
}
|
||||
inline static int GetSwingRange(IClientEntity* self) {
|
||||
inline static int GetSwingRange(IClientEntity *self)
|
||||
{
|
||||
typedef int (*fn_t)(IClientEntity *);
|
||||
return vfunc<fn_t>(self, offsets::PlatformOffset(520, offsets::undefined, 520), 0)(self);
|
||||
return vfunc<fn_t>(
|
||||
self, offsets::PlatformOffset(520, offsets::undefined, 520),
|
||||
0)(self);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -3,13 +3,11 @@
|
||||
#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;
|
||||
@ -29,8 +27,7 @@ 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;
|
||||
@ -112,8 +109,7 @@ 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;
|
||||
@ -121,8 +117,7 @@ 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;
|
||||
@ -205,12 +200,9 @@ 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;
|
||||
@ -234,10 +226,8 @@ 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;
|
||||
@ -248,14 +238,10 @@ 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;
|
||||
@ -265,6 +251,7 @@ dynamic::dynamic()
|
||||
classid_mapping["CTFMinigun"] = &CTFMinigun;
|
||||
classid_mapping["CTFMedigunShield"] = &CTFMedigunShield;
|
||||
classid_mapping["CWeaponMedigun"] = &CWeaponMedigun;
|
||||
classid_mapping["CTFProjectile_MechanicalArmOrb"] = &CTFProjectile_MechanicalArmOrb;
|
||||
classid_mapping["CTFMechanicalArm"] = &CTFMechanicalArm;
|
||||
classid_mapping["CTFLunchBox_Drink"] = &CTFLunchBox_Drink;
|
||||
classid_mapping["CTFLunchBox"] = &CTFLunchBox;
|
||||
@ -278,8 +265,7 @@ 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;
|
||||
@ -302,8 +288,7 @@ 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;
|
||||
@ -318,16 +303,12 @@ 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;
|
||||
@ -339,27 +320,19 @@ 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;
|
||||
@ -371,8 +344,7 @@ 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;
|
||||
@ -558,13 +530,12 @@ 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;
|
||||
@ -573,4 +544,5 @@ void dynamic::Populate()
|
||||
}
|
||||
|
||||
dynamic dynamic_list;
|
||||
|
||||
}
|
50
src/hacks/AutoDeadringer.cpp
Normal file
50
src/hacks/AutoDeadringer.cpp
Normal file
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* AutoDeadringer.cpp
|
||||
*
|
||||
* Created on: Apr 12, 2018
|
||||
* Author: bencat07
|
||||
*/
|
||||
#include "common.hpp"
|
||||
namespace hacks
|
||||
{
|
||||
namespace shared
|
||||
{
|
||||
namespace deadringer
|
||||
{
|
||||
CatVar enabled(CV_SWITCH, "deadringer_auto", "0", "Auto deadringer",
|
||||
"automatically pull out DR on low health or projectile nearby");
|
||||
|
||||
bool IsProjectile(CachedEntity *ent)
|
||||
{
|
||||
return (ent->m_iClassID == CL_CLASS(CTFProjectile_Rocket) ||
|
||||
ent->m_iClassID == CL_CLASS(CTFProjectile_Flare) ||
|
||||
ent->m_iClassID == CL_CLASS(CTFProjectile_EnergyBall) ||
|
||||
ent->m_iClassID == CL_CLASS(CTFProjectile_HealingBolt) ||
|
||||
ent->m_iClassID == CL_CLASS(CTFProjectile_Arrow) ||
|
||||
ent->m_iClassID == CL_CLASS(CTFProjectile_SentryRocket) ||
|
||||
ent->m_iClassID == CL_CLASS(CTFProjectile_Cleaver) ||
|
||||
ent->m_iClassID == CL_CLASS(CTFGrenadePipebombProjectile) ||
|
||||
ent->m_iClassID == CL_CLASS(CTFProjectile_EnergyRing));
|
||||
}
|
||||
void CreateMove()
|
||||
{
|
||||
if (CE_BAD(LOCAL_E))
|
||||
return;
|
||||
if (!HasWeapon(LOCAL_E, 59) || CE_INT(LOCAL_E, netvar.m_bFeignDeathReady) == 1)
|
||||
return;
|
||||
if (CE_INT(LOCAL_E, netvar.iHealth) < 30)
|
||||
g_pUserCmd->buttons |= IN_ATTACK2;
|
||||
for (int i = 0; i < HIGHEST_ENTITY; i++)
|
||||
{
|
||||
CachedEntity *ent = ENTITY(i);
|
||||
if (CE_BAD(ent))
|
||||
continue;
|
||||
if (!IsProjectile(ent))
|
||||
continue;
|
||||
if (ent->m_flDistance < 100.0f)
|
||||
g_pUserCmd->buttons |= IN_ATTACK2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -80,7 +80,7 @@ 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;
|
||||
float servertime, nextattack, nextattack2;
|
||||
static int lastwep = 0;
|
||||
void CreateMove()
|
||||
{
|
||||
@ -430,6 +430,7 @@ void CreateMove()
|
||||
if (doom || razorback)
|
||||
{
|
||||
static int i = 0;
|
||||
static int i2 = 0;
|
||||
servertime =
|
||||
(float) (CE_INT(g_pLocalPlayer->entity, netvar.nTickBase)) *
|
||||
g_GlobalVars->interval_per_tick;
|
||||
@ -437,22 +438,31 @@ void CreateMove()
|
||||
g_pLocalPlayer->weapon()->m_iClassID != lastwep)
|
||||
nextattack =
|
||||
CE_FLOAT(g_pLocalPlayer->weapon(), netvar.flNextPrimaryAttack);
|
||||
if (!nextattack2 || !i ||
|
||||
g_pLocalPlayer->weapon()->m_iClassID != lastwep)
|
||||
nextattack2 =
|
||||
CE_FLOAT(g_pLocalPlayer->weapon(), netvar.flNextSecondaryAttack);
|
||||
if (servertime - nextattack > 75.0f)
|
||||
nextattack = servertime - 75.0f;
|
||||
if (doom && servertime - nextattack > 0.0f &&
|
||||
(g_pUserCmd->buttons & IN_ATTACK ||
|
||||
g_pUserCmd->buttons & IN_ATTACK2))
|
||||
if (servertime - nextattack2 > 75.0f)
|
||||
nextattack2 = servertime - 75.0f;
|
||||
if (doom && servertime - nextattack > 0.0f && g_pUserCmd->buttons & IN_ATTACK)
|
||||
{
|
||||
if (!i)
|
||||
i = ((int) servertime - (int) nextattack);
|
||||
amount = i * 66;
|
||||
if (CE_INT(g_pLocalPlayer->weapon(), netvar.m_iClip1) == 0)
|
||||
{
|
||||
g_pUserCmd->buttons &= ~IN_ATTACK;
|
||||
|
||||
}
|
||||
if (doom && servertime - nextattack2 > 0.0f && g_pUserCmd->buttons & IN_ATTACK2) {
|
||||
if (!i2)
|
||||
i2 = ((int) servertime - (int) nextattack2);
|
||||
amount = i2 * 66;
|
||||
if (CE_INT(g_pLocalPlayer->weapon(), netvar.m_iClip2) == 0)
|
||||
g_pUserCmd->buttons &= ~IN_ATTACK2;
|
||||
}
|
||||
}
|
||||
else if (razorback && servertime - nextattack > 3.0f &&
|
||||
if (razorback && servertime - nextattack > 3.0f &&
|
||||
(g_pUserCmd->buttons & IN_ATTACK ||
|
||||
g_pUserCmd->buttons & IN_ATTACK2))
|
||||
{
|
||||
@ -484,10 +494,14 @@ void CreateMove()
|
||||
void Draw()
|
||||
{
|
||||
#if ENABLE_VISUALS == 1
|
||||
if (doom && servertime - nextattack > 0.0f)
|
||||
if (doom && (servertime - nextattack > 0.0f || servertime - nextattack2))
|
||||
{
|
||||
auto amount = (int) servertime - (int) nextattack;
|
||||
AddCenterString(format("Fireable amount: ", amount), colors::orange);
|
||||
auto amount2 = (int) servertime - (int) nextattack2;
|
||||
if (amount > 0.0f)
|
||||
AddCenterString(format("Fireable Primary amount: ", amount), colors::orange);
|
||||
if (amount2 > 0.0f)
|
||||
AddCenterString(format("Fireable Secondary amount: ", amount2), colors::orange);
|
||||
}
|
||||
if (razorback)
|
||||
if (servertime - nextattack > 3.0f)
|
||||
|
@ -487,39 +487,36 @@ void DrawText()
|
||||
void Schema_Reload()
|
||||
{
|
||||
logging::Info("Custom schema loading is not supported right now.");
|
||||
/*
|
||||
static uintptr_t InitSchema_s = gSignatures.GetClientSignature("55 89 E5 57
|
||||
56 53 83 EC 4C 0F B6 7D 14 C7 04 ? ? ? ? 01 8B 5D 18 8B 75 0C 89 5C 24 04 E8
|
||||
? ? ? ? 89 F8 C7 45 C8 00 00 00 00 8D 7D C8 84 C0 8B 45 10 C7 45 CC");
|
||||
typedef void(*InitSchema_t)(void*, void*, CUtlBuffer& buffer, bool byte,
|
||||
unsigned version); static InitSchema_t InitSchema =
|
||||
|
||||
static uintptr_t InitSchema_s = gSignatures.GetClientSignature("55 89 E5 57 56 53 83 EC ? 8B 5D ? 8B 7D ? 8B 03 89 1C 24 FF 50 ? C7 04 24 ? ? ? ?");
|
||||
typedef bool(*InitSchema_t)(void*, CUtlBuffer &, int);
|
||||
static InitSchema_t InitSchema =
|
||||
(InitSchema_t)InitSchema_s; static uintptr_t GetItemSchema_s =
|
||||
gSignatures.GetClientSignature("55 89 E5 83 EC 18 89 5D F8 8B 1D ? ? ? ? 89
|
||||
7D FC 85 DB 74 12 89 D8 8B 7D FC 8B 5D F8 89 EC 5D C3 8D B6 00 00 00 00 C7
|
||||
04 24 A8 06 00 00 E8 ? ? ? ? B9 AA 01 00 00 89 C3 31 C0 89 DF"); typedef
|
||||
void*(*GetItemSchema_t)(void); static GetItemSchema_t GetItemSchema =
|
||||
(GetItemSchema_t)GetItemSchema_s;//(*(uintptr_t*)GetItemSchema_s +
|
||||
GetItemSchema_s + 4);
|
||||
gSignatures.GetClientSignature("55 89 E5 83 EC ? E8 ? ? ? ? C9 83 C0 ? C3 55 89 E5 8B 45 ?");
|
||||
typedef void*(*GetItemSchema_t)(void);
|
||||
static GetItemSchema_t GetItemSchema = (GetItemSchema_t)GetItemSchema_s; //(*(uintptr_t*)GetItemSchema_s +GetItemSchema_s + 4);
|
||||
|
||||
logging::Info("0x%08x 0x%08x", InitSchema, GetItemSchema);
|
||||
void* itemschema = (void*)((unsigned)GetItemSchema() + 4);
|
||||
void* data;
|
||||
passwd* pwd = getpwuid(getuid());
|
||||
char* user = pwd->pw_name;
|
||||
char* path = strfmt("/home/%s/.cathook/items_game.txt", user);
|
||||
char* path = strfmt("/opt/cathook/data/items_game.txt");
|
||||
FILE* file = fopen(path, "r");
|
||||
delete [] path;
|
||||
fseek(file, 0L, SEEK_END);
|
||||
char buffer[4 * 1000 * 1000];
|
||||
char buffer[5 * 1000 * 1000];
|
||||
size_t len = ftell(file);
|
||||
rewind(file);
|
||||
buffer[len + 1] = 0;
|
||||
fread(&buffer, sizeof(char), len, file);
|
||||
fclose(file);
|
||||
CUtlBuffer buf(&buffer, 4 * 1000 * 1000, 9);
|
||||
CUtlBuffer buf(&buffer, 5 * 1000 * 1000, 9);
|
||||
if (ferror(file) != 0) {
|
||||
logging::Info("Error loading file");
|
||||
return;
|
||||
}
|
||||
logging::Info("0x%08x 0x%08x", InitSchema, GetItemSchema);
|
||||
InitSchema(0, itemschema, buf, false, 0xDEADCA7);
|
||||
*/
|
||||
bool ret = InitSchema(GetItemSchema(), buf, 133769);
|
||||
logging::Info("Loading %s", ret ? "Successful" : "Unsuccessful");
|
||||
}
|
||||
CatCommand schema("schema", "Load custom schema", Schema_Reload);
|
||||
|
||||
|
@ -49,8 +49,12 @@ void Update(CachedEntity *player)
|
||||
{
|
||||
auto &angles = angles::data(player);
|
||||
float deviation = angles.deviation(2);
|
||||
int widx = CE_INT(player, netvar.hActiveWeapon) & 0xFFF;
|
||||
CachedEntity* wep = ENTITY(widx);
|
||||
if (!CE_GOOD(wep))
|
||||
return;
|
||||
if (deviation > float(detect_angle) &&
|
||||
player->m_iClassID != CL_CLASS(CTFFlameThrower))
|
||||
wep->m_iClassID != CL_CLASS(CTFFlameThrower))
|
||||
{
|
||||
am++;
|
||||
// logging::Info("[ac] %d deviation %.2f #%d", player->m_IDX,
|
||||
|
4
src/hooks/CreateMove.cpp
Executable file → Normal file
4
src/hooks/CreateMove.cpp
Executable file → Normal file
@ -357,6 +357,10 @@ bool CreateMove_hook(void *thisptr, float inputSample, CUserCmd *cmd)
|
||||
PROF_SECTION(CM_noisemaker);
|
||||
hacks::tf2::noisemaker::CreateMove();
|
||||
}
|
||||
{
|
||||
PROF_SECTION(CM_deadringer);
|
||||
hacks::shared::deadringer::CreateMove();
|
||||
}
|
||||
{
|
||||
PROF_SECTION(CM_bunnyhop);
|
||||
hacks::shared::bunnyhop::CreateMove();
|
||||
|
@ -1011,7 +1011,9 @@ CatEnum skys({ "sky_tf2_04",
|
||||
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", "Forced Halloween mode", "forced tf_forced_holiday 2");
|
||||
static CatVar halloween_mode(CV_SWITCH, "halloween_mode", "0",
|
||||
"Forced Halloween mode",
|
||||
"forced tf_forced_holiday 2");
|
||||
void LevelInit_hook(void *_this, const char *newmap)
|
||||
{
|
||||
static const LevelInit_t original =
|
||||
@ -1030,7 +1032,6 @@ void LevelInit_hook(void *_this, const char *newmap)
|
||||
holiday->SetValue(2);
|
||||
else if (holiday->m_nValue == 2)
|
||||
holiday->SetValue(2);
|
||||
|
||||
g_IEngine->ClientCmd_Unrestricted("exec cat_matchexec");
|
||||
hacks::shared::aimbot::Reset();
|
||||
chat_stack::Reset();
|
||||
|
@ -655,6 +655,7 @@ static const std::string list_tf2 = R"(
|
||||
]
|
||||
"Misc" [
|
||||
"Misc Menu"
|
||||
"deadringer_auto"
|
||||
"halloween_mode"
|
||||
"name"
|
||||
"disconnect_reason"
|
||||
|
@ -28,8 +28,14 @@ void NetVars::Init()
|
||||
this->movetype = gNetvars.get_offset("DT_BaseEntity", "movetype");
|
||||
this->m_iAmmo =
|
||||
gNetvars.get_offset("DT_BasePlayer", "localdata", "m_iAmmo");
|
||||
this->m_iPrimaryAmmoType =
|
||||
gNetvars.get_offset("DT_LocalWeaponData", "localdata", "m_iPrimaryAmmoType");
|
||||
this->m_iSecondaryAmmoType =
|
||||
gNetvars.get_offset("DT_LocalWeaponData", "localdata", "m_iSecondaryAmmoType");
|
||||
this->m_iClip1 = gNetvars.get_offset("DT_BaseCombatWeapon",
|
||||
"LocalWeaponData", "m_iClip1");
|
||||
this->m_iClip2 = gNetvars.get_offset("DT_BaseCombatWeapon",
|
||||
"LocalWeaponData", "m_iClip2");
|
||||
this->m_Collision = gNetvars.get_offset("DT_BaseEntity", "m_Collision");
|
||||
m_flSimulationTime =
|
||||
gNetvars.get_offset("DT_BaseEntity", "m_flSimulationTime");
|
||||
@ -156,6 +162,9 @@ void NetVars::Init()
|
||||
this->flNextPrimaryAttack =
|
||||
gNetvars.get_offset("DT_BaseCombatWeapon", "LocalActiveWeaponData",
|
||||
"m_flNextPrimaryAttack");
|
||||
this->flNextSecondaryAttack =
|
||||
gNetvars.get_offset("DT_BaseCombatWeapon", "LocalActiveWeaponData",
|
||||
"m_flNextSecondaryAttack");
|
||||
this->iNextThinkTick = gNetvars.get_offset(
|
||||
"DT_BaseCombatWeapon", "LocalActiveWeaponData", "m_nNextThinkTick");
|
||||
this->nTickBase =
|
||||
|
@ -21,8 +21,7 @@ C_MannVsMachineStats *C_MannVsMachineStats::G_MannVsMachineStats()
|
||||
}
|
||||
int *C_MannVsMachineStats::AddLocalPlayerUpgrade(int id, int &a3)
|
||||
{
|
||||
typedef int *(*AddLocalPlayerUpgrade_t)(C_MannVsMachineStats *, int,
|
||||
int);
|
||||
typedef int *(*AddLocalPlayerUpgrade_t)(C_MannVsMachineStats *, int, int);
|
||||
static uintptr_t addr = gSignatures.GetClientSignature(
|
||||
"55 89 E5 57 56 53 83 EC ? 8B 5D ? 8B 75 ? 8B 7D ? 8B 43 ? 8B 53 ? 83 "
|
||||
"C0 ? 39 D0 7E ? 29 D0 89 1C 24 89 44 24 ? E8 ? ? ? ? 8B 43 ? 83 C0 ? "
|
||||
|
Reference in New Issue
Block a user