mfc控件位置调治和坐标分明,怎么样一步步的用python制作游戏外挂

玩过计算机游戏的同室对于外挂确定不素不相识,不过你在用外挂的时候有未有想过如何是好贰个外挂呢?(当然用外挂不是那么道义哈,呵呵卡塔 尔(英语:State of Qatar),那大家就来看一下哪些用python来创设叁个外挂。。。。

自家张开了4399小游戏网,点开了二个不著名的游艺,唔,做寿司的,有资料在一方面,客人过来后表露他们的须要,你遵照菜单做好端给他便好~
为什么这么有难度?8种菜单记不清,点点就点错,鼠标还倒霉使肌肉劳损啥的伤不起啊……

在mfc工程中央调节件恐怕窗口地点的调动是平日碰着的,极度是依靠对话框的工程。地方的调动包含坐标、长度和增长幅度的变迁,日常在窗口类的OnSize函数中贯彻。控件地方的调治涉及的函数有:GetWindowRect()、ScreenToClient()、GetClientRect()、MoveWindow()或SetWindowPos(),功效意义如下:

先是要注解,这里的玩乐外挂的概念,和那多少个大型网络游戏里的外挂可不等,不能够自动打野,无法喝药无法躲藏链霉素……
那做那些外挂有甚用?问的好,没用,除了能够浪费你或多或少光阴,进步级中学一年级下编制程序手艺,扩充一小点点点点点的做外挂的底子以外,毫无用项,若是你是以制作叁个震天撼地惊花草不开则已大器晚成开马上超神的外挂为对象恢复生机的话,也许要让您深负众望了,请尽快绕道。作者的指标很简单,就是自动玩那款小游戏而已。

工具的筹划

GetWindowRect():获得窗口在荧屏上的矩形坐标,调度控件地方时必得首先得到该显示器坐标;

亟待安装autopy和PIL以致pywin32包。autopy是三个自动化操作的python库,可以萧规曹随一些鼠标、键盘事件,仍可以对显示屏进行拜望,本来小编想用win32api来效仿输入事件的,开掘那一个用起来比较容易,最厉害的是它是跨平台的,请寻觅安装;而PIL这是风靡一时了,Python图像处理的No.1,下边会表明用它来做怎么着;pywin32事实上不是必得的,可是为了便于(鼠标它在本身动着吗,怎么样收场它呢),还是提出设置一下,哦对了,小编是在win平台上做的,外挂大约唯有windows客户要求吗?
截屏和图像管理工具
截屏是获取游戏图像以供解析游戏提醒,其实远非特意的工具直接Print
Screen粘贴到图像管理工科具里也足以。作者用的是PicPick,蛮好用,何况个人顾客是免费的;而图像处理则是为着获得各个消息的,我们要用它获得点菜图像后保存起来,供外挂分析推断。笔者用的是PhotoShop…
不要告诉Adobe,其实PicPick中自带的图像编辑器也丰富了,只要能查看图像坐标和剪贴图片就比饿的打鼓了,只不过笔者习贯PS了~
编辑器
那几个自家就无须说了呢,写代码得要个编辑器啊!小编用VIM,您若愿意用写字板也足以……
规律剖析

外挂的历史啥的本人不想说啊,有意思味请Google或度娘(注:非手艺难题尽能够百度卡塔 尔(阿拉伯语:قطر‎。

ScreenToClient():转变显示器坐标到顾客区坐标,如若为子窗口,调换后坐标为相对于父窗口的坐标,若为独立窗口,调换后顾客区左上坐标为(0,0卡塔尔国;调治子窗口时这一步也是必得的;

看那一个游乐,有8种菜,各种菜都有定位的做法,客户假诺坐下来,头顶上就能够有二个图片,看图片就通晓她想要点什么菜,点击左侧原料区域,然后点击一下……不明了叫什么,像个竹简相似的事物,菜就做完了,然后把压实的食物拖拽到客商前边就好了。

客商头上展现图片的岗位是一定的,总共也独有四个任务,大家得以逐条解析,而原料之处也是原则性的,每个菜的做法更是显著,那样一来大家完全能够判明,程序能够很好的帮大家做出生龙活虎份生机勃勃份的美味的吃食并奉上,于是钱滚滚的来:卡塔 尔(阿拉伯语:قطر‎

GetClientRect():获得窗口客商区坐标,左上坐标永恒为(0,0卡塔 尔(阿拉伯语:قطر‎;

autopy介绍

github上有豆蔻梢头篇很正确的入门文章,即使是德文不过很简短,可是自身要么摘多少个此次用取得的认证一下,以显示自己很勤快。

MoveWindow():调治控件到钦定地方;

一举手一投足鼠标

1 import autopy
2 autopy.mouse.move(100, 100) # 移动鼠标
3 autopy.mouse.smooth_move(400, 400) # 平滑移动鼠标(上面那个是瞬间的)

SetWindowPos():调节控件的岗位,该函数使用更加灵敏,多用于只修改控件地点而高低不改变或只修正尺寸而地点不改变的情形:

本条命令会让鼠标火速移动到钦定荧屏坐标,你领悟什么样是显示器坐标的吧,左上角是(0,0卡塔尔,然后向右向下依次增加,所以1024×768显示器的右下角坐标是……你猜对了,是(1023,767卡塔尔。

mfc控件位置调治和坐标分明,怎么样一步步的用python制作游戏外挂。

不过有一点点不幸的,假使您实在用一下那几个命令,然后用autopy.mouse.get_pos()拿到一下脚下坐标,开掘它并不在(100,100)上,而是越来越小片段,举例自个儿的机器上是(97,99卡塔尔国,和分辨率有关。这一个运动是客户了和windows中mouse_event函数,若不清楚api的,知道那回事就好了,正是那个坐标不是很标准的。像自个儿同后生可畏很好奇的,能够去读一下autopy的源码,笔者发觉她思忖绝对坐标算法反常:

控件地点调解涉及的参变量有:主窗口的cx、cy坐标、参照他事他说加以考查点坐标。相对于调解义务时调用的函数,变量稍许复杂些。cx、cy坐标为主窗口的宽和高,有OnSize的参数给出,为窗口控件调治提供了转移的范围,全体的控件为了能够健康展现都不可能超越那几个范围。其实在付出进程中较难和关键的是参谋控件的筛选,其岗位相对于主窗口的话必得好鲜明。常用的政策:

point.x *= 0xFFFF / GetSystemMetrics(SM_CXSCREEN);
那边先做除法再做乘法,学过好几测算情势的就应有精通对于整数运算,应该先乘再除的,不然就能发生十分大的相对误差,要是他写成:

point.x = point.x * 0xffff / GetSystemMetrics(SM_CXSCREEN);
就能准多了,纵然理论上会慢一小点,但是自身也懒得改代码重新编写翻译了,差多少个像素,这里对咱们影响非常的小~咱要摄取教诲呀。

1.  增选主窗口上地点不随窗口大小变化的控件为参照;

点击鼠标

1 #引入autopy模块
2 # ***
3 import autopy
4 autopy.mouse.click() # 单击
5 autopy.mouse.toggle(True) # 按下左键
6 autopy.mouse.toggle(False) # 松开左键

2.  选项主窗口上控件的宽大概高级中学一年级定的控件;

本条比较简单,可是记得这里的操作都以卓越非常快的,有极大希望游戏尚未反应过来啊,你就成功了,于是退步了……
所以必要的时候,请sleep一小会儿。

键盘操作

3.  增选与主窗口满足一定坐标关系的控件 ;

咱俩这一次没用到键盘,所以本身就背着了。
咋做?解析客商头上的图像就可以,来,从获得图像开端吧~

开采你喜爱的图像编辑器,伊始丈量啊~
大家得明白图像在显示器的具体地点,能够用标尺量出来,本来直接量也是足以的,不过自个儿这里运用了镜头左上角的地点(也即是点1卡塔 尔(英语:State of Qatar)来作为参照他事他说加以考察地点,这样意气风发旦画面有改观,大家只供给改良三个点坐标就好了,不然每二个点都急需重新写一回可不是风华正茂件欢悦的事务。

4.  采撷主窗口上控件地方依旧高包轻松鲜明的控件。

看最左边的主顾头像下边包车型地铁图像,我们要求多少个点才可明显那一个界定,分别是图像的左上角和右下角,也正是点2和点3,。前边还也会有两个买主的职责,只需求简单的拉长四个增量就好了,for循环便是为此而生!

同生龙活虎的,大家原材质的地点,“竹席”的岗位等等,都足以用这种艺术赢得。注意得到的都是相对游戏画面左上角的相持地点。至于抓图的艺术,PIL的ImageGrab就很好用,autopy也得以抓图,为啥不用,小编下边就能够说起。

以上三种政策可在骨子里支出中作为参谋!不管遭受哪些的景观,应当要明了:选拔贰个

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

MFC怎么着获取控件在对话框上的职位坐标

2010-09-13 20:20

本来希望的效果是在对话框上设置两个picture控件,分别显示两幅图像,然后将两幅图像中的相似部分利用一条直线连接起来。要实现这样的效果需要知道相似位置在这两幅图中的坐标以及这两个控件在对话框上的坐标,然后通过加减运算就可以得到图像上的相似区域在对话框的坐标,直接将这两个坐标用直线连接就可以了。                                                                                

为此,如何获得控件在对话框上的坐标是关键问题。编写了如下的测试小程序,目的是将两个picture控件中的点用直线连接起来,比较直观的是picture控件的四个角,所以程序中是将控件的拐角连接起来。首先在对话框上并排放置两个同样大小的picture控件,将他们的标识分别设成IDC_LEFT和IDC_RIGHT,然后添加两个编辑框用于显示picture控件的大小,给这两个编辑框添加相应的数据成员m_row和m_colume。添加一个按钮用于连接picture控件中的点,为这个按钮添加成员函数OnMatch() 。

void CControlDlg::OnMatch() 
{
// TODO: Add your control notification handler code here
CRect rectL,rectR;
GetDlgItem(IDC_LEFT)->GetWindowRect(&rectL);//获取控件相对于屏幕的位置
ScreenToClient(rectL);//转化为对话框上的相对位置
GetDlgItem(IDC_RIGHT)->GetWindowRect(&rectR);//获取控件相对于屏幕的位置
ScreenToClient(rectR);//转化为对话框上的相对位置
m_row=rectL.bottom-rectL.top;
m_colume=rectL.right-rectL.left;
UpdateData(FALSE);

CClientDC dc(this);
dc.MoveTo(rectL.left,rectL.top);
dc.LineTo(rectR.right,rectR.bottom);
dc.MoveTo(rectL.right,rectL.top);
dc.LineTo(rectR.left,rectR.bottom);

dc.MoveTo(rectL.left+m_colume/2,rectL.top+m_row/2);//连接两个控件中心点
dc.LineTo(rectR.left+m_colume/2,rectR.top+m_row/2);

}

MFC中,怎么样赢得对话框控件相对于父窗口(对话框窗口卡塔 尔(英语:State of Qatar)的职责

创建者: nottoobad

最终改良: 2008-11-29 21:07:54

状态: 公开

标签: mfc 

在MFC中,怎样赢得对话框控件相对于父窗口(对话框窗口卡塔 尔(英语:State of Qatar)的职责:

CRect r;

pWnd->GetWindowRect(&r);

那样获得的r是控件相对于显示屏的坐标,然后用ScreenToClient(&r)即可拿到控件相对于父窗口的坐标。假诺用GetClientRect(&r)的话,r.left和r.top始终是0,得到的并非实在坐标。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

以用GetSystemMetrics函数能够获取系统分辨率,但那只是其效果之风流洒脱,GetSystemMetrics函数独有几个参数,称之为「索引」,那几个目录有柒十三个标记符,通过设置差别的标志符就能够博得系统一分配辨率、窗体展现区域的升幅和中度、滚动条的上涨的幅度和惊人。

为了使使GetSystemMetrics的意义,大家以博取系统分辨率为例,并将内部的三个值用TextOut输出到窗体中。

首先步:用GetSystemMetrics获取显示器的肥瘦和可观

  1. int x, y;
  2. x =
    GetSystemMetrics(SM_CXSCREEN); //显示器宽度
  3. y =
    GetSystemMetrics(SM_CYSCREEN); //显示屏高度

获得窗体呈现区域大小

已本人前不久的询问,获取窗体彰显区域大小有三种艺术。

先是种格局:使用GetSystemMetrics函数

  1. GetSystemMetrics(SM_CXFULLSCREEN); //获取最大化窗体的彰显区域升幅
  2. GetSystemMetrics(SM_CYFULLSCREEN); //获取最大化窗体的显得区域高度

下面是GetSystemMetrics函数参数nIndex的定义:

 

SM_ARAV4RANGE 重返是或不是策画最小化.
SM_CLEANBOOT 再次来到系统运行格局:
    0 符合规律运营
    1 白城格局运行
    2 互联网安全格局运营
SM_CMOUSEBUTTONS
重回值为系统扶助的鼠标键数,重回0,则系统中未有设置鼠标。
SM_CXBORDER,
SM_CYBO中华VDERubicon再次来到以相素值为单位的Windows窗口边框的拉长率和可观,如若Windows的为3D形态,则
等同于SM_CXEDGE参数
SM_CXCURSOR,
SM_CYCU福睿斯SO兰德酷路泽 再次回到以相素值为单位的正经光标的上涨的幅度和可观
SM_CXDLGFRAME,
SM_CYDLGFRAME 等同与SM_CXFIXEDFRAME and SM_CYFIXEDFRAME
SM_CXDOUBLECLK,
SM_CYDOUBLECLK 以相素值为单位的双击有效的矩形区域
SM_CXEDGE,SM_CYEDGE 以相素值为单位的3D边框的上升的幅度和惊人
SM_CXFIXEDFRAME,
SM_CYFIXEDFRAME
围绕具备标题但力无法及改观尺寸的窗口(经常是局部对话框卡塔 尔(英语:State of Qatar)的边框的厚薄
SM_CXFRAME,SM_CYFRAME 等同于SM_CXSIZEFRAME and SM_CYSIZEFRAME
SM_CXFULLSCREEN,
SM_CYFULLSCREEN 全荧屏窗口的窗口区域的大幅度和惊人
SM_CXHSCROLL,
SM_CYHSCROLL 水平滚动条的莫斯中国科学技术大学学和品位滚动条上箭头的大幅
SM_CXHTHUMB 以相素为单位的品位滚动条上的滑动块宽度
SM_CXICON,SM_CYICON 系统缺省的Logo的莫斯中国科学技术大学学和宽窄(日常为32*32)
SM_CXICONSPACING,
SM_CYICONSPACING
以大Logo方式查看Item时图标之间的间距,这么些间隔连接高出等于
SM_CXICON and SM_CYICON.
SM_CXMAXIMIZED,
SM_CYMAXIMIZED 处于顶层的最大化窗口的缺省尺寸
SM_CXMAXTRACK,
SM_CYMAXTRACK
具备可转移尺寸边框和标题栏的窗口的缺省最大尺寸,要是窗口大于这么些
尺寸,窗口是不足移动的。
SM_CXMENUCHECK,
SM_CYMENUCHECK 以相素为单位测算的菜系选中标志位图的尺码
SM_CXMENUSIZE,
SM_CYMENUSIZE 以相素总计的菜单栏开关的尺寸
SM_CXMIN,SM_CYMIN 窗口所能到达的蝇头尺寸
SM_CXMINIMIZED,
SM_CYMINIMIZED 符合规律的最小化窗口的尺寸
SM_CXMINTRACK,
SM_CYMINTRACK
最小追踪间隔,当使用者拖动窗口移动间隔小于这么些值,窗口不会活动。
SM_CXSCREEN,
SM_CYSCREEN 以相素为单位总括的显示屏尺寸。
SM_CXSIZE,SM_CYSIZE 以相素总括的标题栏开关的尺寸
SM_CXSIZEFRAME,
SM_CYSIZEFRAME 围绕可转移大小的窗口的边框的薄厚
SM_CXSMICON,
SM_CYSMICON 以相素总括的小Logo的尺码,小Logo相同出今后窗口标题栏上。
M_CXVSCROLL,
SM_CYVSCROLL 以相素计算的垂直滚动条的增长幅度和垂直滚动条上箭头的冲天
SM_CYCAPTION 以相素计算的日常窗口标题标可观
SM_CYMENU 以相素总计的单个菜单条的惊人
SM_CYSMCAPTION 以相素总结的窗口小标题栏的莫斯中国科学技术大学学
SM_CYVTHUMB 以相素计算的垂直滚动条中滚动块的莫斯中国科学技术大学学
SM_DBCSENABLED
要是为TRUE或不为0的值声明系统装置了双字节版本的USE凯雷德.EXE,为FALSE或0则不是。
SM_DEBUG
倘诺为TRUE或不为0的值表明系统安装了debug版本的USE奥迪Q7.EXE,为FALSE或0则不是。
SM_MENUDROPALIGNMENT
如果为TRUE或不为0的值下拉菜单是右对齐的否则是左对齐的。
SM_MOUSEPRESENT 要是为TRUE或不为0的值则设置了鼠标,不然未有安装。
SM_MOUSEWHEELPRESENT
假若为TRUE或不为0的值则设置了滚轮鼠标,不然未有设置。(Windows NT only)
SM_SWAPBUTTON 如若为TRUE或不为0的值则鼠标左右键沟通,不然未有。

分析图像

Invalidate(TRUE卡塔 尔(英语:State of Qatar)的闪屏难题

 (2010-05-03
02:58:24)

澳门葡京备用网址 1转载▼

标签: 

杂谈

分类: MFC小游戏

    在使用Invalidate(TRUE)进行窗口重绘时,总是会遇到闪屏的难点。

    后生可畏上马以为是绘图速渡过慢照成的,但在对绘图时间做了多个测验之后察觉,哪怕全体绘图进度只持续了多少个微秒,还是会映注重帘很明显的闪耀**,所以时间并非诱致闪烁的决定性因素*澳门葡京备用网址,*。

    那究竟是什么来头吧?以往来探视Invalidate(TRUE)都干了些什么。其实,它只是间接向音信队列增多了WM_ERASEBKGND和WM_PAINT多个音信。但是,要是采取Invalidate(FALSE)的话,则唯有WM_PAINT音信发出,那时是不会有此外闪光的。

    现在简来说之,闪烁就好像是由WM_ERASEBKGND音讯发出的,事实上,的确与它有关。那WM_ERASEBKGND有干了哪些呢?WM_ERASEBKGND消息由On伊RusseBkgnd()新闻管理函数响应,它的效用正是重绘客商区背景。大家得以透过向工程里加多WM_ERASEBKGND那几个音信,然后在重写的新闻管理函数中校重临语句修正为return
TRUE
来掩盖那黄金年代效益,那样做的裨益是那时候不会重绘背景了,坏处是那时背景也不会被擦出来。

    好像还从未提及真正原因,其实真正的缘故就带有在里头。将来来做一个尝试,分别品尝一下飞快的眨眼和慢速的眨眼,你会发觉高速眨眼时大家会认为到近年来的青绿意气风发闪而过,而慢速眨眼时,则会以为一切进度是三番五次的,未有啥特殊。其实闪烁也正是这么回事,即多张不总是图像的全速切换。这里有七个原则,多张和快捷和不三番五次,并且供给再正是拥有才会发生闪烁。假如只是两张,只会感到到到突变,还谈不上闪耀;假如功效慢的话,也也正是两张图像的事态了;最终只假若接连图像的话,这好似看电影,平稳的联网也不会令人认为不适。

    知道了那一个,接下去就能够做决定了。

    应用方案

    使用Invalidate(FALSE),添加WM_ERASEBKGND消息管理函数大概有个别刷新三者选其风流洒脱,都以足以减轻难点的。它们的都以通过除去图像不三番五次那意气风发要一直达成目标的。

 

    此外,要说的是GDI的BitBlt()函数是会同高效的,二次操作所要求的年华唯有几到18个微秒,所以大家能够放心的应用它,而不用顾虑其余效用难点。然则相对于BitBlt()来讲StretchBlt()就要慢的多,大致是几十倍的差异。

    还会有正是日常的绘图工作都以先绘制在八个缓冲区上,然后再一遍拷贝到显示器上。

    不时,当大家须要动用闪烁的功能的话,也是能够透过多张图像的马上切换成成功,在此边大家也将两张图像的重复切换精通为多张图像。

咱俩这一个外挂里一定有难度的一个主题素材应际而生了,怎么样精通我们获取的图像到底是哪多少个菜?对人眼……甚至狗眼来讲,这都以多个一定easy的标题,“意气风发看就通晓”!没错,那就是人比机器高明的地方,大家做起来相当的粗略的业务,计算机却傻傻分不清楚。
autopy图像局限

风流罗曼蒂克经你看过autopy的api,会发觉它有三个bitmap包,里面有find_bitmap方法,正是在一个大图像里搜索样品小图像的。聪明的你早晚能够想到,大家能够截下整个游戏画面,然后准备有所的菜的小图像用这一个艺术朝气蓬勃找就知晓哪些菜被叫到了。确实,一早先自身也可能有与上述同类做的快乐,不过当下就舍弃了……这么些点子搜索图像,速度先不说,它有个原则是“正确相称”,图像上有八个像素的大切诺基GB值差了1,它就查不出去了。大家知道flash是矢量绘图,它把八个点阵图片体现在显示器上是透过了缩放的,这里变数就超大,理论上生龙活虎致的输入雷同的算法得出的结果自然是千篇风流浪漫律的,不过因为绘图背景等的关系,总会有一丝丝的出入,正是那一点间距使得这些美好的函数不可利用了……

好啊,不能用也是好事,否则本身怎么引出大家高明的图像解析算法呢?

诚如图像查找原理

相信您一定用过Google的“按图搜图”功能,若无,你就落后啦,快去探索!当您输入一张图片时,它会把与那张图相似的图像都给你显示出来,所以当您找到一张乐意的图想做壁纸又感到太小的时候,基本得以用那几个主意找到适当的~

我们将要选取和那个日常的原理来判别客商的点餐,当然大家的算法不容许和谷歌(Google卡塔 尔(英语:State of Qatar)那般复杂,微博上有后生可畏篇十分不利的稿子陈说了这几个主题素材,有意思味的能够看看,作者直接付出达成:

1 def get_hash(self, img):
2     #使用PIL模块缩放图片,***
3     image = img.resize((18, 13), Image.ANTIALIAS).convert("L")
4     pixels = list(image.getdata())
5     avg = sum(pixels) / len(pixels)
6     return "".join(map(lambda p : "1" if p > avg else "0", pixels))
7

倘让你须要贰个好好的读书沟通条件,那么你能够假造Python学习交换群:548377875;
要是你要求风姿罗曼蒂克份系统的学习材质,那么您能够虚构Python学习调换群:548377875。

因为这是类的叁个主意,所以有个self参数,无视它。这里的img应该传入二个Image对象,可以使读入图像文件后的结果,也能够是截屏后的结果。而缩放的尺码(18,13卡塔尔国是自身遵照真实意况定的,因为花销者头像上的菜的图像基本正是以此比重。事实注脚这些比重依然挺主要的,因为大家的菜有个别相同,假若比例不适当压缩后就失真了,轻便误判(我事先就受损了卡塔尔国。

获取三个图纸的“指纹”后,大家就可以与正统的图形指纹相比较,怎么比较呢,应该运用“汉明间隔”,也即是五个字符串对应地方的不及字符的个数。完成也非常粗略……

def hamming_dist(self, hash1, hash2):
return sum(itertools.imap(operator.ne, hash1, hash2))
好了,大家能够用希图好的标准图像,然后预先读取总括特征码存款和储蓄起来,然后再截图与它们比较就好了,间隔最小的百般就是应和的菜,代码如下:

 1    def order(self, i):
 2        l, t = self.left + i * self.step, self.top
 3        r, b = l + self.width, t + self.height
 4        hash2 = self.get_hash(ImageGrab.grab((l, t, r, b)))
 5        (mi, dist) = None, 50
 6        for i, hash1 in enumerate(self.maps):
 7            if hash1 is None:
 8                continue
 9            this_dist = self.hamming_dist(hash1, hash2)
10            if this_dist < dist:
11                mi = i
12                dist = this_dist
13        return mi

此间有二个50的始发间距,尽管截取图像与其余菜单比较都超越50,表达如何?表明现行反革命不行地方的图像不是菜,相当于说客商还未有坐那地点上吗,也许大家把嬉戏最小化了(经理来了卡塔 尔(阿拉伯语:قطر‎,那样处理很要紧,免得它轻松找多少个最周围但又完全不搭边的菜举行管理。

自动做菜

以此主题素材很简短,大家只需求把菜单的原料记录在案,然后点击相应岗位便可,作者把它写成了八个类来调用:

 1 class Menu:
 2    def __init__(self):
 3        self.stuff_pos = []
 4        self.recipes = [None] * 8
 5        self.init_stuff()
 6        self.init_recipe()
 7    def init_stuff(self):
 8        for i in range(9):
 9            self.stuff_pos.append( (L + 102 + (i % 3) * 42, T + 303 + (i / 3) * 42) )
10    def init_recipe(self):
11        self.recipes[0] = (1, 2)
12        self.recipes[1] = (0, 1, 2)
13        self.recipes[2] = (5, 1, 2)
14        self.recipes[3] = (3, 0, 1, 2)
15        self.recipes[4] = (4, 1, 2)
16        self.recipes[5] = (7, 1, 2)
17        self.recipes[6] = (6, 1, 2)
18        self.recipes[7] = (8, 1, 2)
19    def click(self, i):
20        autopy.mouse.move(self.stuff_pos[i][0] + 20, self.stuff_pos[i][1] + 20)
21        autopy.mouse.click()
22    def make(self, i):
23        for x in self.recipes[i]:
24            self.click(x)
25        autopy.mouse.move(L + 315, T + 363)
26        autopy.mouse.click()

这是本外挂中最没才干含量的一个类了:卡塔 尔(阿拉伯语:قطر‎请见谅作者从未写注释和doc,因为都比较轻松,相信您知道。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website