Advertisement
jvrnejm

aimbot.cpp

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