#pragma once
#include "../../Engine/Engine.h"
#include "../../SDK/Spoofed.h"
class CMisc
{
public:
void OnRender();
void OnCreateMove( CUserCmd* pCmd );
void FrameStageNotify(ClientFrameStage_t Stage);
#define POSTPROCESS_VALUE
void OnDrawModelExecute();
void OnPlaySound( const char* pszSoundName );
static void NormalizeInOut(Vector &vIn, Vector &vOut)
{
float flLen = vIn.Length();
if (flLen == 0) {
vOut.Init(0, 0, 1);
return;
}
flLen = 1 / flLen;
vOut.Init(vIn.x * flLen, vIn.y * flLen, vIn.z * flLen);
}
static void SinCos(float a, float* s, float*c)
{
*s = sin(a);
*c = cos(a);
}
static void AngleVectors2(const Vector& qAngles, Vector& vecForward)
{
float sp, sy, cp, cy;
SinCos((float)(qAngles[1] * (M_PI / 180.f)), &sy, &cy);
SinCos((float)(qAngles[0] * (M_PI / 180.f)), &sp, &cp);
vecForward[0] = cp*cy;
vecForward[1] = cp*sy;
vecForward[2] = -sp;
}
static void Walkbot(Vector & OrigAng)
{
CBaseEntity* localplayer = (CBaseEntity*)Interfaces::EntityList()->GetClientEntity(Interfaces::Engine()->GetLocalPlayer());
CUserCmd* pCmd;
bool walkbotBefore = false;
Vector viewangles;
Interfaces::Engine()->GetViewAngles(viewangles);
static int OldMouseX = OrigAng.y;
int mousedx = OldMouseX - OrigAng.y;
auto fDistanceToWall = [&](Vector diff = Vector(0, 0, 0))->float {
auto tmpviewangles = viewangles + diff;
trace_t tr;
Ray_t ray;
CTraceFilter filter;
filter.pSkip = localplayer;
Vector begin = localplayer->GetEyePosition(), t, end;
AngleVectors2(tmpviewangles, t);
NormalizeInOut(t, end);
end *= 8192.0f;
end += begin;
ray.Init(begin, end);
Interfaces::EngineTrace()->TraceRay(ray, 0x4600400B, &filter, &tr);
return (begin - tr.endpos).Size();
};
static float old1, old2, old3;
if (localplayer->GetVecVelocity().Length() < 3)
{
viewangles.y += 2.0f;
}
float Distances = Settings::Misc::flDistance;
if (fDistanceToWall() < Distances) // we are near to some wall
{
int turn = Settings::Misc::iTurn;
float negativeDist = fDistanceToWall(Vector(0, -1, 0)), positiveDist = fDistanceToWall(Vector(0, 1, 0));
if (abs(negativeDist - positiveDist) < 1.0f)
{
viewangles.y += turn;
}
else
{
viewangles.y += positiveDist < negativeDist ? -1 : 1;
}
}
if (Settings::Misc::misc_Bhop)
{
if ((localplayer->GetFlags() & FL_ONGROUND))
pCmd->buttons |= IN_JUMP;
else
{
pCmd->buttons |= IN_DUCK;
pCmd->buttons &= ~IN_FORWARD;
}
}
if (abs(viewangles.x) > 0)
viewangles.x = 1;
while (viewangles.y > 180.0f)
viewangles.y -= 360.0f;
while (viewangles.y < -180.0f)
viewangles.y += 360.0f;
SDK::Interfaces::Engine()->SetViewAngles(viewangles);
if (!walkbotBefore)
{
pCmd->forwardmove = 450.f;
walkbotBefore = true;
}
else if (walkbotBefore)
{
walkbotBefore = false;
pCmd->forwardmove = 450.f;
}
}
void OnOverrideView( CViewSetup* pSetup );
void OnGetViewModelFOV( float& fov );
vector<int> GetObservervators( int playerId );
void OnRenderSpectatorList();
};