Some fixes
This commit is contained in:
parent
aa98f1c7ee
commit
738599e37b
25
include/hacks/Backtrack.hpp
Normal file
25
include/hacks/Backtrack.hpp
Normal file
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Backtrack.hpp
|
||||
*
|
||||
* Created on: May 15, 2018
|
||||
* Author: bencat07
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "common.hpp"
|
||||
|
||||
namespace hacks {
|
||||
namespace shared {
|
||||
namespace backtrack {
|
||||
struct BacktrackData
|
||||
{
|
||||
int tickcount;
|
||||
Vector hitboxpos;
|
||||
};
|
||||
void Init();
|
||||
void Run();
|
||||
void Draw();
|
||||
extern BacktrackData headPositions[24][12];
|
||||
}
|
||||
}
|
||||
}
|
1
libglez
Submodule
1
libglez
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit a8fc8b75b1a8488a7a51e2575cb265b5ed24e36f
|
1
libxoverlay
Submodule
1
libxoverlay
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit de4e4bb2787a5c586bd54834f9b09b703b35e59e
|
1
simple-ipc
Submodule
1
simple-ipc
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 60f43c1c8ebe794345f8ab2ba465984ec445a9c6
|
134
src/hacks/Backtrack.cpp
Normal file
134
src/hacks/Backtrack.cpp
Normal file
@ -0,0 +1,134 @@
|
||||
/*
|
||||
* Backtrack.cpp
|
||||
*
|
||||
* Created on: May 15, 2018
|
||||
* Author: bencat07
|
||||
*/
|
||||
|
||||
#include "common.hpp"
|
||||
#include "Backtrack.hpp"
|
||||
namespace hacks {
|
||||
namespace shared {
|
||||
namespace backtrack {
|
||||
CatVar enable(CV_SWITCH, "backtrack", "1", "Enable backtrack", "For legit play only as of right now.");
|
||||
BacktrackData headPositions[24][12];
|
||||
|
||||
//=======================================================================
|
||||
inline float distance_point_to_line(Vector Point, Vector LineOrigin, Vector Dir)
|
||||
{
|
||||
auto PointDir = Point - LineOrigin;
|
||||
|
||||
auto TempOffset = PointDir.Dot(Dir) / (Dir.x*Dir.x + Dir.y*Dir.y + Dir.z*Dir.z);
|
||||
if (TempOffset < 0.000001f)
|
||||
return FLT_MAX;
|
||||
|
||||
auto PerpendicularPoint = LineOrigin + (Dir * TempOffset);
|
||||
|
||||
return (Point - PerpendicularPoint).Length();
|
||||
}
|
||||
|
||||
inline Vector angle_vector(Vector meme)
|
||||
{
|
||||
auto sy = sin(meme.y / 180.f * static_cast<float>(PI));
|
||||
auto cy = cos(meme.y / 180.f * static_cast<float>(PI));
|
||||
|
||||
auto sp = sin(meme.x / 180.f * static_cast<float>(PI));
|
||||
auto cp = cos(meme.x / 180.f* static_cast<float>(PI));
|
||||
|
||||
return Vector(cp*cy, cp*sy, -sp);
|
||||
}
|
||||
//=======================================================================
|
||||
void Init()
|
||||
{
|
||||
for (auto a : headPositions)
|
||||
{
|
||||
a->hitboxpos = {0,0,0};
|
||||
a->tickcount = 0;
|
||||
}
|
||||
}
|
||||
void Run()
|
||||
{
|
||||
if (!enable)
|
||||
return;
|
||||
CUserCmd *cmd = g_pUserCmd;
|
||||
int iBestTarget = -1;
|
||||
float bestFov = 99999;
|
||||
|
||||
if (CE_BAD(LOCAL_E))
|
||||
return;
|
||||
|
||||
for (int i = 1; i <= g_IEngine->GetMaxClients(); i++)
|
||||
{
|
||||
CachedEntity* pEntity = ENTITY(i);
|
||||
|
||||
if (CE_BAD(pEntity))
|
||||
continue;
|
||||
if (!pEntity->m_bAlivePlayer)
|
||||
{
|
||||
for (int j = 0; j < 13; j++) {
|
||||
headPositions[i][j].hitboxpos = {0,0,0};
|
||||
headPositions[i][j].tickcount = 0;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (pEntity->m_iTeam == LOCAL_E->m_iTeam)
|
||||
continue;
|
||||
|
||||
Vector hitboxpos = pEntity->hitboxes.GetHitbox(0)->center;
|
||||
headPositions[i][cmd->command_number % 13] = BacktrackData{ cmd->tick_count, hitboxpos };
|
||||
|
||||
Vector ViewDir = angle_vector(cmd->viewangles);
|
||||
float FOVDistance = distance_point_to_line(hitboxpos, g_pLocalPlayer->v_Eye, ViewDir);
|
||||
|
||||
if (bestFov > FOVDistance)
|
||||
{
|
||||
bestFov = FOVDistance;
|
||||
iBestTarget = i;
|
||||
}
|
||||
|
||||
if (iBestTarget != -1)
|
||||
{
|
||||
int bestTick = 0;
|
||||
float tempFOV = 9999;
|
||||
float bestFOV = 30;
|
||||
Vector lowestDistTicks(180, 180, 0);
|
||||
for (int t = 0; t < 12; ++t)
|
||||
{
|
||||
Vector ViewDir = angle_vector(cmd->viewangles);
|
||||
float tempFOV = distance_point_to_line(headPositions[iBestTarget][t].hitboxpos, g_pLocalPlayer->v_Eye, ViewDir);
|
||||
if (bestFOV > tempFOV)
|
||||
bestTick = t, bestFOV = tempFOV;
|
||||
}
|
||||
|
||||
if (cmd->buttons & IN_ATTACK)
|
||||
cmd->tick_count = headPositions[i][bestTick].tickcount;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
void Draw()
|
||||
{
|
||||
#if ENABLE_VISUALS
|
||||
for (int i = 0; i < 24; i++)
|
||||
for (int j = 0; j < 12; j++)
|
||||
{
|
||||
auto hbpos = headPositions[i][j].hitboxpos;
|
||||
auto tickount = headPositions[i][j].tickcount;
|
||||
if (!hbpos.x && !hbpos.y && !hbpos.z)
|
||||
continue;
|
||||
Vector out;
|
||||
rgba_t color = colors::FromHSL(fabs(sin(j / 2.0f)) * 360.0f,
|
||||
0.85f, 0.9f);
|
||||
if (draw::WorldToScreen(hbpos, out))
|
||||
{
|
||||
draw_api::draw_rect(out.x, out.y, 3, 3, color);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
19
src/hooks/IsPlayingTimeDemo.cpp
Normal file
19
src/hooks/IsPlayingTimeDemo.cpp
Normal file
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* IsPlayingTimeDemo.cpp
|
||||
*
|
||||
* Created on: May 13, 2018
|
||||
* Author: bencat07
|
||||
*/
|
||||
#include "HookedMethods.hpp"
|
||||
#include "MiscTemporary.hpp"
|
||||
|
||||
namespace hooked_methods
|
||||
{
|
||||
DEFINE_HOOKED_METHOD(IsPlayingTimeDemo, bool)
|
||||
{
|
||||
if (nolerp)
|
||||
return true;
|
||||
else
|
||||
return original::IsPlayingTimeDemo();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user