This commit is contained in:
nullifiedcat 2016-12-14 07:55:39 +03:00
parent e9bfa50ce9
commit c171ab7223
26 changed files with 148 additions and 161 deletions

View File

@ -40,6 +40,7 @@ InsultSpam
Airstuck Idle Kick fix Airstuck Idle Kick fix
Anti Backstab Anti Backstab
Critical rifles bodyshotting Critical rifles bodyshotting
FLAG ESP
Hitbox position cache Hitbox position cache
Spy alert uses angles Spy alert uses angles
More esp tweaking More esp tweaking

View File

@ -8,8 +8,7 @@ a * entity.cpp
#include "copypasted/Netvar.h" #include "copypasted/Netvar.h"
#include "common.h" #include "common.h"
// TODO globals EntityVariables netvar;
EntityVariables eoffsets;
void EntityVariables::Init() { void EntityVariables::Init() {
this->iCond = gNetvars.get_offset("DT_TFPlayer", "m_Shared", "m_nPlayerCond"); this->iCond = gNetvars.get_offset("DT_TFPlayer", "m_Shared", "m_nPlayerCond");
@ -58,5 +57,5 @@ void EntityVariables::Init() {
} }
void InitEntityOffsets() { void InitEntityOffsets() {
eoffsets.Init(); netvar.Init();
} }

View File

@ -86,7 +86,6 @@ public:
offset_t test; offset_t test;
}; };
// TODO globals extern EntityVariables netvar;
extern EntityVariables eoffsets;
#endif /* ENTITY_H_ */ #endif /* ENTITY_H_ */

View File

@ -46,21 +46,21 @@ void CachedEntity::Update(int idx) {
} }
m_bAlivePlayer = false; m_bAlivePlayer = false;
if (m_iClassID == ClassID::CTFPlayer) { if (m_iClassID == ClassID::CTFPlayer) {
m_bAlivePlayer = !(m_bNULL || m_bDormant || GetEntityValue<char>(m_pEntity, eoffsets.iLifeState)); m_bAlivePlayer = !(m_bNULL || m_bDormant || GetEntityValue<char>(m_pEntity, netvar.iLifeState));
m_iTeam = Var<int>(eoffsets.iTeamNum); // TODO m_iTeam = Var<int>(netvar.iTeamNum); // TODO
m_bEnemy = (m_iTeam != g_pLocalPlayer->team); m_bEnemy = (m_iTeam != g_pLocalPlayer->team);
m_bIsVisible = (IsEntityVisible(m_pEntity, 0) || IsEntityVisible(m_pEntity, 4)); m_bIsVisible = (IsEntityVisible(m_pEntity, 0) || IsEntityVisible(m_pEntity, 4));
m_iHealth = Var<int>(eoffsets.iHealth); m_iHealth = Var<int>(netvar.iHealth);
m_iMaxHealth = g_pPlayerResource->GetMaxHealth(m_pEntity); m_iMaxHealth = g_pPlayerResource->GetMaxHealth(m_pEntity);
if (m_bIsVisible) m_lLastSeen = 0; if (m_bIsVisible) m_lLastSeen = 0;
else m_lLastSeen++; else m_lLastSeen++;
} }
if (m_iClassID == ClassID::CObjectSentrygun || m_iClassID == ClassID::CObjectDispenser || m_iClassID == ClassID::CObjectTeleporter) { if (m_iClassID == ClassID::CObjectSentrygun || m_iClassID == ClassID::CObjectDispenser || m_iClassID == ClassID::CObjectTeleporter) {
m_iTeam = Var<int>(eoffsets.iTeamNum); // TODO m_iTeam = Var<int>(netvar.iTeamNum); // TODO
m_bEnemy = (m_iTeam != g_pLocalPlayer->team); m_bEnemy = (m_iTeam != g_pLocalPlayer->team);
m_bIsVisible = (IsEntityVisible(m_pEntity, 0)); m_bIsVisible = (IsEntityVisible(m_pEntity, 0));
m_iHealth = Var<int>(eoffsets.iBuildingHealth); m_iHealth = Var<int>(netvar.iBuildingHealth);
m_iMaxHealth = Var<int>(eoffsets.iBuildingMaxHealth); m_iMaxHealth = Var<int>(netvar.iBuildingMaxHealth);
if (m_bIsVisible) m_lLastSeen = 0; if (m_bIsVisible) m_lLastSeen = 0;
else m_lLastSeen++; else m_lLastSeen++;
} }

View File

