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->Rocket_iDeflected = gNetvars.get_offset("DT_TFBaseRocket", "m_iDeflected");
this->Grenade_iDeflected = gNetvars.get_offset("DT_TFWeaponBaseGrenadeProj", "m_iDeflected");
this->test = 2908;
}
void InitEntityOffsets() {

View File

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

View File

@ -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;

View File

@ -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);

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, "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<float>(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;

View File

@ -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<int>(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<GetProjectileData*>(*(*(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<int>(player, eoffsets.hActiveWeapon);
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;
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*)&in;
}
Vector QAngleToVector(QAngle in) {
return Vector(in.x, in.y, in.z);
return *(Vector*)&in;
}
void AimAt(Vector origin, Vector target, CUserCmd* cmd) {

View File

@ -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);

View File

@ -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<int>(entity, eoffsets.iClass);
health = GetEntityValue<int>(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<int>(entity, eoffsets.hActiveWeapon);

View File

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