Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type
- PLAYER_DATA = packed record
- Base : Pointer;
- PosX : Single;
- PosY : Single;
- PosZ : Single;
- AddrMouseX : DWORD;
- AddrMouseY : DWORD;
- AddrNome : Pointer;
- HP : Integer;
- Slot : Integer;
- Correndo : Integer;
- Agachado : Integer;
- AddrAntiGod : Pointer;
- AddrInclinacao : Pointer;
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- var
- Head : boolean = true;
- TeamAddr : DWORD = $AE0;
- Priority : DWORD = $0;
- AddrPriority : DWORD = $10;
- MyTeamBlue : boolean = true;
- function VecSubtract(out vResult: PLAYER_DATA; const v1, v2: PLAYER_DATA): PLAYER_DATA;
- begin
- with vResult do begin
- PosX:= v1.Posx - v2.Posx;
- PosY:= v1.Posy - v2.Posy;
- PosZ:= v1.Posz - v2.Posz;
- end;
- Result:= vResult;
- end;
- function CalcDistance(VecA, VecB: Player_DATA): extended;
- begin
- Result := sqrt
- (((VecA.PosX - VecB.PosX) * (VecA.PosX - VecB.PosX)) +
- ((VecA.PosY - VecB.PosY) * (VecA.PosY - VecB.PosY)) +
- ((VecA.PosZ - VecB.PosZ) * (VecA.PosZ - VecB.PosZ)));
- end;
- function GetMyInfo : PLAYER_DATA;
- var
- Player : PLAYER_DATA;
- begin
- Player.PosX := PSINGLE($00C8AA48)^;
- Player.PosY := PSINGLE($00C8AA48 + $4)^; // altura
- Player.PosZ := PSINGLE($00C8AA48 + $8)^;
- Player.AddrMouseX := $00C8AA60;
- Player.AddrMouseY := $00C8AA64;
- Result := Player;
- end;
- function GetEnemy(SlotAddr : DWORD): PLAYER_DATA;
- var
- Player : PLAYER_DATA;
- begin
- Player.Base := Pointer(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $0);
- Player.PosX := PSINGLE(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $E0)^;
- Player.PosY := PSINGLE(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $E4)^;
- Player.PosZ := PSINGLE(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $E8)^;
- Player.AddrNome := Pointer(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $3C);
- Player.HP := PDWORD(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $11C)^;
- Player.Slot := PBYTE(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $70)^;
- Player.Correndo := PBYTE(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $460)^;
- Player.Agachado := PBYTE(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $4F4)^;
- Player.AddrAntiGod := Pointer(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $120);
- Player.AddrInclinacao := Pointer(PDWORD(PDWORD(PDWORD($1000CC7C)^+ TeamAddr)^+ SlotAddr)^+ $1E0F);
- Result := Player;
- end;
- procedure Aimbot(Target: DWORD);
- const
- Circle : Single = 6.283;
- var
- MyInfo, Enemy, Distance : PLAYER_DATA;
- CalcAngle, Angle, ValueX : Single;
- NewCalc, ValueY : Single;
- begin
- MyInfo := GetMyInfo;
- Enemy := GetEnemy(Target);
- PBYTE(Enemy.AddrAntiGod)^:= 0; // anti god mode
- PBYTE(Enemy.AddrInclinacao)^:= 0; // inimigo nao se inclina
- //------------------------------------------------------------------------------
- // MIRA X :
- //------------------------------------------------------------------------------
- // Setor 1
- if(Enemy.PosX > MyInfo.PosX) and (Enemy.PosZ <= MyInfo.PosZ) then begin
- VecSubtract(Distance, MyInfo, Enemy);
- CalcAngle := - ArcTan(Distance.PosX / Distance.PosZ) * 57.29578;
- Angle := (CalcAngle / 360);
- ValueX := (Circle / 2) - (Circle * Angle);
- PSINGLE(MyInfo.AddrMouseX)^:= ValueX;
- end;
- // Setor 2
- if(Enemy.PosX <= MyInfo.PosX) and (Enemy.PosZ < MyInfo.PosZ) then begin
- VecSubtract(Distance, MyInfo, Enemy);
- CalcAngle := - ArcTan(Distance.PosX / Distance.PosZ) * 57.29578;
- Angle := (CalcAngle / 360);
- ValueX := (Circle / 2) - (Circle * Angle);
- PSINGLE(MyInfo.AddrMouseX)^:= ValueX;
- end;
- // Setor 3
- if(Enemy.PosX < MyInfo.PosX) and (Enemy.PosZ >= MyInfo.PosZ) then begin
- VecSubtract(Distance, MyInfo, Enemy);
- CalcAngle := - ArcTan(Distance.PosX / Distance.PosZ) * 57.29578;
- Angle := (CalcAngle / 360);
- ValueX := Circle - (Circle * Angle);
- PSINGLE(MyInfo.AddrMouseX)^:= ValueX;
- end;
- // Setor 4
- if (Enemy.PosX >= MyInfo.PosX) and (Enemy.PosZ > MyInfo.PosZ) then begin
- VecSubtract(Distance, MyInfo, Enemy);
- CalcAngle := ArcTan(Distance.PosX / Distance.PosZ) * 57.29578;
- Angle := (CalcAngle / 360);
- ValueX := 0 + (Circle * Angle);
- PSINGLE(MyInfo.AddrMouseX)^:= ValueX;
- end;
- //------------------------------------------------------------------------------
- // MIRA Y :
- //------------------------------------------------------------------------------
- NewCalc := sqrt((Distance.PosX * Distance.PosX) + (Distance.PosZ * Distance.PosZ));
- //------ Head ------
- if Head = true then begin
- VecSubtract(Distance, MyInfo, Enemy);
- CalcAngle := ArcTan((Distance.PosY - 67.0) / NewCalc) * 57.29578;
- if Enemy.Correndo = 17 then begin // correndo
- CalcAngle := ArcTan((Distance.PosY - 62.0) / NewCalc) * 57.29578;
- end;
- if Enemy.Agachado = 1 then begin
- CalcAngle := ArcTan((Distance.PosY - 50.0) / NewCalc) * 57.29578;
- end;
- if Enemy.Agachado = 4 then begin
- CalcAngle := ArcTan((Distance.PosY - 49.0) / NewCalc) * 57.29578;
- end;
- Angle := (CalcAngle / 360);
- ValueY := 0 + (Circle * Angle);
- PSINGLE(MyInfo.AddrMouseY)^:= ValueY;
- end;
- //------ Chest ------
- if Head = false then begin
- VecSubtract(Distance, MyInfo, Enemy);
- CalcAngle := ArcTan((Distance.PosY - 50.0) / NewCalc) * 57.29578;
- if Enemy.Agachado = 1 then begin
- CalcAngle := ArcTan((Distance.PosY - 25.0) / NewCalc) * 57.29578;
- end;
- if Enemy.Agachado = 4 then begin
- CalcAngle := ArcTan((Distance.PosY - 24.0) / NewCalc) * 57.29578;
- end;
- Angle := (CalcAngle / 360);
- ValueY := 0 + (Circle * Angle);
- PSINGLE(MyInfo.AddrMouseY)^:= ValueY;
- end;
- //------------------------------------------------------------------------------
- end;
- procedure GetTeam;
- var
- MeuSlot : Integer;
- begin
- MeuSlot := PBYTE(PDWORD($00CA1C30)^+ $70)^;
- if (MeuSlot mod 2) = 0 then begin
- TeamAddr := $AE0; // inimigo = amarelo
- MyTeamBlue := true; // meu time = azul
- end else begin;
- TeamAddr := $AD0; // inimigo = azul
- MyTeamBlue := false; // meu time = amarelo
- end;
- end;
- function TargetName(Target : DWORD): PChar;
- var
- Name : PChar;
- Enemy : PLAYER_DATA;
- begin
- Enemy := GetEnemy(Target);
- Name := PChar(Enemy.AddrNome);
- Result := Name;
- end;
- function TargetOK(Target : DWORD) : boolean;
- var
- Enemy : PLAYER_DATA;
- begin
- Result := false;
- Enemy := GetEnemy(Target);
- if MyTeamBlue = true then begin
- if ((Enemy.Slot mod 2) > 0) then begin
- if (Enemy.HP > 0) then begin
- Result := true;
- end;
- end;
- end;
- if MyTeamBlue = false then begin
- if ((Enemy.Slot mod 2) = 0) then begin
- if (Enemy.HP > 0) then begin
- Result := true;
- end;
- end;
- end;
- end;
- function TargetVisible(Target, Slot : DWORD): Boolean;
- var
- Enemy : PLAYER_DATA;
- begin
- Result := false;
- if TargetOK(Target) = true then begin
- Enemy := GetEnemy(Target);
- PDWORD(PDWORD($CA28E8)^+ (Slot + $8))^:= Integer(Enemy.Base);
- if PDWORD(PDWORD($CA28E8)^+ Slot)^= 1065353216 then begin
- Result := true;
- end;
- end;
- end;
- function GetMinDist(DistAtual, D1, D2 : Extended): boolean;
- begin
- Result := false;
- if (DistAtual < D1) then begin
- if (DistAtual < D2) then begin
- Result := true;
- end;
- end;
- end;
- procedure GetPriorityTarget;
- const
- Addr1 : DWORD = $10;
- Addr2 : DWORD = $34;
- Addr3 : DWORD = $58;
- DistMax : Extended = 999999999999999999;
- var
- MyInfo, E1, E2, E3 : PLAYER_DATA;
- Loop, T1, T2, T3 : Integer;
- D1, D2, D3 : Extended;
- begin
- T1 := $0;
- T2 := $4;
- T3 := $8;
- MyInfo := GetMyInfo;
- for Loop := 0 to 3 do begin
- try
- E1 := GetEnemy(T1);
- E2 := GetEnemy(T2);
- E3 := GetEnemy(T3);
- if TargetVisible(T1, Addr1) = true then begin
- D1 := CalcDistance(MyInfo, E1);
- end else begin
- D1 := DistMax;
- end;
- if TargetVisible(T2, Addr2) = true then begin
- D2 := CalcDistance(MyInfo, E2);
- end else begin
- D2 := DistMax;
- end;
- if TargetVisible(T3, Addr3) = true then begin
- D3 := CalcDistance(MyInfo, E3);
- end else begin
- D3 := DistMax;
- end;
- if GetMinDist(D1, D2, D3) = true then begin
- Priority := T1;
- AddrPriority := Addr1;
- end else begin
- Inc(T1, $C);
- end;
- if GetMinDist(D2, D1, D3) = true then begin
- Priority := T2;
- AddrPriority := Addr2;
- end else begin
- Inc(T2, $C);
- end;
- if GetMinDist(D3, D1, D2) = true then begin
- Priority := T3;
- AddrPriority := Addr3;
- end else begin
- Inc(T3, $C);
- end;
- except
- Continue;
- end;
- end;
- end;
- procedure TForm1.TAimTimer(Sender: TObject);
- begin
- try
- if RHead.Checked = true then begin
- Head := true;
- end else begin
- Head := false;
- end;
- if CAim.Checked = true then begin
- if PBYTE($00CA26FC)^ = 1 then begin
- GetTeam;
- GetPriorityTarget;
- LTarget.Caption := TargetName(Priority);
- if TargetVisible(Priority, AddrPriority) = true then begin
- Aimbot(Priority);
- LTarget.Font.Color := clgreen;
- end else begin
- LTarget.Font.Color := clred;
- end;
- end;
- end;
- except
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement