CanHeadshot() change, VTQ, QTV change

This commit is contained in:
nullifiedcat 2016-12-13 22:31:27 +03:00
parent 38d3c3fb86
commit 0e1e8f78d0
9 changed files with 39 additions and 72 deletions

View File

@ -54,6 +54,7 @@ void EntityVariables::Init() {
this->hObserverTarget = gNetvars.get_offset("DT_BasePlayer", "m_hObserverTarget"); this->hObserverTarget = gNetvars.get_offset("DT_BasePlayer", "m_hObserverTarget");
this->Rocket_iDeflected = gNetvars.get_offset("DT_TFBaseRocket", "m_iDeflected"); this->Rocket_iDeflected = gNetvars.get_offset("DT_TFBaseRocket", "m_iDeflected");
this->Grenade_iDeflected = gNetvars.get_offset("DT_TFWeaponBaseGrenadeProj", "m_iDeflected"); this->Grenade_iDeflected = gNetvars.get_offset("DT_TFWeaponBaseGrenadeProj", "m_iDeflected");
this->test = 2908;
} }
void InitEntityOffsets() { void InitEntityOffsets() {

View File

@ -82,6 +82,8 @@ public:
offset_t Rocket_iDeflected; offset_t Rocket_iDeflected;
offset_t Grenade_iDeflected; offset_t Grenade_iDeflected;
offset_t test;
}; };
// TODO globals // TODO globals

View File

@ -133,23 +133,29 @@ bool Aimbot::CreateMove(void*, float, CUserCmd* cmd) {
if (player->IsDormant()) return true; if (player->IsDormant()) return true;
m_iHitbox = this->v_iHitbox->GetInt(); m_iHitbox = this->v_iHitbox->GetInt();
if (this->v_bAutoHitbox->GetBool()) m_iHitbox = 7; if (this->v_bAutoHitbox->GetBool()) m_iHitbox = 7;
if (g_pLocalPlayer->weapon) { if (g_pLocalPlayer->weapon && this->v_bAutoHitbox->GetBool()) {
switch (g_pLocalPlayer->weapon->GetClientClass()->m_ClassID) { switch (g_pLocalPlayer->weapon->GetClientClass()->m_ClassID) {
case ClassID::CTFSniperRifle: case ClassID::CTFSniperRifle:
case ClassID::CTFSniperRifleDecap: case ClassID::CTFSniperRifleDecap:
if (!CanHeadshot(g_pLocalPlayer->entity)) { if (!CanHeadshot(g_pLocalPlayer->entity)) {
if (this->v_bZoomedOnly->GetBool()) return true; if (this->v_bZoomedOnly->GetBool()) return true;
} else { } else {
if (this->v_bAutoHitbox->GetBool()) m_iHitbox = 0; m_iHitbox = 0;
} }
break; break;
case ClassID::CTFCompoundBow: case ClassID::CTFCompoundBow:
m_iHitbox = 0; m_iHitbox = 0;
break; break;
case ClassID::CTFRevolver: case ClassID::CTFRevolver:
if (IsAmbassador(g_pLocalPlayer->weapon)) { if (IsAmbassador(g_pLocalPlayer->weapon)) {
m_iHitbox = 0; m_iHitbox = 0;
} }
break;
case ClassID::CTFRocketLauncher:
case ClassID::CTFRocketLauncher_AirStrike:
case ClassID::CTFRocketLauncher_DirectHit:
case ClassID::CTFRocketLauncher_Mortar:
m_iHitbox = 14;
} }
} }
@ -166,7 +172,7 @@ bool Aimbot::CreateMove(void*, float, CUserCmd* cmd) {
if (g_pLocalPlayer->weapon->GetClientClass()->m_ClassID == 210) return true; if (g_pLocalPlayer->weapon->GetClientClass()->m_ClassID == 210) return true;
} }
m_bProjectileMode = (GetProjectileData(g_pLocalPlayer->weapon, m_flProjSpeed, m_bProjArc, m_flProjGravity)); m_bProjectileMode = (GetProjectileData(g_pLocalPlayer->weapon, m_flProjSpeed, m_flProjGravity));
// TODO priority modes (FOV, Smart, Distance, etc) // TODO priority modes (FOV, Smart, Distance, etc)
IClientEntity* target_highest = 0; IClientEntity* target_highest = 0;
float target_highest_score = -256; float target_highest_score = -256;

View File

