starting some rework

This commit is contained in:
nullifiedcat 2017-11-23 12:20:09 +03:00
parent 9fa5155848
commit 2efb08752b
16 changed files with 224 additions and 69 deletions

View File

@ -117,7 +117,7 @@
</folderInfo>
<sourceEntries>
<entry excluding="cmdui|autogen|segvcatch|xoverlay|include|classinfo|vtables|ipc|ncc|memory|hooks|sdk|imgui|src|freetype-gl|copypasted|source-sdk-2013|targeting|gui|mem" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
<entry excluding="hacks|copypasted|visual|gui|classinfo|hooks|sdk" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="include"/>
<entry excluding="reclasses|hacks|copypasted|visual|gui|classinfo|hooks|sdk" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="include"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="include/classinfo"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="include/copypasted"/>
<entry excluding="cmdui|im|ncc" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="include/gui"/>
@ -125,6 +125,7 @@
<entry excluding="ac" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="include/hacks"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="include/hacks/ac"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="include/hooks"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="include/reclasses"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="include/sdk"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="include/visual"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="segvcatch"/>

111
code_signing_key.asc Normal file
View File

@ -0,0 +1,111 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: GPGTools - https://gpgtools.org
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
Hxpd
=FMAy
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -519,9 +519,12 @@ namespace client_classes {
int CBaseGrenadeProjectile { 0 };
int CDAViewModel { 0 };
int CTFWeaponFlameBall { 0 };
int CTFProjectile_BallOfFire { 0 };
};
extern dummy dummy_list;
}
#endif /* DUMMY_AUTOGEN_HPP */
#endif /* DUMMY_AUTOGEN_HPP */

View File

@ -13,4 +13,6 @@ void init();
void update();
void draw();
}}

View File

@ -1,55 +0,0 @@
/*
* node.hpp
*
* Created on: Nov 17, 2017
* Author: nullifiedcat
*/
#pragma once
#include "common.hpp"
namespace gui { namespace cmdui {
struct node_descriptor
{
enum nodetype
{
UNDEFINED,
LIST,
VARIABLE,
COMMAND
};
nodetype type;
std::shared_ptr<node> node;
};
class node
{
public:
int dummy;
};
class node_list: public node
{
public:
node_list();
std::vector<node_descriptor> children {};
};
class node_variable: public node
{
public:
node_variable(const CatVar& catvar);
};
class node_command: public node
{
public:
const node_descriptor type { node_descriptor::nodetype::COMMAND };
};
}}

View File

