Advertisement
Guest User

aimbot.cpp

a guest
Jun 10th, 2020
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.58 KB | None | 0 0
  1. #include "Aimbot.h"
  2.  
  3. using namespace Client;
  4.  
  5. #pragma warning(disable:4244)
  6. //[junk_enable /]
  7. //[enc_string_enable /]
  8.  
  9. std::vector<byte> tt_ct_best_hit_1 =
  10. {
  11. //All Spots
  12. HITBOX_HEAD ,
  13. HITBOX_NECK ,
  14. HITBOX_BODY ,
  15. HITBOX_THORAX ,
  16. HITBOX_CHEST ,
  17. HITBOX_RIGHT_THIGH ,
  18. HITBOX_LEFT_THIGH ,
  19. HITBOX_RIGHT_HAND ,
  20. HITBOX_LEFT_HAND ,
  21. HITBOX_RIGHT_UPPER_ARM ,
  22. HITBOX_RIGHT_FOREARM ,
  23. HITBOX_LEFT_UPPER_ARM ,
  24. HITBOX_LEFT_FOREARM
  25. };
  26.  
  27. std::vector<byte> tt_ct_best_hit_2 =
  28. {
  29. //No Headshot
  30. HITBOX_NECK ,
  31. HITBOX_BODY ,
  32. HITBOX_THORAX ,
  33. HITBOX_CHEST ,
  34. HITBOX_RIGHT_THIGH ,
  35. HITBOX_LEFT_THIGH ,
  36. HITBOX_RIGHT_HAND ,
  37. HITBOX_LEFT_HAND ,
  38. HITBOX_RIGHT_UPPER_ARM ,
  39. HITBOX_RIGHT_FOREARM ,
  40. HITBOX_LEFT_UPPER_ARM ,
  41. HITBOX_LEFT_FOREARM
  42. };
  43.  
  44. std::vector<byte> tt_ct_best_hit_3 =
  45. {
  46. //No Arms/Legs
  47. HITBOX_HEAD ,
  48. HITBOX_NECK ,
  49. HITBOX_BODY ,
  50. HITBOX_THORAX ,
  51. HITBOX_CHEST
  52. };
  53.  
  54. std::vector<byte> tt_ct_best_hit_4 =
  55. {
  56. //No Arms/Legs/Neck
  57. HITBOX_HEAD ,
  58. HITBOX_BODY ,
  59. HITBOX_THORAX ,
  60. HITBOX_CHEST
  61. };
  62.  
  63.  
  64. CAimbot::CAimbot()
  65. {
  66. m_pLocal = nullptr;
  67.  
  68. m_iBestPreTarget = -1;
  69.  
  70. m_iBestTarget = -1;
  71. m_iBestHitbox = -1;
  72.  
  73. m_bClamp = false;
  74. m_bAttack = false;
  75. m_bAimShot = false;
  76. m_bTargetFov = false;
  77. m_bTargetChange = false;
  78. m_bAutoPistolEn = false;
  79.  
  80. m_pShotDelay = new CTimer();
  81.  
  82. m_vAimBestHitboxScreen.Zero();
  83. }
  84.  
  85. bool CAimbot::IsEnable()
  86. {
  87. if (!m_pLocal || !m_pCmd)
  88. return false;
  89.  
  90. if (!Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_Active)
  91. return false;
  92.  
  93. if (!m_pLocal->WeaponAmmo || m_pLocal->bInReload)
  94. return false;
  95.  
  96. if (m_pLocal->WeaponType > WEAPON_TYPE_SNIPER)
  97. return false;
  98.  
  99. return true;
  100. }
  101.  
  102. int CAimbot::GetPlayerFov(CPlayer * pPlayer)
  103. {
  104. int iFov = 0;
  105. int iFovVal = 0;
  106.  
  107. if (m_pLocal->iShotsFired > 1 && m_pLocal->WeaponType == WEAPON_TYPE_SHOTGUN)
  108. {
  109. iFovVal = Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_RcsFov;
  110. }
  111. else
  112. {
  113. iFovVal = Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_Fov;
  114. }
  115.  
  116. int base_fov = pow(iFovVal + FIX_MIN_FOV_HEAD, 2) * 90;
  117.  
  118. if (Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_FovType <= 0)
  119. {
  120. iFov = (int)(base_fov / (pPlayer->iDistance * m_pLocal->iFov));
  121. }
  122. else
  123. {
  124. iFov = (int)(base_fov / (FOV_BASE_DISTANCE * m_pLocal->iFov));
  125. }
  126.  
  127. return iFov;
  128. }
  129.  
  130. int CAimbot::GetBestTarget()
  131. {
  132. float ScreenDistanceBase = 1000.f;
  133.  
  134. int m_lBestTarget = -1;
  135.  
  136. for (BYTE PlayerIndex = 0; PlayerIndex < g_pPlayers->GetSize() /*&& g_pPlayers->bActive*/; PlayerIndex++)
  137. {
  138. CPlayer* pPlayer = g_pPlayers->GetPlayer(PlayerIndex);
  139.  
  140. if (pPlayer && pPlayer->m_pEntity && pPlayer->bUpdate)
  141. {
  142. if (!Settings::Aimbot::aim_Deathmatch && pPlayer->Team == m_pLocal->Team)
  143. continue;
  144.  
  145. if (!Settings::Aimbot::aim_WallAttack && !pPlayer->bVisible)
  146. continue;
  147.  
  148. Vector vHitbox;
  149. Vector vHitboxScreen;
  150.  
  151. if (Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_BestHit >= 1)
  152. {
  153. vHitbox = pPlayer->m_pEntity->GetHitboxPosition(HITBOX_BODY);
  154. }
  155. else
  156. {
  157. vHitbox = pPlayer->m_pEntity->GetHitboxPosition(tt_ct_best_hit_1[Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_Spot]);
  158. }
  159.  
  160. if (WorldToScreen(vHitbox, vHitboxScreen))
  161. {
  162. Vector2D vPlayerScr = Vector2D(vHitboxScreen.x, vHitboxScreen.y);
  163.  
  164. float fDistanceScreen = DistanceScreen(g_vCenterScreen, vPlayerScr);
  165.  
  166. if (fDistanceScreen < ScreenDistanceBase)
  167. {
  168. ScreenDistanceBase = fDistanceScreen;
  169. m_lBestTarget = PlayerIndex;
  170. }
  171. }
  172. }
  173. }
  174.  
  175. return m_lBestTarget;
  176. }
  177.  
  178. int CAimbot::GetBestHitBox()
  179. {
  180. float ScreenDistanceBase = 1000.f;
  181.  
  182. int m_lBestHitbox = -1;
  183.  
  184. if (m_pLocal->WeaponType == WEAPON_TYPE_SHOTGUN)
  185. {
  186. if (m_iBestHitbox && m_bAttack && !m_bTargetChange)
  187. m_lBestHitbox = m_iBestHitbox;
  188. }
  189.  
  190. CPlayer* pPlayer = g_pPlayers->GetPlayer(m_iBestTarget);
  191.  
  192. if (pPlayer && pPlayer->m_pEntity && pPlayer->bUpdate)
  193. {
  194. if (m_lBestHitbox == -1)
  195. {
  196. auto doHitScan = [pPlayer, &ScreenDistanceBase, &m_lBestHitbox](std::vector<byte>& hitboxes) -> void
  197. {
  198. for (auto hitbox : hitboxes)
  199. {
  200. Vector vHitBox = pPlayer->m_pEntity->GetHitboxPosition(hitbox);
  201. Vector vHitBoxScreen;
  202.  
  203. if (!WorldToScreen(vHitBox, vHitBoxScreen))
  204. continue;
  205.  
  206. Vector2D vHitboxSrc = Vector2D(vHitBoxScreen.x, vHitBoxScreen.y);
  207.  
  208. float fDistanceScreen = DistanceScreen(g_vCenterScreen, vHitboxSrc);
  209.  
  210. if (fDistanceScreen < ScreenDistanceBase)
  211. {
  212. ScreenDistanceBase = fDistanceScreen;
  213. m_lBestHitbox = hitbox;
  214. }
  215.  
  216. }
  217. };
  218.  
  219. switch (Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_BestHit)
  220. {
  221. case 4:
  222. {
  223. doHitScan(tt_ct_best_hit_4);
  224. }
  225. break;
  226.  
  227. case 3:
  228. {
  229. doHitScan(tt_ct_best_hit_3);
  230. }
  231. break;
  232.  
  233. case 2:
  234. {
  235. doHitScan(tt_ct_best_hit_2);
  236. }
  237. break;
  238.  
  239. case 1:
  240. {
  241. doHitScan(tt_ct_best_hit_1);
  242. }
  243. break;
  244.  
  245. default:
  246. {
  247. m_lBestHitbox = tt_ct_best_hit_1[Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_Spot];
  248. }
  249. break;
  250. }
  251.  
  252. Vector vHitBox = pPlayer->m_pEntity->GetHitboxPosition(m_lBestHitbox);
  253.  
  254. if (vHitBox.IsValid() && WorldToScreen(vHitBox, m_vAimBestHitboxScreen))
  255. {
  256. m_vAimBestHitbox = vHitBox;
  257. return m_lBestHitbox;
  258. }
  259. else
  260. {
  261. m_vAimBestHitbox.Zero();
  262. m_vAimBestHitboxScreen.Zero();
  263. return -1;
  264. }
  265. }
  266.  
  267. return m_lBestHitbox;
  268. }
  269. }
  270.  
  271. void CAimbot::OnRender()
  272. {
  273. if (!IsEnable() || m_iBestTarget == -1 || m_iBestHitbox == -1)
  274. return;
  275.  
  276. if (m_vAimBestHitboxScreen.x <= 0.f || m_vAimBestHitboxScreen.y <= 0.f)
  277. return;
  278.  
  279. CPlayer* pTargetPlayer = g_pPlayers->GetPlayer(m_iBestTarget);
  280.  
  281. if (Settings::Aimbot::aim_DrawSpot)
  282. {
  283. g_pRender->DrawFillBox(m_vAimBestHitboxScreen.x, m_vAimBestHitboxScreen.y,
  284. 2, 2, g_pEsp->GetPlayerColor(pTargetPlayer));
  285. }
  286.  
  287. if (Settings::Aimbot::aim_DrawFov)
  288. {
  289. int iPlayerFov = GetPlayerFov(pTargetPlayer);
  290.  
  291. Color TargetFovColor = g_pEsp->GetPlayerColor(pTargetPlayer);
  292.  
  293. if (Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_FovType <= 0)
  294. {
  295. g_pRender->DrawBox(m_vAimBestHitboxScreen.x - iPlayerFov, m_vAimBestHitboxScreen.y - iPlayerFov,
  296. iPlayerFov * 2, iPlayerFov * 2, TargetFovColor);
  297. }
  298. else
  299. {
  300. g_pRender->DrawBox(g_vCenterScreen.x - iPlayerFov, g_vCenterScreen.y - iPlayerFov, iPlayerFov * 2, iPlayerFov * 2, TargetFovColor);
  301. }
  302. }
  303. }
  304.  
  305. void CAimbot::Aimbot()
  306. {
  307. m_bAimShot = false;
  308. m_bTargetFov = false;
  309.  
  310. if (!IsEnable())
  311. return;
  312.  
  313. m_bAttack = (m_pCmd->buttons & IN_ATTACK);
  314.  
  315. if (!g_pPlayers->GetPlayer(m_iBestTarget)->bUpdate)
  316. {
  317. m_iBestPreTarget = -1;
  318. m_iBestTarget = -1;
  319. m_iBestHitbox = -1;
  320. }
  321.  
  322. m_iBestPreTarget = m_iBestTarget;
  323. m_iBestTarget = GetBestTarget();
  324.  
  325. if (m_bAttack)
  326. {
  327. if (Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_AutoPistol && m_pLocal->WeaponType == WEAPON_TYPE_PISTOL && !m_bAutoPistolEn)
  328. {
  329. AutoPistol();
  330. }
  331. }
  332.  
  333. if (m_iBestTarget == -1)
  334. return;
  335.  
  336. if (m_iBestPreTarget != m_iBestTarget && m_bAttack)
  337. {
  338. m_bTargetChange = true;
  339. }
  340. else
  341. {
  342. m_bTargetChange = false;
  343. }
  344.  
  345. m_iBestHitbox = GetBestHitBox();
  346.  
  347. if (m_iBestHitbox == -1)
  348. return;
  349.  
  350. CPlayer* pPreTargetPlayer = g_pPlayers->GetPlayer(m_iBestPreTarget);
  351. CPlayer* pTargetPlayer = g_pPlayers->GetPlayer(m_iBestTarget);
  352.  
  353. int iPlayerFov = GetPlayerFov(pTargetPlayer);
  354.  
  355. if (CheckPlayerFov(m_vAimBestHitboxScreen, iPlayerFov))
  356. m_bTargetFov = true;
  357.  
  358. static bool bLockDelay = false;
  359. static bool bLockAttack = false;
  360.  
  361. if (!m_bAttack)
  362. {
  363. m_bClamp = true;
  364. bLockDelay = false;
  365. bLockAttack = false;
  366. m_pShotDelay->reset();
  367. }
  368.  
  369. if (Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_AutoPistol && m_pLocal->WeaponType == WEAPON_TYPE_PISTOL)
  370. {
  371. if (m_bTargetFov && !m_bAttack)
  372. {
  373. m_bAutoPistolEn = true;
  374. }
  375. else if (!m_bTargetFov && !m_bAttack)
  376. {
  377. m_bAutoPistolEn = false;
  378. }
  379. else if (!m_bTargetFov && m_bAttack)
  380. {
  381. m_bAutoPistolEn = false;
  382. }
  383. }
  384.  
  385. if (!Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_AutoPistol && m_pLocal->WeaponType == WEAPON_TYPE_PISTOL)
  386. {
  387. if (m_pLocal->iShotsFired == 1 && bLockDelay)
  388. return;
  389. }
  390.  
  391. AIM_ATTACK_TYPE AttackType = AA_SHOTGUN;
  392.  
  393. if (m_pLocal->WeaponType == WEAPON_TYPE_SNIPER || m_pLocal->WeaponType == WEAPON_TYPE_PISTOL)
  394. AttackType = AA_SNIPER_PISTOL;
  395.  
  396. static bool bAimAttack = false;
  397. static bool bAimCheckAttack = false;
  398.  
  399. if (AttackType == AA_SHOTGUN)
  400. {
  401. if (m_bAttack && m_bTargetFov)
  402. {
  403. bAimCheckAttack = true;
  404. }
  405. else
  406. {
  407. bAimCheckAttack = false;
  408. }
  409. }
  410. else if (AttackType == AA_SNIPER_PISTOL)
  411. {
  412. if (!Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_AutoPistol)
  413. {
  414. if (m_bTargetFov && !m_bAttack)
  415. {
  416. bAimAttack = true;
  417. }
  418. else if (!m_bTargetFov && m_bAttack)
  419. {
  420. bAimAttack = false;
  421. }
  422. else if (!m_bTargetFov && !m_bAttack)
  423. {
  424. bAimAttack = false;
  425. }
  426.  
  427. if (m_bAttack && bAimAttack && m_bTargetFov)
  428. {
  429. bAimCheckAttack = true;
  430. }
  431. else
  432. {
  433. bAimCheckAttack = false;
  434. }
  435. }
  436. else
  437. {
  438. if (m_bAttack && m_bTargetFov)
  439. {
  440. bAimCheckAttack = true;
  441. }
  442. else
  443. {
  444. bAimCheckAttack = false;
  445. m_bClamp = true;
  446. }
  447. }
  448. }
  449.  
  450. if (m_pLocal->WeaponType == WEAPON_TYPE_SNIPER || m_pLocal->WeaponType == WEAPON_TYPE_PISTOL)
  451. Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_RcsClampType = 2;
  452.  
  453. if (Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_RcsClampType >= 1 && m_pLocal->WeaponType == WEAPON_TYPE_SHOTGUN)
  454. {
  455. if (!bLockAttack)
  456. {
  457. if (m_bTargetFov && !m_bAttack)
  458. {
  459. bAimAttack = true;
  460. }
  461. else if (!m_bTargetFov && m_bAttack)
  462. {
  463. bAimAttack = false;
  464. }
  465. else if (!m_bTargetFov && !m_bAttack)
  466. {
  467. bAimAttack = false;
  468. }
  469. }
  470.  
  471. if (m_bAttack && bAimAttack && m_bTargetFov && !bLockAttack)
  472. {
  473. bAimCheckAttack = true;
  474. bLockAttack = true;
  475. }
  476. else if (m_bAttack && m_bTargetFov && bLockAttack)
  477. {
  478. bAimCheckAttack = true;
  479. bLockAttack = true;
  480. }
  481. else
  482. bAimCheckAttack = false;
  483. }
  484.  
  485. if (Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_RcsClampType >= 2)
  486. {
  487. if (m_bClamp && m_bTargetChange)
  488. m_bClamp = false;
  489. }
  490.  
  491. if (!(pTargetPlayer->m_pEntity->GetFlags() & FL_ONGROUND) && Settings::Aimbot::aim_AntiJump)
  492. return;
  493.  
  494. if (bAimCheckAttack)
  495. {
  496. int AimDelay = Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_Delay;
  497.  
  498. if (AimDelay)
  499. {
  500. float fDistanceAimScreen = DistanceScreen(g_vCenterScreen, Vector2D(m_vAimBestHitboxScreen.x, m_vAimBestHitboxScreen.y));
  501.  
  502. if (m_pShotDelay->delay(AimDelay))
  503. m_bAimShot = true;
  504.  
  505. if (fDistanceAimScreen <= 3.5f && !bLockDelay)
  506. {
  507. m_bAimShot = true;
  508. bLockDelay = true;
  509. }
  510. else if (bLockDelay)
  511. {
  512. m_bAimShot = true;
  513. }
  514. }
  515. else
  516. {
  517. m_bAimShot = true;
  518. }
  519.  
  520. if (m_bClamp)
  521. {
  522. if (Settings::Aimbot::aim_CheckSmoke)
  523. {
  524. if (LineGoesThroughSmoke(m_pLocal->vEyeOrigin, m_vAimBestHitbox))
  525. return;
  526. }
  527.  
  528. AimbotSet();
  529. }
  530.  
  531. if (m_pLocal->WeaponType == WEAPON_TYPE_SHOTGUN || !Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_AutoPistol)
  532. {
  533. if (m_bAimShot)
  534. {
  535. m_pCmd->buttons |= IN_ATTACK;
  536. }
  537. else
  538. {
  539. m_pCmd->buttons &= ~IN_ATTACK;
  540. }
  541. }
  542.  
  543. if (m_pLocal->WeaponType == WEAPON_TYPE_PISTOL && Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_AutoPistol && m_bAutoPistolEn)
  544. {
  545. if (m_bAimShot)
  546. {
  547. m_pCmd->buttons |= IN_ATTACK;
  548. m_bAutoPistolEn = false;
  549. }
  550. else
  551. m_pCmd->buttons &= ~IN_ATTACK;
  552. }
  553. }
  554. }
  555.  
  556. void CAimbot::AimbotSet()
  557. {
  558. if (!m_vAimBestHitbox.IsValid())
  559. return;
  560.  
  561. Vector vAimAngle, vSmoothAimAngle;
  562.  
  563. VectorAngles(m_vAimBestHitbox - m_pLocal->vEyeOrigin, vAimAngle);
  564.  
  565. bool bEnableRcs = false;
  566.  
  567. if (Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_Rcs)
  568. {
  569. if (m_pLocal->WeaponType == WEAPON_TYPE_SHOTGUN && m_pLocal->iShotsFired > 1)
  570. bEnableRcs = true;
  571.  
  572. if (m_pLocal->WeaponType == WEAPON_TYPE_PISTOL && m_pLocal->iShotsFired <= 1)
  573. bEnableRcs = true;
  574. }
  575.  
  576. if (bEnableRcs)
  577. {
  578. float MulVar = Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_Rcs * 0.02f;
  579.  
  580. if (Settings::Aimbot::aim_RcsType <= 0)
  581. vAimAngle -= m_pLocal->vAimPunch * MulVar;
  582.  
  583. else if (Settings::Aimbot::aim_RcsType == 1)
  584. vAimAngle -= (m_pLocal->vPunch + m_pLocal->vAimPunch) * MulVar;
  585.  
  586. else if (Settings::Aimbot::aim_RcsType >= 2)
  587. vAimAngle -= (m_pLocal->vPunch + (m_pLocal->vAimPunch * 2 * 0.5f)) * MulVar;
  588. }
  589.  
  590. float fSmooth = 10.f;
  591.  
  592. if (bEnableRcs && m_pLocal->WeaponType == WEAPON_TYPE_SHOTGUN)
  593. fSmooth = Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_RcsSmooth;
  594.  
  595. else
  596. fSmooth = Settings::Aimbot::weapon_aim_settings[iWeaponID].aim_Smooth;
  597.  
  598. if (fSmooth < 10.f)
  599. fSmooth = 10.f;
  600.  
  601. fSmooth = fSmooth / 10.f;
  602.  
  603. SmoothAngles(m_pCmd->viewangles, vAimAngle, vSmoothAimAngle, fSmooth);
  604.  
  605. if (!Settings::Misc::misc_LegitAAToggle)
  606. Interfaces::Engine()->SetViewAngles(vSmoothAimAngle); // Silent Aim Fix.
  607.  
  608. m_pCmd->viewangles = vSmoothAimAngle;
  609. }
  610.  
  611. void CAimbot::AutoPistol()
  612. {
  613. float NextAttack = m_pLocal->m_pWeaponEntity->GetNextPrimaryAttack();
  614. float Tick = m_pLocal->m_pEntity->GetTickBase() * Interfaces::GlobalVars()->interval_per_tick;
  615.  
  616. if (NextAttack < Tick)
  617. return;
  618.  
  619. if (*m_pLocal->m_pWeaponEntity->GeteAttributableItem()->GetItemDefinitionIndex() == WEAPON_REVOLVER)
  620. m_pCmd->buttons &= ~IN_ATTACK2;
  621.  
  622. else
  623. m_pCmd->buttons &= ~IN_ATTACK;
  624. }
  625.  
  626. void CAimbot::OnCreateMove(CUserCmd * pCmd, CMe * pLocal)
  627. {
  628. m_pLocal = pLocal;
  629. m_pCmd = pCmd;
  630.  
  631. Aimbot();
  632. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement