fgo自动脚本
- 通过adb连接安卓设备/模拟器,实现模拟点击、滑动、截取屏幕,支持后台运行
- 使用opencv提供的模板匹配来快速找图、定位
- 按照用户定义的策略来进行自动战斗等操作
如果已经安装adb,请跳过此步骤。
从http://adbshell.com/downloads下载adb kits,解压,并加入PATH。
在命令行中输入adb
,出现帮助信息则说明安装成功。
如果你的python在wsl下运行,但模拟器在windows下运行,请使用windows下的adb(而不是wsl下的),否则很容易莫名断开
即在device.py中将self.adb_path = adb_path
改为self.adb_path = /mnt/c/adb/adb.exe
的形式
下载这个项目,在根目录下运行
python3 setup.py install
-
推荐使用模拟器进行游戏,并调整分辨率为
1280x720
。使用真机可能导致分辨率和连接等问题,使用其他分辨率可能导致图片识别缓慢的性能问题。 -
如果使用
1280x720
分辨率的等比缩放分辨率(例如1920x1080
),可以修改my_bot.py中的相应参数,但除了1280x720
和1920x1080
分辨率以外,需要自行制作截图 -
构筑所用的队伍。由于当前版本不支持获取敌方信息,建议选择稳定的宝具速刷队。
-
在设置中关闭“灵基再临第四阶段展示”选项,可以减少助战识别的工作量。
-
在助战界面选择好想要的职阶,确保(在线的)好友可以大概率刷出期望的助战。
-
手动进行一场对战。(非必须,用于选中队伍以及调整相关设置)
-
在战斗菜单中关闭“技能使用确认”和“宝具匀速”,打开“缩短敌人消失时间。
-
在选择指令卡界面调整游戏速度为2倍速。
-
在设备/模拟器上对要打的副本和期望的助战截图,放在脚本的
userimages
目录下,可以参考userimages/qp.png
和userimages/friend_qp.png
。注意:尽量截取更多的信息,但不要超出可点击的范围。
-
将游戏置于进入任务前的界面,或者战斗中的界面,但开始运行程序时,战斗必须处于停顿、等待玩家输入的状态(即可以看到“攻击”按钮的状态)。
在任意目录下创建一个python源文件,导入fgobot
这个模块。
fgobot.BattleBot
类提供了@at_stage()
装饰器,只需要在你自己的python
源文件中实例化一个bot
,然后将函数注册到对应的战斗阶段,接着运行bot.run()
,就可以实现自动战斗。
具体例子可以参考项目根目录下的/my_bot.py
。
使用(从左往右)第servant
个从者的第skill
个技能,施放对象为第obj
个从者(如果是指向性)
使用第skill
个御主技能,作用对象为从者obj
(如果是指向性)。
如果使用换人技能,还需要指定obj2
作为被换上的从者。注意obj2
需要在4~6
之间。例如obj=3,obj2=4
代表使用换人技能,交换第3(场上第3)和第4(场下第1)个。
选取指令卡并攻击。
cards
需要为有零到四个整数作为元素的list
,按照顺序表示出的卡。其中1~5
表示从左往右的常规卡,6~8
表示从左往右的宝具卡。
例如[6, 1, 2]
表示先使用从者1的宝具卡,再使用指令卡1和指令卡2。
- 更新到国服最新截图(2019年12月)
- 支持多种分辨率
- 支持从任务选择界面、战斗界面、战斗结算界面开始运行程序
- 战斗脚本支持根据不同回合采用不同的出卡(因而支持放完宝具之后自动平砍)
- 支持随机出卡,且防止因AP不足放不出宝具而卡住,每次都会选择4张卡
- 缩短等待时间
- 如脚本中的技能正在冷却而无法释放,也能继续运行下去
- 其他微小调整