Advertisement
Guest User

Untitled

a guest
Jun 21st, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 62.86 KB | None | 0 0
  1. #include "../../includes.h"
  2. #include "../../utilities/interfaces.h"
  3. #include "../../sdk/Iengine.h"
  4. #include "../../utilities/render.h"
  5. #include "../../sdk/CUserCmd.h"
  6. #include "../../sdk/CBaseEntity.h"
  7. #include "../../sdk/CClientEntityList.h"
  8. #include "../../sdk/CTrace.h"
  9. #include "../../sdk/CBaseWeapon.h"
  10. #include "../../sdk/CGlobalVars.h"
  11. #include "../../sdk/ConVar.h"
  12. #include "../../sdk/AnimLayer.h"
  13. #include "../../utilities/qangle.h"
  14. #include "../../features/aimbot/Aimbot.h"
  15. #include "../../features/resolver/Resolver.h"
  16. /*
  17. Vector old_calcangle(Vector dst, Vector src)
  18. {
  19. Vector angles;
  20.  
  21. double delta[3] = { (src.x - dst.x), (src.y - dst.y), (src.z - dst.z) };
  22. double hyp = sqrt(delta[0] * delta[0] + delta[1] * delta[1]);
  23. angles.x = (float)(atan(delta[2] / hyp) * 180.0 / 3.14159265);
  24. angles.y = (float)(atanf(delta[1] / delta[0]) * 57.295779513082f);
  25. angles.z = 0.0f;
  26.  
  27. if (delta[0] >= 0.0)
  28. {
  29. angles.y += 180.0f;
  30. }
  31.  
  32. return angles;
  33. }
  34.  
  35. float old_normalize(float Yaw)
  36. {
  37. if (Yaw > 180)
  38. {
  39. Yaw -= (round(Yaw / 360) * 360.f);
  40. }
  41. else if (Yaw < -180)
  42. {
  43. Yaw += (round(Yaw / 360) * -360.f);
  44. }
  45. return Yaw;
  46. }
  47.  
  48. float curtime(sdk::CUserCmd* ucmd) {
  49. auto local_player = ctx::client_ent_list->GetClientEntity(ctx::engine->GetLocalPlayer());
  50.  
  51. if (!local_player)
  52. return 0;
  53.  
  54. int g_tick = 0;
  55. sdk::CUserCmd* g_pLastCmd = nullptr;
  56. if (!g_pLastCmd || g_pLastCmd->hasbeenpredicted) {
  57. g_tick = (float)local_player->GetTickBase();
  58. }
  59. else {
  60. ++g_tick;
  61. }
  62. g_pLastCmd = ucmd;
  63. float curtime = g_tick * ctx::globals->interval_per_tick;
  64. return curtime;
  65. }
  66.  
  67. bool find_layer(sdk::CBaseEntity* entity, int act, sdk::CAnimationLayer *set)
  68. {
  69. for (int i = 0; i < 13; i++)
  70. {
  71. sdk::CAnimationLayer layer = entity->GetAnimOverlay(i);
  72. const int activity = entity->GetSequenceActivity(layer.m_nSequence);
  73. if (activity == act) {
  74. *set = layer;
  75. return true;
  76. }
  77. }
  78. return false;
  79. }
  80.  
  81. void CResolver::record(sdk::CBaseEntity* entity, float new_yaw)
  82. {
  83. if (entity->GetVelocity().Length2D() > 36)
  84. return;
  85.  
  86. auto c_baseweapon = reinterpret_cast<sdk::CBaseWeapon*>(ctx::client_ent_list->GetClientEntity(entity->GetActiveWeaponIndex()));
  87.  
  88. if (!c_baseweapon)
  89. return;
  90.  
  91. auto &info = player_info[entity->GetIndex()];
  92.  
  93. if (entity->GetActiveWeaponIndex() && info.last_ammo < c_baseweapon->GetLoadedAmmo()) {
  94. //ignore the yaw when it is from shooting (will be looking at you/other player)
  95. info.last_ammo = c_baseweapon->GetLoadedAmmo();
  96. return;
  97. }
  98.  
  99. info.unresolved_yaw.insert(info.unresolved_yaw.begin(), new_yaw);
  100. if (info.unresolved_yaw.size() > 20) {
  101. info.unresolved_yaw.pop_back();
  102. }
  103.  
  104. if (info.unresolved_yaw.size() < 2)
  105. return;
  106.  
  107. auto average_unresolved_yaw = 0;
  108. for (auto val : info.unresolved_yaw)
  109. average_unresolved_yaw += val;
  110. average_unresolved_yaw /= info.unresolved_yaw.size();
  111.  
  112. int delta = average_unresolved_yaw - entity->GetLowerBodyYaw();
  113. auto big_math_delta = abs((((delta + 180) % 360 + 360) % 360 - 180));
  114.  
  115. info.lby_deltas.insert(info.lby_deltas.begin(), big_math_delta);
  116. if (info.lby_deltas.size() > 10) {
  117. info.lby_deltas.pop_back();
  118. }
  119. }
  120.  
  121. static void nospread_resolve(sdk::CBaseEntity* player, int entID) //gay but very effective reversed aw air resolver
  122. {
  123. auto local_player = ctx::client_ent_list->GetClientEntity(ctx::engine->GetLocalPlayer());
  124.  
  125. if (!local_player)
  126. return;
  127.  
  128. Vector local_position = local_player->GetVecOrigin() + local_player->GetViewOffset();
  129.  
  130. float atTargetAngle = UTILS::CalcAngle(local_player->GetHealth() <= 0 ? local_player->GetVecOrigin() : local_position, player->GetVecOrigin()).y;
  131. Vector velocityAngle;
  132. MATH::VectorAngles(player->GetVelocity(), velocityAngle);
  133.  
  134. float primaryBaseAngle = player->GetLowerBodyYaw();
  135. float secondaryBaseAngle = velocityAngle.y;
  136.  
  137. switch ((shots_missed[entID]) % 15)
  138. {
  139. case 0:
  140. player->EasyEyeAngles()->yaw = atTargetAngle + 180.f;
  141. break;
  142. case 1:
  143. player->EasyEyeAngles()->yaw = velocityAngle.y + 180.f;
  144. break;
  145. case 2:
  146. player->EasyEyeAngles()->yaw = primaryBaseAngle;
  147. break;
  148. case 3:
  149. player->EasyEyeAngles()->yaw = primaryBaseAngle - 45.f;
  150. break;
  151. case 4:
  152. player->EasyEyeAngles()->yaw = primaryBaseAngle + 90.f;
  153. break;
  154. case 5:
  155. player->EasyEyeAngles()->yaw = primaryBaseAngle - 130.f;
  156. break;
  157. case 6:
  158. player->EasyEyeAngles()->yaw = primaryBaseAngle - 180.f;
  159. break;
  160. case 7:
  161. player->EasyEyeAngles()->yaw = secondaryBaseAngle;
  162. break;
  163. case 8:
  164. player->EasyEyeAngles()->yaw = secondaryBaseAngle - 40.f;
  165. break;
  166. case 9:
  167. player->EasyEyeAngles()->yaw = secondaryBaseAngle - 90.f;
  168. break;
  169. case 10:
  170. player->EasyEyeAngles()->yaw = secondaryBaseAngle - 130.f;
  171. break;
  172. case 11:
  173. player->EasyEyeAngles()->yaw = secondaryBaseAngle - 70.f;
  174. break;
  175. case 12:
  176. player->EasyEyeAngles()->yaw = primaryBaseAngle + 45.f;
  177. break;
  178. case 13:
  179. player->EasyEyeAngles()->yaw = primaryBaseAngle + 135.f;
  180. break;
  181. case 14:
  182. player->EasyEyeAngles()->yaw = primaryBaseAngle - 90.f;
  183. break;
  184. }
  185. }
  186. #include <array>
  187.  
  188. std::array<float, 64> suspected_real;
  189. std::array<std::list<float>, 64> suspected_real_lbys;
  190. std::array<std::list<sdk::tickrecord_t>, 64> moving_records;
  191.  
  192. enum Activity
  193. {
  194. ACT_RESET,
  195. ACT_IDLE,
  196. ACT_TRANSITION,
  197. ACT_COVER,
  198. ACT_COVER_MED,
  199. ACT_COVER_LOW,
  200. ACT_WALK,
  201. ACT_WALK_AIM,
  202. ACT_WALK_CROUCH,
  203. ACT_WALK_CROUCH_AIM,
  204. ACT_RUN,
  205. ACT_RUN_AIM,
  206. ACT_RUN_CROUCH,
  207. ACT_RUN_CROUCH_AIM,
  208. ACT_RUN_PROTECTED,
  209. ACT_SCRIPT_CUSTOM_MOVE,
  210. ACT_RANGE_ATTACK1,
  211. ACT_RANGE_ATTACK2,
  212. ACT_RANGE_ATTACK1_LOW,
  213. ACT_RANGE_ATTACK2_LOW,
  214. ACT_DIESIMPLE,
  215. ACT_DIEBACKWARD,
  216. ACT_DIEFORWARD,
  217. ACT_DIEVIOLENT,
  218. ACT_DIERAGDOLL,
  219. ACT_FLY,
  220. ACT_HOVER,
  221. ACT_GLIDE,
  222. ACT_SWIM,
  223. ACT_JUMP,
  224. ACT_HOP,
  225. ACT_LEAP,
  226. ACT_LAND,
  227. ACT_CLIMB_UP,
  228. ACT_CLIMB_DOWN,
  229. ACT_CLIMB_DISMOUNT,
  230. ACT_SHIPLADDER_UP,
  231. ACT_SHIPLADDER_DOWN,
  232. ACT_STRAFE_LEFT,
  233. ACT_STRAFE_RIGHT,
  234. ACT_ROLL_LEFT,
  235. ACT_ROLL_RIGHT,
  236. ACT_TURN_LEFT,
  237. ACT_TURN_RIGHT,
  238. ACT_CROUCH,
  239. ACT_CROUCHIDLE,
  240. ACT_STAND,
  241. ACT_USE,
  242. ACT_ALIEN_BURROW_IDLE,
  243. ACT_ALIEN_BURROW_OUT,
  244. ACT_SIGNAL1,
  245. ACT_SIGNAL2,
  246. ACT_SIGNAL3,
  247. ACT_SIGNAL_ADVANCE,
  248. ACT_SIGNAL_FORWARD,
  249. ACT_SIGNAL_GROUP,
  250. ACT_SIGNAL_HALT,
  251. ACT_SIGNAL_LEFT,
  252. ACT_SIGNAL_RIGHT,
  253. ACT_SIGNAL_TAKECOVER,
  254. ACT_LOOKBACK_RIGHT,
  255. ACT_LOOKBACK_LEFT,
  256. ACT_COWER,
  257. ACT_SMALL_FLINCH,
  258. ACT_BIG_FLINCH,
  259. ACT_MELEE_ATTACK1,
  260. ACT_MELEE_ATTACK2,
  261. ACT_RELOAD,
  262. ACT_RELOAD_START,
  263. ACT_RELOAD_FINISH,
  264. ACT_RELOAD_LOW,
  265. ACT_ARM,
  266. ACT_DISARM,
  267. ACT_DROP_WEAPON,
  268. ACT_DROP_WEAPON_SHOTGUN,
  269. ACT_PICKUP_GROUND,
  270. ACT_PICKUP_RACK,
  271. ACT_IDLE_ANGRY,
  272. ACT_IDLE_RELAXED,
  273. ACT_IDLE_STIMULATED,
  274. ACT_IDLE_AGITATED,
  275. ACT_IDLE_STEALTH,
  276. ACT_IDLE_HURT,
  277. ACT_WALK_RELAXED,
  278. ACT_WALK_STIMULATED,
  279. ACT_WALK_AGITATED,
  280. ACT_WALK_STEALTH,
  281. ACT_RUN_RELAXED,
  282. ACT_RUN_STIMULATED,
  283. ACT_RUN_AGITATED,
  284. ACT_RUN_STEALTH,
  285. ACT_IDLE_AIM_RELAXED,
  286. ACT_IDLE_AIM_STIMULATED,
  287. ACT_IDLE_AIM_AGITATED,
  288. ACT_IDLE_AIM_STEALTH,
  289. ACT_WALK_AIM_RELAXED,
  290. ACT_WALK_AIM_STIMULATED,
  291. ACT_WALK_AIM_AGITATED,
  292. ACT_WALK_AIM_STEALTH,
  293. ACT_RUN_AIM_RELAXED,
  294. ACT_RUN_AIM_STIMULATED,
  295. ACT_RUN_AIM_AGITATED,
  296. ACT_RUN_AIM_STEALTH,
  297. ACT_CROUCHIDLE_STIMULATED,
  298. ACT_CROUCHIDLE_AIM_STIMULATED,
  299. ACT_CROUCHIDLE_AGITATED,
  300. ACT_WALK_HURT,
  301. ACT_RUN_HURT,
  302. ACT_SPECIAL_ATTACK1,
  303. ACT_SPECIAL_ATTACK2,
  304. ACT_COMBAT_IDLE,
  305. ACT_WALK_SCARED,
  306. ACT_RUN_SCARED,
  307. ACT_VICTORY_DANCE,
  308. ACT_DIE_HEADSHOT,
  309. ACT_DIE_CHESTSHOT,
  310. ACT_DIE_GUTSHOT,
  311. ACT_DIE_BACKSHOT,
  312. ACT_FLINCH_HEAD,
  313. ACT_FLINCH_CHEST,
  314. ACT_FLINCH_STOMACH,
  315. ACT_FLINCH_LEFTARM,
  316. ACT_FLINCH_RIGHTARM,
  317. ACT_FLINCH_LEFTLEG,
  318. ACT_FLINCH_RIGHTLEG,
  319. ACT_FLINCH_PHYSICS,
  320. ACT_FLINCH_HEAD_BACK,
  321. ACT_FLINCH_HEAD_LEFT,
  322. ACT_FLINCH_HEAD_RIGHT,
  323. ACT_FLINCH_CHEST_BACK,
  324. ACT_FLINCH_STOMACH_BACK,
  325. ACT_FLINCH_CROUCH_FRONT,
  326. ACT_FLINCH_CROUCH_BACK,
  327. ACT_FLINCH_CROUCH_LEFT,
  328. ACT_FLINCH_CROUCH_RIGHT,
  329. ACT_IDLE_ON_FIRE,
  330. ACT_WALK_ON_FIRE,
  331. ACT_RUN_ON_FIRE,
  332. ACT_RAPPEL_LOOP,
  333. ACT_180_LEFT,
  334. ACT_180_RIGHT,
  335. ACT_90_LEFT,
  336. ACT_90_RIGHT,
  337. ACT_STEP_LEFT,
  338. ACT_STEP_RIGHT,
  339. ACT_STEP_BACK,
  340. ACT_STEP_FORE,
  341. ACT_GESTURE_RANGE_ATTACK1,
  342. ACT_GESTURE_RANGE_ATTACK2,
  343. ACT_GESTURE_MELEE_ATTACK1,
  344. ACT_GESTURE_MELEE_ATTACK2,
  345. ACT_GESTURE_RANGE_ATTACK1_LOW,
  346. ACT_GESTURE_RANGE_ATTACK2_LOW,
  347. ACT_MELEE_ATTACK_SWING_GESTURE,
  348. ACT_GESTURE_SMALL_FLINCH,
  349. ACT_GESTURE_BIG_FLINCH,
  350. ACT_GESTURE_FLINCH_BLAST,
  351. ACT_GESTURE_FLINCH_BLAST_SHOTGUN,
  352. ACT_GESTURE_FLINCH_BLAST_DAMAGED,
  353. ACT_GESTURE_FLINCH_BLAST_DAMAGED_SHOTGUN,
  354. ACT_GESTURE_FLINCH_HEAD,
  355. ACT_GESTURE_FLINCH_CHEST,
  356. ACT_GESTURE_FLINCH_STOMACH,
  357. ACT_GESTURE_FLINCH_LEFTARM,
  358. ACT_GESTURE_FLINCH_RIGHTARM,
  359. ACT_GESTURE_FLINCH_LEFTLEG,
  360. ACT_GESTURE_FLINCH_RIGHTLEG,
  361. ACT_GESTURE_TURN_LEFT,
  362. ACT_GESTURE_TURN_RIGHT,
  363. ACT_GESTURE_TURN_LEFT45,
  364. ACT_GESTURE_TURN_RIGHT45,
  365. ACT_GESTURE_TURN_LEFT90,
  366. ACT_GESTURE_TURN_RIGHT90,
  367. ACT_GESTURE_TURN_LEFT45_FLAT,
  368. ACT_GESTURE_TURN_RIGHT45_FLAT,
  369. ACT_GESTURE_TURN_LEFT90_FLAT,
  370. ACT_GESTURE_TURN_RIGHT90_FLAT,
  371. ACT_BARNACLE_HIT,
  372. ACT_BARNACLE_PULL,
  373. ACT_BARNACLE_CHOMP,
  374. ACT_BARNACLE_CHEW,
  375. ACT_DO_NOT_DISTURB,
  376. ACT_SPECIFIC_SEQUENCE,
  377. ACT_VM_DRAW,
  378. ACT_VM_HOLSTER,
  379. ACT_VM_IDLE,
  380. ACT_VM_FIDGET,
  381. ACT_VM_PULLBACK,
  382. ACT_VM_PULLBACK_HIGH,
  383. ACT_VM_PULLBACK_LOW,
  384. ACT_VM_THROW,
  385. ACT_VM_PULLPIN,
  386. ACT_VM_PRIMARYATTACK,
  387. ACT_VM_SECONDARYATTACK,
  388. ACT_VM_RELOAD,
  389. ACT_VM_DRYFIRE,
  390. ACT_VM_HITLEFT,
  391. ACT_VM_HITLEFT2,
  392. ACT_VM_HITRIGHT,
  393. ACT_VM_HITRIGHT2,
  394. ACT_VM_HITCENTER,
  395. ACT_VM_HITCENTER2,
  396. ACT_VM_MISSLEFT,
  397. ACT_VM_MISSLEFT2,
  398. ACT_VM_MISSRIGHT,
  399. ACT_VM_MISSRIGHT2,
  400. ACT_VM_MISSCENTER,
  401. ACT_VM_MISSCENTER2,
  402. ACT_VM_HAULBACK,
  403. ACT_VM_SWINGHARD,
  404. ACT_VM_SWINGMISS,
  405. ACT_VM_SWINGHIT,
  406. ACT_VM_IDLE_TO_LOWERED,
  407. ACT_VM_IDLE_LOWERED,
  408. ACT_VM_LOWERED_TO_IDLE,
  409. ACT_VM_RECOIL1,
  410. ACT_VM_RECOIL2,
  411. ACT_VM_RECOIL3,
  412. ACT_VM_PICKUP,
  413. ACT_VM_RELEASE,
  414. ACT_VM_ATTACH_SILENCER,
  415. ACT_VM_DETACH_SILENCER,
  416. ACT_VM_EMPTY_FIRE,
  417. ACT_VM_EMPTY_RELOAD,
  418. ACT_VM_EMPTY_DRAW,
  419. ACT_VM_EMPTY_IDLE,
  420. ACT_SLAM_STICKWALL_IDLE,
  421. ACT_SLAM_STICKWALL_ND_IDLE,
  422. ACT_SLAM_STICKWALL_ATTACH,
  423. ACT_SLAM_STICKWALL_ATTACH2,
  424. ACT_SLAM_STICKWALL_ND_ATTACH,
  425. ACT_SLAM_STICKWALL_ND_ATTACH2,
  426. ACT_SLAM_STICKWALL_DETONATE,
  427. ACT_SLAM_STICKWALL_DETONATOR_HOLSTER,
  428. ACT_SLAM_STICKWALL_DRAW,
  429. ACT_SLAM_STICKWALL_ND_DRAW,
  430. ACT_SLAM_STICKWALL_TO_THROW,
  431. ACT_SLAM_STICKWALL_TO_THROW_ND,
  432. ACT_SLAM_STICKWALL_TO_TRIPMINE_ND,
  433. ACT_SLAM_THROW_IDLE,
  434. ACT_SLAM_THROW_ND_IDLE,
  435. ACT_SLAM_THROW_THROW,
  436. ACT_SLAM_THROW_THROW2,
  437. ACT_SLAM_THROW_THROW_ND,
  438. ACT_SLAM_THROW_THROW_ND2,
  439. ACT_SLAM_THROW_DRAW,
  440. ACT_SLAM_THROW_ND_DRAW,
  441. ACT_SLAM_THROW_TO_STICKWALL,
  442. ACT_SLAM_THROW_TO_STICKWALL_ND,
  443. ACT_SLAM_THROW_DETONATE,
  444. ACT_SLAM_THROW_DETONATOR_HOLSTER,
  445. ACT_SLAM_THROW_TO_TRIPMINE_ND,
  446. ACT_SLAM_TRIPMINE_IDLE,
  447. ACT_SLAM_TRIPMINE_DRAW,
  448. ACT_SLAM_TRIPMINE_ATTACH,
  449. ACT_SLAM_TRIPMINE_ATTACH2,
  450. ACT_SLAM_TRIPMINE_TO_STICKWALL_ND,
  451. ACT_SLAM_TRIPMINE_TO_THROW_ND,
  452. ACT_SLAM_DETONATOR_IDLE,
  453. ACT_SLAM_DETONATOR_DRAW,
  454. ACT_SLAM_DETONATOR_DETONATE,
  455. ACT_SLAM_DETONATOR_HOLSTER,
  456. ACT_SLAM_DETONATOR_STICKWALL_DRAW,
  457. ACT_SLAM_DETONATOR_THROW_DRAW,
  458. ACT_SHOTGUN_RELOAD_START,
  459. ACT_SHOTGUN_RELOAD_FINISH,
  460. ACT_SHOTGUN_PUMP,
  461. ACT_SMG2_IDLE2,
  462. ACT_SMG2_FIRE2,
  463. ACT_SMG2_DRAW2,
  464. ACT_SMG2_RELOAD2,
  465. ACT_SMG2_DRYFIRE2,
  466. ACT_SMG2_TOAUTO,
  467. ACT_SMG2_TOBURST,
  468. ACT_PHYSCANNON_UPGRADE,
  469. ACT_RANGE_ATTACK_AR1,
  470. ACT_RANGE_ATTACK_AR2,
  471. ACT_RANGE_ATTACK_AR2_LOW,
  472. ACT_RANGE_ATTACK_AR2_GRENADE,
  473. ACT_RANGE_ATTACK_HMG1,
  474. ACT_RANGE_ATTACK_ML,
  475. ACT_RANGE_ATTACK_SMG1,
  476. ACT_RANGE_ATTACK_SMG1_LOW,
  477. ACT_RANGE_ATTACK_SMG2,
  478. ACT_RANGE_ATTACK_SHOTGUN,
  479. ACT_RANGE_ATTACK_SHOTGUN_LOW,
  480. ACT_RANGE_ATTACK_PISTOL,
  481. ACT_RANGE_ATTACK_PISTOL_LOW,
  482. ACT_RANGE_ATTACK_SLAM,
  483. ACT_RANGE_ATTACK_TRIPWIRE,
  484. ACT_RANGE_ATTACK_THROW,
  485. ACT_RANGE_ATTACK_SNIPER_RIFLE,
  486. ACT_RANGE_ATTACK_RPG,
  487. ACT_MELEE_ATTACK_SWING,
  488. ACT_RANGE_AIM_LOW,
  489. ACT_RANGE_AIM_SMG1_LOW,
  490. ACT_RANGE_AIM_PISTOL_LOW,
  491. ACT_RANGE_AIM_AR2_LOW,
  492. ACT_COVER_PISTOL_LOW,
  493. ACT_COVER_SMG1_LOW,
  494. ACT_GESTURE_RANGE_ATTACK_AR1,
  495. ACT_GESTURE_RANGE_ATTACK_AR2,
  496. ACT_GESTURE_RANGE_ATTACK_AR2_GRENADE,
  497. ACT_GESTURE_RANGE_ATTACK_HMG1,
  498. ACT_GESTURE_RANGE_ATTACK_ML,
  499. ACT_GESTURE_RANGE_ATTACK_SMG1,
  500. ACT_GESTURE_RANGE_ATTACK_SMG1_LOW,
  501. ACT_GESTURE_RANGE_ATTACK_SMG2,
  502. ACT_GESTURE_RANGE_ATTACK_SHOTGUN,
  503. ACT_GESTURE_RANGE_ATTACK_PISTOL,
  504. ACT_GESTURE_RANGE_ATTACK_PISTOL_LOW,
  505. ACT_GESTURE_RANGE_ATTACK_SLAM,
  506. ACT_GESTURE_RANGE_ATTACK_TRIPWIRE,
  507. ACT_GESTURE_RANGE_ATTACK_THROW,
  508. ACT_GESTURE_RANGE_ATTACK_SNIPER_RIFLE,
  509. ACT_GESTURE_MELEE_ATTACK_SWING,
  510. ACT_IDLE_RIFLE,
  511. ACT_IDLE_SMG1,
  512. ACT_IDLE_ANGRY_SMG1,
  513. ACT_IDLE_PISTOL,
  514. ACT_IDLE_ANGRY_PISTOL,
  515. ACT_IDLE_ANGRY_SHOTGUN,
  516. ACT_IDLE_STEALTH_PISTOL,
  517. ACT_IDLE_PACKAGE,
  518. ACT_WALK_PACKAGE,
  519. ACT_IDLE_SUITCASE,
  520. ACT_WALK_SUITCASE,
  521. ACT_IDLE_SMG1_RELAXED,
  522. ACT_IDLE_SMG1_STIMULATED,
  523. ACT_WALK_RIFLE_RELAXED,
  524. ACT_RUN_RIFLE_RELAXED,
  525. ACT_WALK_RIFLE_STIMULATED,
  526. ACT_RUN_RIFLE_STIMULATED,
  527. ACT_IDLE_AIM_RIFLE_STIMULATED,
  528. ACT_WALK_AIM_RIFLE_STIMULATED,
  529. ACT_RUN_AIM_RIFLE_STIMULATED,
  530. ACT_IDLE_SHOTGUN_RELAXED,
  531. ACT_IDLE_SHOTGUN_STIMULATED,
  532. ACT_IDLE_SHOTGUN_AGITATED,
  533. ACT_WALK_ANGRY,
  534. ACT_POLICE_HARASS1,
  535. ACT_POLICE_HARASS2,
  536. ACT_IDLE_MANNEDGUN,
  537. ACT_IDLE_MELEE,
  538. ACT_IDLE_ANGRY_MELEE,
  539. ACT_IDLE_RPG_RELAXED,
  540. ACT_IDLE_RPG,
  541. ACT_IDLE_ANGRY_RPG,
  542. ACT_COVER_LOW_RPG,
  543. ACT_WALK_RPG,
  544. ACT_RUN_RPG,
  545. ACT_WALK_CROUCH_RPG,
  546. ACT_RUN_CROUCH_RPG,
  547. ACT_WALK_RPG_RELAXED,
  548. ACT_RUN_RPG_RELAXED,
  549. ACT_WALK_RIFLE,
  550. ACT_WALK_AIM_RIFLE,
  551. ACT_WALK_CROUCH_RIFLE,
  552. ACT_WALK_CROUCH_AIM_RIFLE,
  553. ACT_RUN_RIFLE,
  554. ACT_RUN_AIM_RIFLE,
  555. ACT_RUN_CROUCH_RIFLE,
  556. ACT_RUN_CROUCH_AIM_RIFLE,
  557. ACT_RUN_STEALTH_PISTOL,
  558. ACT_WALK_AIM_SHOTGUN,
  559. ACT_RUN_AIM_SHOTGUN,
  560. ACT_WALK_PISTOL,
  561. ACT_RUN_PISTOL,
  562. ACT_WALK_AIM_PISTOL,
  563. ACT_RUN_AIM_PISTOL,
  564. ACT_WALK_STEALTH_PISTOL,
  565. ACT_WALK_AIM_STEALTH_PISTOL,
  566. ACT_RUN_AIM_STEALTH_PISTOL,
  567. ACT_RELOAD_PISTOL,
  568. ACT_RELOAD_PISTOL_LOW,
  569. ACT_RELOAD_SMG1,
  570. ACT_RELOAD_SMG1_LOW,
  571. ACT_RELOAD_SHOTGUN,
  572. ACT_RELOAD_SHOTGUN_LOW,
  573. ACT_GESTURE_RELOAD,
  574. ACT_GESTURE_RELOAD_PISTOL,
  575. ACT_GESTURE_RELOAD_SMG1,
  576. ACT_GESTURE_RELOAD_SHOTGUN,
  577. ACT_BUSY_LEAN_LEFT,
  578. ACT_BUSY_LEAN_LEFT_ENTRY,
  579. ACT_BUSY_LEAN_LEFT_EXIT,
  580. ACT_BUSY_LEAN_BACK,
  581. ACT_BUSY_LEAN_BACK_ENTRY,
  582. ACT_BUSY_LEAN_BACK_EXIT,
  583. ACT_BUSY_SIT_GROUND,
  584. ACT_BUSY_SIT_GROUND_ENTRY,
  585. ACT_BUSY_SIT_GROUND_EXIT,
  586. ACT_BUSY_SIT_CHAIR,
  587. ACT_BUSY_SIT_CHAIR_ENTRY,
  588. ACT_BUSY_SIT_CHAIR_EXIT,
  589. ACT_BUSY_STAND,
  590. ACT_BUSY_QUEUE,
  591. ACT_DUCK_DODGE,
  592. ACT_DIE_BARNACLE_SWALLOW,
  593. ACT_GESTURE_BARNACLE_STRANGLE,
  594. ACT_PHYSCANNON_DETACH,
  595. ACT_PHYSCANNON_ANIMATE,
  596. ACT_PHYSCANNON_ANIMATE_PRE,
  597. ACT_PHYSCANNON_ANIMATE_POST,
  598. ACT_DIE_FRONTSIDE,
  599. ACT_DIE_RIGHTSIDE,
  600. ACT_DIE_BACKSIDE,
  601. ACT_DIE_LEFTSIDE,
  602. ACT_DIE_CROUCH_FRONTSIDE,
  603. ACT_DIE_CROUCH_RIGHTSIDE,
  604. ACT_DIE_CROUCH_BACKSIDE,
  605. ACT_DIE_CROUCH_LEFTSIDE,
  606. ACT_OPEN_DOOR,
  607. ACT_DI_ALYX_ZOMBIE_MELEE,
  608. ACT_DI_ALYX_ZOMBIE_TORSO_MELEE,
  609. ACT_DI_ALYX_HEADCRAB_MELEE,
  610. ACT_DI_ALYX_ANTLION,
  611. ACT_DI_ALYX_ZOMBIE_SHOTGUN64,
  612. ACT_DI_ALYX_ZOMBIE_SHOTGUN26,
  613. ACT_READINESS_RELAXED_TO_STIMULATED,
  614. ACT_READINESS_RELAXED_TO_STIMULATED_WALK,
  615. ACT_READINESS_AGITATED_TO_STIMULATED,
  616. ACT_READINESS_STIMULATED_TO_RELAXED,
  617. ACT_READINESS_PISTOL_RELAXED_TO_STIMULATED,
  618. ACT_READINESS_PISTOL_RELAXED_TO_STIMULATED_WALK,
  619. ACT_READINESS_PISTOL_AGITATED_TO_STIMULATED,
  620. ACT_READINESS_PISTOL_STIMULATED_TO_RELAXED,
  621. ACT_IDLE_CARRY,
  622. ACT_WALK_CARRY,
  623. ACT_STARTDYING,
  624. ACT_DYINGLOOP,
  625. ACT_DYINGTODEAD,
  626. ACT_RIDE_MANNED_GUN,
  627. ACT_VM_SPRINT_ENTER,
  628. ACT_VM_SPRINT_IDLE,
  629. ACT_VM_SPRINT_LEAVE,
  630. ACT_FIRE_START,
  631. ACT_FIRE_LOOP,
  632. ACT_FIRE_END,
  633. ACT_CROUCHING_GRENADEIDLE,
  634. ACT_CROUCHING_GRENADEREADY,
  635. ACT_CROUCHING_PRIMARYATTACK,
  636. ACT_OVERLAY_GRENADEIDLE,
  637. ACT_OVERLAY_GRENADEREADY,
  638. ACT_OVERLAY_PRIMARYATTACK,
  639. ACT_OVERLAY_SHIELD_UP,
  640. ACT_OVERLAY_SHIELD_DOWN,
  641. ACT_OVERLAY_SHIELD_UP_IDLE,
  642. ACT_OVERLAY_SHIELD_ATTACK,
  643. ACT_OVERLAY_SHIELD_KNOCKBACK,
  644. ACT_SHIELD_UP,
  645. ACT_SHIELD_DOWN,
  646. ACT_SHIELD_UP_IDLE,
  647. ACT_SHIELD_ATTACK,
  648. ACT_SHIELD_KNOCKBACK,
  649. ACT_CROUCHING_SHIELD_UP,
  650. ACT_CROUCHING_SHIELD_DOWN,
  651. ACT_CROUCHING_SHIELD_UP_IDLE,
  652. ACT_CROUCHING_SHIELD_ATTACK,
  653. ACT_CROUCHING_SHIELD_KNOCKBACK,
  654. ACT_TURNRIGHT45,
  655. ACT_TURNLEFT45,
  656. ACT_TURN,
  657. ACT_OBJ_ASSEMBLING,
  658. ACT_OBJ_DISMANTLING,
  659. ACT_OBJ_STARTUP,
  660. ACT_OBJ_RUNNING,
  661. ACT_OBJ_IDLE,
  662. ACT_OBJ_PLACING,
  663. ACT_OBJ_DETERIORATING,
  664. ACT_OBJ_UPGRADING,
  665. ACT_DEPLOY,
  666. ACT_DEPLOY_IDLE,
  667. ACT_UNDEPLOY,
  668. ACT_CROSSBOW_DRAW_UNLOADED,
  669. ACT_GAUSS_SPINUP,
  670. ACT_GAUSS_SPINCYCLE,
  671. ACT_VM_PRIMARYATTACK_SILENCED,
  672. ACT_VM_RELOAD_SILENCED,
  673. ACT_VM_DRYFIRE_SILENCED,
  674. ACT_VM_IDLE_SILENCED,
  675. ACT_VM_DRAW_SILENCED,
  676. ACT_VM_IDLE_EMPTY_LEFT,
  677. ACT_VM_DRYFIRE_LEFT,
  678. ACT_VM_IS_DRAW,
  679. ACT_VM_IS_HOLSTER,
  680. ACT_VM_IS_IDLE,
  681. ACT_VM_IS_PRIMARYATTACK,
  682. ACT_PLAYER_IDLE_FIRE,
  683. ACT_PLAYER_CROUCH_FIRE,
  684. ACT_PLAYER_CROUCH_WALK_FIRE,
  685. ACT_PLAYER_WALK_FIRE,
  686. ACT_PLAYER_RUN_FIRE,
  687. ACT_IDLETORUN,
  688. ACT_RUNTOIDLE,
  689. ACT_VM_DRAW_DEPLOYED,
  690. ACT_HL2MP_IDLE_MELEE,
  691. ACT_HL2MP_RUN_MELEE,
  692. ACT_HL2MP_IDLE_CROUCH_MELEE,
  693. ACT_HL2MP_WALK_CROUCH_MELEE,
  694. ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE,
  695. ACT_HL2MP_GESTURE_RELOAD_MELEE,
  696. ACT_HL2MP_JUMP_MELEE,
  697. ACT_VM_FIZZLE,
  698. ACT_MP_STAND_IDLE,
  699. ACT_MP_CROUCH_IDLE,
  700. ACT_MP_CROUCH_DEPLOYED_IDLE,
  701. ACT_MP_CROUCH_DEPLOYED,
  702. ACT_MP_DEPLOYED_IDLE,
  703. ACT_MP_RUN,
  704. ACT_MP_WALK,
  705. ACT_MP_AIRWALK,
  706. ACT_MP_CROUCHWALK,
  707. ACT_MP_SPRINT,
  708. ACT_MP_JUMP,
  709. ACT_MP_JUMP_START,
  710. ACT_MP_JUMP_FLOAT,
  711. ACT_MP_JUMP_LAND,
  712. ACT_MP_JUMP_IMPACT_N,
  713. ACT_MP_JUMP_IMPACT_E,
  714. ACT_MP_JUMP_IMPACT_W,
  715. ACT_MP_JUMP_IMPACT_S,
  716. ACT_MP_JUMP_IMPACT_TOP,
  717. ACT_MP_DOUBLEJUMP,
  718. ACT_MP_SWIM,
  719. ACT_MP_DEPLOYED,
  720. ACT_MP_SWIM_DEPLOYED,
  721. ACT_MP_VCD,
  722. ACT_MP_ATTACK_STAND_PRIMARYFIRE,
  723. ACT_MP_ATTACK_STAND_PRIMARYFIRE_DEPLOYED,
  724. ACT_MP_ATTACK_STAND_SECONDARYFIRE,
  725. ACT_MP_ATTACK_STAND_GRENADE,
  726. ACT_MP_ATTACK_CROUCH_PRIMARYFIRE,
  727. ACT_MP_ATTACK_CROUCH_PRIMARYFIRE_DEPLOYED,
  728. ACT_MP_ATTACK_CROUCH_SECONDARYFIRE,
  729. ACT_MP_ATTACK_CROUCH_GRENADE,
  730. ACT_MP_ATTACK_SWIM_PRIMARYFIRE,
  731. ACT_MP_ATTACK_SWIM_SECONDARYFIRE,
  732. ACT_MP_ATTACK_SWIM_GRENADE,
  733. ACT_MP_ATTACK_AIRWALK_PRIMARYFIRE,
  734. ACT_MP_ATTACK_AIRWALK_SECONDARYFIRE,
  735. ACT_MP_ATTACK_AIRWALK_GRENADE,
  736. ACT_MP_RELOAD_STAND,
  737. ACT_MP_RELOAD_STAND_LOOP,
  738. ACT_MP_RELOAD_STAND_END,
  739. ACT_MP_RELOAD_CROUCH,
  740. ACT_MP_RELOAD_CROUCH_LOOP,
  741. ACT_MP_RELOAD_CROUCH_END,
  742. ACT_MP_RELOAD_SWIM,
  743. ACT_MP_RELOAD_SWIM_LOOP,
  744. ACT_MP_RELOAD_SWIM_END,
  745. ACT_MP_RELOAD_AIRWALK,
  746. ACT_MP_RELOAD_AIRWALK_LOOP,
  747. ACT_MP_RELOAD_AIRWALK_END,
  748. ACT_MP_ATTACK_STAND_PREFIRE,
  749. ACT_MP_ATTACK_STAND_POSTFIRE,
  750. ACT_MP_ATTACK_STAND_STARTFIRE,
  751. ACT_MP_ATTACK_CROUCH_PREFIRE,
  752. ACT_MP_ATTACK_CROUCH_POSTFIRE,
  753. ACT_MP_ATTACK_SWIM_PREFIRE,
  754. ACT_MP_ATTACK_SWIM_POSTFIRE,
  755. ACT_MP_STAND_PRIMARY,
  756. ACT_MP_CROUCH_PRIMARY,
  757. ACT_MP_RUN_PRIMARY,
  758. ACT_MP_WALK_PRIMARY,
  759. ACT_MP_AIRWALK_PRIMARY,
  760. ACT_MP_CROUCHWALK_PRIMARY,
  761. ACT_MP_JUMP_PRIMARY,
  762. ACT_MP_JUMP_START_PRIMARY,
  763. ACT_MP_JUMP_FLOAT_PRIMARY,
  764. ACT_MP_JUMP_LAND_PRIMARY,
  765. ACT_MP_SWIM_PRIMARY,
  766. ACT_MP_DEPLOYED_PRIMARY,
  767. ACT_MP_SWIM_DEPLOYED_PRIMARY,
  768. ACT_MP_ATTACK_STAND_PRIMARY,
  769. ACT_MP_ATTACK_STAND_PRIMARY_DEPLOYED,
  770. ACT_MP_ATTACK_CROUCH_PRIMARY,
  771. ACT_MP_ATTACK_CROUCH_PRIMARY_DEPLOYED,
  772. ACT_MP_ATTACK_SWIM_PRIMARY,
  773. ACT_MP_ATTACK_AIRWALK_PRIMARY,
  774. ACT_MP_RELOAD_STAND_PRIMARY,
  775. ACT_MP_RELOAD_STAND_PRIMARY_LOOP,
  776. ACT_MP_RELOAD_STAND_PRIMARY_END,
  777. ACT_MP_RELOAD_CROUCH_PRIMARY,
  778. ACT_MP_RELOAD_CROUCH_PRIMARY_LOOP,
  779. ACT_MP_RELOAD_CROUCH_PRIMARY_END,
  780. ACT_MP_RELOAD_SWIM_PRIMARY,
  781. ACT_MP_RELOAD_SWIM_PRIMARY_LOOP,
  782. ACT_MP_RELOAD_SWIM_PRIMARY_END,
  783. ACT_MP_RELOAD_AIRWALK_PRIMARY,
  784. ACT_MP_RELOAD_AIRWALK_PRIMARY_LOOP,
  785. ACT_MP_RELOAD_AIRWALK_PRIMARY_END,
  786. ACT_MP_ATTACK_STAND_GRENADE_PRIMARY,
  787. ACT_MP_ATTACK_CROUCH_GRENADE_PRIMARY,
  788. ACT_MP_ATTACK_SWIM_GRENADE_PRIMARY,
  789. ACT_MP_ATTACK_AIRWALK_GRENADE_PRIMARY,
  790. ACT_MP_STAND_SECONDARY,
  791. ACT_MP_CROUCH_SECONDARY,
  792. ACT_MP_RUN_SECONDARY,
  793. ACT_MP_WALK_SECONDARY,
  794. ACT_MP_AIRWALK_SECONDARY,
  795. ACT_MP_CROUCHWALK_SECONDARY,
  796. ACT_MP_JUMP_SECONDARY,
  797. ACT_MP_JUMP_START_SECONDARY,
  798. ACT_MP_JUMP_FLOAT_SECONDARY,
  799. ACT_MP_JUMP_LAND_SECONDARY,
  800. ACT_MP_SWIM_SECONDARY,
  801. ACT_MP_ATTACK_STAND_SECONDARY,
  802. ACT_MP_ATTACK_CROUCH_SECONDARY,
  803. ACT_MP_ATTACK_SWIM_SECONDARY,
  804. ACT_MP_ATTACK_AIRWALK_SECONDARY,
  805. ACT_MP_RELOAD_STAND_SECONDARY,
  806. ACT_MP_RELOAD_STAND_SECONDARY_LOOP,
  807. ACT_MP_RELOAD_STAND_SECONDARY_END,
  808. ACT_MP_RELOAD_CROUCH_SECONDARY,
  809. ACT_MP_RELOAD_CROUCH_SECONDARY_LOOP,
  810. ACT_MP_RELOAD_CROUCH_SECONDARY_END,
  811. ACT_MP_RELOAD_SWIM_SECONDARY,
  812. ACT_MP_RELOAD_SWIM_SECONDARY_LOOP,
  813. ACT_MP_RELOAD_SWIM_SECONDARY_END,
  814. ACT_MP_RELOAD_AIRWALK_SECONDARY,
  815. ACT_MP_RELOAD_AIRWALK_SECONDARY_LOOP,
  816. ACT_MP_RELOAD_AIRWALK_SECONDARY_END,
  817. ACT_MP_ATTACK_STAND_GRENADE_SECONDARY,
  818. ACT_MP_ATTACK_CROUCH_GRENADE_SECONDARY,
  819. ACT_MP_ATTACK_SWIM_GRENADE_SECONDARY,
  820. ACT_MP_ATTACK_AIRWALK_GRENADE_SECONDARY,
  821. ACT_MP_STAND_MELEE,
  822. ACT_MP_CROUCH_MELEE,
  823. ACT_MP_RUN_MELEE,
  824. ACT_MP_WALK_MELEE,
  825. ACT_MP_AIRWALK_MELEE,
  826. ACT_MP_CROUCHWALK_MELEE,
  827. ACT_MP_JUMP_MELEE,
  828. ACT_MP_JUMP_START_MELEE,
  829. ACT_MP_JUMP_FLOAT_MELEE,
  830. ACT_MP_JUMP_LAND_MELEE,
  831. ACT_MP_SWIM_MELEE,
  832. ACT_MP_ATTACK_STAND_MELEE,
  833. ACT_MP_ATTACK_STAND_MELEE_SECONDARY,
  834. ACT_MP_ATTACK_CROUCH_MELEE,
  835. ACT_MP_ATTACK_CROUCH_MELEE_SECONDARY,
  836. ACT_MP_ATTACK_SWIM_MELEE,
  837. ACT_MP_ATTACK_AIRWALK_MELEE,
  838. ACT_MP_ATTACK_STAND_GRENADE_MELEE,
  839. ACT_MP_ATTACK_CROUCH_GRENADE_MELEE,
  840. ACT_MP_ATTACK_SWIM_GRENADE_MELEE,
  841. ACT_MP_ATTACK_AIRWALK_GRENADE_MELEE,
  842. ACT_MP_STAND_ITEM1,
  843. ACT_MP_CROUCH_ITEM1,
  844. ACT_MP_RUN_ITEM1,
  845. ACT_MP_WALK_ITEM1,
  846. ACT_MP_AIRWALK_ITEM1,
  847. ACT_MP_CROUCHWALK_ITEM1,
  848. ACT_MP_JUMP_ITEM1,
  849. ACT_MP_JUMP_START_ITEM1,
  850. ACT_MP_JUMP_FLOAT_ITEM1,
  851. ACT_MP_JUMP_LAND_ITEM1,
  852. ACT_MP_SWIM_ITEM1,
  853. ACT_MP_ATTACK_STAND_ITEM1,
  854. ACT_MP_ATTACK_STAND_ITEM1_SECONDARY,
  855. ACT_MP_ATTACK_CROUCH_ITEM1,
  856. ACT_MP_ATTACK_CROUCH_ITEM1_SECONDARY,
  857. ACT_MP_ATTACK_SWIM_ITEM1,
  858. ACT_MP_ATTACK_AIRWALK_ITEM1,
  859. ACT_MP_STAND_ITEM2,
  860. ACT_MP_CROUCH_ITEM2,
  861. ACT_MP_RUN_ITEM2,
  862. ACT_MP_WALK_ITEM2,
  863. ACT_MP_AIRWALK_ITEM2,
  864. ACT_MP_CROUCHWALK_ITEM2,
  865. ACT_MP_JUMP_ITEM2,
  866. ACT_MP_JUMP_START_ITEM2,
  867. ACT_MP_JUMP_FLOAT_ITEM2,
  868. ACT_MP_JUMP_LAND_ITEM2,
  869. ACT_MP_SWIM_ITEM2,
  870. ACT_MP_ATTACK_STAND_ITEM2,
  871. ACT_MP_ATTACK_STAND_ITEM2_SECONDARY,
  872. ACT_MP_ATTACK_CROUCH_ITEM2,
  873. ACT_MP_ATTACK_CROUCH_ITEM2_SECONDARY,
  874. ACT_MP_ATTACK_SWIM_ITEM2,
  875. ACT_MP_ATTACK_AIRWALK_ITEM2,
  876. ACT_MP_GESTURE_FLINCH,
  877. ACT_MP_GESTURE_FLINCH_PRIMARY,
  878. ACT_MP_GESTURE_FLINCH_SECONDARY,
  879. ACT_MP_GESTURE_FLINCH_MELEE,
  880. ACT_MP_GESTURE_FLINCH_ITEM1,
  881. ACT_MP_GESTURE_FLINCH_ITEM2,
  882. ACT_MP_GESTURE_FLINCH_HEAD,
  883. ACT_MP_GESTURE_FLINCH_CHEST,
  884. ACT_MP_GESTURE_FLINCH_STOMACH,
  885. ACT_MP_GESTURE_FLINCH_LEFTARM,
  886. ACT_MP_GESTURE_FLINCH_RIGHTARM,
  887. ACT_MP_GESTURE_FLINCH_LEFTLEG,
  888. ACT_MP_GESTURE_FLINCH_RIGHTLEG,
  889. ACT_MP_GRENADE1_DRAW,
  890. ACT_MP_GRENADE1_IDLE,
  891. ACT_MP_GRENADE1_ATTACK,
  892. ACT_MP_GRENADE2_DRAW,
  893. ACT_MP_GRENADE2_IDLE,
  894. ACT_MP_GRENADE2_ATTACK,
  895. ACT_MP_PRIMARY_GRENADE1_DRAW,
  896. ACT_MP_PRIMARY_GRENADE1_IDLE,
  897. ACT_MP_PRIMARY_GRENADE1_ATTACK,
  898. ACT_MP_PRIMARY_GRENADE2_DRAW,
  899. ACT_MP_PRIMARY_GRENADE2_IDLE,
  900. ACT_MP_PRIMARY_GRENADE2_ATTACK,
  901. ACT_MP_SECONDARY_GRENADE1_DRAW,
  902. ACT_MP_SECONDARY_GRENADE1_IDLE,
  903. ACT_MP_SECONDARY_GRENADE1_ATTACK,
  904. ACT_MP_SECONDARY_GRENADE2_DRAW,
  905. ACT_MP_SECONDARY_GRENADE2_IDLE,
  906. ACT_MP_SECONDARY_GRENADE2_ATTACK,
  907. ACT_MP_MELEE_GRENADE1_DRAW,
  908. ACT_MP_MELEE_GRENADE1_IDLE,
  909. ACT_MP_MELEE_GRENADE1_ATTACK,
  910. ACT_MP_MELEE_GRENADE2_DRAW,
  911. ACT_MP_MELEE_GRENADE2_IDLE,
  912. ACT_MP_MELEE_GRENADE2_ATTACK,
  913. ACT_MP_ITEM1_GRENADE1_DRAW,
  914. ACT_MP_ITEM1_GRENADE1_IDLE,
  915. ACT_MP_ITEM1_GRENADE1_ATTACK,
  916. ACT_MP_ITEM1_GRENADE2_DRAW,
  917. ACT_MP_ITEM1_GRENADE2_IDLE,
  918. ACT_MP_ITEM1_GRENADE2_ATTACK,
  919. ACT_MP_ITEM2_GRENADE1_DRAW,
  920. ACT_MP_ITEM2_GRENADE1_IDLE,
  921. ACT_MP_ITEM2_GRENADE1_ATTACK,
  922. ACT_MP_ITEM2_GRENADE2_DRAW,
  923. ACT_MP_ITEM2_GRENADE2_IDLE,
  924. ACT_MP_ITEM2_GRENADE2_ATTACK,
  925. ACT_MP_STAND_BUILDING,
  926. ACT_MP_CROUCH_BUILDING,
  927. ACT_MP_RUN_BUILDING,
  928. ACT_MP_WALK_BUILDING,
  929. ACT_MP_AIRWALK_BUILDING,
  930. ACT_MP_CROUCHWALK_BUILDING,
  931. ACT_MP_JUMP_BUILDING,
  932. ACT_MP_JUMP_START_BUILDING,
  933. ACT_MP_JUMP_FLOAT_BUILDING,
  934. ACT_MP_JUMP_LAND_BUILDING,
  935. ACT_MP_SWIM_BUILDING,
  936. ACT_MP_ATTACK_STAND_BUILDING,
  937. ACT_MP_ATTACK_CROUCH_BUILDING,
  938. ACT_MP_ATTACK_SWIM_BUILDING,
  939. ACT_MP_ATTACK_AIRWALK_BUILDING,
  940. ACT_MP_ATTACK_STAND_GRENADE_BUILDING,
  941. ACT_MP_ATTACK_CROUCH_GRENADE_BUILDING,
  942. ACT_MP_ATTACK_SWIM_GRENADE_BUILDING,
  943. ACT_MP_ATTACK_AIRWALK_GRENADE_BUILDING,
  944. ACT_MP_STAND_PDA,
  945. ACT_MP_CROUCH_PDA,
  946. ACT_MP_RUN_PDA,
  947. ACT_MP_WALK_PDA,
  948. ACT_MP_AIRWALK_PDA,
  949. ACT_MP_CROUCHWALK_PDA,
  950. ACT_MP_JUMP_PDA,
  951. ACT_MP_JUMP_START_PDA,
  952. ACT_MP_JUMP_FLOAT_PDA,
  953. ACT_MP_JUMP_LAND_PDA,
  954. ACT_MP_SWIM_PDA,
  955. ACT_MP_ATTACK_STAND_PDA,
  956. ACT_MP_ATTACK_SWIM_PDA,
  957. ACT_MP_GESTURE_VC_HANDMOUTH,
  958. ACT_MP_GESTURE_VC_FINGERPOINT,
  959. ACT_MP_GESTURE_VC_FISTPUMP,
  960. ACT_MP_GESTURE_VC_THUMBSUP,
  961. ACT_MP_GESTURE_VC_NODYES,
  962. ACT_MP_GESTURE_VC_NODNO,
  963. ACT_MP_GESTURE_VC_HANDMOUTH_PRIMARY,
  964. ACT_MP_GESTURE_VC_FINGERPOINT_PRIMARY,
  965. ACT_MP_GESTURE_VC_FISTPUMP_PRIMARY,
  966. ACT_MP_GESTURE_VC_THUMBSUP_PRIMARY,
  967. ACT_MP_GESTURE_VC_NODYES_PRIMARY,
  968. ACT_MP_GESTURE_VC_NODNO_PRIMARY,
  969. ACT_MP_GESTURE_VC_HANDMOUTH_SECONDARY,
  970. ACT_MP_GESTURE_VC_FINGERPOINT_SECONDARY,
  971. ACT_MP_GESTURE_VC_FISTPUMP_SECONDARY,
  972. ACT_MP_GESTURE_VC_THUMBSUP_SECONDARY,
  973. ACT_MP_GESTURE_VC_NODYES_SECONDARY,
  974. ACT_MP_GESTURE_VC_NODNO_SECONDARY,
  975. ACT_MP_GESTURE_VC_HANDMOUTH_MELEE,
  976. ACT_MP_GESTURE_VC_FINGERPOINT_MELEE,
  977. ACT_MP_GESTURE_VC_FISTPUMP_MELEE,
  978. ACT_MP_GESTURE_VC_THUMBSUP_MELEE,
  979. ACT_MP_GESTURE_VC_NODYES_MELEE,
  980. ACT_MP_GESTURE_VC_NODNO_MELEE,
  981. ACT_MP_GESTURE_VC_HANDMOUTH_ITEM1,
  982. ACT_MP_GESTURE_VC_FINGERPOINT_ITEM1,
  983. ACT_MP_GESTURE_VC_FISTPUMP_ITEM1,
  984. ACT_MP_GESTURE_VC_THUMBSUP_ITEM1,
  985. ACT_MP_GESTURE_VC_NODYES_ITEM1,
  986. ACT_MP_GESTURE_VC_NODNO_ITEM1,
  987. ACT_MP_GESTURE_VC_HANDMOUTH_ITEM2,
  988. ACT_MP_GESTURE_VC_FINGERPOINT_ITEM2,
  989. ACT_MP_GESTURE_VC_FISTPUMP_ITEM2,
  990. ACT_MP_GESTURE_VC_THUMBSUP_ITEM2,
  991. ACT_MP_GESTURE_VC_NODYES_ITEM2,
  992. ACT_MP_GESTURE_VC_NODNO_ITEM2,
  993. ACT_MP_GESTURE_VC_HANDMOUTH_BUILDING,
  994. ACT_MP_GESTURE_VC_FINGERPOINT_BUILDING,
  995. ACT_MP_GESTURE_VC_FISTPUMP_BUILDING,
  996. ACT_MP_GESTURE_VC_THUMBSUP_BUILDING,
  997. ACT_MP_GESTURE_VC_NODYES_BUILDING,
  998. ACT_MP_GESTURE_VC_NODNO_BUILDING,
  999. ACT_MP_GESTURE_VC_HANDMOUTH_PDA,
  1000. ACT_MP_GESTURE_VC_FINGERPOINT_PDA,
  1001. ACT_MP_GESTURE_VC_FISTPUMP_PDA,
  1002. ACT_MP_GESTURE_VC_THUMBSUP_PDA,
  1003. ACT_MP_GESTURE_VC_NODYES_PDA,
  1004. ACT_MP_GESTURE_VC_NODNO_PDA,
  1005. ACT_VM_UNUSABLE,
  1006. ACT_VM_UNUSABLE_TO_USABLE,
  1007. ACT_VM_USABLE_TO_UNUSABLE,
  1008. ACT_PRIMARY_VM_DRAW,
  1009. ACT_PRIMARY_VM_HOLSTER,
  1010. ACT_PRIMARY_VM_IDLE,
  1011. ACT_PRIMARY_VM_PULLBACK,
  1012. ACT_PRIMARY_VM_PRIMARYATTACK,
  1013. ACT_PRIMARY_VM_SECONDARYATTACK,
  1014. ACT_PRIMARY_VM_RELOAD,
  1015. ACT_PRIMARY_VM_DRYFIRE,
  1016. ACT_PRIMARY_VM_IDLE_TO_LOWERED,
  1017. ACT_PRIMARY_VM_IDLE_LOWERED,
  1018. ACT_PRIMARY_VM_LOWERED_TO_IDLE,
  1019. ACT_SECONDARY_VM_DRAW,
  1020. ACT_SECONDARY_VM_HOLSTER,
  1021. ACT_SECONDARY_VM_IDLE,
  1022. ACT_SECONDARY_VM_PULLBACK,
  1023. ACT_SECONDARY_VM_PRIMARYATTACK,
  1024. ACT_SECONDARY_VM_SECONDARYATTACK,
  1025. ACT_SECONDARY_VM_RELOAD,
  1026. ACT_SECONDARY_VM_DRYFIRE,
  1027. ACT_SECONDARY_VM_IDLE_TO_LOWERED,
  1028. ACT_SECONDARY_VM_IDLE_LOWERED,
  1029. ACT_SECONDARY_VM_LOWERED_TO_IDLE,
  1030. ACT_MELEE_VM_DRAW,
  1031. ACT_MELEE_VM_HOLSTER,
  1032. ACT_MELEE_VM_IDLE,
  1033. ACT_MELEE_VM_PULLBACK,
  1034. ACT_MELEE_VM_PRIMARYATTACK,
  1035. ACT_MELEE_VM_SECONDARYATTACK,
  1036. ACT_MELEE_VM_RELOAD,
  1037. ACT_MELEE_VM_DRYFIRE,
  1038. ACT_MELEE_VM_IDLE_TO_LOWERED,
  1039. ACT_MELEE_VM_IDLE_LOWERED,
  1040. ACT_MELEE_VM_LOWERED_TO_IDLE,
  1041. ACT_PDA_VM_DRAW,
  1042. ACT_PDA_VM_HOLSTER,
  1043. ACT_PDA_VM_IDLE,
  1044. ACT_PDA_VM_PULLBACK,
  1045. ACT_PDA_VM_PRIMARYATTACK,
  1046. ACT_PDA_VM_SECONDARYATTACK,
  1047. ACT_PDA_VM_RELOAD,
  1048. ACT_PDA_VM_DRYFIRE,
  1049. ACT_PDA_VM_IDLE_TO_LOWERED,
  1050. ACT_PDA_VM_IDLE_LOWERED,
  1051. ACT_PDA_VM_LOWERED_TO_IDLE,
  1052. ACT_ITEM1_VM_DRAW,
  1053. ACT_ITEM1_VM_HOLSTER,
  1054. ACT_ITEM1_VM_IDLE,
  1055. ACT_ITEM1_VM_PULLBACK,
  1056. ACT_ITEM1_VM_PRIMARYATTACK,
  1057. ACT_ITEM1_VM_SECONDARYATTACK,
  1058. ACT_ITEM1_VM_RELOAD,
  1059. ACT_ITEM1_VM_DRYFIRE,
  1060. ACT_ITEM1_VM_IDLE_TO_LOWERED,
  1061. ACT_ITEM1_VM_IDLE_LOWERED,
  1062. ACT_ITEM1_VM_LOWERED_TO_IDLE,
  1063. ACT_ITEM2_VM_DRAW,
  1064. ACT_ITEM2_VM_HOLSTER,
  1065. ACT_ITEM2_VM_IDLE,
  1066. ACT_ITEM2_VM_PULLBACK,
  1067. ACT_ITEM2_VM_PRIMARYATTACK,
  1068. ACT_ITEM2_VM_SECONDARYATTACK,
  1069. ACT_ITEM2_VM_RELOAD,
  1070. ACT_ITEM2_VM_DRYFIRE,
  1071. ACT_ITEM2_VM_IDLE_TO_LOWERED,
  1072. ACT_ITEM2_VM_IDLE_LOWERED,
  1073. ACT_ITEM2_VM_LOWERED_TO_IDLE,
  1074. ACT_RELOAD_SUCCEED,
  1075. ACT_RELOAD_FAIL,
  1076. ACT_WALK_AIM_AUTOGUN,
  1077. ACT_RUN_AIM_AUTOGUN,
  1078. ACT_IDLE_AUTOGUN,
  1079. ACT_IDLE_AIM_AUTOGUN,
  1080. ACT_RELOAD_AUTOGUN,
  1081. ACT_CROUCH_IDLE_AUTOGUN,
  1082. ACT_RANGE_ATTACK_AUTOGUN,
  1083. ACT_JUMP_AUTOGUN,
  1084. ACT_IDLE_AIM_PISTOL,
  1085. ACT_WALK_AIM_DUAL,
  1086. ACT_RUN_AIM_DUAL,
  1087. ACT_IDLE_DUAL,
  1088. ACT_IDLE_AIM_DUAL,
  1089. ACT_RELOAD_DUAL,
  1090. ACT_CROUCH_IDLE_DUAL,
  1091. ACT_RANGE_ATTACK_DUAL,
  1092. ACT_JUMP_DUAL,
  1093. ACT_IDLE_SHOTGUN,
  1094. ACT_IDLE_AIM_SHOTGUN,
  1095. ACT_CROUCH_IDLE_SHOTGUN,
  1096. ACT_JUMP_SHOTGUN,
  1097. ACT_IDLE_AIM_RIFLE,
  1098. ACT_RELOAD_RIFLE,
  1099. ACT_CROUCH_IDLE_RIFLE,
  1100. ACT_RANGE_ATTACK_RIFLE,
  1101. ACT_JUMP_RIFLE,
  1102. ACT_SLEEP,
  1103. ACT_WAKE,
  1104. ACT_FLICK_LEFT,
  1105. ACT_FLICK_LEFT_MIDDLE,
  1106. ACT_FLICK_RIGHT_MIDDLE,
  1107. ACT_FLICK_RIGHT,
  1108. ACT_SPINAROUND,
  1109. ACT_PREP_TO_FIRE,
  1110. ACT_FIRE,
  1111. ACT_FIRE_RECOVER,
  1112. ACT_SPRAY,
  1113. ACT_PREP_EXPLODE,
  1114. ACT_EXPLODE,
  1115. ACT_DOTA_IDLE,
  1116. ACT_DOTA_RUN,
  1117. ACT_DOTA_ATTACK,
  1118. ACT_DOTA_ATTACK_EVENT,
  1119. ACT_DOTA_DIE,
  1120. ACT_DOTA_FLINCH,
  1121. ACT_DOTA_DISABLED,
  1122. ACT_DOTA_CAST_ABILITY_1,
  1123. ACT_DOTA_CAST_ABILITY_2,
  1124. ACT_DOTA_CAST_ABILITY_3,
  1125. ACT_DOTA_CAST_ABILITY_4,
  1126. ACT_DOTA_OVERRIDE_ABILITY_1,
  1127. ACT_DOTA_OVERRIDE_ABILITY_2,
  1128. ACT_DOTA_OVERRIDE_ABILITY_3,
  1129. ACT_DOTA_OVERRIDE_ABILITY_4,
  1130. ACT_DOTA_CHANNEL_ABILITY_1,
  1131. ACT_DOTA_CHANNEL_ABILITY_2,
  1132. ACT_DOTA_CHANNEL_ABILITY_3,
  1133. ACT_DOTA_CHANNEL_ABILITY_4,
  1134. ACT_DOTA_CHANNEL_END_ABILITY_1,
  1135. ACT_DOTA_CHANNEL_END_ABILITY_2,
  1136. ACT_DOTA_CHANNEL_END_ABILITY_3,
  1137. ACT_DOTA_CHANNEL_END_ABILITY_4,
  1138. ACT_MP_RUN_SPEEDPAINT,
  1139. ACT_MP_LONG_FALL,
  1140. ACT_MP_TRACTORBEAM_FLOAT,
  1141. ACT_MP_DEATH_CRUSH,
  1142. ACT_MP_RUN_SPEEDPAINT_PRIMARY,
  1143. ACT_MP_DROWNING_PRIMARY,
  1144. ACT_MP_LONG_FALL_PRIMARY,
  1145. ACT_MP_TRACTORBEAM_FLOAT_PRIMARY,
  1146. ACT_MP_DEATH_CRUSH_PRIMARY,
  1147. ACT_DIE_STAND,
  1148. ACT_DIE_STAND_HEADSHOT,
  1149. ACT_DIE_CROUCH,
  1150. ACT_DIE_CROUCH_HEADSHOT,
  1151. ACT_CSGO_NULL,
  1152. ACT_CSGO_DEFUSE,
  1153. ACT_CSGO_DEFUSE_WITH_KIT,
  1154. ACT_CSGO_FLASHBANG_REACTION,
  1155. ACT_CSGO_FIRE_PRIMARY,
  1156. ACT_CSGO_FIRE_PRIMARY_OPT_1,
  1157. ACT_CSGO_FIRE_PRIMARY_OPT_2,
  1158. ACT_CSGO_FIRE_SECONDARY,
  1159. ACT_CSGO_FIRE_SECONDARY_OPT_1,
  1160. ACT_CSGO_FIRE_SECONDARY_OPT_2,
  1161. ACT_CSGO_RELOAD,
  1162. ACT_CSGO_RELOAD_START,
  1163. ACT_CSGO_RELOAD_LOOP,
  1164. ACT_CSGO_RELOAD_END,
  1165. ACT_CSGO_OPERATE,
  1166. ACT_CSGO_DEPLOY,
  1167. ACT_CSGO_CATCH,
  1168. ACT_CSGO_SILENCER_DETACH,
  1169. ACT_CSGO_SILENCER_ATTACH,
  1170. ACT_CSGO_TWITCH,
  1171. ACT_CSGO_TWITCH_BUYZONE,
  1172. ACT_CSGO_PLANT_BOMB,
  1173. ACT_CSGO_IDLE_TURN_BALANCEADJUST,
  1174. ACT_CSGO_IDLE_ADJUST_STOPPEDMOVING,
  1175. ACT_CSGO_ALIVE_LOOP,
  1176. ACT_CSGO_FLINCH,
  1177. ACT_CSGO_FLINCH_HEAD,
  1178. ACT_CSGO_FLINCH_MOLOTOV,
  1179. ACT_CSGO_JUMP,
  1180. ACT_CSGO_FALL,
  1181. ACT_CSGO_CLIMB_LADDER,
  1182. ACT_CSGO_LAND_LIGHT,
  1183. ACT_CSGO_LAND_HEAVY,
  1184. ACT_CSGO_EXIT_LADDER_TOP,
  1185. ACT_CSGO_EXIT_LADDER_BOTTOM,
  1186. };
  1187.  
  1188.  
  1189. float random(float a, float b) {
  1190. float _return = (float)rand() / (float)RAND_MAX;
  1191. float delta = a - b;
  1192. return ((_return * delta) + a);
  1193. }
  1194. bool similar(float a, float b, float c = 17) {
  1195. return (abs(a - b) <= c);
  1196. }
  1197. void cap() {
  1198. for (int i = 0; i <= 64; i++) {
  1199. while (suspected_real_lbys[i].size() > 5) {
  1200. suspected_real_lbys[i].pop_back();
  1201. }
  1202. }
  1203. }
  1204. bool CResolver::lowerBodyYawUpdated(sdk::CBaseEntity* entity) {
  1205. for (int w = 0; w < 13; w++)
  1206. {
  1207. sdk::CAnimationLayer currentLayer = entity->GetAnimOverlays()[1];
  1208. const int activity = entity->GetSequenceActivity(currentLayer.m_nSequence);
  1209. float flcycle = currentLayer.m_flCycle, flprevcycle = currentLayer.m_flPrevCycle, flweight = currentLayer.m_flWeight, flweightdatarate = currentLayer.m_flWeightDeltaRate;
  1210. uint32_t norder = currentLayer.m_nOrder;
  1211. if (activity == 973 && flweight == 1.f || activity == 979 && flweight == 1.0f && currentLayer.m_flPrevCycle != currentLayer.m_flCycle)// 961 looks like they shot //flweight seems like right as the animation or right after 972 could be moving
  1212. return true;
  1213. }
  1214. return false;
  1215. }
  1216. bool CResolver::IsBreakingLBY120(sdk::CBaseEntity* entity)
  1217. {
  1218. for (int w = 0; w < 13; w++)
  1219. {
  1220. sdk::CAnimationLayer prevlayer;
  1221. sdk::CAnimationLayer currentLayer = entity->GetAnimOverlays()[1];
  1222. const int activity = entity->GetSequenceActivity(currentLayer.m_nSequence);
  1223. float flcycle = currentLayer.m_flCycle, flprevcycle = currentLayer.m_flPrevCycle, flweight = currentLayer.m_flWeight, flweightdatarate = currentLayer.m_flWeightDeltaRate;
  1224. uint32_t norder = currentLayer.m_nOrder;
  1225. if (activity == ACT_CSGO_IDLE_ADJUST_STOPPEDMOVING || activity == ACT_CSGO_IDLE_TURN_BALANCEADJUST && flweight >= .99 && currentLayer.m_flPrevCycle != currentLayer.m_flCycle)
  1226. {
  1227. float flanimTime = currentLayer.m_flCycle, flsimtime = entity->GetSimTime();
  1228.  
  1229. return true;//force lby-180?
  1230. }
  1231. prevlayer = currentLayer;
  1232. return false;
  1233. }
  1234. return false;
  1235. }
  1236. bool CResolver::IsResolvableByLBY(sdk::CBaseEntity* entity)
  1237. {
  1238. for (int w = 0; w < 13; w++)
  1239. {
  1240. sdk::CAnimationLayer prevlayer;
  1241. sdk::CAnimationLayer currentLayer = entity->GetAnimOverlays()[1];
  1242. const int activity = entity->GetSequenceActivity(currentLayer.m_nSequence);
  1243. float flcycle = currentLayer.m_flCycle, flprevcycle = currentLayer.m_flPrevCycle, flweight = currentLayer.m_flWeight, flweightdatarate = currentLayer.m_flWeightDeltaRate;
  1244. uint32_t norder = currentLayer.m_nOrder;
  1245. if (activity == 979 && currentLayer.m_flWeight == 0.f && currentLayer.m_flPrevCycle != currentLayer.m_flCycle)
  1246. {
  1247. return true;//bruteeee because breaking lby <120
  1248. }
  1249. prevlayer = currentLayer;
  1250. }
  1251. return false;
  1252. }
  1253. bool CResolver::playerStoppedMoving(sdk::CBaseEntity* entity)
  1254. {
  1255. for (int w = 0; w < 13; w++)
  1256. {
  1257. sdk::CAnimationLayer currentLayer = entity->GetAnimOverlays()[1];
  1258. const int activity = entity->GetSequenceActivity(currentLayer.m_nSequence);
  1259. float flcycle = currentLayer.m_flCycle, flprevcycle = currentLayer.m_flPrevCycle, flweight = currentLayer.m_flWeight, flweightdatarate = currentLayer.m_flWeightDeltaRate;
  1260. uint32_t norder = currentLayer.m_nOrder;
  1261. if (activity == ACT_CSGO_IDLE_ADJUST_STOPPEDMOVING)
  1262. return true;
  1263. }
  1264. return false;
  1265. }
  1266.  
  1267. float CResolver::lby_delta(sdk::CBaseEntity* entity)
  1268. {
  1269. float average = 0;
  1270.  
  1271. for (auto v : suspected_real_lbys[entity->GetIndex()])
  1272. {
  1273. average += v;
  1274. }
  1275.  
  1276. if (average != 0) average /= suspected_real_lbys[entity->GetIndex()].size();
  1277.  
  1278. return entity->GetLowerBodyYaw() + average;
  1279. }
  1280.  
  1281. bool CResolver::lby_delta_found(sdk::CBaseEntity* entity)
  1282. {
  1283. if (suspected_real_lbys[entity->GetIndex()].size() < 1) return false;
  1284.  
  1285.  
  1286.  
  1287. float average = abs(lby_delta(entity) - entity->GetLowerBodyYaw());
  1288.  
  1289.  
  1290.  
  1291. if (average > 20 && average <= 119) {
  1292.  
  1293. return true;
  1294.  
  1295. }
  1296.  
  1297.  
  1298.  
  1299. return false;
  1300. }
  1301.  
  1302. bool CResolver::breaking_lby(sdk::CBaseEntity* entity) {
  1303.  
  1304. bool set = true;
  1305. sdk::CAnimationLayer previous;
  1306.  
  1307.  
  1308.  
  1309. for (int i = 0; i < 13; i++)
  1310. {
  1311. sdk::CAnimationLayer layer = entity->GetAnimOverlay(i);
  1312. if (set) {
  1313. set = false;
  1314. previous = layer;
  1315. }
  1316.  
  1317.  
  1318. if ((previous.m_flCycle != layer.m_flCycle) || layer.m_flWeight == 1.f)
  1319. {
  1320.  
  1321.  
  1322. const int activity = entity->GetSequenceActivity(layer.m_nSequence);
  1323. int _previous = entity->GetSequenceActivity(previous.m_nSequence);
  1324. if (activity == 979 && _previous == 979) return true;
  1325. }
  1326.  
  1327. previous = layer;
  1328. }
  1329. return false;
  1330. }
  1331. #include <array>
  1332.  
  1333. std::array<sdk::tickrecord_t, 64> last_backtrackable_tick;
  1334. bool CResolver::can_backtrack(sdk::CBaseEntity* entity)
  1335. {
  1336. float lby_update_time = last_backtrackable_tick[entity->GetIndex()]._simulation_time;
  1337. float current_time = ctx::globals->curtime;
  1338.  
  1339. return ((current_time - lby_update_time) <= 0.2f);
  1340. }
  1341.  
  1342.  
  1343. void CResolver::resolve(sdk::CBaseEntity* entity)
  1344. {
  1345. auto local_player = ctx::client_ent_list->GetClientEntity(ctx::engine->GetLocalPlayer());
  1346.  
  1347. if (!entity)
  1348. return;
  1349.  
  1350. if (!local_player)
  1351. return;
  1352.  
  1353. bool is_local_player = entity == local_player;
  1354. bool is_teammate = local_player->GetTeam() == entity->GetTeam() && !is_local_player;
  1355.  
  1356. if (is_local_player)
  1357. return;
  1358.  
  1359. if (is_teammate)
  1360. return;
  1361.  
  1362. if (entity->GetHealth() <= 0)
  1363. return;
  1364.  
  1365. if (local_player->GetHealth() <= 0)
  1366. return;
  1367.  
  1368. //--- Variable Declaration ---//;
  1369. auto &info = player_info[entity->GetIndex()];
  1370.  
  1371. //--- Variable Defenitions/Checks ---//
  1372. float fl_lby = entity->GetLowerBodyYaw();
  1373.  
  1374. info.lby = Vector(entity->GetEyeAngles().x, entity->GetLowerBodyYaw(), 0.f);
  1375. info.inverse = Vector(entity->GetEyeAngles().x, entity->GetLowerBodyYaw() + 180.f, 0.f);
  1376. info.last_lby = Vector(entity->GetEyeAngles().x, info.last_moving_lby, 0.f);
  1377. info.inverse_left = Vector(entity->GetEyeAngles().x, entity->GetLowerBodyYaw() + 115.f, 0.f);
  1378. info.inverse_right = Vector(entity->GetEyeAngles().x, entity->GetLowerBodyYaw() - 226.f, 0.f);
  1379.  
  1380. info.back = Vector(entity->GetEyeAngles().x, UTILS::CalcAngle(entity->GetVecOrigin(), local_player->GetVecOrigin()).y + 180.f, 0.f);
  1381. info.right = Vector(entity->GetEyeAngles().x, UTILS::CalcAngle(entity->GetVecOrigin(), local_player->GetVecOrigin()).y + 226.f, 0.f);
  1382. info.left = Vector(entity->GetEyeAngles().x, UTILS::CalcAngle(entity->GetVecOrigin(), local_player->GetVecOrigin()).y - 70.f, 0.f);
  1383.  
  1384. info.backtrack = Vector(entity->GetEyeAngles().x, lby_to_back[entity->GetIndex()], 0.f);
  1385. float yaw = entity->GetEyeAngles().y;
  1386. shots_missed[entity->GetIndex()] = shots_fired[entity->GetIndex()] - shots_hit[entity->GetIndex()];
  1387. if (Vars::options.fakefix_bool)
  1388. info.is_moving = entity->GetVelocity().Length2D() > 0.1 && entity->GetFlags() & FL_ONGROUND && !info.could_be_slowmo;
  1389. else
  1390. info.is_moving = entity->GetVelocity().Length2D() > 0.1 && entity->GetFlags() & FL_ONGROUND;
  1391. info.is_jumping = !entity->GetFlags() & FL_ONGROUND;
  1392. info.could_be_slowmo = entity->GetVelocity().Length2D() > 6 && entity->GetVelocity().Length2D() < 36 && !info.is_crouching;
  1393. info.is_crouching = entity->GetFlags() & FL_DUCKING;
  1394. update_time[entity->GetIndex()] = info.next_lby_update_time;
  1395.  
  1396. static float old_simtime[65];
  1397. if (entity->GetSimTime() != old_simtime[entity->GetIndex()])
  1398. {
  1399. using_fake_angles[entity->GetIndex()] = entity->GetSimTime() - old_simtime[entity->GetIndex()] == ctx::globals->interval_per_tick; entity->GetSimTime() - old_simtime[entity->GetIndex()] >= TICKS_TO_TIME(2);
  1400. old_simtime[entity->GetIndex()] = entity->GetSimTime();
  1401. }
  1402. auto pick_best = [](float primary, float secondary, float defined, bool accurate) -> float
  1403. {
  1404. if (accurate)
  1405. {
  1406. if (MATH::YawDistance(primary, defined) <= 50)
  1407. return primary;
  1408. else if (MATH::YawDistance(secondary, defined) <= 50)
  1409. return secondary;
  1410. else
  1411. return defined;
  1412. }
  1413. else
  1414. {
  1415. if (MATH::YawDistance(primary, defined) <= 80)
  1416. return primary;
  1417. else if (MATH::YawDistance(secondary, defined) <= 80)
  1418. return secondary;
  1419. else
  1420. return defined;
  1421. }
  1422. };
  1423. //--- Actual Angle Resolving ---//
  1424. if (!using_fake_angles[entity->GetIndex()])
  1425. {
  1426. if (backtrack_tick[entity->GetIndex()])
  1427. {
  1428. resolve_type[entity->GetIndex()] = 7;
  1429. }
  1430.  
  1431. else if (info.stored_lby != entity->GetLowerBodyYaw())
  1432. {
  1433. entity->GetSimTime() > info.next_lby_update_time;
  1434. entity->SetEyeAngles(info.lby);
  1435.  
  1436. info.stored_lby = entity->GetLowerBodyYaw();
  1437. resolve_type[entity->GetIndex()] = 3;
  1438. }
  1439. else if (info.is_jumping)
  1440. {
  1441. resolve_type[entity->GetIndex()] = 2;
  1442. nospread_resolve(entity, entity->GetIndex());
  1443. }
  1444. else if (info.is_moving) //while moving
  1445. {
  1446. entity->SetEyeAngles(info.lby);
  1447. info.last_moving_lby = entity->GetLowerBodyYaw();
  1448. info.stored_missed = shots_missed[entity->GetIndex()];
  1449. resolve_type[entity->GetIndex()] = 1;
  1450. }
  1451. else if (can_backtrack(entity))
  1452. {
  1453.  
  1454. tick_to_back[entity->GetIndex()] = last_backtrackable_tick[entity->GetIndex()]._simulation_time;
  1455. resolve_type[entity->GetIndex()] = 6;
  1456. }
  1457. else if (breaking_lby(entity))
  1458. {
  1459.  
  1460. resolve_type[entity->GetIndex()] = 8;
  1461. }
  1462. else
  1463. {
  1464. if (shots_missed[entity->GetIndex()] > 2) //if we have missed 1 shot since we have stopped moving
  1465. {
  1466. resolve_type[entity->GetIndex()] = 4;
  1467. switch (shots_missed[entity->GetIndex()] % 4)
  1468. {
  1469. case 1: entity->SetEyeAngles(info.inverse); break;
  1470. case 2: entity->SetEyeAngles(info.left); break;
  1471. case 3: entity->SetEyeAngles(info.right); break;
  1472.  
  1473.  
  1474. }
  1475.  
  1476. }
  1477. else
  1478. {
  1479. entity->SetEyeAngles(info.last_lby);
  1480. resolve_type[entity->GetIndex()] = 5;
  1481. }
  1482.  
  1483. }
  1484. }
  1485. }
  1486.  
  1487. CResolver* resolver = new CResolver();*/
  1488.  
  1489. Vector old_calcangle(Vector dst, Vector src) {
  1490. Vector angles;
  1491.  
  1492. double delta[3] = { (src.x - dst.x), (src.y - dst.y), (src.z - dst.z) };
  1493. double hyp = sqrt(delta[0] * delta[0] + delta[1] * delta[1]);
  1494. angles.x = (float)(atan(delta[2] / hyp) * 180.0 / 3.14159265);
  1495. angles.y = (float)(atanf(delta[1] / delta[0]) * 57.295779513082f);
  1496. angles.z = 0.0f;
  1497.  
  1498. if (delta[0] >= 0.0)
  1499. {
  1500. angles.y += 180.0f;
  1501. }
  1502.  
  1503. return angles;
  1504. }
  1505.  
  1506. float old_normalize(float Yaw) {
  1507. if (Yaw > 180) {
  1508. Yaw -= (round(Yaw / 360) * 360.f);
  1509. }
  1510. else if (Yaw < -180) {
  1511. Yaw += (round(Yaw / 360) * -360.f);
  1512. }
  1513. return Yaw;
  1514. }
  1515.  
  1516. float curtime(sdk::CUserCmd* ucmd) {
  1517. auto local_player = ctx::client_ent_list->GetClientEntity(ctx::engine->GetLocalPlayer());
  1518.  
  1519. if (!local_player)
  1520. return 0;
  1521.  
  1522. int g_tick = 0;
  1523. sdk::CUserCmd* g_pLastCmd = nullptr;
  1524. if (!g_pLastCmd || g_pLastCmd->hasbeenpredicted) {
  1525. g_tick = (float)local_player->GetTickBase();
  1526. }
  1527. else {
  1528. ++g_tick;
  1529. }
  1530. g_pLastCmd = ucmd;
  1531. float curtime = g_tick * ctx::globals->interval_per_tick;
  1532. return curtime;
  1533. }
  1534.  
  1535. bool find_layer(sdk::CBaseEntity* entity, int act, sdk::CAnimationLayer *set) {
  1536. for (int i = 0; i < 13; i++) {
  1537. sdk::CAnimationLayer layer = entity->GetAnimOverlay(i);
  1538. const int activity = entity->GetSequenceActivity(layer.m_nSequence);
  1539. if (activity == act) {
  1540. *set = layer;
  1541. return true;
  1542. }
  1543. }
  1544. return false;
  1545. }
  1546.  
  1547. void CResolver::record(sdk::CBaseEntity* entity, float new_yaw) {
  1548. if (entity->GetVelocity().Length2D() > 36)
  1549. return;
  1550.  
  1551. auto c_baseweapon = reinterpret_cast< sdk::CBaseWeapon* >(ctx::client_ent_list->GetClientEntity(entity->GetActiveWeaponIndex()));
  1552.  
  1553. if (!c_baseweapon)
  1554. return;
  1555.  
  1556. auto &info = player_info[entity->GetIndex()];
  1557.  
  1558. if (entity->GetActiveWeaponIndex() && info.last_ammo < c_baseweapon->GetLoadedAmmo()) {
  1559. //ignore the yaw when it is from shooting (will be looking at you/other player)
  1560. info.last_ammo = c_baseweapon->GetLoadedAmmo();
  1561. return;
  1562. }
  1563.  
  1564. info.unresolved_yaw.insert(info.unresolved_yaw.begin(), new_yaw);
  1565. if (info.unresolved_yaw.size() > 20) {
  1566. info.unresolved_yaw.pop_back();
  1567. }
  1568.  
  1569. if (info.unresolved_yaw.size() < 2)
  1570. return;
  1571.  
  1572. auto average_unresolved_yaw = 0;
  1573. for (auto val : info.unresolved_yaw)
  1574. average_unresolved_yaw += val;
  1575. average_unresolved_yaw /= info.unresolved_yaw.size();
  1576.  
  1577. int delta = average_unresolved_yaw - entity->GetLowerBodyYaw();
  1578. auto big_math_delta = abs((((delta + 180) % 360 + 360) % 360 - 180));
  1579.  
  1580. info.lby_deltas.insert(info.lby_deltas.begin(), big_math_delta);
  1581. if (info.lby_deltas.size() > 10) {
  1582. info.lby_deltas.pop_back();
  1583. }
  1584. }
  1585.  
  1586. bool CResolver::breaking_lby(sdk::CBaseEntity* entity)
  1587. {
  1588. bool set = true;
  1589. sdk::CAnimationLayer previous;
  1590.  
  1591. for (int i = 0; i < 13; i++)
  1592. {
  1593. sdk::CAnimationLayer layer = entity->GetAnimOverlay(i);
  1594. if (set) {
  1595. set = false;
  1596. previous = layer;
  1597. }
  1598.  
  1599. if ((previous.m_flCycle != layer.m_flCycle) || layer.m_flWeight == 1.f)
  1600. {
  1601. const int activity = entity->GetSequenceActivity(layer.m_nSequence);
  1602. int _previous = entity->GetSequenceActivity(previous.m_nSequence);
  1603. if (activity == 979 && _previous == 979) return true;
  1604. }
  1605.  
  1606. previous = layer;
  1607. }
  1608. return false;
  1609. }
  1610.  
  1611.  
  1612. void CResolver::Nospread(sdk::CBaseEntity * player, int entID)
  1613. {
  1614. auto local_player = ctx::client_ent_list->GetClientEntity(ctx::engine->GetLocalPlayer());
  1615.  
  1616. if (!local_player)
  1617. return;
  1618.  
  1619. Vector local_position = local_player->GetVecOrigin() + local_player->GetViewOffset();
  1620.  
  1621. float atTargetAngle = UTILS::CalcAngle(local_player->GetHealth() <= 0 ? local_player->GetVecOrigin() : local_position, player->GetVecOrigin()).y;
  1622. Vector velocityAngle;
  1623. MATH::VectorAngles(player->GetVelocity(), velocityAngle);
  1624.  
  1625. float primaryBaseAngle = player->GetLowerBodyYaw();
  1626. float secondaryBaseAngle = velocityAngle.y;
  1627.  
  1628. switch ((shots_missed[entID]) % 15)
  1629. {
  1630. case 0:
  1631. player->EasyEyeAngles()->yaw = atTargetAngle + 180.f;
  1632. break;
  1633. case 1:
  1634. player->EasyEyeAngles()->yaw = velocityAngle.y + 180.f;
  1635. break;
  1636. case 2:
  1637. player->EasyEyeAngles()->yaw = primaryBaseAngle;
  1638. break;
  1639. case 3:
  1640. player->EasyEyeAngles()->yaw = primaryBaseAngle - 45.f;
  1641. break;
  1642. case 4:
  1643. player->EasyEyeAngles()->yaw = primaryBaseAngle + 90.f;
  1644. break;
  1645. case 5:
  1646. player->EasyEyeAngles()->yaw = primaryBaseAngle - 130.f;
  1647. break;
  1648. case 6:
  1649. player->EasyEyeAngles()->yaw = primaryBaseAngle - 180.f;
  1650. break;
  1651. case 7:
  1652. player->EasyEyeAngles()->yaw = secondaryBaseAngle;
  1653. break;
  1654. case 8:
  1655. player->EasyEyeAngles()->yaw = secondaryBaseAngle - 40.f;
  1656. break;
  1657. case 9:
  1658. player->EasyEyeAngles()->yaw = secondaryBaseAngle - 90.f;
  1659. break;
  1660. case 10:
  1661. player->EasyEyeAngles()->yaw = secondaryBaseAngle - 130.f;
  1662. break;
  1663. case 11:
  1664. player->EasyEyeAngles()->yaw = secondaryBaseAngle - 70.f;
  1665. break;
  1666. case 12:
  1667. player->EasyEyeAngles()->yaw = primaryBaseAngle + 45.f;
  1668. break;
  1669. case 13:
  1670. player->EasyEyeAngles()->yaw = primaryBaseAngle + 135.f;
  1671. break;
  1672. case 14:
  1673. player->EasyEyeAngles()->yaw = primaryBaseAngle - 90.f;
  1674. break;
  1675. case 15:
  1676. player->EasyEyeAngles()->yaw = primaryBaseAngle / 1.1;
  1677. break;
  1678. case 16:
  1679. player->EasyEyeAngles()->yaw = primaryBaseAngle * 1.1;
  1680. break;
  1681. case 17:
  1682. player->EasyEyeAngles()->yaw = secondaryBaseAngle / 1.13;
  1683. break;
  1684. case 18:
  1685. player->EasyEyeAngles()->yaw = secondaryBaseAngle * 1.13;
  1686. break;
  1687. case 19:
  1688. player->EasyEyeAngles()->yaw = atTargetAngle / 1.12;
  1689. break;
  1690. case 20:
  1691. player->EasyEyeAngles()->yaw = atTargetAngle * 1.12;
  1692. break;
  1693. case 21:
  1694. player->EasyEyeAngles()->yaw = atTargetAngle / 1.5;
  1695. break;
  1696. case 22:
  1697. player->EasyEyeAngles()->yaw = atTargetAngle * 1.5;
  1698. break;
  1699. case 23:
  1700. player->EasyEyeAngles()->roll = atTargetAngle * 1.12;
  1701. break;
  1702. }
  1703. }
  1704.  
  1705.  
  1706. void CResolver::Experimental(sdk::CBaseEntity* entity) {
  1707.  
  1708. auto local_player = ctx::client_ent_list->GetClientEntity(ctx::engine->GetLocalPlayer());
  1709.  
  1710. if (!entity)
  1711. return;
  1712.  
  1713. if (!local_player)
  1714. return;
  1715.  
  1716. bool is_local_player = entity == local_player;
  1717. bool is_teammate = local_player->GetTeam() == entity->GetTeam() && !is_local_player;
  1718.  
  1719. if (is_local_player)
  1720. return;
  1721.  
  1722. if (is_teammate)
  1723. return;
  1724.  
  1725. if (entity->GetHealth() <= 0)
  1726. return;
  1727.  
  1728. if (local_player->GetHealth() <= 0)
  1729. return;
  1730.  
  1731. //--- Variable Declaration ---//;
  1732. auto &info = player_info[entity->GetIndex()];
  1733.  
  1734. //--- Variable Defenitions/Checks ---//
  1735. float fl_lby = entity->GetLowerBodyYaw();
  1736.  
  1737. info.lby = Vector(entity->GetEyeAngles().x, entity->GetLowerBodyYaw(), 0.f);
  1738. info.inverse = Vector(entity->GetEyeAngles().x, entity->GetLowerBodyYaw() + 180.f, 0.f);
  1739. info.last_lby = Vector(entity->GetEyeAngles().x, info.last_moving_lby, 0.f);
  1740. info.inverse_left = Vector(entity->GetEyeAngles().x, entity->GetLowerBodyYaw() + 115.f, 0.f);
  1741. info.inverse_right = Vector(entity->GetEyeAngles().x, entity->GetLowerBodyYaw() - 115.f, 0.f);
  1742.  
  1743. info.back = Vector(entity->GetEyeAngles().x, UTILS::CalcAngle(entity->GetVecOrigin(), local_player->GetVecOrigin()).y + 180.f, 0.f);
  1744. info.right = Vector(entity->GetEyeAngles().x, UTILS::CalcAngle(entity->GetVecOrigin(), local_player->GetVecOrigin()).y + 70.f, 0.f);
  1745. info.left = Vector(entity->GetEyeAngles().x, UTILS::CalcAngle(entity->GetVecOrigin(), local_player->GetVecOrigin()).y - 70.f, 0.f);
  1746.  
  1747. info.backtrack = Vector(entity->GetEyeAngles().x, lby_to_back[entity->GetIndex()], 0.f);
  1748.  
  1749. shots_missed[entity->GetIndex()] = shots_fired[entity->GetIndex()] - shots_hit[entity->GetIndex()];
  1750.  
  1751. info.is_moving = entity->GetVelocity().Length2D() > 0.1 && entity->GetFlags() & FL_ONGROUND;
  1752. info.is_jumping = !entity->GetFlags() & FL_ONGROUND;
  1753. info.could_be_slowmo = entity->GetVelocity().Length2D() > 6 && entity->GetVelocity().Length2D() < 36 && !info.is_crouching;
  1754. info.is_crouching = entity->GetFlags() & FL_DUCKING;
  1755. update_time[entity->GetIndex()] = info.next_lby_update_time;
  1756.  
  1757. static float old_simtime[65];
  1758. if (entity->GetSimTime() != old_simtime[entity->GetIndex()])
  1759. {
  1760. using_fake_angles[entity->GetIndex()] = entity->GetSimTime() - old_simtime[entity->GetIndex()] == ctx::globals->interval_per_tick; //entity->GetSimTime() - old_simtime[entity->GetIndex()] >= TICKS_TO_TIME(2)
  1761. old_simtime[entity->GetIndex()] = entity->GetSimTime();
  1762. }
  1763.  
  1764. auto pick_best = [](float primary, float secondary, float defined, bool accurate) -> float
  1765. {
  1766. if (accurate)
  1767. {
  1768. if (MATH::YawDistance(primary, defined) <= 50)
  1769. return primary;
  1770. else if (MATH::YawDistance(secondary, defined) <= 50)
  1771. return secondary;
  1772. else
  1773. return defined;
  1774. }
  1775. else
  1776. {
  1777. if (MATH::YawDistance(primary, defined) <= 80)
  1778. return primary;
  1779. else if (MATH::YawDistance(secondary, defined) <= 80)
  1780. return secondary;
  1781. else
  1782. return defined;
  1783. }
  1784. };
  1785.  
  1786. //--- Actual Angle Resolving ---//
  1787. if (!using_fake_angles[entity->GetIndex()])
  1788. {
  1789. if (backtrack_tick[entity->GetIndex()])
  1790. {
  1791. resolve_type[entity->GetIndex()] = 7;
  1792. //entity->SetEyeAngles(info.backtrack);
  1793. }
  1794. else if (info.stored_lby != entity->GetLowerBodyYaw() || entity->GetSimTime() > info.next_lby_update_time) //lby prediction
  1795. {
  1796. entity->SetEyeAngles(info.lby);
  1797. info.next_lby_update_time = entity->GetSimTime() + 1.1;
  1798. info.stored_lby = entity->GetLowerBodyYaw();
  1799. resolve_type[entity->GetIndex()] = 3;
  1800. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.1 + 120 * 2 / 1.23 + 22;
  1801. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.2 * 1.1;
  1802. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.4 * 1.1;
  1803. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().z * 1.01;
  1804. entity->EasyEyeAngles()->roll = entity->GetEyeAngles().z * 1.01;
  1805. }
  1806. else if (info.is_jumping)
  1807. {
  1808. Nospread(entity, entity->GetIndex());
  1809. }
  1810. else if (info.is_moving) //while moving
  1811. {
  1812. entity->SetEyeAngles(info.lby);
  1813. info.last_moving_lby = entity->GetLowerBodyYaw();
  1814. info.stored_missed = shots_missed[entity->GetIndex()];
  1815. resolve_type[entity->GetIndex()] = 1;
  1816. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.1 + 4;
  1817. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.34 * 0.53 + 27 / 1.32 * 1.63;
  1818. entity->SetEyeAngles(info.last_lby);
  1819. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().x;
  1820. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().z * 1.01;
  1821. entity->EasyEyeAngles()->roll = entity->GetEyeAngles().z * 1.01;
  1822. entity->EasyEyeAngles()->roll = entity->GetEyeAngles().z * 1.03;
  1823. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().y * 2;
  1824. }
  1825. else
  1826. {
  1827. if (shots_missed[entity->GetIndex()] > info.stored_missed) //if we have missed 1 shot since we have stopped moving
  1828. {
  1829. resolve_type[entity->GetIndex()] = 4;
  1830. switch (shots_missed[entity->GetIndex()] % 4)
  1831. {
  1832. case 0: entity->SetEyeAngles(info.inverse); break;
  1833. case 1: entity->SetEyeAngles(info.left); break;
  1834. case 2: entity->SetEyeAngles(info.back); break;
  1835. case 3: entity->SetEyeAngles(info.right); break;
  1836. case 4: entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.2 * 0.3; break;
  1837. case 5: entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.4 + 5 * 0.32 / 0.54; break;
  1838. case 6: entity->SetEyeAngles(info.last_lby); break;
  1839. case 7: entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() + 40 * 0.2 / 0.13 + 4; break;
  1840. case 8: entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 2 * 1.3 - 40; break;
  1841. case 9: entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().z * 1.01; break;
  1842. case 10: entity->EasyEyeAngles()->pitch = entity->GetEyeAngles().x; break;
  1843. case 11: entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().z * 1.02; break;
  1844. case 12: entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().y * 2; break;
  1845. }
  1846. }
  1847. else //first thing we shoot when they stop
  1848. {
  1849. entity->SetEyeAngles(info.last_lby);
  1850. resolve_type[entity->GetIndex()] = 5;
  1851. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.1 + 4 * 0.2 + 16 * 0.3;
  1852. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() + 4 / 1.1 * 0.9 + 20 / 1.6;
  1853. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.1 + 4;
  1854. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().x;
  1855. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().z * 1.01;
  1856. entity->EasyEyeAngles()->roll = entity->GetEyeAngles().z * 1.01;
  1857. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().y * 2;
  1858. }
  1859. }
  1860. if (resolve_type[entity->GetIndex()] = 5)
  1861. {
  1862. entity->SetEyeAngles(info.last_lby);
  1863. resolve_type[entity->GetIndex()] = 5;
  1864. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.2 * 0.2 / 1.1 + 42 * 1.2 + 62 / 1.2 * 1.3;
  1865. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() * 1.1 + 3 / 1.54;
  1866. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().z * 1.01;
  1867. entity->EasyEyeAngles()->pitch = entity->GetEyeAngles().x;
  1868. entity->EasyEyeAngles()->roll = entity->GetEyeAngles().z * 1.01;
  1869. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().y * 2;
  1870. }
  1871. else
  1872. {
  1873. entity->SetEyeAngles(info.last_lby);
  1874. resolve_type[entity->GetIndex()] = 5;
  1875. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.4 * 0.5 / 2 * 1.2 + 120 * 2.5 + 3 / 1.2 * 1.1 + 42 / 2 * 1.34;
  1876. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() + 2;
  1877. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() - 2;
  1878. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().z * 1.01;
  1879. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().y * 2;
  1880. }
  1881. if (info.breaking_lby)
  1882. {
  1883. entity->SetEyeAngles(info.last_lby);
  1884. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() + 120 * 2 + 30 / 1.1 * 1.5;
  1885. resolve_type[entity->GetIndex()] = 5;
  1886. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.3;
  1887. entity->EasyEyeAngles()->roll = entity->GetEyeAngles().z * 1.03;
  1888. entity->EasyEyeAngles()->roll = entity->GetLowerBodyYaw() / 1.3 + 30 * 1.2;
  1889. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().y * 2;
  1890. }
  1891. else
  1892. {
  1893. if (entity->GetSimTime() + 1.1)
  1894. {
  1895. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.4 + 32 * 1.2;
  1896. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().y * 2;
  1897. entity->SetEyeAngles(info.last_lby);
  1898. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.2 * 0.1;
  1899. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().z * 1.01;
  1900. entity->EasyEyeAngles()->roll = entity->GetEyeAngles().z * 1.01;
  1901. resolve_type[entity->GetIndex()] = 5;
  1902. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw();
  1903. }
  1904. else
  1905. {
  1906. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.4 * 0.2;
  1907. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.6 * 0.3;
  1908. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.8 * 0.4;
  1909. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().z * 1.01;
  1910. entity->EasyEyeAngles()->roll = entity->GetEyeAngles().z * 1.01;
  1911. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().y * 2;
  1912. entity->SetEyeAngles(info.last_lby);
  1913. resolve_type[entity->GetIndex()] = 5;
  1914. for (int w = 0; w < 13; w++)
  1915. {
  1916. entity->GetAnimOverlay(w);
  1917. resolve_type[entity->GetIndex()] = 5;
  1918. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 2 * 1.5 + 40;
  1919. entity->SetEyeAngles(info.last_lby);
  1920. entity->EasyEyeAngles()->roll = entity->GetEyeAngles().z * 1.01;
  1921. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() * 1.32;
  1922. }
  1923. if (GLOBAL::bFakewalking = true)
  1924. {
  1925. for (int w = 0; w < 13; w++) {
  1926. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.32 + 4;
  1927. entity->EasyEyeAngles()->roll = entity->GetEyeAngles().z * 1.03;
  1928. entity->GetAnimOverlay(w);
  1929. }
  1930. }
  1931. else
  1932. {
  1933. entity->EasyEyeAngles()->roll = entity->GetLowerBodyYaw() * 1.3 + 24 / 1.2;
  1934. }
  1935. }
  1936. }
  1937. }
  1938. }
  1939.  
  1940. bool IsFakeWalking(sdk::CBaseEntity* entity) {
  1941. for (int s = 0; s < 13; s++) {
  1942. auto anim_layer = entity->GetAnimOverlay(s);
  1943. if (!anim_layer.m_pOwner)
  1944. continue;
  1945.  
  1946. auto activity = entity->GetSequenceActivity(anim_layer.m_nSequence);
  1947. GLOBAL::bFakewalking = false;
  1948. bool stage1 = false, // stages needed cause we are iterating all layers, otherwise won't work :)
  1949. stage2 = false,
  1950. stage3 = false;
  1951.  
  1952. for (int i = 0; i < 16; i++) {
  1953. if (activity == 26 && anim_layer.m_flWeight < 0.4f)
  1954. stage1 = true;
  1955. if (activity == 7 && anim_layer.m_flWeight > 0.001f)
  1956. stage2 = true;
  1957. if (activity == 2 && anim_layer.m_flWeight == 0)
  1958. stage3 = true;
  1959. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.17;
  1960. entity->EasyEyeAngles()->roll = entity->GetEyeAngles().z * 1.03;
  1961. }
  1962.  
  1963. if (stage1 && stage2)
  1964. GLOBAL::bFakewalking = true;
  1965. else
  1966. GLOBAL::bFakewalking = false;
  1967.  
  1968. return GLOBAL::bFakewalking;
  1969. }
  1970. }
  1971.  
  1972. #define TICK_INTERVAL (ctx::globals->interval_per_tick)
  1973. int latest_tick;
  1974. #define TIME_TO_TICKS( dt ) ( (int)( 0.5f + (float)(dt) / TICK_INTERVAL ) )
  1975.  
  1976. bool IsTickValid(int tick) {
  1977. int delta = latest_tick - tick;
  1978. float deltaTime = delta * ctx::globals->interval_per_tick;
  1979. return (fabs(deltaTime) <= 0.1f);
  1980. }
  1981.  
  1982. void CResolver::Default(sdk::CBaseEntity* entity) {
  1983.  
  1984. auto local_player = ctx::client_ent_list->GetClientEntity(ctx::engine->GetLocalPlayer());
  1985.  
  1986. if (!entity)
  1987. return;
  1988.  
  1989. if (!local_player)
  1990. return;
  1991.  
  1992. bool is_local_player = entity == local_player;
  1993. bool is_teammate = local_player->GetTeam() == entity->GetTeam() && !is_local_player;
  1994.  
  1995. if (is_local_player)
  1996. return;
  1997.  
  1998. if (is_teammate)
  1999. return;
  2000.  
  2001. if (entity->GetHealth() <= 0)
  2002. return;
  2003.  
  2004. if (local_player->GetHealth() <= 0)
  2005. return;
  2006.  
  2007. //--- Variable Declaration ---//;
  2008. auto &info = player_info[entity->GetIndex()];
  2009.  
  2010. //--- Variable Defenitions/Checks ---//
  2011. float fl_lby = entity->GetLowerBodyYaw();
  2012.  
  2013. info.lby = Vector(entity->GetEyeAngles().x, entity->GetLowerBodyYaw(), 0.f);
  2014. info.inverse = Vector(entity->GetEyeAngles().x, entity->GetLowerBodyYaw() + 180.f, 0.f);
  2015. info.last_lby = Vector(entity->GetEyeAngles().x, info.last_moving_lby, 0.f);
  2016. info.inverse_left = Vector(entity->GetEyeAngles().x, entity->GetLowerBodyYaw() + 115.f, 0.f);
  2017. info.inverse_right = Vector(entity->GetEyeAngles().x, entity->GetLowerBodyYaw() - 115.f, 0.f);
  2018.  
  2019. info.back = Vector(entity->GetEyeAngles().x, UTILS::CalcAngle(entity->GetVecOrigin(), local_player->GetVecOrigin()).y + 180.f, 0.f);
  2020. info.right = Vector(entity->GetEyeAngles().x, UTILS::CalcAngle(entity->GetVecOrigin(), local_player->GetVecOrigin()).y + 70.f, 0.f);
  2021. info.left = Vector(entity->GetEyeAngles().x, UTILS::CalcAngle(entity->GetVecOrigin(), local_player->GetVecOrigin()).y - 70.f, 0.f);
  2022.  
  2023. info.backtrack = Vector(entity->GetEyeAngles().x, lby_to_back[entity->GetIndex()], 0.f);
  2024.  
  2025. shots_missed[entity->GetIndex()] = shots_fired[entity->GetIndex()] - shots_hit[entity->GetIndex()];
  2026.  
  2027. info.is_moving = entity->GetVelocity().Length2D() > 0.1 && entity->GetFlags() & FL_ONGROUND;
  2028. info.is_jumping = !entity->GetFlags() & FL_ONGROUND;
  2029. info.could_be_slowmo = entity->GetVelocity().Length2D() > 6 && entity->GetVelocity().Length2D() < 36 && !info.is_crouching;
  2030. info.is_crouching = entity->GetFlags() & FL_DUCKING;
  2031. update_time[entity->GetIndex()] = info.next_lby_update_time;
  2032.  
  2033. static float old_simtime[65];
  2034. if (entity->GetSimTime() != old_simtime[entity->GetIndex()])
  2035. {
  2036. using_fake_angles[entity->GetIndex()] = entity->GetSimTime() - old_simtime[entity->GetIndex()] == ctx::globals->interval_per_tick; //entity->GetSimTime() - old_simtime[entity->GetIndex()] >= TICKS_TO_TIME(2)
  2037. old_simtime[entity->GetIndex()] = entity->GetSimTime();
  2038. }
  2039.  
  2040. auto pick_best = [](float primary, float secondary, float defined, bool accurate) -> float
  2041. {
  2042. if (accurate)
  2043. {
  2044. if (MATH::YawDistance(primary, defined) <= 50)
  2045. return primary;
  2046. else if (MATH::YawDistance(secondary, defined) <= 50)
  2047. return secondary;
  2048. else
  2049. return defined;
  2050. }
  2051. else
  2052. {
  2053. if (MATH::YawDistance(primary, defined) <= 80)
  2054. return primary;
  2055. else if (MATH::YawDistance(secondary, defined) <= 80)
  2056. return secondary;
  2057. else
  2058. return defined;
  2059. }
  2060. };
  2061.  
  2062. //--- Actual Angle Resolving ---//
  2063. if (!using_fake_angles[entity->GetIndex()])
  2064. {
  2065. if (backtrack_tick[entity->GetIndex()])
  2066. {
  2067. resolve_type[entity->GetIndex()] = 7;
  2068. //entity->SetEyeAngles(info.backtrack);
  2069. }
  2070. else if (info.stored_lby != entity->GetLowerBodyYaw())// || entity->GetSimTime() > info.next_lby_update_time) //lby prediction
  2071. {
  2072. entity->SetEyeAngles(info.lby);
  2073. //info.next_lby_update_time = entity->GetSimTime() + 1.1;
  2074. info.stored_lby = entity->GetLowerBodyYaw();
  2075. resolve_type[entity->GetIndex()] = 3;
  2076. }
  2077. else if (info.is_jumping)
  2078. {
  2079. Nospread(entity, entity->GetIndex());
  2080. }
  2081. else if (info.is_moving) //while moving
  2082. {
  2083. entity->SetEyeAngles(info.lby);
  2084. info.last_moving_lby = entity->GetLowerBodyYaw();
  2085. info.stored_missed = shots_missed[entity->GetIndex()];
  2086. resolve_type[entity->GetIndex()] = 1;
  2087. entity->EasyEyeAngles()->yaw = entity->GetEyeAngles().y / 1.07;
  2088. }
  2089. else
  2090. {
  2091. if (shots_missed[entity->GetIndex()] > info.stored_missed) //if we have missed 1 shot since we have stopped moving
  2092. {
  2093. resolve_type[entity->GetIndex()] = 4;
  2094. switch (shots_missed[entity->GetIndex()] % 4)
  2095. {
  2096. case 0: entity->SetEyeAngles(info.inverse); break;
  2097. case 1: entity->SetEyeAngles(info.left); break;
  2098. case 2: entity->SetEyeAngles(info.back); break;
  2099. case 3: entity->SetEyeAngles(info.right); break;
  2100. }
  2101. }
  2102. else //first thing we shoot when they stop
  2103. {
  2104. entity->SetEyeAngles(info.last_lby);
  2105. resolve_type[entity->GetIndex()] = 5;
  2106. }
  2107. if (resolve_type[entity->GetIndex()] = 5)
  2108. {
  2109. entity->SetEyeAngles(info.last_lby);
  2110. resolve_type[entity->GetIndex()] = 5;
  2111. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.2;
  2112. }
  2113. else
  2114. {
  2115. entity->SetEyeAngles(info.last_lby);
  2116. resolve_type[entity->GetIndex()] = 5;
  2117. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.4 * 0.5 + 2;
  2118. }
  2119. }
  2120. if (GLOBAL::bFakewalking = true)
  2121. {
  2122. for (int w = 0; w < 13; w++)
  2123. {
  2124. entity->EasyEyeAngles()->yaw = entity->GetLowerBodyYaw() / 1.32 + 4;
  2125. entity->EasyEyeAngles()->roll = entity->GetEyeAngles().z * 1.03;
  2126. entity->GetAnimOverlay(w);
  2127. }
  2128. }
  2129. }
  2130. }
  2131.  
  2132. void CResolver::resolve(sdk::CBaseEntity* entity)
  2133. {
  2134.  
  2135. auto local_player = ctx::client_ent_list->GetClientEntity(ctx::engine->GetLocalPlayer());
  2136.  
  2137. if (!entity)
  2138. return;
  2139.  
  2140. if (!local_player)
  2141. return;
  2142.  
  2143. bool is_local_player = entity == local_player;
  2144. bool is_teammate = local_player->GetTeam() == entity->GetTeam() && !is_local_player;
  2145.  
  2146. if (is_local_player)
  2147. return;
  2148.  
  2149. if (is_teammate)
  2150. return;
  2151.  
  2152. if (entity->GetHealth() <= 0)
  2153. return;
  2154.  
  2155. if (local_player->GetHealth() <= 0)
  2156. return;
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162. //--- Actual Angle Resolving ---//
  2163. switch (Vars::options.res_type) {
  2164. case 0:
  2165. CResolver::Default(entity);
  2166. break;
  2167. case 1:
  2168. CResolver::Experimental(entity);
  2169. break;
  2170. }
  2171. }
  2172.  
  2173. CResolver* resolver = new CResolver();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement