Advertisement
Guest User

ez

a guest
Jul 22nd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.59 KB | None | 0 0
  1. #include "../includes.h"
  2. #include "../UTILS/interfaces.h"
  3. #include "../SDK/IEngine.h"
  4. #include "../SDK/CUserCmd.h"
  5. #include "../SDK/CBaseEntity.h"
  6. #include "../SDK/CClientEntityList.h"
  7. #include "../SDK/CTrace.h"
  8. #include "../SDK/CBaseWeapon.h"
  9. #include "../SDK/CGlobalVars.h"
  10. #include "../SDK/ConVar.h"
  11. #include "../SDK/AnimLayer.h"
  12. #include "../UTILS/qangle.h"
  13. #include "../FEATURES/Aimbot.h"
  14. #include "../FEATURES/Resolver.h"
  15.  
  16. Vector old_calcangle(Vector dst, Vector src)
  17. {
  18. Vector angles;
  19.  
  20. double delta[3] = { (src.x - dst.x), (src.y - dst.y), (src.z - dst.z) };
  21. double hyp = sqrt(delta[0] * delta[0] + delta[1] * delta[1]);
  22. angles.x = (float)(atan(delta[2] / hyp) * 180.0 / 3.14159265);
  23. angles.y = (float)(atanf(delta[1] / delta[0]) * 57.295779513082f);
  24. angles.z = 0.0f;
  25.  
  26. if (delta[0] >= 0.0)
  27. {
  28. angles.y += 180.0f;
  29. }
  30.  
  31. return angles;
  32. }
  33.  
  34. float old_normalize(float Yaw)
  35. {
  36. if (Yaw > 180)
  37. {
  38. Yaw -= (round(Yaw / 360) * 360.f);
  39. }
  40. else if (Yaw < -180)
  41. {
  42. Yaw += (round(Yaw / 360) * -360.f);
  43. }
  44. return Yaw;
  45. }
  46.  
  47. float curtime(SDK::CUserCmd* ucmd) {
  48. auto local_player = INTERFACES::ClientEntityList->GetClientEntity(INTERFACES::Engine->GetLocalPlayer());
  49.  
  50. if (!local_player)
  51. return 0;
  52.  
  53. int g_tick = 0;
  54. SDK::CUserCmd* g_pLastCmd = nullptr;
  55. if (!g_pLastCmd || g_pLastCmd->hasbeenpredicted) {
  56. g_tick = (float)local_player->GetTickBase();
  57. }
  58. else {
  59. ++g_tick;
  60. }
  61. g_pLastCmd = ucmd;
  62. float curtime = g_tick * INTERFACES::Globals->interval_per_tick;
  63. return curtime;
  64. }
  65.  
  66. bool find_layer(SDK::CBaseEntity* entity, int act, SDK::CAnimationLayer *set)
  67. {
  68. for (int i = 0; i < 13; i++)
  69. {
  70. SDK::CAnimationLayer layer = entity->GetAnimOverlay(i);
  71. const int activity = entity->GetSequenceActivity(layer.m_nSequence);
  72. if (activity == act) {
  73. *set = layer;
  74. return true;
  75. }
  76. }
  77. return false;
  78. }
  79.  
  80. void CResolver::record(SDK::CBaseEntity* entity, float new_yaw)
  81. {
  82. if (entity->GetVelocity().Length2D() > 36)
  83. return;
  84.  
  85. auto c_baseweapon = reinterpret_cast<SDK::CBaseWeapon*>(INTERFACES::ClientEntityList->GetClientEntity(entity->GetActiveWeaponIndex()));
  86.  
  87. if (!c_baseweapon)
  88. return;
  89.  
  90. auto &info = player_info[entity->GetIndex()];
  91.  
  92. if (entity->GetActiveWeaponIndex() && info.last_ammo < c_baseweapon->GetLoadedAmmo()) {
  93. //ignore the yaw when it is from shooting (will be looking at you/other player)
  94. info.last_ammo = c_baseweapon->GetLoadedAmmo();
  95. return;
  96. }
  97.  
  98. info.unresolved_yaw.insert(info.unresolved_yaw.begin(), new_yaw);
  99. if (info.unresolved_yaw.size() > 20) {
  100. info.unresolved_yaw.pop_back();
  101. }
  102.  
  103. if (info.unresolved_yaw.size() < 2)
  104. return;
  105.  
  106. auto average_unresolved_yaw = 0;
  107. for (auto val : info.unresolved_yaw)
  108. average_unresolved_yaw += val;
  109. average_unresolved_yaw /= info.unresolved_yaw.size();
  110.  
  111. int delta = average_unresolved_yaw - entity->GetLowerBodyYaw();
  112. auto big_math_delta = abs((((delta + 180) % 360 + 360) % 360 - 180));
  113.  
  114. info.lby_deltas.insert(info.lby_deltas.begin(), big_math_delta);
  115. if (info.lby_deltas.size() > 10) {
  116. info.lby_deltas.pop_back();
  117. }
  118. }
  119.  
  120. static void nospread_resolve(SDK::CBaseEntity* player, int entID) //gay but very effective reversed aw air resolver
  121. {
  122. auto local_player = INTERFACES::ClientEntityList->GetClientEntity(INTERFACES::Engine->GetLocalPlayer());
  123.  
  124. if (!local_player)
  125. return;
  126.  
  127. Vector local_position = local_player->GetVecOrigin() + local_player->GetViewOffset();
  128.  
  129. float atTargetAngle = UTILS::CalcAngle(local_player->GetHealth() <= 0 ? local_player->GetVecOrigin() : local_position, player->GetVecOrigin()).y;
  130. Vector velocityAngle;
  131. MATH::VectorAngles(player->GetVelocity(), velocityAngle);
  132.  
  133. float primaryBaseAngle = player->GetLowerBodyYaw();
  134. float secondaryBaseAngle = velocityAngle.y;
  135.  
  136. switch ((shots_missed[entID]) % 15)
  137. {
  138. case 0:
  139. player->EasyEyeAngles()->yaw = atTargetAngle + 180.f;
  140. break;
  141. case 1:
  142. player->EasyEyeAngles()->yaw = velocityAngle.y + 180.f;
  143. break;
  144. case 2:
  145. player->EasyEyeAngles()->yaw = primaryBaseAngle;
  146. break;
  147. case 3:
  148. player->EasyEyeAngles()->yaw = primaryBaseAngle - 45.f;
  149. break;
  150. case 4:
  151. player->EasyEyeAngles()->yaw = primaryBaseAngle + 90.f;
  152. break;
  153. case 5:
  154. player->EasyEyeAngles()->yaw = primaryBaseAngle - 130.f;
  155. break;
  156. case 6:
  157. player->EasyEyeAngles()->yaw = primaryBaseAngle - 180.f;
  158. break;
  159. case 7:
  160. player->EasyEyeAngles()->yaw = secondaryBaseAngle;
  161. break;
  162. case 8:
  163. player->EasyEyeAngles()->yaw = secondaryBaseAngle - 40.f;
  164. break;
  165. case 9:
  166. player->EasyEyeAngles()->yaw = secondaryBaseAngle - 90.f;
  167. break;
  168. case 10:
  169. player->EasyEyeAngles()->yaw = secondaryBaseAngle - 130.f;
  170. break;
  171. case 11:
  172. player->EasyEyeAngles()->yaw = secondaryBaseAngle - 70.f;
  173. break;
  174. case 12:
  175. player->EasyEyeAngles()->yaw = primaryBaseAngle + 45.f;
  176. break;
  177. case 13:
  178. player->EasyEyeAngles()->yaw = primaryBaseAngle + 135.f;
  179. break;
  180. case 14:
  181. player->EasyEyeAngles()->yaw = primaryBaseAngle - 90.f;
  182. break;
  183. }
  184. }
  185.  
  186.  
  187. void CResolver::resolve(SDK::CBaseEntity* entity)
  188. {
  189. auto local_player = INTERFACES::ClientEntityList->GetClientEntity(INTERFACES::Engine->GetLocalPlayer());
  190. if (!local_player || local_player->GetHealth() <= 0)
  191. return;
  192.  
  193. bool is_local_player = entity == local_player;
  194. bool is_teammate = local_player->GetTeam() == entity->GetTeam() && !is_local_player;
  195.  
  196. for (int i = 0; i < 64; i++)
  197. {
  198. auto entity = INTERFACES::ClientEntityList->GetClientEntity(i);
  199. if (!entity || entity->GetHealth() <= 0 || entity->GetTeam() == local_player->GetTeam())
  200. continue;
  201.  
  202. /// make sure to do dormant check AFTER calling UpdateResolveRecord()
  203. if (entity->GetIsDormant())
  204. continue;
  205. }
  206.  
  207. if ((SETTINGS::settings.overridemethod == 1 && GetAsyncKeyState(UTILS::INPUT::input_handler.keyBindings(SETTINGS::settings.overridekey))) || (SETTINGS::settings.overridemethod == 0 && SETTINGS::settings.overridething))
  208. {
  209. Vector viewangles; INTERFACES::Engine->GetViewAngles(viewangles);
  210. auto at_target_yaw = UTILS::CalcAngle(entity->GetVecOrigin(), local_player->GetVecOrigin()).y;
  211.  
  212. auto delta = MATH::NormalizeYaw(viewangles.y - at_target_yaw);
  213. auto rightDelta = Vector(entity->GetEyeAngles().x, at_target_yaw + 90, entity->GetEyeAngles().z);
  214. auto leftDelta = Vector(entity->GetEyeAngles().x, at_target_yaw - 90, entity->GetEyeAngles().z);
  215.  
  216. if (delta > 0)
  217. entity->SetEyeAngles(rightDelta);
  218. else
  219. entity->SetEyeAngles(leftDelta);
  220. return;
  221. }
  222.  
  223. //--- Variable Declaration ---//;
  224. const auto previous_info = player_info[entity->GetIndex()];
  225. auto &info = player_info[entity->GetIndex()];
  226.  
  227. //--- Variable Defenitions/Checks ---//
  228. float fl_lby = entity->GetLowerBodyYaw();
  229.  
  230. info.lby = Vector(entity->GetEyeAngles().x, entity->GetLowerBodyYaw(), 0.f);
  231. info.inverse = Vector(entity->GetEyeAngles().x, entity->GetLowerBodyYaw() + 180.f, 0.f);
  232. info.last_lby = Vector(entity->GetEyeAngles().x, info.last_moving_lby, 0.f);
  233. info.inverse_left = Vector(entity->GetEyeAngles().x, entity->GetLowerBodyYaw() + 115.f, 0.f);
  234. info.inverse_right = Vector(entity->GetEyeAngles().x, entity->GetLowerBodyYaw() - 115.f, 0.f);
  235.  
  236. info.back = Vector(entity->GetEyeAngles().x, UTILS::CalcAngle(entity->GetVecOrigin(), local_player->GetVecOrigin()).y + 180.f, 0.f);
  237. info.right = Vector(entity->GetEyeAngles().x, UTILS::CalcAngle(entity->GetVecOrigin(), local_player->GetVecOrigin()).y + 70.f, 0.f);
  238. info.left = Vector(entity->GetEyeAngles().x, UTILS::CalcAngle(entity->GetVecOrigin(), local_player->GetVecOrigin()).y - 70.f, 0.f);
  239.  
  240. info.backtrack = Vector(entity->GetEyeAngles().x, lby_to_back[entity->GetIndex()], 0.f);
  241.  
  242. shots_missed[entity->GetIndex()] = shots_fired[entity->GetIndex()] - shots_hit[entity->GetIndex()];
  243. info.is_moving = entity->GetVelocity().Length2D() > 50 && entity->GetFlags() & FL_ONGROUND;
  244. info.is_jumping = !entity->GetFlags() & FL_ONGROUND;
  245. info.could_be_slowmo = entity->GetVelocity().Length2D() > 1.f && !info.is_crouching;
  246. info.is_crouching = entity->GetFlags() & FL_DUCKING;
  247. info.is_dormant = entity->GetIsDormant();
  248. update_time[entity->GetIndex()] = info.next_lby_update_time;
  249.  
  250. static float old_simtime[65];
  251. if (entity->GetSimTime() != old_simtime[entity->GetIndex()])
  252. {
  253. using_fake_angles[entity->GetIndex()] = entity->GetSimTime() - old_simtime[entity->GetIndex()] == INTERFACES::Globals->interval_per_tick; entity->GetSimTime() - old_simtime[entity->GetIndex()] >= TICKS_TO_TIME(2);
  254. old_simtime[entity->GetIndex()] = entity->GetSimTime();
  255. }
  256.  
  257. //--- Actual Angle Resolving ---//
  258. if (!using_fake_angles[entity->GetIndex()])
  259. {
  260. if (backtrack_tick[entity->GetIndex()])
  261. {
  262. resolve_type[entity->GetIndex()] = 7;
  263. entity->SetEyeAngles(info.backtrack);
  264. }
  265. else if (info.stored_lby != entity->GetLowerBodyYaw() || entity->GetSimTime() > info.next_lby_update_time) //lby prediction
  266. {
  267. entity->GetSimTime() > info.next_lby_update_time;
  268. entity->SetEyeAngles(info.lby);
  269. info.next_lby_update_time = entity->GetSimTime() + 1.1;
  270. info.stored_lby = entity->GetLowerBodyYaw();
  271. resolve_type[entity->GetIndex()] = 3;
  272. }
  273. else if (info.is_jumping)
  274. {
  275. nospread_resolve(entity, entity->GetIndex());
  276. }
  277. else if (info.is_moving) //while moving
  278. {
  279. entity->SetEyeAngles(info.lby);
  280. info.last_moving_lby = entity->GetLowerBodyYaw();
  281. info.stored_missed = shots_missed[entity->GetIndex()];
  282. resolve_type[entity->GetIndex()] = 1;
  283. }
  284. else
  285. {
  286. if (shots_missed[entity->GetIndex()] > info.stored_missed) //if we have missed 1 shot since we have stopped moving
  287. {
  288. resolve_type[entity->GetIndex()] = 4;
  289. switch (shots_missed[entity->GetIndex()] % 4)
  290. {
  291. case 0: entity->SetEyeAngles(info.inverse); break;
  292. case 1: entity->SetEyeAngles(info.left); break;
  293. case 2: entity->SetEyeAngles(info.back); break;
  294. case 3: entity->SetEyeAngles(info.right); break;
  295. }
  296. }
  297. else //first thing we shoot when they stop
  298. {
  299. entity->SetEyeAngles(info.last_lby);
  300. resolve_type[entity->GetIndex()] = 5;
  301. }
  302. }
  303. }
  304.  
  305.  
  306. SDK::CAnimationLayer layer = entity->GetAnimOverlay(0);
  307. if (entity->GetSimTime() != info.stored_simtime)
  308. {
  309. info.stored_simtime = entity->GetSimTime();
  310. info.prev_layer = info.backup_layer;
  311. SDK::CAnimationLayer dummy;
  312. info.backup_layer = find_layer(entity, 979, &dummy) ? dummy : layer;
  313. }
  314.  
  315. SDK::CAnimationLayer prev = info.prev_layer;
  316. auto server_time = UTILS::GetCurtime(); //i have a global dedicated to curtime but am using this because lemon is gay
  317.  
  318. if (info.is_moving && !info.could_be_slowmo)
  319. {
  320. entity->SetEyeAngles(info.lby);
  321. info.last_moving_lby = entity->GetLowerBodyYaw();
  322. info.stored_missed = shots_missed[entity->GetIndex()];
  323. info.last_move_time = server_time;
  324. info.reset_state = true;
  325. resolve_type[entity->GetIndex()] = 1;
  326. }
  327. else
  328. {
  329. if (info.stored_lby != entity->GetLowerBodyYaw())
  330. {
  331. entity->SetEyeAngles(info.lby);
  332. info.stored_lby = entity->GetLowerBodyYaw();
  333. info.next_lby_update_time = entity->GetSimTime() + 1.1;
  334. resolve_type[entity->GetIndex()] = 7;
  335. }
  336. else if (server_time - info.last_move_time < 0.1 && info.reset_state)
  337. {
  338. info.pre_anim_lby = entity->GetLowerBodyYaw();
  339. info.reset_state = false;
  340. info.breaking_lby = false;
  341. std::cout << "reset and lby break is false!" << std::endl;
  342. }
  343. auto previous_is_valid = entity->GetSequenceActivity(prev.m_nSequence) == 979;
  344.  
  345. if (info.unresolved_yaw.size() < 2 || info.lby_deltas.size() < 2)
  346. return;
  347.  
  348. auto average_unresolved_yaw = 0;
  349. for (auto val : info.unresolved_yaw)
  350. average_unresolved_yaw += val;
  351. average_unresolved_yaw /= info.unresolved_yaw.size();
  352.  
  353. auto average_lby_delta = 0;
  354. for (auto val : info.lby_deltas)
  355. average_lby_delta += val;
  356. average_lby_delta /= info.lby_deltas.size();
  357.  
  358. int deltaxd = average_unresolved_yaw - entity->GetLowerBodyYaw();
  359. auto current_lby_delta = abs((((deltaxd + 180) % 360 + 360) % 360 - 180));
  360.  
  361. int update_delta = info.pre_anim_lby - entity->GetLowerBodyYaw();
  362. auto lby_update_delta = abs((((update_delta + 180) % 360 + 360) % 360 - 180));
  363.  
  364. if (info.is_dormant)
  365. info.next_lby_update_time = FLT_MAX;
  366.  
  367. if (find_layer(entity, 979, &layer)
  368. && previous_is_valid
  369. && (layer.m_flCycle != prev.m_flCycle
  370. || layer.m_flWeight == 1.f
  371. || server_time - info.last_move_time < 1.4
  372. && !info.is_dormant
  373. && !previous_info.is_dormant
  374. && !info.breaking_lby
  375. && layer.m_flCycle >= 0.01
  376. && lby_update_delta > 75))
  377. {
  378. if (server_time - info.last_move_time < 1.4)
  379. {
  380. info.breaking_lby = true;
  381. std::cout << "breaking lby" << std::endl;
  382. }
  383. entity->SetEyeAngles(info.inverse);
  384. resolve_type[entity->GetIndex()] = 6;
  385. }
  386. else
  387. {
  388. if (info.breaking_lby)
  389. {
  390. if (current_lby_delta > 130 && average_lby_delta > 130) {
  391. entity->SetEyeAngles(info.lby);
  392. resolve_type[entity->GetIndex()] = 7;
  393. }
  394. else {
  395. if (info.next_lby_update_time < entity->GetSimTime())
  396. {
  397. entity->SetEyeAngles(info.lby);
  398. info.next_lby_update_time = entity->GetSimTime() + 1.1;
  399. resolve_type[entity->GetIndex()] = 3;
  400. }
  401. else if (info.is_moving)
  402. {
  403. resolve_type[entity->GetIndex()] = 5;
  404. switch (shots_missed[entity->GetIndex()] % 2)
  405. {
  406. case 0: entity->SetEyeAngles(info.last_lby); break;
  407. case 1: entity->SetEyeAngles(info.inverse); break;
  408. }
  409. }
  410. else
  411. {
  412. if (shots_missed[entity->GetIndex()] > info.stored_missed)
  413. {
  414. resolve_type[entity->GetIndex()] = 4;
  415. switch (shots_missed[entity->GetIndex()] % 3)
  416. {
  417. case 0: entity->SetEyeAngles(info.inverse); break; //180
  418. case 1: entity->SetEyeAngles(info.inverse_left); break; //115
  419. case 2: entity->SetEyeAngles(info.inverse_right); break; //-115
  420. }
  421. }
  422. else
  423. {
  424. resolve_type[entity->GetIndex()] = 2;
  425. entity->SetEyeAngles(info.last_lby);
  426. }
  427. }
  428. }
  429. }
  430. else
  431. {
  432. entity->SetEyeAngles(info.lby);
  433. resolve_type[entity->GetIndex()] = 7;
  434. }
  435. }
  436. }
  437. if (info.stored_lby != fl_lby)
  438. {
  439. entity->SetEyeAngles(info.lby);
  440. info.stored_lby = fl_lby;
  441. info.next_lby_update_time = entity->GetSimTime() + 1.1;
  442. resolve_type[entity->GetIndex()] = 1;
  443. }
  444. else if (info.next_lby_update_time < entity->GetSimTime())
  445. {
  446. entity->SetEyeAngles(info.lby);
  447. info.next_lby_update_time = entity->GetSimTime() + 1.1;
  448. resolve_type[entity->GetIndex()] = 3;
  449. }
  450. else if (info.is_moving && !info.could_be_slowmo)
  451. {
  452. entity->SetEyeAngles(info.lby);
  453. info.last_moving_lby = fl_lby;
  454. info.stored_missed = shots_missed[entity->GetIndex()];
  455. INTERFACES::Globals->curtime;
  456. resolve_type[entity->GetIndex()] = 1;
  457. }
  458. else
  459. {
  460. if (info.breaking_lby)
  461. {
  462. if (info.is_moving && !info.is_crouching)
  463. {
  464. resolve_type[entity->GetIndex()] = 5;
  465. switch (shots_missed[entity->GetIndex()] % 2)
  466. {
  467. case 0: entity->SetEyeAngles(info.last_lby); break;
  468. case 1: entity->SetEyeAngles(info.inverse); break;
  469. }
  470. }
  471. else {
  472. if (shots_missed[entity->GetIndex()] > info.stored_missed)
  473. {
  474. resolve_type[entity->GetIndex()] = 4;
  475. switch (shots_missed[entity->GetIndex()] % 4)
  476. {
  477. case 0: entity->SetEyeAngles(info.inverse); break;
  478. case 1: entity->SetEyeAngles(info.right); break;
  479. case 2: entity->SetEyeAngles(info.left); break;
  480. case 3: entity->SetEyeAngles(info.back); break;
  481. }
  482. }
  483. else
  484. {
  485. resolve_type[entity->GetIndex()] = 2;
  486. entity->SetEyeAngles(info.last_lby);
  487. }
  488. }
  489. }
  490. else
  491. {
  492. entity->SetEyeAngles(info.lby);
  493. resolve_type[entity->GetIndex()] = 1;
  494. }
  495. }
  496. }
  497.  
  498. CResolver* resolver = new CResolver();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement