├── .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