zaglądaj często w ten temat
http://www.tpforums.org/forum/showthread.php?t=2491
jest tam wlasnie najswiezszy packet.dll
:)
Wersja do druku
zaglądaj często w ten temat
http://www.tpforums.org/forum/showthread.php?t=2491
jest tam wlasnie najswiezszy packet.dll
:)
ja mam pytanie JAK szukać battle list start i end
jaka jest procedura szukania kodu odpowiadajacemu im
w cheat engine (lub innym pr)
i jak stwierdzic co dokladnie jest jej poczatkiem(ja szukam wpisujac szukanie nicku mojej zalogowaniej postaci ale nie wiem co uznac za poczatek i koniec battle list
Witam.
Może mi ktoś podać adres Player_ID do 8.41 ? : )
Proszę?
@edit
Czeka nagroda! : )
@edit2
sam znalazlem. jak ktos potrzebuje pomocy to pisac.
Jak zamienić pakiet wygenerowany, np. w N Bot (np. 0C 00 FC 02 D7 0C 01 00 67 18 0E 17 B7 EF) tak, aby zapisać go w Delphi?
cześć...jestem początkującym programistom i chciałbym się spytać
czy byście mi przetłumaczyli ten poradnik jest troche trudny do zrozumienia. ;(
h t t p://chuligan.wordpress.com/about/
jak przetlumaczyc? Jest wszystko jasno wytłumaczone.
Może lepiej zajmij sie układaniem klocków ;)
Dalej proszę o odpowiedź na moje poprzednie pytanie ;)
w tym poradniku procedura say.
Dla kazdego hexa oddzielne miejsce w tablic PacketBuffer.
A tu masz jeszcze ang tutorial o tym
http://tpforums.org/forum/showthread...list+procedure
pozdro
Prosiłbym o pomoc w wyciągnięciu nicku.
Otóż mam taki kod, takie adresy i niestety nicku nie otrzymuje w wiadomości, tylko jakieś znaczki...
Oto kod:
Czy powodem tego są błędne adresy stałych?Kod:unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
const
PLAYER_ID = $631D90;
Battlelist_start = $631DF0;
Distance_name = $631D48;
implementation
{$R *.dfm}
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; 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 pozycja:integer;
var
i,id_battle,id:integer;
begin
id:=readmeminteger(Player_id);
for i:=1 to 149 do
Begin
id_battle:=Readmeminteger(Battlelist_start + (i*160)-4);
if id_battle=ID then
Begin
Result :=i;
exit;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(MemReadString(BattleList_Start+pozycja*160+Distance_name));
end;
end.
Proszę o pomoc!
sproboj zmienic linijke
showmessage(MemReadString(BattleList_Start+pozycja *160+Distance_name));
na
showmessage(MemReadString(BattleList_Start+pozycja *160));
ewentualnie
showmessage(MemReadString(BattleList_Start+pozycja *160+4));
przedewszystkim błąd jest w stałej Distance_name, jej założeniem była wartość dziesięetna (generalnie wszystkie distance sa od 0 do 160 bo potem jest juz kolejna osobe w battle liscie).
Z tego co widze podałeś poprostu wartość równą adresowi komórki która odczytałes za pomoca Tsearch. pozdro.
Poradnik, nie powiem, przydał się. Jest dosyć ładnie wyłożony z wyjątkiem punktu piątego. Jeśli chodzi o pakiety - nie kminie ich. Widzę przed sobą elegancki bocik z wieloma prywatnymi funkcjami, ale brak tu jednej rzeczy: poprawnej funkcji mówienia. Używam tej podanej, nie przerabiam(ze względu na brak znajomości pakietów). Chcę ujrzeć dowolny text, byleby był. Wersja klienta: 8.41, funkcja do mówienia:
Oczywiście są małpki zamiast hashy.Kod:procedure say2(text:string);
var
PacketBuffer: array [0..200] of byte;
ProcessID: Cardinal;
begin
GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), @ProcessID);
PacketBuffer[0] := Byte(Length(text) + 4);
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);
end;
Czy wartości podane się zmieniają? Czy robi różnicę testowanie na kliencie ze zmienionym ip, a rl(tibia/ots).
Jak naprawić to gówno? Żeby pokazało chociaż "napis" w grze. Będę do usranej śmierci wdzięczny ;D
Leatsis.
Za dużo kombinowania moim zdaniem :P lepiej zassać jakies TA, Ng czy zakupić blackd ;> ale ja juz nie boce ;< 70 ek deleted
Witam all !
Da rade zrobić macro na 7.4 tibie czy nie :) ??
Nergal:
Oczywiście, że się da. Można tym sposobem zrobić macro pod prawie każdy game, tylko musisz mieć odpowiednie adresy i trochę rozumu.
Zna ktoś rozwiązanie na mój problem? Jeszcze raz: czy pakiety do say'a są inne w rożnych wersjach klienta??
Lea~