Simple Java clicker bot en el ejemplo del juego World of Warcraft 3.3.5a

Este mecanismo se probó exclusivamente en un servidor pirateado, por lo tanto, su rendimiento en servidores oficiales no está garantizado.

Todos los intentos de uso son bajo su propio riesgo.

La implementación es para escritorios de Windows.

Entonces, crea un bot simple, cuyo propósito será:

1) entrar al juego;
2) inicie sesión en su cuenta;
3) entrar en el mundo del juego;
4) abre el buzón;
5) generar y enviar una carta a otro jugador;

1) Entra al juego


Para ingresar al juego, necesitamos tener un cliente de juego previamente descargado.
En nuestro trabajo, utilizamos el archivo exe Wow.exe. Escribimos su camino de la siguiente manera:

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

Aquí registramos la ruta al ejecutable Wow. Este camino probablemente será diferente para ti.

El camino es ciertamente bueno, pero esto no es suficiente para iniciar el juego.

Para ejecutar, necesitamos este 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 de aplicar el código anterior, WoW debería iniciarse en su computadora.

Lanzamos WoW e inmediatamente enfrentamos un nuevo problema: ¿cómo hacer que el bot ingrese automáticamente el nombre de usuario y la contraseña de la cuenta?

2) Inicie sesión en su cuenta


Ahora? Necesitamos escribir dos variables de texto más.

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

Aquí anotamos el Nombre de usuario y la Contraseña de la cuenta que vamos a ingresar. Sin embargo, si usamos inmediatamente después de esa parte del código donde ingresamos al juego, habrá problemas. Y todo porque nuestro bot ejecutará el código independientemente de si Warcraft se inició, y el juego necesita algo de tiempo para cargarse, si estás trabajando en una PC débil, tomará aún más tiempo.

Para que el nombre de usuario y la contraseña no se "ingresen" con anticipación, haremos una pausa en nuestro 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"; 

Aquí nos detuvimos por 20 segundos. Tengo tiempo más que suficiente para que WoW arranque. Vale la pena señalar que inmediatamente después de cargar WoW ya tenemos seleccionado el campo de inicio de sesión predeterminado. Todo lo que tenemos que hacer ahora es copiar el inicio de sesión de nuestra variable en el portapapeles y pegarlo en el campo de inicio de sesión:

 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); 

Aquí copiamos nuestro inicio de sesión en el portapapeles y simulamos presionar Ctrl + V, pegamos el inicio de sesión en la ventana correspondiente.

Ahora necesitamos cambiar al cuadro de contraseña. Hay dos formas de hacer esto:

- Podemos simular el movimiento del mouse y hacer clic en la segunda ventana.
- Podemos cambiar simulando presionando el botón Tabulador.

Utilizaremos la segunda opción, ya que es más simple:

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

A continuación, copie nuestra contraseña en el portapapeles y péguela:

 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); 

¡Hurra! Entramos en el menú de selección de personajes. Ahora necesitas ingresar al mundo del juego.

3) Entra en el mundo del juego


Ahora vemos el menú de selección de personajes en la pantalla. Probablemente no resolvamos realmente e iremos al primer personaje que aparece.

Para ingresar, podemos usar dos opciones diferentes:

- Mueva el cursor del mouse al botón "Iniciar sesión" y simule un clic;
- Simular presionando el botón Enter;

La segunda opción es más simple, pero si agregamos el clic inmediatamente después de la función de entrada, habrá problemas nuevamente, por lo tanto, haremos una pausa nuevamente, permitiendo que el juego vaya con calma al menú de selección de personajes:

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

Tengo 5 seg. desaparecido con una cabeza.

¡Oh milagro, la carga del mundo del juego ha comenzado!

4) Abra el buzón


Aquí nuevamente tenemos que hacer una pausa para que WoW tenga tiempo de cargar el mundo del juego. También es recomendable preparar previamente el personaje:

- Maximiza la cámara;
- Conviértete en una frente en tu bandeja de entrada;

Para abrir un buzón, debe gritarlo con el botón derecho del mouse. Para hacer esto, moveremos el cursor del mouse y simularemos un clic:

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

Tenga en cuenta que la posición del mouse indicada por mí está diseñada para una resolución de pantalla de 1366x768.
BUTTON3 es exactamente el botón derecho del mouse.

Abrimos el buzón, ahora ve a la pestaña "Enviar":

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

Aquí no solo imitamos el movimiento del mouse en la pantalla, sino que también hicimos clic con el botón izquierdo.

¡Ahora es el momento de completar y enviar un correo electrónico!

5) Forma y envía una carta a otro jugador


Ahora necesitamos completar los puntos:

- Nombre del destinatario;
- Asunto del mensaje;
- El texto del mensaje;

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

Primero, coloque en el portapapeles, el nombre del personaje y péguelo en la columna correspondiente:

 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); 

Insertamos el nombre del destinatario y cambiamos a otra columna. Ahora necesita insertar el asunto del mensaje:

 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); 

Insertamos el asunto del mensaje y pasamos a la tercera columna: texto del mensaje:

 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); 

Insertar mensaje de texto. Ahora todo lo que queda es hacer clic en el botón "Enviar":

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

Mueva el cursor y haga clic izquierdo en "Enviar".

Eso es todo Espero que haya sido útil al menos para alguien. También espero que este artículo no haya sido aceptado como una guía de acción y no conduzca a un aumento en la cantidad de spam en el juego.

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


All Articles