Ir para conteúdo

Featured Replies

  • Respostas 69
  • Visualizações 16k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

Postado

Você mudou os endereços de memoria? '-'

Mudei lek olha como ta o programa vo posta ai


unit Unit1;


interface


uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ExtCtrls, PsAPI;


type

  TForm1 = class(TForm)

	GroupBox1: TGroupBox;

	StartButton: TButton;

	Spell: TLabeledEdit;

	Mana: TLabeledEdit;

	CheckBox1: TCheckBox;

	CheckBox2: TCheckBox;

	ComboBox1: TComboBox;

	Label1: TLabel;

	Label2: TLabel;

	CastSpell: TTimer;

	Endereco: TTimer;

	Kick: TTimer;

	Food: TTimer;

	vida: TLabel;

	procedure CastSpellTimer(Sender: TObject);

	procedure KickTimer(Sender: TObject);

	procedure FoodTimer(Sender: TObject);

	procedure StartButtonClick(Sender: TObject);

	procedure EnderecoTimer(Sender: TObject);

  private

	{ Private declarations }

  public

	{ Public declarations }

  end;


var

  Form1: TForm1;

  PH : THandle;

  PID, ThID: DWORD;

  H : THandle;

  Offset: Integer;

  TibiaH: THandle;


implementation


{$R *.dfm}

//Função para escrever na janela do Tibia

function say(mensagem: string):string;

var

  h: HWND;

  letra: Integer;

  B: Byte;

begin

  h := FindWindow(nil, 'tibia');

  for letra := 1 to Length(mensagem) do

  begin

	B := Byte(mensagem[letra]);

	SendMessage(h, WM_CHAR, B, 0);

  end;

	SendMessage(h, WM_CHAR, 13, 0);

  end;


//Função para ler endereço de memoria do Tibia

  function LerInt(Address: Integer): Integer;

var

  value:integer;

  ler :dword;

begin

H := FindWindow(nil, 'Tibia');

ThID := GetWindowThreadProcessId(H, @PID);

PH := OpenProcess(PROCESS_ALL_ACCESS,FALSE,PID);

ReadProcessMemory(PH, Ptr(Address), @Value, 4, Ler);

Result:=value;


end;


//Função para aperta uma determinada tecla na janela do Tibia

function hotkey(x :string): string;

	 var

  h: HWND;

  i : integer;

begin

if x ='F1' then

  i := 112

  else if x ='F2' then

  i := 113

  else if x ='F3' then

  i := 114

  else if x ='F4' then

  i := 115

  else if x ='F5' then

  i := 116

  else if x ='F6' then

  i := 117

  else if x ='F7' then

  i := 118

  else if x ='F8' then

  i := 119

  else if x ='F9' then

  i := 120

  else if x ='F10' then

  i := 121

  else if x ='F11' then

  i := 122

  else if x ='F12' then

  i := 123;


  h := FindWindow(nil, 'Tibia');  // acha a janela do tibia

  SendMessage(h, WM_KEYdown, i, 0);   //pressiona a tecla

  SendMessage(h, WM_KEYUP, i, 0);  //solta tecla

  end;


  function GetTibiaBaseAddress(ProcessID: Cardinal): Pointer;

var

  Modules: Array of HMODULE;

  cbNeeded, i: Cardinal;

  ModuleInfo: TModuleInfo;

  ModuleName: Array [0 .. MAX_PATH] of Char;

  PHandle: THandle;

begin

  Result := nil;

  SetLength(Modules, 1024);

  PHandle := OpenProcess(PROCESS_QUERY_INFORMATION + PROCESS_VM_READ, FALSE,

	ProcessID);

  if (PHandle <> 0) then

	begin

		  EnumProcessModules(PHandle, @Modules[0], 1024 * SizeOf(HMODULE),

			cbNeeded);

		  SetLength(Modules, cbNeeded div SizeOf(HMODULE));

		  for i := 0 to Length(Modules) - 1 do

			begin

				  GetModuleBaseName(PHandle, Modules[i], ModuleName, SizeOf(ModuleName)

					);

				  if AnsiCompareText('Tibia.exe', ModuleName) = 0 then

					begin

						  GetModuleInformation(PHandle, Modules[i], @ModuleInfo, SizeOf

								  (ModuleInfo));

						  Result := ModuleInfo.lpBaseOfDll;

						  CloseHandle(PHandle);

						  Exit;

					end;

			end;

	end;

end;


function ReadInteger(Address: Integer): Integer;

var

  value: Integer;

  ler: Dword;

begin

  Thid := GetWindowThreadProcessId(TibiaH, @PID);

  PH := OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);

  ReadProcessMemory(PH, Ptr(Address), @value, 4, ler);

  Result := value;

end;


function ProcessID: Integer;

