diff --git a/.cproject b/.cproject index d9de7e37..8d0ef276 100644 --- a/.cproject +++ b/.cproject @@ -117,7 +117,7 @@ - + @@ -125,6 +125,7 @@ + diff --git a/code_signing_key.asc b/code_signing_key.asc new file mode 100644 index 00000000..7661051c --- /dev/null +++ b/code_signing_key.asc @@ -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----- diff --git a/include/classinfo/dummy.gen.hpp b/include/classinfo/dummy.gen.hpp index 2754418e..578dcd45 100644 --- a/include/classinfo/dummy.gen.hpp +++ b/include/classinfo/dummy.gen.hpp @@ -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 */ \ No newline at end of file +#endif /* DUMMY_AUTOGEN_HPP */ diff --git a/include/gui/cmdui/cmdui.hpp b/include/gui/cmdui/cmdui.hpp index 9029a7a7..04079bfe 100644 --- a/include/gui/cmdui/cmdui.hpp +++ b/include/gui/cmdui/cmdui.hpp @@ -13,4 +13,6 @@ void init(); void update(); void draw(); + + }} diff --git a/include/gui/cmdui/node.hpp b/include/gui/cmdui/node.hpp deleted file mode 100644 index 60c8f9ac..00000000 --- a/include/gui/cmdui/node.hpp +++ /dev/null @@ -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; -}; - -class node -{ -public: - int dummy; -}; - -class node_list: public node -{ -public: - node_list(); - std::vector 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 }; -}; - -}} - - diff --git a/include/offsets.hpp b/include/offsets.hpp index dc571f85..6e4d22b9 100644 --- a/include/offsets.hpp +++ b/include/offsets.hpp @@ -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); } diff --git a/include/reclasses/C_BaseCombatWeapon.hpp b/include/reclasses/C_BaseCombatWeapon.hpp new file mode 100644 index 00000000..b876eb0a --- /dev/null +++ b/include/reclasses/C_BaseCombatWeapon.hpp @@ -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(this, 395, 0)(this); + } +}; + + diff --git a/include/reclasses/C_TFWeaponBaseGun.hpp b/include/reclasses/C_TFWeaponBaseGun.hpp new file mode 100644 index 00000000..c0500fbb --- /dev/null +++ b/include/reclasses/C_TFWeaponBaseGun.hpp @@ -0,0 +1,16 @@ +/* + * C_TFWeaponBaseGun.hpp + * + * Created on: Nov 23, 2017 + * Author: nullifiedcat + */ + +#pragma once + +class C_TFWeaponBaseGun : public C_BaseCombatWeapon +{ +public: + +}; + + diff --git a/include/reclasses/reclasses.hpp b/include/reclasses/reclasses.hpp new file mode 100644 index 00000000..b036e68b --- /dev/null +++ b/include/reclasses/reclasses.hpp @@ -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" + + +} diff --git a/src/entitycache.cpp b/src/entitycache.cpp index b2f01874..14aab577 100644 --- a/src/entitycache.cpp +++ b/src/entitycache.cpp @@ -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 { diff --git a/src/hacks/AutoBackstab.cpp b/src/hacks/AutoBackstab.cpp index 1becf6c4..0be30f65 100644 --- a/src/hacks/AutoBackstab.cpp +++ b/src/hacks/AutoBackstab.cpp @@ -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_addr); - // 522 = DoSwingTrace - // FIXME offset - if (vfunc(weapon, 522)(weapon, &trace)) { + if (vfunc(weapon, offsets::DoSwingTrace())(weapon, &trace)) { if (trace.m_pEnt && reinterpret_cast(trace.m_pEnt)->GetClientClass()->m_ClassID == RCC_PLAYER) { if (NET_INT(trace.m_pEnt, netvar.iTeamNum) != g_pLocalPlayer->team) { if (IsBehindAndFacingTarget(weapon, reinterpret_cast(trace.m_pEnt))) diff --git a/src/hacks/Misc.cpp b/src/hacks/Misc.cpp index 824f8f4a..2902b4b1 100644 --- a/src/hacks/Misc.cpp +++ b/src/hacks/Misc.cpp @@ -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; diff --git a/src/helpers.cpp b/src/helpers.cpp index 871e5f72..036a3a56 100644 --- a/src/helpers.cpp +++ b/src/helpers.cpp @@ -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; diff --git a/src/hooks/CreateMove.cpp b/src/hooks/CreateMove.cpp index 9b22a782..0d91acfd 100644 --- a/src/hooks/CreateMove.cpp +++ b/src/hooks/CreateMove.cpp @@ -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)); diff --git a/src/prediction.cpp b/src/prediction.cpp index e5332210..17ee7107 100644 --- a/src/prediction.cpp +++ b/src/prediction.cpp @@ -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; diff --git a/src/visual/drawing.cpp b/src/visual/drawing.cpp index 86880453..3e5395b5 100644 --- a/src/visual/drawing.cpp +++ b/src/visual/drawing.cpp @@ -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;