2

我正在编写一个 Java 应用程序,以便在一夜之间自动完成在线游戏中的角色动作(具体来说,它在最终幻想 XI 中捕鱼)。该应用程序大量使用 java 的 Robot 类来模拟用户键盘输入和检测屏幕某些部分的颜色变化。它还使用多线程和摆动 GUI。

当我在没有运行游戏的情况下对其进行测试时,该应用程序似乎可以完美运行,只需使用屏幕截图触发应用程序响应到记事本中。但由于某种原因,当我真正启动 FFXI 并启动程序时,我所有的键盘和鼠标操作都完全停止工作。程序仍在运行,Robot 类仍然能够读取像素颜色。但是 Robot.keyPress、Robot.keyRelease、Robot.mouseMove、Robot.mousePress 和 Robot.mouseRelease 什么都不做。这是最奇怪的事情——为了测试它,我写了一个简单的循环,它只是不停地输入字母,并专注于记事本。然后我会开始游戏,重新调整记事本的焦点,它什么也不做。然后我会退出游戏,它会立即重新开始工作。

有没有其他人遇到过这样的事情,特定的软件会阻止java的某些功能工作?

此外,为了让这更有趣——去年我编写了一个非常相似的程序,使用相同的类和编程技术来自动治疗游戏中的一方,因为他们正在战斗。去年,该计划运行良好。遇到这些问题后,我挖出了那个旧程序,没有做任何更改就运行它,发现它也有同样的问题。现在和它工作时的唯一区别:我运行的是 Windows Vista,现在我运行的是 Windows 7,并且已经发布了几个新的 Java 版本以及 FFXI 版本。

这到底是怎么回事?(如果有人需要查看我的源代码,请通过 mikejturley@gmail.com 给我发电子邮件。我正在努力保密。)

4

2 回答 2

3

FFXI 有防止作弊的代码。看起来相当有效。

于 2010-03-11T15:47:18.247 回答
0

如果可能,请在 WinXP 中尝试。我自己也为使用许多相同概念的在线游戏编写了一个机器人(即使用 Java 机器人读取像素颜色并模拟按键和鼠标点击)。

在 WinXP 下: Bot 在所有情况下都按预期工作。

在 Win7 下: 在游戏之外,机器人按预期工作。在游戏中,模拟输入失败(我认为像素读取还可以)。

于 2010-04-14T01:09:28.703 回答