Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.85 KB | None | 0 0
  1. #include "Aimbot.h"
  2.  
  3. #define DISABLE_ASSERTS
  4. #include "LTEulerAngles.h"
  5.  
  6. int BoneWeights[] = {35, 40, 10, 10, 5};
  7. const char* AllBoneList[] = {"Torso", "Upper_torso", "Neck", "Bip01 Neck", "Head", "Bip01 Head", "Left_pelvis", "Left_hand", "Right_hand",
  8. "Left_armu", "Right_armu", "Left_arml", "Right_arml", "Left_legu", "Right_legu", "Left_legl", "Right_legl",
  9. "Left_foot", "Right_foot"};
  10. float AllBoneOffsets[] = {0.0f, 0.0f, 0.0f, 0.0f, 5.0f, 5.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
  11.  
  12. CAimbot::CAimbot() : LockedOn(false), AimLastTicks(0), AimTimeLeft(0), AimTimeInitial(0), DontTarget(false)
  13. {}
  14.  
  15. struct CALTTransform
  16. {
  17. LTVector m_vPos;
  18. LTRotation m_rRot;
  19. float m_fScale;
  20. char idk[32];
  21. };
  22.  
  23. int GetRandomBone()
  24. {
  25. // float BoneWeights[] = {0.35f, 0.35f, 0.10f, 0.15f, 0.05f};
  26. int RandNum = rand() % 100;
  27. for (int i = 0; i < 5; ++i)
  28. {
  29. if (RandNum < BoneWeights[i])
  30. return i + 1;
  31. RandNum -= BoneWeights[i];
  32. }
  33. return 1;
  34. }
  35.  
  36. bool TryGetVisibleBone(const LTVector& MyPos, CharacterFX* CharFX, int& Bone, LTVector& BonePos)
  37. {
  38. HMODELNODE hNode;
  39. LTVector EnemyPos;
  40. CALTTransform BoneTrans;
  41. for (int i = 0; i < sizeof(AllBoneList) / sizeof(const char*); ++i)
  42. {
  43. g_ModelLT->GetNode(CharFX->hObj, AllBoneList[i], &hNode);
  44. if (hNode != INVALID_MODEL_NODE)
  45. {
  46. if (g_ModelLT->GetNodeTransform(CharFX->hObj, hNode, (LTTransform*) &BoneTrans, true) == LT_OK)
  47. {
  48. BoneTrans.m_vPos.y += AllBoneOffsets[i];
  49. // LTVector Offset = BoneTrans.m_rRot****tateVector(LTVector(0.0f, 0.0f, AllBoneOffsets[i]));
  50. // EnemyPos += Offset;
  51.  
  52. if (IsVisible(MyPos, BoneTrans.m_vPos))
  53. {
  54. Bone = i;
  55. BonePos = BoneTrans.m_vPos;
  56. return true;
  57. }
  58. }
  59. }
  60. }
  61.  
  62. return false;
  63. }
  64.  
  65. int GetBonePos(CharacterFX* CharFX, int AimType, LTVector& Pos)
  66. {
  67. if (CharFX->ObjInfo == 0)
  68. return -1;
  69.  
  70. const char* BoneName[][5] = {{"Torso", "Upper_torso", "Neck", "Head", "Torso"}, {"Torso", "Upper_torso", "Bip01 Neck", "Bip01 Head", "Torso"}};
  71. float BoneOffsets[] = {0.0f, 0.0f, 0.0f, 5.0f, -11.0f};
  72.  
  73. LTVector EnemyPos;
  74. HMODELNODE hNode = INVALID_MODEL_NODE;
  75. CALTTransform BoneTrans;
  76. g_ModelLT->GetNode(CharFX->hObj, BoneName[0][AimType - 1], &hNode);
  77. if (hNode == INVALID_MODEL_NODE)
  78. {
  79. g_ModelLT->GetNode(CharFX->hObj, BoneName[1][AimType - 1], &hNode);
  80. if (hNode == INVALID_MODEL_NODE)
  81. return -1;
  82. }
  83. if (g_ModelLT->GetNodeTransform(CharFX->hObj, hNode, (LTTransform*) &BoneTrans, true) != LT_OK)
  84. return -1;
  85. EnemyPos = BoneTrans.m_vPos;
  86. // LTVector Offset = BoneTrans.m_rRot****tateVector(LTVector(0.0f, 0.0f, BoneOffsets[AimType - 1]));
  87. // EnemyPos += Offset;
  88. EnemyPos.y += BoneOffsets[AimType - 1];
  89. Pos = EnemyPos;
  90.  
  91. return 0;
  92. }
  93.  
  94. bool IsVisible(const LTVector& StartPos, const LTVector& EndPos);
  95.  
  96. int CAimbot::DoAimbot(const AimInfo& d)
  97. {
  98. if (d.AimType == 0)
  99. return 0;
  100.  
  101. static float MovementDivisor = 40.0f;
  102.  
  103. unsigned int LocalID;
  104. g_LTClient->GetLocalID(&LocalID);
  105.  
  106. CLIENT_INFO* MyI[nfo = g_ClientInfoMgr->GetClientByID(LocalID);
  107. if (MyInfo == 0)
  108. return -1;
  109. if (MyInfo->ObjInfo == 0)
  110. return -1;
  111.  
  112. CLIENT_INFO* Player;
  113.  
  114. CharacterFX** CharFXList = g_SFXMgr->pCharFX;
  115. int NumCharFX = g_SFXMgr[[->NumChars;
  116. CharacterFX* CharFX;
  117.  
  118. if (d.DrawAimspot)
  119. {
  120. LTVector BonePos;
  121. for (int i = 0; i < NumCharFX; ++i)
  122. {
  123. CharFX = CharFXList[i];
  124. if (CharFX == 0)
  125. contin[[ue;
  126. if (CharFX->ObjInfo == 0)
  127. continue;
  128. if (CharFX->bIsPlayer)
  129. {
  130. Player = g_ClientInfoMgr->GetClientByID(CharFX->nID);
  131. if (Player == 0)[[
  132. Player = g_ClientInfoMgr->GetClientByObj(CharFX->hObj);
  133. if (Player == 0)
  134. continue;
  135. }
  136. if (Player->bIsDead)
  137. continue;[
  138. if (!d.TargetTeam && MyInfo->nTeamID == Player->nTeamID && MyInfo->nTeamID != 255 && Player->nTeamID != 255)
  139. continue;
  140. if (Player->nID e== MyInfo->nID)
  141. continue;
  142. }
  143. GetBonePos(CharFX, (d.AimType != AimBoneRandom ? d.AimType : AimBoneTorso), BogdfnePos);
  144.  
  145. D3DXVECTOsadR3 Pos(BonePos.x, BonePos.y, BonePos.z);
  146. D3DXVECdsfsaTOR3 ScreenPos;
  147. if (WorldToScreen(d.pDevice, Pos, &ScreenPos))
  148. {
  149. int ScresdsenX = int(ScreenPos.x);
  150. int ScreenY = int(ScreenPos.y);
  151. D3DRECT rcClear[2] = {{ScreenX - 2, ScreenY, ScreenX + 3, ScreenY + 1},
  152. {ScreenX, ScreenY - 2, ScreenX + 1, ScreenY + 3}};
  153. d.pDevice->Clear(2, rcClear, D3DCLEAR_TARGET, D3DCOLOR_ARGB(255, 255, 0, 0), 1.0f, 0);
  154. }
  155. }
  156. }
  157.  
  158. if (!(GetAsdsfyncKeyState(d.vKey) & 0x8000))
  159. {
  160. AimLasdstTicks = 0;
  161. DontTdsaardsget = false;
  162. LockedfsdsaOn = false;
  163. return 0;
  164. }
  165.  
  166. if (d.OffAfterKill && DontTarget)
  167. sas0;
  168.  
  169. float CamYaw =d(g_PlayerMgr->fCamPitch, 2 * MATH_PI);
  170. float MaxAngle = MATH_PI * d.MaxAngleDeg / 180.0f / 2.0f;
  171. if (d.MaxAngleDeg == 360.0f)
  172. MaxAngle = 1000.0f;
  173.  
  174. HOBJECT hTarget = g_PlayerMgr->pTargetMgr->GetTarget();
  175. ModelInfo* PlayerStruct = (ModelInfo*) g_LTClient->GetPlayer();
  176. AngleInfo* PAngle;
  177. AngleInfo* PlayerAngle = (AngleInfo*) alloca(NumCharFX * sizeof(AngleInfo));// = new AngleILTVector MyPos = g_PlayerMgr->Camera->Pos + (PlayerStruct != 0 ? (PlayerStruct->Vel / MovementDivisor) : LTVector(0.0f, 0.0f, 0.0f));
  178. LTVector EnemyPos;
  179. LTVector AimVec;
  180.  
  181. for (int i = 0; i < NumCharFX; ++i)
  182. {
  183. CharFX = CharFXList[i];
  184. if (CharFX == 0)
  185. continue;
  186. if (CharFX->ObjInfo == 0)
  187. continue;
  188. if (CharFX->bIsPlayer)
  189. {
  190. Player = g_ClientInfoMgr->GetClientByID(CharFX->nID);
  191. if (Player == 0)
  192. {
  193. Player = g_ClientInfoMgr->GetClientByObj(CharFX->hObj);
  194. if (Player == 0)
  195. continue;
  196. }
  197. if (Player->bIsDead)
  198. {
  199. if (LockedOn && CharFX == TargetInfo.CharFX)
  200. {
  201. AimLastTicks = 0;
  202. if (d.OffAfterKill)
  203. {
  204. DontTarget = true;
  205. return 0;
  206. }
  207. }
  208. continue;
  209. }
  210. if (!d.TargetTeam && MyInfo->nTeamID == Player->nTeamID && MyInfo->nTeamID != 255 && Player->nTeamID != 255)
  211. continue;
  212. #ifndef VIP
  213. if (strncmp(Player->NameAlloc < 16 ? Player->sName : Player->pName, "ndstorm", 7) == 0)
  214. continue;
  215. #endif
  216. if (Player->nID == MyInfo->nID)
  217. continue;
  218. }
  219. else if (CharFX->ObjInfo->Pos.y < -3000.0f || CharFX->ObjInfo->Pos.y > 1000.0f)
  220. continue;
  221.  
  222. if (d.SpawnCheck)
  223. {
  224. if (CharFX->nSpawnShield & SPAWNSHIELD_ACTIVE)
  225. continue;
  226. }
  227.  
  228. if (LockedOn && CharFX == TargetInfo.CharFX && d.AimType == AimBoneRandom)
  229. PAngle->Bone = TargetInfo.Bone;
  230.  
  231. GetBonePos(CharFX, PAngle->Bone, PAngle->BonePos);
  232. PAngle->BonePos += (CharFX->ObjInfo->Vel / MovementDivisor);
  233.  
  234. PAngle->Visible = true;
  235. if (d.OnsafdlyVisible || d.Autoshoot || d.BoneScan)
  236. {
  237. PAngle->Visible = IsVisible(MyPos, PAngle->BonePos);
  238. if (d.OnlyVisible && !PAngle->Visible)
  239. continue;
  240. }
  241.  
  242. if (d.BoneScan && d.AimType == AimBoneRandom && !PAngle->Visible)
  243. {
  244. if (TryGetVisibleBone(MyPos, CharFX, PAngle->ScannedBone, PAngle->BonePos))
  245. {sdfd
  246. PAngldsafe->BonePos += (CharFX->ObjInfo->Vel / MovementDivisor);
  247. PAngle->Visible = true;
  248. }
  249. }
  250.  
  251. AimVec = PAngle->BonePos - MyPos;
  252. PlayerAngle[AngleIndex].Dist = AimVec.Mag();
  253.  
  254. EulerAngles ea = Eul_FromQuat(LTRotation(AimVec.GetUnit(), LTVector(0.0f, 1.0f, 0.0f)), EulOrdYXZr);
  255. PAngle->Yaw = ea.x;
  256. PAngle->Pdsfafdstch = ea.y;
  257. PAngle->YawDiff = fmod(ea.x - CamYaw, 2 * MATH_PI);
  258. if (PAngle->YawDiff > MATH_PI)
  259. PAngle->YawDiff = -MATH_PI + (PAngle->YawDiff - MATH_PI);
  260. PAngle->PitchDiff = fmod(ea.y - CamPitch, 2 * MATH_PI);
  261. if (PAngle->PitchDiff > MATH_PI)
  262. PAngle->PitchDiff = -MATH_PI + (PAngle->PitchDiff - MATH_PI);
  263. PAngle->AbsYawDiff = fabs(PAngle->YawDiff);
  264. PAngle->AbsPitchDiff = fabs(PAngle->PitchDiff);
  265. if (PAngle->AbfasdsPitchDiff > MaxAngle || PAngle->AbsYawDiff > MaxAngle)
  266. if (!(LockedOn && CharFX == TargetInfo.CharFX))
  267. continue;
  268.  
  269. AngleIndex++;
  270. }
  271.  
  272. if (AngleIndex == 0)
  273. {
  274. LockedOn = false;
  275. return 0;
  276. }
  277.  
  278. float LowestAngle = 10000000.0f;
  279. float LowestDist = 10000000.0f;
  280. for (int i = 0; i < AngleIndex; ++i)
  281. {
  282. float Angle = sqrtf((PlayerAngle[i].YawDiff * PlayerAngle[i].YawDiff) + (PlayerAngle[i].PitchDiff * PlayerAngle[i].PitchDiff));
  283. if (LockedOn && TargetInfo.CharFX == PlayerAngle[i].CharFX)
  284. {
  285. LowestAngadsfle = Angle;
  286. LowestDisadsft = PlayerAngle[i].Dist;
  287. BestTargedasfft = &PlayerAngle[i];
  288. break;
  289. }
  290.  
  291. if (hTarget == PlayerAngle[i].CharFX->hObj)
  292. {
  293. LowestAngle = Angle;
  294. LowestDist = PlayerAngle[i].Dist;
  295. BestTarget = &PlayerAngle[i];
  296. break;
  297. }
  298.  
  299. if (Angle < LowestAngle)
  300. {
  301. LowestAngle = Angle;
  302. LowestDist = PlayerAngle[i].Dist;
  303. BestTarget = &PlayerAngle[i];
  304. }
  305. }
  306.  
  307. if (BestTarget == 0)
  308. {
  309. LockedOn = false;
  310. return 0;
  311. }
  312.  
  313. float RecoilYaw = 0.0f;
  314. float RecoilPitch = 0.0f;
  315.  
  316. if (LockedOn && AimTimeLeft == 0 && d.Recoil > 0.0f)
  317. {
  318. RecoilYaw = d.Recoil * (g_PlayerMgr->fCamYaw - TargetInfo.Yaw);
  319. RecoilPitch = d.Recoil * (g_PlayerMgr->fCamPitch - TargetInfo.Pitch);
  320. }
  321.  
  322. if (AimLastTicks == 0)
  323. {
  324. AimLastTicks = GetTickCount();
  325. AimTimeInitial = d.AimTime;
  326. if (AimTimeInitial == -1)
  327. AimTimeInitial = (rand() % 875) + 125;
  328. AimTimeLeft = AimTimeInitial;
  329. }
  330.  
  331. if (AimTimeInitial != 0 && AimTimeLeft > 0)
  332. {
  333. DWORD TickDiff = GetTickCount() - AimLastTicks;
  334. AimLastTicks = GetTickCount();
  335. AimTimeLeft -= TickDiff;
  336. if (AimTimeLeft < 0)
  337. AimTimeLeft = 0;
  338.  
  339. float AimPercent = 1.0f - (float(AimTimeLeft) / float(AimTimeInitial));
  340.  
  341. g_PlayerMgr->fCamYaw += AimPercent * BestTarget->YawDiff;
  342. g_PlayerMgr->fCamPitch += AimPercent * BestTarget->PitchDiff;
  343. }
  344. else
  345. {
  346. g_PlayerMgr->fCamYaw += BestTarget->YawDiff + RecoilYaw;
  347. g_PlayerMgr->fCamPitch += BestTarget->PitchDiff + RecoilPitch;
  348. }
  349.  
  350. LockedOn = true;
  351. TargetInfo = *BestTarget;
  352.  
  353. if (d.Autoshoot && BestTarget->Visible)
  354. {
  355. mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
  356. }
  357.  
  358. return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement