用Python做的大航海时代ol划船按键器

   刚开始学Python。 最近闲来无事,做了一个大航海时代ol专用的练划船的按键器,和大家分享一下。我的配置是windows7 64位,Python3.6版本。在开始之前需要做的准备

    1.安装puwin32和pyhook库:

        pywin32库比较简单: pip install pywin32

        pyhook比较麻烦,需要先下载,这是下载地址,选择自己对应Python对应的版本下载就好,然后打开cmd,转到pyhook安装包所在的目录,pip安装即可

    2.安装pyuserinput库:

        还是在前边的连接下载pyuserinput,pip安装即可

    3.最后安装pyinstaller:

        pip install pyinstaller

接下来开始写程序

    首先用pyautogui抓取需要点击的点坐标和工具栏翻页键,将其保存到“大航海.txt”文件中。用pyautogui是因为Python3.6对可以记录鼠标点击坐标的pythoncom库支持不好,不能取得其他窗口的点击坐标(好像可以配置,但是太麻烦了~~)

import pyautogui as pag
from time import sleep
def findloc(filename,pointnum=18):
    X=[]
    Y=[]
    for i in range(pointnum+2):
        if i <pointnum:
            print("开始采集点击点之第 "+str(i+1)+' 个点:')
        else:
            print("开始采集翻页键之第 " + str(i - pointnum+1) + " 个点(先上后下,先右后左)")
        sleep(5)
        x, y = pag.position()
        X.append(x)
        Y.append(y)

    with open(filename,'w') as f_o:
        for x in X:
            f_o.write(str(x)+' ')
        f_o.write('\n')
        for x in Y:
            f_o.write(str(x) + ' ')
        f_o.write('\n')
    return pointnum
if __name__ == '__main__':
    findloc('大航海.txt')

    接下来读取txt文件(为什么要这样呢?因为不想每次都要重新抓取啊!):

from findloc_dahanghai import findloc as fl
def load_node(filename):
    p = input("需要设置点击点个数么?默认为18个(y/任意键): ")
    if p == "y":
        pointnum = int(input("输入点击点个数: "))
    else:
        pointnum = 18
    fl(filename,pointnum)
    return "采集点击点成功!"
if __name__ == '__main__':
    load_node("pp.txt")


from input_point import load_node as LN
def loadloc(filename):
    x = []
    try:
        open(filename)
        ms=input("已有数据,需要重新录入么?(y/任意键): ")
        if ms=='y':
            LN(filename)
        for line in open(filename):
            z=line.split()
            for zz in z:
                x.append(int(zz))
        X=x[0:int(len(x)/2)-2]
        FX=x[int(len(x)/2)-2:int(len(x)/2)]
        Y=x[int(len(x)/2):len(x)-2]
        FY=x[len(x)-2:len(x)]
    except FileNotFoundError:
        print("还没有数据,请录入数据并重启程序")
        print(LN(filename))
        for line in open(filename):
            z=line.split()
            for zz in z:
                x.append(int(zz))
        X=x[0:int(len(x)/2)-2]
        FX=x[int(len(x)/2)-2:int(len(x)/2)]
        Y=x[int(len(x)/2):len(x)-2]
        FY=x[len(x)-2:len(x)]
    return X,Y,FX,FY
if __name__ == '__main__':
    X,Y,FX,FY=loadloc("大航海test.txt")
    print(X)
    print(Y)
    print(FX)
    print(FY)

    最后调用调用抓取到的坐标,调用pyuserinput进行鼠标和键盘操作:

from pymouse import PyMouse
from pykeyboard import PyKeyboard
from loadnode_1 import loadloc
from time import sleep
m=PyMouse()
k=PyKeyboard()
x,y,fx,fy=loadloc("大航海.txt")
j=1
t=3
pausetime=int(input("请输入间隔时间t,默认为3s,总时间T=(t+16)s.t= "))
while True:
    m.click(x[0], y[0], button=2, n=1)
    print("完成重新定位")
    for i in range(len(x)):
        sleep(pausetime)
        m.click(x[i],y[i],button=1,n=2)
        print("第 "+str(j)+" 次循环之第 "+str(i+1)+" 次点击")
        msg = ["划船", "救援", "灭火", "清洁", "补漏", "医治", "修理", "平叛", "钓鱼", "测量"]
        k.tap_key(k.function_keys[10])
        sleep(2)
        for jj in range(8):
                k.tap_key(k.function_keys[jj+1])
                print("完成 "+msg[jj]+" 检查")
                sleep(1)
        m.click(fx[0],fy[0],button=1,n=1)
        sleep(2)
        k.tap_key(k.function_keys[1])
        print("完成 "+msg[8]+" 检查")
        sleep(1)
        k.tap_key(k.function_keys[2])
        print("完成 "+msg[9]+" 检查")
        sleep(1)
        m.click(fx[1], fy[1], button=1, n=1)
        sleep(2)
        k.tap_key(k.function_keys[10])
    k.tap_key(k.function_keys[10])
    sleep(2)
    m.click(fx[0], fy[0], button=1, n=1)
    sleep(1)
    k.tap_key(k.function_keys[3])
    print("完成补充")
    sleep(1)
    m.click(fx[1], fy[1], button=1, n=1)
    sleep(1)
    k.tap_key(k.function_keys[10])
    j=j+1
    print(j)


    最最后一步,调用pyinstaller将dahanghai.py打包成exe文件,这样就可以在不同的电脑上运行了!

    命令如下:

    pyinstaller -F dahanghai.py

    最后的运行结果如下:

用Python做的大航海时代ol划船按键器


用Python做的大航海时代ol划船按键器用Python做的大航海时代ol划船按键器

就是这样了~~