0x00 equal $Cytuj:
Damlox napisał
Wersja do druku
0x00 equal $Cytuj:
Damlox napisał
Sorrka nie doczytałem :P Mógłby mi ktoś jeszcze raz wytłumaczyć jak zrobić spell castera. Prosze. :)
//edit
sam doszedłem do tego skąd mam wziąść adressy np. sword fighting itp. ale niewiem jak mam uzyskać z tego dane do stworzenia zmiany outfity albo spell castera :/. Oczywiście poradnik 11/10 :D
Pordnik spoko i autor też. Może trochę skąplikowany ale mi pasuje.
Mogłby ktos dac pakiety na Account Number i Password? (Do auto loginu) ??? Czekam...
Jeżeli chodzi o spell caster, opiera się on na pakietach. Przykład takiego zastosowania zawarty został w pierwszym poście.
Aby zmienić outfit postaci, musisz przede wszystkim znaleźć ją na battlelist,
a następnie użyć funkcji zmieniającej wartość w danym adresie (w tym wypadku MemWriteInteger).
Przykład:
Kod:MemWriteInteger(battlelist_start+(i*160)+distance_outfit, 60, 2); // distance_outfit - odległość do adresu outfitu, 60 - nowy wygłąd, 2 - długość wartości
trzeba sciagnac tez nowego packet.dll ten stąd nie działa pod Tibie 8.2 sciagnolem new packet.dll zupdatowalem adresy i bot dzialal jak pod wczesniejsze wersje.
No niestety to za dużo na moją głowę. :P Ktoś tu podał nowy packet.dll ?
//edit
No właśnie trochę tego nie rozumiem. :/ Wiem, że Yooboo sie starał i inni też, no ale jakoś nie rozumiem.Cytuj:
Aby zmienić outfit postaci, musisz przede wszystkim znaleźć ją na battlelist,(...)
Bibliotekę packet.dll pod różne wersje klienta Tibii możemy znaleźć pod adresem - http://www.tpforums.org/forum/showth...ght=packet.dll
Hmm... teraz sprawa znajdywania pozycji gracza na battlelist.
W sumie można to zrobić na dwa sposoby:
- Dzięki ID gracza
- Dzięki nazwie gracza
Ten pierwszy sprawdza się, tylko jeżeli chcemy odwołać się do naszej postaci, gdyż znamy nasz ID
(player_id = $00624C70).
Taka funkcja wygląda następująco:
Kod:function findplayerbyid(id: integer);
var
i: integer;
begin
for i:=0 to 150 do
begin
if (ReadMemInteger(battlelist_start+(i*160)-4) = id) then
begin
Result :=i;
exit;
end;
end;
end;
Dzieki Damlox. Spróbuję od nova i za kilka dni wrzuce ssa co mi tam wyszło :PPP. Jeszcze jedno pytanko. Czy da się zmienić grafike w programie? Znaczy się np. ogrągłe okno, albo w org. stylu Vivynusa. :)))
#up:
Ofc - wszystko da się zmienić ;) Możesz do tego użyć gotowych komponentów, albo popróbować samemu (co jest jednak trochę trudniejsze). Sam kształt okna nie jest specialnie trudny do wykonania.
#edit,down:
nie ma go w standardzie. Możesz poszukać zestawu "Raize Components", abo samemu przygotować 2-kolorową bitmapę, położyć na formę i jeden z kolorów w ustawieniach formy oznaczyć jako "przezroczysty". Forma przybierze kształt pierwszego koloru bitmapy.
Który komponent? Jest w standardowej wersji Delphi 7 ?
Witam :)
Mój problem polega na tym:
[Fatal Error] Tibia_bot.dpr(5): Could not compile
[Error] bot.pas(61): Declaration expected but end of file found
Pozaznaczałem gdzie jest 5 linijka i 61 choć jej niema 0.o
Kod: oczywiście # została zamienione na "małpę"
[Error] bot.pas(61): Declaration expected but end of file found || tego niema bo linijek jest tylko 55 0.oKod:unit Bot;
interface
uses //Tutaj[Fatal Error] Tibia_bot.dpr(5): Could not compile used unit 'bot.pas'
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// Funkcje czytające
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;
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;
O już mi się udało wystarczyło dodać pod spodem end. :)
O a teraz znowu mam problem bo mi nie wysletla okienka jak skomplikowalem i dalem F9
Kod:
Wyświetla mi sie takie duże okno i nic :<Kod:unit Bot;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// 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
end.
link: h t t p://www7.speedyshare.com/data/346765714/11944944/79817199/error.jpg
Poradnik swietny ale komu chce sie w to bawic,mozna przecierz jak jest jakis update i niemozna sie logonoc napisac z nudow.Poradnik przyda sie osobom ktrzy nie graja w tibie ale sa na forum.
Ocena:
9,5/10
#up:
Nic nie wniosłeś. Wogule nie wiem o co ci chodzi :|
#sokrates:
A co ty byś chciał?
Skompilowałeś program mający funkcje odnajdującą tibię, otwierającą jej procesz i funkcję bodajże czytającą liczby z pamięci.
Teraz dodaj pod jakimś przyciskiem obsługę tych funkcji. Program zadziałał - skompilował pustą formę, bo nic na nią nie położyłeś.
zacznijcie od jakichs prostych rzeczy (w stylu hello world, ew. kalkulatorek), po co komus zrobic bota, nie rozumiejac co wkleja ...