From 0e1e8f78d0668f60311e59159ee3dbfe7c8a9624 Mon Sep 17 00:00:00 2001 From: nullifiedcat Date: Tue, 13 Dec 2016 22:31:27 +0300 Subject: [PATCH] CanHeadshot() change, VTQ, QTV change --- uran/src/entity.cpp | 1 + uran/src/entity.h | 2 + uran/src/hacks/Aimbot.cpp | 16 ++++-- uran/src/hacks/HuntsmanCompensation.cpp | 8 +-- uran/src/hacks/Misc.cpp | 5 +- uran/src/helpers.cpp | 66 +++++-------------------- uran/src/helpers.h | 2 +- uran/src/localplayer.cpp | 10 ++-- uran/src/localplayer.h | 1 + 9 files changed, 39 insertions(+), 72 deletions(-) diff --git a/uran/src/entity.cpp b/uran/src/entity.cpp index ade1c930..d1973a63 100644 --- a/uran/src/entity.cpp +++ b/uran/src/entity.cpp @@ -54,6 +54,7 @@ void EntityVariables::Init() { this->hObserverTarget = gNetvars.get_offset("DT_BasePlayer", "m_hObserverTarget"); this->Rocket_iDeflected = gNetvars.get_offset("DT_TFBaseRocket", "m_iDeflected"); this->Grenade_iDeflected = gNetvars.get_offset("DT_TFWeaponBaseGrenadeProj", "m_iDeflected"); + this->test = 2908; } void InitEntityOffsets() { diff --git a/uran/src/entity.h b/uran/src/entity.h index 3e3c1710..5dc55c35 100644 --- a/uran/src/entity.h +++ b/uran/src/entity.h @@ -82,6 +82,8 @@ public: offset_t Rocket_iDeflected; offset_t Grenade_iDeflected; + + offset_t test; }; // TODO globals diff --git a/uran/src/hacks/Aimbot.cpp b/uran/src/hacks/Aimbot.cpp index ddf89fd8..a473965e 100644 --- a/uran/src/hacks/Aimbot.cpp +++ b/uran/src/hacks/Aimbot.cpp @@ -133,23 +133,29 @@ bool Aimbot::CreateMove(void*, float, CUserCmd* cmd) { if (player->IsDormant()) return true; m_iHitbox = this->v_iHitbox->GetInt(); 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) { case ClassID::CTFSniperRifle: case ClassID::CTFSniperRifleDecap: if (!CanHeadshot(g_pLocalPlayer->entity)) { if (this->v_bZoomedOnly->GetBool()) return true; } else { - if (this->v_bAutoHitbox->GetBool()) m_iHitbox = 0; + m_iHitbox = 0; } - break; + break; case ClassID::CTFCompoundBow: m_iHitbox = 0; - break; + break; case ClassID::CTFRevolver: if (IsAmbassador(g_pLocalPlayer->weapon)) { 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; } - 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) IClientEntity* target_highest = 0; float target_highest_score = -256; diff --git a/uran/src/hacks/HuntsmanCompensation.cpp b/uran/src/hacks/HuntsmanCompensation.cpp index 5e25b35f..a651a92d 100644 --- a/uran/src/hacks/HuntsmanCompensation.cpp +++ b/uran/src/hacks/HuntsmanCompensation.cpp @@ -22,7 +22,9 @@ HuntsmanCompensation::HuntsmanCompensation() { bool HuntsmanCompensation::CreateMove(void*, float, CUserCmd* cmd) { 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; static trace_t* view_trace = new trace_t(); Ray_t ray; @@ -41,9 +43,7 @@ bool HuntsmanCompensation::CreateMove(void*, float, CUserCmd* cmd) { forward = forward * 8192.0f + g_pLocalPlayer->v_Eye; ray.Init(g_pLocalPlayer->v_Eye, forward); interfaces::trace->TraceRay(ray, 0x4200400B, trace::g_pFilterDefault, view_trace); - float speed, grav; - bool arc; - GetProjectileData(g_pLocalPlayer->weapon, speed, arc, grav); + GetProjectileData(g_pLocalPlayer->weapon, speed, grav); float ttf = view_trace->startpos.DistTo(view_trace->endpos) / speed; Vector resv = view_trace->endpos; resv.z += ttf * ttf * (grav * 400); diff --git a/uran/src/hacks/Misc.cpp b/uran/src/hacks/Misc.cpp index 88c2e305..3a1f711a 100644 --- a/uran/src/hacks/Misc.cpp +++ b/uran/src/hacks/Misc.cpp @@ -316,12 +316,11 @@ void Misc::PaintTraverse(void*, unsigned int, bool, bool) { AddSideString(draw::white, draw::black, "ServerTime: %f", GetEntityValue(g_pLocalPlayer->entity, eoffsets.nTickBase) * interfaces::gvars->interval_per_tick); AddSideString(draw::white, draw::black, "CurTime: %f", interfaces::gvars->curtime); float speed, gravity; - bool arc; - GetProjectileData(g_pLocalPlayer->weapon, speed, arc, 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", *(float*)((uintptr_t)g_pLocalPlayer->entity + 2908) - interfaces::gvars->curtime); + AddSideString(draw::white, draw::black, "???: %f", GetEntityValue(g_pLocalPlayer->entity, eoffsets.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; diff --git a/uran/src/helpers.cpp b/uran/src/helpers.cpp index b3cd0c20..0c19bd07 100644 --- a/uran/src/helpers.cpp +++ b/uran/src/helpers.cpp @@ -439,59 +439,46 @@ weaponmode GetWeaponMode(IClientEntity* player) { } // 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; - float rspeed; - bool rarc; - float rgrav = 0.5f; + float rspeed = 0.0f; + float rgrav = 0.0f; + typedef float(GetProjectileData)(IClientEntity*); switch (weapon->GetClientClass()->m_ClassID) { case ClassID::CTFRocketLauncher_DirectHit: rspeed = 1980.0f; - rarc = false; - //rgrav = 0.0f; break; case ClassID::CTFRocketLauncher: rspeed = 1100.0f; - rarc = false; - //rgrav = 0.0f; break; case ClassID::CTFGrenadeLauncher: - rspeed = 1200.0f; // TODO Loch-N-Load: 1500u - rarc = true; - //rgrav = 0.5f; + rspeed = ((GetProjectileData*) *(*(const void ***) weapon + 528))(weapon); break; case ClassID::CTFCompoundBow: { float servertime = (float)GetEntityValue(g_pLocalPlayer->entity, eoffsets.nTickBase) * interfaces::gvars->interval_per_tick; float curtime_old = interfaces::gvars->curtime; interfaces::gvars->curtime = servertime; - typedef float(GetProjectileData)(IClientEntity*); - rspeed = (reinterpret_cast(*(*(const void ***) weapon + 527)))(weapon); + rspeed = ((GetProjectileData*) *(*(const void ***) weapon + 527))(weapon); rgrav = ((GetProjectileData*) *(*(const void ***) weapon + 528))(weapon); interfaces::gvars->curtime = curtime_old; - rarc = true; } break; case ClassID::CTFBat_Wood: - //rgrav = 1.0f; rspeed = 3000.0f; - rarc = true; + rgrav = 0.5f; break; case ClassID::CTFFlareGun: - //rgrav = 1.0f; rspeed = 2000.0f; - rarc = true; + rgrav = 0.5f; break; case ClassID::CTFSyringeGun: rgrav = 0.2f; rspeed = 990.0f; - rarc = true; break; default: return false; } speed = rspeed; - arc = rarc; gravity = rgrav; - if (!arc) gravity = 0; return true; } @@ -647,38 +634,7 @@ float GetFov(Vector angle, Vector src, Vector dst) } bool CanHeadshot(IClientEntity* player) { - int weapon_handle = GetEntityValue(player, eoffsets.hActiveWeapon); - IClientEntity* weapon = interfaces::entityList->GetClientEntity(weapon_handle & 0xFFF); - if (!weapon) return false; - float charged_damage = GetEntityValue(weapon, eoffsets.flChargedDamage); - switch(weapon->GetClientClass()->m_ClassID) { - case ClassID::CTFSniperRifle: - return charged_damage >= 15.0f; - case ClassID::CTFSniperRifleDecap: { - int decaps = GetEntityValue(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; + return (g_pLocalPlayer->flZoomBegin > 0.0f && (interfaces::gvars->curtime - g_pLocalPlayer->flZoomBegin > 0.2f)); } bool BulletTime() { @@ -689,11 +645,11 @@ bool BulletTime() { // TODO casting QAngle VectorToQAngle(Vector in) { - return QAngle(in.x, in.y, in.z); + return *(QAngle*)∈ } Vector QAngleToVector(QAngle in) { - return Vector(in.x, in.y, in.z); + return *(Vector*)∈ } void AimAt(Vector origin, Vector target, CUserCmd* cmd) { diff --git a/uran/src/helpers.h b/uran/src/helpers.h index 6b94fc6f..d4f50101 100644 --- a/uran/src/helpers.h +++ b/uran/src/helpers.h @@ -60,7 +60,7 @@ void fClampAngle(Vector& qaAng); void fVectorAngles(Vector &forward, Vector &angles); float deg2rad(float deg); 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 PredictProjectileAim(Vector origin, IClientEntity* target, hitbox_t hb, float speed, bool arc, float gravity, Vector& result); relation GetRelation(IClientEntity* ent); diff --git a/uran/src/localplayer.cpp b/uran/src/localplayer.cpp index ba901922..df4868f8 100644 --- a/uran/src/localplayer.cpp +++ b/uran/src/localplayer.cpp @@ -5,10 +5,7 @@ * Author: nullifiedcat */ -#include "localplayer.h" -#include "interfaces.h" -#include "entity.h" - +#include "common.h" #include "sdk.h" void LocalPlayer::Update() { @@ -23,6 +20,11 @@ void LocalPlayer::Update() { clazz = GetEntityValue(entity, eoffsets.iClass); health = GetEntityValue(entity, eoffsets.iHealth); this->bUseSilentAngles = false; + if (cond_0 & cond::zoomed) { + if (flZoomBegin == 0.0f) flZoomBegin = interfaces::gvars->curtime; + } else { + flZoomBegin = 0.0f; + } int hWeapon = GetEntityValue(entity, eoffsets.hActiveWeapon); diff --git a/uran/src/localplayer.h b/uran/src/localplayer.h index f87057df..4d5b9a1e 100644 --- a/uran/src/localplayer.h +++ b/uran/src/localplayer.h @@ -27,6 +27,7 @@ public: int cond_3; bool bWasZoomed; + float flZoomBegin; bool bIsReloading;