17173首页 游戏资讯 官方公告 正文

《活侠传》【MOD 作者請注意】回想(Log)功能已重新實作

导语
《活侠传》新版本回想功能重做!MOD作者必看:旧接口已移除,新增StoryLogData写入写法,避免MOD报错,速来掌握兼容技巧!

本次更新(v1.0.6001.0)重新製作了回想介面,原本基於 Fungus NarrativeLog 的回想介面已移除。

新的回想除了劇情台詞,也會記錄數值、好感度、技能等變化,並寫入存檔。

用到舊回想功能的 MOD 可能會失效、報錯或顯示異常,請 MOD 作者依照下方說明自行更新。

已移除 

  1. 劇情場景 MainUI 裡舊的回想畫面物件 NarrativeLog 

  2. 場景裡的 Fungus NarrativeLogMenu 

  3. ToggleNarrativeLogView() 已經無法使用。 

  4. 用 FindObjectOfType() 會拿到 null。 

  5. Mortal.Story.StoryManager 的成員:

    • 欄位:_narrativeLogMenu、_narrativeLog、_narrativeView、_logCloseButton 

    • 方法:WaitForLogCanvas() 

    • 用反射存取這些欄位會拿到 null;Harmony patch 這個方法會失敗。 

已變更 

  1. 回想介面改成新的 Mortal.Core.StoryLogPanel,劇情場景(Story)和養成場景(Free)都可以開啟,熱鍵同樣是回想鍵。 

  2. 回想資料改由 Mortal.Core.StoryLogData 管理,並會寫入存檔。 

  3. StoryManager.Log(bool) / ToggleLogButton(bool) 名稱沒變,但內部改成開關新面板。原本 patch 這兩個方法的 MOD 請重新確認。

  4. StoryMainUI.DisplayRelationshipModification 的參數從 (Sprite, int) 改為 (RelationshipStat, int)。 

  5. 畫面上的數值、好感度、技能、道具、風雲史、敵方勢力提示與 message 劇情訊息,現在會同時寫入回想。用 Harmony prefix 略過 StoryMainUI 這些 Display 方法的 MOD,會讓對應紀錄消失。DisplayMessageText(string) 不會寫入回想。

  6. Fungus 的 FungusManager.Instance.NarrativeLog 元件仍然存在並會記錄對話,讀取它的 MOD 可以繼續使用。不過它不再顯示在任何介面上,用 NarrativeLog.AddLine() 加入的內容玩家看不到。 

新的寫入方式 

引用 Mortal.Core.dll 後即可使用: 

[c]using Mortal.Core;[/c]

[c]// 文字紀錄:直接顯示,不寫入存檔(建議 MOD 使用)[/c]

[c]StoryLogData.AddText("要顯示的文字", false);[/c]

[c]// 支援 Unity Rich Text[/c]

[c]StoryLogData.AddText("MOD 訊息", false);[/c]

[c]// 多語系訊息:開啟回想時才依目前語系組成文字[/c]

[c]// StoryLogArg.FromKey 會依語系翻譯,FromValue 直接顯示原值[/c]

[c]StoryLogData.AddMessage("MyMod/Format/Gain", false,[/c]

[c] StoryLogArg.FromKey("MyMod/Item/Sword"),[/c]

[c] StoryLogArg.FromValue("3"));[/c]

[c]// 讀取目前所有紀錄(唯讀),取得與回想介面相同的文字[/c]

[c]ILocaleResolver resolver = LocalizationManager.Instance.LocaleResolver;[/c]

[c]foreach (StoryLogEntry entry in StoryLogData.Entries)[/c]

[c]{[/c]

[c] // 紀錄用到的 KEY 不存在時回傳 false,回想介面也不會顯示這筆[/c]

[c] if (StoryLogFormatter.TryGetContent(entry, resolver, out string content))[/c]

[c] {[/c]

[c] // entry.Type:紀錄類型,entry.Key 的意義依類型而定[/c]

[c] // entry.IsSave:是否寫入存檔[/c]

[c] }[/c]

[c]}[/c]

劇情腳本(Lua)可以用 luamanager.AddStoryLogText("文字"),效果等同 AddText(text, false)。

注意事項

  1. 請優先使用 isSave = false。寫入存檔的紀錄在 MOD 移除後會被隱藏,但資料仍留在玩家存檔裡。

    AddText 的文字無法多語系化,isSave 傳 true 也不會寫入存檔。需要寫入存檔請用 AddMessage 搭配語系 KEY。

  2. 劇情 MOD 請把 luamanager.AutoSave()、luamanager.ToggleSaveButton(1) 放在腳本開頭、任何台詞與數值變化之前,否則讀檔後這些紀錄會在回想中重複出現。

  3. 回想最多保留 300 筆,超過時會從最舊的開始移除。

  4. 不寫入存檔的紀錄在讀檔後會被清除。

  5. 以上不是正式的 MOD API,之後的版本仍可能調整。

【来源:steam】

我想了解这个游戏:
官网 专区 下载 礼包
尊敬的用户也许你已经注意到了我们文章页面进行了大规模的改造和重构,可以点击提交您的满意度或者想法我们会持续改进,给您提供更好的浏览体验! 一键参与
17173APP

扫描下载APP

游戏礼包一键领取

17173微信公众号

扫描关注公众号

每天更新