Bot de Pesca World of Warcraft
En World of Warcraft, la pesca es una tarea que requiere mucho tiempo, es simple y, por lo tanto, se presta muy bien a la automatización. Hay muchos bots de pesca por ahí. Este artículo describe el bot que escribí por diversión y los problemas que resolví para que funcione.Github: https://github.com/julianperrott/FishingFun
¿Por qué pescado?
La pesca es una forma de pescar que se puede usar para cocinar comida, que se usa para curar o aumentar las estadísticas de tu personaje. También puedes obtener logros a través de la pesca.
La mecánica de la pesca implica lanzar el sedal en aguas terrestres o marinas y luego esperar hasta 30 segundos para morder, luego hacer clic para saquear en un par de segundos para atrapar el pez.
Video del bot en acción
Haciéndolo funcionar
1. Descarga este repositorio
Coloque el contenido del repositorio en una carpeta. por ejemplo, "C: \ FishingFun". Voy a referirme a esta carpeta a partir de ahora, así que simplemente sustituya la ruta de su propia carpeta.2. Instale Visual Studio
Deberá instalar Visual Studio, consígalo aquí: https://visualstudio.microsoft.com/vs/ use Community 2019 o posterior.- En "Escritorio y móvil": seleccione Desarrollo de escritorio .Net.
- Aquí hay un video que muestra la instalación (tenga en cuenta que no necesita Python)
3. Cree y ejecute el bot
Haga doble clic en el archivo de la solución para abrirlo: "C: \ FishingFun \ source \ FishingFun.sln", o ábralo desde Visual Studio.Una vez cargado, haga clic en el botón Inicio, esto debería construir y ejecutar el proyecto FishingFun.UI. Alternativamente, use F5 o el menú 'Depurar -> Iniciar depuración'.
Una vez que se haya construido, puede ejecutarlo sin Visual Studio navegando con el Explorador de archivos a la carpeta C: \ FishingFun \ Source \ bin \ Debug y ejecutarlo haciendo doble clic en Chrome.exe
Si desea ejecutar una versión sin una GUI, debe configurar el proyecto de inicio en Visual Studio en FishingFun.Console haciendo clic derecho en el proyecto en el Explorador de soluciones y seleccionando 'Establecer como proyecto de inicio', luego compile (F6). Ahora debería tener C: \ FishingFun \ Source \ bin \ Debug \ powershell.exe que puede ejecutar fuera de Visual Studio.
4. Instrucciones de ejecución del bot
- Habilitar 'Autoloot' (Esc, Opciones de interfaz, Controles, Verificar Autoloot)
- Desactivar Hacer clic para mover (Esc, Opciones de interfaz, Ratón, Desmarcar Hacer clic para mover)
- Asegúrate de que los botines de 'Clic derecho'.
- Coloque el botón de pesca de lanzamiento en la posición 4 de su barra de acción. Es decir, cuando se hace clic en 4, se lanzará la pesca.
- Acércate completamente para que tu personaje no sea visible.
- Asegúrese de que el flotador de pesca esté en el medio de la pantalla.
- Pesque lo más cerca posible del nivel del suelo, no fuera de los muelles u otros lugares altos.
- Requiere que WOW se ejecute en pantalla completa (sin ventana) en la pantalla principal. Necesita que la pantalla de sorpresa esté en la parte superior. Por lo tanto, probablemente no funcionará bien si solo tiene una pantalla. Si necesita una ventana, le sugiero que mire el código en esta bifurcación: https://github.com/petrvecera/FishingFun
- A veces, es posible que deba ajustar los parámetros de color para el buscador de bobber, como durante la noche o si hay mucho rojo en el paisaje.
Pesca en lava
Para obtener el logro "Pescador de amonitas de fuego", debes pescar en Lava. La lava es roja, por lo que es imposible ver la pluma roja, por lo que debe cambiar a la pluma azul. En la página principal, haga clic en el botón de configuración naranja, luego cambie el combo 'Watch Feather' de Rojo a 'Azul'Use una macro como esta en su clave de pesca:
Codigo:
Necesitas,
Acceder
o
Registrarse para ver el contenido.

