refactor
This commit is contained in:
parent
e9bfa50ce9
commit
c171ab7223
@ -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
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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_ */
|
||||||
|
@ -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++;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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()) {
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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*)∈
|
return *(QAngle*)∈
|
||||||
}
|
}
|
||||||
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
Reference in New Issue
Block a user