# py-maa **Repository Path**: CodexploRe/py-maa ## Basic Information - **Project Name**: py-maa - **Description**: py-maa是对maa《明日方舟》小助手功能python复现的尝试。 - **Primary Language**: Python - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-04-05 - **Last Updated**: 2025-03-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PyMaa #### 介绍 此项目内容为本人尝试的对 [Maa《明日方舟》小助手](https://maa.plus/) 的功能的python复现。 全名暂定PythonMyArknightsAssistant,后续应该会换个名字 不过因为本人没有去仔细研读Maa的开源代码(注释不是很多看起来比较费劲),仅凭自己的感觉写的,所以功能的具体实现应该和大佬有挺多不同的,性能估计也差很多吧,仅当作个人的一种练习代码的方式。 #### 使用说明 目前实现了三个功能(测试账号是新开的小号哈哈): 1. 公招词条识别和选择 公招图片: ![image-20240421120437701](README.assets/image-20240421120437701.jpg) 运行代码(tags_recognition参数均使用默认参数): ```python from domains.Consoles import MumuConsole from domains.ArkAssistant import ArkAssistant def ttt(): mm = MumuConsole() aka = ArkAssistant(mm) aka.tags_recognition(auto_set_time=True, set_time=900, auto_choose_tag=None) if __name__ == '__main__': ttt() ``` 公招结果: ![image-20240421120422323](README.assets/image-20240421120422323.jpg) info日志: ```python 2024-04-21 12:03:01.513 | INFO | domains.ArkAssistant:tags_recognition:119 - 开始识别公招词条 2024-04-21 12:03:04.162 | INFO | domains.ArkAssistant:tags_recognition:190 - 识别到词条: ['近卫干员', '医疗干员', '先锋干员', '远程位', '费用回复'] 2024-04-21 12:03:04.163 | INFO | domains.ArkAssistant:tags_recognition:214 - ⭐⭐⭐词条组: ['费用回复'] 干员范围: [['德克萨斯', 5], ['凛冬', 5], ['极境', 5], ['苇草', 5], ['贾维', 5], ['桃金娘', 4], ['清道夫', 4], ['红豆', 4], ['芬', 3], ['香草', 3], ['翎羽', 3]] 2024-04-21 12:03:04.163 | INFO | domains.ArkAssistant:tags_recognition:214 - ⭐⭐⭐词条组: ['先锋干员', '费用回复'] 干员范围: [['德克萨斯', 5], ['凛冬', 5], ['极境', 5], ['苇草', 5], ['贾维', 5], ['桃金娘', 4], ['清道夫', 4], ['红豆', 4], ['芬', 3], ['香草', 3], ['翎羽', 3]] 2024-04-21 12:03:04.163 | INFO | domains.ArkAssistant:tags_recognition:214 - ⭐⭐⭐词条组: ['远程位'] 干员范围: [['赫默', 5], ['华法琳', 5], ['白面鸮', 5], ['莱恩哈特', 5], ['蜜蜡', 5], ['惊蛰', 5], ['夜魔', 5], ['送葬人', 5], ['慑砂', 5], ['陨星', 5], ['四月', 5], ['普罗旺斯', 5], ['灰喉', 5], ['白金', 5], ['蓝毒', 5], ['安哲拉', 5], ['守林人', 5], ['格劳克斯', 5], ['真理', 5], ['初雪', 5], ['巫恋', 5], ['梅尔', 5], ['月禾', 5], ['末药', 4], ['苏苏洛', 4], ['调香师', 4], ['清流', 4], ['远山', 4], ['格雷伊', 4], ['夜烟', 4], ['卡达', 4], ['白雪', 4], ['红云', 4], ['酸糖', 4], ['安比尔', 4], ['梅', 4], ['流星', 4], ['杰西卡', 4], ['地灵', 4], ['波登可', 4], ['安赛尔', 3], ['芙蓉', 3], ['炎熔', 3], ['史都华德', 3], ['空爆', 3], ['克洛丝', 3], ['安德切尔', 3], ['梓兰', 3], ['12F', 2], ['杜林', 2], ['巡林者', 2], ['Lancet-2', 1], ['正义骑士号', 1]] 2024-04-21 12:03:04.163 | INFO | domains.ArkAssistant:tags_recognition:214 - ⭐⭐⭐词条组: ['近卫干员'] 干员范围: [['布洛卡', 5], ['幽灵鲨', 5], ['燧石', 5], ['诗怀雅', 5], ['因陀罗', 5], ['断崖', 5], ['星极', 5], ['霜叶', 4], ['刻刀', 4], ['缠丸', 4], ['艾丝黛尔', 4], ['慕斯', 4], ['猎蜂', 4], ['芳汀', 4], ['杜宾', 4], ['宴', 4], ['泡普卡', 3], ['月见夜', 3], ['玫兰莎', 3], ['Castle-3', 1]] 2024-04-21 12:03:04.163 | INFO | domains.ArkAssistant:tags_recognition:214 - ⭐⭐⭐词条组: ['先锋干员'] 干员范围: [['德克萨斯', 5], ['凛冬', 5], ['极境', 5], ['苇草', 5], ['贾维', 5], ['桃金娘', 4], ['清道夫', 4], ['红豆', 4], ['芬', 3], ['香草', 3], ['翎羽', 3], ['夜刀', 2]] 2024-04-21 12:03:04.163 | INFO | domains.ArkAssistant:tags_recognition:214 - ⭐⭐⭐词条组: ['医疗干员'] 干员范围: [['赫默', 5], ['华法琳', 5], ['白面鸮', 5], ['末药', 4], ['苏苏洛', 4], ['调香师', 4], ['清流', 4], ['安赛尔', 3], ['芙蓉', 3], ['Lancet-2', 1]] 2024-04-21 12:03:04.163 | INFO | domains.ArkAssistant:tags_recognition:214 - ⭐⭐⭐词条组: ['医疗干员', '远程位'] 干员范围: [['赫默', 5], ['华法琳', 5], ['白面鸮', 5], ['末药', 4], ['苏苏洛', 4], ['调香师', 4], ['清流', 4], ['安赛尔', 3], ['芙蓉', 3], ['Lancet-2', 1]] 2024-04-21 12:03:04.164 | INFO | domains.ArkAssistant:tags_recognition:226 - 设置时间: 9小时 2024-04-21 12:03:04.298 | INFO | domains.ArkAssistant:tags_recognition:237 - 选择⭐⭐⭐词条组: ['费用回复'] ``` 2. 对已有干员的识别 干员图片: ![image-20240421121506841](README.assets/image-20240421121506841.jpg) ![image-20240421121522950](README.assets/image-20240421121522950.jpg) 运行代码: ```python from domains.Consoles import MumuConsole from domains.ArkAssistant import ArkAssistant def ttt(): mm = MumuConsole() aka = ArkAssistant(mm) aka.operators_recognition() if __name__ == '__main__': ttt() ``` info日志示例: ```python 2024-04-21 12:06:24.163 | INFO | domains.ArkAssistant:operators_recognition:296 - 开始任务: 识别干员 2024-04-21 12:06:34.886 | INFO | domains.ArkAssistant:operators_recognition:330 - 拥有的6星干员: ['棘刺'] 2024-04-21 12:06:34.886 | INFO | domains.ArkAssistant:operators_recognition:330 - 拥有的5星干员: ['阿米娅'] 2024-04-21 12:06:34.887 | INFO | domains.ArkAssistant:operators_recognition:330 - 拥有的4星干员: ['砾', '杰西卡', '讯使', '蛇屠箱', '暗索', '角峰'] 2024-04-21 12:06:34.887 | INFO | domains.ArkAssistant:operators_recognition:330 - 拥有的3星干员: ['月见夜', '炎熔', '克洛丝', '安德切尔', '玫兰莎', '米格鲁', '梓兰', '芬', '香草', '安赛尔', '芙蓉', '翎羽'] 2024-04-21 12:06:34.887 | INFO | domains.ArkAssistant:operators_recognition:330 - 拥有的2星干员: ['黑角', '巡林者', '夜刀', '杜林', '12F'] 2024-04-21 12:06:34.887 | INFO | domains.ArkAssistant:operators_recognition:330 - 拥有的1星干员: ['Lancet-2'] 2024-04-21 12:06:34.887 | INFO | domains.ArkAssistant:operators_recognition:340 - 未拥有的6星干员: ['安洁莉娜', '嵯峨', '山', '斯卡蒂', '圣约送葬人', '归溟幽灵鲨', '斥罪', '塑心', '老鲤', '令', '史尔特尔', '铃兰', '艾雅法拉', '琳琅诗怀雅', '流明', '赫德雷', '银灰', '缄默德克萨斯', '焰尾', '黑', '远牙', '耀骑士临光', '温蒂', '鸿雪', '傀影', '白铁', '帕拉斯', '菲亚梅塔', 'W', '黍', '伊芙利特', '琴柳', '霍尔海雅', '刻俄柏', '澄闪', '夕', '玛恩纳', '焰影苇草', '能天使', '灵知', '歌蕾蒂娅', '号角', '麦哲伦', '推进之王', '夜莺', '仇白', '闪灵', '凯尔希', '伊内丝', '纯烬艾雅法拉', '多萝西', '空弦', '迷迭香', '陈', '薇薇安娜', '锏', '艾拉', '灰烬', '止颂', '莱伊', '异客', '重岳', '淬羽赫默', '星熊', '林', '缪尔赛思', '假日威龙陈', '伺夜', '泥岩', '塞雷娅', '百炼嘉维尔', '左乐', '水月', '森蚺', '莫斯提马', '涤火杰西卡', '提丰', '艾丽妮', '浊心斯卡蒂', '风笛', '麒麟R夜刀', '年', '煌', '阿', '卡涅利安', '黑键', '瑕光', '早露', '赫拉格'] 2024-04-21 12:06:34.888 | INFO | domains.ArkAssistant:operators_recognition:340 - 未拥有的5星干员: ['稀音', '极境', '薄绿', '羽毛笔', '陨星', '极光', '龙舌兰', '幽灵鲨', '槐琥', '雪绒', '苇草', '燧石', '安哲拉', '截云', '贝娜', '隐现', '奥斯塔', '万顷', '天火', '莱恩哈特', '断崖', '四月', '海沫', '刺玫', '石棉', '赫默', '星极', '乌有', '柏喙', '月禾', '双月', '掠风', '亚叶', '车尔尼', '白金', '深律', '夏栎', '炎客', '谜图', '戴菲恩', '摩根', '绮良', '拉普兰德', '赤冬', '耶拉', '暴行', '铸铁', '烈夏', '铎铃', '可颂', '崖心', '雷蛇', '夜半', '夜魔', '火龙S黑角', '梅尔', '熔泉', '苍苔', '红隼', '闪击', '图耶', '火神', '拜松', '格拉尼', '寒檀', '折光', '食铁兽', '战车', '蜜莓', '巫恋', '星源', '见行者', '海蒂', '冰酿', '杏仁', '临光', '火哨', '濯尘芙蓉', '凛视', '暴雨', '苦艾', '蚀清', '诗怀雅', '风丸', '絮雨', '至简', '特米米', '贾维', '普罗旺斯', '吽', '爱丽丝', '晓歌', '灰喉', '九色鹿', '寒芒克洛丝', '青枳', '霜华', '和弦', '空', '狮蝎', '白面鸮', '布洛卡', '小满', '灰毫', '德克萨斯', '暮落', '但书', '达格达', '芙兰卡', '慑砂', '子月', '洛洛', '罗宾', '医生', '明椒', '鞭刃', '导火索', '守林人', '承曦格雷伊', '微风', '华法琳', '凛冬', '蜜蜡', '锡兰', '炎狱炎熔', '红', '惊蛰', '因陀罗', '雪雉', '送葬人', '埃拉托', '野鬃', '温米', '初雪', '卡夫卡', '真理', '哈洛德', '空构', '格劳克斯', '玫拉', '桑葚', '洋灰', '蓝毒'] 2024-04-21 12:06:34.890 | INFO | domains.ArkAssistant:operators_recognition:340 - 未拥有的4星干员: ['宴', '缠丸', '布丁', '休谟斯', '罗比菈塔', '桃金娘', '调香师', '石英', '格雷伊', '伊桑', '霜叶', '慕斯', '红豆', '白雪', '波登可', '酸糖', '苏苏洛', '清流', '安比尔', '杜宾', '梅', '罗小黑', '铅踝', '末药', '孑', '红云', '豆苗', '深海色', '古米', '松果', '流星', '刻刀', '艾丝黛尔', '坚雷', '泡泡', '猎蜂', '芳汀', '杰克', '清道夫', '断罪者', '维荻', '夜烟', '嘉维尔', '跃跃', '卡达', '阿消', '地灵', '深靛', '褐果', '远山'] 2024-04-21 12:06:34.890 | INFO | domains.ArkAssistant:operators_recognition:340 - 未拥有的3星干员: ['空爆', '史都华德', '卡缇', '泡普卡', '斑点'] 2024-04-21 12:06:34.890 | INFO | domains.ArkAssistant:operators_recognition:338 - 已拥有全部2星干员 2024-04-21 12:06:34.890 | INFO | domains.ArkAssistant:operators_recognition:340 - 未拥有的1星干员: ['Friston-3', '泰拉大陆调查团', 'THRM-EX', 'Castle-3', 'U-Official', '正义骑士号'] ``` 3. 道具仓库的识别 包含两种识别算法,一种基于模板匹配,另一种基于相似度计算 仓库材料图片: ![image-20240421121149771](README.assets/image-20240421121149771.jpg) 运行代码(基于模板匹配,items_recognition参数均使用默认参数): ```python from domains.Consoles import MumuConsole from domains.ArkAssistant import ArkAssistant, By def ttt(): mm = MumuConsole() aka = ArkAssistant(mm) aka.items_recognition(by=By.MATCH_TEMPLATE, choose_tags=None) if __name__ == '__main__': ttt() ``` info日志: (破损装置的数量识别错误,估计是被覆盖了) ```python 2024-04-21 12:09:21.748 | INFO | domains.ArkAssistant:items_recognition:390 - 开始任务: 识别道具 2024-04-21 12:09:35.263 | INFO | domains.ArkAssistant:items_recognition:454 - 识别到的道具: {'技巧概要·卷1': '51', '异铁': '8', '中级作战记录': '6', '近卫芯片': '5', '固源岩': '23', '双酮': '5', '代糖': '7', '破损装置': '7', '固源岩组': '5', '初级作战记录': '24', '异铁碎片': '4', '酯原料': '5', '源岩': '8', '聚酸酯': '1', '基础作战记录': '46'} ``` 4. 关卡的简单刷取 运行代码(测试关卡选择主线 1-7,单轮刷取数:1,刷取次数:2): ```python from domains.CheckPoint import CheckPoint from domains.Consoles import MumuConsole from domains.ArkAssistant import ArkAssistant def ttt(): mm = MumuConsole() aka = ArkAssistant(mm) aka.fight(CheckPoint.MAIN_1_7, 1, 2) if __name__ == '__main__': ttt() ``` info日志示例: ```python 2024-04-21 11:41:52.107 | INFO | domains.ArkAssistant:fight:612 - 选择战斗: 主线 1-7 2024-04-21 11:42:14.686 | INFO | domains.ArkAssistant:_set_and_start_fight:851 - 开始战斗: 主线 1-7 | 1/2 2024-04-21 11:43:36.451 | INFO | domains.ArkAssistant:_set_and_start_fight:853 - 结束战斗: 主线 1-7 | 1/2 2024-04-21 11:43:43.143 | INFO | domains.ArkAssistant:_set_and_start_fight:878 - 龙门币: 72(+72) 2024-04-21 11:43:43.143 | INFO | domains.ArkAssistant:_set_and_start_fight:878 - 固源岩: 1(+1) 2024-04-21 11:43:43.144 | INFO | domains.ArkAssistant:_set_and_start_fight:878 - 声望: 72(+72) 2024-04-21 11:43:43.144 | INFO | domains.ArkAssistant:_set_and_start_fight:878 - 基础作战记录: 2(+2) 2024-04-21 11:43:43.144 | INFO | domains.ArkAssistant:_set_and_start_fight:878 - 源岩: 1(+1) 2024-04-21 11:43:49.977 | INFO | domains.ArkAssistant:_set_and_start_fight:851 - 开始战斗: 主线 1-7 | 2/2 2024-04-21 11:45:09.307 | INFO | domains.ArkAssistant:_set_and_start_fight:853 - 结束战斗: 主线 1-7 | 2/2 2024-04-21 11:45:14.260 | INFO | domains.ArkAssistant:_set_and_start_fight:878 - 龙门币: 144(+72) 2024-04-21 11:45:14.260 | INFO | domains.ArkAssistant:_set_and_start_fight:878 - 固源岩: 2(+1) 2024-04-21 11:45:14.260 | INFO | domains.ArkAssistant:_set_and_start_fight:878 - 声望: 144(+72) 2024-04-21 11:45:14.260 | INFO | domains.ArkAssistant:_set_and_start_fight:878 - 基础作战记录: 3(+1) 2024-04-21 11:45:14.260 | INFO | domains.ArkAssistant:_set_and_start_fight:880 - 源岩: 1 ``` 目前正在实现: - 关卡的指定刷取 完成进度:资源关卡、1-7、R8-11、12-17-HARD、上一次的关卡、关卡单轮次数、战斗结束判断、循环次数、战利品识别、当前理智识别等 还要实现:剿灭代理、活动关卡、吃理智药的逻辑等