{"record":{"id":"ce22beebb3ef5e6a","repo":"babalae/better-genshin-impact","slug":"error-ce22be","errorCode":null,"errorMessage":"没有可用战斗脚本","messagePattern":"没有可用战斗脚本","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"BetterGenshinImpact/GameTask/AutoFight/AutoFightTask.cs","lineNumber":295,"sourceCode":"        if (!combatScenes.CheckTeamInitialized())\n        {\n            throw new Exception(\"识别队伍角色失败\");\n        }*/\n\n\n        // var actionSchedulerByCd = ParseStringToDictionary(_taskParam.ActionSchedulerByCd);\n        var combatCommands = _combatScriptBag.FindCombatScript(combatScenes.GetAvatars());\n        // 命令用到的角色名 筛选交集\n        var commandAvatarNames = combatCommands.Select(c => c.Name).Distinct()\n            .Select(n => combatScenes.SelectAvatar(n)?.Name)\n            .WhereNotNull().ToList();\n        // 过滤不可执行的脚本，Task里并不支持\"当前角色\"。\n        combatCommands = combatCommands\n            .Where(c => commandAvatarNames.Contains(c.Name))\n            .ToList();\n        if (commandAvatarNames.Count <= 0)\n        {\n            throw new Exception(\"没有可用战斗脚本\");\n        }\n\n        // 新的取消token\n        var cts2 = new CancellationTokenSource();\n        ct.Register(cts2.Cancel);\n\n        combatScenes.BeforeTask(cts2.Token);\n        TimeSpan fightTimeout = TimeSpan.FromSeconds(_taskParam.Timeout); // 战斗超时时间\n        Stopwatch timeoutStopwatch = Stopwatch.StartNew();\n\n        // 记录开战时间，供\"开战前一段时间阻断战斗结束检查\"使用\n        FightStartTime = DateTime.Now;\n\n        Stopwatch checkFightFinishStopwatch = Stopwatch.StartNew();\n        TimeSpan checkFightFinishTime = TimeSpan.FromSeconds(_finishDetectConfig.CheckTime); //检查战斗超时时间的超时时间\n\n\n        //战斗前检查，可做成配置","sourceCodeStart":277,"sourceCodeEnd":313,"githubUrl":"https://github.com/babalae/better-genshin-impact/blob/a7cb36712dcb409be610257d877fcea3597e9d6b/BetterGenshinImpact/GameTask/AutoFight/AutoFightTask.cs#L277-L313","documentation":"Error \"没有可用战斗脚本\" thrown in babalae/better-genshin-impact.","triggerScenarios":"FindCombatScript 返回的指令涉及的角色名与当前队伍角色取交集后为空，即所有战斗脚本的角色都不在当前队伍里（且不支持“当前角色”写法）。","commonSituations":"战斗脚本目录里的txt脚本与实际上场队伍不匹配，例如脚本写的是别的队伍角色名。","solutions":["在自动战斗配置中选择或创建可用的战斗脚本","检查战斗脚本文件是否存在且格式正确","确认队伍角色与脚本中的角色匹配"],"exampleFix":"更换/编写与当前队伍角色一致的txt战斗脚本，确认脚本中角色名（或别名）与游戏内队伍一致。","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a7cb36712dcb409be610257d877fcea3597e9d6b","analyzedAt":"2026-08-13T16:44:57.548Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}