ignore hoovy & hoovy esp

This commit is contained in:
nullifiedcat 2017-04-14 10:52:09 +03:00
parent fac108f876
commit 87fa9f3b8c
6 changed files with 65 additions and 0 deletions

View File

@ -106,6 +106,7 @@ List& MainList() {
]
"Preferences" [
"Aim Bot Preferences"
"aimbot_ignore_hoovy"
"aimbot_buildings"
"aimbot_respect_cloak"
"aimbot_only_when_can_shoot"

View File

@ -26,6 +26,8 @@ bool headonly { false };
int last_target { -1 };
bool silent_huntsman { false };
static CatVar ignore_hoovy(CV_SWITCH, "aimbot_ignore_hoovy", "0", "Ignore Hoovies", "Aimbot won't attack hoovies");
int ClosestHitbox(CachedEntity* target) {
int closest = -1;
float closest_fov = 256;
@ -224,6 +226,14 @@ int ShouldTarget(CachedEntity* entity) {
if (entity->m_flDistance > 95) return 9;
}
if (playerlist::IsFriendly(playerlist::AccessData(entity).state)) return 11;
if (ignore_hoovy) {
CachedEntity* weapon = ENTITY(CE_INT(entity, netvar.hActiveWeapon) & 0xFFF);
if (CE_GOOD(weapon)) {
if ((CE_INT(entity, netvar.iFlags) & FL_DUCKING) && weapon->m_iClassID == g_pClassID->CTFLunchBox && CE_INT(entity, netvar.iClass) == tf_heavy) {
return 29;
}
}
}
Vector resultAim;
int hitbox = BestHitbox(entity);
//if (m_bHeadOnly && hitbox) return 12;

View File

@ -448,6 +448,10 @@ void ProcessEntity(CachedEntity* ent) {
}
CachedEntity* weapon = ENTITY(CE_INT(ent, netvar.hActiveWeapon) & 0xFFF);
if (CE_GOOD(weapon)) {
if ((CE_INT(ent, netvar.iFlags) & FL_DUCKING) && weapon->m_iClassID == g_pClassID->CTFLunchBox && pclass == tf_heavy) {
AddEntityString(ent, "Hoovy");
}
if (show_weapon) {
const char* name = vfunc<const char*(*)(IClientEntity*)>(RAW_ENT(weapon), 398, 0)(RAW_ENT(weapon));
if (name) AddEntityString(ent, std::string(name));

View File

@ -50,6 +50,52 @@ bool C_TFPlayer__ShouldDraw_hook(IClientEntity* thisptr) {
static CatVar crit_hack_experimental(CV_SWITCH, "crit_hack_experimental", "0", "Experimental crit hack");
void DumpRecvTable(CachedEntity* ent, RecvTable* table, int depth, const char* ft, unsigned acc_offset) {
bool forcetable = ft && strlen(ft);
if (!forcetable || !strcmp(ft, table->GetName()))
logging::Info("==== TABLE: %s", table->GetName());
for (int i = 0; i < table->GetNumProps(); i++) {
RecvProp* prop = table->GetProp(i);
if (!prop) continue;
if (prop->GetDataTable()) {
DumpRecvTable(ent, prop->GetDataTable(), depth + 1, ft, acc_offset + prop->GetOffset());
}
if (forcetable && strcmp(ft, table->GetName())) continue;
switch (prop->GetType()) {
case SendPropType::DPT_Float:
logging::Info("%s [0x%04x] = %f", prop->GetName(), prop->GetOffset(), CE_FLOAT(ent, acc_offset + prop->GetOffset()));
break;
case SendPropType::DPT_Int:
logging::Info("%s [0x%04x] = %i | %u | %hd | %hu", prop->GetName(), prop->GetOffset(), CE_INT(ent, acc_offset + prop->GetOffset()), CE_VAR(ent, acc_offset + prop->GetOffset(), unsigned int), CE_VAR(ent, acc_offset + prop->GetOffset(), short), CE_VAR(ent, acc_offset + prop->GetOffset(), unsigned short));
break;
case SendPropType::DPT_String:
logging::Info("%s [0x%04x] = %s", prop->GetName(), prop->GetOffset(), CE_VAR(ent, prop->GetOffset(), char*));
break;
case SendPropType::DPT_Vector:
logging::Info("%s [0x%04x] = (%f, %f, %f)", prop->GetName(), prop->GetOffset(), CE_FLOAT(ent, acc_offset + prop->GetOffset()), CE_FLOAT(ent, acc_offset + prop->GetOffset() + 4), CE_FLOAT(ent, acc_offset + prop->GetOffset() + 8));
break;
case SendPropType::DPT_VectorXY:
logging::Info("%s [0x%04x] = (%f, %f)", prop->GetName(), prop->GetOffset(), CE_FLOAT(ent, acc_offset + prop->GetOffset()), CE_FLOAT(ent,acc_offset + prop->GetOffset() + 4));
break;
}
}
if (!ft || !strcmp(ft, table->GetName()))
logging::Info("==== END OF TABLE: %s", table->GetName());
}
static CatCommand dump_vars("debug_dump_netvars", "Dump netvars of entity", [](const CCommand& args) {
if (args.ArgC() < 1) return;
if (!atoi(args[1])) return;
int idx = atoi(args[1]);
CachedEntity* ent = ENTITY(idx);
if (CE_BAD(ent)) return;
ClientClass* clz = RAW_ENT(ent)->GetClientClass();
logging::Info("Entity %i: %s", ent->m_IDX, clz->GetName());
const char* ft = (args.ArgC() > 1 ? args[2] : 0);
DumpRecvTable(ent, clz->m_pRecvTable, 0, ft, 0);
});
void CreateMove() {
static bool flswitch = false;

View File

@ -35,6 +35,8 @@ void NetVars::Init() {
this->m_flStealthNoAttackExpire = gNetvars.get_offset("DT_TFPlayer", "m_Shared", "tfsharedlocaldata", "m_flStealthNoAttackExpire");
}
if (TF2 || TF2C) {
this->m_bDucked = gNetvars.get_offset("DT_TFPlayer", "localdata", "m_Local", "m_bDucked");
this->m_flDuckTimer = gNetvars.get_offset("DT_TFPlayer", "m_Shared", "m_flDuckTimer");
this->iCond = gNetvars.get_offset("DT_TFPlayer", "m_Shared", "m_nPlayerCond");
this->iCond1 = gNetvars.get_offset("DT_TFPlayer", "m_Shared", "m_nPlayerCondEx");
this->iCond2 = gNetvars.get_offset("DT_TFPlayer", "m_Shared", "m_nPlayerCondEx2");

View File

@ -118,6 +118,8 @@ public:
offset_t bChargeRelease;
offset_t m_flStealthNoAttackExpire;
offset_t m_flDuckTimer;
offset_t m_bDucked;
};
extern NetVars netvar;