Advertisement
Guest User

Untitled

a guest
Apr 25th, 2016
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.83 KB | None | 0 0
  1. static void CalculateAngles(Vector& vecOrigin, Vector& vecOther, Vector &vecAngles)
  2. {
  3. Vector delta = { (vecOrigin.x - vecOther.x), (vecOrigin.y - vecOther.y), (vecOrigin.z - vecOther.z) };
  4. float hyp = sqrtf(delta.x * delta.x + delta.y * delta.y);
  5.  
  6. vecAngles.x = (float)(atan(delta.z / hyp) * (float)(180.f / M_PI));
  7. vecAngles.y = (float)(atan(delta.y / delta.x) * (float)(180.f / M_PI));
  8. vecAngles.z = (float)0.0f;
  9.  
  10. if (delta.x >= 0.0)
  11. vecAngles.y += 180.0f;
  12. }
  13.  
  14. static Vector BonePos(DWORD EntityBase, int iTargetBone)
  15. {
  16. DWORD BoneBase = mem.ReadMemory<DWORD>(EntityBase + BoneMatrixOffset);
  17. Vector vBone;
  18. vBone.x = mem.ReadMemory<float>(BoneBase + 0x30 * iTargetBone + 0x0C);
  19. vBone.y = mem.ReadMemory<float>(BoneBase + 0x30 * iTargetBone + 0x1C);
  20. vBone.z = mem.ReadMemory<float>(BoneBase + 0x30 * iTargetBone + 0x2C);
  21. return vBone;
  22. }
  23.  
  24. static void MakeVector(Vector& vecAngle, Vector& out)
  25. {
  26. float pitch = float(vecAngle.x * M_PI / 180);
  27. float tmp = float(cos(pitch));
  28. float yaw = float(vecAngle.y * M_PI / 180);
  29.  
  30. out.x = (float)(-tmp * -cos(yaw));
  31. out.y = (float)(sin(yaw)*tmp);
  32. out.z = (float)(-sin(pitch));
  33. }
  34.  
  35.  
  36. static float GetFov(Vector& vecAngle, Vector& vecOrigin, Vector& vecOther)
  37. {
  38. Vector ang, aim;
  39. double fov;
  40. CalculateAngles(vecOrigin, vecOther, ang);
  41. MakeVector(vecAngle, aim);
  42. MakeVector(ang, ang);
  43.  
  44. float mag_s = sqrt((aim.x * aim.x) + (aim.y * aim.y) + (aim.z * aim.z));
  45. float mag_d = sqrt((aim.x * aim.x) + (aim.y * aim.y) + (aim.z * aim.z));
  46.  
  47. float u_dot_v = aim.x * ang.x + aim.y * ang.y + aim.z * ang.z;
  48. fov = acos(u_dot_v / (mag_s*mag_d)) * (180.0f / M_PI);
  49.  
  50. return (float)fov;
  51. }
  52.  
  53. static int ClosestEnemyToCrosshair(float& FOV, Vector& Position)
  54. {
  55. int index;
  56. for (int i = 0; i < 64; i++)
  57. {
  58. DWORD PlayerBase = NULL;
  59. GetInfo::GetPlayerBase(&PlayerBase);
  60.  
  61. DWORD EntityBase = mem.ReadMemory<DWORD>(dwClient + EntityList + (i * 0x10));
  62. if (EntityBase == PlayerBase)
  63. continue;
  64.  
  65. bool IsDormant = mem.ReadMemory<bool>(EntityBase + DormantOffset);
  66. if (IsDormant)
  67. continue;
  68.  
  69. int EntityTeam = mem.ReadMemory<int>(EntityBase + Team);
  70.  
  71. int LocalTeam = mem.ReadMemory<int>(PlayerBase + Team);
  72. if (EntityTeam == LocalTeam)
  73. continue;
  74.  
  75. bool EntityLifeState= mem.ReadMemory<int>(EntityBase + LifeState);
  76. if (EntityLifeState != true)
  77. continue;
  78.  
  79. DWORD EngineBase;
  80. GetInfo::GetEngineBase(&EngineBase);
  81. Vector CurrentViewAngles = mem.ReadMemory<Vector>(EngineBase + ViewAngleOffset);
  82. Vector Bone = BonePos(EntityBase, 11);
  83. float Distance = GetFov(CurrentViewAngles, Position, Bone);
  84. if (Distance < iFOV)
  85. {
  86. iFOV = Distance;
  87. index = i;
  88. }
  89. }
  90. return index;
  91. }
  92.  
  93. static DWORD WINAPI AimbotThread(LPVOID PARAMS)
  94. {
  95.  
  96. while (1)
  97. {
  98. if(GetAsyncKeyState(0x01))
  99. {
  100. Vector Position;
  101. int EntityIndex = ClosestEnemyToCrosshair(iFOV, Position);
  102. DWORD PlayerBase = NULL;
  103. GetInfo::GetPlayerBase(&PlayerBase);
  104. Vector vecOrigin = mem.ReadMemory<Vector>(PlayerBase + VecOrigin);
  105. Vector vecView = mem.ReadMemory<Vector>(PlayerBase + VecViewOffset);
  106. Position.x = vecOrigin.x + vecView.x;
  107. Position.y = vecOrigin.y + vecView.y;
  108. Position.z = vecOrigin.z + vecView.z;
  109.  
  110.  
  111. Vector vPunch = mem.ReadMemory<Vector>(PlayerBase + VectorPunch);
  112. Vector AimAngles;
  113.  
  114. DWORD EntityBase = mem.ReadMemory<DWORD>(dwClient + EntityList + (EntityIndex * 0x10));
  115. Vector Bone = BonePos(EntityBase, 11);
  116.  
  117. CalculateAngles(Position, Bone, AimAngles);
  118. AimAngles.x = AimAngles.x - vPunch.x * 2.f;
  119. AimAngles.y = AimAngles.y - vPunch.y * 2.f;
  120. AimAngles = NormalizeAngles(AimAngles);
  121. if (AimAngles.x == 0 && AimAngles.y == 0)
  122. continue;
  123. DWORD EngineBase;
  124. GetInfo::GetEngineBase(&EngineBase);
  125. mem.WriteMemory<Vector>(EngineBase + ViewAngleOffset, AimAngles);
  126. }
  127. Sleep(1);
  128. }
  129. return 0;
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement