Skip to content

Commit 894682b

Browse files
author
hgjazhgj
committed
v10.4.2
1 parent 3a8443d commit 894682b

File tree

6 files changed

+42
-37
lines changed

6 files changed

+42
-37
lines changed

FGO-py/fgoCli.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ def teamup_save(self,arg):
6161
'houguInfo':str(fgoKernel.ClassicTurn.houguInfo).replace(' ',''),
6262
'masterSkill':str(fgoKernel.ClassicTurn.masterSkill).replace(' ','')}
6363
with open('fgoTeamup.ini','w')as f:self.teamup.write(f)
64+
self.config.save()
6465
def teamup_clear(self,arg):
6566
store=self.currentTeam
6667
self.teamup_load(argparse.Namespace(name='DEFAULT'))
@@ -137,7 +138,7 @@ def do_continue(self,line):
137138
arg=parser_battle.parse_args(line.split())
138139
assert fgoDevice.device.available
139140
assert not fgoKernel.lock.locked()
140-
countdown(reduce(lambda x,y:x*60+int(y),arg.sleep.split(':'),0))
141+
countdown(reduce(lambda x,y:x*60+int(y),arg.sleep.replace('.',':').split(':'),0))
141142
try:
142143
signal.signal(signal.SIGINT,lambda*_:fgoKernel.schedule.stop())
143144
if platform.system()=='Windows':signal.signal(signal.SIGBREAK,lambda*_:fgoKernel.schedule.pause())
@@ -226,12 +227,12 @@ class ArgParser(argparse.ArgumentParser):
226227
def exit(self,status=0,message=None):raise ArgError(message)
227228

228229
parser_battle=ArgParser(prog='battle',description=Cmd.do_battle.__doc__)
229-
parser_battle.add_argument('-s','--sleep',help='Sleep before run (default: %(default)s)',type=validator(str,lambda x:re.match(r'\d+(:\d+)*$',x),'timedelta'),default='0')
230+
parser_battle.add_argument('-s','--sleep',help='Sleep before run (default: %(default)s)',type=validator(str,lambda x:re.match(r'\d+([:.]\d+)*$',x),'timedelta'),default='0')
230231

231232
parser_main=ArgParser(prog='main',description=Cmd.do_main.__doc__)
232233
parser_main.add_argument('appleCount',help='Apple Count (default: %(default)s)',type=validator(int,lambda x:x>=0,'nonnegative int'),default=0,nargs='?')
233234
parser_main.add_argument('appleKind',help='Apple Kind (default: %(default)s)',type=str.lower,choices=['gold','silver','bronze','quartz'],default='gold',nargs='?')
234-
parser_main.add_argument('-s','--sleep',help='Sleep before run (default: %(default)s)',type=validator(str,lambda x:re.match(r'\d+(:\d+)*$',x),'timedelta'),default='0')
235+
parser_main.add_argument('-s','--sleep',help='Sleep before run (default: %(default)s)',type=validator(str,lambda x:re.match(r'\d+([:.]\d+)*$',x),'timedelta'),default='0')
235236
parser_main.add_argument('-a','--appoint',help='Battle count limit (default: %(default)s for no limit)',type=validator(int,lambda x:x>=0,'nonnegative int'),default=0)
236237

237238
parser_connect=ArgParser(prog='connect',description=Cmd.do_connect.__doc__)
@@ -259,7 +260,7 @@ def exit(self,status=0,message=None):raise ArgError(message)
259260

260261
parser_call=ArgParser(prog='call',description=Cmd.do_call.__doc__)
261262
parser_call.add_argument('func',help='Additional feature name',choices=['gacha','lottery','mail','synthesis','gachaHistory'])
262-
parser_call.add_argument('-s','--sleep',help='Sleep before run (default: %(default)s)',type=validator(str,lambda x:re.match(r'\d+(:\d+)*$',x),'timedelta'),default='0')
263+
parser_call.add_argument('-s','--sleep',help='Sleep before run (default: %(default)s)',type=validator(str,lambda x:re.match(r'\d+([:.]\d+)*$',x),'timedelta'),default='0')
263264

