Advertisement
Guest User

ayyragebot

a guest
Jul 16th, 2018
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 76.32 KB | None | 0 0
  1. #include "RageBot.h"
  2. #include "RenderManager.h"
  3. #include "Resolver.h"
  4. #include "Autowall.h"
  5. #include <iostream>
  6. #include "UTIL Functions.h"
  7. #include "xostr.h"
  8. #include "Hooks.h"
  9.  
  10. static bool dir = false;
  11. static bool back = false;
  12. static bool up = false;
  13. static bool jitter = false;
  14.  
  15. static bool backup = false;
  16. static bool default_aa = true;
  17.  
  18. #define TICK_INTERVAL (Interfaces::Globals->interval_per_tick)
  19. #define TIME_TO_TICKS( dt ) ( (int)( 0.5f + (float)(dt) / TICK_INTERVAL ) )
  20.  
  21. static bool panic = false;
  22.  
  23. void CRageBot::Init()
  24. {
  25. IsAimStepping = false;
  26. IsLocked = false;
  27. TargetID = -1;
  28. }
  29.  
  30. void CRageBot::Draw()
  31. {
  32.  
  33. }
  34.  
  35. float curtime_fixed(CUserCmd* ucmd) {
  36. auto local_player = Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());
  37. static int g_tick = 0;
  38. static CUserCmd* g_pLastCmd = nullptr;
  39. if (!g_pLastCmd || g_pLastCmd->hasbeenpredicted) {
  40. g_tick = local_player->GetTickBase();
  41. }
  42. else {
  43.  
  44.  
  45. ++g_tick;
  46. }
  47. g_pLastCmd = ucmd;
  48. float curtime = g_tick * Interfaces::Globals->interval_per_tick;
  49. return curtime;
  50. }
  51.  
  52. float GetLatency()
  53. {
  54. INetChannelInfo *nci = Interfaces::Engine->GetNetChannelInfo();
  55. if (nci)
  56. {
  57. float Latency = nci->GetAvgLatency(FLOW_OUTGOING) + nci->GetAvgLatency(FLOW_INCOMING);
  58. return Latency;
  59. }
  60. else
  61. {
  62. return 0.0f;
  63. }
  64. }
  65.  
  66. float OldLBY;
  67. float LBYBreakerTimer;
  68. float LastLBYUpdateTime;
  69.  
  70. bool bSwitch;
  71.  
  72. float CurrentVelocity(IClientEntity* LocalPlayer)
  73. {
  74. int vel = LocalPlayer->GetVelocity().Length2D();
  75. return vel;
  76. }
  77. bool NextLBYUpdate()
  78. {
  79. IClientEntity* LocalPlayer = hackManager.pLocal();
  80.  
  81. float flServerTime = (float)(LocalPlayer->GetTickBase() * Interfaces::Globals->interval_per_tick);
  82.  
  83.  
  84. if (OldLBY != LocalPlayer->GetLowerBodyYaw())
  85. {
  86. LBYBreakerTimer++;
  87. OldLBY = LocalPlayer->GetLowerBodyYaw();
  88. bSwitch = !bSwitch;
  89. LastLBYUpdateTime = flServerTime;
  90. }
  91.  
  92. if (CurrentVelocity(LocalPlayer) > 0.5)
  93. {
  94. LastLBYUpdateTime = flServerTime;
  95. return false;
  96. }
  97.  
  98. if ((LastLBYUpdateTime + 1 - (GetLatency() * 2) < flServerTime) && (LocalPlayer->GetFlags() & FL_ONGROUND))
  99. {
  100. if (LastLBYUpdateTime + (1.1 + 0.015)- (GetLatency() * 2) < flServerTime)
  101. {
  102. LastLBYUpdateTime += (1.1 + 0.015);
  103. }
  104. return true;
  105. }
  106. return false;
  107. }
  108.  
  109. bool next_lby_update_func(CUserCmd* m_pcmd, const float yaw_to_break) {
  110. auto m_local = Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());
  111.  
  112. if (m_local) {
  113. static float last_attempted_yaw;
  114. static float old_lby;
  115. static float next_lby_update_time;
  116. const float current_time = curtime_fixed(m_pcmd);
  117. if (old_lby != m_local->GetLowerBodyYaw() && last_attempted_yaw != m_local->GetLowerBodyYaw()) {
  118. old_lby = m_local->GetLowerBodyYaw();
  119. if (m_local->GetVelocity().Length2D() < 1) {
  120. auto latency = (Interfaces::Engine->GetNetChannelInfo()->GetAvgLatency(FLOW_INCOMING) + Interfaces::Engine->GetNetChannelInfo()->GetAvgLatency(FLOW_OUTGOING));
  121. next_lby_update_time = current_time + 1.1 + 0.015;
  122. }
  123. }
  124.  
  125. if (m_local->GetVelocity().Length2D() < 1) {
  126. if ((next_lby_update_time < current_time) && m_local->GetFlags() & FL_ONGROUND) {
  127. last_attempted_yaw = yaw_to_break;
  128. next_lby_update_time = current_time + 1.1 + 0.015;
  129. return true;
  130. }
  131. }
  132. }
  133.  
  134. return false;
  135. }
  136.  
  137.  
  138.  
  139. void Fakelag(CUserCmd *pCmd, bool &bSendPacket)
  140. {
  141.  
  142. IClientEntity* pLocal = (IClientEntity*)Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());
  143. static auto choked = 0;
  144. const auto max_fake_lag = Options::Menu.MiscTab.FakeLagChoke.GetValue();
  145. const auto max_fake_lag2 = Options::Menu.MiscTab.FakeLagChoke2.GetValue();
  146.  
  147.  
  148.  
  149. if (choked < max_fake_lag && pLocal->GetVelocity().Length2D() >= 3.5 && (pLocal->GetFlags() & FL_ONGROUND))
  150. {
  151. choked++;
  152. bSendPacket = false;
  153. }
  154. else if (choked < max_fake_lag2 && pLocal->GetVelocity().Length2D() >= 3.5 && !(pLocal->GetFlags() & FL_ONGROUND))
  155. {
  156. choked++;
  157. bSendPacket = false;
  158. }
  159. else if (choked < 1 && pLocal->GetVelocity().Length2D() < 3.5 && (pLocal->GetFlags() & FL_ONGROUND))
  160. {
  161. choked++;
  162. bSendPacket = false;
  163. }
  164. else
  165. {
  166. choked = 0;
  167. bSendPacket = true;
  168. }
  169.  
  170.  
  171.  
  172. if (!bSendPacket && Options::Menu.MiscTab.antilby.GetState() ) {
  173. if (NextLBYUpdate()) {
  174. pCmd->viewangles.y += Options::Menu.MiscTab.BreakLBYDelta.GetValue();
  175. }
  176. }
  177.  
  178. }
  179.  
  180.  
  181.  
  182. bool IsAbleToShoot(IClientEntity* pLocal)
  183. {
  184. C_BaseCombatWeapon* pWeapon = (C_BaseCombatWeapon*)Interfaces::EntList->GetClientEntityFromHandle(pLocal->GetActiveWeaponHandle());
  185. if (!pLocal)return false;
  186. if (!pWeapon)return false;
  187. float flServerTime = pLocal->GetTickBase() * Interfaces::Globals->interval_per_tick;
  188. return (!(pWeapon->GetNextPrimaryAttack() > flServerTime));
  189. }
  190.  
  191. float hitchance(IClientEntity* pLocal, C_BaseCombatWeapon* pWeapon)
  192. {
  193.  
  194. float hitchance = 101;
  195. if (!pWeapon) return 0;
  196.  
  197. if (Options::Menu.RageBotTab.AccuracyHitchance.GetValue() > 0)
  198. {
  199. float inaccuracy = pWeapon->GetInaccuracy();
  200. if (inaccuracy == 0) inaccuracy = 0.0000001;
  201. inaccuracy = 1 / inaccuracy;
  202. hitchance = inaccuracy;
  203. }
  204.  
  205. return hitchance;
  206. }
  207.  
  208. bool CanOpenFire()
  209. {
  210. IClientEntity* pLocalEntity = (IClientEntity*)Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());
  211. if (!pLocalEntity)
  212. return false;
  213.  
  214. C_BaseCombatWeapon* entwep = (C_BaseCombatWeapon*)Interfaces::EntList->GetClientEntityFromHandle(pLocalEntity->GetActiveWeaponHandle());
  215.  
  216. float flServerTime = (float)pLocalEntity->GetTickBase() * Interfaces::Globals->interval_per_tick;
  217. float flNextPrimaryAttack = entwep->GetNextPrimaryAttack();
  218.  
  219. std::cout << flServerTime << " " << flNextPrimaryAttack << std::endl;
  220.  
  221. return !(flNextPrimaryAttack > flServerTime);
  222. }
  223.  
  224.  
  225.  
  226.  
  227. template<class T, class U>
  228. inline T clamp(T in, U low, U high)
  229. {
  230. if (in <= low)
  231. return low;
  232. else if (in >= high)
  233. return high;
  234. else
  235. return in;
  236. }
  237.  
  238. float GetLerpTime()
  239. {
  240. int ud_rate = Interfaces::CVar->FindVar("cl_updaterate")->GetFloat();
  241. ConVar *min_ud_rate = Interfaces::CVar->FindVar("sv_minupdaterate");
  242. ConVar *max_ud_rate = Interfaces::CVar->FindVar("sv_maxupdaterate");
  243.  
  244. if (min_ud_rate && max_ud_rate)
  245. ud_rate = max_ud_rate->GetFloat();
  246.  
  247. float ratio = Interfaces::CVar->FindVar("cl_interp_ratio")->GetFloat();
  248.  
  249. if (ratio == 0)
  250. ratio = 1.0f;
  251.  
  252. float lerp = Interfaces::CVar->FindVar("cl_interp")->GetFloat();
  253. ConVar *c_min_ratio = Interfaces::CVar->FindVar("sv_client_min_interp_ratio");
  254. ConVar *c_max_ratio = Interfaces::CVar->FindVar("sv_client_max_interp_ratio");
  255.  
  256. if (c_min_ratio && c_max_ratio && c_min_ratio->GetFloat() != 1)
  257. ratio = clamp(ratio, c_min_ratio->GetFloat(), c_max_ratio->GetFloat());
  258.  
  259. return max(lerp, (ratio / ud_rate));
  260. }
  261.  
  262. float InterpFix()
  263. {
  264. static ConVar* cvar_cl_interp = Interfaces::CVar->FindVar("cl_interp");
  265. static ConVar* cvar_cl_updaterate = Interfaces::CVar->FindVar("cl_updaterate");
  266. static ConVar* cvar_sv_maxupdaterate = Interfaces::CVar->FindVar("sv_maxupdaterate");
  267. static ConVar* cvar_sv_minupdaterate = Interfaces::CVar->FindVar("sv_minupdaterate");
  268. static ConVar* cvar_cl_interp_ratio = Interfaces::CVar->FindVar("cl_interp_ratio");
  269.  
  270. IClientEntity* pLocal = hackManager.pLocal();
  271. C_BaseCombatWeapon* pWeapon = (C_BaseCombatWeapon*)Interfaces::EntList->GetClientEntityFromHandle(hackManager.pLocal()->GetActiveWeaponHandle());
  272.  
  273. float cl_interp = cvar_cl_interp->GetFloat();
  274. int cl_updaterate = cvar_cl_updaterate->GetInt();
  275. int sv_maxupdaterate = cvar_sv_maxupdaterate->GetInt();
  276. int sv_minupdaterate = cvar_sv_minupdaterate->GetInt();
  277. int cl_interp_ratio = cvar_cl_interp_ratio->GetInt();
  278.  
  279. if (sv_maxupdaterate <= cl_updaterate)
  280. cl_updaterate = sv_maxupdaterate;
  281.  
  282. if (sv_minupdaterate > cl_updaterate)
  283. cl_updaterate = sv_minupdaterate;
  284.  
  285. float new_interp = (float)cl_interp_ratio / (float)cl_updaterate;
  286.  
  287. if (new_interp > cl_interp)
  288. cl_interp = new_interp;
  289.  
  290. return max(cl_interp, cl_interp_ratio / cl_updaterate);
  291. }
  292.  
  293. void CRageBot::Move(CUserCmd *pCmd, bool &bSendPacket)
  294. {
  295. IClientEntity* pLocalEntity = (IClientEntity*)Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());
  296.  
  297. if (!pLocalEntity || !Interfaces::Engine->IsConnected() || !Interfaces::Engine->IsInGame())
  298. return;
  299.  
  300. Fakelag(pCmd, bSendPacket);
  301.  
  302. if (Options::Menu.MiscTab.AntiAimEnable.GetState())
  303. {
  304. static int ChokedPackets = 1;
  305.  
  306. C_BaseCombatWeapon* pWeapon = (C_BaseCombatWeapon*)Interfaces::EntList->GetClientEntityFromHandle(hackManager.pLocal()->GetActiveWeaponHandle());
  307. if (!pWeapon)
  308. return;
  309.  
  310. if (ChokedPackets < 1 && pLocalEntity->GetLifeState() == LIFE_ALIVE && pCmd->buttons & IN_ATTACK && CanOpenFire() && GameUtils::IsBallisticWeapon(pWeapon))
  311. {
  312. bSendPacket = false;
  313. }
  314. else
  315. {
  316. if (pLocalEntity->GetLifeState() == LIFE_ALIVE)
  317. {
  318. DoAntiAim(pCmd, bSendPacket);
  319.  
  320. }
  321. ChokedPackets = 1;
  322. }
  323.  
  324. }
  325.  
  326. float simtime = 0;
  327. float current_aim_simulationtime = simtime;
  328.  
  329.  
  330.  
  331.  
  332. if (Options::Menu.RageBotTab.AimbotEnable.GetState() && !Options::Menu.RageBotTab.lag_pred.GetState())
  333. {
  334. pCmd->tick_count = TIME_TO_TICKS(GetLerpTime());
  335. DoAimbot(pCmd, bSendPacket);
  336. DoNoRecoil(pCmd);
  337.  
  338. }
  339. else if (Options::Menu.RageBotTab.AimbotEnable.GetState() && Options::Menu.RageBotTab.lag_pred.GetState())
  340. {
  341. pCmd->tick_count = TIME_TO_TICKS(current_aim_simulationtime) + TIME_TO_TICKS(GetLerpTime());
  342. DoAimbot(pCmd, bSendPacket);
  343. DoNoRecoil(pCmd);
  344.  
  345. }
  346.  
  347.  
  348.  
  349. if (Options::Menu.RageBotTab.AimbotAimStep.GetState())
  350. {
  351. Vector AddAngs = pCmd->viewangles - LastAngle;
  352. if (AddAngs.Length2D() > 25.f)
  353. {
  354. Normalize(AddAngs, AddAngs);
  355. AddAngs *= 25;
  356. pCmd->viewangles = LastAngle + AddAngs;
  357. GameUtils::NormaliseViewAngle(pCmd->viewangles);
  358. }
  359. }
  360. LastAngle = pCmd->viewangles;
  361. }
  362.  
  363.  
  364. Vector BestPoint(IClientEntity *targetPlayer, Vector &final)
  365. {
  366. IClientEntity* pLocal = hackManager.pLocal();
  367.  
  368. trace_t tr;
  369. Ray_t ray;
  370. CTraceFilter filter;
  371.  
  372. filter.pSkip = targetPlayer;
  373. ray.Init(final + Vector(0, 0, 10), final);
  374. Interfaces::Trace->TraceRay(ray, MASK_SHOT, &filter, &tr);
  375.  
  376. final = tr.endpos;
  377. return final;
  378. }
  379.  
  380. void CRageBot::DoAimbot(CUserCmd *pCmd, bool &bSendPacket)
  381. {
  382. if (Options::Menu.RageBotTab.AimbotEnable.GetState())
  383. {
  384.  
  385. IClientEntity* pTarget = nullptr;
  386.  
  387. hackManager.pLocal();
  388.  
  389. IClientEntity* pLocal = (IClientEntity*)Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());
  390.  
  391. if (pLocal->GetHealth() <= 0) return;
  392.  
  393. bool FindNewTarget = true;
  394. //IsLocked = false;
  395.  
  396. // Don't aimbot with the knife..
  397. C_BaseCombatWeapon* pWeapon = (C_BaseCombatWeapon*)Interfaces::EntList->GetClientEntityFromHandle(pLocal->GetActiveWeaponHandle());
  398.  
  399. if (pWeapon != nullptr)
  400. {
  401.  
  402. if (pWeapon->GetAmmoInClip() == 0 || !GameUtils::IsBallisticWeapon(pWeapon) || GameUtils::IsGrenade(pWeapon)) return;
  403.  
  404. }
  405. else
  406. return;
  407. if (GameUtils::IsRevolver(pWeapon))
  408. {
  409. static int delay = 0;
  410. delay++;
  411. if (delay <= 15)pCmd->buttons |= IN_ATTACK;
  412. else delay = 0;
  413. }
  414. // Make sure we have a good target
  415. if (IsLocked && TargetID >= 0 && HitBox >= 0)
  416. {
  417. pTarget = Interfaces::EntList->GetClientEntity(TargetID);
  418. if (pTarget && TargetMeetsRequirements(pTarget))
  419. {
  420. HitBox = HitScan(pTarget);
  421. if (HitBox >= 0)
  422. {
  423. Vector ViewOffset = pLocal->GetOrigin() + pLocal->GetViewOffset();
  424. Vector View; Interfaces::Engine->GetViewAngles(View);
  425. float FoV = FovToPlayer(ViewOffset, View, pTarget, HitBox);
  426. if (FoV < Options::Menu.RageBotTab.AimbotFov.GetValue())
  427. FindNewTarget = false;
  428. }
  429. }
  430. }
  431.  
  432.  
  433.  
  434. if (FindNewTarget)
  435. {
  436. Globals::Shots = 0;
  437. TargetID = 0;
  438. pTarget = nullptr;
  439. HitBox = -1;
  440.  
  441.  
  442. TargetID = GetTargetCrosshair();
  443.  
  444.  
  445.  
  446. if (TargetID >= 0)
  447. {
  448. pTarget = Interfaces::EntList->GetClientEntity(TargetID);
  449. }
  450. }
  451.  
  452.  
  453.  
  454. if (TargetID >= 0 && pTarget)
  455. {
  456. HitBox = HitScan(pTarget);
  457.  
  458. if (!CanOpenFire()) return;
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467. Vector AimPoint = hitbox_location(pTarget, HitBox);
  468.  
  469. if (GameUtils::IsScopedWeapon(pWeapon) && !pWeapon->IsScoped() && Options::Menu.RageBotTab.AccuracyAutoScope.GetState()) pCmd->buttons |= IN_ATTACK2;
  470. else if ((hitchance(pLocal, pWeapon)) >= Options::Menu.RageBotTab.AccuracyHitchance.GetValue() * 1.5 || Options::Menu.RageBotTab.AccuracyHitchance.GetValue() == 0 || *pWeapon->m_AttributeManager()->m_Item()->ItemDefinitionIndex() == 64)
  471. {
  472. if (AimAtPoint(pLocal, AimPoint, pCmd, bSendPacket))
  473. {
  474. if ((pTarget->GetFlags() & FL_ONGROUND) && pTarget->GetChokedTicks() > 3 && pTarget->GetChokedTicks() <= 14)
  475. {
  476. if (Options::Menu.RageBotTab.AimbotAutoFire.GetState() && !(pCmd->buttons & IN_ATTACK))
  477. {
  478. AimPoint -= pTarget->GetAbsOrigin();
  479. AimPoint += pTarget->GetOrigin();
  480. pCmd->buttons |= IN_ATTACK;
  481.  
  482. }
  483. else if (pCmd->buttons & IN_ATTACK || pCmd->buttons & IN_ATTACK2)return;
  484. }
  485. else if ((pTarget->GetFlags() & FL_ONGROUND) && pTarget->GetChokedTicks() > 14)
  486. {
  487. if (Options::Menu.RageBotTab.AimbotAutoFire.GetState() && !(pCmd->buttons & IN_ATTACK)) {
  488.  
  489. AimPoint -= pTarget->GetAbsOrigin();
  490. AimPoint += pTarget->GetSimulationTime();
  491. pCmd->buttons |= IN_ATTACK;
  492.  
  493. }
  494. else if (pCmd->buttons & IN_ATTACK || pCmd->buttons & IN_ATTACK2)return;
  495. }
  496. else if (!(pTarget->GetFlags() & FL_ONGROUND) && pTarget->GetChokedTicks() > 2)
  497. {
  498. if (Options::Menu.RageBotTab.AimbotAutoFire.GetState() && !(pCmd->buttons & IN_ATTACK))
  499. {
  500. AimPoint -= pTarget->GetAbsOrigin();
  501. AimPoint += pTarget->GetOrigin();
  502. pCmd->buttons |= IN_ATTACK;
  503.  
  504. }
  505. else if (pCmd->buttons & IN_ATTACK || pCmd->buttons & IN_ATTACK2)return;
  506. }
  507. else
  508. {
  509. if (Options::Menu.RageBotTab.AimbotAutoFire.GetState() && !(pCmd->buttons & IN_ATTACK))
  510. {
  511. pCmd->buttons |= IN_ATTACK;
  512. }
  513. else if (pCmd->buttons & IN_ATTACK || pCmd->buttons & IN_ATTACK2)return;
  514. }
  515. }
  516. }
  517. if (IsAbleToShoot(pLocal) && pCmd->buttons & IN_ATTACK) Globals::Shots += 1;
  518.  
  519.  
  520. static bool WasFiring = false;
  521. if (pWeapon != nullptr)
  522. {
  523. if (GameUtils::IsPistol(pWeapon) && *pWeapon->m_AttributeManager()->m_Item()->ItemDefinitionIndex() != 64)
  524. {
  525. if (pCmd->buttons & IN_ATTACK && !GameUtils::IsGrenade(pWeapon) && !GameUtils::IsKnife(pWeapon))
  526. {
  527. if (WasFiring)
  528. {
  529. pCmd->buttons &= ~IN_ATTACK;
  530. }
  531. }
  532.  
  533. WasFiring = pCmd->buttons & IN_ATTACK ? true : false;
  534. }
  535. }
  536.  
  537. }
  538. }
  539. }
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547. bool CRageBot::TargetMeetsRequirements(IClientEntity* pEntity)
  548. {
  549. auto local = Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());
  550. // Is a valid player
  551. if (pEntity && pEntity->IsDormant() == false && pEntity->IsAlive() && pEntity->GetIndex() != local->GetIndex())
  552. {
  553. // Entity Type checks
  554. ClientClass *pClientClass = pEntity->GetClientClass();
  555. player_info_t pinfo;
  556. if (pClientClass->m_ClassID == (int)CSGOClassID::CCSPlayer && Interfaces::Engine->GetPlayerInfo(pEntity->GetIndex(), &pinfo))
  557. {
  558. // Team Check
  559. if (pEntity->GetTeamNum() != local->GetTeamNum() )
  560. {
  561. // Spawn Check
  562. if (!pEntity->HasGunGameImmunity())
  563. {
  564. return true;
  565. }
  566. }
  567. }
  568. }
  569.  
  570. // They must have failed a requirement
  571. return false;
  572. }
  573.  
  574. float CRageBot::FovToPlayer(Vector ViewOffSet, Vector View, IClientEntity* pEntity, int aHitBox)
  575. {
  576. // Anything past 180 degrees is just going to wrap around
  577. CONST FLOAT MaxDegrees = 180.0f;
  578.  
  579. // Get local angles
  580. Vector Angles = View;
  581.  
  582. // Get local view / eye position
  583. Vector Origin = ViewOffSet;
  584.  
  585. // Create and intiialize vectors for calculations below
  586. Vector Delta(0, 0, 0);
  587. //Vector Origin(0, 0, 0);
  588. Vector Forward(0, 0, 0);
  589.  
  590. // Convert angles to normalized directional forward vector
  591. AngleVectors(Angles, &Forward);
  592. Vector AimPos = hitbox_location(pEntity, aHitBox); //pvs fix disabled
  593. // Get delta vector between our local eye position and passed vector
  594. VectorSubtract(AimPos, Origin, Delta);
  595. //Delta = AimPos - Origin;
  596.  
  597. // Normalize our delta vector
  598. Normalize(Delta, Delta);
  599.  
  600. // Get dot product between delta position and directional forward vectors
  601. FLOAT DotProduct = Forward.Dot(Delta);
  602.  
  603. // Time to calculate the field of view
  604. return (acos(DotProduct) * (MaxDegrees / PI));
  605. }
  606.  
  607. float FovToPoint(Vector ViewOffSet, Vector View, Vector Point)
  608. {
  609. // Get local view / eye position
  610. Vector Origin = ViewOffSet;
  611.  
  612. // Create and intiialize vectors for calculations below
  613. Vector Delta(0, 0, 0);
  614. Vector Forward(0, 0, 0);
  615.  
  616. // Convert angles to normalized directional forward vector
  617. AngleVectors(View, &Forward);
  618. Vector AimPos = Point;
  619.  
  620. // Get delta vector between our local eye position and passed vector
  621. Delta = AimPos - Origin;
  622. //Delta = AimPos - Origin;
  623.  
  624. // Normalize our delta vector
  625. Normalize(Delta, Delta);
  626.  
  627. // Get dot product between delta position and directional forward vectors
  628. FLOAT DotProduct = Forward.Dot(Delta);
  629.  
  630. // Time to calculate the field of view
  631. return (acos(DotProduct) * (180.f / PI));
  632. }
  633. int CRageBot::GetTargetCrosshair()
  634. {
  635. int target = -1;
  636. float minFoV = Options::Menu.RageBotTab.AimbotFov.GetValue();
  637.  
  638. IClientEntity * pLocal = Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());
  639. Vector ViewOffset = pLocal->GetOrigin() + pLocal->GetViewOffset();
  640. Vector View; Interfaces::Engine->GetViewAngles(View);
  641.  
  642. for (int i = 0; i < Interfaces::EntList->GetMaxEntities(); i++)
  643. {
  644. IClientEntity *pEntity = Interfaces::EntList->GetClientEntity(i);
  645.  
  646. if (TargetMeetsRequirements(pEntity))
  647. {
  648. int NewHitBox = HitScan(pEntity);
  649. if (NewHitBox >= 0)
  650. {
  651. float fov = FovToPlayer(ViewOffset, View, pEntity, 0);
  652. if (fov < minFoV)
  653. {
  654. minFoV = fov;
  655. target = i;
  656. }
  657. }
  658. }
  659. }
  660.  
  661. return target;
  662. }
  663.  
  664. int CRageBot::GetTargetDistance()
  665. {
  666. int target = -1;
  667. int minDist = 99999;
  668.  
  669. IClientEntity* pLocal = hackManager.pLocal();
  670. Vector ViewOffset = pLocal->GetOrigin() + pLocal->GetViewOffset();
  671. Vector View; Interfaces::Engine->GetViewAngles(View);
  672.  
  673. for (int i = 0; i < Interfaces::EntList->GetMaxEntities(); i++)
  674. {
  675. IClientEntity *pEntity = Interfaces::EntList->GetClientEntity(i);
  676. if (TargetMeetsRequirements(pEntity))
  677. {
  678. int NewHitBox = HitScan(pEntity);
  679. if (NewHitBox >= 0)
  680. {
  681. Vector Difference = pLocal->GetOrigin() - pEntity->GetOrigin();
  682. int Distance = Difference.Length();
  683. float fov = FovToPlayer(ViewOffset, View, pEntity, 0);
  684. if (Distance < minDist && fov < Options::Menu.RageBotTab.AimbotFov.GetValue())
  685. {
  686. minDist = Distance;
  687. target = i;
  688. }
  689. }
  690. }
  691. }
  692.  
  693. return target;
  694. }
  695.  
  696. int CRageBot::GetTargetNextShot()
  697. {
  698. int target = -1;
  699. int minfov = 361;
  700.  
  701. IClientEntity* pLocal = hackManager.pLocal();
  702. Vector ViewOffset = pLocal->GetOrigin() + pLocal->GetViewOffset();
  703. Vector View; Interfaces::Engine->GetViewAngles(View);
  704.  
  705. for (int i = 0; i < Interfaces::EntList->GetMaxEntities(); i++)
  706. {
  707. IClientEntity *pEntity = Interfaces::EntList->GetClientEntity(i);
  708. if (TargetMeetsRequirements(pEntity))
  709. {
  710. int NewHitBox = HitScan(pEntity);
  711. if (NewHitBox >= 0)
  712. {
  713. int Health = pEntity->GetHealth();
  714. float fov = FovToPlayer(ViewOffset, View, pEntity, 0);
  715. if (fov < minfov && fov < Options::Menu.RageBotTab.AimbotFov.GetValue())
  716. {
  717. minfov = fov;
  718. target = i;
  719. }
  720. else
  721. minfov = 361;
  722. }
  723. }
  724. }
  725.  
  726. return target;
  727. }
  728.  
  729. float GetFov(const QAngle& viewAngle, const QAngle& aimAngle)
  730. {
  731. Vector ang, aim;
  732.  
  733. AngleVectors(viewAngle, &aim);
  734. AngleVectors(aimAngle, &ang);
  735.  
  736. return RAD2DEG(acos(aim.Dot(ang) / aim.LengthSqr()));
  737. }
  738.  
  739. double inline __declspec (naked) __fastcall FASTSQRT(double n)
  740. {
  741. _asm fld qword ptr[esp + 4]
  742. _asm fsqrt
  743. _asm ret 8
  744. }
  745.  
  746. float VectorDistance(Vector v1, Vector v2)
  747. {
  748. return FASTSQRT(pow(v1.x - v2.x, 2) + pow(v1.y - v2.y, 2) + pow(v1.z - v2.z, 2));
  749. }
  750.  
  751. int CRageBot::GetTargetThreat(CUserCmd* pCmd)
  752. {
  753. auto iBestTarget = -1;
  754. float flDistance = 8192.f;
  755.  
  756. IClientEntity* pLocal = hackManager.pLocal();
  757.  
  758. for (int i = 0; i < Interfaces::EntList->GetHighestEntityIndex(); i++)
  759. {
  760. IClientEntity *pEntity = Interfaces::EntList->GetClientEntity(i);
  761. if (TargetMeetsRequirements(pEntity))
  762. {
  763. int NewHitBox = HitScan(pEntity);
  764. auto vecHitbox = pEntity->GetBonePos(NewHitBox);
  765. if (NewHitBox >= 0)
  766. {
  767. Vector Difference = pLocal->GetOrigin() - pEntity->GetOrigin();
  768. QAngle TempTargetAbs;
  769. CalcAngle(pLocal->GetEyePosition(), vecHitbox, TempTargetAbs);
  770. float flTempFOVs = GetFov(pCmd->viewangles, TempTargetAbs);
  771. float flTempDistance = VectorDistance(pLocal->GetOrigin(), pEntity->GetOrigin());
  772. if (flTempDistance < flDistance && flTempFOVs < Options::Menu.RageBotTab.AimbotFov.GetValue())
  773. {
  774. flDistance = flTempDistance;
  775. iBestTarget = i;
  776. }
  777. }
  778. }
  779. }
  780. return iBestTarget;
  781. }
  782.  
  783. int CRageBot::GetTargetHealth()
  784. {
  785. int target = -1;
  786. int minHealth = 101;
  787.  
  788. IClientEntity* pLocal = hackManager.pLocal();
  789. Vector ViewOffset = pLocal->GetOrigin() + pLocal->GetViewOffset();
  790. Vector View; Interfaces::Engine->GetViewAngles(View);
  791.  
  792. for (int i = 0; i < Interfaces::EntList->GetMaxEntities(); i++)
  793. {
  794. IClientEntity *pEntity = Interfaces::EntList->GetClientEntity(i);
  795. if (TargetMeetsRequirements(pEntity))
  796. {
  797. int NewHitBox = HitScan(pEntity);
  798. if (NewHitBox >= 0)
  799. {
  800. int Health = pEntity->GetHealth();
  801. float fov = FovToPlayer(ViewOffset, View, pEntity, 0);
  802. if (Health < minHealth && fov < Options::Menu.RageBotTab.AimbotFov.GetValue())
  803. {
  804. minHealth = Health;
  805. target = i;
  806. }
  807. }
  808. }
  809. }
  810.  
  811. return target;
  812. }
  813. int CRageBot::HitScan(IClientEntity* pEntity)
  814. {
  815. IClientEntity* pLocal = hackManager.pLocal();
  816. std::vector<int> HitBoxesToScan;
  817.  
  818. #pragma region GetHitboxesToScan
  819. int HitScanMode = Options::Menu.RageBotTab.TargetHitscan.GetIndex();
  820. float huso = (pEntity->GetHealth());
  821. float health = Options::Menu.RageBotTab.BaimIfUnderXHealth.GetValue();
  822.  
  823. bool Multipoint = Options::Menu.RageBotTab.TargetMultipoint.GetState();
  824. int TargetHitbox = Options::Menu.RageBotTab.TargetHitbox.GetIndex();
  825. static bool enemyHP = false;
  826. C_BaseCombatWeapon* pWeapon = (C_BaseCombatWeapon*)Interfaces::EntList->GetClientEntityFromHandle(hackManager.pLocal()->GetActiveWeaponHandle());
  827.  
  828. if (huso < health)
  829. {
  830. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  831. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  832. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  833. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  834. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  835. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_UPPER_ARM);
  836. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_UPPER_ARM);
  837. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_THIGH);
  838. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_THIGH);
  839. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_HAND);
  840. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_HAND);
  841.  
  842. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_FOREARM);
  843. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_FOREARM);
  844. }
  845. else if (Options::Menu.RageBotTab.AWPAtBody.GetState() && GameUtils::AWP(pWeapon))
  846. {
  847. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  848. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  849. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  850. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  851. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  852. }
  853. else
  854. {
  855. if (HitScanMode == 0)
  856. {
  857. // No Hitscan, just a single hitbox
  858. switch (Options::Menu.RageBotTab.TargetHitbox.GetIndex())
  859. {
  860. case 0:
  861. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_HEAD);
  862. break;
  863. case 1:
  864. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK);
  865. break;
  866. case 2:
  867. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  868. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  869. break;
  870. case 3:
  871. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  872. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  873. break;
  874. case 4:
  875. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_CALF);
  876. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_CALF);
  877. break;
  878. }
  879. }
  880. else
  881. {
  882. if (GameUtils::IsZeus(pWeapon))
  883. {
  884.  
  885. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  886. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  887. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  888. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  889. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_THIGH);
  890. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_THIGH);
  891. }
  892. else if (pEntity->GetHealth() <= Options::Menu.RageBotTab.BaimIfUnderXHealth.GetValue() && pEntity->GetHealth() != 0)
  893. {
  894. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK); //I will lets this
  895. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  896. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  897. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  898. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  899. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_FOREARM);
  900. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_FOREARM);
  901. }
  902. else if (GetAsyncKeyState(Options::Menu.RageBotTab.bigbaim.GetKey()))
  903. {
  904. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK); //I will lets this
  905. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  906. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  907. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  908. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_THIGH);
  909. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_THIGH);
  910. }
  911. else if (Globals::missedshots >= Options::Menu.RageBotTab.baim.GetValue())
  912. {
  913. if (Globals::missedshots <= Options::Menu.RageBotTab.bruteX.GetValue() || Globals::missedshots >= Options::Menu.RageBotTab.bruteX.GetValue() + 4)
  914. {
  915. //HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK); ///With neck hitbox you will still hit p fakes
  916. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  917. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  918. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  919. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_THIGH);
  920. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_THIGH);
  921. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  922.  
  923. }
  924. else if (GetAsyncKeyState(Options::Menu.RageBotTab.bigbaim.GetKey()))
  925. {
  926. //HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK); ///Again head is almost same as Neck so dont use it for baim only purposes
  927. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  928. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  929. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  930. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_THIGH);
  931. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_THIGH);
  932. }
  933. else
  934. {
  935. switch (HitScanMode)
  936. {
  937. case 1:
  938.  
  939. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_HEAD);
  940. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  941. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_THIGH);
  942. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_THIGH);
  943. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_CALF);
  944. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_CALF);
  945. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_FOOT);
  946. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_FOOT);
  947. break;
  948. case 2:
  949. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_HEAD);
  950. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK);
  951. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  952. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  953. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  954. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_THIGH);
  955. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_THIGH);
  956. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_CALF);
  957. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_CALF);
  958. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_FOOT);
  959. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_FOOT);
  960. break;
  961. case 3:
  962. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_HEAD);
  963. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK);
  964. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  965. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  966. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  967. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  968. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_THIGH);
  969. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_THIGH);
  970. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_FOOT);
  971. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_FOOT);
  972. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK);
  973. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  974. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_HAND);
  975. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_HAND);
  976. break;
  977. case 4:
  978. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_HEAD);
  979. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  980. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  981. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_THIGH);
  982. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_THIGH);
  983. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_CALF);
  984. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_CALF);
  985. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_FOOT);
  986. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_FOOT);
  987. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK);
  988. break;
  989.  
  990. }
  991. }
  992. }
  993. else
  994. {
  995. switch (HitScanMode)
  996. {
  997. case 1:
  998.  
  999. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_HEAD);
  1000. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK);
  1001. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  1002. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_CALF);
  1003. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_CALF);
  1004. break;
  1005. case 2:
  1006. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_HEAD);
  1007. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK);
  1008. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  1009. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  1010. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  1011. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_FOOT);
  1012. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_CALF);
  1013. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_CALF);
  1014. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_FOOT);
  1015. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_FOOT);
  1016. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_THIGH);
  1017. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_THIGH);
  1018.  
  1019. break;
  1020. case 3:
  1021. {
  1022. if (pEntity->IsMoving())
  1023. {
  1024. if (pEntity->GetMoveType() & FL_DUCKING)
  1025. {
  1026. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK);
  1027. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  1028. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  1029. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  1030. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  1031. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_THIGH);
  1032. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_THIGH);
  1033. }
  1034. else
  1035. {
  1036. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_HEAD);
  1037. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK);
  1038. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_FOOT);
  1039. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_FOOT);
  1040. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  1041. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  1042. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  1043. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  1044. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_FOREARM);
  1045. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_FOREARM);
  1046. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_THIGH);
  1047. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_CALF);
  1048. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_CALF);
  1049. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  1050. }
  1051. }
  1052. else
  1053. {
  1054. if (pEntity->GetMoveType() & FL_DUCKING)
  1055. {
  1056. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK);
  1057. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  1058. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  1059. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  1060. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  1061. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_THIGH);
  1062. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_THIGH);
  1063. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_FOOT);
  1064. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_FOOT);
  1065. }
  1066. else
  1067. {
  1068. if (Globals::missedshots <= Options::Menu.RageBotTab.bruteX.GetValue() || Globals::missedshots >= Options::Menu.RageBotTab.bruteX.GetValue() + 4)
  1069. {
  1070. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_HEAD);
  1071. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK);
  1072. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_FOOT);
  1073. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_FOOT);
  1074. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  1075. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  1076. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  1077. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  1078. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_FOREARM);
  1079. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_FOREARM);
  1080. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_THIGH);
  1081. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_CALF);
  1082. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_CALF);
  1083. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK);
  1084. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  1085. }
  1086. else
  1087. {
  1088.  
  1089. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK);
  1090. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  1091. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  1092. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  1093. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  1094. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_FOREARM);
  1095. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_FOREARM);
  1096. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_THIGH);
  1097. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK);
  1098. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_UPPER_CHEST);
  1099. }
  1100. }
  1101. }
  1102.  
  1103. }
  1104. case 4:
  1105. {
  1106. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_HEAD);
  1107. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_BELLY);
  1108. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_PELVIS);
  1109. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_THIGH);
  1110. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_THIGH);
  1111. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_CALF);
  1112. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_CALF);
  1113. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_LEFT_FOOT);
  1114. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_RIGHT_FOOT);
  1115. HitBoxesToScan.push_back((int)CSGOHitboxID::HITBOX_NECK);
  1116. }
  1117.  
  1118.  
  1119. break;
  1120. }
  1121. }
  1122. }
  1123. }
  1124. #pragma endregion Get the list of shit to scan
  1125.  
  1126. float highestDamage;
  1127. for (auto HitBoxID : HitBoxesToScan)
  1128. {
  1129. if (Options::Menu.RageBotTab.AccuracyAutoWall.GetState())
  1130. {
  1131. Vector Point = hitbox_location(pEntity, HitBoxID);
  1132. float dmg = 0.f;
  1133. if (CanHit(Point, &dmg))
  1134. {
  1135.  
  1136. if (dmg >= Options::Menu.RageBotTab.AccuracyMinimumDamage.GetValue() || (pEntity->GetHealth() > 75 && (dmg + 35) < pEntity->GetHealth()))
  1137. {
  1138. return HitBoxID;
  1139. highestDamage = dmg;
  1140. }
  1141.  
  1142.  
  1143. }
  1144. }
  1145. else
  1146. {
  1147. if (GameUtils::IsVisible(hackManager.pLocal(), pEntity, (HitBoxID && (HitBoxID != (78 || 79 || 72)))))
  1148. {
  1149. Vector Point = hitbox_location(pEntity, HitBoxID);
  1150. float dmg = 0.f;
  1151. if (CanHit(Point, &dmg))
  1152. {
  1153.  
  1154. if (dmg >= Options::Menu.RageBotTab.AccuracyMinimumDamage.GetValue() || dmg > pEntity->GetHealth())
  1155. {
  1156. return HitBoxID;
  1157. highestDamage = dmg;
  1158. }
  1159.  
  1160.  
  1161. }
  1162. }
  1163. else if (GameUtils::IsVisible(hackManager.pLocal(), pEntity, HitBoxID))
  1164. {
  1165. Vector Point = hitbox_location(pEntity, HitBoxID);
  1166. float dmg = 0.f;
  1167. if (CanHit(Point, &dmg))
  1168. {
  1169.  
  1170. if (dmg >= 0 || dmg > pEntity->GetHealth())
  1171. {
  1172. return HitBoxID;
  1173. highestDamage = dmg;
  1174. }
  1175.  
  1176.  
  1177. }
  1178. }
  1179. }
  1180. }
  1181.  
  1182. return -1;
  1183. }
  1184.  
  1185.  
  1186. void CRageBot::DoNoRecoil(CUserCmd *pCmd)
  1187. {
  1188. IClientEntity* pLocal = hackManager.pLocal();
  1189.  
  1190.  
  1191.  
  1192. if (pLocal)
  1193. {
  1194. Vector AimPunch = pLocal->localPlayerExclusive()->GetAimPunchAngle();
  1195. if (AimPunch.Length2D() > 0 && AimPunch.Length2D() < 150)
  1196. {
  1197. if (Options::Menu.MiscTab.OtherSafeMode.GetIndex() == 0 )
  1198. {
  1199. pCmd->viewangles -= AimPunch *2.01;
  1200. GameUtils::NormaliseViewAngle(pCmd->viewangles);
  1201. }
  1202. else if (Options::Menu.MiscTab.OtherSafeMode.GetIndex() == 1)
  1203. {
  1204. pCmd->viewangles -= AimPunch * 1.95;
  1205. GameUtils::NormaliseViewAngle(pCmd->viewangles);
  1206. }
  1207. else if (Options::Menu.MiscTab.OtherSafeMode.GetIndex() == 2)
  1208. {
  1209.  
  1210. if (Globals::Shots <= 2)
  1211. {
  1212. pCmd->viewangles -= AimPunch * (1.473);
  1213. GameUtils::NormaliseViewAngle(pCmd->viewangles);
  1214. }
  1215. else if (Globals::Shots > 2 && Globals::Shots < 5)
  1216. {
  1217. pCmd->viewangles -= AimPunch * (1.659);
  1218. GameUtils::NormaliseViewAngle(pCmd->viewangles);
  1219. }
  1220. else if (Globals::Shots = 5)
  1221. {
  1222. pCmd->viewangles -= AimPunch * (1.81);
  1223. GameUtils::NormaliseViewAngle(pCmd->viewangles);
  1224. }
  1225. else
  1226. {
  1227. pCmd->viewangles -= AimPunch * 1.71;
  1228. GameUtils::NormaliseViewAngle(pCmd->viewangles);
  1229. }
  1230. }
  1231. }
  1232. }
  1233. }
  1234.  
  1235.  
  1236. void CRageBot::aimAtPlayer(CUserCmd *pCmd)
  1237. {
  1238. IClientEntity* pLocal = hackManager.pLocal();
  1239.  
  1240. C_BaseCombatWeapon* pWeapon = (C_BaseCombatWeapon*)Interfaces::EntList->GetClientEntityFromHandle(hackManager.pLocal()->GetActiveWeaponHandle());
  1241.  
  1242. if (!pLocal || !pWeapon)
  1243. return;
  1244.  
  1245. Vector eye_position = pLocal->GetEyePosition();
  1246.  
  1247. float best_dist = pWeapon->GetCSWpnData()->range;
  1248.  
  1249. IClientEntity* target = nullptr;
  1250.  
  1251. for (int i = 0; i < Interfaces::Engine->GetMaxClients(); i++)
  1252. {
  1253. IClientEntity *pEntity = Interfaces::EntList->GetClientEntity(i);
  1254. if (TargetMeetsRequirements(pEntity))
  1255. {
  1256. if (Globals::TargetID != -1)
  1257. target = Interfaces::EntList->GetClientEntity(Globals::TargetID);
  1258. else
  1259. target = pEntity;
  1260.  
  1261. Vector target_position = target->GetEyePosition();
  1262.  
  1263. float temp_dist = eye_position.DistTo(target_position);
  1264.  
  1265. if (best_dist > temp_dist)
  1266. {
  1267. best_dist = temp_dist;
  1268. CalcAngle(eye_position, target_position, pCmd->viewangles);
  1269. }
  1270. }
  1271. }
  1272. }
  1273.  
  1274. bool CRageBot::AimAtPoint(IClientEntity* pLocal, Vector point, CUserCmd *pCmd, bool &bSendPacket)
  1275. {
  1276. bool ReturnValue = false;
  1277.  
  1278. if (point.Length() == 0) return ReturnValue;
  1279.  
  1280. Vector angles;
  1281. Vector src = pLocal->GetOrigin() + pLocal->GetViewOffset();
  1282.  
  1283. CalcAngle(src, point, angles);
  1284. GameUtils::NormaliseViewAngle(angles);
  1285.  
  1286. if (angles[0] != angles[0] || angles[1] != angles[1])
  1287. {
  1288. return ReturnValue;
  1289. }
  1290.  
  1291. IsLocked = true;
  1292.  
  1293. Vector ViewOffset = pLocal->GetOrigin() + pLocal->GetViewOffset();
  1294. if (!IsAimStepping)
  1295. LastAimstepAngle = LastAngle;
  1296.  
  1297. float fovLeft = FovToPlayer(ViewOffset, LastAimstepAngle, Interfaces::EntList->GetClientEntity(TargetID), 0);
  1298. Vector AddAngs = angles - LastAimstepAngle;
  1299. if (fovLeft > 37.0f && Options::Menu.MiscTab.OtherSafeMode.GetIndex() == 1)
  1300. {
  1301.  
  1302.  
  1303. if (!pLocal->IsMoving())
  1304. {
  1305. Normalize(AddAngs, AddAngs);
  1306. AddAngs *= 37;
  1307. LastAimstepAngle += AddAngs;
  1308. GameUtils::NormaliseViewAngle(LastAimstepAngle);
  1309. angles = LastAimstepAngle;
  1310. }
  1311. else
  1312. {
  1313. Normalize(AddAngs, AddAngs);
  1314. AddAngs *= 39;
  1315. LastAimstepAngle += AddAngs;
  1316. GameUtils::NormaliseViewAngle(LastAimstepAngle);
  1317. angles = LastAimstepAngle;
  1318. }
  1319. }
  1320. else if (Options::Menu.MiscTab.OtherSafeMode.GetIndex() == 2)
  1321. {
  1322. if (fovLeft > 3.5)
  1323. {
  1324.  
  1325. if (Globals::Shots > 3)
  1326. {
  1327. Normalize(AddAngs, AddAngs);
  1328. AddAngs *= 2.6;
  1329. LastAimstepAngle += AddAngs;
  1330. GameUtils::NormaliseViewAngle(LastAimstepAngle);
  1331. angles = LastAimstepAngle;
  1332. }
  1333. else
  1334. {
  1335. Normalize(AddAngs, AddAngs);
  1336. AddAngs *= 2.14;
  1337. LastAimstepAngle += AddAngs;
  1338. GameUtils::NormaliseViewAngle(LastAimstepAngle);
  1339. angles = LastAimstepAngle;
  1340. }
  1341.  
  1342. }
  1343. else
  1344. {
  1345. if (pLocal->GetVelocity().Length2D() > 210)
  1346. {
  1347.  
  1348. Normalize(AddAngs, AddAngs);
  1349. AddAngs *= (3.12 - (pLocal->GetHealth() / 95));
  1350. LastAimstepAngle += AddAngs;
  1351. GameUtils::NormaliseViewAngle(LastAimstepAngle);
  1352. angles = LastAimstepAngle;
  1353.  
  1354. }
  1355. else
  1356. {
  1357. Normalize(AddAngs, AddAngs);
  1358. AddAngs *= (2.9 - (pLocal->GetHealth() / 90));
  1359. LastAimstepAngle += AddAngs;
  1360. GameUtils::NormaliseViewAngle(LastAimstepAngle);
  1361. angles = LastAimstepAngle;
  1362. }
  1363. }
  1364. }
  1365. else
  1366. {
  1367. ReturnValue = true;
  1368. }
  1369.  
  1370. if (Options::Menu.RageBotTab.AimbotSilentAim.GetState())
  1371. {
  1372. pCmd->viewangles = angles;
  1373.  
  1374.  
  1375. }
  1376.  
  1377. if (!Options::Menu.RageBotTab.AimbotSilentAim.GetState())
  1378. {
  1379. Interfaces::Engine->SetViewAngles(angles);
  1380. }
  1381.  
  1382. return ReturnValue;
  1383. }
  1384.  
  1385.  
  1386. void CorrectMovement(Vector old_angles, CUserCmd* cmd, float old_forwardmove, float old_sidemove)
  1387. {
  1388. float delta_view, first_function, second_function;
  1389.  
  1390. if (old_angles.y < 0.f) first_function = 360.0f + old_angles.y;
  1391. else first_function = old_angles.y;
  1392. if (cmd->viewangles.y < 0.0f) second_function = 360.0f + cmd->viewangles.y;
  1393. else second_function = cmd->viewangles.y;
  1394.  
  1395. if (second_function < first_function) delta_view = abs(second_function - first_function);
  1396. else delta_view = 360.0f - abs(first_function - second_function);
  1397.  
  1398. delta_view = 360.0f - delta_view;
  1399.  
  1400. cmd->forwardmove = cos(DEG2RAD(delta_view)) * old_forwardmove + cos(DEG2RAD(delta_view + 90.f)) * old_sidemove;
  1401. cmd->sidemove = sin(DEG2RAD(delta_view)) * old_forwardmove + sin(DEG2RAD(delta_view + 90.f)) * old_sidemove;
  1402. }
  1403.  
  1404. float GetOutgoingLatency()
  1405. {
  1406. INetChannelInfo *nci = Interfaces::Engine->GetNetChannelInfo();
  1407. if (nci)
  1408. {
  1409. float OutgoingLatency = nci->GetAvgLatency(FLOW_OUTGOING);
  1410. return OutgoingLatency;
  1411. }
  1412. else
  1413. {
  1414. return 0.0f;
  1415. }
  1416. }
  1417. float GetIncomingLatency()
  1418. {
  1419. INetChannelInfo *nci = Interfaces::Engine->GetNetChannelInfo();
  1420. if (nci)
  1421. {
  1422. float IncomingLatency = nci->GetAvgLatency(FLOW_INCOMING);
  1423. return IncomingLatency;
  1424. }
  1425. else
  1426. {
  1427. return 0.0f;
  1428. }
  1429. }
  1430.  
  1431.  
  1432. static bool fuckassnig = false;
  1433. bool LBYBREAKTEST()
  1434. {
  1435. bool lby_flip = false;
  1436.  
  1437. IClientEntity* LocalPlayer = hackManager.pLocal();
  1438. if (!LocalPlayer)//null check
  1439. return false;
  1440.  
  1441. float curtime = (float)(LocalPlayer->GetTickBase() * Interfaces::Globals->interval_per_tick);
  1442. static float NextLBYUpdate1 = 0;
  1443.  
  1444. if (NextLBYUpdate1 > curtime + 1.1)
  1445. {
  1446. NextLBYUpdate1 = 0;
  1447. }
  1448. auto key1 = Options::Menu.MiscTab.FakeWalk.GetKey();
  1449. if (LocalPlayer->GetVelocity().Length2D() > 0.1f && !GetAsyncKeyState(key1))
  1450. {
  1451. NextLBYUpdate1 = curtime + 0.22 + Interfaces::Globals->interval_per_tick;
  1452. lby_flip = false;
  1453. return false;
  1454. }
  1455.  
  1456. if ((NextLBYUpdate1 < curtime) && (LocalPlayer->GetFlags() & FL_ONGROUND) && LocalPlayer->GetVelocity().Length2D() < 1.f)
  1457. {
  1458. NextLBYUpdate1 = curtime + 1.1 + Interfaces::Globals->interval_per_tick;
  1459. lby_flip = true;
  1460. fuckassnig = true;
  1461. return true;
  1462. }
  1463. lby_flip = false;
  1464. fuckassnig = false;
  1465. return false;
  1466. }
  1467.  
  1468. float RandomFloat2(float min, float max)
  1469. {
  1470. typedef float(*RandomFloat_t)(float, float);
  1471. return ((RandomFloat_t)GetProcAddress(GetModuleHandle("vstdlib.dll"), "RandomFloat")) (min, max);
  1472. }
  1473. inline float RandomFloat(float min, float max)
  1474. {
  1475. static auto fn = (decltype(&RandomFloat))(GetProcAddress(GetModuleHandle("vstdlib.dll"), "RandomFloat"));
  1476. return fn(min, max);
  1477. }
  1478.  
  1479.  
  1480. void AngleVectors3(const QAngle &angles, Vector& forward)
  1481. {
  1482. float sp, sy, cp, cy;
  1483.  
  1484. SinCos(DEG2RAD(angles[0]), &sp, &cp);
  1485. SinCos(DEG2RAD(angles[1]), &sy, &cy);
  1486.  
  1487. forward.x = cp * cy;
  1488. forward.y = cp * sy;
  1489. forward.z = -sp;
  1490. }
  1491. //--------------------------------------------------------------------------------
  1492. void AngleVectors3(const QAngle &angles, Vector& forward, Vector& right, Vector& up)
  1493. {
  1494. float sr, sp, sy, cr, cp, cy;
  1495.  
  1496. SinCos(DEG2RAD(angles[0]), &sp, &cp);
  1497. SinCos(DEG2RAD(angles[1]), &sy, &cy);
  1498. SinCos(DEG2RAD(angles[2]), &sr, &cr);
  1499.  
  1500. forward.x = (cp * cy);
  1501. forward.y = (cp * sy);
  1502. forward.z = (-sp);
  1503. right.x = (-1 * sr * sp * cy + -1 * cr * -sy);
  1504. right.y = (-1 * sr * sp * sy + -1 * cr * cy);
  1505. right.z = (-1 * sr * cp);
  1506. up.x = (cr * sp * cy + -sr * -sy);
  1507. up.y = (cr * sp * sy + -sr * cy);
  1508. up.z = (cr * cp);
  1509. }
  1510.  
  1511. float predictaed_time = 0.f;
  1512. bool ShouldPredict(CUserCmd* pCmd)
  1513. {
  1514. IClientEntity * player = Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());
  1515. INetChannelInfo* nci = Interfaces::Engine->GetNetChannelInfo();
  1516. float curtime = (float)(player->GetTickBase() * Interfaces::Globals->interval_per_tick);
  1517. float server_time = curtime + nci->GetLatency(FLOW_OUTGOING);
  1518.  
  1519. if (Interfaces::Globals->frametime != 0.0 | pCmd->hasbeenpredicted)
  1520. server_time++;
  1521.  
  1522. static bool initialized;
  1523. bool will_update = false;
  1524.  
  1525. if (!initialized && !player->IsMoving())
  1526. {
  1527. initialized = true;
  1528. predictaed_time = server_time + 0.22f;
  1529. }
  1530. else if (player->IsMoving())
  1531. {
  1532. initialized = false;
  1533. }
  1534.  
  1535. if (server_time >= (predictaed_time) && player->GetFlags() & FL_ONGROUND)
  1536. {
  1537. predictaed_time = server_time + 1.1f;
  1538. will_update = true;
  1539. }
  1540. return will_update;
  1541. }
  1542. float GetBestHeadAngle( float yaw)
  1543. {
  1544. float Back, Right, Left;
  1545.  
  1546. Vector src3D, dst3D, forward, right, up, src, dst;
  1547. trace_t tr;
  1548. Ray_t backray, rightray, leftray;
  1549. CTraceFilter filter;
  1550.  
  1551. QAngle angles;
  1552. Interfaces::Engine->GetViewAngles(angles);
  1553. angles.x = 0.f;
  1554.  
  1555. AngleVectors3(angles, forward, right, up);
  1556. IClientEntity * player = Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());
  1557. filter.pSkip = player;
  1558. src3D = player->GetEyePosition();
  1559. dst3D = src3D + (forward * 384.f);
  1560.  
  1561. backray.Init(src3D, dst3D);
  1562. Interfaces::Trace->TraceRay(backray, MASK_SHOT, &filter, &tr);
  1563. Back = (tr.endpos - tr.startpos).Length();
  1564.  
  1565. rightray.Init(src3D + right * 35.f, dst3D + right * 35.f);
  1566. Interfaces::Trace->TraceRay(rightray, MASK_SHOT, &filter, &tr);
  1567. Right = (tr.endpos - tr.startpos).Length();
  1568.  
  1569. leftray.Init(src3D - right * 35.f, dst3D - right * 35.f);
  1570. Interfaces::Trace->TraceRay(leftray, MASK_SHOT, &filter, &tr);
  1571. Left = (tr.endpos - tr.startpos).Length();
  1572.  
  1573. if (Left > Right)
  1574. return (yaw - 110.f);
  1575. else if (Right > Left)
  1576. return (yaw + 110.f);
  1577. else if (Back > Right || Back > Left)
  1578. return (yaw - 180.f);
  1579. else
  1580. return (yaw - 160.f + rand() % 20);
  1581.  
  1582. return 0;
  1583. }
  1584.  
  1585.  
  1586. void real_free(CUserCmd* pCmd, bool &bSendPacket)
  1587. {
  1588. QAngle Angles;
  1589. Interfaces::Engine->GetViewAngles(Angles);
  1590. float BestHeadPosition = GetBestHeadAngle(Angles.y);
  1591.  
  1592. int LowerbodyDelta = 90;
  1593.  
  1594.  
  1595.  
  1596. if (!bSendPacket)
  1597. {
  1598. if (ShouldPredict(pCmd))
  1599. pCmd->viewangles.y = BestHeadPosition + LowerbodyDelta;
  1600. else
  1601. pCmd->viewangles.y = BestHeadPosition;
  1602. }
  1603. }
  1604.  
  1605.  
  1606. void fake_free(CUserCmd* pCmd, bool &bSendPacket)
  1607. {
  1608. QAngle Angles;
  1609. Interfaces::Engine->GetViewAngles(Angles);
  1610. float BestHeadPosition = GetBestHeadAngle(Angles.y);
  1611.  
  1612. int LowerbodyDelta = 90;
  1613.  
  1614. int rando = rand() % 100;
  1615.  
  1616.  
  1617. if (rando != 3)
  1618. pCmd->viewangles.y = BestHeadPosition + LowerbodyDelta + RandomFloat2(-90.f, 90.f);
  1619. else
  1620. pCmd->viewangles.y = BestHeadPosition + LowerbodyDelta + 120;
  1621.  
  1622. }
  1623.  
  1624.  
  1625.  
  1626.  
  1627. bool is_viable_target(IClientEntity* pEntity) {
  1628. IClientEntity* m_local = hackManager.pLocal();
  1629. if (!pEntity) return false;
  1630. if (pEntity->GetClientClass()->m_ClassID != (int)CSGOClassID::CCSPlayer) return false;
  1631. if (pEntity == m_local) return false;
  1632. if (pEntity->GetTeamNum() == m_local->GetTeamNum()) return false;
  1633. if (pEntity->HasGunGameImmunity()) return false;
  1634. if (!pEntity->IsAlive() || pEntity->IsDormant()) return false;
  1635. return true;
  1636. }
  1637.  
  1638.  
  1639.  
  1640. static bool wilupdate;
  1641. static float LastLBYUpdateTime2 = 0;
  1642. #define RandomInt(min, max) (rand() % (max - min + 1) + min)
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650. void DoRealAA(CUserCmd* pCmd, IClientEntity* pLocal, bool& bSendPacket)
  1651. {
  1652.  
  1653. if (GetAsyncKeyState(Options::Menu.MiscTab.manualleft.GetKey())) // right
  1654. {
  1655. dir = true;
  1656. back = false;
  1657. up = false;
  1658. bigboi::indicator = 1;
  1659. }
  1660. else if (GetAsyncKeyState(Options::Menu.MiscTab.manualright.GetKey())) // left
  1661. {
  1662. dir = false;
  1663. back = false;
  1664. up = false;
  1665. bigboi::indicator = 2;
  1666. }
  1667. else if (GetAsyncKeyState(Options::Menu.MiscTab.manualback.GetKey()))
  1668. {
  1669. dir = false;
  1670. back = true;
  1671. up = false;
  1672. bigboi::indicator = 3;
  1673. }
  1674. else if (GetAsyncKeyState(Options::Menu.MiscTab.manualfront.GetKey()))
  1675. {
  1676. dir = false;
  1677. back = false;
  1678. up = true;
  1679. bigboi::indicator = 4;
  1680. }
  1681.  
  1682.  
  1683. float real = pCmd->viewangles.y;
  1684.  
  1685. static QAngle angles;
  1686.  
  1687.  
  1688.  
  1689. Vector oldAngle = pCmd->viewangles;
  1690. float oldForward = pCmd->forwardmove;
  1691. float oldSideMove = pCmd->sidemove;
  1692.  
  1693. if ((pCmd->buttons & IN_USE) || pLocal->GetMoveType() == MOVETYPE_LADDER)
  1694. return;
  1695.  
  1696.  
  1697. IClientEntity* localp = Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());
  1698.  
  1699. float speed = localp->GetVelocity().Length2D();
  1700.  
  1701.  
  1702. static int Ticks = 0;
  1703. float temp_base = pCmd->viewangles.y;
  1704.  
  1705.  
  1706. /*
  1707.  
  1708. CSlider twitchr;
  1709. CSlider twitchf;
  1710. CSlider spinf;
  1711. CSlider randlbyr;
  1712. CSlider randlbyf;
  1713.  
  1714. */
  1715.  
  1716. float staticr = Options::Menu.MiscTab.staticr.GetValue();
  1717.  
  1718. float twitchr = Options::Menu.MiscTab.twitchr.GetValue();
  1719. float lby1 = Options::Menu.MiscTab.lby1.GetValue();
  1720. float randlbyr = Options::Menu.MiscTab.randlbyr.GetValue();
  1721.  
  1722.  
  1723.  
  1724.  
  1725. if (!Options::Menu.MiscTab.AntiAimEnable.GetState())
  1726. return;
  1727.  
  1728. if (Options::Menu.MiscTab.OtherSafeMode.GetIndex() == 2) return;
  1729.  
  1730. if (Options::Menu.MiscTab.OtherSafeMode.GetIndex() == 2 && Options::Menu.MiscTab.AntiAimEnable.GetState())
  1731. {
  1732. pCmd->viewangles.y -= 180;
  1733. }
  1734.  
  1735. if (Options::Menu.MiscTab.freestand.GetState())
  1736. {
  1737. real_free(pCmd, bSendPacket);
  1738. }
  1739. else
  1740. {
  1741.  
  1742. if (speed <= 10 && (pLocal->GetFlags() & FL_ONGROUND))
  1743. {
  1744. switch (Options::Menu.MiscTab.AntiAimYaw.GetIndex())
  1745. {
  1746. case 1: {
  1747. pCmd->viewangles.y -= staticr;
  1748. }
  1749. break;
  1750. case 2:
  1751. {
  1752. if (jitter)
  1753. pCmd->viewangles.y -= ((170.f + twitchr) + rand() % 10);
  1754. else
  1755. pCmd->viewangles.y += ((170.f - twitchr) - rand() % 10);
  1756.  
  1757. jitter = !jitter;
  1758. }
  1759. break;
  1760. case 3:
  1761. {
  1762. if (jitter)
  1763. pCmd->viewangles.y -= 110;
  1764. else
  1765. pCmd->viewangles.y += 110;
  1766.  
  1767. jitter = !jitter;
  1768.  
  1769. }break;
  1770. case 4: {
  1771. pCmd->viewangles.y -= Ticks;
  1772. Ticks += 8 + rand() % 3;
  1773.  
  1774. if (Ticks > 240)
  1775. Ticks = 120;
  1776. }
  1777. break;
  1778. case 5:
  1779. {
  1780. if (pCmd->viewangles.y + Options::Menu.MiscTab.BreakLBYDelta.GetValue())
  1781. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - (118 - rand() % 42); //lets break these Delta resorting trash -120 resolvers
  1782. else
  1783. {
  1784. if (Ticks > 70)
  1785. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - (randlbyr - rand() % 90);
  1786. else
  1787. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + (randlbyr + rand() % 90);
  1788. }
  1789.  
  1790. }
  1791. break;
  1792. case 6:
  1793. {
  1794. if (dir && !back && !up)
  1795. pCmd->viewangles.y -= 90.f;
  1796. else if (!dir && !back && !up)
  1797. pCmd->viewangles.y += 90.f;
  1798. else if (!dir && back && !up)
  1799. pCmd->viewangles.y -= 180.f;
  1800. else if (!dir && !back && up)
  1801. pCmd->viewangles.y -= 0.f;
  1802.  
  1803.  
  1804. }
  1805. break;
  1806. case 7:
  1807. {
  1808. if (dir && !back && !up)
  1809. {
  1810. if (jitter)
  1811. pCmd->viewangles.y -= (95 - twitchr);
  1812. else
  1813. pCmd->viewangles.y -= (95 + twitchr);
  1814.  
  1815. jitter = !jitter;
  1816. }
  1817. else if (!dir && !back && !up)
  1818. {
  1819. if (jitter)
  1820. pCmd->viewangles.y += (95 - twitchr);
  1821. else
  1822. pCmd->viewangles.y += (95 + twitchr);
  1823.  
  1824. jitter = !jitter;
  1825. }
  1826. else if (!dir && back && !up)
  1827. {
  1828. if (jitter)
  1829. pCmd->viewangles.y -= (175 - twitchr);
  1830. else
  1831. pCmd->viewangles.y += (175 + twitchr);
  1832.  
  1833. jitter = !jitter;
  1834. }
  1835. else if (!dir && !back && up)
  1836. {
  1837. if (jitter)
  1838. pCmd->viewangles.y += (5 + twitchr);
  1839. else
  1840. pCmd->viewangles.y -= (5 - twitchr);
  1841.  
  1842. jitter = !jitter;
  1843. }
  1844. }
  1845. break;
  1846. case 8:
  1847. {
  1848.  
  1849. if (pCmd->viewangles.y + Options::Menu.MiscTab.BreakLBYDelta.GetValue())
  1850. {
  1851.  
  1852. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 180;
  1853. }
  1854. else
  1855. {
  1856. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 180;
  1857. }
  1858.  
  1859.  
  1860. }
  1861. break;
  1862. case 9:
  1863. {
  1864.  
  1865. if (pCmd->viewangles.y + Options::Menu.MiscTab.BreakLBYDelta.GetValue())
  1866. {
  1867.  
  1868. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - 80;
  1869. }
  1870. else
  1871. {
  1872. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - 90;
  1873. }
  1874.  
  1875.  
  1876. }
  1877. break;
  1878. case 10:
  1879. {
  1880.  
  1881. if (pCmd->viewangles.y + Options::Menu.MiscTab.BreakLBYDelta.GetValue())
  1882. {
  1883. if (jitter)
  1884. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 45 + rand() % 35;
  1885. else
  1886. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 60 + rand() % 45;
  1887.  
  1888. jitter = !jitter;
  1889.  
  1890. }
  1891. else
  1892. {
  1893.  
  1894. if (jitter)
  1895. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 95 + rand() % 20;
  1896. else
  1897. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 130 - rand() % 20;
  1898.  
  1899. jitter = !jitter;
  1900. }
  1901.  
  1902.  
  1903. }
  1904. break;
  1905.  
  1906. }
  1907.  
  1908. }
  1909. else if (speed > 10 && (pLocal->GetFlags() & FL_ONGROUND))
  1910. {
  1911. switch (Options::Menu.MiscTab.AntiAimYawrun.GetIndex())
  1912. {
  1913. case 1: {
  1914. pCmd->viewangles.y -= 175.f;
  1915. } break;
  1916.  
  1917. case 2:
  1918. {
  1919. if (speed < 30 || speed > 60)
  1920. {
  1921. if (jitter)
  1922. pCmd->viewangles.y -= 170.f - twitchr;
  1923. else
  1924. pCmd->viewangles.y += 170.f - twitchr;
  1925.  
  1926. jitter = !jitter;
  1927. }
  1928. else
  1929. {
  1930. if (jitter)
  1931. pCmd->viewangles.y -= 90;
  1932. else
  1933. pCmd->viewangles.y += 90;
  1934.  
  1935. jitter = !jitter;
  1936. }
  1937. }
  1938. break;
  1939. case 3:
  1940. {
  1941. if (jitter)
  1942. pCmd->viewangles.y -= 110;
  1943. else
  1944. pCmd->viewangles.y += 110;
  1945.  
  1946. jitter = !jitter;
  1947.  
  1948. } break;
  1949. case 4: {
  1950. pCmd->viewangles.y -= Ticks;
  1951. Ticks += 8 + rand() % 3;
  1952.  
  1953. if (Ticks > 240)
  1954. Ticks = 120;
  1955. }
  1956. break;
  1957. case 5:
  1958. {
  1959. if (pCmd->viewangles.y + Options::Menu.MiscTab.BreakLBYDelta.GetValue())
  1960. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - rand() % 30;
  1961. else
  1962. {
  1963. if (Ticks > 70)
  1964. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - (randlbyr + rand() % 120);
  1965. else
  1966. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + (randlbyr + rand() % 120);
  1967. }
  1968.  
  1969. }
  1970. break;
  1971. case 6:
  1972. {
  1973. if (dir && !back && !up)
  1974. pCmd->viewangles.y -= 90.f;
  1975. else if (!dir && !back && !up)
  1976. pCmd->viewangles.y += 90.f;
  1977. else if (!dir && back && !up)
  1978. pCmd->viewangles.y -= 180.f;
  1979. else if (!dir && !back && up)
  1980. pCmd->viewangles.y -= 0.f;
  1981.  
  1982.  
  1983. } break;
  1984.  
  1985. case 7:
  1986. {
  1987. if (dir && !back && !up)
  1988. {
  1989. if (jitter)
  1990. pCmd->viewangles.y -= ((85 - twitchr) - rand() % 10);
  1991. else
  1992. pCmd->viewangles.y -= ((95 + twitchr) + rand() % 10);
  1993.  
  1994. jitter = !jitter;
  1995. }
  1996. else if (!dir && !back && !up)
  1997. {
  1998. if (jitter)
  1999. pCmd->viewangles.y += ((85 - twitchr) - rand() % 10);
  2000. else
  2001. pCmd->viewangles.y += ((95 + twitchr) - rand() % 10);
  2002.  
  2003. jitter = !jitter;
  2004. }
  2005. else if (!dir && back && !up)
  2006. {
  2007. if (jitter)
  2008. pCmd->viewangles.y -= ((175 - twitchr) - rand() % 10);
  2009. else
  2010. pCmd->viewangles.y += ((175 - twitchr) - rand() % 10);
  2011.  
  2012. jitter = !jitter;
  2013. }
  2014. else if (!dir && !back && up)
  2015. {
  2016. if (jitter)
  2017. pCmd->viewangles.y += (5 + twitchr);
  2018. else
  2019. pCmd->viewangles.y -= (5 - twitchr);
  2020.  
  2021. jitter = !jitter;
  2022. }
  2023. }
  2024. break;
  2025.  
  2026. }
  2027.  
  2028. }
  2029. else if (speed > 1 && !(pLocal->GetFlags() & FL_ONGROUND))
  2030. {
  2031. switch (Options::Menu.MiscTab.AntiAimYaw3.GetIndex())
  2032. {
  2033. case 1: {
  2034. pCmd->viewangles.y -= 175.f;
  2035. }
  2036.  
  2037. case 2:
  2038. {
  2039. if (jitter)
  2040. pCmd->viewangles.y -= 170.f + twitchr;
  2041. else
  2042. pCmd->viewangles.y += 170.f + twitchr;
  2043.  
  2044. jitter = !jitter;
  2045. }
  2046. break;
  2047. case 3:
  2048. {
  2049. if (jitter)
  2050. pCmd->viewangles.y -= 110;
  2051. else
  2052. pCmd->viewangles.y += 110;
  2053.  
  2054. jitter = !jitter;
  2055.  
  2056. } break;
  2057. case 4: {
  2058. pCmd->viewangles.y -= Ticks;
  2059. Ticks += 8 + rand() % 3;
  2060.  
  2061. if (Ticks > 240)
  2062. Ticks = 120;
  2063. }
  2064. break;
  2065. case 5:
  2066. {
  2067. if (pCmd->viewangles.y + Options::Menu.MiscTab.BreakLBYDelta.GetValue())
  2068. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - (118 - rand() % 42);
  2069. else
  2070. {
  2071. if (Ticks > 70)
  2072. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - (randlbyr - rand() % 90);
  2073. else
  2074. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + (randlbyr + rand() % 90);
  2075. }
  2076.  
  2077. }
  2078. break;
  2079. case 6:
  2080. {
  2081. if (dir && !back && !up)
  2082. pCmd->viewangles.y -= 90.f;
  2083. else if (!dir && !back && !up)
  2084. pCmd->viewangles.y += 90.f;
  2085. else if (!dir && back && !up)
  2086. pCmd->viewangles.y -= 180.f;
  2087. else if (!dir && !back && up)
  2088. pCmd->viewangles.y -= 0.f;
  2089.  
  2090.  
  2091. }
  2092. break;
  2093. case 7:
  2094. {
  2095. if (dir && !back && !up)
  2096. {
  2097. if (jitter)
  2098. pCmd->viewangles.y -= (95 - twitchr);
  2099. else
  2100. pCmd->viewangles.y -= (95 + twitchr);
  2101.  
  2102. jitter = !jitter;
  2103. }
  2104. else if (!dir && !back && !up)
  2105. {
  2106. if (jitter)
  2107. pCmd->viewangles.y += (95 - twitchr);
  2108. else
  2109. pCmd->viewangles.y += (95 + twitchr);
  2110.  
  2111. jitter = !jitter;
  2112. }
  2113. else if (!dir && back && !up)
  2114. {
  2115. if (jitter)
  2116. pCmd->viewangles.y -= (175 - twitchr);
  2117. else
  2118. pCmd->viewangles.y += (175 + twitchr);
  2119.  
  2120. jitter = !jitter;
  2121. }
  2122. else if (!dir && !back && up)
  2123. {
  2124. if (jitter)
  2125. pCmd->viewangles.y += (5 + twitchr);
  2126. else
  2127. pCmd->viewangles.y -= (5 - twitchr);
  2128.  
  2129. jitter = !jitter;
  2130. }
  2131. }
  2132. break;
  2133. case 8:
  2134. {
  2135.  
  2136. float lby = hackManager.pLocal()->GetLowerBodyYaw() + 90;
  2137.  
  2138.  
  2139. if (pCmd->viewangles.y + Options::Menu.MiscTab.BreakLBYDelta.GetValue())
  2140. {
  2141.  
  2142. if (jitter)
  2143. pCmd->viewangles.y = lby + 30;
  2144. else
  2145. pCmd->viewangles.y = lby - 30;
  2146. jitter = !jitter;
  2147. }
  2148. else
  2149. {
  2150.  
  2151. if (jitter)
  2152. pCmd->viewangles.y = lby + 35;
  2153. else
  2154. pCmd->viewangles.y = lby - 35;
  2155. jitter = !jitter;
  2156. }
  2157.  
  2158. }
  2159. break;
  2160.  
  2161. }
  2162.  
  2163.  
  2164. }
  2165. }
  2166.  
  2167.  
  2168.  
  2169. }
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176. void DoFakeAA(CUserCmd* pCmd, bool& bSendPacket, IClientEntity* pLocal)
  2177. {
  2178. static QAngle angles;
  2179. IClientEntity* localp = Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());
  2180. QAngle RealAngle;
  2181.  
  2182. float t = rand() % 1000;
  2183.  
  2184.  
  2185. static int Ticks;
  2186. static int Side;
  2187.  
  2188.  
  2189. float staticf = Options::Menu.MiscTab.staticf.GetValue();
  2190. float twitchf = Options::Menu.MiscTab.twitchf.GetValue();
  2191. float spinf = Options::Menu.MiscTab.spinf.GetValue();
  2192. float randlbyf = Options::Menu.MiscTab.randlbyf.GetValue();
  2193. float curtime = (float)(pLocal->GetTickBase() * Interfaces::Globals->interval_per_tick);
  2194. if (Options::Menu.MiscTab.OtherSafeMode.GetIndex() == 2) return;
  2195.  
  2196. if (Options::Menu.MiscTab.OtherSafeMode.GetIndex() == 2 && Options::Menu.MiscTab.AntiAimEnable.GetState())
  2197. {
  2198. pCmd->viewangles.y = pCmd->viewangles.y;
  2199. }
  2200. else
  2201. {
  2202. if (Options::Menu.MiscTab.freestand.GetState())
  2203. {
  2204. real_free(pCmd, bSendPacket);
  2205. }
  2206. else
  2207. {
  2208. if (pLocal->GetFlags() & FL_ONGROUND)
  2209. {
  2210. if (localp->GetVelocity().Length2D() < 10.0f)
  2211. {
  2212. switch (Options::Menu.MiscTab.FakeYaw.GetIndex())
  2213. {
  2214. case 1:
  2215. pCmd->viewangles.y = staticf;
  2216. break;
  2217. case 2:
  2218. {
  2219. if (pCmd->viewangles.y + Options::Menu.MiscTab.BreakLBYDelta.GetValue())
  2220. {
  2221. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - 90;
  2222. }
  2223. else
  2224. {
  2225. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - 135;
  2226. }
  2227. }
  2228. break;
  2229. case 3: {
  2230. if (next_lby_update_func(pCmd, (pCmd->viewangles.y + Options::Menu.MiscTab.BreakLBYDelta.GetValue())))
  2231. {
  2232. pCmd->viewangles.y = (hackManager.pLocal()->GetLowerBodyYaw() - 90) + RandomFloat2(-45.f, 45.f);
  2233. }
  2234. else
  2235. {
  2236. if (t > 2)
  2237. pCmd->viewangles.y = (hackManager.pLocal()->GetLowerBodyYaw() + 180) + RandomFloat2(-95.f, 95.f);
  2238. else
  2239. pCmd->viewangles.y = (hackManager.pLocal()->GetLowerBodyYaw() + 90) + RandomFloat2(-45.f, 180.f);
  2240. }
  2241. }
  2242. break;
  2243. case 4:
  2244. {
  2245.  
  2246. pCmd->viewangles.y = pCmd->viewangles.y - 180;
  2247. }
  2248. break;
  2249. case 5:
  2250. {
  2251.  
  2252. if (jitter)
  2253. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - (85 + twitchf) - rand() % 35;
  2254. else
  2255. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + (85 + twitchf) + rand() % 35;
  2256.  
  2257. jitter = !jitter;
  2258.  
  2259.  
  2260. }
  2261.  
  2262. break;
  2263. case 6:
  2264. {
  2265. if (pCmd->viewangles.y + Options::Menu.MiscTab.BreakLBYDelta.GetValue())
  2266. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - rand() % 120;
  2267. else
  2268. {
  2269. if (Ticks > 70)
  2270. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - 35 - (randlbyf + rand() % 90);
  2271. else
  2272. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 35 + (randlbyf + rand() % 90);
  2273. }
  2274. }
  2275. break;
  2276.  
  2277. case 7:
  2278. {
  2279. float server_time = pLocal->GetTickBase() * Interfaces::Globals->interval_per_tick;
  2280. double speed = 250;
  2281. double exe = fmod(static_cast<double>(server_time)*speed, 180);
  2282. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 90 + static_cast<float>(exe);
  2283. }
  2284. break;
  2285. case 8:
  2286. {
  2287. if (jitter)
  2288. pCmd->viewangles.y = hackManager.pLocal()->GetEyeAnglesXY()->y - 150;
  2289. else
  2290. pCmd->viewangles.y = hackManager.pLocal()->GetEyeAnglesXY()->y + 150;
  2291.  
  2292. jitter != jitter;
  2293. }
  2294. break;
  2295. case 9:
  2296. {
  2297.  
  2298. if (bSendPacket)
  2299. {
  2300. pCmd->viewangles.y -= 90;
  2301.  
  2302. if (bSendPacket)
  2303. {
  2304. pCmd->viewangles.y += 90;
  2305. }
  2306. }
  2307. if (bSendPacket)
  2308. pCmd->viewangles.y -= 180;
  2309. }
  2310. break;
  2311.  
  2312. default:
  2313. break;
  2314. }
  2315. }
  2316. else
  2317. {
  2318. switch (Options::Menu.MiscTab.FakeYaw2.GetIndex())
  2319. {
  2320. case 1:
  2321. pCmd->viewangles.y -= 180.f;
  2322. break;
  2323. case 2: { pCmd->viewangles.y = pCmd->viewangles.y; }
  2324.  
  2325. break;
  2326. case 3:
  2327. {
  2328. if (t > 10)
  2329. pCmd->viewangles.y = (hackManager.pLocal()->GetLowerBodyYaw() + 180) + RandomFloat2(-95.f, 95.f);
  2330. else
  2331. pCmd->viewangles.y = (hackManager.pLocal()->GetLowerBodyYaw() + RandomFloat2(-90.f, 90.f));
  2332.  
  2333. }
  2334. break;
  2335.  
  2336. case 4:
  2337. {
  2338. int b = rand() % 100;
  2339.  
  2340. if (b > 15)
  2341. {
  2342. if (jitter)
  2343. pCmd->viewangles.y = hackManager.pLocal()->GetEyeAnglesXY()->y + 175 - twitchf;
  2344. else
  2345. pCmd->viewangles.y = hackManager.pLocal()->GetEyeAnglesXY()->y - 175 - twitchf;
  2346. }
  2347. else
  2348. {
  2349. if (jitter)
  2350. pCmd->viewangles.y = hackManager.pLocal()->GetEyeAnglesXY()->y + 90 + rand() % 60;
  2351. else
  2352. pCmd->viewangles.y = hackManager.pLocal()->GetEyeAnglesXY()->y - 90 + rand() % 60;
  2353. }
  2354. } break;
  2355. case 5:
  2356. {
  2357.  
  2358.  
  2359. if (pCmd->viewangles.y + Options::Menu.MiscTab.BreakLBYDelta.GetValue())
  2360. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - rand() % 45;
  2361. else
  2362. {
  2363. if (Ticks > 70)
  2364. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - randlbyf - rand() % 90;
  2365. else
  2366. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + randlbyf + rand() % 90;
  2367. }
  2368. }
  2369. break;
  2370. case 6:
  2371. {
  2372.  
  2373. if (pCmd->viewangles.y + Options::Menu.MiscTab.BreakLBYDelta.GetValue())
  2374. {
  2375. pCmd->viewangles.y = hackManager.pLocal()->GetEyeAnglesXY()->y + 115.00 + rand() % 10;
  2376. }
  2377. else
  2378. {
  2379. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - 115.00 - rand() % 10;
  2380. }
  2381.  
  2382. }
  2383. break;
  2384.  
  2385. case 7:
  2386. {
  2387. float server_time = pLocal->GetTickBase() * Interfaces::Globals->interval_per_tick;
  2388. double speed = 250/*insert spin speed*/;
  2389. double exe = fmod(static_cast<double>(server_time)*speed, 180/*spin angle*/);
  2390. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 90 + static_cast<float>(exe);
  2391. }
  2392.  
  2393. case 8:
  2394. {
  2395. if (pCmd->viewangles.y + Options::Menu.MiscTab.BreakLBYDelta.GetValue())
  2396. {
  2397.  
  2398. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 40;
  2399. }
  2400. else
  2401. {
  2402. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 60;
  2403. }
  2404. }
  2405. break;
  2406. case 9:
  2407. {
  2408.  
  2409. if (pCmd->viewangles.y + Options::Menu.MiscTab.BreakLBYDelta.GetValue())
  2410. {
  2411. if (jitter)
  2412. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 90;
  2413. else
  2414. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 60;
  2415.  
  2416. jitter = !jitter;
  2417.  
  2418. }
  2419. else
  2420. {
  2421. if (jitter)
  2422. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 90;
  2423. else
  2424. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 120;
  2425.  
  2426. jitter = !jitter;
  2427. }
  2428. }
  2429. break;
  2430.  
  2431.  
  2432. default:
  2433. break;
  2434. }
  2435. }
  2436. }
  2437. else
  2438. {
  2439. switch (Options::Menu.MiscTab.FakeYaw3.GetIndex())
  2440. {
  2441. case 1:
  2442. pCmd->viewangles.y = hackManager.pLocal()->GetEyeAnglesXY()->y - 175.f;
  2443.  
  2444. case 2: { pCmd->viewangles.y = pCmd->viewangles.y; }
  2445.  
  2446. case 3:
  2447. {
  2448. int idfk = rand() % 100;
  2449.  
  2450.  
  2451. if (idfk > 20)
  2452. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - 120 + rand() % 40;
  2453. else if (idfk < 20)
  2454. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 120 + rand() % 40;
  2455. else
  2456. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 30 + rand() % 90;
  2457.  
  2458. }
  2459. case 4:
  2460. {
  2461. float server_time = pLocal->GetTickBase() * Interfaces::Globals->interval_per_tick;
  2462. double speed = 250/*insert spin speed*/;
  2463. double exe = fmod(static_cast<double>(server_time)*speed, 180/*spin angle*/);
  2464. pCmd->viewangles.y = hackManager.pLocal()->GetEyeAnglesXY()->y + 90 + static_cast<float>(exe);
  2465. }
  2466.  
  2467.  
  2468.  
  2469.  
  2470. default:
  2471. break;
  2472. }
  2473. }
  2474.  
  2475. }
  2476. }
  2477.  
  2478. }
  2479.  
  2480. bool chokeed;
  2481.  
  2482. static bool respecc = false;
  2483.  
  2484.  
  2485. void CRageBot::DoPitch(CUserCmd * pCmd)
  2486. {
  2487. IClientEntity* pLocal = hackManager.pLocal();
  2488.  
  2489. C_BaseCombatWeapon* pWeapon = (C_BaseCombatWeapon*)Interfaces::EntList->GetClientEntityFromHandle(hackManager.pLocal()->GetActiveWeaponHandle());
  2490.  
  2491. if (Options::Menu.MiscTab.OtherSafeMode.GetIndex() == 0 || Options::Menu.MiscTab.OtherSafeMode.GetIndex() == 4)
  2492. {
  2493. switch (Options::Menu.MiscTab.AntiAimPitch.GetIndex())
  2494. {
  2495. case 0:
  2496. break;
  2497. case 1:
  2498. pCmd->viewangles.x = 89;
  2499. break;
  2500. case 2:
  2501. pCmd->viewangles.x = -89;
  2502. break;
  2503. case 3:
  2504. {
  2505. if (jitter)
  2506. pCmd->viewangles.x = 89;
  2507. else
  2508. pCmd->viewangles.x = -89;
  2509. jitter = !jitter;
  2510. }
  2511. break;
  2512. case 4:
  2513. {
  2514. pCmd->viewangles.x = -89 + rand() % 160;
  2515. }
  2516. break;
  2517. }
  2518.  
  2519. }
  2520.  
  2521.  
  2522.  
  2523.  
  2524.  
  2525. }
  2526.  
  2527. void backup_aa(CUserCmd* pCmd, bool& bSendPacket, IClientEntity* pLocal)
  2528. {
  2529.  
  2530. IClientEntity* localp = Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());
  2531.  
  2532. if (GetAsyncKeyState(Options::Menu.MiscTab.manualleft.GetKey())) // right
  2533. {
  2534. dir = true;
  2535. back = false;
  2536. up = false;
  2537. bigboi::indicator = 1;
  2538. }
  2539. else if (GetAsyncKeyState(Options::Menu.MiscTab.manualright.GetKey())) // left
  2540. {
  2541. dir = false;
  2542. back = false;
  2543. up = false;
  2544. bigboi::indicator = 2;
  2545. }
  2546. else if (GetAsyncKeyState(Options::Menu.MiscTab.manualback.GetKey()))
  2547. {
  2548. dir = false;
  2549. back = true;
  2550. up = false;
  2551. bigboi::indicator = 3;
  2552. }
  2553. else if (GetAsyncKeyState(Options::Menu.MiscTab.manualfront.GetKey()))
  2554. {
  2555. dir = false;
  2556. back = false;
  2557. up = true;
  2558. bigboi::indicator = 4;
  2559. }
  2560.  
  2561. static int Ticks;
  2562. static int Side;
  2563.  
  2564. if (Options::Menu.MiscTab.backup_aa.GetIndex() == 1)
  2565. {
  2566. if (localp->GetFlags() & FL_ONGROUND)
  2567. {
  2568. if (localp->GetVelocity().Length2D() > 3.5)
  2569. {
  2570. if (bSendPacket)
  2571. {
  2572. if (jitter)
  2573. pCmd->viewangles.y = 90;
  2574. else
  2575. pCmd->viewangles.y = -90;
  2576.  
  2577. jitter = !jitter;
  2578.  
  2579. }
  2580. else
  2581. {
  2582. if (jitter)
  2583. pCmd->viewangles.y -= 150 - rand() % 15;
  2584. else
  2585. pCmd->viewangles.y += 150 + rand() % 15;
  2586.  
  2587. jitter = !jitter;
  2588. }
  2589.  
  2590. }
  2591. else
  2592. {
  2593. if (bSendPacket)
  2594. {
  2595. pCmd->viewangles.y -= Ticks;
  2596. Ticks += 6;
  2597.  
  2598. if (Ticks > 90)
  2599. Ticks = -90;
  2600. }
  2601. else
  2602. {
  2603. pCmd->viewangles.y -= 180;
  2604. }
  2605. }
  2606. }
  2607. else
  2608. {
  2609. if (bSendPacket)
  2610. {
  2611. pCmd->viewangles.y = rand() % 360;
  2612. }
  2613. else
  2614. {
  2615. if (jitter)
  2616. pCmd->viewangles.y -= (165.f + rand() % 10);
  2617. else
  2618. pCmd->viewangles.y += (165.f - rand() % 10);
  2619.  
  2620. jitter = !jitter;
  2621. }
  2622. }
  2623. }
  2624. if (Options::Menu.MiscTab.backup_aa.GetIndex() == 2)
  2625. {
  2626.  
  2627. if (localp->GetFlags() & FL_ONGROUND)
  2628. {
  2629. if (localp->GetVelocity().Length2D() > 3.5)
  2630. {
  2631. if (bSendPacket)
  2632. {
  2633. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - (30 + rand() & 150);
  2634. }
  2635. else
  2636. {
  2637. if (dir && !back && !up)
  2638. {
  2639. if (jitter)
  2640. pCmd->viewangles.y -= ((85) - rand() % 10);
  2641. else
  2642. pCmd->viewangles.y -= ((95) + rand() % 10);
  2643.  
  2644. jitter = !jitter;
  2645. }
  2646. else if (!dir && !back && !up)
  2647. {
  2648. if (jitter)
  2649. pCmd->viewangles.y += ((85 ) - rand() % 10);
  2650. else
  2651. pCmd->viewangles.y += ((95 ) - rand() % 10);
  2652.  
  2653. jitter = !jitter;
  2654. }
  2655. else if (!dir && back && !up)
  2656. {
  2657. if (jitter)
  2658. pCmd->viewangles.y -= ((175) - rand() % 10);
  2659. else
  2660. pCmd->viewangles.y += ((175) - rand() % 10);
  2661.  
  2662. jitter = !jitter;
  2663. }
  2664. else if (!dir && !back && up)
  2665. {
  2666. if (jitter)
  2667. pCmd->viewangles.y += (5);
  2668. else
  2669. pCmd->viewangles.y -= (5);
  2670.  
  2671. jitter = !jitter;
  2672. }
  2673. }
  2674.  
  2675. }
  2676. else
  2677. {
  2678. if (bSendPacket)
  2679. {
  2680. if (dir && !back && !up)
  2681. {
  2682. pCmd->viewangles.y += 90 + RandomFloat2(-90.f, 90.f);
  2683. }
  2684. else if (!dir && !back && !up)
  2685. {
  2686. pCmd->viewangles.y -= 90 + RandomFloat2(-90.f, 90.f);
  2687. }
  2688. else if (!dir && back && !up)
  2689. {
  2690. pCmd->viewangles.y -= RandomFloat2(-90.f, 90.f);
  2691. }
  2692. else if (!dir && !back && up)
  2693. {
  2694. pCmd->viewangles.y -= 180 + RandomFloat2(-90.f, 90.f);
  2695. }
  2696.  
  2697. }
  2698. else
  2699. {
  2700. if (dir && !back && !up)
  2701. pCmd->viewangles.y -= 90.f;
  2702. else if (!dir && !back && !up)
  2703. pCmd->viewangles.y += 90.f;
  2704. else if (!dir && back && !up)
  2705. pCmd->viewangles.y -= 180.f;
  2706. else if (!dir && !back && up)
  2707. pCmd->viewangles.y -= 0.f;
  2708. }
  2709. }
  2710. }
  2711. else
  2712. {
  2713. if (bSendPacket)
  2714. {
  2715. pCmd->viewangles.y -= hackManager.pLocal()->GetLowerBodyYaw() + 90 + rand() % 35;
  2716. }
  2717. else
  2718. {
  2719. if (dir && !back && !up)
  2720. {
  2721. if (jitter)
  2722. pCmd->viewangles.y -= ((80) - rand() % 10);
  2723. else
  2724. pCmd->viewangles.y -= ((100) + rand() % 10);
  2725.  
  2726. jitter = !jitter;
  2727. }
  2728. else if (!dir && !back && !up)
  2729. {
  2730. if (jitter)
  2731. pCmd->viewangles.y += ((80) - rand() % 10);
  2732. else
  2733. pCmd->viewangles.y += ((100) - rand() % 10);
  2734.  
  2735. jitter = !jitter;
  2736. }
  2737. else if (!dir && back && !up)
  2738. {
  2739. if (jitter)
  2740. pCmd->viewangles.y -= ((165) - rand() % 10);
  2741. else
  2742. pCmd->viewangles.y += ((165) - rand() % 10);
  2743.  
  2744. jitter = !jitter;
  2745. }
  2746. else if (!dir && !back && up)
  2747. {
  2748. if (jitter)
  2749. pCmd->viewangles.y += (15);
  2750. else
  2751. pCmd->viewangles.y -= (15);
  2752.  
  2753. jitter = !jitter;
  2754. }
  2755. }
  2756. }
  2757. }
  2758. if (Options::Menu.MiscTab.backup_aa.GetIndex() == 3)
  2759. {
  2760. if (localp->GetFlags() & FL_ONGROUND)
  2761. {
  2762. if (localp->GetVelocity().Length2D() > 3.5)
  2763. {
  2764. if (bSendPacket)
  2765. {
  2766. pCmd->viewangles.y = rand() % 360;
  2767. }
  2768. else
  2769. {
  2770. pCmd->viewangles.y -= 180;
  2771. }
  2772.  
  2773. }
  2774. else
  2775. {
  2776. if (bSendPacket)
  2777. {
  2778. pCmd->viewangles.y = (hackManager.pLocal()->GetLowerBodyYaw() - 180) + RandomFloat2(-95.f, 95.f);
  2779. }
  2780. else
  2781. {
  2782. if (pCmd->viewangles.y + Options::Menu.MiscTab.BreakLBYDelta.GetValue())
  2783. {
  2784.  
  2785. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 180;
  2786. }
  2787. else
  2788. {
  2789. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 180;
  2790. }
  2791. }
  2792. }
  2793. }
  2794. else
  2795. {
  2796. if (bSendPacket)
  2797. {
  2798. if (jitter)
  2799. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - 100 - rand() % 60;
  2800. else
  2801. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() + 100 + rand() % 60;
  2802.  
  2803. jitter = !jitter;
  2804. }
  2805. else
  2806. {
  2807. if (pCmd->viewangles.y + Options::Menu.MiscTab.BreakLBYDelta.GetValue())
  2808. {
  2809. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - 45;
  2810. }
  2811. else
  2812. {
  2813. pCmd->viewangles.y = hackManager.pLocal()->GetLowerBodyYaw() - 60;
  2814. }
  2815. }
  2816. }
  2817. }
  2818.  
  2819. }
  2820.  
  2821.  
  2822. void CRageBot::DoAntiAim(CUserCmd *pCmd, bool &bSendPacket)
  2823. {
  2824. IClientEntity* pLocal = hackManager.pLocal();
  2825. C_BaseCombatWeapon* pWeapon = (C_BaseCombatWeapon*)Interfaces::EntList->GetClientEntityFromHandle(hackManager.pLocal()->GetActiveWeaponHandle());
  2826. CSWeaponInfo* pWeaponInfo = pWeapon->GetCSWpnData();
  2827.  
  2828. if (!Interfaces::Engine->IsInGame() || !Interfaces::Engine->IsConnected())
  2829. return;
  2830.  
  2831. if ((pCmd->buttons & IN_USE) || pLocal->GetMoveType() == MOVETYPE_LADDER)
  2832. return;
  2833.  
  2834. if ((pCmd->buttons & IN_ATTACK))
  2835. return;
  2836.  
  2837. if (GameUtils::IsBomb(pWeapon))
  2838. return;
  2839.  
  2840. if (IsAimStepping || pCmd->buttons & IN_ATTACK)
  2841. return;
  2842.  
  2843.  
  2844. if (warmup && !backup && default_aa)
  2845. return;
  2846.  
  2847. if (pWeapon)
  2848. {
  2849.  
  2850. if (!GameUtils::IsBallisticWeapon(pWeapon))
  2851. {
  2852. if (!CanOpenFire() || pCmd->buttons & IN_ATTACK2)
  2853. return;
  2854. }
  2855. }
  2856.  
  2857. if (GetAsyncKeyState(Options::Menu.MiscTab.backup_key.GetKey()))
  2858. {
  2859. backup = true;
  2860. default_aa = false;
  2861. bigboi::indicator = 5;
  2862. }
  2863. else if (GetAsyncKeyState(Options::Menu.MiscTab.default_key.GetKey()))
  2864. {
  2865. backup = false;
  2866. default_aa = true;
  2867. bigboi::indicator = 6;
  2868. }
  2869.  
  2870. if (Options::Menu.MiscTab.AntiAimEnable.GetState())
  2871. {
  2872. if (!backup && default_aa)
  2873. {
  2874. DoPitch(pCmd);
  2875. if (bSendPacket)
  2876. DoFakeAA(pCmd, bSendPacket, pLocal);
  2877. else
  2878. DoRealAA(pCmd, pLocal, bSendPacket);
  2879. }
  2880. else if (backup && !default_aa)
  2881. {
  2882. DoPitch(pCmd);
  2883. backup_aa(pCmd, bSendPacket, pLocal);
  2884.  
  2885. }
  2886.  
  2887. }
  2888.  
  2889. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement