MCPcopy
hub / github.com/hgjazhgj/FGO-py

github.com/hgjazhgj/FGO-py @v0.0.0 sqlite

repository ↗ · DeepWiki ↗ · release v0.0.0 ↗
402 symbols 1,110 edges 25 files 15 documented · 4%
README

热烈庆祝本项目于2022年8月5日荣登GitHub中文趋势Python语言日榜与同期周榜第3名!
同期中文趋势全语言周榜第23名
trending

「智能战斗不间断,不靠礼装不用拐」的Fate/Grand Order全智能程序

svg svg svg svg svg 996.icu svg svg svg svg svg svg svg svg
Buy me a Saint Quartz
AlipayWechatMonero
Scan this code to send Monero to 42CnrV9TuzE1jiS2ucGwtzN8gF6o4y9SkHsX1eZEvtiDf4QcL1NXvfZPhDu7LYStWrbsQM9UUGWnqXghManMBdqjEW5oaDY
非人民币捐赠,请查看# 如何联系开发者 Contact Developer章节与我联系
B站大会员每月5B币券充电
觉得有帮助请为我star,谢谢

版本记录
GitHub项目地址:https://github.com/hgjazhgj/FGO-py/
项目官网:https://fgo-py.hgjazhgj.top/
仅适用于命运-冠位指定安卓简体中文版本

警告 Warning

<<哔哩哔哩游戏平台用户协议>>第11条第2款规定
用户不得通过不正当的手段或其他不公平的手段使用本平台游戏、本平台服务或参与本平台活动。
用户不得干扰本平台正常地提供游戏和服务,包括但不限于:攻击、侵入本平台的网站服务器,或集中时间段内以超出正常用户登录需求的高频率登录或尝试登录服务器从而使网站服务器过载;破解、修改本平台提供的本平台游戏程序;攻击、侵入本平台游戏的服务器/游戏服务器端程序或使游戏服务器过载;制作、发布、传播、使用任何形式的妨碍游戏公平性的辅助工具或程序(包括但不限于“外挂”, “外挂”是指独立于游戏软件之外的,能够在游戏运行的同时影响游戏操作的所有程序,包括但不限于模拟用户操作、改变操作环境、修改数据等一切类型)。用户不得:利用程序的漏洞和错误(Bug)破坏游戏的正常进行或传播该漏洞或错误(Bug);不合理地干扰或阻碍他人使用本平台所提供的游戏和服务;通过异常或者非法的方式使用本平台游戏(包括但不限于利用本平台游戏登录游戏私服);使用异常的方法登录游戏(包括但不限于使用非本平台开发、授权或认可的第三方软件、系统登录游戏)、使用网络加速器等外挂软件或机器人程序等恶意破坏服务设施、扰乱正常服务秩序的行为;修改、翻译、注释、整理、汇编、演绎本平台游戏;利用本平台游戏或者线上游戏系统可能存在的技术缺陷或漏洞而以各种形式为自己及他人牟利(包括但不限于复制游戏虚拟物品等)或者从事其他不正当行为等。
FGO-py不会对您的任何损失负责,包括但不限于奖励回收、账号异常、900石1宝、核弹爆炸、第三次世界大战等
由于使用本程序而导致的包括但不限于上述各项的损失与本项目及其开发者无关,您下载并使用该程序即代表您已知晓使用程序可能带来的风险并愿意承担可能出现的后果


本项目FGO-py/fgoImage/servant/下的图像来自于茹西教王的理想鄉,FGO-py/fgoImage/classmaterial中的图标与FGO-py/fgoMetadata.py中的部分数据来自于Mooncell,以上内容经过加工,不按原样提供,著作权非本人所有,不依照License开源

说明 Instruction

FGO-py一经立项,就把打破当前游戏版本下想尽办法3t速刷的固有思维,回归刚开服时克制队xjbd的环境作为自身的初心使命

  • 羁绊点数和御主礼装经验不再被浪费
  • 抽卡不用考虑强度只用考虑xp
  • 在大量90+阴间本的环境下,xjbd能带给玩家最阳间的体验
  • 游戏从此没有「人权卡」
  • xjbd都一天100+池了就别惦记着亏羁绊3t辣!
  • 不管什么本直接上就行连作业都不用抄
  • 可以一键清完所有强化本
  • 剧情关锁人?游戏内组好队就行程序内还是只点击完成战斗
  • 可以在高难中帮你收拾残局
  • 不像有些3T自动化工具需要用户删掉练度不足的好友
  • 把你喜欢的从者编入队伍中
  • 拥有一队15羁绊的伊莉雅小黑美游真的超酷的好吗

