游戏“魔兽世界” 3.3.5a示例中的简单Java Clicker机器人

此机制仅在盗版服务器上进行了测试,因此不能保证在正式服务器上的性能。

所有使用尝试-后果自负。

该实现适用于Windows桌面。

因此,创建一个简单的机器人,其目的是:

1)进入游戏;
2)登录到您的帐户;
3)进入游戏世界;
4)打开邮箱;
5)生成并发送一封信给另一位玩家;

1)进入游戏


为了进入游戏,我们实际上需要拥有一个先前下载的游戏客户端。
在我们的工作中,我们使用exe文件Wow.exe。 我们将其路径编写如下:

String WowPatch="D:/Wow/Wow.exe"; 

在这里,我们记录了Wow可执行文件的路径。 对于您来说,这条路可能会有所不同。

路径当然不错,但这还不足以启动游戏。

要运行,我们需要以下代码:

 String WowPatch="D:/Wow/Wow.exe"; File file =new File(WowPatch); try { Desktop.getDesktop().open(file); } catch (IOException e1) { e1.printStackTrace(); } 

由于应用了以上代码,WoW应该在您的计算机上启动。

我们启动了魔兽世界,立即面临一个新问题- 如何使机器人自动从该帐户输入登录名和密码?

2)登录到您的帐户


现在呢 我们需要再写两个文本变量。

 String Login="YourLogin"; String Password="YourPassword"; 

在这里,我们从我们要输入的帐户中写下了登录名和密码。 但是,如果我们在进入游戏的那部分代码之后立即使用-将会有麻烦。 所有这些都是因为我们的机器人将执行代码,而不管Warcraft是否启动,并且游戏需要一些时间来加载,如果您使用的是较弱的PC,则将花费更多的时间。

为了避免提前“输入”登录名和密码,我们将暂停代码:

 String WowPatch="D:/Wow/Wow.exe"; File file =new File(WowPatch); try { Desktop.getDesktop().open(file); } catch (IOException e1) { e1.printStackTrace(); } Thread.sleep(20000); String Login="YourLogin"; String Password="YourPassword"; 

在这里我们停了20秒。 我有足够的时间来启动魔兽。 值得注意的是,加载魔兽世界后,我们已经立即选择了默认登录字段。 现在我们要做的就是将登录名从变量复制到剪贴板,并将其粘贴到登录字段中:

 Robot rb= new Robot(); StringSelection stringSelection = new StringSelection(Login); Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd.setContents(stringSelection, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); 

在这里,我们将登录名复制到剪贴板,然后按Ctrl + V进行模拟,将登录名粘贴到相应的窗口中。

现在我们需要切换到密码框。 有两种方法可以做到这一点:

-我们可以模拟鼠标的移动,然后单击第二个窗口。
-我们可以通过模拟按下Tab键进行切换。

我们将使用第二个选项,因为它更简单:

 rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB); 

接下来,将我们的密码复制到剪贴板并粘贴:

 StringSelection stringSelection2 = new StringSelection(Password); Clipboard clpbrd2 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd2.setContents(stringSelection2, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); 

万岁! 我们进入了角色选择菜单。 现在您需要进入游戏世界。

3)进入游戏世界


现在我们在屏幕上看到字符选择菜单。 我们可能不会真正解决并找到遇到的第一个字符。

为了输入,我们可以使用两个不同的选项:

-将鼠标光标移至“登录”按钮并模拟点击;
-模拟按下Enter键;

第二个选项更简单,但是如果我们在输入功能之后立即添加点击,那么将再次遇到麻烦,因此我们将再次暂停,从而使游戏从容进入角色选择菜单:

 Thread.sleep(5000); rb.keyPress(KeyEvent.VK_ENTER); rb.keyRelease(KeyEvent.VK_ENTER); 

我5秒。 头不见了。

哦,奇迹,游戏世界的载入已经开始!

4)打开邮箱


在这里,我们必须再次暂停,以便魔兽世界有时间加载游戏世界。 还建议预先准备角色:

-最大化相机;
-成为收件箱中的额头;

为了打开邮箱,您需要使用鼠标右键大喊它。 为此,我们将移动鼠标光标并模拟一次点击:

 Thread.sleep(30000); rb.mouseMove(700, 350); rb.mousePress(InputEvent.BUTTON3_MASK); rb.mouseRelease(InputEvent.BUTTON3_MASK); 

请记住,我指示的鼠标位置是为1366x768屏幕分辨率设计的。
BUTTON3恰好是鼠标右键。

我们打开了邮箱,现在转到“发送”选项卡:

 rb.mouseMove(200, 550); rb.mousePress(InputEvent.BUTTON1_MASK); rb.mouseRelease(InputEvent.BUTTON1_MASK); 

在这里,我们不仅模仿了鼠标在屏幕上的移动,而且还单击了鼠标左键。

现在是时候填写并发送电子邮件了!

5)形成表格并将其发送给其他玩家


现在我们需要填写几点:

-收件人姓名;
-信息的主题;
-消息文本;

 String Name="Name"; String Theme="Theme"; String Text="Text"; 

首先,在剪贴板上放置角色名称,并将其粘贴到适当的列中:

 StringSelection stringSelection3 = new StringSelection(Name); Clipboard clpbrd3 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd3.setContents(stringSelection3, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB); 

我们插入了收件人名称,然后切换到另一列。 现在,您需要插入消息的主题:

 StringSelection stringSelection4 = new StringSelection(Theme); Clipboard clpbrd4 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd4.setContents(stringSelection4, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB); 

我们插入了消息主题,并切换到第三列-消息文本:

 StringSelection stringSelection5 = new StringSelection(Text); Clipboard clpbrd5 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd5.setContents(stringSelection5, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); 

插入消息文本。 现在剩下的就是单击“提交”按钮:

 rb.mouseMove(200, 520); rb.mousePress(InputEvent.BUTTON1_MASK); rb.mouseRelease(InputEvent.BUTTON1_MASK); 

移动光标,然后在“提交”上单击鼠标左键。

仅此而已。 我希望至少对某人有用。 我也真的希望这篇文章不被接受作为行动指南,并且不会导致游戏中的垃圾邮件数量增加。

Source: https://habr.com/ru/post/zh-CN434218/


All Articles