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
Anti Backstab
Critical rifles bodyshotting
FLAG ESP
Hitbox position cache
Spy alert uses angles
More esp tweaking

View File

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

View File

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

View File

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

View File

@ -13,7 +13,6 @@ class ConVar;
class GlobalSettings {
public:
void Init();
// TODO
ConVar* flForceFOV;
ConVar* bHackEnabled;
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) {
if (g_pLocalPlayer->entity) {
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);
@ -231,7 +231,7 @@ bool hack::Hk_CreateMove(void* thisptr, float inputSample, CUserCmd* cmd) {
}*/
if (g_pLocalPlayer->entity) {
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);
// Ambassador to festive ambassador changer. simple.
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) {
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);
if (stage == 5 && g_Settings.bNoFlinch->GetBool()) {
static Vector oldPunchAngles = Vector();
Vector punchAngles = GetEntityValue<Vector>(g_pLocalPlayer->entity, eoffsets.vecPunchAngle);
Vector punchAngles = GetEntityValue<Vector>(g_pLocalPlayer->entity, netvar.vecPunchAngle);
QAngle viewAngles;
interfaces::engineClient->GetViewAngles(viewAngles);
viewAngles -= VectorToQAngle(punchAngles - oldPunchAngles);
@ -271,8 +271,8 @@ void hack::Hk_FrameStageNotify(void* thisptr, int stage) {
if (g_Settings.bNoZoom->GetBool()) {
if (g_pLocalPlayer->entity) {
g_pLocalPlayer->bWasZoomed = GetEntityValue<int>(g_pLocalPlayer->entity, eoffsets.iCond) & cond::zoomed;
SetEntityValue(g_pLocalPlayer->entity, eoffsets.iCond, g_pLocalPlayer->cond_0 &~ cond::zoomed);
g_pLocalPlayer->bWasZoomed = GetEntityValue<int>(g_pLocalPlayer->entity, netvar.iCond) & cond::zoomed;
SetEntityValue(g_pLocalPlayer->entity, netvar.iCond, g_pLocalPlayer->cond_0 &~ cond::zoomed);
}
}
}
@ -311,14 +311,9 @@ void hack::InitHacks() {
void hack::Initialize() {
logging::Initialize();
//std::string test = "";
logging::Info("Build: " __DATE__ " " __TIME__);
logging::Info("Loading shared objects...");
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...");
interfaces::CreateInterfaces();
logging::Info("Interfaces created!");
@ -368,8 +363,6 @@ void hack::Initialize() {
}
void hack::Think() {
//logging::Info("Hack::Think");
// Fucking TODo
usleep(250000);
}

View File

@ -52,7 +52,7 @@ Aimbot::Aimbot() {
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_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_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");
@ -118,7 +118,7 @@ bool Aimbot::CreateMove(void*, float, CUserCmd* cmd) {
}
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;
}
}
@ -218,9 +218,9 @@ bool Aimbot::CreateMove(void*, float, CUserCmd* cmd) {
case 3: {
float scr;
if (IsBuilding(ent)) {
scr = 450.0f - GetEntityValue<int>(ent, eoffsets.iBuildingHealth);
scr = 450.0f - GetEntityValue<int>(ent, netvar.iBuildingHealth);
} else {
scr = 450.0f - GetEntityValue<int>(ent, eoffsets.iHealth);
scr = 450.0f - GetEntityValue<int>(ent, netvar.iHealth);
}
if (scr > target_highest_score) {
target_highest_score = scr;
@ -244,13 +244,13 @@ void Aimbot::PaintTraverse(void*, unsigned int, bool, bool) {
IClientEntity* ent = interfaces::entityList->GetClientEntity(this->m_iLastTarget);
if (!ent) return;
if (IsPlayer(ent)) {
int clazz = GetEntityValue<int>(ent, eoffsets.iClass);
int clazz = GetEntityValue<int>(ent, netvar.iClass);
if (clazz < 0 || clazz > 9) return;
player_info_t info;
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)) {
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 (IsPlayer(entity)) {
if (IsPlayerInvulnerable(entity)) return false;
int team = GetEntityValue<int>(entity, eoffsets.iTeamNum);
int team = GetEntityValue<int>(entity, netvar.iTeamNum);
int local = interfaces::engineClient->GetLocalPlayer();
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 (!player) return false;
if (v_bRespectCloak->GetBool() && (GetEntityValue<int>(entity, eoffsets.iCond) & cond::cloaked)) return false;
int health = GetEntityValue<int>(entity, eoffsets.iHealth);
if (v_bRespectCloak->GetBool() && (GetEntityValue<int>(entity, netvar.iCond) & cond::cloaked)) return false;
int health = GetEntityValue<int>(entity, netvar.iHealth);
/*if (this->v_bCharge->GetBool() && (GetEntityValue<int>(player, eoffsets.iClass) == 2)) {
int rifleHandle = GetEntityValue<int>(player, eoffsets.hActiveWeapon);
IClientEntity* rifle = interfaces::entityList->GetClientEntity(rifleHandle & 0xFFF);
@ -275,14 +275,14 @@ bool Aimbot::ShouldTarget(IClientEntity* entity) {
float bdmg = GetEntityValue<float>(rifle, eoffsets.flChargedDamage);
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;
Vector enemy_pos = entity->GetAbsOrigin();
Vector my_pos = player->GetAbsOrigin();
if (v_iMinRange->GetInt() > 0) {
if ((enemy_pos - my_pos).Length() > v_iMinRange->GetInt()) return false;
if (v_iMaxRange->GetInt() > 0) {
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 (GetRelation(entity) == relation::FRIEND) return false;
Vector resultAim;
@ -301,11 +301,11 @@ bool Aimbot::ShouldTarget(IClientEntity* entity) {
return true;
} else if (IsBuilding(entity)) {
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;
Vector enemy_pos = entity->GetAbsOrigin();
if (v_iMinRange->GetInt() > 0) {
if ((enemy_pos - g_pLocalPlayer->v_Origin).Length() > v_iMinRange->GetInt()) return false;
if (v_iMaxRange->GetInt() > 0) {
if ((enemy_pos - g_pLocalPlayer->v_Origin).Length() > v_iMaxRange->GetInt()) return false;
}
Vector resultAim;
// 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->cond_0 & cond::zoomed) {
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);
float bdmg = GetEntityValue<float>(rifle, eoffsets.flChargedDamage);
float bdmg = GetEntityValue<float>(rifle, netvar.flChargedDamage);
if (bdmg < this->v_iAutoShootCharge->GetFloat()) return true;
} else {
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) {
float begincharge = GetEntityValue<float>(g_pLocalPlayer->weapon, eoffsets.flChargeBeginTime);
float begincharge = GetEntityValue<float>(g_pLocalPlayer->weapon, netvar.flChargeBeginTime);
float charge = 0;
if (begincharge != 0) {
charge = interfaces::gvars->curtime - begincharge;

View File

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

View File

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

View File

@ -26,8 +26,8 @@ void AntiDisguise::PaintTraverse(void*, unsigned int, bool, bool) {
IClientEntity* ent = interfaces::entityList->GetClientEntity(i);
if (!ent) continue;
if (ent->GetClientClass()->m_ClassID == ClassID::CTFPlayer) {
if (GetEntityValue<int>(ent, eoffsets.iClass) == tf_class::tf_spy) {
SetEntityValue<int>(ent, eoffsets.iCond, GetEntityValue<int>(ent, eoffsets.iCond) &~ cond::disguised);
if (GetEntityValue<int>(ent, netvar.iClass) == tf_class::tf_spy) {
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;
IClientEntity* ent = interfaces::entityList->GetClientEntity(idx);
int priority = 0;
int health = GetEntityValue<int>(ent, eoffsets.iHealth);
int health = GetEntityValue<int>(ent, netvar.iHealth);
int maxhealth = g_pPlayerResource->GetMaxHealth(ent);
int maxbuffedhealth = maxhealth * 1.5;
int maxoverheal = maxbuffedhealth - maxhealth;
@ -54,11 +54,11 @@ bool AutoHeal::CanHeal(int idx) {
IClientEntity* ent = interfaces::entityList->GetClientEntity(idx);
if (!ent) return false;
if (ent->GetClientClass()->m_ClassID != ClassID::CTFPlayer) return false;
if (GetEntityValue<char>(ent, eoffsets.iLifeState)) return false;
if (g_pLocalPlayer->team != GetEntityValue<int>(ent, eoffsets.iTeamNum)) return false;
if (GetEntityValue<char>(ent, netvar.iLifeState)) 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 (!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;
}

View File

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

View File

@ -30,7 +30,7 @@ bool AutoSticky::ShouldDetonate(IClientEntity* bomb) {
CachedEntity* ent = gEntityCache.GetEntity(i);
if (ent->m_bNULL) 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;
return true;
}
@ -44,7 +44,7 @@ bool AutoSticky::CreateMove(void*, float, CUserCmd* cmd) {
if (ent->m_bNULL) continue;
if (ent->m_iClassID != ClassID::CTFGrenadePipebombProjectile) continue;
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);
if (!owner) 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 (g_pLocalPlayer->entity && !g_pLocalPlayer->life_state) {
// 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) {
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;
int player = interfaces::engineClient->GetLocalPlayer();
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;
int flags = GetEntityValue<int>(entity, eoffsets.iFlags);
int flags = GetEntityValue<int>(entity, netvar.iFlags);
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()) {
cmd->buttons |= IN_JUMP;
}

View File

@ -111,12 +111,12 @@ void ESP::ProcessEntityPT(CachedEntity* ent) {
switch (ent->m_iClassID) {
case ClassID::CTFPlayer: {
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()) {
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;
color = colors::GetTeamColor(ent->m_iTeam, !ent->m_bIsVisible);
switch (GetRelation(ent->m_pEntity)) {
@ -127,7 +127,7 @@ void ESP::ProcessEntityPT(CachedEntity* ent) {
color = colors::yellow;
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;
}
case ClassID::CObjectSentrygun:
@ -138,9 +138,9 @@ void ESP::ProcessEntityPT(CachedEntity* ent) {
return;
}
}
if (ent->Var<int>(eoffsets.iTeamNum) == g_pLocalPlayer->team && !v_bTeammates->GetBool()) break;
color = colors::GetTeamColor(ent->Var<int>(eoffsets.iTeamNum), !ent->m_bIsVisible);
DrawBox(ent, color, 1.0f, 0.0f, true, ent->Var<int>(eoffsets.iBuildingHealth), ent->Var<int>(eoffsets.iBuildingMaxHealth));
if (ent->Var<int>(netvar.iTeamNum) == g_pLocalPlayer->team && !v_bTeammates->GetBool()) break;
color = colors::GetTeamColor(ent->Var<int>(netvar.iTeamNum), !ent->m_bIsVisible);
DrawBox(ent, color, 1.0f, 0.0f, true, ent->Var<int>(netvar.iBuildingHealth), ent->Var<int>(netvar.iBuildingMaxHealth));
break;
}
}
@ -214,8 +214,8 @@ void ESP::ProcessEntity(CachedEntity* ent) {
case ClassID::CTFPlayer: {
if (!ent->m_bAlivePlayer) break;
if (ent->m_IDX == interfaces::engineClient->GetLocalPlayer()) break;
int pclass = ent->Var<int>(eoffsets.iClass);
int pcond = ent->Var<int>(eoffsets.iCond);
int pclass = ent->Var<int>(netvar.iClass);
int pcond = ent->Var<int>(netvar.iCond);
player_info_t info;
if (!interfaces::engineClient->GetPlayerInfo(ent->m_IDX, &info)) return;
powerup_type power = GetPowerupOnPlayer(ent->m_pEntity);
@ -270,7 +270,7 @@ void ESP::ProcessEntity(CachedEntity* ent) {
case ClassID::CObjectDispenser:
case ClassID::CObjectTeleporter: {
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"));
color = colors::GetTeamColor(ent->m_iTeam, !ent->m_bIsVisible);
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);
if (ent == g_pLocalPlayer->entity) continue;
if (IsFriendlyBot(ent)) {
if (GetEntityValue<char>(ent, eoffsets.iLifeState)) continue;
if (GetEntityValue<char>(ent, netvar.iLifeState)) continue;
//IClientEntity* medigun;
// TODO
}
@ -83,8 +83,8 @@ void FollowBot::ProcessEntity(IClientEntity* entity, bool enemy) {
int FollowBot::ShouldNotTarget(IClientEntity* ent, bool notrace) {
if (!ent || ent->IsDormant()) return 1;
if (ent->GetClientClass()->m_ClassID != 241) return 2;
if (GetEntityValue<char>(ent, eoffsets.iLifeState)) return 3;
bool enemy = GetEntityValue<int>(ent, eoffsets.iTeamNum) != g_pLocalPlayer->team;
if (GetEntityValue<char>(ent, netvar.iLifeState)) return 3;
bool enemy = GetEntityValue<int>(ent, netvar.iTeamNum) != g_pLocalPlayer->team;
if (enemy) return 4;
if (!this->IsOwner(ent)) {
@ -142,15 +142,15 @@ void FollowBot::Tick(CUserCmd* cmd) {
if (!owner_entity) break;
//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->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) {
cmd->buttons |= IN_ATTACK2;
}
} 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) {
cmd->buttons |= IN_ATTACK2;
}
@ -167,7 +167,7 @@ void FollowBot::Tick(CUserCmd* cmd) {
IClientEntity* healtr = this->GetBestHealingTarget();
m_hTargetHealing = (healtr ? healtr->entindex() : 0);
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;
}
if (g_pLocalPlayer->health < 35) {
@ -179,7 +179,7 @@ void FollowBot::Tick(CUserCmd* cmd) {
if (owner_entity && (0 == (g_nTick % 20))) {
static bool forward = 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");
jump = true;
} else if (jump) {
@ -249,8 +249,8 @@ IClientEntity* FollowBot::GetBestHealingTarget() {
for (int i = 0; i < 64 && i < interfaces::entityList->GetHighestEntityIndex(); i++) {
IClientEntity* cur = interfaces::entityList->GetClientEntity(i);
if (cur && cur->GetClientClass()->m_ClassID == ClassID::CTFPlayer) {
if (GetEntityValue<int>(cur, eoffsets.iTeamNum) != g_pLocalPlayer->team) continue;
if (GetEntityValue<char>(cur, eoffsets.iLifeState)) continue;
if (GetEntityValue<int>(cur, netvar.iTeamNum) != g_pLocalPlayer->team) continue;
if (GetEntityValue<char>(cur, netvar.iLifeState)) continue;
if (cur == g_pLocalPlayer->entity) continue;
int score = this->GetHealingPriority(cur);
if (score > best_score && score != 0) {
@ -275,11 +275,11 @@ int FollowBot::GetHealingPriority(IClientEntity* ent) {
if (!ent) return 0;
int result = 0;
if (GetEntityValue<char>(ent, eoffsets.iLifeState)) return 0;
if (GetEntityValue<int>(ent, eoffsets.iTeamNum) != g_pLocalPlayer->team) return 0;
if (GetEntityValue<char>(ent, netvar.iLifeState)) return 0;
if (GetEntityValue<int>(ent, netvar.iTeamNum) != g_pLocalPlayer->team) 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 maxbuffedhealth = maxhealth * 1.5;
int maxoverheal = maxbuffedhealth - maxhealth;

View File

@ -208,8 +208,8 @@ void CC_DisonnectVAC(const CCommand& args) {
void CC_DumpAttribs(const CCommand& args) {
if (g_pLocalPlayer->weapon) {
for (int i = 0; i < 15; i++) {
logging::Info("%i %f", GetEntityValue<int>(g_pLocalPlayer->weapon, eoffsets.AttributeList + i * 12),
GetEntityValue<float>(g_pLocalPlayer->weapon, eoffsets.AttributeList + i * 12 + 4));
logging::Info("%i %f", GetEntityValue<int>(g_pLocalPlayer->weapon, netvar.AttributeList + i * 12),
GetEntityValue<float>(g_pLocalPlayer->weapon, netvar.AttributeList + i * 12 + 4));
}
}
}
@ -285,7 +285,7 @@ bool Misc::CreateMove(void*, float, CUserCmd* cmd) {
//logging::Info("a");
if (ent->GetClientClass()->m_ClassID != ClassID::CTFPlayer) goto breakif;
//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);
const char* str = MakeInfoString(ent);
if (str) {
@ -309,26 +309,26 @@ void Misc::PaintTraverse(void*, unsigned int, bool, bool) {
if (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, "flNextPrimaryAttack: %f", GetEntityValue<float>(g_pLocalPlayer->weapon, eoffsets.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, "flNextPrimaryAttack: %f", GetEntityValue<float>(g_pLocalPlayer->weapon, netvar.flNextPrimaryAttack));
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, "Decaps: %i", GetEntityValue<int>(g_pLocalPlayer->entity, eoffsets.iDecapitations));
AddSideString(draw::white, draw::black, "Damage: %f", GetEntityValue<float>(g_pLocalPlayer->weapon, eoffsets.flChargedDamage));
AddSideString(draw::white, draw::black, "DefIndex: %i", GetEntityValue<int>(g_pLocalPlayer->weapon, eoffsets.iItemDefinitionIndex));
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, netvar.flChargedDamage));
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, "realtime: %f", interfaces::gvars->realtime);
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, "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);
float speed, gravity;
GetProjectileData(g_pLocalPlayer->weapon, speed, gravity);
AddSideString(draw::white, draw::black, "Speed: %f", speed);
AddSideString(draw::white, draw::black, "Gravity: %f", gravity);
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);
//draw::DrawString(10, y, draw::white, draw::black, false, "VecPunchAngleVel: %f %f %f", pav.x, pav.y, pav.z);
//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++) {
IClientEntity* ent = interfaces::entityList->GetClientEntity(i);
if (!ent) continue;
if (GetEntityValue<char>(ent, eoffsets.iLifeState)) continue;
if (GetEntityValue<int>(ent, eoffsets.iClass) != tf_class::tf_spy) continue;
if (GetEntityValue<int>(ent, eoffsets.iTeamNum) == g_pLocalPlayer->team) continue;
if (GetEntityValue<char>(ent, netvar.iLifeState)) continue;
if (GetEntityValue<int>(ent, netvar.iClass) != tf_class::tf_spy) continue;
if (GetEntityValue<int>(ent, netvar.iTeamNum) == g_pLocalPlayer->team) continue;
Vector spypos = ent->GetAbsOrigin();
Vector mypos = g_pLocalPlayer->v_Origin;
float distance = spypos.DistTo(mypos);

View File

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

View File

@ -26,8 +26,8 @@ void EndConVars() {
bool IsPlayerInvulnerable(IClientEntity* player) {
int cond1 = GetEntityValue<int>(player, eoffsets.iCond);
int cond2 = GetEntityValue<int>(player, eoffsets.iCond1);
int cond1 = GetEntityValue<int>(player, netvar.iCond);
int cond2 = GetEntityValue<int>(player, netvar.iCond1);
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);
if ((cond1 & uber_mask_1) || (cond2 & uber_mask_2)) {
@ -39,9 +39,9 @@ bool IsPlayerInvulnerable(IClientEntity* player) {
}
bool IsPlayerCritBoosted(IClientEntity* player) {
int cond1 = GetEntityValue<int>(player, eoffsets.iCond);
int cond2 = GetEntityValue<int>(player, eoffsets.iCond1);
int cond4 = GetEntityValue<int>(player, eoffsets.iCond3);
int cond1 = GetEntityValue<int>(player, netvar.iCond);
int cond2 = GetEntityValue<int>(player, netvar.iCond1);
int cond4 = GetEntityValue<int>(player, netvar.iCond3);
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 |
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) {
if (!player) return powerup_type::not_powerup;
uint32_t cond2 = GetEntityValue<uint32_t>(player, eoffsets.iCond2);
uint32_t cond3 = GetEntityValue<uint32_t>(player, eoffsets.iCond3);
uint32_t cond2 = GetEntityValue<uint32_t>(player, netvar.iCond2);
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_strength) return powerup_type::strength;
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;
// 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;
mstudiobbox_t* box = set->pHitbox(hb);
if (!box) return 5;
@ -314,7 +314,7 @@ bool IsEntityVisible(IClientEntity* entity, int hb) {
//logging::Info("Couldn't get hitbox position: %i", hb);
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);
if (trace_visible.m_pEnt) {
return ((IClientEntity*)trace_visible.m_pEnt) == entity;
@ -332,7 +332,7 @@ Vector GetBuildingPosition(IClientEntity* ent) {
res.z += 8;
break;
case ClassID::CObjectSentrygun:
switch (GetEntityValue<int>(ent, eoffsets.iUpgradeLevel)) {
switch (GetEntityValue<int>(ent, netvar.iUpgradeLevel)) {
case 1:
res.z += 30;
break;
@ -411,8 +411,8 @@ float DistToSqr(IClientEntity* entity) {
weaponmode GetWeaponMode(IClientEntity* player) {
if (!player) return weapon_invalid;
int weapon_handle = GetEntityValue<int>(player, eoffsets.hActiveWeapon);
if (weapon_handle == GetEntityValue<int>(player, eoffsets.hMyWeapons + sizeof(int) * 2)) return weaponmode::weapon_melee;
int weapon_handle = GetEntityValue<int>(player, netvar.hActiveWeapon);
if (weapon_handle == GetEntityValue<int>(player, netvar.hMyWeapons + sizeof(int) * 2)) return weaponmode::weapon_melee;
IClientEntity* weapon = interfaces::entityList->GetClientEntity(weapon_handle & 0xFFF);
if (!weapon) return weaponmode::weapon_invalid;
switch (weapon->GetClientClass()->m_ClassID) {
@ -431,9 +431,9 @@ weaponmode GetWeaponMode(IClientEntity* player) {
case ClassID::CTFSyringeGun:
return weaponmode::weapon_projectile;
};
if (weapon_handle == GetEntityValue<int>(player, eoffsets.hMyWeapons + sizeof(int) * 3)) return weaponmode::weapon_pda;
if (GetEntityValue<int>(player, eoffsets.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) * 3)) return weaponmode::weapon_pda;
if (GetEntityValue<int>(player, netvar.iClass) == tf_class::tf_medic) {
if (weapon_handle == GetEntityValue<int>(player, netvar.hMyWeapons + sizeof(int) * 1)) return weaponmode::weapon_medigun;
}
return weaponmode::weapon_hitscan;
}
@ -455,7 +455,7 @@ bool GetProjectileData(IClientEntity* weapon, float& speed, float& gravity) {
rspeed = ((GetProjectileData*) *(*(const void ***) weapon + 528))(weapon);
break;
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;
interfaces::gvars->curtime = servertime;
rspeed = ((GetProjectileData*) *(*(const void ***) weapon + 527))(weapon);
@ -487,16 +487,16 @@ const char* MakeInfoString(IClientEntity* player) {
player_info_t info;
if (!interfaces::engineClient->GetPlayerInfo(player->entindex(), &info)) return (const char*)0;
logging::Info("a");
int hWeapon = GetEntityValue<int>(player, eoffsets.hActiveWeapon);
if (GetEntityValue<char>(player, eoffsets.iLifeState)) {
sprintf(buf, "%s is dead %s", info.name, tfclasses[GetEntityValue<int>(player, eoffsets.iClass)]);
int hWeapon = GetEntityValue<int>(player, netvar.hActiveWeapon);
if (GetEntityValue<char>(player, netvar.iLifeState)) {
sprintf(buf, "%s is dead %s", info.name, tfclasses[GetEntityValue<int>(player, netvar.iClass)]);
return buf;
}
if (hWeapon) {
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 {
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);
return buf;
@ -561,14 +561,13 @@ relation GetRelation(IClientEntity* ent) {
}
bool IsSentryBuster(IClientEntity* entity) {
// TODO
return (entity && entity->GetClientClass()->m_ClassID == ClassID::CTFPlayer && GetEntityValue<int>(entity, eoffsets.iClass) == tf_class::tf_demoman && g_pPlayerResource->GetMaxHealth(entity) == 2500);
return (entity && entity->GetClientClass()->m_ClassID == ClassID::CTFPlayer && GetEntityValue<int>(entity, netvar.iClass) == tf_class::tf_demoman && g_pPlayerResource->GetMaxHealth(entity) == 2500);
}
bool IsAmbassador(IClientEntity* entity) {
if (!entity) 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) {
case 61:
case 1006:
@ -638,12 +637,11 @@ bool CanHeadshot(IClientEntity* player) {
}
bool BulletTime() {
float tickbase = (float)(GetEntityValue<int>(g_pLocalPlayer->entity, eoffsets.nTickBase)) * interfaces::gvars->interval_per_tick;
float nextattack = GetEntityValue<float>(g_pLocalPlayer->weapon, eoffsets.flNextPrimaryAttack);
float tickbase = (float)(GetEntityValue<int>(g_pLocalPlayer->entity, netvar.nTickBase)) * interfaces::gvars->interval_per_tick;
float nextattack = GetEntityValue<float>(g_pLocalPlayer->weapon, netvar.flNextPrimaryAttack);
return nextattack <= tickbase;
}
// TODO casting
QAngle VectorToQAngle(Vector in) {
return *(QAngle*)&in;
}
@ -681,7 +679,7 @@ bool IsEntityVisiblePenetration(IClientEntity* entity, int hb) {
if (ret) {
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);
bool s = false;
if (trace_visible.m_pEnt) {
@ -752,7 +750,7 @@ void RunEnginePrediction(IClientEntity* ent, CUserCmd *ucmd) {
SetEntityValue<void *>(ent, 0x105C, ucmd);
// 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;
oStartTrackPredictionErrors(ent);

View File

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

View File

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

View File

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

View File

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