fifaolPyscript

python

#用py写的fifaol3辅助脚本(1)
标签(空格分隔): python


最近有些沉迷于fifaol3这网游啊,自己也不是那么极客的人,只不过之前做的东西用处都不大,这次得做些用处大的东西来更新我的博客。

##目标

  1. fifaol3截卡器,在转会市场,总是有一些卡,虽然明明存量很大,可是每次购买就是提示“该球员已售出”。这就是截卡器的功劳了。因此打算用python实现自动检测球员,自动购买球员,最好还能考虑价格问题。
  2. fifaol3经理人脚本,其实自从出了fifaol3m,就不用刷经理人了,但是我倒霉的手机玩不了,再说也得主动多造轮子提升自己吗。需要的是自动点击按钮还有就是根据情况按下esc,跳过回放入场等。

##需要用到的工具

  1. pywin32,这个不用说啦,用来获取窗口以及模拟鼠标和键盘事件
  2. PIL,用来识别屏幕上的变化分析当前情况(是否有+1卡,是否在播放回放等等)
  3. spy++,用来获取窗口句柄和类
  4. windows自带画图,用来测量坐标。
  5. qq截图,用来截图还有就是测量rgb值。

##截卡器具体分析
其实就是不断重复买球员这个操作,这样怎么都能买得到,把操作间隔该低了就可以和一般用户抢卡啦。
首先为了方便测试,我们需要把fifaol调整为非全屏以及第分辨率,这样才能方便我切换窗口。
然后就是对购买球员的操作进行分析:
1.首先是切换窗口到fifaol3。
2.点击搜索球员——选中球员——点击购买——回车购买———回车确认。这里需要注意的就是能不用鼠标完成的操作(比如最后两步可以用回车键代替),尽量别用鼠标完成(因为鼠标需要各种测量,实在太辛苦)。如下图:
此处输入图片的描述

pywhin32在网上的资料还是很多的,直接找来就好了。直接贴下主程序的代码:

if __name__ == '__main__':
    game_hwnd = win32gui.FindWindow('FIFANG','FIFA ONLINE3 - Developed by SPEARHEAD')#fifaol3的窗口类和标题
    win32gui.ShowWindow(game_hwnd, win32con.SW_RESTORE)#窗口提前
    win32gui.SetForegroundWindow(game_hwnd)
    game_rect = win32gui.GetWindowRect(game_hwnd)#获取窗口的坐标,对应的是左上角坐标和右下角坐标
    for i in range(5):#暂停五秒,方便用户把鼠标移动到搜索球员上
        print i
        time.sleep(1)
    user_x,user_y = get_mouse_point()#获取鼠标坐标
    time.sleep(0.1)
    moveAndclick(user_x, user_y)#点击搜索球员(
    time.sleep(1)
    while(1):
            time.sleep(0.5)
            moveAndclick(game_rect[0]+579, game_rect[1]+226)#选中第一个球员
            time.sleep(0.5)
            moveAndclick(game_rect[0]+717, game_rect[1]+572)#点击购买
            time.sleep(0.5)
            pressHoldRelease('enter')#回车确认购买
            time.sleep(1)
            pressHoldRelease('enter')#回车确认
            time.sleep(0.5)
            moveAndclick(user_x, user_y)#点击搜索球员
            time.sleep(3)

缺点:

  1. 没有价格识别,就是一个劲地买(一开始想截取+1图像作为区别,结果像素点太少,无论是rgb比较还是汉明距离相似度都特别高,估计只能读取内存了)
  2. 有时候fifaol会突然闪退回桌面,该脚本做不到再把窗口切换回去
  3. 操作间隔太小了fifaol会卡死。
  4. 不能检测延迟,只能靠不断重复来弥补。

最后按照管理秀下成果吧!
此处输入图片的描述