├── .vscode └── launch.json ├── 123.png ├── 456.png ├── 789.jpg ├── PyWin32.chm ├── PyWin32.chw ├── README.md ├── __pycache__ ├── add_gui.cpython-36.pyc ├── basic_function.cpython-36.pyc ├── config.cpython-36.pyc ├── config_ark.cpython-36.pyc ├── function.cpython-36.pyc ├── function_ark.cpython-36.pyc ├── globalvar.cpython-36.pyc └── test3.cpython-36.pyc ├── add_gui.py ├── apitest.py ├── ark_images ├── processed │ ├── 100ti.png │ ├── 1xspeed.png │ ├── 2xspeed.png │ ├── 60ti.png │ ├── bushu_fangxiang.png │ ├── chapter1.png │ ├── chapter2.png │ ├── chapter3.png │ ├── chapter4.png │ ├── chapter5.png │ ├── daili_confirm.png │ ├── daili_do.png │ ├── daili_undo.png │ ├── enter_quick.png │ ├── gonggao.png │ ├── gouliang.png │ ├── guanqia │ │ ├── 1-11.png │ │ ├── 1-11_confirm.png │ │ ├── 1-7.png │ │ ├── 1-7_confirm.png │ │ ├── AP-5.png │ │ ├── AP-5_confirm.png │ │ ├── CE-4.png │ │ ├── CE-4_confirm.png │ │ ├── CE-5.png │ │ ├── CE-5_confirm.png │ │ ├── LS-5.png │ │ ├── LS-5_confirm.png │ │ ├── S2-12.png │ │ ├── S2-12_confirm.png │ │ ├── SK-3.png │ │ ├── SK-3_confirm.png │ │ ├── SK-5.png │ │ ├── SK-5_confirm.png │ │ ├── chapter1.png │ │ ├── chapter2.png │ │ ├── chapter3.png │ │ ├── chapter4.png │ │ ├── gouliang.png │ │ ├── hongpiao.png │ │ ├── jiancai.png │ │ ├── longmenbi.png │ │ ├── wuzichoubei.png │ │ ├── xinpiansousuo.png │ │ └── zhandou_jiemian.png │ ├── hongpiao.png │ ├── huodong │ │ ├── huodong_GT1.png │ │ ├── huodong_GT2.png │ │ ├── huodong_GT2_confirm.png │ │ ├── huodong_GT3.png │ │ ├── huodong_GT3_confirm.png │ │ ├── huodong_GT4.png │ │ ├── huodong_GT4_confirm.png │ │ ├── huodong_GT5.png │ │ ├── huodong_GT5_confirm.png │ │ ├── huodong_GT6.png │ │ ├── huodong_GT6_confirm.png │ │ ├── huodong_OF-6.png │ │ ├── huodong_OF-6_confirm.png │ │ ├── huodong_OF-7.png │ │ ├── huodong_OF-7_confirm.png │ │ ├── huodong_OF-8.png │ │ ├── huodong_OF-8_confirm.png │ │ ├── huodong_OF-F3.png │ │ ├── huodong_OF-F3_confirm.png │ │ ├── huodong_OF-F4.png │ │ ├── huodong_OF-F4_confirm.png │ │ ├── zhandou_huodong1.png │ │ ├── zhandou_huodong_confirm.png │ │ ├── zhandou_huodong_enter.png │ │ ├── zhandou_huodong_enter1.png │ │ └── zhandou_huodong_enter2.png │ ├── jiancai.png │ ├── longmenbi.png │ ├── mission_failed.png │ ├── no.png │ ├── ok.png │ ├── skip.png │ ├── skip_confirm.png │ ├── src │ │ ├── d32-1.png │ │ ├── d32-2.png │ │ ├── gyy.png │ │ └── st.png │ ├── wuzichoubei.png │ ├── xinpiansousuo.png │ ├── yuanshi.png │ ├── yuanshi_lizhi.png │ ├── zhandou.png │ ├── zhandou_end.png │ ├── zhandou_huodong_confirm.png │ ├── zhandou_huodong_enter.png │ ├── zhandou_ing.png │ ├── zhandou_jiemian.png │ ├── zhandou_loading.png │ ├── zhandou_pause.png │ ├── zhandou_quickenter.png │ ├── zhandou_start.png │ └── zhandouing.png ├── staff │ ├── 12F.png │ ├── ase.png │ ├── hj.png │ ├── longmenbi.png │ ├── mgl.png │ ├── ry.png │ └── sdhd.png └── unprocessed │ ├── 720p-xuanze.png │ ├── 720p.png │ ├── daili_test.png │ └── daili_test2.png ├── arknight-gui.py ├── basic_function.py ├── config.py ├── config.txt ├── config ├── config ├── guanqia ├── pic_confirm ├── pic_huodong └── pic_where ├── config_ark.py ├── dist ├── ark_images │ ├── 1-11 │ │ └── 1.png │ ├── processed │ │ ├── 100ti.png │ │ ├── 1xspeed.png │ │ ├── 2xspeed.png │ │ ├── 60ti.png │ │ ├── bushu_fangxiang.png │ │ ├── chapter5.png │ │ ├── daili_confirm.png │ │ ├── daili_do.png │ │ ├── daili_undo.png │ │ ├── enter_quick.png │ │ ├── gonggao.png │ │ ├── guanqia │ │ │ ├── 1-11.png │ │ │ ├── 1-11_confirm.png │ │ │ ├── 1-7.png │ │ │ ├── 1-7_confirm.png │ │ │ ├── AP-5.png │ │ │ ├── AP-5_confirm.png │ │ │ ├── CE-4.png │ │ │ ├── CE-4_confirm.png │ │ │ ├── CE-5.png │ │ │ ├── CE-5_confirm.png │ │ │ ├── LS-5.png │ │ │ ├── LS-5_confirm.png │ │ │ ├── S2-12.png │ │ │ ├── S2-12_confirm.png │ │ │ ├── SK-3.png │ │ │ ├── SK-3_confirm.png │ │ │ ├── SK-5.png │ │ │ ├── SK-5_confirm.png │ │ │ ├── chapter1.png │ │ │ ├── chapter2.png │ │ │ ├── chapter3.png │ │ │ ├── chapter4.png │ │ │ ├── gouliang.png │ │ │ ├── hongpiao.png │ │ │ ├── jiancai.png │ │ │ ├── longmenbi.png │ │ │ ├── wuzichoubei.png │ │ │ ├── xinpiansousuo.png │ │ │ └── zhandou_jiemian.png │ │ ├── huodong │ │ │ ├── huodong_GT1.png │ │ │ ├── huodong_GT2.png │ │ │ ├── huodong_GT2_confirm.png │ │ │ ├── huodong_GT3.png │ │ │ ├── huodong_GT3_confirm.png │ │ │ ├── huodong_GT4.png │ │ │ ├── huodong_GT4_confirm.png │ │ │ ├── huodong_GT5.png │ │ │ ├── huodong_GT5_confirm.png │ │ │ ├── huodong_GT6.png │ │ │ ├── huodong_GT6_confirm.png │ │ │ ├── huodong_OF-6.png │ │ │ ├── huodong_OF-6_confirm.png │ │ │ ├── huodong_OF-7.png │ │ │ ├── huodong_OF-7_confirm.png │ │ │ ├── huodong_OF-8.png │ │ │ ├── huodong_OF-8_confirm.png │ │ │ ├── huodong_OF-F3.png │ │ │ ├── huodong_OF-F3_confirm.png │ │ │ ├── huodong_OF-F4.png │ │ │ ├── huodong_OF-F4_confirm.png │ │ │ ├── zhandou_huodong1.png │ │ │ ├── zhandou_huodong_confirm.png │ │ │ ├── zhandou_huodong_enter.png │ │ │ ├── zhandou_huodong_enter1.png │ │ │ └── zhandou_huodong_enter2.png │ │ ├── mission_failed.png │ │ ├── skip.png │ │ ├── skip_confirm.png │ │ ├── src │ │ │ ├── d32-1.png │ │ │ ├── d32-2.png │ │ │ ├── gyy.png │ │ │ └── st.png │ │ ├── yuanshi_lizhi.png │ │ ├── zhandou.png │ │ ├── zhandou_end.png │ │ ├── zhandou_ing.png │ │ ├── zhandou_loading.png │ │ ├── zhandou_pause.png │ │ ├── zhandou_quickenter.png │ │ ├── zhandou_start.png │ │ └── zhandouing.png │ └── staff │ │ ├── 12F.png │ │ ├── ase.png │ │ ├── hj.png │ │ ├── longmenbi.png │ │ ├── mgl.png │ │ ├── ry.png │ │ └── sdhd.png └── config │ ├── config │ ├── guanqia │ ├── pic_confirm │ └── pic_huodong ├── function.py ├── function_ark.py ├── globalvar.py ├── processed └── f9c6cbdc6b.jpg ├── test2.py ├── test3.py ├── tools ├── PyWin32.chm ├── PyWin32.chw ├── gettext-runtime_0.18.1.1-2_win32.zip ├── glib_2.28.1-1_win32.zip ├── opencv_contrib_python-3.3.0.10-cp36-cp36m-win_amd64.whl ├── opencv_contrib_python-4.1.1.26-cp36-cp36m-win_amd64.whl ├── pkg-config-0.29.2.tar.gz ├── pkg-config_0.23-3_win32.zip └── tesseract-3.05.zip └── 关卡管理gui使用说明.docx /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // 使用 IntelliSense 了解相关属性。 3 | // 悬停以查看现有属性的描述。 4 | // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Python: 当前文件", 9 | "type": "python", 10 | "request": "launch", 11 | "program": "${file}", 12 | "console": "integratedTerminal" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /123.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/123.png -------------------------------------------------------------------------------- /456.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/456.png -------------------------------------------------------------------------------- /789.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/789.jpg -------------------------------------------------------------------------------- /PyWin32.chm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/PyWin32.chm -------------------------------------------------------------------------------- /PyWin32.chw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/PyWin32.chw -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # script_arknight 2 |

3 | 4 |

5 | 6 | ## 1.简介 7 | [EXE文件网盘链接9-22](https://pan.baidu.com/s/1KPlV1n71NOauuSAo0id1sA) 8 | 提取码:wowe 9 | [EXE文件网盘链接2020-1-9,可以自己添加关卡,使用说明见下](https://pan.baidu.com/s/1-IMsiJSrWqRwxxv5ffMMIA) 10 | 提取码:q3sx 11 | 自己写的针对windows模拟器(支持夜神模拟器及mumu(需管理员模式打开))的游戏脚本,现在能自动肝活动本及常见本和刷主线1-11免理智过日常任务,使用请注册github打个star,可以使用源码二次开发,源码使用请fork,欢迎留言交流。 12 | [一梦江湖脚本](https://github.com/vertuer/ymjh) 13 | 目前正在增加可以自动根据需求去刷固定数量的材料及掉落统计功能及用户自己添加要刷的关卡,完成时间看心情=。= 14 | 有疑问及建议可以加QQ2434995342,有空回答相关疑问 15 | 16 | 明日方舟调用库: 17 | PIL,pywin32-223,opencv-3.4.3 18 | 少女前线调用库: 19 | 多一个pyocr-0.5.3 20 | 21 | 22 | 23 | ## 2.基本原理说明: 24 | 利用抓取windows窗口图像,并对图像进行基本识别操作后对模拟器窗口发送虚拟操作指令,由于是在模拟器之外的,因此原理上不会有风险。 25 | 缺点是模拟器无法最小化,因windows程序最小化停止重绘窗口,无法抓取到窗体图像。推荐spy++这个工具,可以获取模拟器的句柄和窗体信息,[spy++下载地址](http://pan.baidu.com/s/1skMJUkH) 26 | 27 | ## 3.脚本功能(针对2020-1-9版本) 28 | 1. 所有关卡可以自行添加,添加方式详细见说明文件 29 | 2. 理智不足可以碎石,分为仅使用体力与体力源石一起上 30 | 3. 脚本开始位置无要求,可以从不同界面,或者是战斗中等开始脚本 31 | 4. 自适应分辨率,最高支持1080p, 目前测试了720p没有问题 32 | 5. 支持夜神模拟器及mumu模拟器 33 | 6. 战斗界面若暂停自动继续 34 | 7. 多重检验,不会因卡顿而选错图或者是没有打开代理导致浪费体力 35 | 8. 可在主刷图任务结束后刷主线1-11完成每日任务 36 | ## 4.挂机界面使用说明 37 | 简易界面如下 38 |

39 | 40 |

41 | 42 | 1. 使用管理员模式打开(某些模拟器因权限问题需要) 43 | 2. 选择需要刷的关卡 44 | 3. 输入刷的次数,输入999之类的较大数持续刷图知道理智耗尽 45 | 4. 若想磕体力药,则选择对应磕的数量,脚本将在每次理智耗尽后磕体力,体力药用完则停止 46 | 5. 若想通过1-11来完成每日,在脚本界面中间的1-11刷图次数下选择对应次数 47 | 6. 识图阈值一般不用设置,若使用非常规分辨率脚本无法使用的情况可以调低 48 | 7. 拖拽速度为主线1-11干员部署的速度,滑轨右侧为快速,若模拟器帧率稳定可以适当加快速度,若发现部分干员部署位置不正确则适当降低 49 | 8. 点击开始运行脚本,中途可以点击停止来中断脚本,若开始按钮无法点击,请点击结束。 50 | 51 | ## 5.关卡管理界面使用说明 52 | 简易界面如下 53 |

54 | 55 |

