OnmyojiAutoScript 中寮突任务预设识别问题的分析与解决

OnmyojiAutoScript 中寮突任务预设识别问题的分析与解决

【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 【免费下载链接】OnmyojiAutoScript 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript

前言:寮突自动化的重要性与挑战

在阴阳师(Onmyoji)游戏中,寮突(结界突破)是获取勋章、勾玉和结界卡的重要日常活动。然而,手动操作寮突任务既耗时又重复,这正是自动化脚本的价值所在。OnmyojiAutoScript 作为专业的阴阳师自动化工具,其寮突模块(RealmRaid)承担着智能识别和自动攻击的关键任务。

但在实际使用中,许多用户遇到了预设识别问题:脚本无法正确识别勋章等级、攻击顺序混乱、甚至错过高价值目标。本文将深入分析这些问题的根源,并提供系统的解决方案。

寮突任务的核心识别机制

图像识别架构

OnmyojiAutoScript 采用基于模板匹配(Template Matching)的图像识别技术,通过预定义的 RuleImage 对象来识别游戏界面中的各种元素:

# 勋章等级识别规则定义
I_MEDAL_5 = RuleImage(roi_front=(238,205,212,53), roi_back=(216,187,919,364), 
                     threshold=0.8, method="Template matching", 
                     file="./tasks/RealmRaid/res/res_medal_5.png")
I_MEDAL_4 = RuleImage(roi_front=(241,483,193,46), roi_back=(228,178,899,362),
                     threshold=0.8, method="Template matching",
                     file="./tasks/RealmRaid/res/res_medal_4.png")
# ... 其他勋章等级定义

攻击顺序预设系统

脚本通过 order_attack 配置项定义攻击优先级:

order_attack: str = Field(title='Order Attack', default='5 > 4 > 3 > 2 > 1 > 0', 
                         description='order_attack_help')

常见识别问题分析

问题一:勋章等级识别失败

症状表现

  • 脚本无法正确识别五星勋章,误判为低等级
  • 高价值目标被忽略,攻击低价值目标

根本原因

  1. 图像模板过时:游戏UI更新导致模板不匹配
  2. 分辨率适配问题:不同设备分辨率下ROI(Region of Interest)区域偏移
  3. 亮度对比度变化:游戏内时间、天气效果影响图像识别

问题二:攻击顺序混乱

症状表现

  • 不按预设顺序攻击,随机选择目标
  • 攻击逻辑与配置不符

技术分析

def find_one(self, screenshot: bool=True) -> tuple:
    # 优先级排序逻辑
    target = self.order_medal.find_anyone(image)
    if target:
        center = target.front_center()
        for i, click in enumerate(self.partition):
            # 位置匹配算法
            if x1 < center[0] < x2 and y1 < center[1] < y2:
                return target, i + 1
    return None, None

问题三:特殊活动识别异常

呱太活动期间的识别问题

def check_medal_is_frog(self, is_activity: False, target: RuleImage, order: int) -> bool:
    # 呱太勋章的特殊处理逻辑
    if not is_activity:
        return False
    if order < 7:  # 呱太只出现在7-9位置
        return False
    if target != self.I_MEDAL_5 and target != self.I_MEDAL_4:
        return False
    # OCR识别验证
    if target_ocr.ocr(self.device.image) == 20:
        return True
    return False

系统化解决方案

方案一:图像模板更新与优化

步骤1:重新采集模板图像

# 使用脚本自带的图像采集工具
python dev_tools/get_images.py --task RealmRaid --force-update

步骤2:调整识别参数

# 优化阈值和ROI区域
I_MEDAL_5 = RuleImage(roi_front=(240,200,220,60), roi_back=(200,180,950,380),
                     threshold=0.75, method="Template matching",  # 降低阈值提高容错
                     file="./tasks/RealmRaid/res/res_medal_5.png")

方案二:动态分辨率适配

def adaptive_roi_calculation(base_resolution, current_resolution):
    """动态计算ROI区域"""
    scale_x = current_resolution[0] / base_resolution[0]
    scale_y = current_resolution[1] / base_resolution[1]
    
    # 应用缩放比例到所有ROI定义
    for rule_image in all_rule_images:
        rule_image.roi_front = apply_scale(rule_image.roi_front, scale_x, scale_y)
        rule_image.roi_back = apply_scale(rule_image.roi_back, scale_x, scale_y)

方案三:多重验证机制

def enhanced_medal_recognition(self, image, position):
    """增强型勋章识别"""
    # 第一层:模板匹配
    primary_match = template_matching(image, self.medal_templates)
    
    # 第二层:颜色特征验证
    color_features = extract_color_features(image, position)
    
    # 第三层:OCR文本验证(如果可用)
    text_verification = ocr_verification(image, position)
    
    # 综合评分
    confidence_score = calculate_confidence(
        primary_match, color_features, text_verification
    )
    
    return confidence_score > 0.7  # 综合置信度阈值

配置优化指南

最佳攻击顺序配置

# 推荐配置:优先高等级,考虑刷新成本
order_attack: str = '5 > 4 > 3 > 2 > 1 > 0'

# 进阶配置:考虑勋章数量和刷新策略
# 5星 > 4星 > (3星且数量>2) > 2星 > 1星 > 0星

性能调优参数

raid_config: RaidConfig = Field(default_factory=RaidConfig)
# 关键参数调整:
number_attack: int = 30        # 最大攻击次数
number_base: int = 5           # 基础票数要求
exit_four: bool = True         # 是否执行退四打九
three_refresh: bool = True     # 是否三次后刷新

故障排查流程图

mermaid

实战案例:解决五星勋章识别问题

问题描述:脚本无法识别五星勋章,总是攻击低等级目标

解决过程

  1. 诊断:通过调试模式发现模板匹配置信度仅为0.65(低于阈值0.8)
  2. 分析:游戏UI更新导致勋章外观微调
  3. 解决
    • 重新采集五星勋章模板图像
    • 将阈值从0.8调整为0.75
    • 扩大ROI区域增加容错空间

结果:识别成功率从60%提升到95%

高级技巧:自定义识别策略

对于特殊需求,可以扩展识别逻辑:

def custom_attack_strategy(self, config):
    """自定义攻击策略"""
    # 优先攻击勋章数量少的目标(更容易攻破)
    medal_counts = self.analyze_medal_distribution()
    
    # 结合等级和数量的综合评分
    targets = []
    for position, medal_level in enumerate(self.detected_medals):
        score = medal_level * 10 + (5 - medal_counts[position]) * 2
        targets.append((position, score))
    
    # 按评分排序攻击
    targets.sort(key=lambda x: x[1], reverse=True)
    return targets

结语

OnmyojiAutoScript 的寮突模块是一个复杂而精密的系统,识别问题的解决需要系统性的方法和深入的技术理解。通过本文的分析和解决方案,您应该能够:

  1. 理解识别机制:掌握图像识别和攻击逻辑的工作原理
  2. 诊断问题根源:快速定位识别失败的具体原因
  3. 实施有效解决方案:从模板更新到参数调优的全套方法
  4. 预防未来问题:建立持续维护和优化的机制

记住,自动化脚本的成功运行依赖于游戏环境的稳定性。当游戏更新时,及时更新图像模板和调整识别参数是保持脚本正常工作的关键。

下一步行动

  • 定期检查并更新图像资源
  • 参与社区讨论,分享识别经验
  • 关注游戏更新公告,提前做好准备

通过系统的维护和优化,OnmyojiAutoScript 将成为您寮突任务的可靠助手,为您节省大量时间的同时获取最大收益。

【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 【免费下载链接】OnmyojiAutoScript 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值