Moinsen, um besser im programmieren zu werden suche ich mir immer wieder eigene kleine Projekte aus die mich interessieren, und da mich bots, scripts,cheats,hacks etc. immer sehr interessiert haben dachte ich mir ich fang mal mit einer ganz kleinen Version von so etwas an dafür habe ich mir die F2P Version von Moorhuhn runtergeladen. Mein Ansatz ist hier, dass ich eine Aimbot Klasse erstellt habe, diese hat die Methode findDuck(), die mit zwei verschachtelten for-loops jede x und y Koordinate des BufferedImage screenshot nach der gewünschten Pixelfarbe des Huhns sucht und den Punkt dann zurückgibt. dann gibt es noch die Methode aimAndShoot() und bewegt die Maus zum Punkt und drückt die linke Maustaste zum schießen.
in der Main-Class versuche ich dann den Aimbot mit F1 zu starten und mit F2 zu beenden. Leider passiert bei der ganzen Geschichte so gar nichts es ist kompilierbar aber es regt sich nichts
viel musste ich mir durch googeln aneignen darum bin ich mir auch nicht sicher ob ich überhaupt die richtigen libraries verwende.. und ich merke gerade, dass ich sowohl in der Aimbot Klasse als auch in der Main Klasse einfügen wollte dass ich mit f1 starten und mit f2 stoppen kann
Mir gehts hauptsächlich darum dass mir jemand mit Erfahrung sagt ob die Vorgehensweise so okay ist und woran es scheitert
in der Main-Class versuche ich dann den Aimbot mit F1 zu starten und mit F2 zu beenden. Leider passiert bei der ganzen Geschichte so gar nichts es ist kompilierbar aber es regt sich nichts
Java:
import java.awt.AWTException;
import java.awt.GraphicsEnvironment;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
public class Aimbot implements KeyListener{
Robot robot;
Rectangle screenBounds;
Point duckLocation;
boolean running;
public Aimbot() {
try {
robot = new Robot();
} catch (AWTException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Bounds des primärbildschirms
screenBounds = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice()
.getDefaultConfiguration().getBounds();
}
private Point findDuck(BufferedImage screenshot) {
int redThreshold = 147;
int greenThreshold = 97;
int blueThreshold = 32;
Point duckLocation = new Point(-1, -1);
while (duckLocation.x == -1 && duckLocation.y == -1) {
// Pixel im Screenshot analysieren um die Position der Ente zu finden
for (int y = 0; y < screenshot.getHeight(); y++) {
for (int x = 0; x < screenshot.getWidth(); x++) {
int pixel = screenshot.getRGB(x, y);
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = pixel & 0xff;
if (red >= redThreshold && red <= 210 && green >= greenThreshold && green <= 120
&& blue >= blueThreshold && blue <= 40) {
// Dieser Pixel ist die Ente
duckLocation = new Point(x, y);
break;
}
}
}
if (duckLocation.x == -1 && duckLocation.y == -1) {
// keine Ente gefunden
robot.mouseMove(screenBounds.width, screenBounds.height/2);
// neuen Screenshot erstellen
screenshot = robot.createScreenCapture(screenBounds);
}
}
// Punkt der Ente zurückgeben
return duckLocation;
}
public void aimAndShoot() {
// Screenshot machen
BufferedImage screenshot = robot.createScreenCapture(screenBounds);
// Ente im Screenshot finden mit der findDuck methode
Point duckLocation = findDuck(screenshot);
// Maus auf Duck bewegen
robot.mouseMove(duckLocation.x, duckLocation.y);
// Abschießen
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_F1) {
running = true;
} else if (e.getKeyCode() == KeyEvent.VK_F2) {
running = false;
}
}
@Override
public void keyReleased(KeyEvent e) {
// Not used
}
@Override
public void keyTyped(KeyEvent e) {
// Not used
}
}
Java:
import java.awt.AWTEvent;
import java.awt.event.AWTEventListener;
import java.awt.event.KeyEvent;
public class Main {
Aimbot aimbot = new Aimbot();
boolean aimbotActive = false;
public static void main(String[] args) {
Main mainClass = new Main();
mainClass.startAimbot();
}
private void startAimbot() {
AWTEventListener eventListener = new AWTEventListener() {
@Override
public void eventDispatched(AWTEvent event) {
KeyEvent keyEvent = (KeyEvent) event;
if (keyEvent.getID() == KeyEvent.KEY_PRESSED) {
if (keyEvent.getKeyCode() == KeyEvent.VK_F1) {
aimbotActive = true;
} else if (keyEvent.getKeyCode() == KeyEvent.VK_F2) {
aimbotActive = false;
}
}
}
};
java.awt.Toolkit.getDefaultToolkit().addAWTEventListener(eventListener, AWTEvent.KEY_EVENT_MASK);
while (true) {
if (aimbotActive) {
aimbot.aimAndShoot();
}
}
}
}
viel musste ich mir durch googeln aneignen darum bin ich mir auch nicht sicher ob ich überhaupt die richtigen libraries verwende.. und ich merke gerade, dass ich sowohl in der Aimbot Klasse als auch in der Main Klasse einfügen wollte dass ich mit f1 starten und mit f2 stoppen kann
Mir gehts hauptsächlich darum dass mir jemand mit Erfahrung sagt ob die Vorgehensweise so okay ist und woran es scheitert
Zuletzt bearbeitet: