OnmyojiAutoScript探索模式战斗超时问题分析与解决方案

OnmyojiAutoScript探索模式战斗超时问题分析与解决方案

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

痛点:探索模式中的战斗超时困扰

在阴阳师自动化脚本的使用过程中,许多用户都遇到过探索模式战斗超时的问题。当脚本在探索章节中连续战斗时,可能会因为各种原因导致战斗时间过长,甚至出现卡死现象,严重影响自动化效率。本文将深入分析OnmyojiAutoScript中探索模式的战斗超时问题,并提供全面的解决方案。

问题根源深度分析

1. 战斗检测机制分析

OnmyojiAutoScript使用基于图像识别的战斗状态检测机制。在GeneralBattle组件中,battle_wait方法负责监控战斗状态:

def battle_wait(self, random_click_swipt_enable: bool) -> bool:
    """
    等待战斗结束
    :param random_click_swipt_enable: 是否启用随机点击滑动
    :return: 战斗结果(True为胜利,False为失败)
    """
    self.device.stuck_record_add('BATTLE_STATUS_S')
    self.device.click_record_clear()
    
    win: bool = False
    while 1:
        self.screenshot()
        # 胜利检测
        if self.appear(self.I_WIN, threshold=0.8) or self.appear(self.I_DE_WIN):
            logger.info("Battle result is win")
            win = True
            break
            
        # 失败检测
        if self.appear(self.I_FALSE, threshold=0.8):
            logger.info("Battle result is false")
            win = False
            break
            
        # 奖励检测
        if self.appear(self.I_REWARD, threshold=0.6):
            win = True
            break

2. 超时风险点识别

风险点描述影响程度
图像识别失败战斗结束画面识别阈值设置不当
设备性能问题模拟器或手机性能不足导致延迟
网络延迟战斗结果同步延迟
异常战斗状态特殊战斗机制导致识别困难

3. 探索模式特有的超时因素

在探索模式中,还存在以下特有的超时风险:

mermaid

解决方案与优化策略

1. 配置参数优化

ExplorationConfig中,关键的超时相关配置参数:

class ExplorationConfig(BaseModel):
    limit_time: Time = Field(default=Time(minute=30), description='探索时间限制')
    minions_cnt: int = Field(title='战斗次数', default='30', ge=0, description='最小战斗次数')
    
    # 推荐优化值
    exploration_level: ExplorationLevel = Field(default=ExplorationLevel.EXPLORATION_28)
    auto_rotate: AutoRotate = Field(default=AutoRotate.no, description='自动添加候补式神')

2. 战斗超时检测增强

建议在battle_wait方法中添加超时检测机制:

def battle_wait(self, random_click_swipt_enable: bool) -> bool:
    from module.base.timer import Timer
    
    battle_timeout = Timer(180)  # 3分钟超时
    battle_timeout.start()
    
    while 1:
        self.screenshot()
        
        # 超时检测
        if battle_timeout.reached():
            logger.warning("Battle timeout detected, forcing exit")
            self.exit_battle()
            return False
            
        # 原有检测逻辑...

3. 设备性能优化策略

mermaid

4. 图像识别阈值调整

针对探索模式的特殊场景,优化图像识别参数:

# 在assets.py中调整识别阈值
class ExplorationAssets(GeneralBattleAssets):
    # 探索模式特有的图像资源
    I_UP_EXP = Button(area=(0, 0, 0, 0), color=(), button=(), file='./tasks/Exploration/res/xxx.png')
    I_UP_COIN = Button(area=(0, 0, 0, 0), color=(), button=(), file='./tasks/Exploration/res/xxx.png')
    
    # 优化识别阈值
    def optimize_threshold(self):
        self.I_WIN.threshold = 0.75  # 从0.8调整为0.75
        self.I_FALSE.threshold = 0.75
        self.I_REWARD.threshold = 0.55  # 从0.6调整为0.55

实战调试与故障排除

1. 常见问题排查表

问题现象可能原因解决方案
战斗卡在准备界面绿标功能异常禁用绿标或调整坐标
无法识别战斗结束图像资源过时更新图像资源文件
频繁超时退出设备性能不足优化模拟器配置
探索章节切换失败OCR识别错误调整OCR参数

2. 调试日志分析

启用详细日志记录,分析超时原因:

# 在config中启用调试日志
logger.level = "DEBUG"
logger.add("exploration_debug.log", rotation="10 MB")

# 监控关键时间点
start_time = time.time()
while battle_ongoing:
    current_time = time.time()
    if current_time - start_time > 180:  # 3分钟超时
        logger.error(f"Battle timeout at {current_time - start_time} seconds")
        break

3. 性能监控指标

建立性能监控体系,实时跟踪战斗效率:

class PerformanceMonitor:
    def __init__(self):
        self.battle_times = []
        self.success_rate = 0
        self.avg_battle_time = 0
        
    def record_battle(self, duration: float, success: bool):
        self.battle_times.append(duration)
        self.avg_battle_time = sum(self.battle_times) / len(self.battle_times)
        
        if success:
            self.success_count += 1
        self.success_rate = self.success_count / len(self.battle_times)

最佳实践与配置推荐

1. 优化配置示例

exploration:
  scheduler:
    enable: true
    next_run: 2024-01-01 00:00:00
  exploration_config:
    limit_time:
      hour: 0
      minute: 45
      second: 0
    minions_cnt: 50
    exploration_level: EXPLORATION_28
    auto_rotate: '是'
    choose_rarity: 'N卡'
    up_type: 'up_all'
  general_battle_config:
    lock_team_enable: true
    green_enable: false  # 禁用绿标减少异常
    random_click_swipt_enable: true

2. 设备配置推荐

配置项推荐值说明
模拟器MuMu模拟器兼容性最佳
分辨率1280x720平衡性能与识别
CPU4核心保证流畅运行
内存4096MB避免内存不足
渲染模式DirectX性能最优

3. 网络环境要求

mermaid

总结与展望

通过本文的分析与解决方案,我们可以有效解决OnmyojiAutoScript探索模式中的战斗超时问题。关键点在于:

  1. 合理配置参数:根据设备性能调整超时时间和战斗次数
  2. 优化图像识别:调整阈值提高识别准确率
  3. 增强超时检测:添加战斗超时强制退出机制
  4. 设备性能优化:确保模拟器配置达到要求

未来版本可能会引入更智能的超时预测机制,基于历史战斗数据动态调整超时阈值,进一步提升自动化效率。

记住,稳定的网络环境、合适的设备配置和正确的参数设置是避免战斗超时的关键。通过系统化的优化,探索模式的自动化运行将更加稳定高效。

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

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

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

抵扣说明:

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

余额充值