56 | 57 | ## 注意事项 58 | 1. 程序通过截取的图像判断关卡位置及当前进入的关卡是否正确,整体逻辑判断大致为 总章节(主线、芯片、物资、活动)-> 子章节(第一章、龙门币等)->具体关卡信息(1-7等)->判断是否为脚本正在处理的关卡 59 | 2. 因此若要添加关卡图库,则需要两张图,第一张是能够让脚本找到这个关卡的位置,第二则是点击关卡后能够判断进入正确的相关信息,如关卡的中文名称 60 | ## 简易流程 61 | 1. 通过“打开文件”或者是“模拟器图像载入”加载图像 62 | 2. 在左侧图像中按住鼠标左键选取截图区域 63 | 3. 点击右侧“开始图像匹配”,若只有选择关卡区域,则表示截取的图像可以使用 64 | 4. 左键选中想要添加的图库的上一级目录,右键“添加” 65 | 5. 输入关卡或章节名称,确定 66 | 6. 若需要添加关卡则还要添加上述注意事项2介绍的关卡确认图库,添加完后程序自动保存关卡信息 67 | 68 | ## 6.后续增加功能: 69 | 1. 脚本自动更新 70 | 2. 用户可以通过添加图库自行添加想刷的关卡,类似于按键精灵(ok) 71 | 3. 自己编写特征匹配函数dll 72 | 4. 优化代码结构 73 | 5. 咕咕咕 74 | 75 | 76 | ## 7.更新内容 77 | ### (2019-6-6) 78 | 1. 界面设计,基本功能满足 79 | 2. exe打包,真是个大坑 80 | ### (2019-6-7) 81 | 1. 增加主线1-11,可以选择刷完活动图后再刷固定次数 82 | ### (2019-6-8) 83 | 1. 增加CE-5,LS-5,AP-5,SK-3,SK-5,S2-12 84 | 2. 添加mumu模拟器支持 85 | ### (2019-6-30) 86 | 1. 增加1-7,进入咸鱼养老期 87 | ### (2019-7-13) 88 | 1. 增加磕体力药选项 89 | ### (2019-7-30) 90 | 1. 修正ce-5 91 | ### (2019-9-3) 92 | 1. 增加活动关卡 93 | ### (2019-10-19) 94 | 1. 优化代码结构 95 | 2. 加入关卡管理功能 96 | ### (2020-1-9) 97 | 1. 优化代码结构 98 | 2. 加入剿灭关卡 99 | 3. 修复新ui所带来的体力药无法使用情况 100 | 4. 自定义关卡加了一些功能,为以后一些想法实现做铺垫 101 | 5. emm其实我方舟已经弃坑了,需要双生视界脚本的可以看我界面,最近战双也不错 102 | -------------------------------------------------------------------------------- /__pycache__/add_gui.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/__pycache__/add_gui.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/basic_function.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/__pycache__/basic_function.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/config.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/__pycache__/config.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/config_ark.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/__pycache__/config_ark.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/function.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/__pycache__/function.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/function_ark.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/__pycache__/function_ark.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/globalvar.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/__pycache__/globalvar.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/test3.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/__pycache__/test3.cpython-36.pyc -------------------------------------------------------------------------------- /apitest.py: -------------------------------------------------------------------------------- 1 | import win32gui 2 | import win32ui 3 | import win32con 4 | import win32api 5 | import time 6 | from ctypes import windll 7 | import function 8 | import pyocr 9 | from PIL import Image 10 | import numpy as np 11 | import re 12 | import os 13 | from basic_function import * 14 | from function import * 15 | def qwe123(): 16 | print('123') 17 | 18 | def qwe789(): 19 | print('124') 20 | 21 | number = '123' 22 | globals().get('qwe{}'.format(number))() 23 | print('123') 24 | 25 | 26 | # def get_allwindow(): 27 | # win32gui.EnumWindows(_MyCallback, lambda handle: handle.append(handle)) 28 | # handle = win32gui.FindWindow(None,'腾讯手游助手【标准引擎】') 29 | # win32gui.ShowWindow(handle, win32con.SW_SHOWNORMAL) 30 | # get_allwindow() 31 | # win32gui.CloseWindow(handle) 32 | # print('233') 33 | 34 | # def kuaixiu_function(thresh = 1000): 35 | # while(1): 36 | # time.sleep(1) 37 | # t =[] 38 | # im = np.asarray(Image.open('./pics/ocr/6.png')) 39 | # position = pic_locate(config.pic_confirm['kuaisuxiufu'], im, 0.8, True, rgb_bool=False) 40 | # if position!=None: 41 | # for i in position: 42 | # w = int(i['result'][0]) 43 | # h = int(i['result'][1]) 44 | # im = im[h-70:h-40,w-60:w+60] 45 | # im = Image.fromarray(im) 46 | # result = ocr(im) 47 | # if len(result)!=6: 48 | # break 49 | # elif int(result)>thresh: 50 | # while(1): 51 | # mouse_click(handle,i) 52 | # if confirm_where(handle,'kuaixiu_confirm',False): 53 | # break 54 | # mouse_click(handle,config.zhujiemian_houqin_confirm) 55 | handlelist = [] 56 | win32gui.EnumWindows(lambda hWnd, param: param.append([hWnd, 57 | win32gui.GetClassName(hWnd), 58 | win32gui.GetWindowText(hWnd)]) 59 | if win32gui.GetWindowText(hWnd)=='腾讯手游助手【标准引擎】' else None, handlelist) 60 | win32gui.EnumWindows(lambda hWnd, param: param.append([hWnd, 61 | win32gui.GetClassName(hWnd), 62 | win32gui.GetWindowText(hWnd)]) 63 | , handlelist) 64 | win = win32gui.FindWindow(None,'夜神模拟器') 65 | # win = win32gui.GetDesktopWindow()position[0] 66 | # show_window(win) 67 | # im = prtsc(win) 68 | # im.show() 69 | # hide_window(win) 70 | # win = 396158 71 | hWndChildList=[] 72 | win32gui.EnumChildWindows(win, lambda hWnd, param: param.append([hWnd 73 | ,win32gui.GetClassName(hWnd) 74 | ,win32gui.GetWindowText(hWnd)]) 75 | if win32gui.GetWindowText(hWnd) == 'ScreenBoardClassWindow' else None, hWndChildList) 76 | handle = hWndChildList[0][0] 77 | im = prtsc(handle) 78 | # im = np.asarray(Image.open('./pics/ocr/13.png')) 79 | position = pic_locate(config.pic_confirm['3zhanyi'], im, 0.6,False, rgb_bool=False) 80 | if position != None: 81 | for i in position: 82 | w = int(i['result'][0]) 83 | h = int(i['result'][1]) 84 | im = im[h - 70:h - 40, w - 60:w + 60] 85 | result = ocr(im) 86 | if len(result) != 6: 87 | break 88 | elif int(result) > 1000: 89 | count = count + 1 90 | # im = prtsc(win) 91 | # function.confirm_where(win,'chaijie',True) 92 | # (a,b,c,d) = win32gui.GetClientRect(win) 93 | 94 | 95 | kuaixiu_function(1000) 96 | 97 | 98 | # tools = pyocr.get_available_tools() 99 | # b = Image.open('./pics/ocr/2.png') 100 | # b = b.convert('L') 101 | # b = np.asarray(b) 102 | # # b =b.resize((120,40)) 103 | # b = Image.fromarray(b) 104 | # a =tools[0].image_to_string(b,lang='eng') 105 | # time.sleep(1) 106 | # win32gui.SetForegroundWindow(win) 107 | # mouse_click(win,288,364) 108 | print('233') 109 | -------------------------------------------------------------------------------- /ark_images/processed/100ti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/100ti.png -------------------------------------------------------------------------------- /ark_images/processed/1xspeed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/1xspeed.png -------------------------------------------------------------------------------- /ark_images/processed/2xspeed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/2xspeed.png -------------------------------------------------------------------------------- /ark_images/processed/60ti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/60ti.png -------------------------------------------------------------------------------- /ark_images/processed/bushu_fangxiang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/bushu_fangxiang.png -------------------------------------------------------------------------------- /ark_images/processed/chapter1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/chapter1.png -------------------------------------------------------------------------------- /ark_images/processed/chapter2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/chapter2.png -------------------------------------------------------------------------------- /ark_images/processed/chapter3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/chapter3.png -------------------------------------------------------------------------------- /ark_images/processed/chapter4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/chapter4.png -------------------------------------------------------------------------------- /ark_images/processed/chapter5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/chapter5.png -------------------------------------------------------------------------------- /ark_images/processed/daili_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/daili_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/daili_do.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/daili_do.png -------------------------------------------------------------------------------- /ark_images/processed/daili_undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/daili_undo.png -------------------------------------------------------------------------------- /ark_images/processed/enter_quick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/enter_quick.png -------------------------------------------------------------------------------- /ark_images/processed/gonggao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/gonggao.png -------------------------------------------------------------------------------- /ark_images/processed/gouliang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/gouliang.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/1-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/1-11.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/1-11_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/1-11_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/1-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/1-7.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/1-7_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/1-7_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/AP-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/AP-5.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/AP-5_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/AP-5_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/CE-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/CE-4.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/CE-4_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/CE-4_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/CE-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/CE-5.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/CE-5_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/CE-5_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/LS-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/LS-5.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/LS-5_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/LS-5_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/S2-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/S2-12.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/S2-12_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/S2-12_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/SK-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/SK-3.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/SK-3_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/SK-3_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/SK-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/SK-5.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/SK-5_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/SK-5_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/chapter1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/chapter1.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/chapter2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/chapter2.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/chapter3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/chapter3.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/chapter4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/chapter4.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/gouliang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/gouliang.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/hongpiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/hongpiao.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/jiancai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/jiancai.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/longmenbi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/longmenbi.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/wuzichoubei.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/wuzichoubei.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/xinpiansousuo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/xinpiansousuo.png -------------------------------------------------------------------------------- /ark_images/processed/guanqia/zhandou_jiemian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/guanqia/zhandou_jiemian.png -------------------------------------------------------------------------------- /ark_images/processed/hongpiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/hongpiao.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_GT1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_GT1.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_GT2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_GT2.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_GT2_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_GT2_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_GT3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_GT3.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_GT3_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_GT3_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_GT4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_GT4.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_GT4_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_GT4_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_GT5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_GT5.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_GT5_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_GT5_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_GT6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_GT6.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_GT6_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_GT6_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_OF-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_OF-6.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_OF-6_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_OF-6_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_OF-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_OF-7.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_OF-7_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_OF-7_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_OF-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_OF-8.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_OF-8_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_OF-8_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_OF-F3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_OF-F3.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_OF-F3_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_OF-F3_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_OF-F4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_OF-F4.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/huodong_OF-F4_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/huodong_OF-F4_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/zhandou_huodong1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/zhandou_huodong1.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/zhandou_huodong_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/zhandou_huodong_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/zhandou_huodong_enter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/zhandou_huodong_enter.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/zhandou_huodong_enter1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/zhandou_huodong_enter1.png -------------------------------------------------------------------------------- /ark_images/processed/huodong/zhandou_huodong_enter2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/huodong/zhandou_huodong_enter2.png -------------------------------------------------------------------------------- /ark_images/processed/jiancai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/jiancai.png -------------------------------------------------------------------------------- /ark_images/processed/longmenbi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/longmenbi.png -------------------------------------------------------------------------------- /ark_images/processed/mission_failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/mission_failed.png -------------------------------------------------------------------------------- /ark_images/processed/no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/no.png -------------------------------------------------------------------------------- /ark_images/processed/ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/ok.png -------------------------------------------------------------------------------- /ark_images/processed/skip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/skip.png -------------------------------------------------------------------------------- /ark_images/processed/skip_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/skip_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/src/d32-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/src/d32-1.png -------------------------------------------------------------------------------- /ark_images/processed/src/d32-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/src/d32-2.png -------------------------------------------------------------------------------- /ark_images/processed/src/gyy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/src/gyy.png -------------------------------------------------------------------------------- /ark_images/processed/src/st.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/src/st.png -------------------------------------------------------------------------------- /ark_images/processed/wuzichoubei.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/wuzichoubei.png -------------------------------------------------------------------------------- /ark_images/processed/xinpiansousuo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/xinpiansousuo.png -------------------------------------------------------------------------------- /ark_images/processed/yuanshi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/yuanshi.png -------------------------------------------------------------------------------- /ark_images/processed/yuanshi_lizhi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/yuanshi_lizhi.png -------------------------------------------------------------------------------- /ark_images/processed/zhandou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/zhandou.png -------------------------------------------------------------------------------- /ark_images/processed/zhandou_end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/zhandou_end.png -------------------------------------------------------------------------------- /ark_images/processed/zhandou_huodong_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/zhandou_huodong_confirm.png -------------------------------------------------------------------------------- /ark_images/processed/zhandou_huodong_enter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/zhandou_huodong_enter.png -------------------------------------------------------------------------------- /ark_images/processed/zhandou_ing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/zhandou_ing.png -------------------------------------------------------------------------------- /ark_images/processed/zhandou_jiemian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/zhandou_jiemian.png -------------------------------------------------------------------------------- /ark_images/processed/zhandou_loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/zhandou_loading.png -------------------------------------------------------------------------------- /ark_images/processed/zhandou_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/zhandou_pause.png -------------------------------------------------------------------------------- /ark_images/processed/zhandou_quickenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/zhandou_quickenter.png -------------------------------------------------------------------------------- /ark_images/processed/zhandou_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/zhandou_start.png -------------------------------------------------------------------------------- /ark_images/processed/zhandouing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/processed/zhandouing.png -------------------------------------------------------------------------------- /ark_images/staff/12F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/staff/12F.png -------------------------------------------------------------------------------- /ark_images/staff/ase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/staff/ase.png -------------------------------------------------------------------------------- /ark_images/staff/hj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/staff/hj.png -------------------------------------------------------------------------------- /ark_images/staff/longmenbi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/staff/longmenbi.png -------------------------------------------------------------------------------- /ark_images/staff/mgl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/staff/mgl.png -------------------------------------------------------------------------------- /ark_images/staff/ry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/staff/ry.png -------------------------------------------------------------------------------- /ark_images/staff/sdhd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/staff/sdhd.png -------------------------------------------------------------------------------- /ark_images/unprocessed/720p-xuanze.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/unprocessed/720p-xuanze.png -------------------------------------------------------------------------------- /ark_images/unprocessed/720p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/unprocessed/720p.png -------------------------------------------------------------------------------- /ark_images/unprocessed/daili_test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/unprocessed/daili_test.png -------------------------------------------------------------------------------- /ark_images/unprocessed/daili_test2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/ark_images/unprocessed/daili_test2.png -------------------------------------------------------------------------------- /arknight-gui.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | ########################################################################### 4 | ## Python code generated with wxFormBuilder (version Jun 17 2015) 5 | ## http://www.wxformbuilder.org/ 6 | ## 7 | ## PLEASE DO "NOT" EDIT THIS FILE! 8 | ########################################################################### 9 | 10 | import wx 11 | import wx.xrc 12 | import inspect 13 | import ctypes 14 | import sys 15 | import threading 16 | from test3 import * 17 | import wx.adv 18 | from config_ark import ChapterCTE,ChapterETC 19 | from add_gui import MyFrame1 as MyFrame2 20 | ########################################################################### 21 | ## Class MyFrame1 22 | ########################################################################### 23 | def _async_raise(tid, exctype): 24 | """raises the exception, performs cleanup if needed""" 25 | tid = ctypes.c_long(tid) 26 | if not inspect.isclass(exctype): 27 | exctype = type(exctype) 28 | res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(exctype)) 29 | if res == 0: 30 | return 0 31 | elif res != 1: 32 | # """if it returns a number greater than one, you're in trouble, 33 | # and you should call it again with exc=NULL to revert the effect""" 34 | ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, None) 35 | raise SystemError("PyThreadState_SetAsyncExc failed") 36 | return 1 37 | 38 | def stop_thread(thread): 39 | return _async_raise(thread.ident, SystemExit) 40 | 41 | class RedirectText(object): 42 | def __init__(self,aWxTextCtrl): 43 | self.out=aWxTextCtrl 44 | 45 | def write(self,string): 46 | self.out.WriteText(string) 47 | 48 | 49 | class RunThread(threading.Thread): 50 | def __init__(self,zhuxian_num,guanqia_infor,yuanshi_num,shuatu_num,thresh,handle): 51 | self.zhuxian_num = int(zhuxian_num) 52 | #self.chapter = guanqia_infor[0] 53 | self.guanqia_infor = guanqia_infor 54 | self.shuatu_num = shuatu_num 55 | if yuanshi_num=="No!": 56 | globalvar.set_yuanshi(0) 57 | elif yuanshi_num=="仅使用体力药": 58 | globalvar.set_yuanshi(1) 59 | elif yuanshi_num=="使用源石": 60 | globalvar.set_yuanshi(2) 61 | globalvar.set_thresh_pic(float(thresh)/100) 62 | self.handle = handle 63 | threading.Thread.__init__(self) 64 | def run(self): 65 | #print("当前选择关卡{}".format()) 66 | temp_zhuxian = zx_1_11(self.handle, self.zhuxian_num) 67 | signal = 0 68 | try: 69 | #verified at 2019-9-3 70 | #verified at 2019-10-12 71 | #改变关卡命名规则 72 | chapter = self.guanqia_infor.split('|')[0] 73 | if chapter in ['HD']: 74 | temp_class = Shark_Event(self.handle, num=self.shuatu_num, guanqia=self.guanqia_infor) # 类实例化,num为刷本次数,guanqia为刷图类型,仅支持GT2-6 75 | temp_class.start() 76 | else: 77 | temp_class = Zhuxian(self.handle, num=self.shuatu_num, guanqia=self.guanqia_infor) 78 | temp_class.start() 79 | except config_ark.ExitError: 80 | temp_zhuxian.start() 81 | except: 82 | signal = 1 83 | 84 | if signal==0: 85 | temp_zhuxian.start() 86 | print("脚本运行完成") 87 | 88 | 89 | class MyFrame1(wx.Frame): 90 | def __init__(self, parent): 91 | wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition, 92 | size=wx.Size(290, 430), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) 93 | self.SIZE1 = (100,30) 94 | 95 | 96 | self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) 97 | 98 | 99 | 100 | self.m_staticText1 = wx.StaticText(self, wx.ID_ANY, u"总章选择", (10,15), (100,25), 0) 101 | self.m_staticText1.Wrap(-1) 102 | 103 | self.m_staticText2 = wx.StaticText(self, wx.ID_ANY, u"子类选择", (100,15), (100,25), 0) 104 | self.m_staticText2.Wrap(-1) 105 | 106 | self.m_staticText3 = wx.StaticText(self, wx.ID_ANY, u"关卡选择", (180,15),(100,25) , 0) 107 | self.m_staticText3.Wrap(-1) 108 | 109 | 110 | tmp1 = list(config_ark.guanqia_pic.keys()) 111 | tmp2 = list(config_ark.huodong_pic.keys()) 112 | tmp_guanqia = tmp1 + tmp2 113 | index = 0 114 | for i in range(len(tmp_guanqia)): 115 | tmp_str = tmp_guanqia[index] 116 | if "|" in tmp_str: 117 | if "1-11" in tmp_str or "_confirm" in tmp_str: 118 | tmp_guanqia.remove(tmp_str) 119 | index -= 1 120 | else: 121 | tmp_guanqia.remove(tmp_str) 122 | index -= 1 123 | index += 1 124 | 125 | 126 | self.guanqia_dict = {'主线':{},'物资筹备':{},'芯片获取':{},'活动':{}} 127 | for i in tmp_guanqia: 128 | tmp_split = i.split('|') 129 | if len(tmp_split)!=3: 130 | continue 131 | total_class = tmp_split[0] 132 | map_total_class = ChapterETC(total_class) 133 | chapter = tmp_split[1] 134 | name = tmp_split[2] 135 | if chapter in self.guanqia_dict[map_total_class]: 136 | self.guanqia_dict[map_total_class][chapter].append(name) 137 | else: 138 | self.guanqia_dict[map_total_class][chapter] = [name] 139 | 140 | #self.guanqia_dict[self._ChapterETC(chapter)].append(name) 141 | 142 | self.event_choise = wx.Choice(self, wx.ID_ANY, (5,40), (70,30), list(self.guanqia_dict.keys()), 0) 143 | self.event_choise.SetSelection(0) 144 | self.event_choise.Bind(wx.EVT_CHOICE,self.Choice1Selected) 145 | 146 | choise2_dict = list(self.guanqia_dict[list(self.guanqia_dict.keys())[0]].keys()) 147 | self.event_choise2 = wx.Choice(self, wx.ID_ANY, (95,40), (70,30), choise2_dict, 0) 148 | self.event_choise2.SetSelection(0) 149 | self.event_choise2.Bind(wx.EVT_CHOICE,self.Choice2Selected) 150 | 151 | choise3_dict = self.guanqia_dict[list(self.guanqia_dict.keys())[0]][choise2_dict[0]] 152 | self.event_choise3 = wx.Choice(self, wx.ID_ANY, (175,40), (70,30), choise3_dict, 0) 153 | self.event_choise3.SetSelection(0) 154 | # 155 | self.m_staticText4 = wx.StaticText(self, wx.ID_ANY, u"理智万岁", (10,90), (100,25), 0) 156 | self.m_staticText4.Wrap(-1) 157 | 158 | self.num_label = wx.StaticText(self, wx.ID_ANY, u"刷图次数",(100,90), (100,25), 0) 159 | self.num_label.Wrap(-1) 160 | 161 | self.thresh_label = wx.StaticText(self, wx.ID_ANY, u"识图阈值", (185,90), (100,25), 0) 162 | self.thresh_label.Wrap(-1) 163 | # 164 | yuanshi_choiceChoices = [u"No!", u"仅使用体力药", u"使用源石"] 165 | self.yuanshi_choice = wx.Choice(self, wx.ID_ANY, (5,120), (80,25), yuanshi_choiceChoices, 0) 166 | self.yuanshi_choice.SetSelection(0) 167 | 168 | self.num = wx.TextCtrl(self, wx.ID_ANY, u"20", (100,120), (40,25), 0) 169 | self.num.SetMaxLength(0) 170 | 171 | self.thresh = wx.Slider(self, wx.ID_ANY, 85, 60, 100, (160,120), (100,25), 172 | wx.SL_HORIZONTAL | wx.SL_LABELS) 173 | 174 | self.label1 = wx.StaticText(self, wx.ID_ANY, u"关卡结束后1-11主线次数", (10,170), (100,25), 0) 175 | self.label1.Wrap(-1) 176 | 177 | zhuxian_numChoices = [u"0", u"1", u"2", u"3", u"4", u"5"] 178 | self.zhuxian_num = wx.Choice(self, wx.ID_ANY, (5,200), (40,25), zhuxian_numChoices, 0) 179 | self.zhuxian_num.SetSelection(5) 180 | # 181 | # 182 | # 183 | self.drag_speed_label = wx.StaticText(self, wx.ID_ANY, u"拖拽速度", (185,170), (100,25), 0) 184 | self.drag_speed_label.Wrap(-1) 185 | 186 | self.drag_speed = wx.Slider(self, wx.ID_ANY, 20, 5, 30, (165,200), (100,25), 187 | wx.SL_HORIZONTAL | wx.SL_INVERSE) 188 | # 189 | # 190 | # 191 | self.start = wx.Button(self, wx.ID_ANY, u"开始", (5,230), (90,35), 0) 192 | self.end = wx.Button(self, wx.ID_ANY, u"停止", (170,230), (90,35), 0) 193 | 194 | self.infor = wx.TextCtrl(self, wx.ID_ANY, u"", (5,270), (255,90), wx.TE_MULTILINE|wx.TE_READONLY) 195 | self.infor.SetMaxLength(200) 196 | #self.infor.Enable(False) 197 | self.infor.SetMinSize(wx.Size(-1, 80)) 198 | self.infor.SetMaxSize(wx.Size(-1, 400)) 199 | sys.stdout = RedirectText(self.infor) 200 | self.infor.Bind(wx.EVT_TEXT_MAXLEN,self.TextClear) 201 | self.m_hyperlink1 = wx.adv.HyperlinkCtrl(self, wx.ID_ANY, u"使用说明", u"https://github.com/vertuer/script_arknight", 202 | (110,365), (50,30), wx.adv.HL_DEFAULT_STYLE) 203 | 204 | 205 | 206 | #Connect Events 207 | self.start.Bind(wx.EVT_BUTTON, self.ScriptBegin) 208 | self.end.Bind(wx.EVT_BUTTON, self.ScriptEnd) 209 | #初始化操作 210 | handle = get_handle([1920, 1080]) # 获取模拟器窗体句柄 211 | if handle == -1: 212 | wx.MessageBox("未检测到夜神模拟器,请重新启动", "提示", wx.OK | wx.ICON_INFORMATION, parent=self) 213 | wx.Exit() 214 | self.handle = handle 215 | def __del__(self): 216 | pass 217 | def TextClear(self,event): 218 | self.infor.Clear() 219 | def Choice1Selected(self,event): 220 | #dealing when choice1 is selected 221 | tmp_items = list(self.guanqia_dict[self.event_choise.GetStringSelection()].keys()) 222 | self.event_choise2.SetItems(tmp_items) 223 | if tmp_items!=[]: 224 | self.event_choise2.SetSelection(0) 225 | self.event_choise3.SetItems(self.guanqia_dict[self.event_choise.GetStringSelection()][self.event_choise2.GetStringSelection()]) 226 | self.event_choise3.SetSelection(0) 227 | else: 228 | self.event_choise3.Clear() 229 | def Choice2Selected(self,event): 230 | #dealing when choice2 is selected 231 | self.event_choise3.SetItems(self.guanqia_dict[self.event_choise.GetStringSelection()][self.event_choise2.GetStringSelection()]) 232 | self.event_choise3.SetSelection(0) 233 | # Virtual event handlers, overide them in your derived class 234 | def ScriptBegin(self, event): 235 | def _get_full_name(total_class,chapter,name): 236 | return ChapterCTE(total_class) + "|" + chapter + "|" + name 237 | if self.start.GetLabel()=="开始": 238 | try: 239 | temp_num = int(self.num.GetValue()) 240 | except: 241 | wx.MessageBox("战斗次数请输入数字!!", "提示", wx.OK | wx.ICON_INFORMATION, parent=self) 242 | self.num.Clear() 243 | return 244 | globalvar.set_drag_speed(int(self.drag_speed.GetValue())) 245 | self.start.Enable(False) 246 | self.end.Enable(True) 247 | self.start.SetLabel("正在运行中") 248 | total_class = self.event_choise.GetStringSelection() #'主线' 249 | chapter = self.event_choise2.GetStringSelection() # '第一章' 250 | name = self.event_choise3.GetStringSelection() #"1-7' 251 | t = RunThread(self.zhuxian_num.GetStringSelection(),_get_full_name(total_class,chapter,name),self.yuanshi_choice.GetStringSelection(),temp_num,self.thresh.GetValue(),self.handle) 252 | self.thread_id = t 253 | #self.event_choise.GetCurrentSelection() 254 | t.run() #only for test 255 | #t.start() 256 | self.end.Enable(True) 257 | #self.start.SetLabel("开始") 258 | #self.start.Enable(True) 259 | elif self.start.GetLabel()=="暂停": 260 | pass 261 | #pass 还不会 262 | 263 | def ScriptEnd(self, event): 264 | stop_thread(self.thread_id) 265 | self.start.Enable(True) 266 | self.end.Enable(False) 267 | self.start.SetLabel("开始") 268 | 269 | 270 | class SubclassDialog(wx.Dialog): 271 | def __init__(self): 272 | wx.Dialog.__init__(self, None, -1, '请选择脚本功能', 273 | size=(300, 100)) 274 | okButton = wx.Button(self, wx.ID_OK, "脚本挂机", pos=(15, 15)) 275 | okButton.SetDefault() 276 | cancelButton = wx.Button(self, wx.ID_CANCEL, "脚本关卡管理", 277 | pos=(115, 15)) 278 | 279 | class Myapp(wx.App): 280 | def __init__(self): 281 | #self.qwe = 123 282 | wx.App.__init__(self,redirect=False) 283 | 284 | def OnClose(self,event): 285 | self.ExitMainLoop() 286 | 287 | def OnInit(self): 288 | #print(self.qwe) 289 | self.frame1 = MyFrame1(parent=None) 290 | self.frame2 = MyFrame2(parent=None) 291 | self.frame1.Bind(wx.EVT_CLOSE,self.OnClose) 292 | self.frame2.Bind(wx.EVT_CLOSE,self.OnClose) 293 | dialog = SubclassDialog() 294 | result = dialog.ShowModal() 295 | #dialog.Bind(wx.EVT_CLOSE,self.OnClose) 296 | dialog.Destroy() 297 | if result == wx.ID_OK: 298 | #handle = get_handle() 299 | config_ark.pic_load_ram() # 将配置文件中的图像载入内存 300 | #self.SetTopWindow(self.frame1) 301 | self.frame1.Show() 302 | 303 | elif result == wx.ID_CANCEL: 304 | #self.SetTopWindow(self.frame2) 305 | self.frame2.Show() 306 | 307 | 308 | 309 | #self.SetTopWindow(self.frame1) 310 | return True 311 | if __name__ == "__main__": 312 | #just for test 313 | app = Myapp() 314 | app.MainLoop() 315 | #app.OnExit() 316 | # handle = function_ark.get_handle() 317 | # pic_load_ram() 318 | # temp = zx_1_11(handle,2) 319 | # temp.start() 320 | # 321 | # origin_pic = "./ark_images/unprocessed/1-11/1.png" 322 | # origin_pic = Image.open(origin_pic) 323 | # origin_pic = origin_pic.convert("RGB") 324 | # img_temp = "./ark_images/1-11/1.png" 325 | # img_temp = Image.open(img_temp) 326 | # temp_im = img_temp.convert("RGB") 327 | # width = int(1920 / 1920 * temp_im.size[0]) 328 | # height = int(1080 / 1080 * temp_im.size[1]) 329 | # temp_im = temp_im.resize((width, height), Image.ANTIALIAS) 330 | # position = function_ark.pic_locate(np.array(temp_im),np.array(origin_pic),0.8,True,True) 331 | # handle = get_handle() 332 | # position = function_ark.pic_position(handle,np.array(temp_im)) 333 | 334 | 335 | -------------------------------------------------------------------------------- /basic_function.py: -------------------------------------------------------------------------------- 1 | import win32con,win32gui,win32ui 2 | import time 3 | from PIL import Image 4 | import numpy as np 5 | import aircv 6 | # import skimage.io as io 7 | # import re 8 | import globalvar 9 | # import pyocr 10 | # def ocr(im,mode='time'): #input PIL image 11 | # #ocr识别 12 | # im = Image.fromarray(im) 13 | # tools = pyocr.get_available_tools() 14 | # b = im.convert('L') 15 | # a = tools[0].image_to_string(b, lang='eng') 16 | # if mode =='time': 17 | # a = re.sub('\D','',a) 18 | # return a 19 | 20 | 21 | def pic_locate(pic_match,pic_origin,thresh,findall=True,rgb_bool=True): #pic_match is the dir path, pic_origin is the data array 22 | """ 23 | 24 | :param pic_match: 源图像路径或图像数组 25 | :param pic_origin: 背景图像,ndarray 26 | :param thresh: 阈值,数值 27 | :param findall: true 为寻找全部匹配图像,false为只返回一个 28 | :param rgb_bool: true为匹配颜色,false为不匹配颜色 29 | :return: 30 | """ 31 | if(isinstance(pic_match,str)): #若为路径,则根据当前分辨率动态调整实际对比图像 32 | pic_test = Image.open(pic_match,'r') 33 | resolution = globalvar.get_window_resolution() 34 | max_resolution = globalvar.get_max_resolution() 35 | width = int(resolution[0] / max_resolution[0] * pic_test.size[0]) 36 | height = int(resolution[1] / max_resolution[1] * pic_test.size[1]) 37 | pic_test = np.array(pic_test.resize((width, height), Image.ANTIALIAS)) 38 | elif(isinstance(pic_match,np.ndarray)): 39 | pic_test = pic_match 40 | if findall: 41 | position = aircv.find_all_template(pic_origin,pic_test,thresh,rgb=rgb_bool) 42 | else: 43 | position = aircv.find_template(pic_origin, pic_test, thresh,rgb=rgb_bool) 44 | # C = np.fft.ifft2(np.fft.fft2(pic_origin)*fftpack.fft2(pic_match_path,(888,1435,3))) 45 | return position 46 | 47 | def hide_window(handle): 48 | #最小化窗口 49 | win32gui.SendMessage(handle, win32con.WM_SYSCOMMAND,win32con.SC_MINIMIZE,0) 50 | # win32gui.SendMessage(handle, win32con.WM_CLOSE,0) 51 | 52 | def get_cursor(handle): 53 | #返回鼠标位置,相对窗体位置 54 | [x,y] = win32gui.GetCursorPos() 55 | return x,y 56 | 57 | def pos(x,y): 58 | #鼠标位置整合,32位整数型 59 | return y<<16|x 60 | 61 | def mouse_click(handle,xy): 62 | #模拟鼠标点击, 63 | x = int(xy[0]) 64 | y = int(xy[1]) 65 | # x,y = win32gui.ScreenToClient(handle,(x,y)) 66 | win32gui.SendMessage(handle,win32con.WM_LBUTTONDOWN,win32con.MK_LBUTTON, pos(x,y)) 67 | # win32gui.PostMessage(handle,win32con.WM_LBUTTONDBLCLK,win32con.MK_LBUTTON, win32api.MAKELONG(x,y)) 68 | time.sleep(0.1) 69 | # win32gui.SendMessage(handle, win32con.WM_MOUSELEAVE, win32con.MK_LBUTTON, pos(x,y)) 70 | win32gui.SendMessage(handle, win32con.WM_LBUTTONUP,0, pos(x,y)) 71 | 72 | def mouse_scroll(handle): 73 | #模拟鼠标滚轮 74 | win32gui.SendMessage(handle,win32con.WM_MBUTTONDOWN,win32con.MK_MBUTTON, 0) 75 | time.sleep(0.1) 76 | win32gui.SendMessage(handle, win32con.WM_MBUTTONUP,0, 0) 77 | 78 | def mouse_drag(handle,xy,speed): 79 | #模拟鼠标拖拽 80 | # win32gui.PostMessage(handle,win32con.WM_LBUTTONDOWN,win32con.MK_LBUTTON,pos(x,y)) 81 | # win32gui.SetCapture(handle) 82 | x,y = int(xy[0][0]),int(xy[0][1]) 83 | x_move,y_move = int(xy[1][0]),int(xy[1][1]) 84 | win32gui.PostMessage(handle, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, pos(x, y)) 85 | win32gui.SendMessage(handle, win32con.WM_MOUSEMOVE, win32con.MK_LBUTTON, pos(x, y)) 86 | for i in range(speed): 87 | time.sleep(0.05) 88 | win32gui.PostMessage(handle, win32con.WM_MOUSEMOVE, win32con.MK_LBUTTON, pos(x+int((x_move-x)/speed*(i+1)), y+int((y_move-y)/speed*(i+1)))) 89 | # win32gui.PostMessage(handle, win32con.WM_MOUSEMOVE, win32con.MK_LBUTTON, pos(x_move, y_move+117)) 90 | # win32gui.SendMessage(handle, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, pos(x, y)) 91 | time.sleep(0.5) 92 | win32gui.PostMessage(handle, win32con.WM_LBUTTONUP, 0, pos(x_move, y_move)) 93 | # win32gui.SendMessage(handle,win32con.WM_MOUSEMOVE,win32con.MK_LBUTTON,pos(x,y)) 94 | # win32gui.SendMessage(handle,win32con.WM_MOUSEMOVE,win32con.MK_LBUTTON,pos(x_move,y_move)) 95 | # time.sleep(0.1) 96 | # win32gui.SendMessage(handle, win32con.WM_LBUTTONUP, 0, pos(x_move, y_move)) 97 | 98 | def show_window(handle): 99 | #最大化窗口 100 | if win32gui.IsIconic(handle): 101 | win32gui.SendMessage(handle,win32con.WM_SYSCOMMAND,win32con.SC_RESTORE,0) 102 | time.sleep(0.2) 103 | 104 | def TestEnumWindows(): 105 | def _MyCallback(hwnd, extra): 106 | windows = extra 107 | temp = [] 108 | temp.append(hex(hwnd)) 109 | temp.append(win32gui.GetClassName(hwnd)) 110 | temp.append(win32gui.GetWindowText(hwnd)) 111 | windows[hwnd] = temp 112 | windows = {} 113 | win32gui.EnumWindows(_MyCallback, windows) 114 | 115 | for item in windows: 116 | print(windows[item]) 117 | return windows 118 | 119 | def prtsc(handle): #returns the im of the printed software 120 | left, top, right, bot = win32gui.GetWindowRect(handle) 121 | w = right - left 122 | h = bot - top 123 | # 返回句柄窗口的设备环境、覆盖整个窗口,包括非客户区,标题栏,菜单,边框 124 | hwndDC = win32gui.GetWindowDC(handle) 125 | # 创建设备描述表 126 | mfcDC = win32ui.CreateDCFromHandle(hwndDC) 127 | # 创建内存设备描述表 128 | saveDC = mfcDC.CreateCompatibleDC() 129 | # 创建位图对象 130 | saveBitMap = win32ui.CreateBitmap() 131 | saveBitMap.CreateCompatibleBitmap(mfcDC, w, h) 132 | saveDC.SelectObject(saveBitMap) 133 | # # 截图至内存设备描述表 134 | img_dc = mfcDC 135 | mem_dc = saveDC 136 | mem_dc.BitBlt((0, 0), (w, h), img_dc, (0, 0), win32con.SRCCOPY) 137 | bmpinfo = saveBitMap.GetInfo() 138 | bmpstr = saveBitMap.GetBitmapBits(True) 139 | # 生成图像 140 | im = Image.frombuffer( 141 | 'RGB', 142 | (bmpinfo['bmWidth'], bmpinfo['bmHeight']), 143 | bmpstr, 'raw', 'BGRX', 0, 1) 144 | return np.array(im) 145 | 146 | def save_im(handle,file_name): 147 | im = prtsc(handle) 148 | temp_im = Image.fromarray(im) 149 | temp_im.save(file_name) 150 | print("img saved to {}\n".format(file_name)) 151 | 152 | 153 | def get_handle(resolution=[1920,1080]): #now only the 夜神 is supported 154 | handlelist = [] 155 | handle_infor = globalvar.get_handle_infor() 156 | win32gui.EnumWindows(lambda hWnd, param: param.append([hWnd, 157 | win32gui.GetClassName(hWnd), 158 | win32gui.GetWindowText(hWnd)]) 159 | , handlelist) 160 | exist = False 161 | for i in range(0,len(handle_infor),2): 162 | win = win32gui.FindWindow(None,handle_infor[i]) 163 | if win==0: 164 | continue 165 | else: 166 | hWndChildList = [] 167 | win32gui.EnumChildWindows(win, lambda hWnd, param: param.append([hWnd 168 | , win32gui.GetClassName(hWnd) 169 | , win32gui.GetWindowText(hWnd)]) 170 | if win32gui.GetWindowText(hWnd) in [handle_infor[i+1]] else None, hWndChildList) 171 | try: 172 | win = hWndChildList[0][0] 173 | print("当前检测到{}".format(handle_infor[i])) 174 | exist = True 175 | break 176 | except: 177 | continue 178 | if exist==False: 179 | return -1 180 | # win = win32gui.FindWindow(None, handle_infor[0]) 181 | # if win==0: 182 | # win = win32gui.FindWindow(None, handle_infor[2]) 183 | # hWndChildList = [] 184 | # win32gui.EnumChildWindows(win, lambda hWnd, param: param.append([hWnd 185 | # , win32gui.GetClassName(hWnd) 186 | # , win32gui.GetWindowText(hWnd)]) 187 | # if win32gui.GetWindowText(hWnd) in [handle_infor[3]] else None, hWndChildList) 188 | # try: 189 | # win = hWndChildList[0][0] 190 | # print("当前为mumu模拟器") 191 | # except: 192 | # return -1 193 | 194 | # else: 195 | # hWndChildList = [] 196 | # win32gui.EnumChildWindows(win, lambda hWnd, param: param.append([hWnd 197 | # , win32gui.GetClassName(hWnd) 198 | # , win32gui.GetWindowText(hWnd)]) 199 | # if win32gui.GetWindowText(hWnd) in ['QWidgetClassWindow',handle_infor[1]] else None, hWndChildList) 200 | # try: 201 | # win = hWndChildList[0][0] 202 | # print("当前为夜神模拟器") 203 | # except: 204 | # return -1 205 | 206 | rect = win32gui.GetWindowRect(win) 207 | 208 | globalvar.set_window_resolution([rect[2]-rect[0],rect[3]-rect[1]]) 209 | print("当前窗体大小为{}x{}".format(rect[2]-rect[0],rect[3]-rect[1])) 210 | if (rect[2] - rect[0])==resolution[0] and (rect[3] - rect[1])==resolution[1]: 211 | pass 212 | else: 213 | #print('resolution isn\'t {}p'.format(resolution[1])) 214 | pass 215 | return win 216 | # if (rect[2]-rect[0])!=resolution[0] or (rect[3]-rect[1])!=resolution[1]: 217 | # raise Exception('resolution isn\'t {}p'.format(resolution[1])) 218 | 219 | if __name__ == "__main__": 220 | #this is just a handle test 221 | handle = get_handle() -------------------------------------------------------------------------------- /config.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | #少女前线预载入配置信息 2018-8月版本 4 | CS_kuaixiu = True 5 | CS_kuaixiushangxian = 50 6 | CS_attackcount = 30 7 | CS_zhandou_zhuli = 2 8 | CS_zhandou_peilian = 5 9 | CS_zhandou_renwu = [0,2,1] #前两位代表任务号,最后是普通,紧急,夜战 10 | CS_houqin_biandui = [1,4,6,7,8] 11 | CS_houqin_xuanze = [[0,1],[6,2],[4,1],[8,1]] 12 | attack_count = 0 13 | thresh_pic = 0.8 14 | thresh_kuaixiu = 200 15 | 16 | 17 | 18 | 19 | 20 | count = 0 21 | zhujiemian_zhandou_enter = [947,502] 22 | zhujiemian_houqin_confirm = [740,503] 23 | zhujiemian_houqin_status = [18,354] 24 | zhujiemian_houqin_status_return = [761,360] 25 | zhujiemian_houqin_cancel = [510,503] 26 | zhujiemian_xiufu_enter = [936,231] 27 | zhujiemian_gongchang_enter = [1165,344] 28 | zhandou_zuozhan = [118,161] 29 | zhandou_houqin = [112,250] 30 | zhandou_houqin_zhanyi_wipeup = [[271,263],[265,656]] 31 | zhandou_houqin_zhanyi_wipedown = [[265,656],[271,263]] 32 | zhandou_return_zhujiemian = [61,42] 33 | zhandou_leixing = [[982,184],[1100,184],[1220,184]] 34 | xiufu_confirm = [1192,553] 35 | xiufu_start = [932,503] 36 | gongchang_chaijie = [100,430] 37 | guanbi = [655,487] 38 | tidui_cancel = [1010,643] 39 | single_confirm = [654,521] #单个选项确认及取消坐标位置 40 | tri_return = [238,102] 41 | def xiufu_xuanze(i,j=1):#i从0开始 42 | if j==1: 43 | return [90+(i)*180,240] 44 | else: 45 | return [90+(i)*180,557] 46 | def yuanzhengkaishi(i): 47 | return [280+220*i,660] 48 | # this file determines the constant value of the scripts 49 | scene = 0 #determined 1: 50 | judge_prefix = './pics/judge' 51 | battle_judge_prefix = './pics/battle_judge' 52 | confirm_prefix = './pics/confirm' 53 | map_prefix = './pics/map' 54 | 55 | 56 | pic_judge = {'liebiao': os.path.join(judge_prefix, 'liebiao_judge.png'), 57 | 'zhujiemian':os.path.join(judge_prefix,'zhujiemian_judge.png'), 58 | 'tiduixuanze': os.path.join(judge_prefix, 'tiduixuanze_judge.png'), 59 | 'zhandouing': os.path.join(judge_prefix, 'zhandouing_judge.png'), 60 | 'zhandouzhunbei': os.path.join(judge_prefix, 'zhandouzhunbei_judge.png'), 61 | 'zhandoujiangli': os.path.join(judge_prefix, 'zhandoujiangli_judge.png'), 62 | 'zhandouend': os.path.join(judge_prefix, 'zhandouend_judge.png'), 63 | # 'zuozhan': os.path.join(judge_prefix, 'zuozhan_judge.png'), 64 | 'xiufu': os.path.join(judge_prefix, 'xiufu_judge.png'), 65 | 'houqin':os.path.join(judge_prefix,'houqin_judge.png'), 66 | 'houqinagain': os.path.join(judge_prefix, 'houqinagain_judge.png'), 67 | 'gonggao': os.path.join(confirm_prefix, 'gonggao.png'), 68 | 'tanchuang': os.path.join(confirm_prefix, 'tanchuang.png'), 69 | 'biancheng':os.path.join(judge_prefix,'biancheng_judge.png'), 70 | 'gongchang':os.path.join(judge_prefix,'gongchang_judge.png'), 71 | 'sushe':os.path.join(judge_prefix,'sushe_judge.png'), 72 | # 'yuanzheng':os.path.join(judge_prefix,'yuanzheng_judge.png'), 73 | 'zhandou':os.path.join(judge_prefix,'zhandou_judge.png'), 74 | 75 | 76 | } 77 | pic_confirm = {'liebiao': os.path.join(judge_prefix, 'liebiao_judge.png'), 78 | 'zhujiemian':os.path.join(judge_prefix,'zhujiemian_judge.png'), 79 | 'tiduixuanze': os.path.join(judge_prefix, 'tiduixuanze_judge.png'), 80 | 'zhandouing': os.path.join(judge_prefix, 'zhandouing_judge.png'), 81 | 'zhandouzhunbei': os.path.join(judge_prefix, 'zhandouzhunbei_judge.png'), 82 | 'zhandoujiangli': os.path.join(judge_prefix, 'zhandoujiangli_judge.png'), 83 | 'zhandouend': os.path.join(judge_prefix, 'zhandouend_judge.png'), 84 | 'zuozhan': os.path.join(judge_prefix, 'zuozhan_judge.png'), 85 | 'xiufu': os.path.join(judge_prefix, 'xiufu_judge.png'), 86 | 'houqin':os.path.join(judge_prefix,'houqin_judge.png'), 87 | 'biancheng':os.path.join(judge_prefix,'biancheng_judge.png'), 88 | 'sushe':os.path.join(judge_prefix,'sushe_judge.png'), 89 | 'yuanzheng':os.path.join(judge_prefix,'yuanzheng_judge.png'), 90 | 'zhandou':os.path.join(judge_prefix,'zhandou_judge.png'), 91 | 'houqinagain':os.path.join(judge_prefix,'houqinagain_judge.png'), 92 | '0zhanyi':os.path.join(confirm_prefix,'0zhanyi_confirm.png'), 93 | '1zhanyi':os.path.join(confirm_prefix,'1zhanyi_confirm.png'), 94 | '2zhanyi':os.path.join(confirm_prefix,'2zhanyi_confirm.png'), 95 | '3zhanyi':os.path.join(confirm_prefix,'3zhanyi_confirm.png'), 96 | '4zhanyi':os.path.join(confirm_prefix,'4zhanyi_confirm.png'), 97 | '5zhanyi':os.path.join(confirm_prefix,'5zhanyi_confirm.png'), 98 | '6zhanyi':os.path.join(confirm_prefix,'6zhanyi_confirm.png'), 99 | '7zhanyi':os.path.join(confirm_prefix,'7zhanyi_confirm.png'), 100 | '8zhanyi':os.path.join(confirm_prefix,'8zhanyi_confirm.png'), 101 | 'yuanzhengsent':os.path.join(confirm_prefix,'yuanzheng_sent.png'), 102 | '1tidui': os.path.join(confirm_prefix, '1tidui.png'), 103 | '2tidui': os.path.join(confirm_prefix, '2tidui.png'), 104 | '3tidui': os.path.join(confirm_prefix, '3tidui.png'), 105 | '4tidui': os.path.join(confirm_prefix, '4tidui.png'), 106 | '5tidui': os.path.join(confirm_prefix, '5tidui.png'), 107 | '6tidui': os.path.join(confirm_prefix, '6tidui.png'), 108 | '7tidui': os.path.join(confirm_prefix, '7tidui.png'), 109 | '8tidui': os.path.join(confirm_prefix, '8tidui.png'), 110 | 'xiufu_xuanze': os.path.join(confirm_prefix, 'xiufu_xuanze.png'), 111 | 'chaijie_2xing': os.path.join(confirm_prefix, 'chaijie_2xing.png'), 112 | 'chaijie_confirm': os.path.join(confirm_prefix, 'chaijie_confirm.png'), 113 | 'chaijie_xuanze_juese': os.path.join(confirm_prefix, 'chaijie_xuanze_juese.png'), 114 | 'wuxiufu': os.path.join(confirm_prefix, 'wuxiufu.png'), 115 | 'kuaixiu': os.path.join(confirm_prefix, 'kuaixiu.png'), 116 | 'zhandou_enter': os.path.join(confirm_prefix, 'zhandou_enter.png'), 117 | '5-4-2': os.path.join(confirm_prefix, '5-4-2.png'), 118 | '5-4-2map': os.path.join(map_prefix, '5-4-2.png'), 119 | '0-2-1': os.path.join(confirm_prefix, '0-2-1.png'), 120 | '0-2-1map': os.path.join(map_prefix, '0-2-1.png'), 121 | 'ditu_wudian1': os.path.join(confirm_prefix, 'ditu_wudian1.png'), 122 | 'ditu_wudian2': os.path.join(confirm_prefix, 'ditu_wudian1.png'), 123 | 'jihuamoshi': os.path.join(confirm_prefix, 'jihuamoshi.png'), 124 | 'renxingman': os.path.join(confirm_prefix, 'renxingman1.png'), 125 | '4jihua': os.path.join(map_prefix, '4jihua.png'), 126 | '31jihua': os.path.join(map_prefix, '31jihua.png'), 127 | 'cancel':os.path.join(confirm_prefix,'cancel.png'), 128 | 'kuaisuxiufu':os.path.join(confirm_prefix,'kuaisuxiufu.png'), 129 | 'chaijie': os.path.join(confirm_prefix, 'chaijie.png'), 130 | 'gongchang': os.path.join(judge_prefix, 'gongchang_judge.png'), 131 | 'kuaixiu_confirm': os.path.join(confirm_prefix, 'kuaixiu_confirm.png'), 132 | 'gonggao': os.path.join(confirm_prefix, 'gonggao.png'), 133 | 'jihuaxuanzhong': os.path.join(confirm_prefix, 'jihuaxuanzhong.png'), 134 | 'jieshuhuihe': os.path.join(confirm_prefix, 'jieshuhuihe.png'), 135 | 'tanchuang': os.path.join(confirm_prefix, 'tanchuang.png'), 136 | } 137 | battle_judge = {'total_end': os.path.join(battle_judge_prefix, 'total_end.png'), 138 | 'zhandouend': os.path.join(battle_judge_prefix, 'zhandouend_judge.png'), 139 | 'zhandouing': os.path.join(battle_judge_prefix, 'zhandouing_judge.png'), 140 | 'zhandoujiangli': os.path.join(battle_judge_prefix, 'zhandoujiangli_judge.png'), 141 | } 142 | 143 | 144 | tiaochu_judge = {''} 145 | action_confirm = [os.path.join(confirm_prefix,'zhujiemian_judge.png')] 146 | yuanzheng_num = './pics/yuanzheng_exist.png' 147 | 148 | yuanzheng_log = './log_yuanzheng.txt' 149 | zuozhan_log = './log_zuozhan.txt' 150 | 151 | zhandou_suoxiao = [[170,670],[370,670]] 152 | 153 | 154 | #zuobian 155 | tidui_confirm = [1180,640] 156 | click = [640,520] 157 | 158 | 159 | -------------------------------------------------------------------------------- /config.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/config.txt -------------------------------------------------------------------------------- /config/config: -------------------------------------------------------------------------------- 1 | 60tili 60ti.png 2 | 100tili 100ti.png 3 | GT2 huodong_GT2_confirm.png 4 | GT3 huodong_GT3_confirm.png 5 | GT4 huodong_GT4_confirm.png 6 | GT5 huodong_GT5_confirm.png 7 | GT6 huodong_GT6_confirm.png 8 | daili_do daili_do.png 9 | daili_undo daili_undo.png 10 | zhandou_pause zhandou_pause.png 11 | daili_confirm daili_confirm.png 12 | enter_quick enter_quick.png 13 | zhandou_quickenter zhandou_quickenter.png 14 | yuanshi_lizhi yuanshi_lizhi.png 15 | bushu_fangxiang bushu_fangxiang.png 16 | 2xspeed 2xspeed.png 17 | 1xspeed 1xspeed.png 18 | chapter1 chapter1.png 19 | chapter2 chapter2.png 20 | chapter3 chapter3.png 21 | chapter4 chapter4.png 22 | gouliang gouliang.png 23 | hongpiao hongpiao.png 24 | jiancai jiancai.png 25 | longmenbi longmenbi.png 26 | skip skip.png 27 | skip_confirm skip_confirm.png 28 | zhuxian zhandou_jiemian.png 29 | wuzichoubei wuzichoubei.png 30 | xinpiansousuo xinpiansousuo.png 31 | LS gouliang.png 32 | AP hongpiao.png 33 | SK jiancai.png 34 | CE longmenbi.png 35 | -------------------------------------------------------------------------------- /config/guanqia: -------------------------------------------------------------------------------- 1 | ZX|第一章|1-11 ./ark_images/processed/guanqia\1-11.png 1920 1080 2 | ZX|第一章|1-11_confirm ./ark_images/processed/guanqia\1-11_confirm.png 1920 1080 3 | ZX|第一章|1-7 ./ark_images/processed/guanqia\1-7.png 1920 1080 4 | ZX|第一章|1-7_confirm ./ark_images/processed/guanqia\1-7_confirm.png 1920 1080 5 | WZ|龙门币|CE-5 ./ark_images/processed/guanqia\CE-5.png 1920 1080 6 | WZ|龙门币|CE-5_confirm ./ark_images/processed/guanqia\CE-5_confirm.png 1920 1080 7 | WZ|红票子|AP-5 ./ark_images/processed/guanqia\AP-5.png 1920 1080 8 | WZ|红票子|AP-5_confirm ./ark_images/processed/guanqia\AP-5_confirm.png 1920 1080 9 | WZ|建材|SK-5 ./ark_images/processed/guanqia\SK-5.png 1920 1080 10 | WZ|建材|SK-5_confirm ./ark_images/processed/guanqia\SK-5_confirm.png 1920 1080 11 | WZ|建材|SK-3 ./ark_images/processed/guanqia\SK-3.png 1920 1080 12 | WZ|建材|SK-3_confirm ./ark_images/processed/guanqia\SK-3_confirm.png 1920 1080 13 | ZX|第二章|S2-12 ./ark_images/processed/guanqia\S2-12.png 1920 1080 14 | ZX|第二章|S2-12_confirm ./ark_images/processed/guanqia\S2-12_confirm.png 1920 1080 15 | ZX|第一章 ./ark_images/processed/guanqia\chapter1.png 1920 1080 16 | ZX|第二章 ./ark_images/processed/guanqia\chapter2.png 1920 1080 17 | ZX|第三章 ./ark_images/processed/guanqia\chapter3.png 1920 1080 18 | ZX|第四章 ./ark_images/processed/guanqia\chapter4.png 1920 1080 19 | ZX ./ark_images/processed/guanqia\zhandou_jiemian.png 1920 1080 20 | WZ ./ark_images/processed/guanqia\wuzichoubei.png 1920 1080 21 | PR ./ark_images/processed/guanqia\xinpiansousuo.png 1920 1080 22 | WZ|经验 ./ark_images/processed/guanqia\gouliang.png 1920 1080 23 | WZ|红票子 ./ark_images/processed/guanqia\hongpiao.png 1920 1080 24 | WZ|建材 ./ark_images/processed/guanqia\jiancai.png 1920 1080 25 | WZ|龙门币 ./ark_images/processed/guanqia\longmenbi.png 1920 1080 26 | 27 | WZ|龙门币|CE-4 ./ark_images/processed/guanqia\CE-4.png 1280 720 28 | WZ|龙门币|CE-4_confirm ./ark_images/processed/guanqia\CE-4_confirm.png 1280 720 29 | WZ|经验|LS-5 ./ark_images/processed/guanqia\LS-5.png 1280 720 30 | WZ|经验|LS-5_confirm ./ark_images/processed/guanqia\LS-5_confirm.png 1280 720 31 | -------------------------------------------------------------------------------- /config/pic_confirm: -------------------------------------------------------------------------------- 1 | daili_do ./ark_images/processed\daili_do.png 1920 1080 2 | daili_undo ./ark_images/processed\daili_undo.png 1920 1080 3 | zhandou_pause ./ark_images/processed\zhandou_pause.png 1920 1080 4 | daili_confirm ./ark_images/processed\daili_confirm.png 1920 1080 5 | enter_quick ./ark_images/processed\enter_quick.png 1920 1080 6 | zhandou_quickenter ./ark_images/processed\zhandou_quickenter.png 1920 1080 7 | yuanshi_lizhi ./ark_images/processed\yuanshi_lizhi.png 1920 1080 8 | bushu_fangxiang ./ark_images/processed\bushu_fangxiang.png 1920 1080 9 | 2xspeed ./ark_images/processed\2xspeed.png 1920 1080 10 | 1xspeed ./ark_images/processed\1xspeed.png 1920 1080 11 | skip ./ark_images/processed\skip.png 1920 1080 12 | skip_confirm ./ark_images/processed\skip_confirm.png 1920 1080 13 | yuanshi ./ark_images/processed\yuanshi.png 1280 720 14 | ok ./ark_images/processed\ok.png 1280 720 15 | no ./ark_images/processed\no.png 1280 720 -------------------------------------------------------------------------------- /config/pic_huodong: -------------------------------------------------------------------------------- 1 | HD|HD-1|OF-6 ./ark_images/processed/huodong\huodong_OF-6.png 1920 1080 2 | HD|HD-1|OF-7 ./ark_images/processed/huodong\huodong_OF-7.png 1920 1080 3 | HD|HD-1|OF-8 ./ark_images/processed/huodong\huodong_OF-8.png 1920 1080 4 | HD|HD-1|OF-F3 ./ark_images/processed/huodong\huodong_OF-F3.png 1920 1080 5 | HD|HD-1|OF-F4 ./ark_images/processed/huodong\huodong_OF-F4.png 1920 1080 6 | HD|HD-1|OF-6_confirm ./ark_images/processed/huodong\huodong_OF-6_confirm.png 1920 1080 7 | HD|HD-1|OF-7_confirm ./ark_images/processed/huodong\huodong_OF-7_confirm.png 1920 1080 8 | HD|HD-1|OF-8_confirm ./ark_images/processed/huodong\huodong_OF-8_confirm.png 1920 1080 9 | HD|HD-1|OF-F3_confirm ./ark_images/processed/huodong\huodong_OF-F3_confirm.png 1920 1080 10 | HD|HD-1|OF-F4_confirm ./ark_images/processed/huodong\huodong_OF-F4_confirm.png 1920 1080 11 | HD ./ark_images/processed/huodong\zhandou_huodong1.png 1920 1080 12 | HD|HD-1 ./ark_images/processed/huodong\zhandou_huodong_enter1.png 1920 1080 13 | huodong_enter2 ./ark_images/processed/huodong\zhandou_huodong_enter2.png 1920 1080 -------------------------------------------------------------------------------- /config/pic_where: -------------------------------------------------------------------------------- 1 | gonggao ./ark_images/processed\gonggao.png 1920 1080 2 | zhujiemian ./ark_images/processed\zhandou.png 1920 1080 3 | zhandou_xuanze ./ark_images/processed\guanqia\zhandou_jiemian.png 1920 1080 4 | huodong_xuanze ./ark_images/processed/huodong\zhandou_huodong_confirm.png 1920 1080 5 | zhandou_start ./ark_images/processed\zhandou_start.png 1920 1080 6 | zhandou_ing ./ark_images/processed\zhandouing.png 1920 1080 7 | zhandou_end ./ark_images/processed\zhandou_end.png 1920 1080 8 | yuanshi_lizhi ./ark_images/processed\yuanshi_lizhi.png 1280 720 9 | enter_quick ./ark_images/processed\enter_quick.png 1920 1080 10 | skip ./ark_images/processed\skip.png 1920 1080 11 | zhandou_failed ./ark_images/processed\mission_failed.png 1920 1080 12 | -------------------------------------------------------------------------------- /config_ark.py: -------------------------------------------------------------------------------- 1 | import os 2 | import globalvar 3 | from PIL import Image 4 | #from basic_function import get_handle 5 | import numpy as np 6 | #明日方舟预载入配置信息 2019-6-3 版本 7 | 8 | BATTLE_WAIT = 10 9 | BUSHU_OFFSET = 300 10 | IMG_SAVE = "./abnormal_ark" 11 | CONFIG_PATH = "./config" 12 | LOG_PATH = "./log/" 13 | pic_path = "./ark_images/processed" 14 | staff_pic_path = "./ark_images/staff" 15 | guanqia_path = "./ark_images/processed/guanqia" 16 | huodong_path = "./ark_images/processed/huodong" 17 | 18 | 19 | assert(os.path.isdir(pic_path)) 20 | if os.path.exists(IMG_SAVE): 21 | pass 22 | else: 23 | os.makedirs(IMG_SAVE) 24 | 25 | drag_left = [[580,539],[880,543]] 26 | points = {} 27 | points["kongbai"] = [1000,1000] 28 | points["peizhi_enter"] = [1741,990] 29 | points["zhandou_start"] = [1650,800] 30 | points["daili"] = [1725,890] 31 | points["zhandou_pause"] = [1797,80] 32 | points["zhandou_enter"] = [1460,300] 33 | points["yuanshi_ok"] = [1420,813] 34 | points['tili_ok'] = [1637,870] 35 | points["yuanshi_no"] = [463,813] 36 | points["skip_yes"] = [1270,775] 37 | points["drag_left"] = [[580,539],[880,543]] 38 | points["drag_right"] = [[880,543],[580,539]] 39 | points["1-11-target-xy"] = [[949,510],[790,629],[649,649], 40 | [807,381],[946,285],[936,774]] 41 | class ReturnToWhere(Exception): 42 | # the error is triggled when it should go somewhere 43 | def __init__(self,where): 44 | self._where = where 45 | @property 46 | def where(self): 47 | return self._where 48 | 49 | class ExitError(Exception): 50 | # fatal error, the program should exit 51 | pass 52 | 53 | staff_pic = { 54 | "hj": os.path.join(staff_pic_path,"hj.png"), 55 | "12F": os.path.join(staff_pic_path,"12F.png"), 56 | "ase": os.path.join(staff_pic_path,"ase.png"), 57 | "longmenbi": os.path.join(staff_pic_path,"longmenbi.png"), 58 | "mgl": os.path.join(staff_pic_path,"mgl.png"), 59 | "ry": os.path.join(staff_pic_path,"ry.png"), 60 | "sdhd": os.path.join(staff_pic_path,"sdhd.png"), 61 | 62 | } 63 | staff_pic_res = {} 64 | for i in staff_pic.keys(): 65 | staff_pic_res[i] = [1920,1080] 66 | 67 | def get_confirm_pic(): 68 | confirm_pic = {} 69 | confirm_pic_res = {} 70 | with open(os.path.join(CONFIG_PATH,"pic_confirm"),'r',encoding='utf-8') as file: 71 | while(1): 72 | tmp = file.readline() 73 | if tmp in ['\n',' ']: 74 | continue 75 | if not tmp: 76 | break 77 | tmp = tmp.split(' ') 78 | confirm_pic[tmp[0]] = tmp[1] 79 | confirm_pic_res[tmp[0]] = [int(tmp[2]),int(tmp[3].strip('\n'))] 80 | file.close() 81 | return confirm_pic,confirm_pic_res 82 | 83 | def get_where_pic(): 84 | where_pic = {} 85 | where_pic_res = {} 86 | with open(os.path.join(CONFIG_PATH,"pic_where"),'r',encoding='utf-8') as file: 87 | while(1): 88 | tmp = file.readline() 89 | if tmp in ['\n',' ']: 90 | continue 91 | if not tmp: 92 | break 93 | tmp = tmp.split(' ') 94 | where_pic[tmp[0]] = tmp[1] 95 | where_pic_res[tmp[0]] = [int(tmp[2]),int(tmp[3].strip('\n'))] 96 | file.close() 97 | return where_pic,where_pic_res 98 | 99 | def get_guanqia_pic(): 100 | guanqia_pic = {} 101 | guanqia_pic_res = {} 102 | with open(os.path.join(CONFIG_PATH,"guanqia"),'r',encoding='utf-8') as file: 103 | while(1): 104 | tmp = file.readline() 105 | if tmp in ['\n',' ']: 106 | continue 107 | if not tmp: 108 | break 109 | tmp = tmp.split(' ') 110 | guanqia_pic[tmp[0]] = tmp[1] 111 | guanqia_pic_res[tmp[0]] = [int(tmp[2]),int(tmp[3].strip('\n'))] 112 | file.close() 113 | return guanqia_pic,guanqia_pic_res 114 | def get_huodong_pic(): 115 | huodong_pic = {} 116 | huodong_pic_res = {} 117 | with open(os.path.join(CONFIG_PATH,"pic_huodong"),'r',encoding='utf-8') as file: 118 | while(1): 119 | tmp = file.readline() 120 | if tmp in ['\n',' ']: 121 | continue 122 | if not tmp: 123 | break 124 | tmp = tmp.split(' ') 125 | huodong_pic[tmp[0]] = tmp[1] 126 | huodong_pic_res[tmp[0]] = [int(tmp[2]),int(tmp[3].strip('\n'))] 127 | file.close() 128 | return huodong_pic,huodong_pic_res 129 | pic_confirm,pic_confirm_res = get_confirm_pic() 130 | guanqia_pic,guanqia_pic_res = get_guanqia_pic() 131 | huodong_pic,huodong_pic_res = get_huodong_pic() 132 | pic_where,pic_where_res = get_where_pic() 133 | def ChapterCTE(chapter): 134 | reverse_mapping = {'主线':'ZX','物资筹备':'WZ','芯片获取':'PR','活动':'HD'} 135 | # reverse_mapping = {'第一章':'1','第二章':'2','第三章':'3','第四章':'4','第五章':'5', 136 | # '经验本':'LS','红票子':'AP','龙门币':'CE','建材':'SK','活动':'HD'} 137 | return reverse_mapping[chapter] 138 | def ChapterETC(chapter): 139 | mapping_keys = {'ZX':'主线','WZ':'物资筹备','PR':'芯片获取','HD':'活动'} 140 | # mapping_keys = {'1':'第一章','2':'第二章','3':'第三章','4':'第四章','5':'第五章', 141 | # 'LS':'经验本','AP':'红票子','CE':'龙门币','SK':'建材','HD':'活动'} 142 | return mapping_keys[chapter] 143 | 144 | def get_basic_path(name): 145 | # return the basic img path 146 | if name in list(pic_where.keys()): 147 | return pic_where[name] 148 | elif name in list(pic_confirm.keys()): 149 | return pic_confirm[name] 150 | else: 151 | #这种情况不应该出现 152 | raise Exception 153 | def get_basic_res(name): 154 | # reuturn the basic img resolution 155 | if name in list(pic_where_res.keys()): 156 | return pic_where_res[name] 157 | elif name in list(pic_confirm_res.keys()): 158 | return pic_confirm_res[name] 159 | else: 160 | #同上 161 | raise Exception 162 | def get_img_path(name,huodong=False): 163 | # return the huodong & guanqia pic path 164 | if huodong: 165 | return huodong_pic[name] 166 | else: 167 | return guanqia_pic[name] 168 | def get_img_res(name,huodong=False): 169 | # return the huodong & guanqia pic resolution 170 | if huodong: 171 | return huodong_pic_res[name] 172 | else: 173 | return guanqia_pic_res[name] 174 | 175 | def get_guanqia(guanqia_pic,pic_huodong): 176 | """ 177 | guanqia_pic: path infor of guanqia 178 | pic_huodong: path infor of huodong 179 | return guanqia_dict: the mix of guanqia & huodong(without XXX_confirm etc.) 180 | """ 181 | tmp1 = list(guanqia_pic.keys()) 182 | tmp2 = list(pic_huodong.keys()) 183 | tmp_guanqia = tmp1 + tmp2 184 | index = 0 185 | for i in range(len(tmp_guanqia)): 186 | tmp_str = tmp_guanqia[index] 187 | if "|" in tmp_str: 188 | if "1-11" in tmp_str or "_confirm" in tmp_str: 189 | tmp_guanqia.remove(tmp_str) 190 | index -= 1 191 | else: 192 | tmp_guanqia.remove(tmp_str) 193 | index -= 1 194 | index += 1 195 | 196 | guanqia_dict = {'主线': {}, '物资筹备': {}, '芯片获取': {}, '活动': {}} 197 | for i in tmp_guanqia: 198 | tmp_split = i.split('|') 199 | total_class = tmp_split[0] 200 | map_total_class = ChapterETC(total_class) 201 | chapter = tmp_split[1] 202 | if len(tmp_split)==3: 203 | name = tmp_split[2] 204 | if chapter in guanqia_dict[map_total_class]: 205 | if len(tmp_split)==2: 206 | #章节 207 | pass 208 | else: 209 | guanqia_dict[map_total_class][chapter].append(name) 210 | else: 211 | if len(tmp_split)==2: 212 | #章节 213 | guanqia_dict[map_total_class][chapter] = [] 214 | else: 215 | guanqia_dict[map_total_class][chapter] = [name] 216 | return guanqia_dict 217 | 218 | def pic_resize(pic_path,window_resolution,max_resolution): 219 | if isinstance(pic_path,np.ndarray): 220 | temp_im = pic_path 221 | temp_im = Image.fromarray(temp_im) 222 | else: 223 | temp_im = Image.open(pic_path) 224 | temp_im = temp_im.convert("RGB") 225 | im_w= temp_im.size[0] 226 | im_h = temp_im.size[1] 227 | width = int(window_resolution[0] / max_resolution[0] * im_w) 228 | height = int(window_resolution[1] / max_resolution[1] * im_h) 229 | temp_im = temp_im.resize((width, height), Image.ANTIALIAS) 230 | return np.array(temp_im) 231 | def pic_load_ram(): 232 | #must run after getting handle, when dealing with the pics which resolutions lower than the current one, 233 | # the function should remove these pics which may cause unpredictable errors 234 | window_resolution = globalvar.get_window_resolution() 235 | max_resolution = globalvar.get_max_resolution() 236 | if window_resolution[0]==0: 237 | raise Exception("未检测到模拟器") 238 | for keys,pic_path in pic_confirm.items(): 239 | temp_im = pic_resize(pic_path,window_resolution,pic_confirm_res[keys]) 240 | pic_confirm[keys] = np.array(temp_im) 241 | for keys, pic_path in huodong_pic.items(): 242 | temp_im = pic_resize(pic_path,window_resolution,huodong_pic_res[keys]) 243 | huodong_pic[keys] = np.array(temp_im) 244 | 245 | for keys, pic_path in pic_where.items(): 246 | temp_im = pic_resize(pic_path,window_resolution,pic_where_res[keys]) 247 | pic_where[keys] = np.array(temp_im) 248 | 249 | for keys, pic_path in staff_pic.items(): 250 | temp_im = pic_resize(pic_path,window_resolution,staff_pic_res[keys]) 251 | staff_pic[keys] = np.array(temp_im) 252 | 253 | for keys, pic_path in guanqia_pic.items(): 254 | temp_im = pic_resize(pic_path,window_resolution,guanqia_pic_res[keys]) 255 | guanqia_pic[keys] = np.array(temp_im) 256 | 257 | #常量点 自定义分辨率适应 258 | for keys,values in points.items(): 259 | if isinstance(values[0],int): 260 | width = int(window_resolution[0] / max_resolution[0] * values[0]) 261 | height = int(window_resolution[1] / max_resolution[1] * values[1]) 262 | points[keys] = [width, height] 263 | else: 264 | for index,value_temp in enumerate(values): 265 | width = int(window_resolution[0] / max_resolution[0] * value_temp[0]) 266 | height = int(window_resolution[1] / max_resolution[1] * value_temp[1]) 267 | values[index] = [width, height] 268 | points[keys] = values 269 | 270 | # pic_where = { 271 | # "gonggao": os.path.join(pic_path,"gonggao.png"), 272 | # "zhujiemian": os.path.join(pic_path,"zhandou.png"), 273 | # "zhandou_xuanze": os.path.join(pic_path,"guanqia","zhandou_jiemian.png"), 274 | # "huodong_xuanze": os.path.join(huodong_path,"zhandou_huodong_confirm.png"), 275 | # "zhandou_start": os.path.join(pic_path,"zhandou_start.png"), 276 | # "zhandou_ing": os.path.join(pic_path,"zhandouing.png"), 277 | # "zhandou_end": os.path.join(pic_path,"zhandou_end.png"), 278 | # "yuanshi_lizhi": os.path.join(pic_path, "yuanshi_lizhi.png"), 279 | # "enter_quick": os.path.join(pic_path, "enter_quick.png"), 280 | # "skip": os.path.join(pic_path, "skip.png"), 281 | # "zhandou_failed": os.path.join(pic_path, "mission_failed.png"), 282 | # #门票不足 283 | # } 284 | # pic_where_res = {} 285 | # for i in pic_where.keys(): 286 | # pic_where_res[i] = [1920,1080] 287 | 288 | pic_others = { 289 | "daili_undo": os.path.join(pic_path,"daili_undo.png"), 290 | "daili_do": os.path.join(pic_path,"daili_do.png"), 291 | "zhandou_pause": os.path.join(pic_path,"zhandou_pause.png") 292 | 293 | } 294 | 295 | 296 | if __name__ == "__main__": 297 | pic_where, pic_where_res = get_where_pic() 298 | file = open('./config/pic_where','w') 299 | for i in pic_where.keys(): 300 | file.write("{} {} {} {}\n".format(i,pic_where[i],pic_where_res[i][0],pic_where_res[i][1])) 301 | file.close() 302 | print(123) 303 | -------------------------------------------------------------------------------- /dist/ark_images/1-11/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/1-11/1.png -------------------------------------------------------------------------------- /dist/ark_images/processed/100ti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/100ti.png -------------------------------------------------------------------------------- /dist/ark_images/processed/1xspeed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/1xspeed.png -------------------------------------------------------------------------------- /dist/ark_images/processed/2xspeed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/2xspeed.png -------------------------------------------------------------------------------- /dist/ark_images/processed/60ti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/60ti.png -------------------------------------------------------------------------------- /dist/ark_images/processed/bushu_fangxiang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/bushu_fangxiang.png -------------------------------------------------------------------------------- /dist/ark_images/processed/chapter5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/chapter5.png -------------------------------------------------------------------------------- /dist/ark_images/processed/daili_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/daili_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/daili_do.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/daili_do.png -------------------------------------------------------------------------------- /dist/ark_images/processed/daili_undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/daili_undo.png -------------------------------------------------------------------------------- /dist/ark_images/processed/enter_quick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/enter_quick.png -------------------------------------------------------------------------------- /dist/ark_images/processed/gonggao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/gonggao.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/1-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/1-11.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/1-11_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/1-11_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/1-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/1-7.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/1-7_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/1-7_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/AP-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/AP-5.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/AP-5_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/AP-5_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/CE-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/CE-4.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/CE-4_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/CE-4_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/CE-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/CE-5.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/CE-5_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/CE-5_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/LS-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/LS-5.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/LS-5_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/LS-5_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/S2-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/S2-12.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/S2-12_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/S2-12_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/SK-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/SK-3.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/SK-3_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/SK-3_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/SK-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/SK-5.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/SK-5_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/SK-5_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/chapter1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/chapter1.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/chapter2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/chapter2.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/chapter3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/chapter3.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/chapter4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/chapter4.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/gouliang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/gouliang.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/hongpiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/hongpiao.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/jiancai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/jiancai.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/longmenbi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/longmenbi.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/wuzichoubei.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/wuzichoubei.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/xinpiansousuo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/xinpiansousuo.png -------------------------------------------------------------------------------- /dist/ark_images/processed/guanqia/zhandou_jiemian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/guanqia/zhandou_jiemian.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_GT1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_GT1.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_GT2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_GT2.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_GT2_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_GT2_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_GT3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_GT3.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_GT3_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_GT3_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_GT4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_GT4.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_GT4_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_GT4_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_GT5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_GT5.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_GT5_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_GT5_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_GT6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_GT6.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_GT6_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_GT6_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_OF-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_OF-6.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_OF-6_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_OF-6_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_OF-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_OF-7.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_OF-7_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_OF-7_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_OF-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_OF-8.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_OF-8_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_OF-8_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_OF-F3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_OF-F3.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_OF-F3_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_OF-F3_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_OF-F4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_OF-F4.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/huodong_OF-F4_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/huodong_OF-F4_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/zhandou_huodong1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/zhandou_huodong1.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/zhandou_huodong_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/zhandou_huodong_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/zhandou_huodong_enter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/zhandou_huodong_enter.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/zhandou_huodong_enter1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/zhandou_huodong_enter1.png -------------------------------------------------------------------------------- /dist/ark_images/processed/huodong/zhandou_huodong_enter2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/huodong/zhandou_huodong_enter2.png -------------------------------------------------------------------------------- /dist/ark_images/processed/mission_failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/mission_failed.png -------------------------------------------------------------------------------- /dist/ark_images/processed/skip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/skip.png -------------------------------------------------------------------------------- /dist/ark_images/processed/skip_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/skip_confirm.png -------------------------------------------------------------------------------- /dist/ark_images/processed/src/d32-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/src/d32-1.png -------------------------------------------------------------------------------- /dist/ark_images/processed/src/d32-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/src/d32-2.png -------------------------------------------------------------------------------- /dist/ark_images/processed/src/gyy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/src/gyy.png -------------------------------------------------------------------------------- /dist/ark_images/processed/src/st.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/src/st.png -------------------------------------------------------------------------------- /dist/ark_images/processed/yuanshi_lizhi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/yuanshi_lizhi.png -------------------------------------------------------------------------------- /dist/ark_images/processed/zhandou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/zhandou.png -------------------------------------------------------------------------------- /dist/ark_images/processed/zhandou_end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/zhandou_end.png -------------------------------------------------------------------------------- /dist/ark_images/processed/zhandou_ing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/zhandou_ing.png -------------------------------------------------------------------------------- /dist/ark_images/processed/zhandou_loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/zhandou_loading.png -------------------------------------------------------------------------------- /dist/ark_images/processed/zhandou_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/zhandou_pause.png -------------------------------------------------------------------------------- /dist/ark_images/processed/zhandou_quickenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/zhandou_quickenter.png -------------------------------------------------------------------------------- /dist/ark_images/processed/zhandou_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/zhandou_start.png -------------------------------------------------------------------------------- /dist/ark_images/processed/zhandouing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/processed/zhandouing.png -------------------------------------------------------------------------------- /dist/ark_images/staff/12F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/staff/12F.png -------------------------------------------------------------------------------- /dist/ark_images/staff/ase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/staff/ase.png -------------------------------------------------------------------------------- /dist/ark_images/staff/hj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/staff/hj.png -------------------------------------------------------------------------------- /dist/ark_images/staff/longmenbi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/staff/longmenbi.png -------------------------------------------------------------------------------- /dist/ark_images/staff/mgl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/staff/mgl.png -------------------------------------------------------------------------------- /dist/ark_images/staff/ry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/staff/ry.png -------------------------------------------------------------------------------- /dist/ark_images/staff/sdhd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/dist/ark_images/staff/sdhd.png -------------------------------------------------------------------------------- /dist/config/config: -------------------------------------------------------------------------------- 1 | 60tili 60ti.png 2 | 100tili 100ti.png 3 | GT2 huodong_GT2_confirm.png 4 | GT3 huodong_GT3_confirm.png 5 | GT4 huodong_GT4_confirm.png 6 | GT5 huodong_GT5_confirm.png 7 | GT6 huodong_GT6_confirm.png 8 | daili_do daili_do.png 9 | daili_undo daili_undo.png 10 | zhandou_pause zhandou_pause.png 11 | daili_confirm daili_confirm.png 12 | enter_quick enter_quick.png 13 | zhandou_quickenter zhandou_quickenter.png 14 | yuanshi_lizhi yuanshi_lizhi.png 15 | bushu_fangxiang bushu_fangxiang.png 16 | 2xspeed 2xspeed.png 17 | 1xspeed 1xspeed.png 18 | chapter1 chapter1.png 19 | chapter2 chapter2.png 20 | chapter3 chapter3.png 21 | chapter4 chapter4.png 22 | gouliang gouliang.png 23 | hongpiao hongpiao.png 24 | jiancai jiancai.png 25 | longmenbi longmenbi.png 26 | skip skip.png 27 | skip_confirm skip_confirm.png 28 | zhuxian zhandou_jiemian.png 29 | wuzichoubei wuzichoubei.png 30 | xinpiansousuo xinpiansousuo.png 31 | LS gouliang.png 32 | AP hongpiao.png 33 | SK jiancai.png 34 | CE longmenbi.png 35 | -------------------------------------------------------------------------------- /dist/config/guanqia: -------------------------------------------------------------------------------- 1 | ZX|第一章|1-11 ./ark_images/processed/guanqia\1-11.png 1920 1080 2 | ZX|第一章|1-11_confirm ./ark_images/processed/guanqia\1-11_confirm.png 1920 1080 3 | ZX|第一章|1-7 ./ark_images/processed/guanqia\1-7.png 1920 1080 4 | ZX|第一章|1-7_confirm ./ark_images/processed/guanqia\1-7_confirm.png 1920 1080 5 | WZ|经验|LS-5 ./ark_images/processed/guanqia\LS-5.png 1920 1080 6 | WZ|经验|LS-5_confirm ./ark_images/processed/guanqia\LS-5_confirm.png 1920 1080 7 | WZ|龙门币|CE-5 ./ark_images/processed/guanqia\CE-5.png 1920 1080 8 | WZ|龙门币|CE-5_confirm ./ark_images/processed/guanqia\CE-5_confirm.png 1920 1080 9 | WZ|红票子|AP-5 ./ark_images/processed/guanqia\AP-5.png 1920 1080 10 | WZ|红票子|AP-5_confirm ./ark_images/processed/guanqia\AP-5_confirm.png 1920 1080 11 | WZ|建材|SK-5 ./ark_images/processed/guanqia\SK-5.png 1920 1080 12 | WZ|建材|SK-5_confirm ./ark_images/processed/guanqia\SK-5_confirm.png 1920 1080 13 | WZ|建材|SK-3 ./ark_images/processed/guanqia\SK-3.png 1920 1080 14 | WZ|建材|SK-3_confirm ./ark_images/processed/guanqia\SK-3_confirm.png 1920 1080 15 | ZX|第二章|S2-12 ./ark_images/processed/guanqia\S2-12.png 1920 1080 16 | ZX|第二章|S2-12_confirm ./ark_images/processed/guanqia\S2-12_confirm.png 1920 1080 17 | ZX|第一章 ./ark_images/processed/guanqia\chapter1.png 1920 1080 18 | ZX|第二章 ./ark_images/processed/guanqia\chapter2.png 1920 1080 19 | ZX|第三章 ./ark_images/processed/guanqia\chapter3.png 1920 1080 20 | ZX|第四章 ./ark_images/processed/guanqia\chapter4.png 1920 1080 21 | ZX ./ark_images/processed/guanqia\zhandou_jiemian.png 1920 1080 22 | WZ ./ark_images/processed/guanqia\wuzichoubei.png 1920 1080 23 | PR ./ark_images/processed/guanqia\xinpiansousuo.png 1920 1080 24 | WZ|经验 ./ark_images/processed/guanqia\gouliang.png 1920 1080 25 | WZ|红票子 ./ark_images/processed/guanqia\hongpiao.png 1920 1080 26 | WZ|建材 ./ark_images/processed/guanqia\jiancai.png 1920 1080 27 | WZ|龙门币 ./ark_images/processed/guanqia\longmenbi.png 1920 1080 28 | 29 | WZ|龙门币|CE-4 ./ark_images/processed/guanqia\CE-4.png 1280 720 30 | WZ|龙门币|CE-4_confirm ./ark_images/processed/guanqia\CE-4_confirm.png 1280 720 31 | -------------------------------------------------------------------------------- /dist/config/pic_confirm: -------------------------------------------------------------------------------- 1 | 60tili ./ark_images/processed\60ti.png 1920 1080 2 | 100tili ./ark_images/processed\100ti.png 1920 1080 3 | daili_do ./ark_images/processed\daili_do.png 1920 1080 4 | daili_undo ./ark_images/processed\daili_undo.png 1920 1080 5 | zhandou_pause ./ark_images/processed\zhandou_pause.png 1920 1080 6 | daili_confirm ./ark_images/processed\daili_confirm.png 1920 1080 7 | enter_quick ./ark_images/processed\enter_quick.png 1920 1080 8 | zhandou_quickenter ./ark_images/processed\zhandou_quickenter.png 1920 1080 9 | yuanshi_lizhi ./ark_images/processed\yuanshi_lizhi.png 1920 1080 10 | bushu_fangxiang ./ark_images/processed\bushu_fangxiang.png 1920 1080 11 | 2xspeed ./ark_images/processed\2xspeed.png 1920 1080 12 | 1xspeed ./ark_images/processed\1xspeed.png 1920 1080 13 | skip ./ark_images/processed\skip.png 1920 1080 14 | skip_confirm ./ark_images/processed\skip_confirm.png 1920 1080 15 | -------------------------------------------------------------------------------- /dist/config/pic_huodong: -------------------------------------------------------------------------------- 1 | HD|HD-1|OF-6 ./ark_images/processed/huodong\huodong_OF-6.png 1920 1080 2 | HD|HD-1|OF-7 ./ark_images/processed/huodong\huodong_OF-7.png 1920 1080 3 | HD|HD-1|OF-8 ./ark_images/processed/huodong\huodong_OF-8.png 1920 1080 4 | HD|HD-1|OF-F3 ./ark_images/processed/huodong\huodong_OF-F3.png 1920 1080 5 | HD|HD-1|OF-F4 ./ark_images/processed/huodong\huodong_OF-F4.png 1920 1080 6 | HD|HD-1|OF-6_confirm ./ark_images/processed/huodong\huodong_OF-6_confirm.png 1920 1080 7 | HD|HD-1|OF-7_confirm ./ark_images/processed/huodong\huodong_OF-7_confirm.png 1920 1080 8 | HD|HD-1|OF-8_confirm ./ark_images/processed/huodong\huodong_OF-8_confirm.png 1920 1080 9 | HD|HD-1|OF-F3_confirm ./ark_images/processed/huodong\huodong_OF-F3_confirm.png 1920 1080 10 | HD|HD-1|OF-F4_confirm ./ark_images/processed/huodong\huodong_OF-F4_confirm.png 1920 1080 11 | HD ./ark_images/processed/huodong\zhandou_huodong1.png 1920 1080 12 | HD|HD-1 ./ark_images/processed/huodong\zhandou_huodong_enter1.png 1920 1080 13 | huodong_enter2 ./ark_images/processed/huodong\zhandou_huodong_enter2.png 1920 1080 -------------------------------------------------------------------------------- /function.py: -------------------------------------------------------------------------------- 1 | from basic_function import * 2 | import time 3 | import config 4 | current_pos = 0 5 | def judge_where(handle): 6 | def _judge(handle,im): 7 | for index,i in enumerate(config.pic_judge): 8 | if pic_locate(config.pic_judge[i], im, 0.8, False,True,[1280,720]) != None: 9 | current_pos = i 10 | return current_pos 11 | 12 | else: 13 | current_pos = None 14 | return None 15 | im = prtsc(handle) 16 | count =0 17 | current_pos = _judge(handle,im) 18 | while(current_pos ==None): 19 | print('no situation detected, detect two seconds later') 20 | time.sleep(2) 21 | im = prtsc(handle) 22 | current_pos = _judge(handle, im) 23 | count+=1 24 | if count >=60: 25 | io.imsave('./abnormal/judge_failure.png', im) 26 | raise Exception('模拟器可能卡死') 27 | 28 | return current_pos 29 | 30 | def confirm_where(handle,where,rgb_bool = True,confirm_once=True): 31 | def _judge(handle,im): 32 | if pic_locate(config.pic_confirm['{}'.format(where)], im, config.thresh_pic, rgb_bool,False,[1280,720]) != None: 33 | return True 34 | else: 35 | return False 36 | time.sleep(1) 37 | im = prtsc(handle) 38 | count =0 39 | exist = _judge(handle,im) 40 | if confirm_once ==True: 41 | return exist 42 | 43 | while (exist == False): 44 | print('no situation detected, detect two seconds later') 45 | time.sleep(2) 46 | im = prtsc(handle) 47 | exist = _judge(handle, im) 48 | count += 1 49 | if count >= 60: 50 | io.imsave('./abnormal/judge_failure.png', im) 51 | raise Exception('模拟器可能卡死') 52 | 53 | else: 54 | return exist 55 | 56 | def pic_position(handle,where,thresh=config.thresh_pic,findall=False,once=False): 57 | while(1): 58 | im = prtsc(handle) 59 | position = pic_locate(config.pic_confirm[where], im, thresh, findall,False,[1280,720]) 60 | if position!=None or once==False: 61 | break 62 | time.sleep(2) 63 | return position 64 | 65 | def enter_zhujiemian(handle,where,reset=True): #如果检测到有远征回归并且reset为True那么返回需要重新出征的数量 66 | yuanzheng_number = 0 67 | if where =='zhandou': 68 | while(1): 69 | time.sleep(1) 70 | current_pos = judge_where(handle) 71 | if current_pos in ['zhujiemian','liebiao']: 72 | mouse_click(handle,config.zhujiemian_zhandou_enter) 73 | 74 | elif current_pos in ['houqin','houqinagain']: 75 | if reset==False: 76 | mouse_click(handle, config.zhujiemian_houqin_confirm) 77 | else: 78 | mouse_click(handle, config.zhujiemian_houqin_cancel) 79 | if current_pos == 'houqinagain': 80 | yuanzheng_number +=1 81 | elif current_pos in ['gonggao']: 82 | position = pic_position(handle,'gonggao',config.thresh_pic,False,False) 83 | if position!= None: 84 | mouse_click(handle,position['result']) 85 | print('检测到公告界面\n') 86 | elif current_pos in ['tanchuang']: 87 | mouse_click(handle,config.single_confirm) 88 | print('检测到成就完成或者是签到界面\n') 89 | if confirm_where(handle, 'zhandou'): 90 | return True, yuanzheng_number 91 | # if current_pos in [10]: 92 | # mouse_click(handle, config.click[0], config.click[1]) 93 | # time.sleep(0.5) 94 | # if confirm_where(handle,'houqinagain'): 95 | # mouse_click(handle,config.houqin_confirm[0],config.houqin_confirm[1]) 96 | # if confirm_where(handle,'zhujiemian'): 97 | # mouse_click(handle,config.zhandou_enter[0],config.zhandou_enter[1]) 98 | # else: 99 | # raise('no houqinagain detected') 100 | 101 | elif where =='liebiao': 102 | while(1): 103 | time.sleep(1) 104 | current_pos = judge_where(handle) 105 | if current_pos in ['liebiao']: 106 | return True,yuanzheng_number 107 | elif current_pos in ['zhujiemian']: 108 | mouse_click(handle,config.zhujiemian_houqin_status) 109 | if confirm_where(handle,'liebiao'): 110 | return True,yuanzheng_number 111 | elif current_pos in ['houqin','houqinagain']: 112 | if reset==False: 113 | mouse_click(handle, config.zhujiemian_houqin_confirm) 114 | else: 115 | mouse_click(handle, config.zhujiemian_houqin_cancel) 116 | if current_pos =='houqinagain': 117 | yuanzheng_number += 1 118 | elif where == 'zhujiemian': 119 | while(1): 120 | time.sleep(1) 121 | current_pos = judge_where(handle) 122 | if current_pos in ['liebiao']: 123 | return True, yuanzheng_number 124 | elif current_pos in ['zhujiemian']: 125 | return True, yuanzheng_number 126 | elif current_pos in ['houqin', 'houqinagain']: 127 | if reset == False: 128 | mouse_click(handle, config.zhujiemian_houqin_confirm) 129 | else: 130 | mouse_click(handle, config.zhujiemian_houqin_cancel) 131 | if current_pos == 'houqinagain': 132 | yuanzheng_number += 1 133 | elif current_pos in ['gonggao']: 134 | position = pic_position(handle,'gonggao',config.thresh_pic,False,False) 135 | if position!= None: 136 | mouse_click(handle,position['result']) 137 | print('检测到公告界面\n') 138 | elif current_pos in ['tanchuang']: 139 | mouse_click(handle,config.single_confirm) 140 | print('检测到成就完成或者是签到界面\n') 141 | elif where == 'xiufu': 142 | while(1): 143 | time.sleep(1) 144 | current_pos = judge_where(handle) 145 | if current_pos in ['liebiao','zhujiemian']: 146 | mouse_click(handle,config.zhujiemian_xiufu_enter) 147 | elif current_pos in ['houqin', 'houqinagain']: 148 | if reset == False: 149 | mouse_click(handle, config.zhujiemian_houqin_confirm) 150 | else: 151 | mouse_click(handle, config.zhujiemian_houqin_cancel) 152 | if current_pos == 'houqinagain': 153 | yuanzheng_number += 1 154 | elif current_pos in ['gonggao']: 155 | position = pic_position(handle,'gonggao',config.thresh_pic,False,False) 156 | if position!= None: 157 | mouse_click(handle,position['result']) 158 | 159 | if current_pos in ['xiufu']: 160 | return True, yuanzheng_number 161 | elif where == 'gongchang': 162 | while(1): 163 | time.sleep(1) 164 | current_pos = judge_where(handle) 165 | if current_pos in ['liebiao','zhujiemian']: 166 | mouse_click(handle,config.zhujiemian_gongchang_enter) 167 | elif current_pos in ['houqin', 'houqinagain']: 168 | if reset == False: 169 | mouse_click(handle, config.zhujiemian_houqin_confirm) 170 | else: 171 | mouse_click(handle, config.zhujiemian_houqin_cancel) 172 | if current_pos == 'houqinagain': 173 | yuanzheng_number += 1 174 | elif current_pos in ['gonggao']: 175 | position = pic_position(handle,'gonggao',config.thresh_pic,False,False) 176 | if position!= None: 177 | mouse_click(handle,position['result']) 178 | if current_pos in ['gongchang']: 179 | return True, yuanzheng_number 180 | # im = prtsc(handle) 181 | # io.imsave('./abnormal/judge_failure.jpg', im) 182 | # raise('模拟器可能卡死') 183 | # return 184 | 185 | def return_to_zhujiemian(handle,reset=False): 186 | while(1): 187 | where = judge_where(handle) 188 | if where in ['zhujiemian']: 189 | return True 190 | elif where=='zhandou': 191 | mouse_click(handle,config.zhandou_return_zhujiemian) 192 | print('返回主界面\n') 193 | elif where=='xiufu': 194 | mouse_click(handle, config.zhandou_return_zhujiemian) 195 | print('返回主界面\n') 196 | elif where == 'gongchang': 197 | mouse_click(handle, config.zhandou_return_zhujiemian) 198 | print('返回主界面\n') 199 | elif where in ['houqin', 'houqinagain']: 200 | if reset == False: 201 | mouse_click(handle, config.zhujiemian_houqin_confirm) 202 | else: 203 | mouse_click(handle, config.zhujiemian_houqin_cancel) 204 | print('chuxian houqin\n') 205 | elif where in ['gonggao']: 206 | position = pic_position(handle, 'gonggao', config.thresh_pic, False, False) 207 | if position != None: 208 | mouse_click(handle, position['result']) 209 | print('检测到zuozhanshezhi\n') 210 | elif where in ['tanchuang']: 211 | mouse_click(handle, config.single_confirm) 212 | print('检测到成就完成或者是签到界面\n') 213 | time.sleep(2) 214 | def kuaixiu_function(handle,thresh = 1000): 215 | count=0 216 | time.sleep(1) 217 | t =[] 218 | im = prtsc(handle) 219 | position = pic_locate(config.pic_confirm['kuaisuxiufu'], im, 0.8, True, False,[1280,720]) 220 | if position!=None: 221 | for i in position: 222 | w = int(i['result'][0]) 223 | h = int(i['result'][1]) 224 | im1 = im[h-70:h-40,w-60:w+60] 225 | result = ocr(im1) 226 | if len(result)!=6: 227 | break 228 | elif int(result)>thresh: 229 | while(1): 230 | mouse_click(handle,i['result']) 231 | if confirm_where(handle,'kuaixiu_confirm',False): 232 | break 233 | mouse_click(handle,config.zhujiemian_houqin_confirm) 234 | count = count+1 235 | return count 236 | 237 | 238 | def yuanzheng(handle,where,reset=False,chuji_number=0): 239 | houqin_biandui = config.CS_houqin_biandui 240 | houqin_xuanze = config.CS_houqin_xuanze 241 | # yuanzheng_file = open(config.yuanzheng_log,'w') 242 | def yuanzheng_chuji(number): 243 | mission_match = 0 244 | if number < 4: 245 | # yuanzheng_file.write( 246 | # '后勤未满,开始远征 {}\n'.format(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))) 247 | print(('后勤未满,开始远征 {}\n'.format(time.strftime('%Y-%m-%d %H:%M:%S' 248 | , time.localtime(time.time()))))) 249 | enter_zhujiemian(handle, 'zhandou', reset) 250 | while(1): 251 | mouse_click(handle, config.zhandou_houqin) 252 | time.sleep(0.5) 253 | if confirm_where(handle,'yuanzheng',True,True): 254 | break 255 | 256 | 257 | i = 0 258 | while (i < 4 - number): #远征未满时派出 259 | cnt=0 #防意外卡死 260 | if houqin_xuanze[i][0] <= 5: 261 | while (confirm_where(handle, '0zhanyi', False,True) != True): 262 | mouse_drag(handle, config.zhandou_houqin_zhanyi_wipeup, 20) 263 | cnt+=1 264 | if cnt>15: 265 | raise Exception('进入到了奇怪的地方') 266 | else: 267 | while (confirm_where(handle, '8zhanyi',False, True) != True): 268 | mouse_drag(handle, config.zhandou_houqin_zhanyi_wipedown, 20) 269 | cnt+=1 270 | if cnt>15: 271 | raise Exception('进入到了奇怪的地方') 272 | while(1): 273 | im = prtsc(handle) 274 | position = pic_locate(config.pic_confirm['{}zhanyi'.format(houqin_xuanze[i][0])], im, config.thresh_pic, False,False,[1280,720]) 275 | mouse_click(handle, position['result']) 276 | time.sleep(0.5) 277 | if pic_locate(config.pic_confirm['{}zhanyi'.format(houqin_xuanze[i][0])], im, config.thresh_pic, False,True,[1280,720])!=None: 278 | break 279 | im = prtsc(handle) 280 | position = pic_locate(config.pic_confirm['yuanzhengsent'], 281 | im[606:712, 173 + 220 * houqin_xuanze[i][1]:383 + 220 * houqin_xuanze[i][1]], config.thresh_pic, 282 | False,False,[1280,720]) 283 | if position != None: 284 | print('{}任务已有梯队执行'.format(houqin_xuanze[i])) 285 | number-=1 #yuanzheng wei paichu 286 | else: 287 | mouse_click(handle, config.yuanzhengkaishi(houqin_xuanze[i][1])) 288 | time.sleep(0.5) 289 | if confirm_where(handle, 'tiduixuanze'): 290 | im = prtsc(handle) 291 | count = 0 292 | for j in houqin_biandui: 293 | position = pic_locate(config.pic_confirm['{}tidui'.format(j)], im, config.thresh_pic, False,False,[1280,720]) 294 | if position == None: 295 | count += 1 296 | if count >= len(houqin_biandui): 297 | raise Exception('后勤编队无效') 298 | else: 299 | mouse_click(handle, position['result']) 300 | time.sleep(0.5) 301 | mouse_click(handle, config.tidui_confirm) 302 | print('{}编队出击{}任务'.format(j, houqin_xuanze[i])) 303 | # yuanzheng_file.write('{}远征任务开始\n'.format(houqin_xuanze[i])) 304 | # number+=1 305 | break 306 | i += 1 307 | print('开始判断远征是否匹配') 308 | enter_zhujiemian(handle,'zhandou',reset) #不论是否出征,都判断是否匹配 309 | mouse_click(handle, config.zhandou_houqin) 310 | time.sleep(0.5) 311 | for i in range(4): #判断远征是否全部匹配 312 | cnt=0 313 | if houqin_xuanze[i][0] <= 5: 314 | while (confirm_where(handle, '0zhanyi', False) != True): 315 | mouse_drag(handle, config.zhandou_houqin_zhanyi_wipeup, 20) 316 | cnt += 1 317 | if cnt > 15: 318 | raise Exception('进入到了奇怪的地方') 319 | else: 320 | while (confirm_where(handle, '8zhanyi', False) != True): 321 | mouse_drag(handle, config.zhandou_houqin_zhanyi_wipedown, 20) 322 | cnt += 1 323 | if cnt > 15: 324 | raise Exception('进入到了奇怪的地方') 325 | im = prtsc(handle) 326 | position = pic_locate(config.pic_confirm['{}zhanyi'.format(houqin_xuanze[i][0])], im, config.thresh_pic, False,False,[1280,720]) 327 | mouse_click(handle, position['result']) 328 | time.sleep(0.5) 329 | im = prtsc(handle) 330 | position = pic_locate(config.pic_confirm['yuanzhengsent'], 331 | im[606:712, 173 + 220 * houqin_xuanze[i][1]:383 + 220 * houqin_xuanze[i][1]], 0.9, 332 | False,False,[1280,720]) 333 | if position != None: 334 | print('{}任务已有梯队执行'.format(houqin_xuanze[i])) 335 | mission_match += 1 336 | if mission_match == 4: 337 | print('后勤任务全部匹配,开始傻瓜式远征\n') 338 | return False 339 | print('当前共有{}梯队远征匹配\n'.format(mission_match)) 340 | return True 341 | if where =='zhujiemian': 342 | enter_zhujiemian(handle,'liebiao',reset) 343 | time.sleep(1) 344 | im = prtsc(handle) 345 | position = pic_locate(config.yuanzheng_num,im,config.thresh_pic,True,True,[1280,720]) 346 | number = len(position) 347 | while(number==None): 348 | print('no liebiao detected') 349 | enter_zhujiemian(handle,'liebiao',reset) 350 | im = prtsc(handle) 351 | pos = pic_locate(config.yuanzheng_num, im, config.thresh_pic, True,True,[1280,720]) 352 | number = len(pos) 353 | return yuanzheng_chuji(number) 354 | elif where=='zhandou': 355 | return yuanzheng_chuji(4-chuji_number) 356 | 357 | def xiufu(handle,reset,kuaixiu = config.CS_kuaixiu): 358 | return_to_zhujiemian(handle) 359 | _,number = enter_zhujiemian(handle,'xiufu',reset) 360 | im = prtsc(handle) 361 | position = pic_locate(config.pic_confirm['xiufu_xuanze'], im, config.thresh_pic, False,True,[1280,720]) 362 | if position==None: 363 | # im = prtsc(handle) 364 | # io.imsave('./abnormal/xiufu_failure.jpg', im) 365 | # raise Exception('不在修复界面内') 366 | pass 367 | else: 368 | mouse_click(handle, position['result']) 369 | while(1): 370 | time.sleep(1) 371 | if confirm_where(handle,'wuxiufu',True)==True: 372 | print('没有需要修复的枪\n') 373 | mouse_click(handle, config.single_confirm) 374 | time.sleep(0.5) 375 | break 376 | else: 377 | for i in range(6): 378 | mouse_click(handle,config.xiufu_xuanze(i,1)) 379 | mouse_click(handle,config.xiufu_confirm) 380 | time.sleep(0.5) 381 | position = pic_position(handle, 'kuaixiu') 382 | if position ==None: 383 | print('确认修理界面未正常出现\n') 384 | im = prtsc(handle) 385 | position = pic_locate(config.pic_confirm['xiufu_xuanze'], im, config.thresh_pic, False,True,[1280,720]) 386 | mouse_click(handle, position['result']) 387 | else: 388 | mouse_click(handle,config.xiufu_start) 389 | time.sleep(0.5) 390 | break 391 | # if kuaixiu==True: 392 | # print('使用快速修理\n') 393 | # config.count = config.count+kuaixiu_function(handle,thresh = config.thresh_kuaixiu) 394 | # if config.count>= config.CS_kuaixiushangxian: 395 | # config.CS_kuaixiu = False 396 | # mouse_click(handle,position['result']) 397 | cnt = 0 398 | while(1): 399 | 400 | if pic_position(handle,'kuaisuxiufu')==None: 401 | break 402 | time.sleep(10) 403 | print('有枪在修复中,等待10秒\n') 404 | if kuaixiu == True and cnt ==0: 405 | cnt = 1 406 | print('使用快速修理\n') 407 | config.count = config.count + kuaixiu_function(handle, thresh=config.thresh_kuaixiu) 408 | if config.count >= config.CS_kuaixiushangxian: 409 | config.CS_kuaixiu = False 410 | print('修复完成\n') 411 | return number 412 | 413 | def zhandou_manage(handle): 414 | current_pos = zhandou_judge(handle) 415 | if current_pos in ['zhandouend','zhandoujiangli','total_end']: 416 | mouse_click(handle,config.click) 417 | time.sleep(0.5) 418 | print('现在处于{}'.format(current_pos)) 419 | return True 420 | elif current_pos in ['zhandouing']: 421 | return True 422 | else: 423 | return False 424 | 425 | def zhandou_judge(handle): 426 | def _judge(handle,im): 427 | for index,i in enumerate(config.battle_judge): 428 | if pic_locate(config.battle_judge[i], im, 0.9, False,False,[1280,720]) != None: 429 | current_pos = i 430 | return current_pos 431 | 432 | else: 433 | current_pos = None 434 | return None 435 | im = prtsc(handle) 436 | count =0 437 | current_pos = _judge(handle,im) 438 | while(current_pos ==None): 439 | print('no situation detected, detect two seconds later') 440 | time.sleep(2) 441 | im = prtsc(handle) 442 | current_pos = _judge(handle, im) 443 | count+=1 444 | if count >=6: 445 | break 446 | # io.imsave('./abnormal/battle_judge_failure.png', im) 447 | # raise'模拟器可能卡死' 448 | 449 | return current_pos 450 | 451 | def zhandou(handle,where,reset): 452 | zhandou_zhuli = config.CS_zhandou_zhuli 453 | zhandou_peilian = config.CS_zhandou_peilian 454 | zhandou_renwu = config.CS_zhandou_renwu #前两位代表任务号,最后是普通,紧急,夜战 455 | def renwu_xuanze(reset): #进入作战场景,返回是否傻瓜式远征 456 | cnt=0 457 | if where == 'zhujiemian': 458 | _,number = enter_zhujiemian(handle,'zhandou',reset) 459 | if number!=0: 460 | reset = yuanzheng(handle,'zhandou',reset,number) 461 | elif where =='zhandou': 462 | pass 463 | time.sleep(1) 464 | mouse_click(handle,config.zhandou_zuozhan) 465 | time.sleep(1) 466 | if zhandou_renwu[0] <= 5: 467 | while (confirm_where(handle, '0zhanyi', False,True) != True): 468 | mouse_drag(handle, config.zhandou_houqin_zhanyi_wipeup, 20) 469 | cnt += 1 470 | if cnt > 30: 471 | raise Exception('进入到了奇怪的地方') 472 | else: 473 | while (confirm_where(handle, '8zhanyi', False,True) != True): 474 | mouse_drag(handle, config.zhandou_houqin_zhanyi_wipedown, 20) 475 | cnt += 1 476 | if cnt > 30: 477 | raise Exception('进入到了奇怪的地方') 478 | time.sleep(0.5) 479 | im = prtsc(handle) 480 | position = pic_locate(config.pic_confirm['{}zhanyi'.format(zhandou_renwu[0])], im, config.thresh_pic, False,False,[1280,720]) 481 | mouse_click(handle, position['result']) 482 | time.sleep(0.5) 483 | mouse_click(handle,config.zhandou_leixing[zhandou_renwu[2]-1]) 484 | time.sleep(1) 485 | if zhandou_renwu[2]==1 and zhandou_renwu[1]>=5: 486 | pass 487 | else: 488 | position = pic_position(handle,'{}-{}-{}'.format(zhandou_renwu[0],zhandou_renwu[1],zhandou_renwu[2]),thresh=0.9) 489 | if position ==None: 490 | raise Exception 491 | else: 492 | mouse_click(handle,position['result']) 493 | time.sleep(1) 494 | position = pic_position(handle,'zhandou_enter') 495 | if position ==None: 496 | raise Exception 497 | else: 498 | mouse_click(handle,position['result']) 499 | time.sleep(0.5) 500 | print('进入战斗场景\n') 501 | while(1): 502 | if confirm_where(handle,'renxingman')==True: 503 | chaijie(handle) #拆枪 504 | return -1 505 | elif confirm_where(handle,'zhandouzhunbei',True)==True: 506 | return reset 507 | #其余情况重新进入 508 | def ditu(mission): 509 | mouse_scroll(handle) 510 | cnt =0 511 | im = prtsc(handle) 512 | pic_match_path = config.pic_confirm['{}-{}-{}map'.format(mission[0],mission[1],mission[2])] 513 | pic_test = np.array(Image.open(pic_match_path, 'r')) 514 | position = aircv.find_all_template(im,pic_test[:,0:int(pic_test.shape[1]/2),:],0.9) 515 | while(position==[]): 516 | cnt+=1 517 | if cnt>30: 518 | raise Exception('地图校正失败') 519 | mouse_drag(handle,config.zhandou_suoxiao,20) 520 | time.sleep(0.5) 521 | for i in ['ditu_wudian1','ditu_wudian2']: 522 | if confirm_where(handle,i,True)==True: 523 | mouse_click(handle,config.single_confirm) 524 | if confirm_where(handle,'tiduixuanze',True)==True: 525 | mouse_click(handle, config.tidui_cancel) 526 | time.sleep(1) 527 | im = prtsc(handle) 528 | pic_test = np.array(Image.open(pic_match_path, 'r')) 529 | position = aircv.find_all_template(im, pic_test[:, 0:int(pic_test.shape[1] / 2), :], 0.9) 530 | mouse_scroll(handle) 531 | print('地图校正完成\n') 532 | 533 | def _peilian(xy): 534 | mouse_click(handle, xy) 535 | time.sleep(1) 536 | position = pic_position(handle, '{}tidui'.format(zhandou_peilian), config.thresh_pic, False, False) 537 | if position == None: 538 | raise Exception 539 | else: 540 | mouse_click(handle, position['result']) 541 | time.sleep(0.5) 542 | mouse_click(handle, config.tidui_confirm) 543 | time.sleep(0.5) 544 | print('陪练队部署完毕\n') 545 | def _zhuli(xy): 546 | mouse_click(handle,xy) 547 | time.sleep(0.5) 548 | im = prtsc(handle) 549 | position = pic_locate(config.pic_confirm['{}tidui'.format(zhandou_zhuli)], im, config.thresh_pic, False,False,[1280,720]) 550 | if position == []: 551 | raise Exception 552 | else: 553 | mouse_click(handle, position['result']) 554 | mouse_click(handle, config.tidui_confirm) 555 | time.sleep(0.5) 556 | print('主力队部署完毕\n') 557 | 558 | def _jihua_start(): 559 | time.sleep(3) 560 | cnt = 0 561 | while(1): 562 | time.sleep(0.5) 563 | cnt += 1 564 | if cnt > 60: 565 | raise Exception 566 | im = prtsc(handle) 567 | position = pic_locate(config.pic_confirm['jihuamoshi'], im, config.thresh_pic, False, True,[1280,720]) 568 | if position != None: 569 | mouse_click(handle, position['result']) 570 | time.sleep(0.5) 571 | if pic_locate(config.pic_confirm['jihuaxuanzhong'], im, config.thresh_pic,False, True,[1280,720])!=None: 572 | break 573 | print('计划模式选中\n') 574 | 575 | 576 | def _huadong(mode='up'): 577 | if mode=='up': 578 | mouse_drag(handle,config.zhandou_houqin_zhanyi_wipeup,20) 579 | time.sleep(0.5) 580 | mouse_drag(handle, config.zhandou_houqin_zhanyi_wipeup, 20) 581 | time.sleep(0.5) 582 | 583 | def _jihua_end(name): 584 | im = prtsc(handle) 585 | position = pic_locate(config.pic_confirm[name], im, config.thresh_pic, False, True,[1280,720]) 586 | if position == None: 587 | raise Exception 588 | else: 589 | mouse_click(handle, config.tidui_confirm) 590 | time.sleep(0.5) 591 | print('执行计划\n') 592 | 593 | def _zhandou_end(final=True): 594 | cnt =0 595 | while(1): 596 | time.sleep(10) 597 | cnt+=1 598 | if cnt>60: 599 | raise Exception 600 | if confirm_where(handle,'jihuamoshi',True)==True: 601 | break 602 | while(1): 603 | mouse_click(handle,config.tidui_confirm) 604 | time.sleep(0.5) 605 | if confirm_where(handle,'jieshuhuihe',True,True)!=True: 606 | break 607 | print('战斗完成\n') 608 | time.sleep(0.5) 609 | if final== True: 610 | while(1): 611 | if zhandou_manage(handle): 612 | pass 613 | else: 614 | pos = judge_where(handle) 615 | if pos in ['zhujiemian','liebiao','houqin','houqinagain','zhandou']: 616 | break 617 | 618 | 619 | def zhandou_start542(): 620 | _peilian([1043, 551]) 621 | _huadong() 622 | 623 | _zhuli([1080,174]) 624 | mouse_click(handle,config.tidui_confirm) #战斗开始 625 | _jihua_start() 626 | 627 | mouse_click(handle, [1080, 174]) 628 | time.sleep(0.3) 629 | mouse_click(handle, [858, 155]) 630 | time.sleep(0.3) 631 | mouse_click(handle, [683, 214]) 632 | time.sleep(0.3) 633 | mouse_click(handle, [480, 180]) 634 | time.sleep(0.3) 635 | mouse_click(handle, [258, 204]) 636 | time.sleep(0.3) 637 | 638 | _jihua_end('4jihua') 639 | 640 | _zhandou_end() 641 | 642 | def zhandou_start021(): 643 | _peilian([262,345]) 644 | 645 | 646 | _zhuli([665,364]) 647 | mouse_click(handle,config.tidui_confirm) #战斗开始 648 | _jihua_start() 649 | 650 | mouse_click(handle, [671, 358]) 651 | time.sleep(0.3) 652 | mouse_click(handle, [494, 259]) 653 | time.sleep(0.3) 654 | _huadong('up') 655 | mouse_click(handle, [534,559]) 656 | time.sleep(0.3) 657 | mouse_click(handle, [671,358]) 658 | time.sleep(0.3) 659 | mouse_click(handle, [522,258]) 660 | time.sleep(0.3) 661 | 662 | _jihua_end('4jihua') 663 | _zhandou_end(False) 664 | print('铁血回合\n') 665 | time.sleep(4) 666 | _jihua_start() 667 | mouse_click(handle, [520,256]) 668 | time.sleep(0.3) 669 | mouse_click(handle, [811,257]) 670 | time.sleep(0.3) 671 | mouse_click(handle, [988,294]) 672 | time.sleep(0.3) 673 | _jihua_end('31jihua') 674 | _zhandou_end() 675 | 676 | reset = renwu_xuanze(reset) 677 | if reset==-1: 678 | return -1 679 | ditu(zhandou_renwu) 680 | if zhandou_renwu == [0,2,1]: 681 | zhandou_start021() 682 | elif zhandou_renwu == [5,4,2]: 683 | zhandou_start542() 684 | # globals().get('zhandou_start{}'.format(number))() 685 | return reset 686 | 687 | def chaijie(handle,mode = 0): 688 | while(1): 689 | im = prtsc(handle) 690 | position = pic_locate(config.pic_confirm['renxingman'], im, config.thresh_pic, False,True,[1280,720]) 691 | if position!=None: 692 | mouse_click(handle,position['result']) 693 | time.sleep(0.5) 694 | if confirm_where(handle,'gongchang',False)==True: 695 | break 696 | # mouse_click(handle,config.tri_return) 697 | # time.sleep(0.5) 698 | # if return_to_zhujiemian(handle,'zhandou')==True: 699 | # pass 700 | # else: 701 | # raise Exception 702 | # _,number = enter_zhujiemian(handle,'gongchang',reset) 703 | mouse_click(handle,config.gongchang_chaijie) 704 | time.sleep(1) 705 | while(1): 706 | position = pic_position(handle, 'chaijie_xuanze_juese', 0.95) 707 | if position != None: 708 | mouse_click(handle,position['result']) 709 | break 710 | time.sleep(0.5) 711 | if mode ==0: 712 | mouse_click(handle,[1188,284]) 713 | time.sleep(0.5) 714 | mouse_click(handle, [622,265]) 715 | time.sleep(0.5) 716 | if confirm_where(handle,'chaijie_2xing'): 717 | mouse_click(handle,[948,675]) 718 | else: 719 | raise Exception('123') 720 | time.sleep(0.5) 721 | for i in range(6): 722 | for j in range(2): 723 | mouse_click(handle,config.xiufu_xuanze(i,j)) 724 | time.sleep(0.1) 725 | mouse_click(handle,config.tidui_confirm) 726 | time.sleep(0.5) 727 | position = pic_position(handle,'chaijie_confirm',0.98,False,True) 728 | mouse_click(handle,position['result']) 729 | time.sleep(0.5) 730 | if return_to_zhujiemian(handle,'gongchang')==True: 731 | pass 732 | else: 733 | raise Exception 734 | # def yuanzheng(handle, reset=False): 735 | # houqin_biandui = [4, 6, 7, 8] 736 | # houqin_xuanze = [[1, 4], [0, 4], [7, 2], [8, 2]] 737 | # yuanzheng_file = open(config.yuanzheng_log, 'a') 738 | # im = prtsc(handle) 739 | # enter_zhujiemian(handle, 'liebiao', reset) 740 | # time.sleep(1) 741 | # im = prtsc(handle) 742 | # pos = pic_locate(config.yuanzheng_num, im, 0.9, True) 743 | # number = len(pos) 744 | # while (number == None): 745 | # print('no liebiao detected') 746 | # enter_zhujiemian(handle, 'liebiao', reset) 747 | # im = prtsc(handle) 748 | # pos = pic_locate(config.yuanzheng_num, im, 0.9, True) 749 | # number = len(pos) 750 | # if number < 4: 751 | # yuanzheng_file.write( 752 | # '后勤未满,开始远征 {}\n'.format(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))) 753 | # enter_zhujiemian(handle, 'zhandou', reset) 754 | # mouse_click(handle, config.zhandou_houqin) 755 | # time.sleep(0.5) 756 | # mission_match = 0 757 | # if confirm_where(handle, 'yuanzheng'): 758 | # i = 0 759 | # while (i < 4 - number): 760 | # if houqin_xuanze[i][0] <= 5: 761 | # while (confirm_where(handle, '0zhanyi', True) != True): 762 | # mouse_drag(handle, config.zhandou_houqin_zhanyi_wipeup, 20) 763 | # else: 764 | # while (confirm_where(handle, '8zhanyi', True) != True): 765 | # mouse_drag(handle, config.zhandou_houqin_zhanyi_wipedown, 20) 766 | # im = prtsc(handle) 767 | # pos = pic_locate(config.pic_confirm['{}zhanyi'.format(houqin_xuanze[i][0])], im, 0.9, False) 768 | # mouse_click(handle, pos['result']) 769 | # time.sleep(0.5) 770 | # im = prtsc(handle) 771 | # pos = pic_locate(config.pic_confirm['yuanzhengsent'], 772 | # im[606:712, 173 + 220 * houqin_xuanze[i][1]:383 + 220 * houqin_xuanze[i][1]], 0.9, 773 | # False) 774 | # if pos != None: 775 | # print('{}任务已有梯队执行'.format(houqin_xuanze[i])) 776 | # mission_match += 1 777 | # number -= 1 778 | # if mission_match == 4: 779 | # yuanzheng_file.write('后勤任务全部匹配,开始傻瓜式远征\n') 780 | # return False 781 | # else: 782 | # mouse_click(handle, config.yuanzhengkaishi(houqin_xuanze[i][1])) 783 | # time.sleep(0.5) 784 | # if confirm_where(handle, 'tiduixuanze'): 785 | # im = prtsc(handle) 786 | # count = 0 787 | # for j in houqin_biandui: 788 | # pos = pic_locate(config.pic_confirm['{}tidui'.format(j)], im, 0.95, False) 789 | # if pos == None: 790 | # count += 1 791 | # if count >= len(houqin_biandui): 792 | # raise '后勤编队无效' 793 | # else: 794 | # mouse_click(handle, pos['result']) 795 | # time.sleep(0.5) 796 | # mouse_click(handle, config.tidui_confirm) 797 | # print('{}编队出击{}任务'.format(j, houqin_xuanze[i])) 798 | # yuanzheng_file.write('{}远征任务开始\n'.format(houqin_xuanze[i])) 799 | # yuanzheng_file.close() 800 | # break 801 | # i += 1 802 | # 803 | # 804 | # 805 | # else: 806 | # return True 807 | 808 | 809 | # reset = True 810 | # 811 | # 812 | # reset = yuanzheng(handle,'zhujiemian',reset) #所有远征派出 813 | # enter_zhujiemian(handle,'zhujiemian',reset) 814 | 815 | -------------------------------------------------------------------------------- /function_ark.py: -------------------------------------------------------------------------------- 1 | from basic_function import * 2 | import time 3 | import os 4 | import config_ark 5 | import globalvar 6 | # time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time())) 7 | def judge_where(handle,count_max=60): 8 | #判断当前位置 9 | def _judge(im): 10 | for keys,pic_data in config_ark.pic_where.items(): 11 | if pic_locate(pic_data, im, globalvar.get_thresh_pic(),False,True) != None: 12 | current_pos = keys 13 | return current_pos 14 | return None 15 | im = prtsc(handle) 16 | count =0 17 | current_pos = _judge(im) 18 | while(current_pos ==None): 19 | print('no situation detected, detect two seconds later') 20 | time.sleep(2) 21 | im = prtsc(handle) 22 | current_pos = _judge(im) 23 | count+=1 24 | if count >=count_max: 25 | if count_max == 60: 26 | temp_im = Image.fromarray(im) 27 | temp_im.save(os.path.join(config_ark.IMG_SAVE,'error_{}.png'.format( 28 | time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))))) 29 | # io.imsave(os.path.join(config_ark.IMG_SAVE,'error_{}.png'.format( 30 | # time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time())))), im) 31 | raise Exception('模拟器可能卡死') 32 | else: 33 | return current_pos 34 | 35 | return current_pos 36 | 37 | def confirm_where(handle,pic_data,rgb_bool = True,confirm_once=True): 38 | #验证当前是否处于某位置 39 | def _judge(im): 40 | if pic_locate(pic_data, im, globalvar.get_thresh_pic(), rgb_bool= rgb_bool,findall=False) != None: 41 | return True 42 | else: 43 | return False 44 | time.sleep(1) 45 | im = prtsc(handle) 46 | count =0 47 | exist = _judge(im) 48 | if confirm_once ==True: 49 | return exist 50 | if confirm_once==False: 51 | count_max = 60 52 | else: 53 | count_max = confirm_once 54 | while (exist == False): 55 | print('no situation detected, detect two seconds later') 56 | time.sleep(2) 57 | im = prtsc(handle) 58 | exist = _judge(im) 59 | count += 1 60 | if count >= count_max: 61 | if count_max ==60: 62 | temp_im = Image.fromarray(im) 63 | temp_im.save(os.path.join(config_ark.IMG_SAVE,'error_{}.png'.format( 64 | time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))))) 65 | # io.imsave(os.path.join(config_ark.IMG_SAVE,'error_{}.png'.format( 66 | # time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time())))), im) 67 | raise Exception('模拟器可能卡死') 68 | else: 69 | return exist 70 | 71 | return exist 72 | 73 | def pic_position(handle,pic_data,thresh=None,findall=False,once=False): 74 | #寻找图像位于模拟器的像素位置,左上为(0,0) 75 | if thresh==None: 76 | thresh = globalvar.get_thresh_pic() 77 | count = 0 78 | if once != False and once != True: 79 | count_max = once 80 | else: 81 | count_max = 60 82 | while(1): 83 | im = prtsc(handle) 84 | position = pic_locate(pic_data, im, thresh, findall,rgb_bool=False) 85 | if position!=None or once==True: 86 | break 87 | time.sleep(2) 88 | count +=1 89 | if count>=count_max: 90 | if count_max ==60: 91 | temp_im = Image.fromarray(im) 92 | temp_im.save(os.path.join(config_ark.IMG_SAVE,'error_{}.png'.format( 93 | time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))))) 94 | # io.imsave(os.path.join(config_ark.IMG_SAVE,'error_{}.png'.format( 95 | # time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time())))), im) 96 | raise Exception('模拟器可能卡死') 97 | else: 98 | return position 99 | return position 100 | 101 | def enter_where(handle,where): 102 | #利用导航进入各个主界面 103 | #先判断当前所在位置,若为公告:关闭 战斗中:等待 战斗结束:随意点击 若与where一致:不操作 主界面:点击对应位置 104 | # where: 表示进入的位置 目前暂时只支持"作战" 105 | # return false:失败 true:成功 106 | current_pos = judge_where(handle,60) #若有不存在当前图像库的状况保存 107 | if current_pos == "gonggao": 108 | position = pic_position(handle,config_ark.pic_where["gonggao"],once=True) 109 | if position!=None: 110 | mouse_click(handle,position["result"]) 111 | if confirm_where(handle,config_ark.pic_where["gonggao"]) and where=="zhandou_xuanze": 112 | mouse_click(handle,config_ark.points["zhandou_enter"]) 113 | if confirm_where(handle,config_ark.pic_where[where],confirm_once=5): 114 | return True 115 | 116 | else: 117 | print("人为关闭公告,略过\n") 118 | elif current_pos == "zhujiemian": 119 | mouse_click(handle, config_ark.points["zhandou_enter"]) 120 | if confirm_where(handle, config_ark.pic_where[where], confirm_once=5): 121 | return True 122 | else: 123 | #暂时用不上,懒得写 124 | pass 125 | #enter_where(handle,where) 不使用迭代,较危险 126 | return False 127 | 128 | def enter_chapter(handle,where): 129 | #从战斗进入主线,物资,活动关卡等 130 | #where为关卡完整信息,如 "ZX-1-1-11" 131 | tmp = where.split('|') 132 | sub_class = tmp[0] + "|" + tmp[1] 133 | chapter = tmp[0] 134 | if chapter in ['ZX','PR','WZ']: 135 | confirm_pic = config_ark.guanqia_pic[chapter] 136 | sub_class_pic = config_ark.guanqia_pic[sub_class] 137 | elif chapter is 'HD': 138 | confirm_pic = config_ark.pic_huodong[chapter] 139 | sub_class_pic = config_ark.pic_huodong[sub_class] 140 | else: 141 | #实际上不可能出现 142 | temp_str = None 143 | raise Exception 144 | #进入一级章节 145 | position = pic_position(handle,confirm_pic,once=True) 146 | if position!=None: 147 | mouse_click(handle,position["result"]) 148 | time.sleep(1) 149 | else: 150 | return False 151 | cnt=0 152 | #进入子章节 153 | while (1): 154 | position = pic_position(handle, sub_class_pic,once=1) 155 | if position!=None: 156 | break 157 | mouse_drag(handle, config_ark.points['drag_left'], globalvar.get_drag_speed()) 158 | cnt += 1 159 | if cnt > 10: 160 | print("主线进入失败,重新进入战斗界面") 161 | return False 162 | 163 | mouse_click(handle,position["result"]) 164 | print("进入{}".format(sub_class)) 165 | return True 166 | 167 | def enter_zhuxian(handle,where,daili_confirm=True): 168 | """ 169 | :param handle: 170 | :param where: exp 'ZX|1|1-11' 'HD|1|xx-xx' 171 | :param daili_confirm: 172 | :return: 173 | """ 174 | #从章节进入主线 175 | #开始拖拽至最最右侧 176 | #先判定是否有选择的关卡 177 | chapter = where.split('|')[0] 178 | if chapter == 'HD': 179 | tmp1 = config_ark.pic_huodong[where] 180 | tmp2 = config_ark.pic_huodong[where+'_confirm'] 181 | else: 182 | tmp1 = config_ark.guanqia_pic[where] 183 | tmp2 = config_ark.guanqia_pic[where+'_confirm'] 184 | position = pic_position(handle, tmp1,once=True) 185 | if position==None: 186 | position = pic_position(handle,tmp2,once=True) 187 | if position==None: 188 | print('当前界面未检测到选择关卡,划至最右侧寻找') 189 | for i in range(20): 190 | mouse_drag(handle, config_ark.points['drag_right'], 3) 191 | cnt = 0 192 | while (1): 193 | position = pic_position(handle, tmp1,once=1) 194 | if position != None: 195 | break 196 | mouse_drag(handle, config_ark.points['drag_left'], globalvar.get_drag_speed()) 197 | cnt += 1 198 | if cnt > 20: 199 | print("主线进入失败,重新进入战斗界面") 200 | return False 201 | mouse_click(handle, position["result"]) 202 | time.sleep(1) 203 | print("选择关卡") 204 | #if confirm_where(handle, config_ark.guanqia_pic["{}_confirm".format(where)], confirm_once=2): 205 | if daili_confirm==True: 206 | position = pic_position(handle, config_ark.pic_confirm["daili_do"], once=True) 207 | if position != None: 208 | print("代理已使用") 209 | # i += 1 210 | pass 211 | else: 212 | mouse_click(handle, config_ark.points['daili']) 213 | time.sleep(1) 214 | print("使用代理") 215 | else: 216 | return False 217 | mouse_click(handle, config_ark.points["peizhi_enter"]) 218 | print("进入队伍配置界面") 219 | #else: 220 | #return False 221 | time.sleep(3) 222 | return True 223 | 224 | 225 | def set_direction(handle,xy,direction): 226 | #direction left ,right up down 227 | if direction == "left": 228 | temp_xy = [xy[0]-config_ark.BUSHU_OFFSET,xy[1]] 229 | mouse_drag(handle,(xy,temp_xy),globalvar.get_drag_speed()) 230 | elif direction == "right": 231 | temp_xy = [xy[0]+config_ark.BUSHU_OFFSET,xy[1]] 232 | mouse_drag(handle,(xy,temp_xy),globalvar.get_drag_speed()) 233 | elif direction == "up": 234 | temp_xy = [xy[0],xy[1]-config_ark.BUSHU_OFFSET] 235 | mouse_drag(handle,(xy,temp_xy),globalvar.get_drag_speed()) 236 | elif direction == "down": 237 | temp_xy = [xy[0],xy[1]-config_ark.BUSHU_OFFSET] 238 | mouse_drag(handle,(xy,temp_xy),globalvar.get_drag_speed()) 239 | 240 | def battle_speed_set(handle,speed=2): 241 | if speed ==2: 242 | position = pic_position(handle,config_ark.pic_confirm["1xspeed"],once=True) 243 | if position!=None: 244 | mouse_click(handle,position["result"]) 245 | time.sleep(0.5) 246 | if confirm_where(handle,config_ark.pic_confirm["2xspeed"],confirm_once=True): 247 | print("战斗速度修改为2x") 248 | return True 249 | else: 250 | print("当前战斗速度为2x") 251 | return True 252 | return False 253 | 254 | def staff_set(handle,name_or_xy,target_xy,direction): 255 | """ 256 | 部署干员,自动检查费用是否足够及部署目标位置是否正确 257 | :param handle: 窗口句柄 258 | :param name_or_xy: 部署干员名称或xy坐标 259 | :param target_xy: 部署位置xy坐标 260 | :return: true部署正确,false未知错误 261 | """ 262 | if isinstance(name_or_xy,str): 263 | #干员名称 264 | assert(name_or_xy in config_ark.staff_pic.keys()) 265 | staff_pic = config_ark.staff_pic[name_or_xy] 266 | i = 0 267 | while(i<30): 268 | i += 1 269 | position = pic_position(handle,staff_pic,globalvar.get_thresh_pic(),once=True) 270 | if position!=None: 271 | mouse_drag(handle,(position["result"],target_xy),globalvar.get_drag_speed()) 272 | time.sleep(1) 273 | 274 | if pic_position(handle,config_ark.pic_confirm["bushu_fangxiang"],thresh=globalvar.get_thresh_pic()-0.1,once=True)!=None: 275 | set_direction(handle,target_xy,direction) 276 | time.sleep(2) 277 | return True 278 | else: 279 | print("No staff{} detected".format(name_or_xy)) 280 | 281 | return False -------------------------------------------------------------------------------- /globalvar.py: -------------------------------------------------------------------------------- 1 | import os 2 | class global_val: 3 | max_resolution = [1920,1080] #图片素材的分辨率 4 | window_resolution = [0,0] #当前模拟器的分辨率 5 | yuanshi_used = 0 #已经碎石的数量 6 | thresh_pic = 0.8 7 | drag_speed = 20 8 | yuanshi = 0 #0表示不使用体力药及源石,1表示仅使用体力药,2表示使用体力药及源石 9 | duochong = True #是否多重验证 10 | CONFIG_FILE = "./config.txt" 11 | handle_infor = [] 12 | assert (os.path.exists(CONFIG_FILE)) 13 | file = open(CONFIG_FILE, 'r') 14 | while True: 15 | text_line = file.readline() 16 | if text_line: 17 | handle_infor.append(text_line.split("\n")[0]) 18 | else: 19 | file.close() 20 | break 21 | 22 | def init_value(): 23 | global_val.yuanshi_used = 0 #已经碎石的数量 24 | 25 | def set_thresh_pic(value): 26 | global_val.thresh_pic = value 27 | def get_thresh_pic(): 28 | return global_val.thresh_pic 29 | def set_drag_speed(value): 30 | global_val.drag_speed = value 31 | def get_drag_speed(): 32 | return global_val.drag_speed 33 | def set_yuanshi(value): 34 | global_val.yuanshi = value 35 | def get_yuanshi(): 36 | return global_val.yuanshi 37 | def get_max_resolution(): 38 | return global_val.max_resolution 39 | def get_window_resolution(): 40 | return global_val.window_resolution 41 | def set_window_resolution(value): 42 | if len(value)!=2: 43 | raise Exception("window resolution shape isn't right\n") 44 | global_val.window_resolution = value 45 | 46 | def get_yuanshi_used(): 47 | return global_val.yuanshi_used 48 | def yuanshi_used_add(value): 49 | global_val.yuanshi_used += value 50 | def get_handle_infor(): 51 | return global_val.handle_infor -------------------------------------------------------------------------------- /processed/f9c6cbdc6b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vertuer/script_arknight/a12f585c04778b93d3262ef8a3332009865e2a6e/processed/f9c6cbdc6b.jpg -------------------------------------------------------------------------------- /test2.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2 3 | import os 4 | import math 5 | import matplotlib.pyplot as plt 6 | def circles_image(image): 7 | # 由于霍夫圆检测对噪声敏感,这里用 均值偏移滤波 移除噪声 8 | # pyrMeanShiftFiltering(src, sp, sr[, dst[, maxLevel[, termcrit]]]) -> dst 9 | # 1 data 2 空间窗半径 3 色彩窗半径 10 | dst = cv2.pyrMeanShiftFiltering(image, 10, 100) 11 | cv2.imshow("23",dst) 12 | cimage = cv2.cvtColor(dst, cv2.COLOR_BGR2GRAY) 13 | circles = cv2.HoughCircles(cimage, cv2.HOUGH_GRADIENT, 1, 100, param1=80, param2=70, minRadius=0, maxRadius=0) 14 | circles = np.uint16(np.around(circles)) # 把类型换成整数 15 | pic_area = [] #矩形区域坐标信息,i[0]为左上 i[1]右下 16 | for i in circles[0, :]: # return (a,b,r) 17 | pic_area.append((i[0],i[1],i[2])) 18 | cv2.circle(image, (i[0], i[1]), i[2], (0, 0, 255), 2) 19 | cv2.circle(image, (i[0], i[1]), 2, (255, 0, 255), 2) # 画出小圆心 20 | cv2.imshow("圆形", image) 21 | 22 | def getMatchNum(matches,ratio): 23 | '''返回特征点匹配数量和匹配掩码''' 24 | matchesMask=[[0,0] for i in range(len(matches))] 25 | matchNum=0 26 | for i,(m,n) in enumerate(matches): 27 | if m.distance globalvar.get_yuanshi_used(): 41 | function_ark.mouse_click(self.handle,config_ark.points["yuanshi_ok"]) 42 | globalvar.yuanshi_used_add(1) 43 | else: 44 | function_ark.mouse_click(self.handle,config_ark.points["yuanshi_no"]) 45 | print("石乐志,结束") 46 | raise config_ark.ExitError 47 | time.sleep(1) 48 | 49 | else: 50 | position1 = function_ark.pic_position(self.handle, config_ark.pic_where["enter_quick"], once=2) 51 | if position1 ==None: 52 | function_ark.save_im(self.handle,os.path.join(config_ark.IMG_SAVE,'error_{}.png'.format( 53 | time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))))) 54 | function_ark.mouse_click(self.handle,config_ark.points["kongbai"]) 55 | else: 56 | #若可以快速访问,则直接跳转到战斗主界面 57 | function_ark.mouse_click(self.handle,position1["result"]) 58 | time.sleep(1) 59 | position2 = function_ark.pic_position(self.handle, config_ark.pic_confirm["zhandou_quickenter"], once=2) 60 | if position2!=None: 61 | function_ark.mouse_click(self.handle, position2["result"]) 62 | time.sleep(2) 63 | return self.operation_mapping["选择并进入对应章节,选择关卡,确认选择正确,进入队伍配置界面"] 64 | else: 65 | #再次判断位置 66 | pass 67 | return self.find_where() 68 | def start_once(self): 69 | i = 0 70 | while (i < len(self.operation_sequence)): 71 | if function_ark.confirm_where(self.handle,config_ark.guanqia_pic[self.guanqia]): 72 | function_ark.enter_zhuxian(self.handle,self.guanqia) 73 | i = self.operation_mapping["开始战斗"] 74 | else: 75 | i = self.find_where() 76 | if self.operation_sequence[i] == "进入战斗界面": 77 | function_ark.enter_where(self.handle, "zhandou_xuanze") 78 | # i += 1 79 | elif self.operation_sequence[i] == "选择并进入对应章节,选择关卡,确认选择正确,进入队伍配置界面": 80 | function_ark.enter_chapter(self.handle,self.guanqia) 81 | function_ark.enter_zhuxian(self.handle,self.guanqia) 82 | elif self.operation_sequence[i] == "开始战斗": 83 | if function_ark.confirm_where(self.handle, config_ark.pic_where['zhandou_start'], confirm_once=4): 84 | if function_ark.confirm_where(self.handle, config_ark.pic_confirm["daili_confirm"]): 85 | function_ark.mouse_click(self.handle, config_ark.points["zhandou_start"]) 86 | print("进入战斗") 87 | time.sleep(3) 88 | # i += 1 89 | else: 90 | raise config_ark.ExitError 91 | else: 92 | # 上一步操作点击被吞了 93 | # i = self.operation_mapping["进入队伍配置界面"] 94 | pass 95 | elif self.operation_sequence[i] == "确认进入战斗,跳过剧情,开启2倍速,干员部署,确认没有暂停并等待战斗结束": 96 | # if function_ark.confirm_where(self.handle,config_ark.pic_where["zhandou_ing"],confirm_once=20): 97 | # pass 98 | # else: 99 | # #从新定位当前位置 100 | # continue 101 | position = function_ark.pic_position(self.handle,config_ark.pic_confirm["skip"]) 102 | function_ark.mouse_click(self.handle,position["result"]) 103 | if function_ark.confirm_where(self.handle,config_ark.pic_confirm["skip_confirm"],confirm_once=3): 104 | function_ark.mouse_click(self.handle,config_ark.points["skip_yes"]) 105 | print("跳过剧情") 106 | time.sleep(5) 107 | else: 108 | return False 109 | #意想不到的错误,之后再考虑处理方式 110 | while(1): 111 | if function_ark.battle_speed_set(self.handle,speed=2)==True: 112 | print("开启二倍速") 113 | break 114 | #开始部署干员 115 | function_ark.staff_set(self.handle,"hj",config_ark.points["1-11-target-xy"][0],"right") 116 | function_ark.staff_set(self.handle, "longmenbi", config_ark.points["1-11-target-xy"][1], "right") 117 | function_ark.staff_set(self.handle, "12F", config_ark.points["1-11-target-xy"][2], "right") 118 | function_ark.staff_set(self.handle, "sdhd", config_ark.points["1-11-target-xy"][3], "right") 119 | function_ark.staff_set(self.handle, "mgl", config_ark.points["1-11-target-xy"][4], "right") 120 | function_ark.staff_set(self.handle, "ase", config_ark.points["1-11-target-xy"][5], "up") 121 | while(1): 122 | if function_ark.confirm_where(self.handle,config_ark.pic_where["zhandou_ing"],confirm_once=2): 123 | print("正在战斗中") 124 | position = function_ark.pic_position(self.handle,config_ark.pic_confirm["zhandou_pause"],once=True) 125 | if position!=None: 126 | function_ark.mouse_click(self.handle,position["result"]) 127 | print("检测到暂停,继续战斗") 128 | time.sleep(config_ark.BATTLE_WAIT) 129 | else: 130 | position = function_ark.pic_position(self.handle,config_ark.pic_confirm["zhandou_pause"],once=True) 131 | if position!=None: 132 | function_ark.mouse_click(self.handle,position["result"]) 133 | print("检测到暂停,继续战斗") 134 | else: 135 | break 136 | time.sleep(config_ark.BATTLE_WAIT) 137 | #结束 138 | #i += 1 139 | elif self.operation_sequence[i] == "判断战役成功": 140 | if function_ark.confirm_where(self.handle,config_ark.pic_where["zhandou_end"],confirm_once=2): 141 | print("战斗胜利") 142 | function_ark.mouse_click(self.handle,config_ark.points["kongbai"]) 143 | temp_list = list(config_ark.pic_where.keys()) 144 | temp_list.remove('zhandou_end') 145 | temp_list.remove('zhandou_failed') 146 | if function_ark.judge_where(self.handle,5) in config_ark.pic_where.keys(): 147 | print('返回到上一级') 148 | pass 149 | return True 150 | else: 151 | function_ark.confirm_where(self.handle, config_ark.pic_where["zhandou_failed"], confirm_once=2) 152 | print("因未知原因战斗失败,请不要最小化模拟器") 153 | function_ark.mouse_click(self.handle,config_ark.points["kongbai"]) 154 | #从新定位当前位置 155 | #判断是否代理未满3星 156 | #self.find_where() 157 | return False 158 | return False 159 | def start(self): 160 | num = self.num 161 | count = 0 162 | while(count globalvar.get_yuanshi_used(): 206 | # function_ark.mouse_click(self.handle,config_ark.points["yuanshi_ok"]) 207 | # globalvar.yuanshi_used_add(1) 208 | # else: 209 | # function_ark.mouse_click(self.handle,config_ark.points["yuanshi_no"]) 210 | # print("石乐志,结束") 211 | # raise config_ark.ExitError 212 | # time.sleep(1) 213 | if globalvar.get_yuanshi() > globalvar.get_yuanshi_used(): 214 | if function_ark.confirm_where(self.handle,config_ark.pic_confirm['60tili']): 215 | function_ark.mouse_click(self.handle, config_ark.points["tili_ok"]) 216 | print('使用60体力药') 217 | time.sleep(1) 218 | elif function_ark.confirm_where(self.handle,config_ark.pic_confirm['100tili']): 219 | function_ark.mouse_click(self.handle, config_ark.points["tili_ok"]) 220 | print('使用100体力药') 221 | time.sleep(1) 222 | else: 223 | function_ark.mouse_click(self.handle,config_ark.points["kongbai"]) 224 | print('没有体力药或者是别的情况,总之还是石乐志') 225 | raise config_ark.ExitError 226 | globalvar.yuanshi_used_add(1) 227 | else: 228 | function_ark.mouse_click(self.handle,config_ark.points["kongbai"]) 229 | print("石乐志,结束") 230 | raise config_ark.ExitError 231 | time.sleep(1) 232 | else: 233 | position1 = function_ark.pic_position(self.handle, config_ark.pic_where["enter_quick"], once=2) 234 | if position1 ==None: 235 | function_ark.save_im(self.handle,os.path.join(config_ark.IMG_SAVE,'error_{}.png'.format( 236 | time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))))) 237 | function_ark.mouse_click(self.handle,config_ark.points["kongbai"]) 238 | else: 239 | #若可以快速访问,则直接跳转到战斗主界面 240 | function_ark.mouse_click(self.handle,position1["result"]) 241 | time.sleep(1) 242 | position2 = function_ark.pic_position(self.handle, config_ark.pic_confirm["zhandou_quickenter"], once=2) 243 | if position2!=None: 244 | function_ark.mouse_click(self.handle, position2["result"]) 245 | time.sleep(2) 246 | return self.operation_mapping["选择并进入活动界面"] 247 | else: 248 | #再次判断位置 249 | pass 250 | return self.find_where() 251 | 252 | def start_once(self): 253 | i = 0 254 | while(i globalvar.get_yuanshi_used(): 434 | # #逻辑需要优化,遇到网络波动时,会出现吃了药却石乐志了情况 435 | # if function_ark.confirm_where(self.handle,config_ark.pic_confirm['60tili']): 436 | # function_ark.mouse_click(self.handle, config_ark.points["tili_ok"]) 437 | # print('使用60体力药') 438 | # time.sleep(1) 439 | # elif function_ark.confirm_where(self.handle,config_ark.pic_confirm['100tili']): 440 | # function_ark.mouse_click(self.handle, config_ark.points["tili_ok"]) 441 | # print('使用100体力药') 442 | # time.sleep(1) 443 | # else: 444 | # function_ark.mouse_click(self.handle,config_ark.points["kongbai"]) 445 | # print('没有体力药或者是别的情况,总之还是石乐志') 446 | # raise config_ark.ExitError 447 | # globalvar.yuanshi_used_add(1) 448 | # else: 449 | # function_ark.mouse_click(self.handle,config_ark.points["kongbai"]) 450 | # print("石乐志,结束") 451 | # raise config_ark.ExitError 452 | # time.sleep(1) 453 | 454 | else: 455 | position1 = function_ark.pic_position(self.handle, config_ark.pic_where["enter_quick"], once=2) 456 | if position1 ==None: 457 | function_ark.save_im(self.handle,os.path.join(config_ark.IMG_SAVE,'error_{}.png'.format( 458 | time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))))) 459 | function_ark.mouse_click(self.handle,config_ark.points["kongbai"]) 460 | else: 461 | #若可以快速访问,则直接跳转到战斗主界面 462 | function_ark.mouse_click(self.handle,position1["result"]) 463 | time.sleep(1) 464 | position2 = function_ark.pic_position(self.handle, config_ark.pic_confirm["zhandou_quickenter"], once=2) 465 | if position2!=None: 466 | function_ark.mouse_click(self.handle, position2["result"]) 467 | time.sleep(2) 468 | return self.operation_mapping["选择并进入对应章节,选择关卡,确认选择正确,使用代理,进入队伍配置界面"] 469 | else: 470 | #再次判断位置 471 | pass 472 | return self.find_where() 473 | 474 | def start_once(self): 475 | i = 0 476 | while(i