@ -22,7 +22,9 @@ HuntsmanCompensation::HuntsmanCompensation() {
bool HuntsmanCompensation::CreateMove(void*, float, CUserCmd* cmd) { bool HuntsmanCompensation::CreateMove(void*, float, CUserCmd* cmd) {
if (!v_bEnabled->GetBool()) return true; if (!v_bEnabled->GetBool()) return true;
if (!g_pLocalPlayer->weapon || (g_pLocalPlayer->weapon->GetClientClass()->m_ClassID != ClassID::CTFCompoundBow)) return true; float speed, grav;
if (!GetProjectileData(g_pLocalPlayer->weapon, speed, grav)) return true;
if (speed == 0.0f) return true;
if (g_pLocalPlayer->life_state) return true; if (g_pLocalPlayer->life_state) return true;
static trace_t* view_trace = new trace_t(); static trace_t* view_trace = new trace_t();
Ray_t ray; Ray_t ray;
@ -41,9 +43,7 @@ bool HuntsmanCompensation::CreateMove(void*, float, CUserCmd* cmd) {
forward = forward * 8192.0f + g_pLocalPlayer->v_Eye; forward = forward * 8192.0f + g_pLocalPlayer->v_Eye;
ray.Init(g_pLocalPlayer->v_Eye, forward); ray.Init(g_pLocalPlayer->v_Eye, forward);
interfaces::trace->TraceRay(ray, 0x4200400B, trace::g_pFilterDefault, view_trace); interfaces::trace->TraceRay(ray, 0x4200400B, trace::g_pFilterDefault, view_trace);
float speed, grav; GetProjectileData(g_pLocalPlayer->weapon, speed, grav);
bool arc;
GetProjectileData(g_pLocalPlayer->weapon, speed, arc, grav);
float ttf = view_trace->startpos.DistTo(view_trace->endpos) / speed; float ttf = view_trace->startpos.DistTo(view_trace->endpos) / speed;
Vector resv = view_trace->endpos; Vector resv = view_trace->endpos;
resv.z += ttf * ttf * (grav * 400); resv.z += ttf * ttf * (grav * 400);

View File

@ -316,12 +316,11 @@ void Misc::PaintTraverse(void*, unsigned int, bool, bool) {
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, eoffsets.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;
bool arc; GetProjectileData(g_pLocalPlayer->weapon, speed, gravity);
GetProjectileData(g_pLocalPlayer->weapon, speed, arc, 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", *(float*)((uintptr_t)g_pLocalPlayer->entity + 2908) - interfaces::gvars->curtime); AddSideString(draw::white, draw::black, "???: %f", GetEntityValue<float>(g_pLocalPlayer->entity, eoffsets.test));
//AddSideString(draw::white, draw::black, "VecPunchAngle: %f %f %f", pa.x, pa.y, pa.z); //AddSideString(draw::white, draw::black, "VecPunchAngle: %f %f %f", pa.x, pa.y, pa.z);
//draw::DrawString(10, y, draw::white, draw::black, false, "VecPunchAngleVel: %f %f %f", pav.x, pav.y, pav.z); //draw::DrawString(10, y, draw::white, draw::black, false, "VecPunchAngleVel: %f %f %f", pav.x, pav.y, pav.z);
//y += 14; //y += 14;

View File

@ -439,59 +439,46 @@ weaponmode GetWeaponMode(IClientEntity* player) {
} }
// TODO FIX this function // TODO FIX this function
bool GetProjectileData(IClientEntity* weapon, float& speed, bool& arc, float& gravity) { bool GetProjectileData(IClientEntity* weapon, float& speed, float& gravity) {
if (!weapon) return false; if (!weapon) return false;
float rspeed; float rspeed = 0.0f;
bool rarc; float rgrav = 0.0f;
float rgrav = 0.5f; typedef float(GetProjectileData)(IClientEntity*);
switch (weapon->GetClientClass()->m_ClassID) { switch (weapon->GetClientClass()->m_ClassID) {
case ClassID::CTFRocketLauncher_DirectHit: case ClassID::CTFRocketLauncher_DirectHit:
rspeed = 1980.0f; rspeed = 1980.0f;
rarc = false;
//rgrav = 0.0f;
break; break;
case ClassID::CTFRocketLauncher: case ClassID::CTFRocketLauncher:
rspeed = 1100.0f; rspeed = 1100.0f;
rarc = false;
//rgrav = 0.0f;
break; break;
case ClassID::CTFGrenadeLauncher: case ClassID::CTFGrenadeLauncher:
rspeed = 1200.0f; // TODO Loch-N-Load: 1500u rspeed = ((GetProjectileData*) *(*(const void ***) weapon + 528))(weapon);
rarc = true;
//rgrav = 0.5f;
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, eoffsets.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;
typedef float(GetProjectileData)(IClientEntity*); rspeed = ((GetProjectileData*) *(*(const void ***) weapon + 527))(weapon);
rspeed = (reinterpret_cast<GetProjectileData*>(*(*(const void ***) weapon + 527)))(weapon);
rgrav = ((GetProjectileData*) *(*(const void ***) weapon + 528))(weapon); rgrav = ((GetProjectileData*) *(*(const void ***) weapon + 528))(weapon);
interfaces::gvars->curtime = curtime_old; interfaces::gvars->curtime = curtime_old;
rarc = true;
} break; } break;
case ClassID::CTFBat_Wood: case ClassID::CTFBat_Wood:
//rgrav = 1.0f;
rspeed = 3000.0f; rspeed = 3000.0f;
rarc = true; rgrav = 0.5f;
break; break;
case ClassID::CTFFlareGun: case ClassID::CTFFlareGun:
//rgrav = 1.0f;
rspeed = 2000.0f; rspeed = 2000.0f;
rarc = true; rgrav = 0.5f;
break; break;
case ClassID::CTFSyringeGun: case ClassID::CTFSyringeGun:
rgrav = 0.2f; rgrav = 0.2f;
rspeed = 990.0f; rspeed = 990.0f;
rarc = true;
break; break;
default: default:
return false; return false;
} }
speed = rspeed; speed = rspeed;
arc = rarc;
gravity = rgrav; gravity = rgrav;
if (!arc) gravity = 0;
return true; return true;
} }
@ -647,38 +634,7 @@ float GetFov(Vector angle, Vector src, Vector dst)
} }
bool CanHeadshot(IClientEntity* player) { bool CanHeadshot(IClientEntity* player) {
int weapon_handle = GetEntityValue<int>(player, eoffsets.hActiveWeapon); return (g_pLocalPlayer->flZoomBegin > 0.0f && (interfaces::gvars->curtime - g_pLocalPlayer->flZoomBegin > 0.2f));
IClientEntity* weapon = interfaces::entityList->GetClientEntity(weapon_handle & 0xFFF);
if (!weapon) return false;
float charged_damage = GetEntityValue<float>(weapon, eoffsets.flChargedDamage);
switch(weapon->GetClientClass()->m_ClassID) {
case ClassID::CTFSniperRifle:
return charged_damage >= 15.0f;
case ClassID::CTFSniperRifleDecap: {
int decaps = GetEntityValue<int>(player, eoffsets.iDecapitations);
switch (decaps) { // TODO VALUES ARE NOT PRECISE
// noobish
case 0:
return charged_damage >= 7.5f;
case 1:
return charged_damage >= 13.0f;
case 2:
return charged_damage >= 15.0f;
case 3:
return charged_damage >= 18.5f;
case 4:
return charged_damage >= 22.5f;
case 5:
return charged_damage >= 24.0f;
default:
return charged_damage >= 25.0f;
}
break;
}
case ClassID::CTFSniperRifleClassic:
return false; // NO!!! IT CANNOT!!! Fuck classic.
}
return false;
} }
bool BulletTime() { bool BulletTime() {
@ -689,11 +645,11 @@ bool BulletTime() {
// TODO casting // TODO casting
QAngle VectorToQAngle(Vector in) { QAngle VectorToQAngle(Vector in) {
return QAngle(in.x, in.y, in.z); return *(QAngle*)&in;
} }
Vector QAngleToVector(QAngle in) { Vector QAngleToVector(QAngle in) {
return Vector(in.x, in.y, in.z); return *(Vector*)&in;
} }
void AimAt(Vector origin, Vector target, CUserCmd* cmd) { void AimAt(Vector origin, Vector target, CUserCmd* cmd) {

View File

@ -60,7 +60,7 @@ void fClampAngle(Vector& qaAng);
void fVectorAngles(Vector &forward, Vector &angles); void fVectorAngles(Vector &forward, Vector &angles);
float deg2rad(float deg); float deg2rad(float deg);
const char* MakeInfoString(IClientEntity* player); const char* MakeInfoString(IClientEntity* player);
bool GetProjectileData(IClientEntity* weapon, float& speed, bool& arc, float& gravity); bool GetProjectileData(IClientEntity* weapon, float& speed, float& gravity);
bool IsVectorVisible(Vector a, Vector b); bool IsVectorVisible(Vector a, Vector b);
//bool PredictProjectileAim(Vector origin, IClientEntity* target, hitbox_t hb, float speed, bool arc, float gravity, Vector& result); //bool PredictProjectileAim(Vector origin, IClientEntity* target, hitbox_t hb, float speed, bool arc, float gravity, Vector& result);
relation GetRelation(IClientEntity* ent); relation GetRelation(IClientEntity* ent);

View File

@ -5,10 +5,7 @@
* Author: nullifiedcat * Author: nullifiedcat
*/ */
#include "localplayer.h" #include "common.h"
#include "interfaces.h"
#include "entity.h"
#include "sdk.h" #include "sdk.h"
void LocalPlayer::Update() { void LocalPlayer::Update() {
@ -23,6 +20,11 @@ void LocalPlayer::Update() {
clazz = GetEntityValue<int>(entity, eoffsets.iClass); clazz = GetEntityValue<int>(entity, eoffsets.iClass);
health = GetEntityValue<int>(entity, eoffsets.iHealth); health = GetEntityValue<int>(entity, eoffsets.iHealth);
this->bUseSilentAngles = false; this->bUseSilentAngles = false;
if (cond_0 & cond::zoomed) {
if (flZoomBegin == 0.0f) flZoomBegin = interfaces::gvars->curtime;
} else {
flZoomBegin = 0.0f;
}
int hWeapon = GetEntityValue<int>(entity, eoffsets.hActiveWeapon); int hWeapon = GetEntityValue<int>(entity, eoffsets.hActiveWeapon);

View File

@ -27,6 +27,7 @@ public:
int cond_3; int cond_3;
bool bWasZoomed; bool bWasZoomed;
float flZoomBegin;
bool bIsReloading; bool bIsReloading;