1 3.4. Exception
LmeSzinc edited this page 2021-10-18 23:51:52 +08:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Exception

介绍 module/exception.py 中的异常。

CampaignEnd

关卡战斗结束

Raise

  • BOSS Clear. BOSS 战斗结束。
  • In stage. 战斗结束后退出至章节界面。
  • Image is in stage 对章节界面执行海图识别。
  • Withdraw 关卡撤退。

Catch

  • 结束当前关卡出击。

MapDetectionError

海域地图识别错误

Raise

  • Vanish point and distant point too close 仅海图识别方法为 perspective 时,拟合得到的灭点和距点距离太近,拟合结果对于一点透视的计算无意义。通常是因为网格线太少,导致拟合出错,此时需要调整识别的参数。
  • No data feed to load_homography, please input at least one. 仅海图识别方法为 homography 时,未输入任何初始化透视参数。
  • Failed to find a free tile 仅海图识别方法为 homography 时,无法找到定位点。通常是因为识别的图像并不是海域地图的图像,或者地图地面的杂物较多影响识别。
  • Camera outside map: offset=({x}, {y}) 海图识别时,镜头(画面中心)在地图外。(x, y) 是超出地图边界的距离。

Catch

  • 若信息为 Camera outside map: offset=({x}, {y}),将镜头重新对准至最近的海域网格内,并重新识别。

MapWalkError

无法移动至目标点。目标点超出舰队的移动距离,或者通往目标点的道路被敌舰阻挡。

Raise

  • walk_out_of_step 在舰队移动时在第一个消息框INFO_BAR_1出现 移动 二字。

Catch

  • 捕捉到第一次 MapWalkError 时尝试降低舰队步长FLEET_STEP至 1也就是一格一格地移动。若降低舰队步长后仍然捕捉到 MapWalkError通常是因为敌人信息丢失舰队位置错误镜头位置错误。直接设置舰队步长为 1一般不能解决问题。

MapEnemyMoved

敌人已经移动,需要重新进行地图扫描。

Raise

  • 计算移动回合,若当前回合后精英敌人会移动,对已移动敌人的进行扫描,并抛出。玩家舰队移动 2 次或 3 次后,精英敌人移动。具体是 2 次还是 3 次,根据敌人不同而不同,可以查看 expedition_data_template.lua 中的 ai_mov 属性。若使用 map_extractor.py 生成地图文件,将自动提取至 MOVABLE_ENEMY_TURN。

Catch

  • 捕捉后,重新执行当前 battle_function上限 10 次。超出次数后,抛出 ScriptError('No combat executed.')

CampaignNameError

无法识别关卡名称。

Raise

  • Stage not found: {name} 无法在当前界面找到所请求的关卡名称。
  • 无法在当前界面找到所请求的章节序号。

Catch

  • 捕捉后重新识别,上限 20 次。超出次数后,抛出 ScriptEnd('Campaign name error')

ScriptError

发生脚本内部错误,且无法处理。若开启 ENABLE_EXCEPTION撤退不抛出异常。

Raise

  • No combat executed. 未攻击敌人。当前 battle_function 执行后未攻击任何一个敌人。
  • Battle function exhausted. battle_function 耗尽。执行了超过 20 次 battle_function尝试攻击了超过 20 个敌人。
  • {key} filter switch object does not exist in module/retire/dock.py 船坞筛选条件未在 module/retire/dock.py 中定义。
  • No book found. 在战术学院,检测不到任何一本技能书。
  • Login failed more than 3 游戏登录失败次数超过 3。
  • 'No ocr-tool found, please install tesseract by yourself and make sure to set correct env vars.' 仅日服,未安装 tesseract。
  • No jpn found in tesseract langs, please install japanese data files. 仅日服tesseract 中未安装 jpn 训练数据。

ScriptEnd

脚本运行结束。

Raise

  • Reach condition: {self.config.STOP_IF_MAP_REACH} 触发用户设置中的停止条件。
  • Campaign name error 无法识别关卡名称,无法进入关卡。

Catch

  • Script end 停止脚本的运行。

GameStuckError

游戏卡死。

