Básicamente lo que quiero es que cuando el enemigo se ponga en la mira (que siempre está justo en el centro de la pantalla) se produzca un disparo, para ello necesito que el programa haga una "captura" de una pequeña región en el centro de la pantalla y lo compare con otras capturas que hace constantemente para ver si se ha producido o no un cambio.
Además, utilizo una biblioteca externa para lanzar el evento (arrancar el bot para que se ponga a comparar), la comparación la hago pixel a pixel con una función que encontré en internet.
El problema es que creo que no se está centrando correctamente, ya que no me detecta el cambio en el centro de la pantalla pero si en otras areas.
Les dejo el código:
Código
import java.awt.AWTException; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.util.logging.Level; import java.util.logging.Logger; import org.jnativehook.GlobalScreen; import org.jnativehook.NativeHookException; import org.jnativehook.keyboard.NativeKeyEvent; import org.jnativehook.keyboard.NativeKeyListener; public class AutoBot implements NativeKeyListener { // Get the logger for "org.jnativehook" and set the level to off. Logger logger = Logger.getLogger(GlobalScreen.class.getPackage().getName()); logger.setLevel(Level.OFF); try { GlobalScreen.registerNativeHook(); } catch (NativeHookException ex) { } GlobalScreen.addNativeKeyListener(new AutoBot()); } int margen=0; if (img1.getWidth() == img2.getWidth() && img1.getHeight() == img2.getHeight()) { for (int x = 0; x < img1.getWidth(); x++) { for (int y = 0; y < img1.getHeight(); y++) { if (img1.getRGB(x, y) != img2.getRGB(x, y)) return false; } } } else { return false; } return true; } double altura = screenSize.getHeight()/2; double ancho = screenSize.getWidth()/2; area.setBounds((int)altura-20, (int)ancho-20, 20, 20); boolean noDisparar= false; while(!noDisparar) { area2.setBounds((int)altura-20, (int)ancho-20, 20, 20); if(!bufferedImagesEqual(bufferedImage, bufferedImage2)) { // robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); // robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); noDisparar = true; } } } @Override public void nativeKeyPressed(NativeKeyEvent e) { } @Override public void nativeKeyReleased(NativeKeyEvent e) { if (tecla.equals("Barra")) { try { autoBot(); // TODO Auto-generated catch block e1.printStackTrace(); } } } @Override public void nativeKeyTyped(NativeKeyEvent e) { } }
Gracias, un saludo.