如果你是为了3t而来,就另请高明吧!
这个程序能识别一堆战斗中用得上或用不上的数据,可以半路接管战斗,会依据当前的局势帮你筛选助战,放技能,放宝具,吃苹果,选卡,无需配置即可无脑通过绝大部分非高难关卡,包括主线关卡,实战7-12回合能够刷完无限池终本
除战斗外,还提供以下功能:抽友情池,抽无限池,领邮箱狗粮,礼装强化

运行 Run

Windows

下载release - 运行FGO-py.bat - 连接设备 - 游戏中把你要刷的关卡放在第一个 - 点击「肝!」按钮
需要关闭「技能使用确认」
渠道服用户需要在初次运行后自行更改fgoConfig.json中package为自己的包名

Linux/Android/Mac/Docker General

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

非FGO简体中文服

修改图片模板和fgoDetect.Detect类

非16:9屏幕

尝试使用ui中的「控制-全面屏适配-调整为16:9」功能,以及cli中的169命令
由于长宽比小于16:9的屏幕的游戏画面上下方仍为蓝边可以如同全面屏适配前一般使用,所以只有长宽比大于16:9的屏幕才需要此操作
在fgo中热更改分辨率会有奇怪的布局bug,所以你需要在fgo未处于运行状态时(或运行游戏后登录完成前)执行这些命令
在我的手机(OnePlus 8 Pro和RedMi 8A)上大概是这么个效果,其它手机具体表现如何我也不清楚:
16-9
这个功能就是执行了一条adb shell,单论这个shell的话是很快的,fgo的全面屏适配又跟屎一样不如没有,并且你完全可以在关闭fgo后立刻改回来不影响其他应用,你也可以在手机本地执行命令将其改回,所以我暂时不打算写全面屏适配

非Windows电脑

现已可直接使用,但是目录监控功能被屏蔽,如果你更改了助战模板等文件,需要重新运行程序

直接在手机上运行

有一些软件能在Android手机上提供Linux环境,比如AidLux(GitHub),类似于Android Subsystem for Linux(我愿称之为ASL)
相较于Termux等模拟终端,AidLux自带了编译好的opencv等基础库,避免了ARM处理器上的各种问题,故以此为基础搭建FGO-py环境,具体搭建方式于通常Linux无异,可参考AidLux.sh,此方案已在多机型上被验证为可行,我现在用得很舒服
当然Qt的UI多半是没有的,此时你只能使用文本交互方式运行本项目,这就体现出web ui的优越性了
此外,tensorflow/caffe/mxnet等其他数十种智能计算领域常用的软件均可在AidLux特有的软件源中直接安装,碧蓝航线的AzurLaneAutoScript/明日方舟的ArknightsAutoHelper等基于Android调试的自动化工具都可按类似的方式在装有AidLux的手机上运行--我断言,逐渐地,AidLux会在手游自动化方面被更加广泛地使用,是大势所趋,早用早享受

Windows Subsystem for Android

本条目已经过时
这个功能非常未来可期,目前不能保证在你的设备上也能运行,不过能折腾出wsa上跑fgo的人应该也有能力解决或者定位遇到的问题
在连接到wsa时输入的设备序列号必须为wsa这三个英文字符,同时fgo必须已经正在运行
运行途中跑着fgo的wsa窗口不能被最小化,wsa窗口最小化就像手机上切到后台我也没办法
需要系统环境变量中有adb,注意多adb的冲突
在我使用的wsa上截图有不低的概率截到带有成条噪音的黑底图片或有一半是游戏画面,此时会导致不期望的识别结果或直接报错,故不宜长时间无人值守,这锅得微软背
综上所述,我的建议是试一试wsa,但暂时不要真正使用,同时由于本人的主力生产环境还是Win10,所以wsa的支持不见得会积极更新

Docker

直接docker-compose up
如果你要使用cli,参阅Dockerfile头部的注释

Windows 窗口

