在運行時載入protobuf(.data)檔。
所有模組均開源於
GitHub .
特別感謝
@chenstack 對於 CSharpLoader
以下文字主要針對開發人員。
如果您是用戶,您實際上不需要了解有關此模組的詳細資訊。
如果另一位作者說他的 mod 需要此 mod,您只需要遵循他的安裝說明。
並且知道 Ctrl+F7 是重新載入熱鍵。
如何載入.Data檔: 劇透:
展示
1. 安裝
CSharp載入器 和這個模型。
2. 使用以下方式編輯任何有效的 .data 文件
資料編輯器
將其重新命名為「[TableName]_[Comment].data」的形式。
例如:
EquipAttrDesc_青田葫蘆頂部改為10口.data FUStSuitDesc_lalalalal_abcd_imgood.data FUStBuffDesc_MyMod.數據 (“-”後面的部分可以不寫,例如修改“FUStBuffDesc-Item.data”,可以命名為“FUStBuffDesc_MyName.data”)
錯誤範例:
ABC_青田葫蘆改為最高10口.data //錯誤。必須以原始表名開始(EquipAttrDesc) EquipAttrDesc_青田葫蘆頂改為10口aabc //錯誤。必須以.data結尾 FUStSuitDesc_lalalalal_abcd_imgood.bak.data //錯誤。 “.bak.data”將自動忽略。 2.5.(可選)如果將資料檔案重新命名為“[TableName]_[Comment].insert.data”,則任何記錄都會插入到第一個空行,並可能獲得一個新的 ID。
3. 將資料檔案放在一個資料夾中。將資料夾複製到 BlackMythWukong\b1\Binaries\Win64\CSharpLoader\Mods\ProtobufLoader\[AnyFolder]。
例如:
-- b1\Binaries\Win64\CSharpLoader\Mods\ProtobufLoader --ProtobufLoader.dll -- 300_青田葫蘆改為10口上限 -- EquipAttrDesc_青田葫蘆改為最高10口.data -- 200_錦鱗套加2條套裝效果_日金烏套改為大量攻防 -- EquipAttrDesc_錦鱗套加2條效果_日金烏套改為加1800攻擊2_修改屬性.data -- FUStSuitDesc_錦鱗套加2條套裝效果日金烏套裝改為加1800攻擊1_修改套裝.data 4. 運行遊戲。
此模組將在正確的資料夾中載入 .data 檔案。
為什麼你需要這個? 此模組可以逐一載入記錄,而不是覆寫整個表。
如果模組製作者製作“.data”模組而不是“.pak”模組,那麼它們很可能不會相互衝突。
(此 mod 不會神奇地刪除所有衝突!即使您安裝了此 mod,您的舊“pak”mod 仍然會像以前一樣發生衝突。)
對於模組製作者,您可以修改 .data 檔案並在運行時重新載入它。節省您為使用者打包、調試或合併打包的時間。
注意:不是說你裝了這個mod,哪個衝突的mod突然不衝突了! !
意思是以後修改資料類的mod可以直接以data檔的形式發布並以該mod加載,就不會像以前的pak檔那樣極易衝突了
還省了把data檔備份成pak的工夫
筆記: 0.重新載入並重置 按 Ctrl+F7 重新載入資料檔。 記憶體中的數據將會重置 (自 v1.1 起)重新載入之前。 但不可克隆的資料類型將不會被重置。 此 mod 將在重新載入時修改 prorobuf 並刷新 GameDB 中的快取。 按 Ctrl + F8 重置。 當載入資料檔案時,此模組會儲存修改前的值。 重置時,此模組會將儲存的記錄寫回。 如果另一個模組在載入和重置之間修改了該模組修改的記錄,則這些變更將會遺失。 按Ctrl+F7重新載入時,此模組將在重新載入前自動重置。 按 Ctrl+F9 進行超級重置。 從虛擬檔案重新載入所有內容。 當「重置」時,本模組會嘗試僅恢復已修改的資料。當「超級重置」時,本模組會丟棄所有內容,並從 .pak 檔案載入(就像遊戲啟動時一樣)。 如果沒有錯誤或載入失敗或另一個模組更改protobuf,「重置」和「超級重置」應該具有完全相同的效果。1.載入順序: 此 mod 載入子資料夾
字典順序 (又稱字典順序)。
例如,資料夾「100_abc」必須在「200_lalla」之前載入。
不會遞歸搜尋資料夾。例如,「CSharpLoader/Mods/ProtobufLoader/BestSuit/MoreSuitSubDir/」下的檔案將不會載入。
強烈建議以 [Number]_[Name] 的形式命名您的資料夾,以防您需要按特定順序載入。
對於同一資料夾中的檔案:
此模型首先按字典順序載入所有“.data”(不包括“.insert.data”或“.bak.data”)。
然後這個模組會按字典順序載入所有「.insert.data」。
2.載入規則 當“.data”中的記錄被載入時。
如果記憶體中的表中沒有該項,則會將其新增至表中。
如果它已經在記憶體中的表中,那麼舊記錄將是
完全 已替換 新的。
意味著您可以有多個修改同一張表的資料文件,只要它們不修改相同的記錄,它們就不會發生衝突。
如果他們確實修改了同一筆記錄,
最後裝載的獲勝者。 當“.insert.data”中的記錄被載入時。
如果記憶體中的表中沒有該項,則會將其新增至表中。
如果它已經在記憶體中的表中,則增加它的ID,直到新的ID不在表中。修改它的ID並使用新的ID將其插入到表中。
該模組將在本地化初始化後載入檔案。
當此模組被CSharpLoader載入時,如果GameInstance和GSLocalization都已完成初始化,則此模組將立即載入檔案。
否則,一旦 GSlocalization 初始化,此模組就會載入檔案。
3.這個mod修改了什麼? 一般遊戲中的數據存在於:
A) .pak 中的虛擬檔案。
B)GSProtobufRuntimeAPI/BG_ProtobufDataAPI 在記憶體中快取。
C) GameDBRuntime/BGW_GameDB 快取在記憶體中
D)記憶體中的其他實例
遊戲開始時,遊戲將A中的所有資料讀取到B中,然後在C中建立部分資料的快取。
在遊戲過程中,有的實例直接從B/C讀取,有的實例在初始化時在D中建立B/C的緩存,稍後再從D讀取。
當您使用傳統的“pak” mod時,您實際上是在覆蓋 A。
當這個模組載入模組時,它
修改 B 並強制重建 C。 4.2.設定檔: ProtobufLoader/Config.json:
住口 :如果為 true,則減少日誌輸出。預設為 false。
如果您有大量資料檔案需要加載,請啟用此功能以提高效能。
閉嘴 :如果為 true,則進一步減少日誌輸出。預設為 false。
閉嘴 :如果為 true,則除非遇到錯誤,否則不會輸出任何日誌。預設為 false。
啟用中文控制台日誌:將 CSharpLoader 控制台的代碼頁設定為 UTF-8 正確顯示中文控制台日誌。預設為 True。 (如果您需要控制台中顯示其他字符,請關閉此功能。)
4.3.注意事項: 如果你想修改表中的幾筆記錄。
您的資料檔案應該包含
僅有的 修改後的記錄以避免衝突。 (因為這正是使用此載入器的全部意義所在。)
(如果您需要 DataEditor 中的「刪除除此以外的任何內容」按鈕。
您可以等待DataEditor作者加入它。
或使用
我的資料編輯器的分支 。 )
5. 不支援以下表格。
劇透:
展示
UISettingControlDesc 滾動描述 活動任務描述 活動描述 戰鬥技能描述 FUStCollectionSpawnInfoDesc
6.注意名稱相同但 ID 不同的項目。 例如,
一種藥物可能在項目表中可能有同名的配方項目和藥物項目,但它們是不同的。
一個裝備在裝備表中可以有每個等級的多個記錄。
一個氣力被動效果每一級也可以有多筆記錄。
ETC。
7.注意初始化時僅從 desc 表讀取的資料。 例如,
TransQiTianDaShengConfigDesc表用於初始化BUS_QiTianDaShengComp。
如果您在開始遊戲後重新載入表格,它可能不會生效,因為尚未再次呼叫 init 函數。
資料檔案範例: 您可以在文件頁面下載以下範例。
100_增加一個珍玩套裝(君子牌風鐸仙篆)增加火抗
200_錦鱗套加2條套裝效果_日金烏套改為大量攻防
300_青田葫蘆改為10口上限
400_金箍棒(大聖套)加入天龍棍效果
500_行者套改為1件即可觸發
600_InsertData_外掛程式全域設定和被動技能映射
將現有模組轉換為資料檔案版本的範例 您可以使用
資料編輯器 檢查他們到底做了什麼。
(請注意,一些範例修改了同一個表,它們可以同時工作。
並且每個範例資料檔案僅包含必要的記錄。 )
手動安裝: 0.安裝 CSharp載入器 (>= v0.0.8) (請注意,此 mod 的較低版本可能無法與最新的 CSharpLoader 一起使用。如果您想升級 CSharploader,建議也升級此 mod) 1.下載zip檔並解壓縮。
2.
將 [ModName] 資料夾複製到
[遊戲資料夾]\b1\Binaries\Win64\CSharpLoader\Mods\ 目錄結構應該是這樣的:
--b1\Binaries\Win64\CSharpLoader\Mods\
-- [模組名稱]
-- [模組名稱].dll
透過 Vortex 安裝: 支援