MeNi napisał
Kod :
SendPacket(ProcessID, (TU WSTAW MAŁPĘ)PacketBuffer, TRUE, FALSE);
tak powinno wyglądać to ostatnie. Jak już ktoś mówił, trzeba pozamieniać '#' na "małpę". Pisałem już o tym adminom, powiedzieli że to tymczasowe i że i tak nas łagodnie potraktowali wprowadzając to (Bóg wie co by było jak by nas potratowali mniej łagodnie =o). Drugą sprawą jest to, że adresy które są w artykule są błędne (stare). Ja podałem chyba 2 strony temu dobre adresy. Jak zmienisz to co powiedziałem, Wszystko powinno śmigać.
Pozdrawiam, MeNi.
I tak mi nie hodzi pozmienialem 'ap' na @, ale i tak nic sie nie dzieje. Przesle to co mam moze kts mi pmoze, WIEM ZE NAMIESZALEM ( NAPEWNO):|:
unit BOT;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Spin;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Button1: TButton;
Button2: TButton;
Timer1: TTimer;
Button3: TButton;
Button4: TButton;
Edit1: TEdit;
Button5: TButton;
SpinEdit1: TSpinEdit;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
const
//adresy wartosci postaci
Player_ClubPerc = $613B00;
Player_SwordPerc = $613B04;
Player_AxePerc = $613B08;
Player_DistnacePerc = $613B0C;
Player_ShieldingPerc = $613B10;
Player_FishingPerc = $613B14;
Player_Fist = $613B18;
Player_Club = $613B1C;
Player_Sword = $613B20;
Player_Axe = $613B24;
Player_Distance = $613B28;
Player_Shielding = $613B2C;
Player_Fishing = $613B30;
Player_Cap = $613B40;
Player_Stamina = $613B48;
Player_Soul = $613B48;
Player_ManaMax = $613B4C;
Player_Mana = $613B50;
Player_MagicLevelPerc = $613B54;
Player_LevelPerc = $613B58;
Player_MagicLevel = $613B5C;
Player_Level = $613B60;
Player_Experience = $613B64;
Player_HpMax = $613B68;
Player_Hp = $613B6C;
Player_ID = $613B70;
//koniec - adresy wartosci postaci
const
BATTLELIST_START = $60EB30 + 4;
BATTLELIST_END = $6148F4;
const
Distance_ID= -4;
Distance_Type = -1;
Distance_Name= -0;
Distance_X = 32;
Distance_Y = 36;
Distance_Z = 40;
Distance_HorizScreenOffset = 44;
Distance_VertScreenOffset = 48;
Distance_Chameleon = 60;
Distance_Chameleon2 = 92;
Distance_IsWalking = 72;
Distance_Direction = 76;
Distance_Outfit = 92;
Distance_OutfitHead = 96;
Distance_OutfitBody = 100;
Distance_OutfitLegs = 104;
Distance_OutfitFeet = 108;
Distance_OutfitAddon = 112;
Distance_LightColor1 = 121;
Distance_LightColor2 = 122;
Distance_LightPattern = 123;
Distance_BlackSquare = 128;
Distance_HP = 132;
Distance_WalkSpeed = 136;
Distance_IsVisible = 140;
Distance_Skull = 144;
Distance_Party = 148;
const
DISTANCE_LIGHT = $74;
DISTANCE_LIGHTCOLOR = $78;
implementation
{$R *.dfm}
procedure say(text:string);
var
PacketBuffer: array [0..200] of byte;
ProcessID: Cardinal;
begin
GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), @ProcessID); //pobranie id procesu Tibii
PacketBuffer[0] := Byte(Length(text) + 4); //tu okreslana jest dlugosc pakietu bez 0 i 1
PacketBuffer[1] := $00;
PacketBuffer[2] := $96;
PacketBuffer[3] := $01;
PacketBuffer[4] := Byte(Length(text));
PacketBuffer[5] := $00;
CopyMemory(@PacketBuffer[6], @text[1], Length(text));
SendPacket(ProcessID, @PacketBuffer, TRUE, FALSE); // tu program wysyla pakiet do programu z proces id = ProcessID
end;
// Funkcje czytające
function ReadMemInteger(Address: Cardinal): Cardinal; //Read adress:value
var
ProcId: Cardinal;
tProc: THandle;
NBR: Cardinal;
value:integer;
begin
GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), @ProcId);
tProc:= OpenProcess(PROCESS_ALL_ACCESS, False, ProcId);
ReadProcessMemory(tProc, Ptr(Address), @value, 4, NBR);
CloseHandle(tProc);
Result:=value;
end;
function MemReadString(Address: Integer): String;
var
NB : LongWord;
Temp : ARRAY [1..255] OF Byte;
I : Byte;
IDProcess, proc_ID : Cardinal;
begin
GetWindowThreadProcessID(FindWindow('TibiaClient', nil), @proc_ID);
IDProcess := OpenProcess(PROCESS_ALL_ACCESS, false, proc_ID);
Result := '';
ReadProcessMemory(IDProcess, Ptr(Address), @Temp[1], 255, NB);
for I := 1 to 255 do
begin
if ((Temp[i] = 0) or (Temp[i] = $0F)) then
Break;
Result := Result + Chr(Temp[i]);
end;
end;
// Koniec - Funkcje czytające
//BattleList - Czytanie
function pozycja:integer;
var
i,id_battle,id:integer;
begin
id:=readmeminteger(Player_id); //odczytanie naszego id z adresu
for i:=1 to 149 do //przeszukanie wszystkich pozycji na battle list (minimalna 1 maxymanlna 149
Begin
id_battle:=Readmeminteger(Battlelist_start + (i*160)-4); //czytanie id z pozycji
if id_battle=ID then //jezeli id z battle list zgadza sie z id z adresu
Begin
Result :=i; //wtedy wynikiem funkcji jest nasza pozycja na battle
exit;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=false;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
showmessage(MemReadString(BattleList_Start+pozycja *160+Distance_name));
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
If (Button4.Caption = 'Start') then
begin
Button4.Caption := 'Stop';
end
Else
if (Button4.Caption = 'Stop') then
begin
Button4.Caption := 'Start';
end;
end;
end.
HELP HELP HELP HELP HELP HELP
Zakładki