begin

  TibiaH := FindWindow('Tibia', nil);

  Thid := GetWindowThreadProcessId(TibiaH, @PID);

  PH := OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);

  Result := PID;

end;


function PlayerMana: Integer;

const

  adrXOR = $7ADFD0;

  adrMyHP = $943000;

  adrMyMana = $7AE024;

var

  Mana: Integer;

  uXor: Integer;

begin

  Offset := Integer(GetTibiaBaseAddress(ProcessID));

  Mana := ReadInteger((adrMyMana + Offset) - $400000);

  uXor := ReadInteger((adrXOR + Offset) - $400000);

  Result := Mana xor uXor;

end;


///////////////////////////   FIM FUNÇÃO



procedure TForm1.CastSpellTimer(Sender: TObject);

begin

if StrToInt(Label2.Caption) > (StrToInt(Mana.Text)) then

say(Spell.text) ;

// Se a mana do player for maior que a mana que foi digitada no component mana, entao vai falar a magia

end;


procedure TForm1.EnderecoTimer(Sender: TObject);

begin

Label2.caption := IntToStr(Lerint($0081CE5C));

// Vai ler o endereço da mana do personagem e transforma em numero para o label2

vida.caption := 'Vida: '+IntToStr(Lerint($0063FD5C));

// address de vida do tibia 8.7 (se meu address não estiver errado ;P)

end;


procedure TForm1.FoodTimer(Sender: TObject);

begin

hotkey(Combobox1.Text)

// Pressiona oque tiver no Texto do Combobox

end;


procedure TForm1.KickTimer(Sender: TObject);

Var

TibiaHandle : THandle;

begin

TibiaHandle:=FindWindow(nil,'Tibia'); // Pega a janela do Tibia

SendMessage(TibiaHandle,WM_KEYDOWN,VK_CONTROL,1); // Pressiona o Ctrl

SendMessage(TibiaHandle,WM_KEYDOWN,VK_UP,1); // Pressiona a tecla para cima

SendMessage(TibiaHandle,WM_KEYUP,VK_UP,1); // Libera a tecla

SendMessage(TibiaHandle,WM_KEYDOWN,VK_DOWN,1); // Pressiona a tecla para baixo

SendMessage(TibiaHandle,WM_KEYUP,VK_DOWN,1); // Libera a tecla

SendMessage(TibiaHandle,WM_KEYUP,VK_CONTROL,1); // Libera o Ctrl

end;


procedure TForm1.StartButtonClick(Sender: TObject);

begin

CastSpell.Enabled := not(CastSpell.Enabled);

Food.Enabled := not(Food.Enabled);

Kick.Enabled := not(Kick.Enabled);


if Checkbox1.checked then

Kick.Enabled := true

else

Kick.Enabled := false;


if Checkbox2.checked then

Food.Enabled := true

else

Food.Enabled := false;


if (Spell.Text <> '') and (Mana.Text <> '') then

CastSpell.Enabled := true

else

CastSpell.Enabled := false;


if (Kick.Enabled) or (Food.Enabled) or (CastSpell.Enabled) then

StartButton.Caption := 'Stop'

else

StartButton.Caption := 'Start';

end;


end.

Editado por cleytonk (veja o histórico de edições)

Postado
  • Autor

Troque a sua função de achar o ProcessID por essa:

function ProcessID: Integer;

begin

  TibiaH := FindWindow('TibiaClient', nil);

  Thid := GetWindowThreadProcessId(TibiaH, @PID);

  PH := OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);

  Result := PID;

end;

Postado

Troque a sua função de achar o ProcessID por essa:

function ProcessID: Integer;

begin

  TibiaH := FindWindow('TibiaClient', nil);

  Thid := GetWindowThreadProcessId(TibiaH, @PID);

  PH := OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);

  Result := PID;

end;
essa aqui?

  function LerInt(Address: Integer): Integer;

var

  value:integer;

  ler :dword;

begin

H := FindWindow(nil, 'Tibia');

ThID := GetWindowThreadProcessId(H, @PID);

PH := OpenProcess(PROCESS_ALL_ACCESS,FALSE,PID);

ReadProcessMemory(PH, Ptr(Address), @Value, 4, Ler);

Result:=value;


end;

achei mas continua dizendo que ta com 0 de mana e 0 de vida

Editado por cleytonk (veja o histórico de edições)

Postado
  • Autor

Troque:

const

  adrXOR = $7B2030;

  adrMyHP = $947000;

  adrMyMana = $7B2084;
function ReadInteger(Address: Integer): Integer;

var

  value: Integer;

  ler: DWORD;

begin

  H := FindWindow('TibiaClient', nil);

  ThID := GetWindowThreadProcessId(H, pid);

  PH := OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);

  ReadProcessMemory(PH, Ptr(Address), @value, 4, ler);

  Result := value;

end;

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo