Ir para conteúdo

Featured Replies

Postado

Falaaaa galeraa...

Dando continuidade aos meus tutoriais de programação SEM TIBIAAPI, vou postar agora mais uma função que pode ser util a vocês x.x

Ela trabalha de uma forma simples, só ve qual o texto que foi inserido na função, e trabalha a partir disso (se digitei F1 ele vai usar F1 na janela do tibia)...

Um exemplo de utilização é pra healer... por exemplo (em pseucodes ):

se player.vida <= vida.paraHealar então

Hotkey('F1');

Vamos la:

A função é a seguinte:

 

function hotkey(x :string): string;

     var

  h: HWND;

  i : integer;

begin


  if x ='F1' then

  i := 112;

   if x ='F2' then

  i := 113;

   if x ='F3' then

  i := 114;

   if x ='F4' then

  i := 115;

   if x ='F5' then

  i := 116;

   if x ='F6' then

  i := 117;

   if x ='F7' then

  i := 118;

   if x ='F8' then

  i := 119;

   if x ='F9' then

  i := 120;

   if x ='F10' then

  i := 121;

   if x ='F11' then

  i := 122;

   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;


Obs: coloque a função abaixo do Implementation, e você pode usa-la no decorrer do programa. Analisando a função ( como sempre x.X ):
function hotkey(x :string): string;
Ou seja, vamos usar ela assim:
hotkey(tecla);
Lembrando que o code é bem simples, e só funciona com hotkeys do F1 ao F12 (é só ver o code...mas é fácil adaptar para usar ctrl + F's ) Você pode usar também a função com um edit ou outra coisa do tipo (que seja string)... ou seja:
hotkey(edit1.text);
Se no edit1.text tiver escrito F1, ele pressiona essa hotkey no tibia. =] Um code simples, mas, espero que seja util, e que dê ideias de como vocês podem fazer outros sistemas "indetectáveis" pro tibia. flw, abraços galera #Edit Seguindo a sugestão do Flamer para um menor consumo de processamento, fiz uma versão com else if... a função não altera muito (acredito que só seu consumo de processador), ou seja, a utilização fica da mesma forma, se alguém quiser testar a nova função para ver se há mudanças... é a seguinte (só troque a função por essa) :
 


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;


Flw², Abraços²

Postado

Os valores de WM_KEYDOWN / WM_KEYUP (...) já são definidos por alguma biblioteca no Delphi? Se não é necessário informar os valores.

O consumo de processamento pode ficar alto por vários timers com tantos "IFs" para a mesma expressão. Seria bom colocar um "CASE" ou "ELSE / ELSEIF" (experiência própria)

Postado
  • Autor

@EdsonJunior

Vlw pelo comentario ae parceiro xD

@Flamer

Os valores de WM_KEYDOWN / WM_KEYUP (...) já são definidos por alguma biblioteca no Delphi? Se não é necessário informar os valores.

Sim, já são definidos =X...

Sempre que eu escrevo um tutorial, sigo ele a risca num projeto em branco, pra ter certeza que se uma pessoa fizer o mesmo, chegará ao mesmo resultado. Ou seja, a função funcionará normalmente seguindo as minhas explicações, sem ter que definir mais nada x.X

O consumo de processamento pode ficar alto por vários timers com tantos "IFs" para a mesma expressão. Seria bom colocar um "CASE" ou "ELSE / ELSEIF" (experiência própria)

to ligado parceiro o0

É que fiz um code de base, ae meu bot usa pouco a função de hotkey, entao acabou ficando esse mesmo x.X

Mas, vo postar uma versão com else if... vo fazer aqui e ja edito o topico...

vlw pelo comentario aew

flw

  • 6 months later...
Postado
procedure TfrmPrincipal.hotkey(hot: integer);

begin



ApplyHandle:=FindWindow(nil,'Tibia');//Pega o handle da janela que tem o titulo Tibia


case hot of

   1  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F1,1);

   2  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F2,1);

   3  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F3,1);

   4  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F4,1);

   5  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F5,1);

   6  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F6,1);

   7  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F7,1);

   8  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F8,1);

   9  : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F9,1);

   10 : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F10,1);

   11 : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F11,1);

   12 : SendMessage(ApplyHandle,WM_KEYDOWN,VK_F12,1);

   13 : SendMessage(ApplyHandle,WM_KEYDOWN,VK_RETURN,1);//Uso tambem o enter para Relogar no server save, se for configurado o tempo correto ele reloga o char e continua runando


end;

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

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.9k

Informação Importante

Confirmação de Termo