rimworld吧 关注:287,738贴子:5,283,011
  • 7回复贴,共1

rimtalk else语法错误!!

只看楼主收藏回复

完整错误日志:
[RimTalk] Scriban Parse Errors: <input>(7,4) : error : A else condition must be preceded by another if/else/when condition
UnityEngine.StackTraceUtility:ExtractStackTrace ()
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:Verse.Log.Error_Patch3 (string)
RimTalk.Util.Logger:Error (object) (at /Users/chris/RiderProjects/RimTalk/Source/Util/Logger.cs:26)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:RimTalk.Prompt.ScribanParser.Render_Patch1 (string,RimTalk.Prompt.PromptContext,bool)
RimTalk.Prompt.PromptManager:BuildMessagesFromPreset (RimTalk.Prompt.PromptPreset,RimTalk.Prompt.PromptContext,System.Collections.Generic.List`1<RimTalk.Data.PromptMessageSegment>) (at /Users/chris/RiderProjects/RimTalk/Source/Prompt/PromptManager.cs:446)
RimTalk.Prompt.PromptManager:BuildMessages (RimTalk.Data.TalkRequest,System.Collections.Generic.List`1<Verse.Pawn>,string) (at /Users/chris/RiderProjects/RimTalk/Source/Prompt/PromptManager.cs:386)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:RimTalk.Service.TalkService.GenerateTalk_Patch1 (RimTalk.Data.TalkRequest)
RimTalk.Patch.TickManagerPatch:Postfix () (at /Users/chris/RiderProjects/RimTalk/Source/Patch/TickManagerPatch.cs:120)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:Verse.TickManager.DoSingleTick_Patch5 (Verse.TickManager)
Verse.TickManager:TickManagerUpdate ()
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:Verse.Game.UpdatePlay_Patch2 (Verse.Game)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:Verse.Root_Play.Update_Patch1 (Verse.Root_Play)


IP属地:福建1楼2026-03-01 18:21回复
    呜呜呜呜救救孩子


    IP属地:福建来自Android客户端2楼2026-03-01 22:06
    回复
      2026-04-10 11:27:41
      广告
      不感兴趣
      开通SVIP免广告
      这是ai说的:
      这个错误是 RimTalk 模组在使用 Scriban 模板引擎解析提示(prompt)模板时发生的语法错误。具体错误信息:
      ```
      <input>(7,4) : error : A else condition must be preceded by another if/else/when condition
      ```
      意思是在模板的第 7 行第 4 列附近,出现了一个 else 语句,但它前面没有与之配对的 if、else if 或 when 条件。这通常是因为模板中的 Scriban 代码写错了,比如多写了一个 else,或者 if 结构不完整。
      如何解决
      1. 找到出错的模板文件
      RimTalk 的提示模板通常存放在模组文件夹内的某个位置,例如:
      · Windows:RimWorld\Mods\RimTalk\...
      · Mac:~/Library/Application Support/RimWorld/Mods/RimTalk/...
      也可能是用户自定义的提示文件,检查最近修改过的 .scriban 或 .txt 模板文件。
      2. 定位到第 7 行附近
      用文本编辑器打开模板文件,查看第 7 行(或附近)的代码。错误提示中的 (7,4) 表示行号和列号,可以帮助你快速定位。
      3. 检查语法
      确保每个 else 都紧跟在某个 if、else if 或 when 块之后。例如,以下写法是错误的:
      ```scriban
      {{ else }}
      ```
      正确写法应该是:
      ```scriban
      {{ if condition }}
      ...
      {{ else }}
      ...
      {{ end }}
      ```
      或者:
      ```scriban
      {{ if condition1 }}
      ...
      {{ else if condition2 }}
      ...
      {{ else }}
      ...
      {{ end }}
      ```
      4. 常见原因
      · 不小心多写了一个孤立的 else。
      · if 语句没有正确关闭(缺少 end),导致解析器认为后面的 else 没有前置条件。
      · 模板中混用了其他语言的语法,比如把 C# 的 else 直接写进去了。
      5. 测试修复
      修改后保存文件,重新加载游戏或触发 RimTalk 功能,看错误是否消失。
      如果你不确定具体是哪个模板,可以尝试暂时移走或重命名最近修改过的提示文件,让 RimTalk 使用默认模板,以确认问题是否解决。如果问题依然存在,可能是模组自带的模板有 bug,可以尝试更新 RimTalk 模组或联系作者反馈。
      希望这些信息能帮你解决问题!如果还有疑问,可以提供模板中第 7 行附近的代码片段,我可以帮你进一步分析。


      IP属地:贵州来自Android客户端3楼2026-03-02 00:31
      收起回复
        提示词的问题,考虑换一个或者发给我我帮你看看


        IP属地:江苏4楼2026-03-27 18:20
        回复