- 已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
7天前关闭。
Improve this question
我正在为F2P游戏Moorhuhn构建一个像素aimbot。
private Point findDuck(BufferedImage screenshot) {
int redThreshold = 230;
int greenThreshold = 0;
int blueThreshold = 0;
duckLocation = new Point(-1, -1);
while (duckLocation.x == -1 && duckLocation.y == -1 && andereRichtung == false) {
richtungAendern();
if (duckLocation.x == -1 && duckLocation.y == -1 && andereRichtung == true) {
moveMouseToLeft();
andereRichtung = false;
}
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 <= 235 && green >= greenThreshold && green <= 0
&& blue >= blueThreshold && blue <= 0) {
duckLocation = new Point(x, y);
break;
}
}
}
if (duckLocation.x == -1 && duckLocation.y == -1) {
robot.mouseMove(1700, 255);
screenshot = robot.createScreenCapture(screenBounds);
}
}
return duckLocation;
}
如果我的findDuck方法在当前屏幕上没有找到鸭子,它会将鼠标移到右侧,转到另一个视图,在那里找到鸭子。问题是,大约10秒钟后,它已经射完了路上所有的鸭子,并停留在右侧。这就是为什么我添加了一个调度任务方法:
private void richtungAendern() {
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.schedule(new Runnable() {
public void run() {
andereRichtung = true;
}
}, 10, TimeUnit.SECONDS);
}
它只是将布尔值andereRichtung更改为true,当它为true时,findDuck()中的if语句执行moveMouseToLeft()方法
private void moveMouseToLeft() {
for (int i = 1; i <= 15; i++) {
robot.mouseMove(235, 255);
}
}
使鼠标回到游戏画面的左边,执行moveMouseToLeft()后,我添加了andereRichtung = false;之后,所以循环继续寻找鸭子并射击它们但这里是我的主要问题:鼠标现在卡在屏幕左上角,射击空气而不是继续寻找鸭子。
我不明白为什么在moveMouseToLeft()命令之后循环不继续。
下面是一个简短的视频我的问题:* 一个五个 *
1条答案
按热度按时间vawmfj5a1#
您在主
while
循环的每次迭代中都调用了richtungAendern();
方法。因此,您可能每秒多次启动同一个预定执行器,所以在第一个执行器触发后,其余执行器基本上会一直被触发。因此,难怪您无法离开左上角。:)您可以在richtungAendern()
方法中放置一个断点(或System.out.println
)来验证这一点。要解决这个问题,我建议不要使用调度程序,而只是保留一个变量,告诉你的鼠标是在左边还是右边,并在它们之间移动,而不是
robot.mouseMove(1700, 255);
命令。