本条目将被弃用
经由WindowsApi实现的截图和鼠标事件,适用于Windows平台直接运行的fgo游戏,其中包含安卓模拟器

  1. 需要Windows 10版本1703或更高
  2. 在「连接到设备」对话框中输入win后,先将鼠标移至目标窗口画面中,再按下回车确认
  3. 按下回车后,FGO-py会枚举鼠标指针正下方的可见窗口及其所有子窗口.确认弹出窗口中展示的截图是fgo画面后,按照弹出窗口标题中的说明,按i判断目标窗口是否可以成功响应鼠标事件
  4. 如果能够成功响应,直接在弹出的窗口中按y
  5. 如果不能成功响应,则按其他任意键切换到下一个子窗口.如果所有窗口都不能成功响应,检查目标窗口是否拥有管理员权限.如果是,则FGO-py也需要以管理员身份运行;如果否,考虑使用分离的输入方式
  6. 窗口在战斗运行时不能被最小化或隐藏

在alas上运行

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

连接到设备 Connect to Your Device

如果你使用数据线将手机连接到电脑,那么你的手机自然会出现在设备列表中
但是很多情况下,设备不会智能出现在设备列表中,尽管程序会帮你运行connect命令,但是你还要手动输入设备序列号或ip,有些时候这些数据还不是固定的,比如模拟器启动时刷新,或是DHCP重新分配了你的ip,这就需要比较繁琐的步骤才能拿到
为此,我写了一个小魔法,在连接设备时以「/」开头的指令代替设备序列号,让你用短短几个字符便完成复杂的操作
这里需要用到的包未在requirements.txt中列出,此功能发生的问题无法获得技术支持
基于本人的实际使用场景,这里现在有以下命令

  1. wsa 这是给wsa做的特化,当连接到wsa时必须填写wsa而不能填写其他内容,这个指令不以「/」开头
  2. win 这是给Windows窗口做的特化,直接输入win使用交互方式确定窗口,或后跟_16进制窗口句柄值以指定窗口,这个指令不以「/」开头
  3. /gw 手机开热点打fgo电脑连热点,获取网关ip
  4. /bs4 兼容Hyper-V的BlueStacks 4国际版,从注册表读取adb端口,后跟_数字指定多开
  5. /bs5 兼容Hyper-V的BlueStacks 5国际版,从注册表读取配置文件路径,在配置文件中查找adb端口,后跟_数字指定多开