Raise

  • Wait too long 等待时间过长。超过 60 秒和 60 张截图后无任何操作,或在战斗中超过 300 秒和 300 张截图后无任何操作,抛出。(若识别对象包含BATTLE_STATUS_SPAUSE,认为在战斗中。)
  • Triggered commission list flashing bug 执行委托时,失败次数超过 3可能触发游戏内的委托列表闪烁 bug导致无法委托开始。

Catch

  • 仅在使用 GUI 运行时,重启游戏。在重启时,若再次发生 GameStuckError不再捕捉通常是因为服务器在维护或者网络连接已断开。

GameTooManyClickError

点击游戏内同一按钮, 或者执行相同滑动的次数过多。

Raise

  • Too many click for a button: {button} 点击或滑动某个按钮次数过多。若在最后 15 次点击中,包含 12 次当前点击,则抛出。

Catch

  • 仅在登录时,重启游戏,最大次数 3。超过次数后抛出 ScriptError('Login failed more than 3')

GameNotRunningError

游戏未运行。

Raise

  • Game not running 在无法识别的界面启动 Alas且游戏未运行。

Catch

  • 仅在使用 GUI 运行时,重启游戏。

AscreencapError

调用 ascreencap 发生错误。

Raise

  • Repositioning byte pointer failed, corrupted aScreenCap data received 无法定位 ascreencap 数据中的图片。
  • aScreenCap header verification failure, corrupted image received. 接收到的数据有误。

Catch

  • 重新安装 ascreencap。

Exit without error

Alas 停止运行,不报错。通常是用户设置有误或者使用方式不对。

  • Not supported screen size: {width}x{height}
    Alas requires 1280x720
    

    不支持的分辨率Alas 需要在 1280x720 下运行。

  • Received a pure black screenshot
    Color: {color}
    

    截图为纯黑色。通常是设备处于锁屏状态,或者当前模拟器不支持当前截图方式。

  • Map file not found: campaign.{folder}.{name}
    

    未找到地图文件。通常是用户出击未适配的地图,或者运行目录有误。

  • Unable to goto page_main
    Starting from current page is not supported
    Supported page: {[str(page) for page in self.ui_pages]}
    Supported page: Any page with a "HOME" button on the upper-right
    

    无法前往游戏主界面不支持从当前游戏界面启动。Alas可以自动切换到需要的游戏界面, 但是只允许在这些界面下启动主界面出击编队演习每日活动SP活动任务领取。共斗活动。Alas也可以在右上角有 “一键回港” 按钮的界面下启动。游戏中大部分界面都有这个按钮,除了主界面本身,后宅,指挥喵。

  • UI route too long
    

    寻找到的游戏界面切换路径过长。防止自动切换游戏界面时进入死循环,快速占满内存。已经修复。

  • Unknown raid mode: {mode}
    

    不支持的共斗活动难度。

  • Unable to connect %s' % serial
    

    ADB 无法连接至该模拟器。

  • No ship retired, exit
    This may happens because wrong options of one click retirement in game
    

    仅使用一键退役时,未退役任何船只,通常是游戏内的一键退役设置有误。

  • No ship retired, exit
    This may happens because some filters are set in dock
    

    仅使用传统退役时,未退役任何船只,通常是在游戏内的船坞设置了别的筛选条件。

  • Frame body does not strt with JPEG header
    

    仅使用 minicap 截图时,接收到的数据不是 JPEG 图像。

  • Mob fleet [{self.FLEET_1}] and boss fleet [{self.FLEET_2}] is the same
    They should to be set to different fleets
    

    将道中队和 BOSS 队设置为同一队。企图使用骚操作绕过 Alas 必须使用两队的限制,最终也会在 BOSS 出现时报错,所以在保存设置时增加了检查。

  • You should use 2 fleets from chapter 7 to 13
    Current: mob fleet [{self.FLEET_1}], boss fleet [{self.FLEET_2}]
    

    在 7 到 13 章需要使用两队。解释同上。

  • Ocr model not prepared: {model_dir}
    

    未找到 OCR 模型,或 OCR 模型不符合要求。

  • Enemy detection template not found: {name}
    

    未找到精英敌人的识别模板,通常是开发者适配地图时有遗漏,或者命名有误。

  • No suitable version of aScreenCap lib is available
    Please use ADB or uiautomator2 screenshot instead
    

    acreencap 不支持这个模拟器或这个安卓版本,请使用 ADB 或 uiautomator2 截图。