Simples clicker bot Java no exemplo do jogo World of Warcraft 3.3.5a

Esse mecanismo foi testado exclusivamente em um servidor pirata, portanto, seu desempenho em servidores oficiais não é garantido.

Todas as tentativas de uso - exclusivamente por seu próprio risco e risco.

A implementação é para áreas de trabalho do Windows.

Portanto, crie um bot simples, cujo objetivo será:

1) entre no jogo;
2) faça login na sua conta;
3) entrar no mundo do jogo;
4) abra a caixa postal;
5) gerar e enviar uma carta para outro jogador;

1) Entre no jogo


Para entrar no jogo, precisamos ter um cliente de jogo baixado anteriormente.
Em nosso trabalho, usamos o arquivo exe Wow.exe. Nós escrevemos seu caminho da seguinte maneira:

String WowPatch="D:/Wow/Wow.exe"; 

Aqui nós gravamos o caminho para o executável Wow. Esse caminho provavelmente será diferente para você.

O caminho é certamente bom, mas isso não é suficiente para iniciar o jogo.

Para executar, precisamos deste código:

 String WowPatch="D:/Wow/Wow.exe"; File file =new File(WowPatch); try { Desktop.getDesktop().open(file); } catch (IOException e1) { e1.printStackTrace(); } 

Como resultado da aplicação do código acima, o WoW deve iniciar no seu computador.

Lançamos o WoW e imediatamente enfrentamos um novo problema - Como fazer o bot inserir automaticamente o login e a senha da conta?

2) Faça login na sua conta


Agora? precisamos escrever mais duas variáveis ​​de texto.

 String Login="YourLogin"; String Password="YourPassword"; 

Aqui, anotamos o login e a senha da conta em que vamos entrar. No entanto, se usarmos imediatamente após essa parte do código em que entramos no jogo - haverá problemas. E tudo porque nosso bot executará o código, independentemente de o Warcraft ter sido inicializado, e o jogo precisar de algum tempo para carregar, se você estiver trabalhando em um PC fraco, levará ainda mais tempo.

Para que o login e a senha não sejam "inseridos" com antecedência, faremos uma pausa em nosso código:

 String WowPatch="D:/Wow/Wow.exe"; File file =new File(WowPatch); try { Desktop.getDesktop().open(file); } catch (IOException e1) { e1.printStackTrace(); } Thread.sleep(20000); String Login="YourLogin"; String Password="YourPassword"; 

Aqui, pausamos por 20 segundos. Eu tenho tempo mais que suficiente para o WoW inicializar. Vale ressaltar que imediatamente após o carregamento do WoW já temos o campo de login padrão selecionado. Tudo o que precisamos fazer agora é copiar o login da nossa variável para a área de transferência e colá-lo no campo de login:

 Robot rb= new Robot(); StringSelection stringSelection = new StringSelection(Login); Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd.setContents(stringSelection, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); 

Aqui, copiamos nosso Login para a área de transferência e simulamos pressionar Ctrl + V, colando o login na janela correspondente.

Agora precisamos mudar para a caixa de senha. Existem duas maneiras de fazer isso:

- Podemos simular o movimento do mouse e clicar na segunda janela.
- Podemos mudar simulando pressionar o botão Tab.

Usaremos a segunda opção, pois é mais simples:

 rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB); 

Em seguida, copie nossa senha para a área de transferência e cole-a:

 StringSelection stringSelection2 = new StringSelection(Password); Clipboard clpbrd2 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd2.setContents(stringSelection2, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); 

Viva !!! Entramos no menu de seleção de personagens. Agora você precisa entrar no mundo do jogo.

3) Entre no mundo do jogo


Agora vemos o menu de seleção de personagens na tela. Provavelmente não vamos resolver o problema e passar para o primeiro personagem que aparecer.

Para entrar, podemos usar duas opções diferentes:

- Mova o cursor do mouse para o botão "Login" e simule um clique;
- Simular pressionando o botão Enter;

A segunda opção é mais simples, mas se adicionarmos o clique imediatamente após a função de entrada, haverá problemas novamente, por isso faremos uma pausa novamente, permitindo que o jogo vá com calma para o menu de seleção de personagens:

 Thread.sleep(5000); rb.keyPress(KeyEvent.VK_ENTER); rb.keyRelease(KeyEvent.VK_ENTER); 

Eu tenho 5 segundos. faltando com a cabeça.

Oh milagre, o carregamento do mundo do jogo começou!

4) Abra a caixa de correio


Aqui, novamente, temos que fazer uma pausa para que o WoW tenha tempo de carregar o mundo do jogo. Também é aconselhável pré-preparar o personagem:

- Maximize a câmera;
- Torne-se uma testa em sua caixa de entrada;

Para abrir uma caixa de correio, você precisa gritá-la com o botão direito do mouse. Para fazer isso, moveremos o cursor do mouse e simularemos um clique:

 Thread.sleep(30000); rb.mouseMove(700, 350); rb.mousePress(InputEvent.BUTTON3_MASK); rb.mouseRelease(InputEvent.BUTTON3_MASK); 

Lembre-se de que a posição do mouse indicada por mim foi projetada para uma resolução de tela de 1366x768.
BOTÃO3 é exatamente o botão direito do mouse.

Abrimos a caixa de correio, agora vá para a guia "Enviar":

 rb.mouseMove(200, 550); rb.mousePress(InputEvent.BUTTON1_MASK); rb.mouseRelease(InputEvent.BUTTON1_MASK); 

Aqui não apenas imitamos o movimento do mouse na tela, mas também clicamos com o botão esquerdo.

Agora é a hora de preencher e enviar um email!

5) Forme e envie uma carta para outro jogador


Agora precisamos preencher os pontos:

- nome do destinatário;
- Assunto da mensagem;
- o texto da mensagem;

 String Name="Name"; String Theme="Theme"; String Text="Text"; 

Primeiro, coloque na área de transferência o nome do personagem e cole-o na coluna apropriada:

 StringSelection stringSelection3 = new StringSelection(Name); Clipboard clpbrd3 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd3.setContents(stringSelection3, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB); 

Inserimos o nome do destinatário e mudamos para outra coluna. Agora você precisa inserir o assunto da mensagem:

 StringSelection stringSelection4 = new StringSelection(Theme); Clipboard clpbrd4 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd4.setContents(stringSelection4, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB); 

Inserimos o assunto da mensagem e passamos para a terceira coluna - texto da mensagem:

 StringSelection stringSelection5 = new StringSelection(Text); Clipboard clpbrd5 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd5.setContents(stringSelection5, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); 

Inserir texto da mensagem. Agora tudo o que resta é clicar no botão "Enviar":

 rb.mouseMove(200, 520); rb.mousePress(InputEvent.BUTTON1_MASK); rb.mouseRelease(InputEvent.BUTTON1_MASK); 

Mova o cursor e clique com o botão esquerdo em "Enviar".

Só isso. Espero que tenha sido útil para pelo menos alguém. Eu realmente espero que este artigo não tenha sido aceito como um guia de ação e não leve a um aumento na quantidade de spam no jogo.

Source: https://habr.com/ru/post/pt434218/


All Articles