Postado Janeiro 26, 2011 14 anos 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² Tutoriais de Programação com Delphi sem TibiaAPI: ReadProcessMemory - Lendo Valores de memoria sem TibiaAPI Função de Hotkey (Simula pressionamento de hotkeys no tibia) Função Say para o Tibia (Sem TibiaAPI)
Postado Janeiro 26, 2011 14 anos 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 Janeiro 26, 2011 14 anos 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 Tutoriais de Programação com Delphi sem TibiaAPI: ReadProcessMemory - Lendo Valores de memoria sem TibiaAPI Função de Hotkey (Simula pressionamento de hotkeys no tibia) Função Say para o Tibia (Sem TibiaAPI)
Postado Agosto 23, 2011 13 anos 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 Agosto 23, 2011 13 anos 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.