Advertisement
Guest User

Untitled

a guest
Apr 21st, 2015
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.32 KB | None | 0 0
  1. type
  2. PLAYER_DATA = packed record
  3. Base : Pointer;
  4. PosX : Single;
  5. PosY : Single;
  6. PosZ : Single;
  7. AddrMouseX : DWORD;
  8. AddrMouseY : DWORD;
  9. AddrNome : Pointer;
  10. HP : Integer;
  11. Slot : Integer;
  12. Correndo : Integer;
  13. Agachado : Integer;
  14. AddrAntiGod : Pointer;
  15. AddrInclinacao : Pointer;
  16. end;
  17.  
  18. var
  19. Form1: TForm1;
  20.  
  21. implementation
  22.  
  23. {$R *.dfm}
  24.  
  25. var
  26. Head : boolean = true;
  27. TeamAddr : DWORD = $AE0;
  28. Priority : DWORD = $0;
  29. AddrPriority : DWORD = $10;
  30. MyTeamBlue : boolean = true;
  31.  
  32. function VecSubtract(out vResult: PLAYER_DATA; const v1, v2: PLAYER_DATA): PLAYER_DATA;
  33. begin
  34. with vResult do begin
  35. PosX:= v1.Posx - v2.Posx;
  36. PosY:= v1.Posy - v2.Posy;
  37. PosZ:= v1.Posz - v2.Posz;
  38. end;
  39. Result:= vResult;
  40. end;
  41.  
  42. function CalcDistance(VecA, VecB: Player_DATA): extended;
  43. begin
  44. Result := sqrt
  45. (((VecA.PosX - VecB.PosX) * (VecA.PosX - VecB.PosX)) +
  46. ((VecA.PosY - VecB.PosY) * (VecA.PosY - VecB.PosY)) +
  47. ((VecA.PosZ - VecB.PosZ) * (VecA.PosZ - VecB.PosZ)));
  48. end;
  49.  
  50. function GetMyInfo : PLAYER_DATA;
  51. var
  52. Player : PLAYER_DATA;
  53. begin
  54. Player.PosX := PSINGLE($00C8AA48)^;
  55. Player.PosY := PSINGLE($00C8AA48 + $4)^; // altura
  56. Player.PosZ := PSINGLE($00C8AA48 + $8)^;
  57. Player.AddrMouseX := $00C8AA60;
  58. Player.AddrMouseY := $00C8AA64;
  59. Result := Player;
  60. end;
  61.  
  62. function GetEnemy(SlotAddr : DWORD): PLAYER_DATA;
  63. var
  64. Player : PLAYER_DATA;
  65. begin
  66. Player.Base := Pointer(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $0);
  67. Player.PosX := PSINGLE(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $E0)^;
  68. Player.PosY := PSINGLE(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $E4)^;
  69. Player.PosZ := PSINGLE(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $E8)^;
  70. Player.AddrNome := Pointer(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $3C);
  71. Player.HP := PDWORD(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $11C)^;
  72. Player.Slot := PBYTE(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $70)^;
  73. Player.Correndo := PBYTE(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $460)^;
  74. Player.Agachado := PBYTE(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $4F4)^;
  75. Player.AddrAntiGod := Pointer(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $120);
  76. Player.AddrInclinacao := Pointer(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $1E0F);
  77. Result := Player;
  78. end;
  79.  
  80. procedure Aimbot(Target: DWORD);
  81. const
  82. Circle : Single = 6.283;
  83. var
  84. MyInfo, Enemy, Distance : PLAYER_DATA;
  85. CalcAngle, Angle, ValueX : Single;
  86. NewCalc, ValueY : Single;
  87. begin
  88. MyInfo := GetMyInfo;
  89. Enemy := GetEnemy(Target);
  90. PBYTE(Enemy.AddrAntiGod)^:= 0; // anti god mode
  91. PBYTE(Enemy.AddrInclinacao)^:= 0; // inimigo nao se inclina
  92. //------------------------------------------------------------------------------
  93. // MIRA X :
  94. //------------------------------------------------------------------------------
  95. // Setor 1
  96. if(Enemy.PosX > MyInfo.PosX) and (Enemy.PosZ <= MyInfo.PosZ) then begin
  97. VecSubtract(Distance, MyInfo, Enemy);
  98. CalcAngle := - ArcTan(Distance.PosX / Distance.PosZ) * 57.29578;
  99. Angle := (CalcAngle / 360);
  100. ValueX := (Circle / 2) - (Circle * Angle);
  101. PSINGLE(MyInfo.AddrMouseX)^:= ValueX;
  102. end;
  103.  
  104. // Setor 2
  105. if(Enemy.PosX <= MyInfo.PosX) and (Enemy.PosZ < MyInfo.PosZ) then begin
  106. VecSubtract(Distance, MyInfo, Enemy);
  107. CalcAngle := - ArcTan(Distance.PosX / Distance.PosZ) * 57.29578;
  108. Angle := (CalcAngle / 360);
  109. ValueX := (Circle / 2) - (Circle * Angle);
  110. PSINGLE(MyInfo.AddrMouseX)^:= ValueX;
  111. end;
  112.  
  113. // Setor 3
  114. if(Enemy.PosX < MyInfo.PosX) and (Enemy.PosZ >= MyInfo.PosZ) then begin
  115. VecSubtract(Distance, MyInfo, Enemy);
  116. CalcAngle := - ArcTan(Distance.PosX / Distance.PosZ) * 57.29578;
  117. Angle := (CalcAngle / 360);
  118. ValueX := Circle - (Circle * Angle);
  119. PSINGLE(MyInfo.AddrMouseX)^:= ValueX;
  120. end;
  121.  
  122. // Setor 4
  123. if (Enemy.PosX >= MyInfo.PosX) and (Enemy.PosZ > MyInfo.PosZ) then begin
  124. VecSubtract(Distance, MyInfo, Enemy);
  125. CalcAngle := ArcTan(Distance.PosX / Distance.PosZ) * 57.29578;
  126. Angle := (CalcAngle / 360);
  127. ValueX := 0 + (Circle * Angle);
  128. PSINGLE(MyInfo.AddrMouseX)^:= ValueX;
  129. end;
  130. //------------------------------------------------------------------------------
  131. // MIRA Y :
  132. //------------------------------------------------------------------------------
  133. NewCalc := sqrt((Distance.PosX * Distance.PosX) + (Distance.PosZ * Distance.PosZ));
  134. //------ Head ------
  135. if Head = true then begin
  136. VecSubtract(Distance, MyInfo, Enemy);
  137. CalcAngle := ArcTan((Distance.PosY - 67.0) / NewCalc) * 57.29578;
  138. if Enemy.Correndo = 17 then begin // correndo
  139. CalcAngle := ArcTan((Distance.PosY - 62.0) / NewCalc) * 57.29578;
  140. end;
  141. if Enemy.Agachado = 1 then begin
  142. CalcAngle := ArcTan((Distance.PosY - 50.0) / NewCalc) * 57.29578;
  143. end;
  144. if Enemy.Agachado = 4 then begin
  145. CalcAngle := ArcTan((Distance.PosY - 49.0) / NewCalc) * 57.29578;
  146. end;
  147.  
  148. Angle := (CalcAngle / 360);
  149. ValueY := 0 + (Circle * Angle);
  150. PSINGLE(MyInfo.AddrMouseY)^:= ValueY;
  151. end;
  152. //------ Chest ------
  153. if Head = false then begin
  154. VecSubtract(Distance, MyInfo, Enemy);
  155. CalcAngle := ArcTan((Distance.PosY - 50.0) / NewCalc) * 57.29578;
  156. if Enemy.Agachado = 1 then begin
  157. CalcAngle := ArcTan((Distance.PosY - 25.0) / NewCalc) * 57.29578;
  158. end;
  159. if Enemy.Agachado = 4 then begin
  160. CalcAngle := ArcTan((Distance.PosY - 24.0) / NewCalc) * 57.29578;
  161. end;
  162.  
  163. Angle := (CalcAngle / 360);
  164. ValueY := 0 + (Circle * Angle);
  165. PSINGLE(MyInfo.AddrMouseY)^:= ValueY;
  166. end;
  167. //------------------------------------------------------------------------------
  168. end;
  169.  
  170. procedure GetTeam;
  171. var
  172. MeuSlot : Integer;
  173. begin
  174. MeuSlot := PBYTE(PDWORD($00CA1C30)^+ $70)^;
  175. if (MeuSlot mod 2) = 0 then begin
  176. TeamAddr := $AE0; // inimigo = amarelo
  177. MyTeamBlue := true; // meu time = azul
  178. end else begin;
  179. TeamAddr := $AD0; // inimigo = azul
  180. MyTeamBlue := false; // meu time = amarelo
  181. end;
  182. end;
  183.  
  184. function TargetName(Target : DWORD): PChar;
  185. var
  186. Name : PChar;
  187. Enemy : PLAYER_DATA;
  188. begin
  189. Enemy := GetEnemy(Target);
  190. Name := PChar(Enemy.AddrNome);
  191. Result := Name;
  192. end;
  193.  
  194. function TargetOK(Target : DWORD) : boolean;
  195. var
  196. Enemy : PLAYER_DATA;
  197. begin
  198. Result := false;
  199. Enemy := GetEnemy(Target);
  200. if MyTeamBlue = true then begin
  201. if ((Enemy.Slot mod 2) > 0) then begin
  202. if (Enemy.HP > 0) then begin
  203. Result := true;
  204. end;
  205. end;
  206. end;
  207. if MyTeamBlue = false then begin
  208. if ((Enemy.Slot mod 2) = 0) then begin
  209. if (Enemy.HP > 0) then begin
  210. Result := true;
  211. end;
  212. end;
  213. end;
  214. end;
  215.  
  216. function TargetVisible(Target, Slot : DWORD): Boolean;
  217. var
  218. Enemy : PLAYER_DATA;
  219. begin
  220. Result := false;
  221. if TargetOK(Target) = true then begin
  222. Enemy := GetEnemy(Target);
  223. PDWORD(PDWORD($CA28E8)^+ (Slot + $8))^:= Integer(Enemy.Base);
  224. if PDWORD(PDWORD($CA28E8)^+ Slot)^= 1065353216 then begin
  225. Result := true;
  226. end;
  227. end;
  228. end;
  229.  
  230. function GetMinDist(DistAtual, D1, D2 : Extended): boolean;
  231. begin
  232. Result := false;
  233. if (DistAtual < D1) then begin
  234. if (DistAtual < D2) then begin
  235. Result := true;
  236. end;
  237. end;
  238. end;
  239.  
  240. procedure GetPriorityTarget;
  241. const
  242. Addr1 : DWORD = $10;
  243. Addr2 : DWORD = $34;
  244. Addr3 : DWORD = $58;
  245. DistMax : Extended = 999999999999999999;
  246. var
  247. MyInfo, E1, E2, E3 : PLAYER_DATA;
  248. Loop, T1, T2, T3 : Integer;
  249. D1, D2, D3 : Extended;
  250. begin
  251. T1 := $0;
  252. T2 := $4;
  253. T3 := $8;
  254. MyInfo := GetMyInfo;
  255. for Loop := 0 to 3 do begin
  256. try
  257. E1 := GetEnemy(T1);
  258. E2 := GetEnemy(T2);
  259. E3 := GetEnemy(T3);
  260. if TargetVisible(T1, Addr1) = true then begin
  261. D1 := CalcDistance(MyInfo, E1);
  262. end else begin
  263. D1 := DistMax;
  264. end;
  265.  
  266. if TargetVisible(T2, Addr2) = true then begin
  267. D2 := CalcDistance(MyInfo, E2);
  268. end else begin
  269. D2 := DistMax;
  270. end;
  271.  
  272. if TargetVisible(T3, Addr3) = true then begin
  273. D3 := CalcDistance(MyInfo, E3);
  274. end else begin
  275. D3 := DistMax;
  276. end;
  277.  
  278. if GetMinDist(D1, D2, D3) = true then begin
  279. Priority := T1;
  280. AddrPriority := Addr1;
  281. end else begin
  282. Inc(T1, $C);
  283. end;
  284.  
  285. if GetMinDist(D2, D1, D3) = true then begin
  286. Priority := T2;
  287. AddrPriority := Addr2;
  288. end else begin
  289. Inc(T2, $C);
  290. end;
  291.  
  292. if GetMinDist(D3, D1, D2) = true then begin
  293. Priority := T3;
  294. AddrPriority := Addr3;
  295. end else begin
  296. Inc(T3, $C);
  297. end;
  298. except
  299. Continue;
  300. end;
  301. end;
  302. end;
  303.  
  304. procedure TForm1.TAimTimer(Sender: TObject);
  305. begin
  306. try
  307. if RHead.Checked = true then begin
  308. Head := true;
  309. end else begin
  310. Head := false;
  311. end;
  312. if CAim.Checked = true then begin
  313. if PBYTE($00CA26FC)^ = 1 then begin
  314. GetTeam;
  315. GetPriorityTarget;
  316. LTarget.Caption := TargetName(Priority);
  317. if TargetVisible(Priority, AddrPriority) = true then begin
  318. Aimbot(Priority);
  319. LTarget.Font.Color := clgreen;
  320. end else begin
  321. LTarget.Font.Color := clred;
  322. end;
  323. end;
  324. end;
  325. except
  326. end;
  327. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement