此机制仅在盗版服务器上进行了测试,因此不能保证在正式服务器上的性能。
所有使用尝试-后果自负。该实现适用于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);
移动光标,然后在“提交”上单击鼠标左键。
仅此而已。 我希望至少对某人有用。 我也真的希望这篇文章不被接受作为行动指南,并且不会导致游戏中的垃圾邮件数量增加。