Todo sobre el bot
Para pescar, ¿qué tendría que hacer un bot?
El bot debe pasar por los siguientes estados:- Fundición.
- Observando el bobber por un bocado. Si ve una mordedura, pase a Saqueo. Si no se ve el corcho durante unos segundos o transcurren 30 segundos, vuelva al estado de lanzamiento.
- Saqueo.
¿Qué problemas hay que resolver?
Los principales problemas son:- Encontrar las coordenadas del corcho en la pantalla.
- Luego, determina cuándo ha tenido lugar una mordedura.
Problema 1: Encontrar el corcho
El bobber es pequeño en la pantalla, necesitamos que sea más fácil de encontrar.
Cambiar la vista del personaje a zoom completo significa que el bobber es más grande y hay menos desorden en la pantalla.
Para simplificar aún más la búsqueda del corcho, debe aparecer en la mitad central de la pantalla tal como lo ve el personaje. Indicado por el área roja en la imagen de abajo.

El corcho es bastante fácil de detectar ahora, pero una computadora necesita una forma sencilla de determinar dónde está el corcho. Podríamos entrenar a una IA para encontrar el flotador, pero parece una solución demasiado complicada. ¿Quizás podamos usar el color rojo del corcho para localizarlo?
Si encontramos todos los píxeles rojos en la mitad central de la pantalla, luego encontramos el píxel con la mayoría de los píxeles rojos a su alrededor, ¡entonces deberíamos tener nuestra ubicación de bobber!
Podemos obtener un mapa de bits de la pantalla como se muestra a continuación:
Codigo:
Necesitas,
Acceder
o
Registrarse para ver el contenido.
Problema 2: Determinar cuándo se ha producido un mordisco.
Cuando se produce un mordisco, el corcho se mueve hacia abajo unos pocos píxeles. Si rastreamos la posición del corcho mientras pescamos, podemos ver un cambio obvio en la posición Y cuando ocurre la picadura.Determinar la ubicación de la pluma roja en el corcho
Debido a las diferentes horas del día y los entornos en el juego, la pluma bobber roja cambia su tono de rojo, también tiene una gama de tonos rojos dentro de ella. Necesitamos clasificar todos estos colores como rojos.
Los píxeles que estamos buscando tendrán un valor RGB con un valor rojo alto en comparación con el verde y el azul. En el cubo de colores de abajo, buscamos los colores en la parte posterior izquierda.

Este es el algoritmo que he creado para determinar el enrojecimiento:
- El rojo es mayor que el azul y el verde en un porcentaje elegido, por ejemplo, 200%.
- El azul y el verde están razonablemente juntos.
Codigo:
Necesitas,
Acceder
o
Registrarse para ver el contenido.
En la animación a continuación, que muestra el cambio de valor de rojo de 0 a 255 dentro de un cuadrado 2D de todos los valores posibles de azul y verde, el algoritmo hace coincidir los colores rojos dentro del límite blanco. Estos son todos los colores posibles que considera que están en la pluma roja.

La interfaz de usuario
La interfaz de usuario de WPF que creé permite al usuario ver lo que ve el bot y cómo le está yendo para encontrar el bobber. Esto ayuda a determinar qué tan bien está funcionando.Pantalla principal
A la izquierda de la interfaz de usuario hay una captura de pantalla que muestra la parte de la pantalla que se está monitoreando, la posición del bobber se indica mediante una rectángulo, los píxeles rojos reconocidos se muestran en color rojo puro.
En la parte superior derecha, la amplitud del corcho se muestra en un gráfico animado ( lvcharts.net ). Se mueve hacia arriba y hacia abajo algunos píxeles durante la pesca. Cuando ocurre la picadura, cae 7 o más píxeles.

Pantalla de configuración de color
Una segunda pantalla de configuración permite investigar diferentes configuraciones para la detección de píxeles 'rojos'.
Versión de la consola
También está disponible una versión de consola si no se necesita la interfaz de usuario. Expone el registro para que el usuario reciba algunos comentarios sobre el rendimiento del bot.