@ -13,7 +13,6 @@ class ConVar;
class GlobalSettings { class GlobalSettings {
public: public:
void Init(); void Init();
// TODO
ConVar* flForceFOV; ConVar* flForceFOV;
ConVar* bHackEnabled; ConVar* bHackEnabled;
ConVar* bIgnoreTaunting; ConVar* bIgnoreTaunting;

View File

@ -179,7 +179,7 @@ void Hk_Shutdown(void* thisptr, const char* reason) {
bool hack::Hk_CreateMove(void* thisptr, float inputSample, CUserCmd* cmd) { bool hack::Hk_CreateMove(void* thisptr, float inputSample, CUserCmd* cmd) {
if (g_pLocalPlayer->entity) { if (g_pLocalPlayer->entity) {
if (g_pLocalPlayer->bWasZoomed) { if (g_pLocalPlayer->bWasZoomed) {
SetEntityValue(g_pLocalPlayer->entity, eoffsets.iCond, g_pLocalPlayer->cond_0 |= cond::zoomed); SetEntityValue(g_pLocalPlayer->entity, netvar.iCond, g_pLocalPlayer->cond_0 |= cond::zoomed);
} }
} }
bool ret = ((CreateMove_t*)hooks::hkClientMode->GetMethod(hooks::offCreateMove))(thisptr, inputSample, cmd); bool ret = ((CreateMove_t*)hooks::hkClientMode->GetMethod(hooks::offCreateMove))(thisptr, inputSample, cmd);
@ -231,7 +231,7 @@ bool hack::Hk_CreateMove(void* thisptr, float inputSample, CUserCmd* cmd) {
}*/ }*/
if (g_pLocalPlayer->entity) { if (g_pLocalPlayer->entity) {
if (g_Settings.bNoZoom->GetBool()) { if (g_Settings.bNoZoom->GetBool()) {
SetEntityValue(g_pLocalPlayer->entity, eoffsets.iCond, g_pLocalPlayer->cond_0 &= ~cond::zoomed); SetEntityValue(g_pLocalPlayer->entity, netvar.iCond, g_pLocalPlayer->cond_0 &= ~cond::zoomed);
} }
} }
@ -253,15 +253,15 @@ void hack::Hk_FrameStageNotify(void* thisptr, int stage) {
//logging::Info("FrameStageNotify %i", stage); //logging::Info("FrameStageNotify %i", stage);
// Ambassador to festive ambassador changer. simple. // Ambassador to festive ambassador changer. simple.
if (g_pLocalPlayer->weapon) { if (g_pLocalPlayer->weapon) {
int defidx = GetEntityValue<int>(g_pLocalPlayer->weapon, eoffsets.iItemDefinitionIndex); int defidx = GetEntityValue<int>(g_pLocalPlayer->weapon, netvar.iItemDefinitionIndex);
if (defidx == 61) { if (defidx == 61) {
SetEntityValue<int>(g_pLocalPlayer->weapon, eoffsets.iItemDefinitionIndex, 1006); SetEntityValue<int>(g_pLocalPlayer->weapon, netvar.iItemDefinitionIndex, 1006);
} }
} }
((FrameStageNotify_t*)hooks::hkClient->GetMethod(hooks::offFrameStageNotify))(thisptr, stage); ((FrameStageNotify_t*)hooks::hkClient->GetMethod(hooks::offFrameStageNotify))(thisptr, stage);
if (stage == 5 && g_Settings.bNoFlinch->GetBool()) { if (stage == 5 && g_Settings.bNoFlinch->GetBool()) {
static Vector oldPunchAngles = Vector(); static Vector oldPunchAngles = Vector();
Vector punchAngles = GetEntityValue<Vector>(g_pLocalPlayer->entity, eoffsets.vecPunchAngle); Vector punchAngles = GetEntityValue<Vector>(g_pLocalPlayer->entity, netvar.vecPunchAngle);
QAngle viewAngles; QAngle viewAngles;
interfaces::engineClient->GetViewAngles(viewAngles); interfaces::engineClient->GetViewAngles(viewAngles);
viewAngles -= VectorToQAngle(punchAngles - oldPunchAngles); viewAngles -= VectorToQAngle(punchAngles - oldPunchAngles);
@ -271,8 +271,8 @@ void hack::Hk_FrameStageNotify(void* thisptr, int stage) {
if (g_Settings.bNoZoom->GetBool()) { if (g_Settings.bNoZoom->GetBool()) {
if (g_pLocalPlayer->entity) { if (g_pLocalPlayer->entity) {
g_pLocalPlayer->bWasZoomed = GetEntityValue<int>(g_pLocalPlayer->entity, eoffsets.iCond) & cond::zoomed; g_pLocalPlayer->bWasZoomed = GetEntityValue<int>(g_pLocalPlayer->entity, netvar.iCond) & cond::zoomed;
SetEntityValue(g_pLocalPlayer->entity, eoffsets.iCond, g_pLocalPlayer->cond_0 &~ cond::zoomed); SetEntityValue(g_pLocalPlayer->entity, netvar.iCond, g_pLocalPlayer->cond_0 &~ cond::zoomed);
} }
} }
} }
@ -311,14 +311,9 @@ void hack::InitHacks() {
void hack::Initialize() { void hack::Initialize() {
logging::Initialize(); logging::Initialize();
//std::string test = "";
logging::Info("Build: " __DATE__ " " __TIME__); logging::Info("Build: " __DATE__ " " __TIME__);
logging::Info("Loading shared objects..."); logging::Info("Loading shared objects...");
sharedobj::LoadAllSharedObjects(); sharedobj::LoadAllSharedObjects();
/* TODO */
//logging::Info("TRYIN' SHIT");
//CGlowObject* gom = (CGlowObject*)((uintptr_t)sharedobj::client->lmap->l_addr + 0x01FC6260);
//logging::Info("MANAGER?? 0x%08f", gom);
logging::Info("Creating interfaces..."); logging::Info("Creating interfaces...");
interfaces::CreateInterfaces(); interfaces::CreateInterfaces();
logging::Info("Interfaces created!"); logging::Info("Interfaces created!");
@ -368,8 +363,6 @@ void hack::Initialize() {
} }
void hack::Think() { void hack::Think() {
//logging::Info("Hack::Think");
// Fucking TODo
usleep(250000); usleep(250000);
} }

View File

@ -52,7 +52,7 @@ Aimbot::Aimbot() {
this->v_bSilent = CreateConVar("u_aimbot_silent", "1", "Silent mode"); this->v_bSilent = CreateConVar("u_aimbot_silent", "1", "Silent mode");
this->v_bZoomedOnly = CreateConVar("u_aimbot_zoomed", "1", "Only acitve with zoomed rifle"); this->v_bZoomedOnly = CreateConVar("u_aimbot_zoomed", "1", "Only acitve with zoomed rifle");
this->v_iAutoShootCharge = CreateConVar("u_aimbot_autoshoot_charge", "0.0", "Minimal charge for autoshoot"); this->v_iAutoShootCharge = CreateConVar("u_aimbot_autoshoot_charge", "0.0", "Minimal charge for autoshoot");
this->v_iMinRange = CreateConVar("u_aimbot_minrange", "0", "Minimum range to aim"); this->v_iMaxRange = CreateConVar("u_aimbot_maxrange", "0", "Max distance");
this->v_bRespectCloak = CreateConVar("u_aimbot_respect_cloak", "1", "Will not shoot cloaked spies."); this->v_bRespectCloak = CreateConVar("u_aimbot_respect_cloak", "1", "Will not shoot cloaked spies.");
this->v_bCharge = CreateConVar("u_aimbot_charge", "0", "Autoshoot only with charge ready"); this->v_bCharge = CreateConVar("u_aimbot_charge", "0", "Autoshoot only with charge ready");
this->v_bEnabledAttacking = CreateConVar("u_aimbot_enable_attack_only", "0", "Aimbot only active with attack key held"); this->v_bEnabledAttacking = CreateConVar("u_aimbot_enable_attack_only", "0", "Aimbot only active with attack key held");
@ -118,7 +118,7 @@ bool Aimbot::CreateMove(void*, float, CUserCmd* cmd) {
} }
if (IsAmbassador(g_pLocalPlayer->weapon)) { if (IsAmbassador(g_pLocalPlayer->weapon)) {
if ((interfaces::gvars->curtime - GetEntityValue<float>(g_pLocalPlayer->weapon, eoffsets.flLastFireTime)) <= 1.0) { if ((interfaces::gvars->curtime - GetEntityValue<float>(g_pLocalPlayer->weapon, netvar.flLastFireTime)) <= 1.0) {
return true; return true;
} }
} }
@ -218,9 +218,9 @@ bool Aimbot::CreateMove(void*, float, CUserCmd* cmd) {
case 3: { case 3: {
float scr; float scr;
if (IsBuilding(ent)) { if (IsBuilding(ent)) {
scr = 450.0f - GetEntityValue<int>(ent, eoffsets.iBuildingHealth); scr = 450.0f - GetEntityValue<int>(ent, netvar.iBuildingHealth);
} else { } else {
scr = 450.0f - GetEntityValue<int>(ent, eoffsets.iHealth); scr = 450.0f - GetEntityValue<int>(ent, netvar.iHealth);
} }
if (scr > target_highest_score) { if (scr > target_highest_score) {
target_highest_score = scr; target_highest_score = scr;
@ -244,13 +244,13 @@ void Aimbot::PaintTraverse(void*, unsigned int, bool, bool) {
IClientEntity* ent = interfaces::entityList->GetClientEntity(this->m_iLastTarget); IClientEntity* ent = interfaces::entityList->GetClientEntity(this->m_iLastTarget);
if (!ent) return; if (!ent) return;
if (IsPlayer(ent)) { if (IsPlayer(ent)) {
int clazz = GetEntityValue<int>(ent, eoffsets.iClass); int clazz = GetEntityValue<int>(ent, netvar.iClass);
if (clazz < 0 || clazz > 9) return; if (clazz < 0 || clazz > 9) return;
player_info_t info; player_info_t info;
if (!interfaces::engineClient->GetPlayerInfo(this->m_iLastTarget, &info)) return; if (!interfaces::engineClient->GetPlayerInfo(this->m_iLastTarget, &info)) return;
AddCenterString(colors::yellow, colors::black, "Prey: %i HP %s (%s)", GetEntityValue<int>(ent, eoffsets.iHealth), tfclasses[clazz], info.name); AddCenterString(colors::yellow, colors::black, "Prey: %i HP %s (%s)", GetEntityValue<int>(ent, netvar.iHealth), tfclasses[clazz], info.name);
} else if (IsBuilding(ent)) { } else if (IsBuilding(ent)) {
AddCenterString(colors::yellow, colors::black, "Prey: %i HP LV %i %s", GetEntityValue<int>(ent, eoffsets.iBuildingHealth), GetEntityValue<int>(ent, eoffsets.iUpgradeLevel), GetBuildingType(ent)); AddCenterString(colors::yellow, colors::black, "Prey: %i HP LV %i %s", GetEntityValue<int>(ent, netvar.iBuildingHealth), GetEntityValue<int>(ent, netvar.iUpgradeLevel), GetBuildingType(ent));
} }
} }
@ -260,14 +260,14 @@ bool Aimbot::ShouldTarget(IClientEntity* entity) {
if (entity->IsDormant()) return false; if (entity->IsDormant()) return false;
if (IsPlayer(entity)) { if (IsPlayer(entity)) {
if (IsPlayerInvulnerable(entity)) return false; if (IsPlayerInvulnerable(entity)) return false;
int team = GetEntityValue<int>(entity, eoffsets.iTeamNum); int team = GetEntityValue<int>(entity, netvar.iTeamNum);
int local = interfaces::engineClient->GetLocalPlayer(); int local = interfaces::engineClient->GetLocalPlayer();
IClientEntity* player = interfaces::entityList->GetClientEntity(local); IClientEntity* player = interfaces::entityList->GetClientEntity(local);
char life_state = GetEntityValue<char>(entity, eoffsets.iLifeState); char life_state = GetEntityValue<char>(entity, netvar.iLifeState);
if (life_state) return false; if (life_state) return false;
if (!player) return false; if (!player) return false;
if (v_bRespectCloak->GetBool() && (GetEntityValue<int>(entity, eoffsets.iCond) & cond::cloaked)) return false; if (v_bRespectCloak->GetBool() && (GetEntityValue<int>(entity, netvar.iCond) & cond::cloaked)) return false;
int health = GetEntityValue<int>(entity, eoffsets.iHealth); int health = GetEntityValue<int>(entity, netvar.iHealth);
/*if (this->v_bCharge->GetBool() && (GetEntityValue<int>(player, eoffsets.iClass) == 2)) { /*if (this->v_bCharge->GetBool() && (GetEntityValue<int>(player, eoffsets.iClass) == 2)) {
int rifleHandle = GetEntityValue<int>(player, eoffsets.hActiveWeapon); int rifleHandle = GetEntityValue<int>(player, eoffsets.hActiveWeapon);
IClientEntity* rifle = interfaces::entityList->GetClientEntity(rifleHandle & 0xFFF); IClientEntity* rifle = interfaces::entityList->GetClientEntity(rifleHandle & 0xFFF);
@ -275,14 +275,14 @@ bool Aimbot::ShouldTarget(IClientEntity* entity) {
float bdmg = GetEntityValue<float>(rifle, eoffsets.flChargedDamage); float bdmg = GetEntityValue<float>(rifle, eoffsets.flChargedDamage);
if (health > 150 && (health > (150 + bdmg) || bdmg < 15.0f)) return false; if (health > 150 && (health > (150 + bdmg) || bdmg < 15.0f)) return false;
}*/ }*/
int team_my = GetEntityValue<int>(player, eoffsets.iTeamNum); int team_my = GetEntityValue<int>(player, netvar.iTeamNum);
if (team == team_my) return false; if (team == team_my) return false;
Vector enemy_pos = entity->GetAbsOrigin(); Vector enemy_pos = entity->GetAbsOrigin();
Vector my_pos = player->GetAbsOrigin(); Vector my_pos = player->GetAbsOrigin();
if (v_iMinRange->GetInt() > 0) { if (v_iMaxRange->GetInt() > 0) {
if ((enemy_pos - my_pos).Length() > v_iMinRange->GetInt()) return false; if ((enemy_pos - my_pos).Length() > v_iMaxRange->GetInt()) return false;
} }
int econd = GetEntityValue<int>(entity, eoffsets.iCond1); int econd = GetEntityValue<int>(entity, netvar.iCond1);
if ((econd & cond_ex::vacc_bullet)) return false; if ((econd & cond_ex::vacc_bullet)) return false;
if (GetRelation(entity) == relation::FRIEND) return false; if (GetRelation(entity) == relation::FRIEND) return false;
Vector resultAim; Vector resultAim;
@ -301,11 +301,11 @@ bool Aimbot::ShouldTarget(IClientEntity* entity) {
return true; return true;
} else if (IsBuilding(entity)) { } else if (IsBuilding(entity)) {
if (!v_bAimBuildings->GetBool()) return false; if (!v_bAimBuildings->GetBool()) return false;
int team = GetEntityValue<int>(entity, eoffsets.iTeamNum); int team = GetEntityValue<int>(entity, netvar.iTeamNum);
if (team == g_pLocalPlayer->team) return false; if (team == g_pLocalPlayer->team) return false;
Vector enemy_pos = entity->GetAbsOrigin(); Vector enemy_pos = entity->GetAbsOrigin();
if (v_iMinRange->GetInt() > 0) { if (v_iMaxRange->GetInt() > 0) {
if ((enemy_pos - g_pLocalPlayer->v_Origin).Length() > v_iMinRange->GetInt()) return false; if ((enemy_pos - g_pLocalPlayer->v_Origin).Length() > v_iMaxRange->GetInt()) return false;
} }
Vector resultAim; Vector resultAim;
// TODO fix proj buildings // TODO fix proj buildings
@ -370,9 +370,9 @@ bool Aimbot::Aim(IClientEntity* entity, CUserCmd* cmd) {
if (g_pLocalPlayer->clazz == tf_class::tf_sniper) { if (g_pLocalPlayer->clazz == tf_class::tf_sniper) {
if (g_pLocalPlayer->cond_0 & cond::zoomed) { if (g_pLocalPlayer->cond_0 & cond::zoomed) {
if (this->v_iAutoShootCharge->GetBool()) { if (this->v_iAutoShootCharge->GetBool()) {
int rifleHandle = GetEntityValue<int>(local, eoffsets.hActiveWeapon); int rifleHandle = GetEntityValue<int>(local, netvar.hActiveWeapon);
IClientEntity* rifle = interfaces::entityList->GetClientEntity(rifleHandle & 0xFFF); IClientEntity* rifle = interfaces::entityList->GetClientEntity(rifleHandle & 0xFFF);
float bdmg = GetEntityValue<float>(rifle, eoffsets.flChargedDamage); float bdmg = GetEntityValue<float>(rifle, netvar.flChargedDamage);
if (bdmg < this->v_iAutoShootCharge->GetFloat()) return true; if (bdmg < this->v_iAutoShootCharge->GetFloat()) return true;
} else { } else {
if (!CanHeadshot(g_pLocalPlayer->entity)) return true; if (!CanHeadshot(g_pLocalPlayer->entity)) return true;
@ -380,7 +380,7 @@ bool Aimbot::Aim(IClientEntity* entity, CUserCmd* cmd) {
} }
} }
if (g_pLocalPlayer->weapon && g_pLocalPlayer->weapon->GetClientClass()->m_ClassID == ClassID::CTFCompoundBow) { if (g_pLocalPlayer->weapon && g_pLocalPlayer->weapon->GetClientClass()->m_ClassID == ClassID::CTFCompoundBow) {
float begincharge = GetEntityValue<float>(g_pLocalPlayer->weapon, eoffsets.flChargeBeginTime); float begincharge = GetEntityValue<float>(g_pLocalPlayer->weapon, netvar.flChargeBeginTime);
float charge = 0; float charge = 0;
if (begincharge != 0) { if (begincharge != 0) {
charge = interfaces::gvars->curtime - begincharge; charge = interfaces::gvars->curtime - begincharge;

View File

@ -54,7 +54,7 @@ public:
ConVar* v_bZoomedOnly; ConVar* v_bZoomedOnly;
ConVar* v_iAutoShootCharge; ConVar* v_iAutoShootCharge;
ConVar* v_flAutoShootHuntsmanCharge; ConVar* v_flAutoShootHuntsmanCharge;
ConVar* v_iMinRange; ConVar* v_iMaxRange;
ConVar* v_bRespectCloak; ConVar* v_bRespectCloak;
ConVar* v_bCharge; ConVar* v_bCharge;
ConVar* v_bEnabledAttacking; ConVar* v_bEnabledAttacking;

View File

@ -23,7 +23,6 @@ const char* Airstuck::GetName() {
} }
bool Airstuck::CreateMove(void*, float, CUserCmd* cmd) { bool Airstuck::CreateMove(void*, float, CUserCmd* cmd) {
// TODO Airstuck.
interfaces::cvar->FindVar("net_fakeloss")->SetValue(0); interfaces::cvar->FindVar("net_fakeloss")->SetValue(0);
interfaces::cvar->FindVar("host_timescale")->SetValue(1.0f); interfaces::cvar->FindVar("host_timescale")->SetValue(1.0f);
if (v_bStuck->GetBool()) { if (v_bStuck->GetBool()) {

View File

@ -26,8 +26,8 @@ void AntiDisguise::PaintTraverse(void*, unsigned int, bool, bool) {
IClientEntity* ent = interfaces::entityList->GetClientEntity(i); IClientEntity* ent = interfaces::entityList->GetClientEntity(i);
if (!ent) continue; if (!ent) continue;
if (ent->GetClientClass()->m_ClassID == ClassID::CTFPlayer) { if (ent->GetClientClass()->m_ClassID == ClassID::CTFPlayer) {
if (GetEntityValue<int>(ent, eoffsets.iClass) == tf_class::tf_spy) { if (GetEntityValue<int>(ent, netvar.iClass) == tf_class::tf_spy) {
SetEntityValue<int>(ent, eoffsets.iCond, GetEntityValue<int>(ent, eoffsets.iCond) &~ cond::disguised); SetEntityValue<int>(ent, netvar.iCond, GetEntityValue<int>(ent, netvar.iCond) &~ cond::disguised);
} }
} }
} }

View File

@ -33,7 +33,7 @@ int AutoHeal::GetHealingPriority(int idx) {
if (!CanHeal(idx)) return -1; if (!CanHeal(idx)) return -1;
IClientEntity* ent = interfaces::entityList->GetClientEntity(idx); IClientEntity* ent = interfaces::entityList->GetClientEntity(idx);
int priority = 0; int priority = 0;
int health = GetEntityValue<int>(ent, eoffsets.iHealth); int health = GetEntityValue<int>(ent, netvar.iHealth);
int maxhealth = g_pPlayerResource->GetMaxHealth(ent); int maxhealth = g_pPlayerResource->GetMaxHealth(ent);
int maxbuffedhealth = maxhealth * 1.5; int maxbuffedhealth = maxhealth * 1.5;
int maxoverheal = maxbuffedhealth - maxhealth; int maxoverheal = maxbuffedhealth - maxhealth;
@ -54,11 +54,11 @@ bool AutoHeal::CanHeal(int idx) {
IClientEntity* ent = interfaces::entityList->GetClientEntity(idx); IClientEntity* ent = interfaces::entityList->GetClientEntity(idx);
if (!ent) return false; if (!ent) return false;
if (ent->GetClientClass()->m_ClassID != ClassID::CTFPlayer) return false; if (ent->GetClientClass()->m_ClassID != ClassID::CTFPlayer) return false;
if (GetEntityValue<char>(ent, eoffsets.iLifeState)) return false; if (GetEntityValue<char>(ent, netvar.iLifeState)) return false;
if (g_pLocalPlayer->team != GetEntityValue<int>(ent, eoffsets.iTeamNum)) return false; if (g_pLocalPlayer->team != GetEntityValue<int>(ent, netvar.iTeamNum)) return false;
if (g_pLocalPlayer->v_Origin.DistToSqr(ent->GetAbsOrigin()) > 420 * 420) return false; if (g_pLocalPlayer->v_Origin.DistToSqr(ent->GetAbsOrigin()) > 420 * 420) return false;
if (!IsEntityVisible(ent, 7)) return false; if (!IsEntityVisible(ent, 7)) return false;
if (GetEntityValue<int>(ent, eoffsets.iCond) & cond::cloaked) return false; if (GetEntityValue<int>(ent, netvar.iCond) & cond::cloaked) return false;
return true; return true;
} }

View File

@ -25,24 +25,24 @@ bool AutoReflect::ShouldReflect(IClientEntity* ent) {
case ClassID::CTFProjectile_Rocket: case ClassID::CTFProjectile_Rocket:
case ClassID::CTFProjectile_SentryRocket: case ClassID::CTFProjectile_SentryRocket:
case ClassID::CTFProjectile_EnergyBall: { case ClassID::CTFProjectile_EnergyBall: {
int deflected = GetEntityValue<int>(ent, eoffsets.Rocket_iDeflected); int deflected = GetEntityValue<int>(ent, netvar.Rocket_iDeflected);
if (deflected) return false; // TODO deflected by enemy player if (deflected) return false; // TODO deflected by enemy player
if (GetEntityValue<int>(ent, eoffsets.iTeamNum) == g_pLocalPlayer->team) return false; if (GetEntityValue<int>(ent, netvar.iTeamNum) == g_pLocalPlayer->team) return false;
return true; return true;
} break; } break;
case ClassID::CTFProjectile_Cleaver: case ClassID::CTFProjectile_Cleaver:
case ClassID::CTFProjectile_Jar: case ClassID::CTFProjectile_Jar:
case ClassID::CTFProjectile_JarMilk: { case ClassID::CTFProjectile_JarMilk: {
int deflected = GetEntityValue<int>(ent, eoffsets.Rocket_iDeflected); int deflected = GetEntityValue<int>(ent, netvar.Rocket_iDeflected);
if (deflected) return false; if (deflected) return false;
if (GetEntityValue<int>(ent, eoffsets.iTeamNum) == g_pLocalPlayer->team) return false; if (GetEntityValue<int>(ent, netvar.iTeamNum) == g_pLocalPlayer->team) return false;
return true; return true;
} break; } break;
case ClassID::CTFGrenadePipebombProjectile: { case ClassID::CTFGrenadePipebombProjectile: {
int deflected = GetEntityValue<int>(ent, eoffsets.Rocket_iDeflected); int deflected = GetEntityValue<int>(ent, netvar.Rocket_iDeflected);
if (deflected) return false; if (deflected) return false;
if (GetEntityValue<int>(ent, eoffsets.iTeamNum) == g_pLocalPlayer->team) return false; if (GetEntityValue<int>(ent, netvar.iTeamNum) == g_pLocalPlayer->team) return false;
if (GetEntityValue<int>(ent, eoffsets.iPipeType) == 1) { if (GetEntityValue<int>(ent, netvar.iPipeType) == 1) {
if (!v_bReflectStickies->GetBool()) return false; if (!v_bReflectStickies->GetBool()) return false;
} }
return true; return true;

View File

@ -30,7 +30,7 @@ bool AutoSticky::ShouldDetonate(IClientEntity* bomb) {
CachedEntity* ent = gEntityCache.GetEntity(i); CachedEntity* ent = gEntityCache.GetEntity(i);
if (ent->m_bNULL) continue; if (ent->m_bNULL) continue;
if (ent->m_iClassID != ClassID::CTFPlayer && !(this->v_bBuildings->GetBool() && IsBuilding(ent->m_pEntity))) continue; if (ent->m_iClassID != ClassID::CTFPlayer && !(this->v_bBuildings->GetBool() && IsBuilding(ent->m_pEntity))) continue;
if (ent->m_iTeam == GetEntityValue<int>(bomb, eoffsets.iTeamNum)) continue; if (ent->m_iTeam == GetEntityValue<int>(bomb, netvar.iTeamNum)) continue;
if (ent->m_pEntity->GetAbsOrigin().DistToSqr(bomb->GetAbsOrigin()) > this->v_flDetonateDistance->GetFloat() * this->v_flDetonateDistance->GetFloat()) continue; if (ent->m_pEntity->GetAbsOrigin().DistToSqr(bomb->GetAbsOrigin()) > this->v_flDetonateDistance->GetFloat() * this->v_flDetonateDistance->GetFloat()) continue;
return true; return true;
} }
@ -44,7 +44,7 @@ bool AutoSticky::CreateMove(void*, float, CUserCmd* cmd) {
if (ent->m_bNULL) continue; if (ent->m_bNULL) continue;
if (ent->m_iClassID != ClassID::CTFGrenadePipebombProjectile) continue; if (ent->m_iClassID != ClassID::CTFGrenadePipebombProjectile) continue;
if (g_pLocalPlayer->entity) { if (g_pLocalPlayer->entity) {
IClientEntity* owner = interfaces::entityList->GetClientEntity(ent->Var<int>(eoffsets.hThrower) & 0xFFF); IClientEntity* owner = interfaces::entityList->GetClientEntity(ent->Var<int>(netvar.hThrower) & 0xFFF);
//logging::Info("Owner: 0x%08x", owner); //logging::Info("Owner: 0x%08x", owner);
if (!owner) continue; if (!owner) continue;
if (owner != g_pLocalPlayer->entity) continue; if (owner != g_pLocalPlayer->entity) continue;

View File

@ -24,7 +24,7 @@ bool AutoStrafe::CreateMove(void*, float, CUserCmd* cmd) {
if (!v_bEnabled->GetBool()) return true; if (!v_bEnabled->GetBool()) return true;
if (g_pLocalPlayer->entity && !g_pLocalPlayer->life_state) { if (g_pLocalPlayer->entity && !g_pLocalPlayer->life_state) {
// TODO FL_ONGROUND // TODO FL_ONGROUND
if (GetEntityValue<int>(g_pLocalPlayer->entity, eoffsets.iFlags) & (1 << 0)) return true; if (GetEntityValue<int>(g_pLocalPlayer->entity, netvar.iFlags) & (1 << 0)) return true;
if (abs(cmd->mousedx) > 1) { if (abs(cmd->mousedx) > 1) {
cmd->sidemove = (cmd->mousedx) < 0.0f ? -450.0f : 450.0f; cmd->sidemove = (cmd->mousedx) < 0.0f ? -450.0f : 450.0f;
} }

View File

@ -28,12 +28,12 @@ bool Bunnyhop::CreateMove(void* thisptr, float sampling, CUserCmd* cmd) {
if (!this->v_bEnabled->GetBool()) return true; if (!this->v_bEnabled->GetBool()) return true;
int player = interfaces::engineClient->GetLocalPlayer(); int player = interfaces::engineClient->GetLocalPlayer();
IClientEntity* entity = interfaces::entityList->GetClientEntity(player); IClientEntity* entity = interfaces::entityList->GetClientEntity(player);
int cond3 = GetEntityValue<int>(entity, eoffsets.iCond3); int cond3 = GetEntityValue<int>(entity, netvar.iCond3);
if (cond3 & cond_ex3::grappling) return true; if (cond3 & cond_ex3::grappling) return true;
int flags = GetEntityValue<int>(entity, eoffsets.iFlags); int flags = GetEntityValue<int>(entity, netvar.iFlags);
if (v_bAutoJump->GetBool()) { if (v_bAutoJump->GetBool()) {
Vector vel = GetEntityValue<Vector>(g_pLocalPlayer->entity, eoffsets.vVelocity); Vector vel = GetEntityValue<Vector>(g_pLocalPlayer->entity, netvar.vVelocity);
if (sqrt((vel.x * vel.x + vel.y * vel.y)) > v_iAutoJumpSpeed->GetInt()) { if (sqrt((vel.x * vel.x + vel.y * vel.y)) > v_iAutoJumpSpeed->GetInt()) {
cmd->buttons |= IN_JUMP; cmd->buttons |= IN_JUMP;
} }

View File

@ -111,12 +111,12 @@ void ESP::ProcessEntityPT(CachedEntity* ent) {
switch (ent->m_iClassID) { switch (ent->m_iClassID) {
case ClassID::CTFPlayer: { case ClassID::CTFPlayer: {
if (v_bLegit->GetBool() && ent->m_iTeam != g_pLocalPlayer->team && !GetRelation(ent->m_pEntity)) { if (v_bLegit->GetBool() && ent->m_iTeam != g_pLocalPlayer->team && !GetRelation(ent->m_pEntity)) {
if (ent->Var<int>(eoffsets.iCond) & cond::cloaked) return; if (ent->Var<int>(netvar.iCond) & cond::cloaked) return;
if (ent->m_lLastSeen > v_iLegitSeenTicks->GetInt()) { if (ent->m_lLastSeen > v_iLegitSeenTicks->GetInt()) {
return; return;
} }
} }
if (ent->Var<int>(eoffsets.iTeamNum) == g_pLocalPlayer->team && !v_bTeammates->GetBool() && !GetRelation(ent->m_pEntity)) break; if (ent->Var<int>(netvar.iTeamNum) == g_pLocalPlayer->team && !v_bTeammates->GetBool() && !GetRelation(ent->m_pEntity)) break;
if (!ent->m_bAlivePlayer) break; if (!ent->m_bAlivePlayer) break;
color = colors::GetTeamColor(ent->m_iTeam, !ent->m_bIsVisible); color = colors::GetTeamColor(ent->m_iTeam, !ent->m_bIsVisible);
switch (GetRelation(ent->m_pEntity)) { switch (GetRelation(ent->m_pEntity)) {
@ -127,7 +127,7 @@ void ESP::ProcessEntityPT(CachedEntity* ent) {
color = colors::yellow; color = colors::yellow;
break; break;
} }
DrawBox(ent, color, 3.0f, -15.0f, true, ent->Var<int>(eoffsets.iHealth), ent->m_iMaxHealth); DrawBox(ent, color, 3.0f, -15.0f, true, ent->Var<int>(netvar.iHealth), ent->m_iMaxHealth);
break; break;
} }
case ClassID::CObjectSentrygun: case ClassID::CObjectSentrygun:
@ -138,9 +138,9 @@ void ESP::ProcessEntityPT(CachedEntity* ent) {
return; return;
} }
} }
if (ent->Var<int>(eoffsets.iTeamNum) == g_pLocalPlayer->team && !v_bTeammates->GetBool()) break; if (ent->Var<int>(netvar.iTeamNum) == g_pLocalPlayer->team && !v_bTeammates->GetBool()) break;
color = colors::GetTeamColor(ent->Var<int>(eoffsets.iTeamNum), !ent->m_bIsVisible); color = colors::GetTeamColor(ent->Var<int>(netvar.iTeamNum), !ent->m_bIsVisible);
DrawBox(ent, color, 1.0f, 0.0f, true, ent->Var<int>(eoffsets.iBuildingHealth), ent->Var<int>(eoffsets.iBuildingMaxHealth)); DrawBox(ent, color, 1.0f, 0.0f, true, ent->Var<int>(netvar.iBuildingHealth), ent->Var<int>(netvar.iBuildingMaxHealth));
break; break;
} }
} }
@ -214,8 +214,8 @@ void ESP::ProcessEntity(CachedEntity* ent) {
case ClassID::CTFPlayer: { case ClassID::CTFPlayer: {
if (!ent->m_bAlivePlayer) break; if (!ent->m_bAlivePlayer) break;
if (ent->m_IDX == interfaces::engineClient->GetLocalPlayer()) break; if (ent->m_IDX == interfaces::engineClient->GetLocalPlayer()) break;
int pclass = ent->Var<int>(eoffsets.iClass); int pclass = ent->Var<int>(netvar.iClass);
int pcond = ent->Var<int>(eoffsets.iCond); int pcond = ent->Var<int>(netvar.iCond);
player_info_t info; player_info_t info;
if (!interfaces::engineClient->GetPlayerInfo(ent->m_IDX, &info)) return; if (!interfaces::engineClient->GetPlayerInfo(ent->m_IDX, &info)) return;
powerup_type power = GetPowerupOnPlayer(ent->m_pEntity); powerup_type power = GetPowerupOnPlayer(ent->m_pEntity);
@ -270,7 +270,7 @@ void ESP::ProcessEntity(CachedEntity* ent) {
case ClassID::CObjectDispenser: case ClassID::CObjectDispenser:
case ClassID::CObjectTeleporter: { case ClassID::CObjectTeleporter: {
if (!ent->m_bEnemy && !v_bTeammates->GetBool()) break; if (!ent->m_bEnemy && !v_bTeammates->GetBool()) break;
int level = ent->Var<int>(eoffsets.iUpgradeLevel); int level = ent->Var<int>(netvar.iUpgradeLevel);
const char* name = (ent->m_iClassID == 89 ? "Teleporter" : (ent->m_iClassID == 88 ? "Sentry Gun" : "Dispenser")); const char* name = (ent->m_iClassID == 89 ? "Teleporter" : (ent->m_iClassID == 88 ? "Sentry Gun" : "Dispenser"));
color = colors::GetTeamColor(ent->m_iTeam, !ent->m_bIsVisible); color = colors::GetTeamColor(ent->m_iTeam, !ent->m_bIsVisible);
if (v_bLegit->GetBool() && ent->m_iTeam != g_pLocalPlayer->team) { if (v_bLegit->GetBool() && ent->m_iTeam != g_pLocalPlayer->team) {

View File

@ -33,7 +33,7 @@ bool FollowBot::ShouldPopUber(bool force) {
IClientEntity* ent = interfaces::entityList->GetClientEntity(i); IClientEntity* ent = interfaces::entityList->GetClientEntity(i);
if (ent == g_pLocalPlayer->entity) continue; if (ent == g_pLocalPlayer->entity) continue;
if (IsFriendlyBot(ent)) { if (IsFriendlyBot(ent)) {
if (GetEntityValue<char>(ent, eoffsets.iLifeState)) continue; if (GetEntityValue<char>(ent, netvar.iLifeState)) continue;
//IClientEntity* medigun; //IClientEntity* medigun;
// TODO // TODO
} }
@ -83,8 +83,8 @@ void FollowBot::ProcessEntity(IClientEntity* entity, bool enemy) {
int FollowBot::ShouldNotTarget(IClientEntity* ent, bool notrace) { int FollowBot::ShouldNotTarget(IClientEntity* ent, bool notrace) {
if (!ent || ent->IsDormant()) return 1; if (!ent || ent->IsDormant()) return 1;
if (ent->GetClientClass()->m_ClassID != 241) return 2; if (ent->GetClientClass()->m_ClassID != 241) return 2;
if (GetEntityValue<char>(ent, eoffsets.iLifeState)) return 3; if (GetEntityValue<char>(ent, netvar.iLifeState)) return 3;
bool enemy = GetEntityValue<int>(ent, eoffsets.iTeamNum) != g_pLocalPlayer->team; bool enemy = GetEntityValue<int>(ent, netvar.iTeamNum) != g_pLocalPlayer->team;
if (enemy) return 4; if (enemy) return 4;
if (!this->IsOwner(ent)) { if (!this->IsOwner(ent)) {
@ -142,15 +142,15 @@ void FollowBot::Tick(CUserCmd* cmd) {
if (!owner_entity) break; if (!owner_entity) break;
//bool owner_zoomed = (GetEntityValue<int>(owner_entity, eoffsets.iCond) & cond::zoomed); //bool owner_zoomed = (GetEntityValue<int>(owner_entity, eoffsets.iCond) & cond::zoomed);
// //
if (IClientEntity* weapon = interfaces::entityList->GetClientEntity(GetEntityValue<int>(owner_entity, eoffsets.hActiveWeapon) & 0xFFF)) { if (IClientEntity* weapon = interfaces::entityList->GetClientEntity(GetEntityValue<int>(owner_entity, netvar.hActiveWeapon) & 0xFFF)) {
if (weapon) { if (weapon) {
if (weapon->GetClientClass()->m_ClassID == ClassID::CTFSniperRifle || weapon->GetClientClass()->m_ClassID == ClassID::CTFSniperRifle) { if (weapon->GetClientClass()->m_ClassID == ClassID::CTFSniperRifle || weapon->GetClientClass()->m_ClassID == ClassID::CTFSniperRifle) {
bool bot_zoomed = (GetEntityValue<int>(g_pLocalPlayer->entity, eoffsets.iCond) & cond::zoomed); bool bot_zoomed = (GetEntityValue<int>(g_pLocalPlayer->entity, netvar.iCond) & cond::zoomed);
if (!bot_zoomed) { if (!bot_zoomed) {
cmd->buttons |= IN_ATTACK2; cmd->buttons |= IN_ATTACK2;
} }
} else { } else {
bool bot_zoomed = (GetEntityValue<int>(g_pLocalPlayer->entity, eoffsets.iCond) & cond::zoomed); bool bot_zoomed = (GetEntityValue<int>(g_pLocalPlayer->entity, netvar.iCond) & cond::zoomed);
if (bot_zoomed) { if (bot_zoomed) {
cmd->buttons |= IN_ATTACK2; cmd->buttons |= IN_ATTACK2;
} }
@ -167,7 +167,7 @@ void FollowBot::Tick(CUserCmd* cmd) {
IClientEntity* healtr = this->GetBestHealingTarget(); IClientEntity* healtr = this->GetBestHealingTarget();
m_hTargetHealing = (healtr ? healtr->entindex() : 0); m_hTargetHealing = (healtr ? healtr->entindex() : 0);
if (healtr) { if (healtr) {
if (GetEntityValue<int>(healtr, eoffsets.iHealth) < 35 && !GetEntityValue<char>(healtr, eoffsets.iLifeState)) { if (GetEntityValue<int>(healtr, netvar.iHealth) < 35 && !GetEntityValue<char>(healtr, netvar.iLifeState)) {
m_iShouldUbercharge = 1; m_iShouldUbercharge = 1;
} }
if (g_pLocalPlayer->health < 35) { if (g_pLocalPlayer->health < 35) {
@ -179,7 +179,7 @@ void FollowBot::Tick(CUserCmd* cmd) {
if (owner_entity && (0 == (g_nTick % 20))) { if (owner_entity && (0 == (g_nTick % 20))) {
static bool forward = false; static bool forward = false;
static bool jump = false; static bool jump = false;
if (!jump && GetEntityValue<Vector>(g_pLocalPlayer->entity, eoffsets.vVelocity).IsZero(10.0f) && !(GetEntityValue<int>(g_pLocalPlayer->entity, eoffsets.iCond) & cond::zoomed)) { if (!jump && GetEntityValue<Vector>(g_pLocalPlayer->entity, netvar.vVelocity).IsZero(10.0f) && !(GetEntityValue<int>(g_pLocalPlayer->entity, netvar.iCond) & cond::zoomed)) {
interfaces::engineClient->ExecuteClientCmd("+jump"); interfaces::engineClient->ExecuteClientCmd("+jump");
jump = true; jump = true;
} else if (jump) { } else if (jump) {
@ -249,8 +249,8 @@ IClientEntity* FollowBot::GetBestHealingTarget() {
for (int i = 0; i < 64 && i < interfaces::entityList->GetHighestEntityIndex(); i++) { for (int i = 0; i < 64 && i < interfaces::entityList->GetHighestEntityIndex(); i++) {
IClientEntity* cur = interfaces::entityList->GetClientEntity(i); IClientEntity* cur = interfaces::entityList->GetClientEntity(i);
if (cur && cur->GetClientClass()->m_ClassID == ClassID::CTFPlayer) { if (cur && cur->GetClientClass()->m_ClassID == ClassID::CTFPlayer) {
if (GetEntityValue<int>(cur, eoffsets.iTeamNum) != g_pLocalPlayer->team) continue; if (GetEntityValue<int>(cur, netvar.iTeamNum) != g_pLocalPlayer->team) continue;
if (GetEntityValue<char>(cur, eoffsets.iLifeState)) continue; if (GetEntityValue<char>(cur, netvar.iLifeState)) continue;
if (cur == g_pLocalPlayer->entity) continue; if (cur == g_pLocalPlayer->entity) continue;
int score = this->GetHealingPriority(cur); int score = this->GetHealingPriority(cur);
if (score > best_score && score != 0) { if (score > best_score && score != 0) {
@ -275,11 +275,11 @@ int FollowBot::GetHealingPriority(IClientEntity* ent) {
if (!ent) return 0; if (!ent) return 0;
int result = 0; int result = 0;
if (GetEntityValue<char>(ent, eoffsets.iLifeState)) return 0; if (GetEntityValue<char>(ent, netvar.iLifeState)) return 0;
if (GetEntityValue<int>(ent, eoffsets.iTeamNum) != g_pLocalPlayer->team) return 0; if (GetEntityValue<int>(ent, netvar.iTeamNum) != g_pLocalPlayer->team) return 0;
if (!IsEntityVisible(ent, 4)) return 0; if (!IsEntityVisible(ent, 4)) return 0;
int health = GetEntityValue<int>(ent, eoffsets.iHealth); int health = GetEntityValue<int>(ent, netvar.iHealth);
int maxhealth = g_pPlayerResource->GetMaxHealth(ent); int maxhealth = g_pPlayerResource->GetMaxHealth(ent);
int maxbuffedhealth = maxhealth * 1.5; int maxbuffedhealth = maxhealth * 1.5;
int maxoverheal = maxbuffedhealth - maxhealth; int maxoverheal = maxbuffedhealth - maxhealth;

View File

@ -208,8 +208,8 @@ void CC_DisonnectVAC(const CCommand& args) {
void CC_DumpAttribs(const CCommand& args) { void CC_DumpAttribs(const CCommand& args) {
if (g_pLocalPlayer->weapon) { if (g_pLocalPlayer->weapon) {
for (int i = 0; i < 15; i++) { for (int i = 0; i < 15; i++) {
logging::Info("%i %f", GetEntityValue<int>(g_pLocalPlayer->weapon, eoffsets.AttributeList + i * 12), logging::Info("%i %f", GetEntityValue<int>(g_pLocalPlayer->weapon, netvar.AttributeList + i * 12),
GetEntityValue<float>(g_pLocalPlayer->weapon, eoffsets.AttributeList + i * 12 + 4)); GetEntityValue<float>(g_pLocalPlayer->weapon, netvar.AttributeList + i * 12 + 4));
} }
} }
} }
@ -285,7 +285,7 @@ bool Misc::CreateMove(void*, float, CUserCmd* cmd) {
//logging::Info("a"); //logging::Info("a");
if (ent->GetClientClass()->m_ClassID != ClassID::CTFPlayer) goto breakif; if (ent->GetClientClass()->m_ClassID != ClassID::CTFPlayer) goto breakif;
//logging::Info("a"); //logging::Info("a");
if (GetEntityValue<int>(ent, eoffsets.iTeamNum) == g_pLocalPlayer->team) goto breakif; if (GetEntityValue<int>(ent, netvar.iTeamNum) == g_pLocalPlayer->team) goto breakif;
//logging::Info("Making string for %i", curindex); //logging::Info("Making string for %i", curindex);
const char* str = MakeInfoString(ent); const char* str = MakeInfoString(ent);
if (str) { if (str) {
@ -309,26 +309,26 @@ void Misc::PaintTraverse(void*, unsigned int, bool, bool) {
if (g_pLocalPlayer->weapon) { if (g_pLocalPlayer->weapon) {
IClientEntity* weapon = g_pLocalPlayer->weapon; IClientEntity* weapon = g_pLocalPlayer->weapon;
AddSideString(draw::white, draw::black, "Weapon: %s [%i]", weapon->GetClientClass()->GetName(), weapon->GetClientClass()->m_ClassID); AddSideString(draw::white, draw::black, "Weapon: %s [%i]", weapon->GetClientClass()->GetName(), weapon->GetClientClass()->m_ClassID);
AddSideString(draw::white, draw::black, "flNextPrimaryAttack: %f", GetEntityValue<float>(g_pLocalPlayer->weapon, eoffsets.flNextPrimaryAttack)); AddSideString(draw::white, draw::black, "flNextPrimaryAttack: %f", GetEntityValue<float>(g_pLocalPlayer->weapon, netvar.flNextPrimaryAttack));
AddSideString(draw::white, draw::black, "nTickBase: %f", (float)(GetEntityValue<int>(g_pLocalPlayer->entity, eoffsets.nTickBase)) * interfaces::gvars->interval_per_tick); AddSideString(draw::white, draw::black, "nTickBase: %f", (float)(GetEntityValue<int>(g_pLocalPlayer->entity, netvar.nTickBase)) * interfaces::gvars->interval_per_tick);
AddSideString(draw::white, draw::black, "CanShoot: %i", BulletTime()); AddSideString(draw::white, draw::black, "CanShoot: %i", BulletTime());
AddSideString(draw::white, draw::black, "Decaps: %i", GetEntityValue<int>(g_pLocalPlayer->entity, eoffsets.iDecapitations)); AddSideString(draw::white, draw::black, "Decaps: %i", GetEntityValue<int>(g_pLocalPlayer->entity, netvar.iDecapitations));
AddSideString(draw::white, draw::black, "Damage: %f", GetEntityValue<float>(g_pLocalPlayer->weapon, eoffsets.flChargedDamage)); AddSideString(draw::white, draw::black, "Damage: %f", GetEntityValue<float>(g_pLocalPlayer->weapon, netvar.flChargedDamage));
AddSideString(draw::white, draw::black, "DefIndex: %i", GetEntityValue<int>(g_pLocalPlayer->weapon, eoffsets.iItemDefinitionIndex)); AddSideString(draw::white, draw::black, "DefIndex: %i", GetEntityValue<int>(g_pLocalPlayer->weapon, netvar.iItemDefinitionIndex));
AddSideString(draw::white, draw::black, "GlobalVars: 0x%08x", interfaces::gvars); AddSideString(draw::white, draw::black, "GlobalVars: 0x%08x", interfaces::gvars);
AddSideString(draw::white, draw::black, "realtime: %f", interfaces::gvars->realtime); AddSideString(draw::white, draw::black, "realtime: %f", interfaces::gvars->realtime);
AddSideString(draw::white, draw::black, "interval_per_tick: %f", interfaces::gvars->interval_per_tick); AddSideString(draw::white, draw::black, "interval_per_tick: %f", interfaces::gvars->interval_per_tick);
AddSideString(draw::white, draw::black, "ambassador_can_headshot: %i", (interfaces::gvars->curtime - GetEntityValue<float>(g_pLocalPlayer->weapon, eoffsets.flLastFireTime)) > 0.95); AddSideString(draw::white, draw::black, "ambassador_can_headshot: %i", (interfaces::gvars->curtime - GetEntityValue<float>(g_pLocalPlayer->weapon, netvar.flLastFireTime)) > 0.95);
AddSideString(draw::white, draw::black, "WeaponMode: %i", GetWeaponMode(g_pLocalPlayer->entity)); AddSideString(draw::white, draw::black, "WeaponMode: %i", GetWeaponMode(g_pLocalPlayer->entity));
AddSideString(draw::white, draw::black, "ToGround: %f", DistanceToGround(g_pLocalPlayer->v_Origin)); AddSideString(draw::white, draw::black, "ToGround: %f", DistanceToGround(g_pLocalPlayer->v_Origin));
AddSideString(draw::white, draw::black, "ServerTime: %f", GetEntityValue<float>(g_pLocalPlayer->entity, eoffsets.nTickBase) * interfaces::gvars->interval_per_tick); AddSideString(draw::white, draw::black, "ServerTime: %f", GetEntityValue<float>(g_pLocalPlayer->entity, netvar.nTickBase) * interfaces::gvars->interval_per_tick);
AddSideString(draw::white, draw::black, "CurTime: %f", interfaces::gvars->curtime); AddSideString(draw::white, draw::black, "CurTime: %f", interfaces::gvars->curtime);
float speed, gravity; float speed, gravity;
GetProjectileData(g_pLocalPlayer->weapon, speed, gravity); GetProjectileData(g_pLocalPlayer->weapon, speed, gravity);
AddSideString(draw::white, draw::black, "Speed: %f", speed); AddSideString(draw::white, draw::black, "Speed: %f", speed);
AddSideString(draw::white, draw::black, "Gravity: %f", gravity); AddSideString(draw::white, draw::black, "Gravity: %f", gravity);
AddSideString(draw::white, draw::black, "IsZoomed: %i", g_pLocalPlayer->bWasZoomed); AddSideString(draw::white, draw::black, "IsZoomed: %i", g_pLocalPlayer->bWasZoomed);
AddSideString(draw::white, draw::black, "???: %f", GetEntityValue<float>(g_pLocalPlayer->entity, eoffsets.test)); AddSideString(draw::white, draw::black, "???: %f", GetEntityValue<float>(g_pLocalPlayer->entity, netvar.test));
//AddSideString(draw::white, draw::black, "VecPunchAngle: %f %f %f", pa.x, pa.y, pa.z); //AddSideString(draw::white, draw::black, "VecPunchAngle: %f %f %f", pa.x, pa.y, pa.z);
//draw::DrawString(10, y, draw::white, draw::black, false, "VecPunchAngleVel: %f %f %f", pav.x, pav.y, pav.z); //draw::DrawString(10, y, draw::white, draw::black, false, "VecPunchAngleVel: %f %f %f", pav.x, pav.y, pav.z);
//y += 14; //y += 14;

View File

@ -29,9 +29,9 @@ void SpyAlert::PaintTraverse(void*, unsigned int, bool, bool) {
for (int i = 0; i < interfaces::entityList->GetHighestEntityIndex() && i < 64; i++) { for (int i = 0; i < interfaces::entityList->GetHighestEntityIndex() && i < 64; i++) {
IClientEntity* ent = interfaces::entityList->GetClientEntity(i); IClientEntity* ent = interfaces::entityList->GetClientEntity(i);
if (!ent) continue; if (!ent) continue;
if (GetEntityValue<char>(ent, eoffsets.iLifeState)) continue; if (GetEntityValue<char>(ent, netvar.iLifeState)) continue;
if (GetEntityValue<int>(ent, eoffsets.iClass) != tf_class::tf_spy) continue; if (GetEntityValue<int>(ent, netvar.iClass) != tf_class::tf_spy) continue;
if (GetEntityValue<int>(ent, eoffsets.iTeamNum) == g_pLocalPlayer->team) continue; if (GetEntityValue<int>(ent, netvar.iTeamNum) == g_pLocalPlayer->team) continue;
Vector spypos = ent->GetAbsOrigin(); Vector spypos = ent->GetAbsOrigin();
Vector mypos = g_pLocalPlayer->v_Origin; Vector mypos = g_pLocalPlayer->v_Origin;
float distance = spypos.DistTo(mypos); float distance = spypos.DistTo(mypos);

View File

@ -60,21 +60,21 @@ bool Triggerbot::CreateMove(void* thisptr, float sampl, CUserCmd* cmd) {
if (!entity) return true; if (!entity) return true;
bool isPlayer = false; bool isPlayer = false;
switch (entity->GetClientClass()->m_ClassID) { switch (entity->GetClientClass()->m_ClassID) {
case 241: case ClassID::CTFPlayer:
isPlayer = true; isPlayer = true;
break; break;
case 89: case ClassID::CObjectTeleporter:
case 88: case ClassID::CObjectSentrygun:
case 86: case ClassID::CObjectDispenser:
if (!this->v_bBuildings->GetBool()) { if (!this->v_bBuildings->GetBool()) {
return true; return true;
} }
break; break;
default: default:
return true; return true;
}; // TODO magic number };
int team = g_pLocalPlayer->team; int team = g_pLocalPlayer->team;
int eteam = GetEntityValue<int>(entity, eoffsets.iTeamNum); int eteam = GetEntityValue<int>(entity, netvar.iTeamNum);
if (team == eteam) return true; if (team == eteam) return true;
Vector enemy_pos = entity->GetAbsOrigin(); Vector enemy_pos = entity->GetAbsOrigin();
Vector my_pos = g_pLocalPlayer->entity->GetAbsOrigin(); Vector my_pos = g_pLocalPlayer->entity->GetAbsOrigin();
@ -88,8 +88,8 @@ bool Triggerbot::CreateMove(void* thisptr, float sampl, CUserCmd* cmd) {
if (GetRelation(entity) == relation::FRIEND) return true; if (GetRelation(entity) == relation::FRIEND) return true;
if (IsPlayerInvulnerable(entity)) return true; if (IsPlayerInvulnerable(entity)) return true;
if (!this->v_bIgnoreCloak->GetBool() && if (!this->v_bIgnoreCloak->GetBool() &&
((GetEntityValue<int>(entity, eoffsets.iCond)) & cond::cloaked)) return true; ((GetEntityValue<int>(entity, netvar.iCond)) & cond::cloaked)) return true;
int health = GetEntityValue<int>(entity, eoffsets.iHealth); int health = GetEntityValue<int>(entity, netvar.iHealth);
bool bodyshot = false; bool bodyshot = false;
if (g_pLocalPlayer->clazz == tf_class::tf_sniper) { if (g_pLocalPlayer->clazz == tf_class::tf_sniper) {
// If sniper.. // If sniper..
@ -98,7 +98,7 @@ bool Triggerbot::CreateMove(void* thisptr, float sampl, CUserCmd* cmd) {
} }
// If we need charge... // If we need charge...
if (!bodyshot && this->v_bBodyshot->GetBool()) { if (!bodyshot && this->v_bBodyshot->GetBool()) {
float bdmg = GetEntityValue<float>(g_pLocalPlayer->weapon, eoffsets.flChargedDamage); float bdmg = GetEntityValue<float>(g_pLocalPlayer->weapon, netvar.flChargedDamage);
if (CanHeadshot(g_pLocalPlayer->entity) && (bdmg) >= health) { if (CanHeadshot(g_pLocalPlayer->entity) && (bdmg) >= health) {
bodyshot = true; bodyshot = true;
} }

View File

@ -26,8 +26,8 @@ void EndConVars() {
bool IsPlayerInvulnerable(IClientEntity* player) { bool IsPlayerInvulnerable(IClientEntity* player) {
int cond1 = GetEntityValue<int>(player, eoffsets.iCond); int cond1 = GetEntityValue<int>(player, netvar.iCond);
int cond2 = GetEntityValue<int>(player, eoffsets.iCond1); int cond2 = GetEntityValue<int>(player, netvar.iCond1);
int uber_mask_1 = (cond::uber | cond::bonk); int uber_mask_1 = (cond::uber | cond::bonk);
int uber_mask_2 = (cond_ex::hidden_uber | cond_ex::canteen_uber | cond_ex::misc_uber | cond_ex::phlog_uber); int uber_mask_2 = (cond_ex::hidden_uber | cond_ex::canteen_uber | cond_ex::misc_uber | cond_ex::phlog_uber);
if ((cond1 & uber_mask_1) || (cond2 & uber_mask_2)) { if ((cond1 & uber_mask_1) || (cond2 & uber_mask_2)) {
@ -39,9 +39,9 @@ bool IsPlayerInvulnerable(IClientEntity* player) {
} }
bool IsPlayerCritBoosted(IClientEntity* player) { bool IsPlayerCritBoosted(IClientEntity* player) {
int cond1 = GetEntityValue<int>(player, eoffsets.iCond); int cond1 = GetEntityValue<int>(player, netvar.iCond);
int cond2 = GetEntityValue<int>(player, eoffsets.iCond1); int cond2 = GetEntityValue<int>(player, netvar.iCond1);
int cond4 = GetEntityValue<int>(player, eoffsets.iCond3); int cond4 = GetEntityValue<int>(player, netvar.iCond3);
int crit_mask_1 = (cond::kritzkrieg); int crit_mask_1 = (cond::kritzkrieg);
int crit_mask_2 = (cond_ex::halloween_crit | cond_ex::canteen_crit | cond_ex::first_blood_crit | cond_ex::winning_crit | int crit_mask_2 = (cond_ex::halloween_crit | cond_ex::canteen_crit | cond_ex::first_blood_crit | cond_ex::winning_crit |
cond_ex::intelligence_crit | cond_ex::on_kill_crit | cond_ex::phlog_crit | cond_ex::misc_crit); cond_ex::intelligence_crit | cond_ex::on_kill_crit | cond_ex::phlog_crit | cond_ex::misc_crit);
@ -197,8 +197,8 @@ powerup_type GetPowerupType(IClientEntity* ent) {
powerup_type GetPowerupOnPlayer(IClientEntity* player) { powerup_type GetPowerupOnPlayer(IClientEntity* player) {
if (!player) return powerup_type::not_powerup; if (!player) return powerup_type::not_powerup;
uint32_t cond2 = GetEntityValue<uint32_t>(player, eoffsets.iCond2); uint32_t cond2 = GetEntityValue<uint32_t>(player, netvar.iCond2);
uint32_t cond3 = GetEntityValue<uint32_t>(player, eoffsets.iCond3); uint32_t cond3 = GetEntityValue<uint32_t>(player, netvar.iCond3);
//if (!(cond2 & cond_ex2::powerup_generic)) return powerup_type::not_powerup; //if (!(cond2 & cond_ex2::powerup_generic)) return powerup_type::not_powerup;
if (cond2 & cond_ex2::powerup_strength) return powerup_type::strength; if (cond2 & cond_ex2::powerup_strength) return powerup_type::strength;
if (cond2 & cond_ex2::powerup_haste) return powerup_type::haste; if (cond2 & cond_ex2::powerup_haste) return powerup_type::haste;
@ -231,7 +231,7 @@ int GetHitboxPosition(IClientEntity* entity, int hb, Vector& out) {
if (!shdr) return 2; if (!shdr) return 2;
// TODO rewrite // TODO rewrite
mstudiohitboxset_t* set = shdr->pHitboxSet(GetEntityValue<int>(entity, eoffsets.iHitboxSet)); mstudiohitboxset_t* set = shdr->pHitboxSet(GetEntityValue<int>(entity, netvar.iHitboxSet));
if (!set) return 4; if (!set) return 4;
mstudiobbox_t* box = set->pHitbox(hb); mstudiobbox_t* box = set->pHitbox(hb);
if (!box) return 5; if (!box) return 5;
@ -314,7 +314,7 @@ bool IsEntityVisible(IClientEntity* entity, int hb) {
//logging::Info("Couldn't get hitbox position: %i", hb); //logging::Info("Couldn't get hitbox position: %i", hb);
return false; return false;
} }
ray.Init(local->GetAbsOrigin() + GetEntityValue<Vector>(local, eoffsets.vViewOffset), hit); ray.Init(local->GetAbsOrigin() + GetEntityValue<Vector>(local, netvar.vViewOffset), hit);
interfaces::trace->TraceRay(ray, 0x4200400B, trace_filter, &trace_visible); interfaces::trace->TraceRay(ray, 0x4200400B, trace_filter, &trace_visible);
if (trace_visible.m_pEnt) { if (trace_visible.m_pEnt) {
return ((IClientEntity*)trace_visible.m_pEnt) == entity; return ((IClientEntity*)trace_visible.m_pEnt) == entity;
@ -332,7 +332,7 @@ Vector GetBuildingPosition(IClientEntity* ent) {
res.z += 8; res.z += 8;
break; break;
case ClassID::CObjectSentrygun: case ClassID::CObjectSentrygun:
switch (GetEntityValue<int>(ent, eoffsets.iUpgradeLevel)) { switch (GetEntityValue<int>(ent, netvar.iUpgradeLevel)) {
case 1: case 1:
res.z += 30; res.z += 30;
break; break;
@ -411,8 +411,8 @@ float DistToSqr(IClientEntity* entity) {
weaponmode GetWeaponMode(IClientEntity* player) { weaponmode GetWeaponMode(IClientEntity* player) {
if (!player) return weapon_invalid; if (!player) return weapon_invalid;
int weapon_handle = GetEntityValue<int>(player, eoffsets.hActiveWeapon); int weapon_handle = GetEntityValue<int>(player, netvar.hActiveWeapon);
if (weapon_handle == GetEntityValue<int>(player, eoffsets.hMyWeapons + sizeof(int) * 2)) return weaponmode::weapon_melee; if (weapon_handle == GetEntityValue<int>(player, netvar.hMyWeapons + sizeof(int) * 2)) return weaponmode::weapon_melee;
IClientEntity* weapon = interfaces::entityList->GetClientEntity(weapon_handle & 0xFFF); IClientEntity* weapon = interfaces::entityList->GetClientEntity(weapon_handle & 0xFFF);
if (!weapon) return weaponmode::weapon_invalid; if (!weapon) return weaponmode::weapon_invalid;
switch (weapon->GetClientClass()->m_ClassID) { switch (weapon->GetClientClass()->m_ClassID) {
@ -431,9 +431,9 @@ weaponmode GetWeaponMode(IClientEntity* player) {
case ClassID::CTFSyringeGun: case ClassID::CTFSyringeGun:
return weaponmode::weapon_projectile; return weaponmode::weapon_projectile;
}; };
if (weapon_handle == GetEntityValue<int>(player, eoffsets.hMyWeapons + sizeof(int) * 3)) return weaponmode::weapon_pda; if (weapon_handle == GetEntityValue<int>(player, netvar.hMyWeapons + sizeof(int) * 3)) return weaponmode::weapon_pda;
if (GetEntityValue<int>(player, eoffsets.iClass) == tf_class::tf_medic) { if (GetEntityValue<int>(player, netvar.iClass) == tf_class::tf_medic) {
if (weapon_handle == GetEntityValue<int>(player, eoffsets.hMyWeapons + sizeof(int) * 1)) return weaponmode::weapon_medigun; if (weapon_handle == GetEntityValue<int>(player, netvar.hMyWeapons + sizeof(int) * 1)) return weaponmode::weapon_medigun;
} }
return weaponmode::weapon_hitscan; return weaponmode::weapon_hitscan;
} }
@ -455,7 +455,7 @@ bool GetProjectileData(IClientEntity* weapon, float& speed, float& gravity) {
rspeed = ((GetProjectileData*) *(*(const void ***) weapon + 528))(weapon); rspeed = ((GetProjectileData*) *(*(const void ***) weapon + 528))(weapon);
break; break;
case ClassID::CTFCompoundBow: { case ClassID::CTFCompoundBow: {
float servertime = (float)GetEntityValue<int>(g_pLocalPlayer->entity, eoffsets.nTickBase) * interfaces::gvars->interval_per_tick; float servertime = (float)GetEntityValue<int>(g_pLocalPlayer->entity, netvar.nTickBase) * interfaces::gvars->interval_per_tick;
float curtime_old = interfaces::gvars->curtime; float curtime_old = interfaces::gvars->curtime;
interfaces::gvars->curtime = servertime; interfaces::gvars->curtime = servertime;
rspeed = ((GetProjectileData*) *(*(const void ***) weapon + 527))(weapon); rspeed = ((GetProjectileData*) *(*(const void ***) weapon + 527))(weapon);
@ -487,16 +487,16 @@ const char* MakeInfoString(IClientEntity* player) {
player_info_t info; player_info_t info;
if (!interfaces::engineClient->GetPlayerInfo(player->entindex(), &info)) return (const char*)0; if (!interfaces::engineClient->GetPlayerInfo(player->entindex(), &info)) return (const char*)0;
logging::Info("a"); logging::Info("a");
int hWeapon = GetEntityValue<int>(player, eoffsets.hActiveWeapon); int hWeapon = GetEntityValue<int>(player, netvar.hActiveWeapon);
if (GetEntityValue<char>(player, eoffsets.iLifeState)) { if (GetEntityValue<char>(player, netvar.iLifeState)) {
sprintf(buf, "%s is dead %s", info.name, tfclasses[GetEntityValue<int>(player, eoffsets.iClass)]); sprintf(buf, "%s is dead %s", info.name, tfclasses[GetEntityValue<int>(player, netvar.iClass)]);
return buf; return buf;
} }
if (hWeapon) { if (hWeapon) {
IClientEntity* weapon = interfaces::entityList->GetClientEntity(hWeapon & 0xFFF); IClientEntity* weapon = interfaces::entityList->GetClientEntity(hWeapon & 0xFFF);
sprintf(buf, "%s is %s with %i health using %s", info.name, tfclasses[GetEntityValue<int>(player, eoffsets.iClass)], GetEntityValue<int>(player, eoffsets.iHealth), weapon->GetClientClass()->GetName()); sprintf(buf, "%s is %s with %i health using %s", info.name, tfclasses[GetEntityValue<int>(player, netvar.iClass)], GetEntityValue<int>(player, netvar.iHealth), weapon->GetClientClass()->GetName());
} else { } else {
sprintf(buf, "%s is %s with %i health", info.name, tfclasses[GetEntityValue<int>(player, eoffsets.iClass)], GetEntityValue<int>(player, eoffsets.iHealth)); sprintf(buf, "%s is %s with %i health", info.name, tfclasses[GetEntityValue<int>(player, netvar.iClass)], GetEntityValue<int>(player, netvar.iHealth));
} }
logging::Info("Result: %s", buf); logging::Info("Result: %s", buf);
return buf; return buf;
@ -561,14 +561,13 @@ relation GetRelation(IClientEntity* ent) {
} }
bool IsSentryBuster(IClientEntity* entity) { bool IsSentryBuster(IClientEntity* entity) {
// TODO return (entity && entity->GetClientClass()->m_ClassID == ClassID::CTFPlayer && GetEntityValue<int>(entity, netvar.iClass) == tf_class::tf_demoman && g_pPlayerResource->GetMaxHealth(entity) == 2500);
return (entity && entity->GetClientClass()->m_ClassID == ClassID::CTFPlayer && GetEntityValue<int>(entity, eoffsets.iClass) == tf_class::tf_demoman && g_pPlayerResource->GetMaxHealth(entity) == 2500);
} }
bool IsAmbassador(IClientEntity* entity) { bool IsAmbassador(IClientEntity* entity) {
if (!entity) return false; if (!entity) return false;
if (entity->GetClientClass()->m_ClassID != ClassID::CTFRevolver) return false; if (entity->GetClientClass()->m_ClassID != ClassID::CTFRevolver) return false;
int defidx = GetEntityValue<int>(entity, eoffsets.iItemDefinitionIndex); int defidx = GetEntityValue<int>(entity, netvar.iItemDefinitionIndex);
switch (defidx) { switch (defidx) {
case 61: case 61:
case 1006: case 1006:
@ -638,12 +637,11 @@ bool CanHeadshot(IClientEntity* player) {
} }
bool BulletTime() { bool BulletTime() {
float tickbase = (float)(GetEntityValue<int>(g_pLocalPlayer->entity, eoffsets.nTickBase)) * interfaces::gvars->interval_per_tick; float tickbase = (float)(GetEntityValue<int>(g_pLocalPlayer->entity, netvar.nTickBase)) * interfaces::gvars->interval_per_tick;
float nextattack = GetEntityValue<float>(g_pLocalPlayer->weapon, eoffsets.flNextPrimaryAttack); float nextattack = GetEntityValue<float>(g_pLocalPlayer->weapon, netvar.flNextPrimaryAttack);
return nextattack <= tickbase; return nextattack <= tickbase;
} }
// TODO casting
QAngle VectorToQAngle(Vector in) { QAngle VectorToQAngle(Vector in) {
return *(QAngle*)&in; return *(QAngle*)&in;
} }
@ -681,7 +679,7 @@ bool IsEntityVisiblePenetration(IClientEntity* entity, int hb) {
if (ret) { if (ret) {
return false; return false;
} }
ray.Init(local->GetAbsOrigin() + GetEntityValue<Vector>(local, eoffsets.vViewOffset), hit); ray.Init(local->GetAbsOrigin() + GetEntityValue<Vector>(local, netvar.vViewOffset), hit);
interfaces::trace->TraceRay(ray, 0x4200400B, trace::g_pFilterPenetration, &trace_visible); interfaces::trace->TraceRay(ray, 0x4200400B, trace::g_pFilterPenetration, &trace_visible);
bool s = false; bool s = false;
if (trace_visible.m_pEnt) { if (trace_visible.m_pEnt) {
@ -752,7 +750,7 @@ void RunEnginePrediction(IClientEntity* ent, CUserCmd *ucmd) {
SetEntityValue<void *>(ent, 0x105C, ucmd); SetEntityValue<void *>(ent, 0x105C, ucmd);
// set up the globals // set up the globals
interfaces::gvars->curtime = interfaces::gvars->interval_per_tick * GetEntityValue<int>(ent, eoffsets.nTickBase); interfaces::gvars->curtime = interfaces::gvars->interval_per_tick * GetEntityValue<int>(ent, netvar.nTickBase);
interfaces::gvars->frametime = interfaces::gvars->interval_per_tick; interfaces::gvars->frametime = interfaces::gvars->interval_per_tick;
oStartTrackPredictionErrors(ent); oStartTrackPredictionErrors(ent);

View File

@ -68,7 +68,6 @@ void hooks::VMTHook::Apply() {
*vmt = array + 3; *vmt = array + 3;
} }
// TODO rename these
hooks::VMTHook* hooks::hkClientMode = 0; hooks::VMTHook* hooks::hkClientMode = 0;
hooks::VMTHook* hooks::hkPanel = 0; hooks::VMTHook* hooks::hkPanel = 0;
hooks::VMTHook* hooks::hkClient = 0; hooks::VMTHook* hooks::hkClient = 0;

View File

@ -11,14 +11,14 @@
void LocalPlayer::Update() { void LocalPlayer::Update() {
entity_idx = interfaces::engineClient->GetLocalPlayer(); entity_idx = interfaces::engineClient->GetLocalPlayer();
entity = interfaces::entityList->GetClientEntity(entity_idx); entity = interfaces::entityList->GetClientEntity(entity_idx);
team = GetEntityValue<int>(entity, eoffsets.iTeamNum); team = GetEntityValue<int>(entity, netvar.iTeamNum);
life_state = GetEntityValue<char>(entity, eoffsets.iLifeState); life_state = GetEntityValue<char>(entity, netvar.iLifeState);
v_ViewOffset = GetEntityValue<Vector>(entity, eoffsets.vViewOffset); v_ViewOffset = GetEntityValue<Vector>(entity, netvar.vViewOffset);
v_Origin = entity->GetAbsOrigin(); v_Origin = entity->GetAbsOrigin();
v_Eye = v_Origin + v_ViewOffset; v_Eye = v_Origin + v_ViewOffset;
cond_0 = GetEntityValue<int>(entity, eoffsets.iCond); cond_0 = GetEntityValue<int>(entity, netvar.iCond);
clazz = GetEntityValue<int>(entity, eoffsets.iClass); clazz = GetEntityValue<int>(entity, netvar.iClass);
health = GetEntityValue<int>(entity, eoffsets.iHealth); health = GetEntityValue<int>(entity, netvar.iHealth);
this->bUseSilentAngles = false; this->bUseSilentAngles = false;
if (cond_0 & cond::zoomed) { if (cond_0 & cond::zoomed) {
if (flZoomBegin == 0.0f) flZoomBegin = interfaces::gvars->curtime; if (flZoomBegin == 0.0f) flZoomBegin = interfaces::gvars->curtime;
@ -27,10 +27,10 @@ void LocalPlayer::Update() {
} }
int hWeapon = GetEntityValue<int>(entity, eoffsets.hActiveWeapon); int hWeapon = GetEntityValue<int>(entity, netvar.hActiveWeapon);
if (hWeapon) { if (hWeapon) {
weapon = interfaces::entityList->GetClientEntity(hWeapon & 0xFFF); weapon = interfaces::entityList->GetClientEntity(hWeapon & 0xFFF);
bIsReloading = (GetEntityValue<int>(weapon, eoffsets.iReloadMode) == 1); bIsReloading = (GetEntityValue<int>(weapon, netvar.iReloadMode) == 1);
} else { } else {
weapon = 0; weapon = 0;
bIsReloading = false; bIsReloading = false;

View File

@ -27,7 +27,7 @@ int TFPlayerResource::GetMaxHealth(IClientEntity* player) {
if (!m_pEntity) return 0; if (!m_pEntity) return 0;
int idx = player->entindex(); int idx = player->entindex();
if (idx >= 64 || idx < 0) return 0; if (idx >= 64 || idx < 0) return 0;
return *(int*)((unsigned int)m_pEntity + eoffsets.iMaxHealth + 4 * idx); return *(int*)((unsigned int)m_pEntity + netvar.iMaxHealth + 4 * idx);
} }
int TFPlayerResource::GetMaxBuffedHealth(IClientEntity* player) { int TFPlayerResource::GetMaxBuffedHealth(IClientEntity* player) {
@ -35,7 +35,7 @@ int TFPlayerResource::GetMaxBuffedHealth(IClientEntity* player) {
if (!m_pEntity) return 0; if (!m_pEntity) return 0;
int idx = player->entindex(); int idx = player->entindex();
if (idx >= 64 || idx < 0) return 0; if (idx >= 64 || idx < 0) return 0;
return *(int*)((unsigned int)m_pEntity + eoffsets.iMaxBuffedHealth + 4 * idx); return *(int*)((unsigned int)m_pEntity + netvar.iMaxBuffedHealth + 4 * idx);
} }

View File

@ -17,7 +17,7 @@ Vector SimpleLatencyPrediction(IClientEntity* ent, int hb) {
GetHitboxPosition(ent, hb, result); GetHitboxPosition(ent, hb, result);
float latency = interfaces::engineClient->GetNetChannelInfo()->GetLatency(FLOW_OUTGOING) + float latency = interfaces::engineClient->GetNetChannelInfo()->GetLatency(FLOW_OUTGOING) +
interfaces::engineClient->GetNetChannelInfo()->GetLatency(FLOW_INCOMING); interfaces::engineClient->GetNetChannelInfo()->GetLatency(FLOW_INCOMING);
result += GetEntityValue<Vector>(ent, eoffsets.vVelocity) * latency; result += GetEntityValue<Vector>(ent, netvar.vVelocity) * latency;
//logging::Info("Returning!"); //logging::Info("Returning!");
return result; return result;
} }
@ -27,7 +27,7 @@ Vector ProjectilePrediction(IClientEntity* ent, int hb, float speed, float gravi
Vector result = ent->GetAbsOrigin(); Vector result = ent->GetAbsOrigin();
float dtg = DistanceToGround(result); float dtg = DistanceToGround(result);
GetHitboxPosition(ent, hb, result); GetHitboxPosition(ent, hb, result);
Vector vel = GetEntityValue<Vector>(ent, eoffsets.vVelocity); Vector vel = GetEntityValue<Vector>(ent, netvar.vVelocity);
// TODO ProjAim // TODO ProjAim
/*float tt = g_pLocalPlayer->v_Eye.DistTo(result) + interfaces::engineClient->GetNetChannelInfo()->GetLatency(FLOW_OUTGOING) + /*float tt = g_pLocalPlayer->v_Eye.DistTo(result) + interfaces::engineClient->GetNetChannelInfo()->GetLatency(FLOW_OUTGOING) +
interfaces::engineClient->GetNetChannelInfo()->GetLatency(FLOW_INCOMING) - 0.20; interfaces::engineClient->GetNetChannelInfo()->GetLatency(FLOW_INCOMING) - 0.20;
@ -42,7 +42,7 @@ Vector ProjectilePrediction(IClientEntity* ent, int hb, float speed, float gravi
float ttt = dtt / speed + interfaces::engineClient->GetNetChannelInfo()->GetLatency(FLOW_OUTGOING) + float ttt = dtt / speed + interfaces::engineClient->GetNetChannelInfo()->GetLatency(FLOW_OUTGOING) +
interfaces::engineClient->GetNetChannelInfo()->GetLatency(FLOW_INCOMING); interfaces::engineClient->GetNetChannelInfo()->GetLatency(FLOW_INCOMING);
float oz = result.z; float oz = result.z;
int flags = GetEntityValue<int>(ent, eoffsets.iFlags); int flags = GetEntityValue<int>(ent, netvar.iFlags);
bool ground = (flags & (1 << 0)); bool ground = (flags & (1 << 0));
if (!ground) result.z -= ttt * ttt * 400; if (!ground) result.z -= ttt * ttt * 400;
result += vel * ttt; result += vel * ttt;

View File

@ -39,12 +39,12 @@ int GetScoreForEntity(IClientEntity* entity) {
} }
return 0; return 0;
} }
int clazz = GetEntityValue<int>(entity, eoffsets.iClass); int clazz = GetEntityValue<int>(entity, netvar.iClass);
int health = GetEntityValue<int>(entity, eoffsets.iHealth); int health = GetEntityValue<int>(entity, netvar.iHealth);
float distance = (g_pLocalPlayer->v_Origin - entity->GetAbsOrigin()).Length(); float distance = (g_pLocalPlayer->v_Origin - entity->GetAbsOrigin()).Length();
bool zoomed = (GetEntityValue<int>(entity, eoffsets.iCond) & cond::zoomed); bool zoomed = (GetEntityValue<int>(entity, netvar.iCond) & cond::zoomed);
int condx = (GetEntityValue<int>(entity, eoffsets.iCond1)); int condx = (GetEntityValue<int>(entity, netvar.iCond1));
int condx2 = (GetEntityValue<int>(entity, eoffsets.iCond2)); int condx2 = (GetEntityValue<int>(entity, netvar.iCond2));
bool pbullet = (condx & cond_ex::vacc_pbullet); bool pbullet = (condx & cond_ex::vacc_pbullet);
bool special = false; bool special = false;
bool kritz = IsPlayerCritBoosted(entity); bool kritz = IsPlayerCritBoosted(entity);