264265
parser_169=ArgParser(prog='169',description=Cmd.do_169.__doc__)
265266
parser_169.add_argument('action',help='Action',type=str.lower,choices=['invoke','revoke'])

FGO-py/fgoConst.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
VERSION='v10.4.1'
1+
VERSION='v10.4.2'
22
CONFIG={
33
'runOnce':'',
44
'device':'',

FGO-py/fgoMainWindow.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ def retranslateUi(self, fgoMainWindow):
272272
self.BTN_STOPLATER.setText(_translate("fgoMainWindow", "预约终止"))
273273
self.MENU_ABOUT.setTitle(_translate("fgoMainWindow", "关于"))
274274
self.MENU_FILE.setTitle(_translate("fgoMainWindow", "文件"))
275-
self.MENU_SCRIPT.setTitle(_translate("fgoMainWindow", "脚本"))
275+
self.MENU_SCRIPT.setTitle(_translate("fgoMainWindow", "程序"))
276276
self.MENU_CONTROL.setTitle(_translate("fgoMainWindow", "控制"))
277277
self.MENU_CONTROL_169.setTitle(_translate("fgoMainWindow", "全面屏适配"))
278278
self.MENU_SETTINGS.setTitle(_translate("fgoMainWindow", "设置"))
@@ -292,9 +292,9 @@ def retranslateUi(self, fgoMainWindow):
292292
self.MENU_SCRIPT_MAILFILTER.setText(_translate("fgoMainWindow", "领狗粮"))
293293
self.MENU_CONTROL_BENCH.setText(_translate("fgoMainWindow", "Bench"))
294294
self.MENU_CONTROL_EXEC.setText(_translate("fgoMainWindow", "Execute"))
295-
self.MENU_SETTINGS_DEFEATED.setText(_translate("fgoMainWindow", "战败撤退时终止脚本运行"))
296-
self.MENU_SETTINGS_KIZUNAREISOU.setText(_translate("fgoMainWindow", "获得羁绊礼装时终止脚本运行"))
297-
self.MENU_SETTINGS_SPECIALDROP.setText(_translate("fgoMainWindow", "若干特殊掉落后终止脚本运行"))
295+
self.MENU_SETTINGS_DEFEATED.setText(_translate("fgoMainWindow", "战败撤退时终止战斗"))
296+
self.MENU_SETTINGS_KIZUNAREISOU.setText(_translate("fgoMainWindow", "获得羁绊礼装时终止战斗"))
297+
self.MENU_SETTINGS_SPECIALDROP.setText(_translate("fgoMainWindow", "若干特殊掉落后终止战斗"))
298298
self.MENU_ABOUT_LICENSE.setText(_translate("fgoMainWindow", "使用许可"))
299299
self.MENU_FILE_QUIT.setText(_translate("fgoMainWindow", "退出"))
300300
self.MENU_CONTROL_TRAY.setText(_translate("fgoMainWindow", "关闭到托盘"))

FGO-py/fgoMainWindow.ui

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@
274274
</widget>
275275
<widget class="QMenu" name="MENU_SCRIPT">
276276
<property name="title">
277-
<string>脚本</string>
277+
<string>程序</string>
278278
</property>
279279
<addaction name="MENU_SCRIPT_GACHA"/>
280280
<addaction name="MENU_SCRIPT_LOTTERY"/>
@@ -402,20 +402,20 @@
402402
<bool>true</bool>
403403
</property>
404404
<property name="text">
405-
<string>战败撤退时终止脚本运行</string>
405+
<string>战败撤退时终止战斗</string>
406406
</property>
407407
</action>
408408
<action name="MENU_SETTINGS_KIZUNAREISOU">
409409
<property name="checkable">
410410
<bool>true</bool>
411411
</property>
412412
<property name="text">
413-
<string>获得羁绊礼装时终止脚本运行</string>
413+
<string>获得羁绊礼装时终止战斗</string>
414414
</property>
415415
</action>
416416
<action name="MENU_SETTINGS_SPECIALDROP">
417417
<property name="text">
418-
<string>若干特殊掉落后终止脚本运行</string>
418+
<string>若干特殊掉落后终止战斗</string>
419419
</property>
420420
</action>
421421
<action name="MENU_ABOUT_LICENSE">

doc/垃圾场.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
![hanhan3](hanhan_2020-04-28.png)422815851
1010
您连*加好友请说明来意,并附上您在GitHub中的账户名*的意思都理解不了,还怎么学会一门编程语言呢
1111
![hanhan4](hanhan_2020-06-03.png)1712460629
12-
您这*来意**打不开*也挺迷人的,我tm拒绝之后才发现*可能*是来问脚本问题的,本来搞不好还能逗他玩玩
12+
您这*来意**打不开*也挺迷人的,我tm拒绝之后才发现*可能*是来问问题的,本来搞不好还能逗他玩玩
1313
![hanhan5](hanhan_2020-09-15.png)1511564749![hanhan5](hanhan_2020-09-15_Attachment.png)
1414
我们来细品这个憨憨,我啥都不会->电话骚扰->在吗->要钱没钱->我是学生你能送我吗
1515
而后我一查,join GitHub 16 hours ago....对不起Microsoft,我污染了你的用户数据

readme.md

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,6 @@
22
同期中文趋势全语言周榜第23名
33
![trending](doc/trending.png)
44

5-
> 完全免配置! 运行程序-连接设备-点击开始 ~~都什么年代,还在用传统fgo脚本~~
6-
> 搓丸子? 请用[FGO-ExpBall](https://github.com/hgjazhgj/FGO-ExpBall) 基于FGO-py的免配置全自动跨平台搓丸子
7-
> 本项目已经存在直接在运行fgo的手机上运行的解决方案 [直接在手机上运行](#直接在手机上运行)
8-
> Run in Docker, see Dockerfile
9-
105
# 「智能战斗不间断,不靠礼装不用拐」的Fate/Grand Order全智能程序
116

127
![svg](https://img.shields.io/badge/bgo-FGO安卓简中服玩家-225799.svg)
@@ -82,7 +77,7 @@ FGO-py一经立项,就把*打破当前游戏版本下想尽办法3t速刷的固
8277
- 可以一键清完所有强化本
8378
- 剧情关锁人?游戏内组好队就行程序内还是只点击完成战斗
8479
- 可以在高难中帮你收拾残局
85-
- 不像有些3T脚本需要用户删掉练度不足的好友
80+
- 不像有些3T自动化工具需要用户删掉练度不足的好友
8681
- 把你喜欢的从者编入队伍中
8782
- 拥有一队15羁绊的伊莉雅小黑美游真的超酷的好吗
8883

@@ -92,34 +87,37 @@ FGO-py一经立项,就把*打破当前游戏版本下想尽办法3t速刷的固
9287

9388
## 运行 Run
9489

90+
### Windows
91+
9592
下载release - 运行`FGO-py.bat` - 连接设备 - 游戏中把你要刷的关卡放在第一个 - 点击「肝!」按钮
9693
需要关闭「技能使用确认」
97-
渠道服用户需要在初次运行后自行更改config.json中`package`为自己的包名
94+
渠道服用户需要在初次运行后自行更改fgoConfig.json中`package`为自己的包名
95+
96+
### Linux/Android/Mac/Docker General
9897

99-
***
10098
本项目在最初设计时就考虑到了在不同环境下运行的需求,完全前后端分离,目前前后端均已实现跨平台
101-
首先也是最基础的,在阅读本条目前,请先验证你能**通过源码在安装有Python3.9的Windows操作系统中运行本项目并用来操作运行于屏幕分辨率为1280*720或其简单整数比缩放的Android设备上的命运-冠位指定官方简体中文版本**--这被视作FGO-py的使用门槛,我不会为此提供任何帮助--然后再根据后续内容向目标环境迁移
99+
首先也是最基础的,在阅读本条目前,请先验证你能**通过源码在安装有Python3.9的Windows操作系统中运行本项目并用来操作运行于屏幕分辨率为1280*720或其简单整数比缩放的Android设备上的命运-冠位指定官方简体中文版本**--这被视作FGO-py的使用门槛--然后再根据后续内容向目标环境迁移
102100
本项目根目录下有些许文件可为不同场景下的环境搭建提供帮助
103101
AutoRelease -- 传统的在Windows电脑上运行只需run workflow即可构建exe
104102
Dockerfile | docker-compose.yml -- 尽管只是配了个环境,但确实配好了环境
105103
AidLux.sh -- 一键在AidLux上安装FGO-py
106-
请注意,这些东西仅供参考,你多半需要自行作出一些修改才能正常运行,这被视为FGO-py的使用门槛
104+
请注意,这些东西仅供参考,你需要自行作出一些修改才能正常运行,这被视为FGO-py的使用门槛
107105
速览程序功能,运行`fgo.py`,无需填写任何配置,去冬木大桥刷一根凶骨吧!
108-
大部分功能说明也在ui里,只有未在ui中记载的部分被记录在本文档后续的说明内容中
106+
程序内部有基本的使用指引,本文档后续的说明内容中有扩展的说明
109107
(基于Qt6的)Gui大概长这样(设计模式仅供参考):
110108
![gui](doc/gui.png)
111109
如果不便于使用图形界面,`python fgo.py cli`提供文本交互,这里有本项目完整且更加强大而灵活的功能和说明
112110
Cli大概长这样(在docker和手机中运行时的截图,本截图不是最新的):
113111
![cli](doc/cli.png)
114-
也可一次向stdin写入多行以非交互的方式运行,比如睡前运行一条`echo -e "connect /bs5 \n main \n main -s 28800" | python fgo.py cli`来清空体力并在8小时后再次清空体力以保证安稳的睡眠,或是在长草期加入计划任务或crontab实现7*24全托管
112+
也可一次向stdin写入多行以非交互的方式运行,比如睡前运行一条`echo -e "connect /bs5 \n main \n main -s 8:00:00" | python fgo.py cli`来清空体力并在8小时后再次清空体力以保证安稳的睡眠,或是在长草期加入计划任务或crontab实现7*24全托管
115113

116114
### 非FGO简体中文服
117115

118116
修改图片模板和fgoDetect.Detect类
119117

120118
### 非16:9屏幕
121119

122-
尝试使用ui中的「控制-全面屏适配-调整为16:9」功能
120+
尝试使用ui中的「控制-全面屏适配-调整为16:9」功能,以及cli中的`169`命令
123121
由于长宽比小于16:9的屏幕的游戏画面上下方仍为蓝边可以如同全面屏适配前一般使用,所以只有长宽比大于16:9的屏幕才需要此操作
124122
在fgo中热更改分辨率会有奇怪的布局bug,所以你需要在fgo未处于运行状态时(或运行游戏后登录完成前)执行这些命令
125123
在我的手机(OnePlus 8 Pro和RedMi 8A)上大概是这么个效果,**其它手机具体表现如何我也不清楚**:
@@ -135,7 +133,7 @@ Cli大概长这样(在docker和手机中运行时的截图,本截图不是最新
135133
有一些软件能在Android手机上提供Linux环境,比如[AidLux](http://www.aidlearning.net/)([GitHub](https://github.com/aidlearning/AidLearning-Framework)),类似于Android Subsystem for Linux(我愿称之为ASL)
136134
相较于[Termux](https://termux.com/)等模拟终端,AidLux自带了编译好的opencv等基础库,避免了ARM处理器上的各种问题,故以此为基础搭建FGO-py环境,具体搭建方式于通常Linux无异,可参考`AidLux.sh`,此方案已在多机型上被验证为可行,我现在用得很舒服
137135
当然Qt的UI多半是没有的,此时你只能使用文本交互方式运行本项目,这就体现出web ui的优越性了
138-
此外,tensorflow/caffe/mxnet等其他数十种智能计算领域常用的软件均可在AidLux特有的软件源中直接安装,碧蓝航线的[AzurLaneAutoScript](https://github.com/LmeSzinc/AzurLaneAutoScript)/明日方舟的[ArknightsAutoHelper](https://github.com/ninthDevilHAUNSTER/ArknightsAutoHelper)等基于Android调试的自动化脚本都可按类似的方式在装有AidLux的手机上运行--我断言,逐渐地,AidLux会在手游自动化方面被更加广泛地使用,是大势所趋,早用早享受
136+
此外,tensorflow/caffe/mxnet等其他数十种智能计算领域常用的软件均可在AidLux特有的软件源中直接安装,碧蓝航线的[AzurLaneAutoScript](https://github.com/LmeSzinc/AzurLaneAutoScript)/明日方舟的[ArknightsAutoHelper](https://github.com/ninthDevilHAUNSTER/ArknightsAutoHelper)等基于Android调试的自动化工具都可按类似的方式在装有AidLux的手机上运行--我断言,逐渐地,AidLux会在手游自动化方面被更加广泛地使用,是大势所趋,早用早享受
139137

140138
### Windows Subsystem for Android
141139

@@ -166,11 +164,11 @@ Cli大概长这样(在docker和手机中运行时的截图,本截图不是最新
166164

167165
### 在alas上运行
168166

169-
在v9.2.0完全免配置之后,本功能开始正式地凸显出他的意义,毕竟如果一份脚本能管两个游戏,那将是极好的
167+
在v9.2.0完全免配置之后,本功能开始正式地凸显出他的意义,毕竟如果一个自动化工具能管两个游戏,那将是极好的
170168
fgoAlas.py头部的注释写明了需要进行的更改,在你完成所有更改后,alas看起来像这样(本截图不是最新的)
171169
![alas](doc/alas.png)
172170

173-
## 连接到设备 Connect Your Device
171+
## 连接到设备 Connect to Your Device
174172

175173
如果你使用数据线将手机连接到电脑,那么你的手机自然会出现在设备列表中
176174
但是很多情况下,设备不会智能出现在设备列表中,尽管程序会帮你运行connect命令,但是你还要手动输入设备序列号或ip,有些时候这些数据还不是固定的,比如模拟器启动时刷新,或是DHCP重新分配了你的ip,这就需要比较繁琐的步骤才能拿到
@@ -214,9 +212,8 @@ v9.1及更早版本提供的需要配置的战斗,不建议在以下之外的场
214212
- 反和谐补丁更改了字体使OCR失效
215213

216214
编队信息保存在fgoTeamup.ini中,需要新增或删除编队时请手动编辑该文件
217-
各个从者的每个技能都有4个参数,意义分别为:使用该技能的最小场次/该技能在最小场次的最小使用回合/希望施放到的目标/越小越优先的优先级
215+
各个从者的每个技能都有4个参数,意义分别为:使用该技能的最小场次/该技能在最小场次的最小使用回合/最希望施放到的目标/越小越优先的优先级
218216
最小场次设置为0代表禁用该技能
219-
目标可以乱填,程序会自适应
220217
如果技能在最小场次的最小使用回合处于不可用状态会延后,此后能用就用
221218
御主技能cd固定为15回合,不会检测是否冷却完成或是否可用,就算不可用也只是点开看一眼弹窗不影响运行
222219

@@ -266,6 +263,13 @@ Add:onepush
266263

267264
# 版本记录 Version Logs
268265

266+
## 2023/03/01 v10.4.2
267+
268+
Opt:允许.作为sleep时间分隔符
269+
这样就可以只在小键盘输入,而且不会同时按下两个键
270+
Opt:teamup save时也保存一次fgoConfig.json
271+
Opt:文本更改
272+
269273
## 2023/02/16 v10.4.1
270274

271275
Opt:cli下-s sleep允许输入\[\[hh:\]mm:\]ss时间格式
@@ -823,7 +827,7 @@ Add:BlueStacks 5 with hyper-V的快速连接支持
823827

824828
Add:ServerChann推送
825829
填写fgoConfig.json中的notify相关项
826-
早上醒来不下床就能知道脚本有没有报错,没报错就继续睡
830+
早上醒来不下床就能知道有没有报错,没报错就继续睡
827831
这个功能还非常简陋,就几行代码,之后的webUI中此功能会取代当前的windows系统消息,届时可能会加入其他渠道(问就是从[GenshinHelper](https://github.com/y1ndan/onepush)里抄)
828832
这新功能不比死抠战斗算法有用多了
829833
Add:调整了按键映射
@@ -864,7 +868,7 @@ Add:添加了各职阶金卡的助战模板
864868
## 2021/11/10 v7.6.2
865869

866870
Add:不使用「援护请求」
867-
今年情人节v4.9.9版本更新对「进入战斗前选择使用道具」的场景进行了适配,友情巧克力自然是能用就用,但是这个活动里打free的时候(也是需要脚本选择使用道具的主要场景)是应该不使用用这个东西的
871+
今年情人节v4.9.9版本更新对「进入战斗前选择使用道具」的场景进行了适配,友情巧克力自然是能用就用,但是这个活动里打free的时候(也是需要程序选择使用道具的主要场景)是应该不使用用这个东西的
868872
然后,连续出击的地方也加了个「使用援护请求并连续出击」的选项,原先的「不使用援护请求并连续出击」右移了,现使用「是否连续进行同一关卡?」进行识别,同时也改变了点按的位置
869873

870874
## 2021/11/03 v7.6.1
@@ -901,15 +905,15 @@ v7.3.0中将获得战利品界面作为战斗结束标志,这导致羁绊礼装
901905
Add:根据带彩虹的箱子判断特殊掉落
902906
移除了掉落截图的模板和相关代码
903907
本功能使用的图片模板来源于网络
904-
其实原来的功能是有做「刷到若干个某素材后停止脚本」的想法的
908+
其实原来的功能是有做「刷到若干个某素材后停止」的想法的
905909
Upd:预约终止计数由「战斗开始计数」改为「战斗结束计数」
906910
需要被设置的值通常比原来增大了1,也就是说,要是你希望这场战斗打完就停,就在对话框中输入1(原先是0)
907911
为此,默认值和最小值也被改成1,所以在这种情况下,实际上还是只需要点确定就行
908912

909913
## 2021/10/18 v7.5.1
910914

911915
Add:Main可以在战斗中途调用了
912-
这是为断线/闪退等异常原因导致脚本中断后的*补救*,使之能够从中断处继续运行而不至于先调用Battle等待战斗完成后再调用Main
916+
这是为断线/闪退等异常原因导致运行中断后的*补救*,使之能够从中断处继续运行而不至于先调用Battle等待战斗完成后再调用Main
913917
**不应该**在((没有从主界面进入战斗过||在上次战斗后切换了关卡)&&会继续战斗&&助战模板有技能信息)的情况下在战斗中途调用Main,不然由于没有获取过助战位置,会导致助战信息被放到错误的地方
914918
这个地方得想个办法解决一下,我不想粗暴地加个校验禁止这样的情况发生,因为我的多数场景下助战模板时没有技能信息的
915919
现在的想法是在Battle中增加额外的friendInfo,并识别当前从者是否为助战
@@ -950,7 +954,7 @@ Add了卑弥呼的助战模板
950954

951955
恢复了自动打包
952956
Add:刷新编队信息
953-
更改编队文件后可以直接刷新不用重启脚本
957+
更改编队文件后可以直接刷新不用重启程序
954958
同时扩大了编队下拉列表最大大小
955959

956960
## 2021/09/30 v7.3.4

0 commit comments

Comments
 (0)