Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

御魂乘客和单刷加上了标记功能 #27

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
.DS_Store
node_modules/
dist/
build/
npm-debug.log
yarn-error.log

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
# CHANGELOG

## v1.0.1.0102
#### New features:
* 增加了简单的自检逻辑。
#### Fixes (bugs & defects):
* 根据[#28](https://github.com/AcademicDog/onmyoji_bot/issues/28),修复了探索的时候如果拉到场景图的最后,不会判断有没有经验怪的问题。
* 修复了双开结束后不清除窗口信息的问题。

## v1.0.0.1129
#### Fixes (bugs & defects):
* 调整了探索战斗的结算逻辑,现在不检查邮箱图标了,同时修复[#21](https://github.com/AcademicDog/onmyoji_bot/issues/21)、[#28](https://github.com/AcademicDog/onmyoji_bot/issues/28)。
* 删除了冗余代码。
* 根据[#24](https://github.com/AcademicDog/onmyoji_bot/issues/24),调整了结算点击范围。

## v1.0.0.1009
#### New features:
* 增加了探索中“满级狗粮识别延迟”的设置选项。
Expand Down
118 changes: 101 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,40 +1,124 @@
# 欢迎
<img align="right" width="300" src="https://raw.githubusercontent.com/AcademicDog/myresource/master/usage.png" alt="copy URL to clipboard" />

[![GitHub release](https://img.shields.io/github/release/academicdog/onmyoji_bot)](https://github.com/AcademicDog/onmyoji_bot/releases) ![GitHub top language](https://img.shields.io/github/languages/top/academicdog/onmyoji_bot) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/academicdog/onmyoji_bot) ![GitHub repo size](https://img.shields.io/github/repo-size/academicdog/onmyoji_bot) ![GitHub](https://img.shields.io/github/license/academicdog/onmyoji_bot) ![platforms](https://img.shields.io/badge/platform-win32|win64-brightgreen.svg) [![GitHub issues](https://img.shields.io/github/issues/academicdog/onmyoji_bot.svg)](https://github.com/academicdog/onmyoji_bot/issues) [![GitHub closed issues](https://img.shields.io/github/issues-closed/academicdog/onmyoji_bot.svg)](https://github.com/academicdog/onmyoji_bot/issues?q=is:issue+is:closed) ![GitHub commit activity](https://img.shields.io/github/commit-activity/m/academicdog/onmyoji_bot) ![GitHub contributors](https://img.shields.io/github/contributors/academicdog/onmyoji_bot.svg)
本项目fork至 [https://github.com/AcademicDog/onmyoji_bot/](https://github.com/AcademicDog/onmyoji_bot/) 并做出了以下修改:

<img align="right" width="300" src="https://raw.githubusercontent.com/AcademicDog/myresource/master/usage.png" alt="copy URL to clipboard" />
* 新增打包相关配置
* 新增虚拟环境的兼容
* 功能新增


### 特性

- 御魂
- 单人御魂
- 作为司机组队御魂,自动邀请
- 作为乘客组队御魂,自动接受邀请
- 双开御魂
- 业原火
- 自动刷贪、嗔、痴卷
- 御灵
- 自动刷御灵
- 探索
- 完成探索,识别经验怪,支持自动换狗粮
- 其他
- 在战斗过程中,该脚本会自动拒绝所有悬赏封印的邀请。
- 如果60s程序没有任何操作(卡机、体力空等),视为体力用光,为了保护加成,自动关闭YYS。
- 该脚本仅使用了画面找色,鼠标后台点击的函数,完全模拟人类玩家行为,没有使用任何内存读写函数。在敏感位置添加了均匀分布的随机时间漂移,和随机坐标漂移。**但仍然可能存在使用风险**。

### 使用环境

> 阴阳师PC版客户端,默认分辨率(1136x640)
>
> Windows 10和Windows 7,屏幕(1920x1080),显示设置100%
>
> 如需运行源码,需要Python3 32位
* * *

# 使用方法

### 单人刷御魂/业原火/御灵

1. 打开本工具,切换至御魂选项卡;

1. 游戏中进入御魂/业原火/御灵主界面(就是有“挑战”按钮的页面),请提前备好式神并**锁定阵容**;

1. 点击本工具的“开始”按钮。

### 组队刷御魂

1. 打开本工具,切换至御魂选项卡,根据自身情况选择“单人司机”或者“单人乘客”;

本工具用于阴阳师代肝,为各位阴阳师大佬养老护肝所用。
1. 游戏中进入组队页面,请提前备好式神并**锁定阵容**;

目前已开通项目网站,请访问🌍[此地址](https://academicdog.github.io/onmyoji_bot/)获取最新信息
1. 点击本工具的“开始”按钮

# 特别感谢
### 单人探索

特别感谢society765在本项目中给与的启发,本项目在其[工作基础](https://github.com/society765/yys-auto-yuhun)上修改完成。
1. 打开本工具,切换至探索选项卡;

同时感谢sup817ch的图像识别思路,本项目game_ctl模块基于其[工作基础](https://github.com/sup817ch/AutoOnmyoji)。
1. 在游戏种提前将狗粮队长放在阴阳师中间,并且**取消锁定阵容**;

1. 游戏中点开需要探索的章节(就是有“探索”按钮的页面);

1. 点击本工具的“开始”按钮。

* * *

# 注意事项

环境:python 3.7, 32 bit;yys PC端 默认分辨率 (1136x640);win 10系统,屏幕(1920x1080),显示设置100%。
1. 要求使用Windows 10或Windows 7,屏幕(1920x1080),显示设置100%”。

1. 当使用 Windows 7 系统时,需要调整系统的画面设置:把主题调为最丑最挫的那个。在 Windows 10 系统中,不需要调整系统画面设置。

1. 需要关闭电脑的自动息屏/休眠。

1. 窗口现在可以完全后台,可以被遮挡,但是**不能最小化**。

1. 不要开启游戏中的“模型描边”。

1. 当使用 Windows 7 系统时,需要调整系统的画面设置:把主题调为最丑最挫的那个。在 Windows 10 系统中,不需要调整系统画面设置
1. 不要移动游戏窗口

1. 当使用高分辨率屏幕时,在阴阳师客户端程序兼容性选项里,不要勾选“替代高DPI缩放行为”,这个选项应该是默认不勾选的。

1. 如果不想安装运行环境,可以访问下载最新已[编译](https://github.com/AcademicDog/onmyoji_bot/releases)版本,该版本有图形界面,同时注意.exe文件和/img文件夹应该放在同一目录后再运行。
1. exe文件可能被杀毒软件隔离,若被隔离需自行恢复并添加到信任区

1. 命令行模式下运行脚本时不要左键点击命令行以免选中文本,这可能导致进程暂停引起其他问题,如不小心暂停,按空格才能继续脚本。(也可以在窗口属性面板处关闭命令行窗口的快速编辑模式,以避免不小心中断)

1. 需要锁定阵容。

1. 刷御魂,房主需要在房间内开启脚本,乘客在房间内或战斗中开启均可。

1. 中途有事暂停记得关闭脚本,因为操作超时脚本会把游戏关闭。

1. 不建议使用刷探索,目前经验怪的识别成功度不高。N卡满级自动换N卡时是会拖动N卡40%进度条再拖放,所以用户需要关闭式神折叠。刷2星1级白蛋则需要开启式神折叠。刷高级白蛋目前有bug,自动换素材有问题。

1. 探索换狗粮的时候,如果是关闭了滚动换卡,换上第一个N卡,因此注意**不要**对N卡点击“喜欢”,导致反复换上一个满级的狗粮。

1. 探索换狗粮的时候,默认是换上第一个N卡,因此注意**不要**对N卡点击“喜欢”,导致反复换上一个满级的狗粮。
1. 标记式神功能会标记左边第二位式神,需要关闭式神技能动画特写

# 更新说明
更新日志请点击[这里](https://github.com/AcademicDog/onmyoji_bot/blob/master/CHANGELOG.md)
1. 如果不想安装运行环境,可以访问releases下载最新已[编译]版本,该版本有图形界面,同时注意.exe文件和/img文件夹应该放在同一目录后再运行。

# 协议 (License)
# 运行未编译脚本
安装python3.7.0
安装依赖
~~~
pip install -r requirements.txt
~~~
运行run.bat(若有使用虚拟环境,编辑runInVirtualEnv.bat内的虚拟环境路径,再运行bat)

该源代码使用了 [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html) 开源协议。
# 打包说明
安装pyinstaller,若有使用虚拟环境,需要在虚拟环境中安装再打包
~~~
pip install pyinstaller
~~~
打包exe
~~~
pyinstaller -F -w ui.py
~~~
~~~
pyinstaller -F omj.py
~~~

This project is licensed under the [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html) license.
注意,有个坑!!!
> exe打包过程若无报错,但是打包出的exe打不开(例如报错:文件所在的卷已被更改,打开的文件不再有效),可以关闭杀毒软件再打包
70 changes: 48 additions & 22 deletions Ui_onmyoji.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'd:\软件\github\onmyoji_bot\onmyoji.ui'
# Form implementation generated from reading ui file 'd:\软件\github\onmyoji_bot\omj.ui'
#
# Created by: PyQt5 UI code generator 5.9.2
#
Expand Down Expand Up @@ -70,24 +70,42 @@ def setupUi(self, MainWindow):
self.tab.setObjectName("tab")
self.gridLayout_2 = QtWidgets.QGridLayout(self.tab)
self.gridLayout_2.setObjectName("gridLayout_2")
self.groupBox_4 = QtWidgets.QGroupBox(self.tab)
self.groupBox_4.setObjectName("groupBox_4")
self.gridLayout_9 = QtWidgets.QGridLayout(self.groupBox_4)
self.gridLayout_9.setObjectName("gridLayout_9")
self.radioButton_1 = QtWidgets.QRadioButton(self.groupBox_4)
self.radioButton_1.setChecked(True)
self.radioButton_1.setObjectName("radioButton_1")
self.gridLayout_9.addWidget(self.radioButton_1, 0, 0, 1, 1)
self.radioButton_3 = QtWidgets.QRadioButton(self.groupBox_4)
self.radioButton_3.setObjectName("radioButton_3")
self.gridLayout_9.addWidget(self.radioButton_3, 1, 0, 1, 2)
self.radioButton_4 = QtWidgets.QRadioButton(self.groupBox_4)
self.radioButton_4.setObjectName("radioButton_4")
self.gridLayout_9.addWidget(self.radioButton_4, 1, 2, 1, 1)
self.radioButton_2 = QtWidgets.QRadioButton(self.groupBox_4)
self.radioButton_2.setObjectName("radioButton_2")
self.gridLayout_9.addWidget(self.radioButton_2, 0, 2, 1, 1)
self.gridLayout_2.addWidget(self.groupBox_4, 1, 0, 1, 1)
self.groupBox = QtWidgets.QGroupBox(self.tab)
self.groupBox.setObjectName("groupBox")
self.gridLayout = QtWidgets.QGridLayout(self.groupBox)
self.gridLayout.setObjectName("gridLayout")
self.mitama_passenger = QtWidgets.QRadioButton(self.groupBox)
self.mitama_passenger.setObjectName("mitama_passenger")
self.gridLayout.addWidget(self.mitama_passenger, 0, 2, 1, 1)
self.mitama_driver = QtWidgets.QRadioButton(self.groupBox)
self.mitama_driver.setObjectName("mitama_driver")
self.gridLayout.addWidget(self.mitama_driver, 0, 1, 1, 1)
self.mitama_single = QtWidgets.QRadioButton(self.groupBox)
self.mitama_single.setAutoFillBackground(False)
self.mitama_single.setChecked(True)
self.mitama_single.setObjectName("mitama_single")
self.gridLayout.addWidget(self.mitama_single, 0, 0, 1, 1)
self.mitama_driver = QtWidgets.QRadioButton(self.groupBox)
self.mitama_driver.setObjectName("mitama_driver")
self.gridLayout.addWidget(self.mitama_driver, 0, 1, 1, 1)
self.mitama_passenger = QtWidgets.QRadioButton(self.groupBox)
self.mitama_passenger.setObjectName("mitama_passenger")
self.gridLayout.addWidget(self.mitama_passenger, 1, 0, 1, 1)
self.mitama_dual = QtWidgets.QRadioButton(self.groupBox)
self.mitama_dual.setObjectName("mitama_dual")
self.gridLayout.addWidget(self.mitama_dual, 1, 0, 1, 1)
self.gridLayout.addWidget(self.mitama_dual, 1, 1, 1, 1)
self.gridLayout_2.addWidget(self.groupBox, 0, 0, 1, 1)
self.tabWidget.addTab(self.tab, "")
self.tab_2 = QtWidgets.QWidget()
Expand Down Expand Up @@ -157,16 +175,16 @@ def setupUi(self, MainWindow):
self.groupBox_2.setObjectName("groupBox_2")
self.gridLayout_7 = QtWidgets.QGridLayout(self.groupBox_2)
self.gridLayout_7.setObjectName("gridLayout_7")
self.checkBox = QtWidgets.QCheckBox(self.groupBox_2)
self.checkBox.setChecked(True)
self.checkBox.setObjectName("checkBox")
self.gridLayout_7.addWidget(self.checkBox, 0, 0, 1, 1)
self.label_2 = QtWidgets.QLabel(self.groupBox_2)
self.label_2.setObjectName("label_2")
self.gridLayout_7.addWidget(self.label_2, 2, 0, 1, 1)
self.gridLayout_7.addWidget(self.label_2, 3, 0, 1, 1)
self.label_3 = QtWidgets.QLabel(self.groupBox_2)
self.label_3.setObjectName("label_3")
self.gridLayout_7.addWidget(self.label_3, 3, 0, 1, 1)
self.gridLayout_7.addWidget(self.label_3, 4, 0, 1, 1)
self.checkBox = QtWidgets.QCheckBox(self.groupBox_2)
self.checkBox.setChecked(True)
self.checkBox.setObjectName("checkBox")
self.gridLayout_7.addWidget(self.checkBox, 1, 0, 1, 1)
self.lineEdit = QtWidgets.QLineEdit(self.groupBox_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
Expand All @@ -176,12 +194,15 @@ def setupUi(self, MainWindow):
self.lineEdit.setMaximumSize(QtCore.QSize(16777215, 20))
self.lineEdit.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.lineEdit.setObjectName("lineEdit")
self.gridLayout_7.addWidget(self.lineEdit, 2, 1, 1, 1)
self.gridLayout_7.addWidget(self.lineEdit, 3, 1, 1, 1)
self.lineEdit_2 = QtWidgets.QLineEdit(self.groupBox_2)
self.lineEdit_2.setMaximumSize(QtCore.QSize(16777215, 20))
self.lineEdit_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.lineEdit_2.setObjectName("lineEdit_2")
self.gridLayout_7.addWidget(self.lineEdit_2, 3, 1, 1, 1)
self.gridLayout_7.addWidget(self.lineEdit_2, 4, 1, 1, 1)
self.checkBox_4 = QtWidgets.QCheckBox(self.groupBox_2)
self.checkBox_4.setObjectName("checkBox_4")
self.gridLayout_7.addWidget(self.checkBox_4, 0, 0, 1, 1)
self.verticalLayout.addWidget(self.groupBox_2)
self.gridLayout_3.addLayout(self.verticalLayout, 1, 0, 1, 1)
self.line_2 = QtWidgets.QFrame(self.frame)
Expand Down Expand Up @@ -223,18 +244,23 @@ def retranslateUi(self, MainWindow):
self.start_btn.setText(_translate("MainWindow", "开始"))
self.pushButton.setText(_translate("MainWindow", "结束"))
self.label.setText(_translate("MainWindow", "辅助助手"))
self.groupBox_4.setTitle(_translate("MainWindow", "副本(调试中)"))
self.radioButton_1.setText(_translate("MainWindow", "八岐大蛇"))
self.radioButton_3.setText(_translate("MainWindow", "卑弥呼"))
self.radioButton_4.setText(_translate("MainWindow", "御灵"))
self.radioButton_2.setText(_translate("MainWindow", "业原火"))
self.groupBox.setTitle(_translate("MainWindow", "模式"))
self.mitama_passenger.setText(_translate("MainWindow", "单人乘客"))
self.mitama_driver.setText(_translate("MainWindow", "单人司机"))
self.mitama_single.setText(_translate("MainWindow", "单刷"))
self.mitama_driver.setText(_translate("MainWindow", "单人司机"))
self.mitama_passenger.setText(_translate("MainWindow", "单人乘客"))
self.mitama_dual.setText(_translate("MainWindow", "双开"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "御魂/御灵"))
self.groupBox_3.setTitle(_translate("MainWindow", "延迟设置"))
self.lineEdit_3.setText(_translate("MainWindow", "3"))
self.label_5.setText(_translate("MainWindow", "满级狗粮识别延迟(秒):"))
self.checkBox_3.setText(_translate("MainWindow", "换狗粮拖放式神进度条,进度:"))
self.checkBox_2.setText(_translate("MainWindow", "结束后打BOSS"))
self.plainTextEdit_2.setPlainText(_translate("MainWindow", "把狗粮队长放在最左边,点开需要打的章节,然后开始。\n"
self.plainTextEdit_2.setPlainText(_translate("MainWindow", "把狗粮队长放在中间,点开需要打的章节,然后开始。\n"
"\n"
"支持自动换狗粮,只打经验怪。\n"
"\n"
Expand All @@ -245,13 +271,13 @@ def retranslateUi(self, MainWindow):
"交流Q群:592055060"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "关于"))
self.groupBox_2.setTitle(_translate("MainWindow", "高级选项"))
self.checkBox.setText(_translate("MainWindow", "超时自动关闭阴阳师"))
self.label_2.setText(_translate("MainWindow", " 画面超时时间(秒):"))
self.label_3.setText(_translate("MainWindow", " 操作超时时间(秒):"))
self.checkBox.setText(_translate("MainWindow", "超时自动关闭阴阳师"))
self.lineEdit.setText(_translate("MainWindow", "100"))
self.lineEdit_2.setText(_translate("MainWindow", "20"))
self.checkBox_4.setText(_translate("MainWindow", "调试模式"))
self.menu.setTitle(_translate("MainWindow", "帮助"))
self.actionFile.setText(_translate("MainWindow", "File"))
self.actionAbout_2.setText(_translate("MainWindow", "About"))
self.actionAbout.setText(_translate("MainWindow", "About"))

self.actionAbout.setText(_translate("MainWindow", "About"))
19 changes: 19 additions & 0 deletions conf.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[common]
sign_shikigami = False

[watchdog]
watchdog_enable = True
max_win_time = 100
max_win_time_yuling = 180
max_win_time_yeyuanhuo = 240
max_op_time = 42

[explore]
fight_boss_enable = True
slide_shikigami = True
slide_shikigami_progress = 40
shikigami_type = 1
zhunbei_delay = 42

[others]
debug_enable = True
53 changes: 53 additions & 0 deletions explore/driver_explore.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
from explore.explore import ExploreFight
from tools.game_pos import CommonPos, TansuoPos
import tools.utilities as ut

import configparser
import logging
import random
import time


class DriverExploreFight(ExploreFight):
def __init__(self):
# 初始化
ExploreFight.__init__(self)
self.mode = 2

def start(self):
'''司机探索主循环'''
mood1 = ut.Mood(2)
mood2 = ut.Mood(2)
while self.run:
# 进入探索内
self.log.writeinfo('开始本轮探索')

# 开始打怪
i = 0
while self.run:
if i >= 4:
break
result = self.fight_moster(mood1, mood2)
if result == 1:
continue
elif result == 2:
break
else:
self.log.writeinfo('移动至下一个场景')
self.next_scene()
i += 1

# 退出探索
if result == 2:
self.click_box()
else:
self.switch_to_scene(3)

self.log.writeinfo('结束本轮探索')
time.sleep(0.5)

# 邀请好友
if self.yys.wait_game_img('img\\YAO-QING.png', self.max_op_time):
# 点击确认
self.click_until('确认按钮', 'img\\YAO-QING.png',
*TansuoPos.confirm_btn, 2, False)
Loading