pyFifaolScrpit

python

用py写的fifaol3辅助脚本(2)

标签(空格分隔): python


快要期末考了,所以填完这个坑以后也就扎银卡卸载游戏弃坑了。还有很多乱七八糟的坑要填啊。
这次主要介绍:

  1. 应用pyhook获取鼠标坐标,做一个鼠标版的按键精灵
  2. 应用pyetesser来做ocr,实现当前拥有ep的检测

经常上不了sourceforge,所以pyhook的帮助文档真是坑杀我也。需要注意的就是pyhook是用钩子的形式来获取键盘输入的,而鼠标模拟点击也同样是运用钩子的形式来进行的。虽然不是特别理解这钩子到底是什么,但是总之监听和模拟是不能同时进行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def onWheel(event):
global hm
nl = []
if event.Wheel == -1:
hm.UnhookMouse()
print 'stop recording...'
print 'after 5 sec it will start...'
for i in [5,4,3,2,1]:
print i
time.sleep(1)
while True:
for (x,y) in mouseposition:
mouse_click(x,y)
time.sleep(distance)
print 'HIT!'
pressHoldRelease('enter')
print 'ENTER!'
time.sleep(0.2)
pressHoldRelease('enter')
print 'ENTER!'
if EXIT:
sys.exit()
return True

需要注意的就是其中的

true```也是绝对必要的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
处理完这个小问题,我就来谈谈我大概的解决思路啦——每次点击鼠标左键,就给两个全局变量添加参数,其中一个是当前鼠标的坐标,另一个则是```time.time()```后者是用来计算鼠标点击的时间间隔的,然后当鼠标中键往后滚动的时候脱钩,处理得到时间间隔,开始模拟点击。需要注意的是,按下鼠标左键以及中键对应的子类分别是```MouseLfetDown```以及```MouseWheel```具体的实现代码可以看[我的github][1]。
还有就是ocr咯,我用的是pytesser。无他,不需要编译,不需要pip,使用起来方便(反正都是对付近似印刷体的纯数字,难度较低)。
有了pytesser其他就都是小事了,直接调用就好了。贴下我的图片二值化代码以及提取纯数字的代码。
```python
#二值化
def imgConvert(file):
im = Image.open(file)
im = im.convert("I")
im2 = Image.new("P",im.size,255)
for x in range(im.size[1]):
for y in range(im.size[0]):
pix = im.getpixel((y,x))
if pix>50 and pix<170: #这个区间是主要字体的颜色,可以通过qq截图获得
im2.putpixel((y,x),0)
im = im2
return im

#提取数字
def OnlyNum(s):
    s = s.lower()#去空格
    format = '1234567890'
    for c in s:
        if not c in format:
            s = s.replace(c,'')

最后照例秀下成果
此处输入图片的描述