你可以自己编写你需要的功能,如果你认为你的场景别人也会遇到,请发个issue或pr让我加进这个项目里
此外,你可以使用|连接两个设备名以分别指定点击拖拽等输入操作和截图等输出操作使用的接口,中间不得有空格
/bs5_2|win使用Android输入到蓝叠5的第二个多开而使用Windows截图,或是127.0.0.1:5555|127.0.0.1:5557使用5556设备显示的画面但是点击在5554设备上(大雾

助战/邮箱筛选 Friends/Mail Filter

我希望就算哪一天我弃坑了,本项目也要能够继续长久使用,无需定期维护,所以所有与游戏进度相关的内容都要允许用户自以非编程的方式自行制作/管理,我仅仅为此提供了一些示例和一小部分当前常用的情况
你需要事先将你期望的各种助战的样子截图为png放在fgoImage/friend下,参照fgoImage/friend/unused中的文件
被截图范围都应该可以点击来选中该好友
截图应对应1280*720的游戏画面分辨率,建议使用gui中的检查截图按钮或cli的screenshot指令
如果fgoImage/friend目录下没有png文件,就选取好友列表中的第一个
图片中黑色(#000)部分被视作透明而无需透明度通道
你在fgoImage/friend目录下的所有更改会在下一次选取助战时智能应用

搓丸子 ExpBall

请使用FGO-ExpBall
该项目由于需要由程序而非玩家对游戏内设置进行精细的设定,相关实现不符合FGO-py的风格,故做成了独立项目

经典战斗 Classic Battle

v9.1及更早版本提供的需要配置的战斗,不建议在以下之外的场景使用

  • 冬木刷凶骨只平A不放技能宝具
  • 3T冲浪指定技能宝具在特定时机施放
  • 通古斯抢柱子需要尽快完成战斗
  • 无法识别队伍中卡面被和谐的从者
  • 反和谐补丁更改了字体使OCR失效

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

配置文件 Config Files

以下项目保存在fgoConfig.json内,更改立即生效,仅在进程退出前保存

  • 上次连接到的设备名
  • 各队伍编组的索引
  • 是否在战败撤退时终止程序运行
  • 是否在获得特殊掉落时终止程序运行
  • 主窗口是否置顶
  • 是否在点击关闭按钮时最小化到托盘
  • 消息推送开关
  • 消息推送参数

其他可配置项会在进程退出后丢失

如何联系开发者 Contact Developer

img 在占用我的时间之前,先耗费自己的时间
现在这个项目已经可以从各大搜索引擎上找到,这就导致有很多halloworld都不会的小白来找我,就算是点点鼠标都会遇到问题
没有标明免费的东西都不是免费的,我乐意回答一些本文档中没有提及的技术问题,但没有义务提供详细的教学
如果你遇到问题且愿意支付一定的咨询费用,或者只是想要捐赠,请添加我的LINE
这是无奈之举,卖的是本人的时间和精力,而用到知识和经验的解决具体问题另算
2021年9月24日,同为本人开发的原神智能钓鱼项目被GitHub删除了,我迫切地感到在GitHub上发布程序是不可靠的,为此,本人先建立了一个QQ群,群号932481680,作为一个FGO-py的备用发布手段,其他事项日后再议.
加入QQ群需要提供你的Github用户名(必须严格等于登陆时输入的Username字段),且该帐号在30天内有活跃行为,如果你不希望Github帐号与QQ号有所关联,在加群问题回答中填入任意能证明你是开发者的内容亦可.QQ号需要至少16级(有一个太阳,使用大约1年)
为切实验证Github用户名真实性防止冒名顶替,对于想要加群的用户请先Star本项目并立刻发送加群申请,如果你已经Star,请先取消Star然后再点一次,如果你确实不想Star本项目,可以在入群后取消Star
发现最新commit的bug请按Bug Report模板建立issue,发现战斗行为不合理请按Servant Info模板建立issue,其他你想到的东西请发到discussion

参考 Refs

当你遇到问题,这里的文档可能有帮助
Android 调试桥 (adb)
Device Connection
Virtual-Key 代码
关于AidLux平台pip使用异常解决方案
airtest.core.android.ADB.devices不返回ipv6远程连接的设备

计划中的功能 Next Features

Add:利用宝具的首卡染色或色卡三连
Add:御主技能识别与施放
Add:游戏启动与闪退重启
Add:计划作战
Add:onepush

版本记录 Version Logs

2023/03/17 v10.4.3

Fix(?):nofriend
似乎是背景纹理修改了

2023/03/01 v10.4.2

Opt:允许.作为sleep时间分隔符
这样就可以只在小键盘输入,而且不会同时按下两个键
Opt:teamup save时也保存一次fgoConfig.json
Opt:文本更改

2023/02/16 v10.4.1

Opt:cli下-s sleep允许输入[[hh:]mm:]ss时间格式
就是解析了一个冒分60进制数,因此可以有多段,每段亦可大于60
Opt:dockerfile

2023/01/29 v10.4.0

Add:NO_COLOR
起因是我拥有了一个灰度的水墨屏(e-ink display)设备,如果能在压泡面的同时打打FGO那便是极好的,然而此时彩色的输出将难以辨识
运行时附加--no-color参数可以使程序不输出任何颜色
遵循NO_COLOR标准,非空的NO_COLOR环境变量将会打开本开关而无需每次运行都附加参数
禁用彩色时,Windows cmd的模拟终端开关仍会被打开
此外,NO_COLOR标准记录了符合该标准的系列应用程序,但是在这个列表中出现一个中文二刺螈项目似乎有些ky,所以就暂时不开pr了
Opt:抽卡统计图片美化
主要是裁去了滑动到底后多余的空白

2023/01/01 v10.3.0

Add:抽卡记录统计导出
获取当前抽数以知晓保底还有多远
将完整抽卡记录合并为一张图片方便后续分析与查错
如果发现统计的抽数不正确,请在issue中附上生成的GachaHistory图片
Fix:pr #93

2022/12/17 v10.2.2

Fix:Cli下经典战斗前端16进制支持
Add:一些拐的助战模板

2022/12/12 v10.2.1

Opt:增加了计数

2022/12/10 v10.2.0

Upd:lottery
一方面,适配圣诞奖池的自动刷新,另一方面,切实检测抽奖结束而非依靠熔断
目前尚未有足够的测试验证计数值是否合适,发现还没抽完就停止时请在你的issue中附上fgoTemp目录下最新的若干张截图
~~Add:lottery+mailfilter~~
~~因此,现在可以串联调用lottery与mailfilter~~
一键百抽了邮箱筛选几乎没用了,就算要用也偶尔手动调用就行
Add:4-9枚狗粮的模板
7-9为备用

2022/11/17 v10.1.3

Del:邪马台国活动收菜

2022/11/07 v10.1.2

Add:cli下lock指令
可以在不退出FGO-py不断开设备连接的情况下暂时阻塞所有任务
此时只能使用更改设置等不会实际操作游戏的功能,精确地说,仅无法使用main|classic|call|continue|bench五个指令以及等效的exec
需要通过lock -u解锁才能继续使用,不会在执行任务时自动解锁
Opt:screenshot额外参数
可以指定文件名/存储路径与不在文件名后追加时间
Del:恢复截图的最高压缩

2022/11/05 v10.1.1

Fix:gui下任务定义更改

2022/11/05 v10.1.0

Add:邪马台国7*24自动收菜
注意cli中的battle命令没上锁,使用main -a 1代替
Fix:tgsong/jp:14046e2
Fix:返回按钮
在掉礼装的时候返回按钮较短无法被一面六个敌人的键位按到
Opt:runOnce
满足runOnce设置config的需求
其实我不希望这样整个config传来传去,能拆开的参数尽早拆开,但是想要主动更改配置又好像必须这样

2022/10/25 v10.0.0

操,review的时候突然发现这是一个不兼容更新,所以直接切大版本号了
Fix:runOnce
刚装好的虽然不runOnce但是要把VERSION写进config里

2022/10/24 v9.8.2

Opt:进一步优化discussion #86
Add:经典战斗的一面6敌人支持
Opt:runOnce
刚装好的就不runOnce
Opt:Device lazy import

2022/10/15 v9.8.1

Add:每面六个敌人
~~以及第一行一个大Boss第二行可能带两个跟班的情况~~
不然宝具放不出生存压力有点大
Opt:RunOnce
Fix:config初始生效
Opt:discussion #86
点6下对于3个弹窗来说确实有点吃紧了,加一点

2022/10/11 v9.8.0

Add:配置管理
支持onepush需要新增配置项,为避免merge conflict,别处定义config meta然后读配置文件向其合并
但是怎么感觉写了个妖怪出来
Upd:Airtest pr#1070下游同步
解决在部分手机上运行时获取分辨率不正确的问题
非b服用户需要自行更改config.json中package为自己的包名

2022/09/15 v9.7.3

Fix:cli下的配置保存
Fix:merge pr #85
我之前写的Windows鼠标事件居然漏了两个参数并且几次review都没发现...

2022/09/10 v9.7.2

Upd:旧版战斗更名为经典战斗
Opt:进关卡后点击
跳过初次进入活动关卡的开场动画

2022/09/09 v9.7.1

Fix:经典战斗恢复后BTN_ONEBATTLE没替换完全
Fix:经典战斗中禁用的御主技能仍会施放
Fix:经典战斗中出场即不满3人的情形会施放不存在的从者的宝具
Fix:经典战斗中无法施放的技能未正确禁用
Fix:经典战斗中selectCard奇怪的输出
Fix:Cli的经典战斗-a参数无效
Opt:countDown完成后清空屏幕缓冲
Fix:拼写错误

2022/09/08 v9.7.0

注意:未经充分测试
Add:经典战斗
一方面使新抽出来的卡能试试速刷
另一方面给玩家提供一个冬木刷凶骨只平A不开技能宝具的渠道
Add:webui下的一些基础功能补全

2022/08/27 v9.6.3

Fix:等战利品完全展示后再识别

2022/08/22 v9.6.2

Fix:[issue #75](https://github.com/hgjazhgj/FGO-py/issues/

Core symbols most depended-on inside this repo

connect
called by 34
FGO-py/fgoGui.py
perform
called by 30
FGO-py/fgoDevice.py
_compare
called by 23
FGO-py/fgoDetect.py
sleep
called by 23
FGO-py/fgoSchedule.py
press
called by 22
FGO-py/fgoWsa.py
castServantSkill
called by 21
FGO-py/fgoKernel.py
get
called by 15
FGO-py/fgoImageListener.py
_crop
called by 13
FGO-py/fgoDetect.py

Shape

Method 306
Function 54
Class 28
Route 14

Languages

Python100%

Modules by API surface

FGO-py/fgoDetect.py97 symbols
FGO-py/fgoCli.py49 symbols
FGO-py/fgoKernel.py41 symbols
FGO-py/fgoGui.py33 symbols
FGO-py/fgoConfig.py33 symbols
FGO-py/fgoWebServer.py29 symbols
FGO-py/fgoImageListener.py18 symbols
FGO-py/fgoSchedule.py16 symbols
FGO-py/fgoAndroid.py13 symbols
FGO-py/fgoDevice.py11 symbols
FGO-py/fgoWindows.py10 symbols
FGO-py/fgoAlasDevice.py10 symbols

For agents

$ claude mcp add FGO-py \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact