当前位置:  开发笔记 > 编程语言 > 正文

在线交易机器人

如何解决《在线交易机器人》经验,为你挑选了2个好方法。

我想为Magic:The Gathering Online编写一个交易机器人代码.该机器人应该等到有人提供交易,接受,查看其他交易者可用的卡(信息显示在屏幕上),并执行其他类似功能.我有几个问题:

    怎么知道有人提供交易?

    怎么知道其他交易者有一张卡(信息存储在图片中)?

我现在无法想象如何做到这一点,我没有经验,直到现在我一直只为我的物理现象编写控制台程序.



1> Brian Campbe..:

首先,你应该注意到一些在线游戏禁止机器人,因为它们可以给某些玩家不公平的优势.该MTGO服务条款似乎并没有说这事,虽然他们穿上任何可能的服务产生负面影响的限制.他们还表示他们有可能在未来添加API,因此他们似乎并不反对自动化的想法,但目前还没有支持它.在这里仔细阅读,但看起来编写机器人应该没问题,只要它不是有害或滥用.这不是法律建议,并且向运行MTGO的人员征求许可是个好主意.编辑 自从我写这篇文章以来,已经指出已经有很多机器人,所以编写机器人应该没有问题.

假设它没有被服务条款禁止,但它们没有API,你将不得不找到一种方法来检测正在发生的事情,并自动控制游戏.关于编写扑克机器人(存档副本)的文章非常多,它有一些关于如何将DLL注入应用程序,刮擦屏幕以及控制应用程序的一些很好的信息.这可能会为你提供做这种事情的起点.

您可能还想查找其他人为此而编写的工具.看起来有几个现有的MTGO机器人,但它们看起来都有点粗略(有一些关于它们窃取密码的报告),所以要小心.

编辑

由于这个答案似乎仍然有待提升,我应该用一些更有用的信息来更新它.自写这篇文章以来,我找到了一个名为Sikuli的优秀UI自动化系统.它允许您使用Python编写自动化GUI的程序.它包括图像识别功能,可以很容易地识别按钮,卡片和其他UI元素; 你只需截取屏幕截图,将其裁剪为仅包含您感兴趣的内容,并进行模糊图像匹配(以便更改背景等不会导致匹配失败).它甚至包括一个自定义IDE,允许您直接在源代码中嵌入这些屏幕截图,因此您可以准确地查看代码所需的内容.这是文档中的一个示例(代码格式化的道歉,在StackOverflow的受限制的HTML子集中,在代码中内联图像并不容易):

def resizeApp(app, dx, dy):                      
    switchApp(app)                                
    corner = find(Pattern(enter image description here).targetOffset(3,14)) 
                                                  
    drop_point = corner.getTarget().offset(dx, dy)
    dragDrop(corner, drop_point)                  
                                                  
resizeApp("Safari", 50, 50)                      

这比上面链接的文章中提到的将DLL注入到正在调试的进程中的技术要容易得多.Sikuli完全在UI级别运行,因此您无需修改​​自动化程序或担心内部更改会破坏脚本.

有一点是处理文本有点差; 它具有OCR功能,但它们并不是那么好.但是,如果文本是可选的,则可以选择文本,复制文本,然后直接查看剪贴板.

如果我要编写一个机器人来自动化没有良好API或基于文本的界面的东西,Sikuli可能是我想要达到的第一个工具.



2> Yacoby..:

这个答案是根据我的评论构建的.

无论你尝试做什么,你想要做的事情都很艰难.
可以说,最简单的方法是完全模仿用户.因此应用程序按下按钮,移动鼠标等.这样做的缺点是它依赖于能够识别屏幕.
如果您可以更改游戏文件,则更容易,因为您可以将所需的卡片(将图像(纹理))更改为单一的唯一颜色.
主要的缺点是你必须将游戏作为顶级窗口或让游戏在虚拟机中运行.这两者都不理想.

另一种方法是读取进程内存.您可能能够找到一个内存位置列表,这将使事情变得更简单,否则它涉及大量的辛勤工作,一个调试器来推断内存地址.这也有助于(很多)能够理解装配.

第三种方法是拦截数据包,并改变它们.这比上面的方法(至少对我来说)更容易反转引擎协议,因为你需要处理的信息较少.只需设置数据包嗅探器并使用一个不同的变量(例如,卡)执行操作并比较差异即可.

您需要检查的是您没有违反EULA.我不知道游戏是如何运作的,但是我遇到的大多数游戏都有一个EULA禁止(即你被禁止)做我提到的任何事情.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有