@ -25,6 +25,7 @@ constexpr platform PLATFORM = platform::PLATFORM_UNSUPPORTED;
#endif
struct offsets {
static constexpr uint32_t PlatformOffset(uint32_t offset_linux, uint32_t offset_windows, uint32_t offset_osx) {
uint32_t result = -1;
switch (PLATFORM) {
@ -63,6 +64,12 @@ struct offsets {
static constexpr uint32_t FireEvent() { return PlatformOffset(8, 0, 0); }
static constexpr uint32_t FireEventClientSide() { return PlatformOffset(9, 0, 0); }
static constexpr uint32_t GetSlot() { return PlatformOffset(395, 0, 395); }
static constexpr uint32_t GetProjectileSpeed() { return PlatformOffset(534, 0, 534); }
static constexpr uint32_t GetProjectileGravity() { return PlatformOffset(534, 0, 534); }
static constexpr uint32_t DoSwingTrace() { return PlatformOffset(522, 0, 522); }
static constexpr uint32_t AreRandomCritsEnabled() { return PlatformOffset(466, 0, 466); }
static constexpr uint32_t lastoutgoingcommand() { return PlatformOffset(19228, -1, -1); }
static constexpr uint32_t m_nOutSequenceNr() { return PlatformOffset(8, -1, -1); }
static constexpr uint32_t m_NetChannel() { return PlatformOffset(196, -1, -1); }

View File

@ -0,0 +1,20 @@
/*
* C_BaseCombatWeapon.hpp
*
* Created on: Nov 23, 2017
* Author: nullifiedcat
*/
#pragma once
class C_BaseCombatWeapon : public IClientEntity
{
public:
inline int GetSlot()
{
typedef int(*fn_t)(C_BaseCombatWeapon *);
return vfunc<fn_t>(this, 395, 0)(this);
}
};

View File

@ -0,0 +1,16 @@
/*
* C_TFWeaponBaseGun.hpp
*
* Created on: Nov 23, 2017
* Author: nullifiedcat
*/
#pragma once
class C_TFWeaponBaseGun : public C_BaseCombatWeapon
{
public:
};

View File

@ -0,0 +1,19 @@
/*
* reclasses.hpp
*
* Created on: Nov 23, 2017
* Author: nullifiedcat
*/
#pragma once
#include "common.hpp"
namespace re
{
#include "C_BaseCombatWeapon.hpp"
#include "C_TFWeaponBaseGun.hpp"
}

View File

@ -136,6 +136,7 @@ void CachedEntity::Update() {
m_iClassID == CL_CLASS(CTFProjectile_HealingBolt) ||
m_iClassID == CL_CLASS(CTFProjectile_Rocket) ||
m_iClassID == CL_CLASS(CTFProjectile_SentryRocket) ||
m_iClassID == CL_CLASS(CTFProjectile_BallOfFire) ||
m_iClassID == CL_CLASS(CTFProjectile_Flare)) {
m_Type = EntityType::ENTITY_PROJECTILE;
} else {

View File

@ -22,9 +22,7 @@ void CreateMove() {
static auto IsBehindAndFacingTarget_addr = gSignatures.GetClientSignature("55 89 E5 57 56 53 83 EC 2C 8B 45 08 8B 5D 08 C1 E0 0C");
static auto IsBehindAndFacingTarget = reinterpret_cast<IsBehindAndFacingTarget_t>(IsBehindAndFacingTarget_addr);
// 522 = DoSwingTrace
// FIXME offset
if (vfunc<bool(*)(IClientEntity*, trace_t*)>(weapon, 522)(weapon, &trace)) {
if (vfunc<bool(*)(IClientEntity*, trace_t*)>(weapon, offsets::DoSwingTrace())(weapon, &trace)) {
if (trace.m_pEnt && reinterpret_cast<IClientEntity*>(trace.m_pEnt)->GetClientClass()->m_ClassID == RCC_PLAYER) {
if (NET_INT(trace.m_pEnt, netvar.iTeamNum) != g_pLocalPlayer->team) {
if (IsBehindAndFacingTarget(weapon, reinterpret_cast<IClientEntity*>(trace.m_pEnt)))

View File

@ -26,6 +26,7 @@ CatVar anti_afk(CV_SWITCH, "anti_afk", "0", "Anti-AFK", "Sends random commands t
CatVar auto_strafe(CV_SWITCH, "auto_strafe", "0", "Auto-Strafe", "Automaticly airstrafes for you.");
CatVar render_zoomed(CV_SWITCH, "render_zoomed", "0", "Render model when zoomed-in", "Renders player model while being zoomed in as Sniper");
CatVar nopush_enabled(CV_SWITCH, "nopush_enabled", "0", "No Push", "Prevents other players from pushing you around.");
//CatVar no_homo(CV_SWITCH, "no_homo", "1", "No Homo", "read if gay");
// Taunting stuff
CatEnum spycrab_mode_enum({"DISABLED", "FORCE CRAB", "FORCE NON-CRAB"});
@ -114,7 +115,7 @@ void CreateMove() {
static crithack_saved_state state;
static bool chc;
static bool changed = false;
if (g_pUserCmd->command_number && found_crit_number > g_pUserCmd->command_number + 66 * 20) found_crit_number = 0;
if (g_pUserCmd->command_number) last_number = g_pUserCmd->command_number;

View File

@ -553,6 +553,10 @@ bool GetProjectileData(CachedEntity* weapon, float& speed, float& gravity) {
rspeed = 2400.0f;
} else if (weapon->m_iClassID == CL_CLASS(CTFDRGPomson)) {
rspeed = 1200.0f;
} else if (weapon->m_iClassID == CL_CLASS(CTFWeaponFlameBall))
{
// ??
rspeed = 2500.0f;
}
speed = rspeed;
gravity = rgrav;

View File

@ -97,6 +97,7 @@ static CatVar engine_pred(CV_SWITCH, "engine_prediction", "0", "Engine Predictio
static CatVar debug_projectiles(CV_SWITCH, "debug_projectiles", "0", "Debug Projectiles");
static CatVar fakelag_amount(CV_INT, "fakelag", "0", "Bad Fakelag");
CatVar semiauto(CV_INT, "semiauto", "0", "Semiauto");
bool CreateMove_hook(void* thisptr, float inputSample, CUserCmd* cmd) {
g_Settings.is_create_move = true;
@ -304,6 +305,21 @@ bool CreateMove_hook(void* thisptr, float inputSample, CUserCmd* cmd) {
PROF_SECTION(CM_aimbot);
SAFE_CALL(hacks::shared::aimbot::CreateMove());
}
static int attackticks = 0;
if (g_pUserCmd->buttons & IN_ATTACK)
++attackticks;
else
attackticks = 0;
if (semiauto)
{
if (g_pUserCmd->buttons & IN_ATTACK)
{
if (attackticks % int(semiauto) < int(semiauto) - 1)
{
g_pUserCmd->buttons &= ~IN_ATTACK;
}
}
}
{
PROF_SECTION(CM_antiaim);
SAFE_CALL(hacks::shared::antiaim::ProcessUserCmd(cmd));

View File

@ -211,11 +211,15 @@ CatVar debug_pp_rockettimeping(CV_SWITCH, "debug_pp_rocket_time_ping", "0", "Com
Vector ProjectilePrediction(CachedEntity* ent, int hb, float speed, float gravitymod, float entgmod) {
if (!ent) return Vector();
Vector result;
if (not debug_pp_extrapolate) {
//if (not debug_pp_extrapolate) {
GetHitbox(ent, hb, result);
} else {
result = SimpleLatencyPrediction(ent, hb);
}
//} else {
// result = SimpleLatencyPrediction(ent, hb);
//
//}
float latency = g_IEngine->GetNetChannelInfo()->GetLatency(FLOW_OUTGOING) +
g_IEngine->GetNetChannelInfo()->GetLatency(FLOW_INCOMING);
if (speed == 0.0f) return Vector();
trace::filter_no_player.SetSelf(RAW_ENT(ent));
float dtg = DistanceToGround(ent);
@ -236,9 +240,14 @@ Vector ProjectilePrediction(CachedEntity* ent, int hb, float speed, float gravit
for (int steps = 0; steps < maxsteps; steps++, currenttime += ((float)(2 * range) / (float)maxsteps)) {
Vector curpos = result;
curpos += vel * currenttime;
if (dtg > 0.0f) {
curpos.z -= currenttime * currenttime * 400 * entgmod;
if (curpos.z < result.z - dtg) curpos.z = result.z - dtg;
if (debug_pp_extrapolate)
{
curpos += vel * currenttime * latency;
}
if (dtg > 0.0f)
{
curpos.z -= currenttime * currenttime * 400.0f * entgmod;
if (curpos.z < result.z - dtg) curpos.z = result.z - dtg;
}
float rockettime = g_pLocalPlayer->v_Eye.DistTo(curpos) / speed;
if (debug_pp_rockettimeping) rockettime += g_IEngine->GetNetChannelInfo()->GetLatency(FLOW_OUTGOING);
@ -248,6 +257,8 @@ Vector ProjectilePrediction(CachedEntity* ent, int hb, float speed, float gravit
mindelta = fabs(rockettime - currenttime);
}
}
if (debug_pp_rockettimeping)
besttime += g_IEngine->GetNetChannelInfo()->GetLatency(FLOW_OUTGOING);
bestpos.z += (400 * besttime * besttime * gravitymod);
// S = at^2/2 ; t = sqrt(2S/a)*/
return bestpos;

View File

@ -80,7 +80,7 @@ bool draw::EntityCenterToScreen(CachedEntity* entity, Vector& out) {
Vector world, min, max;
bool succ;
if (!entity || !RAW_ENT(entity)) return false;
if (CE_BAD(entity)) return false;
RAW_ENT(entity)->GetRenderBounds(min, max);
world = RAW_ENT(entity)->GetAbsOrigin();
world.z += (min.z + max.z) / 2;