最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

[KSP] Module Manager Patch 基礎(chǔ)教程

2023-05-13 22:52 作者:逗比去哪2  | 我要投稿

前言

本篇內(nèi)容為 Module Manager 的基礎(chǔ)語法教程,閱讀完本篇你將學(xué)會:

  1. 認(rèn)識坎巴拉太空計劃中的 CFG 配置文件

  2. Module Manager 的基礎(chǔ)語法 - 增、刪、改

  3. 如何運(yùn)用 Module Manager 的機(jī)制對配置文件進(jìn)行操作。

總結(jié):你將能看懂一些簡單的 MM patch 文件內(nèi)容。

本教程所用的例子均在游戲版本 1.12.5,Module Manager 版本 4.2.2 的環(huán)境下進(jìn)行編寫。

如無說明,本文的所有給出的 Patch 示例的執(zhí)行順序按從上到下執(zhí)行。

1.CFG 配置文件

CFG 配置文件,即文件名后綴為 .cfg 的文件,這是文本文件,可以使用任意的文本編輯器打開,如系統(tǒng)自帶的記事本就能夠直接打開(但一般情況下最好不要用記事本打開)。

坎巴拉使用了大量 CFG 配置文件來存儲一系列由它自己定義的、統(tǒng)稱為 ConfigNode 的一種數(shù)據(jù)結(jié)構(gòu)里的信息這些 ConfigNode 數(shù)據(jù)結(jié)構(gòu)存儲了大量游戲中需要用到的數(shù)據(jù),比如部件、合同、存檔、本地化文本等數(shù)據(jù)內(nèi)容,這些數(shù)據(jù)內(nèi)容在本文中統(tǒng)稱為【游戲數(shù)據(jù)庫】。CFG 里的內(nèi)容可以看做從各種 ConfignNode 里序列化出來的內(nèi)容,并且能夠被反序列化讀回到相應(yīng)的 ConfigNode 中。在 CFG 中 ConfigNode 的一般形式如下:

其中:

  • NODE {} 就代表它是一個 ConfigNode,NODE 可看做為類型名,這是一個類型名為 NODE 的一個 ConfigNode

  • Value 表示是該 ConfigNode 里一個 Key (鍵),被賦值為 value

然后,ConfigNode 中除了可以包含鍵之外,也可以包含 ConfigNode,像這樣:

  • ?NODE {} 現(xiàn)在包含了另一個 ConfigNode ,即 NODE2 {}

游戲中使用 PART {} 來代表存儲部件數(shù)據(jù),比如原版游戲目錄中的 GameData/Squad/Parts/Command/mk1poad_v2/mk1Pod_v2.cfg 的部件(Mk1 指令艙)文件:

在該 CFG 配置文件中:

  • PART {} 代表這是一個部件類型的 ConfigNode,為了方便行書,后續(xù)將用【PART 結(jié)點】代替。

  • name、module、author 正如開頭例子的 Value,為 PART 結(jié)點下的“鍵”

  • MODEL {} 又是一個 ConfigNode ,是 PART 結(jié)點下的子 ConfigNode

游戲在啟動時,會讀取位于 GameData 下的所有文件夾和子文件夾內(nèi)的 CFG 配置文件中的內(nèi)容,此時將文件內(nèi)容通過反序列化讀入到內(nèi)存中。

為了方便行書,后續(xù)出現(xiàn)的 ConfigNode 將用 XX 結(jié)點代替,如 PART {} 將用 PART 結(jié)點代替。

Module Manager 基礎(chǔ)語法

Module Manager (簡稱 MM,下同)是一個能夠在游戲載入時對 CFG 配置文件做出修改的 Mod 。MM 會讀取某一類 CFG 配置文件內(nèi)容,對指定的 ConfigNode 進(jìn)行修改,這類 CFG 配置文件稱為 MM Patch ,MM Patch 必須要在安裝了 MM 才會起作用,在原版中不會認(rèn)為這類 CFG 配置文件中的內(nèi)容合法,也不會對里面的內(nèi)容做出反應(yīng)。MM Patch 需要遵守特定的語法,即 MM 語法,才能正確對相應(yīng)的 ConfigNode 做出修改。

要對 ConfigNode 做出修改,無非遵循增、刪、查、改 4 個方面,MM 提供了多種操作符來實現(xiàn)這些操作,但首先,需要認(rèn)識 MM patch 的一般形式:

本篇作為基礎(chǔ)教程,先不管后面的限定操作符是何物,只看前面內(nèi)容。

  • [操作符],即為要對該 ConfigNode 進(jìn)行的操作,比如刪除、或修改。MM 提供了下列操作符:

    1. 如果留空,則為插入操作,即添加數(shù)據(jù)到游戲中

    2. @ 代表修改操作,不算插入操作,這個操作符是用的最多的

    3. +$ 代表復(fù)制操作,實際應(yīng)用中很少,但也還是很有用

    4. -! 代表刪除操作

    5. % 是一個特殊的操作,當(dāng)要查詢的目標(biāo) ConfigNode 存在時進(jìn)行修改,當(dāng)不存在時則會創(chuàng)建一個新的 ConfigNode

  • [[ConfigNode][ConfigNode 的 name]],要進(jìn)行操作的目標(biāo) ConfigNode ,MM 會根據(jù)提供的結(jié)點內(nèi)的 name 這個特殊"鍵"進(jìn)行查詢到該結(jié)點,然后根據(jù)里面的內(nèi)容對當(dāng)前游戲載入的數(shù)據(jù)中進(jìn)行查詢,支持通配符模糊查詢。

?下面將舉例說明:

文件 TESTNODE.cfg:

游戲首先會添加 TESTNODE 到游戲數(shù)據(jù)庫,該步驟在 MM 接管之前。

現(xiàn)有一個 MM Patch :

文件 TESTPATCH1.cfg

此時 MM 讀取到該文件時,會現(xiàn)在游戲數(shù)據(jù)庫里篩選出類型為 TESTNODE 的結(jié)點,然后找出 name 的值等于 testName 的結(jié)點,然后根據(jù) @ 操作符,進(jìn)行編輯操作,添加 TEST2 的鍵到該結(jié)點中,此時游戲數(shù)據(jù)庫中的 TESTNODE 內(nèi)容會變成:

接著有第二個 MM Patch:

文件 TESTPATCH2.cfg

該 Patch 會復(fù)制一份上面 TESTNODE 的副本,然后對里面的 name 和 TEST 進(jìn)行相應(yīng)的修改(@ 操作符),且插入了一個 SUBNODE 類型(前面無操作符代表插入操作)的結(jié)點。

此時游戲數(shù)據(jù)庫中會存在 2 個 TESTNODE,內(nèi)容如下:


現(xiàn)有第三個 MM Patch:

文件 TESTPATCH3.cfg

該文件包含了 2 個 patch 操作,第一個 patch 將 name = testName 的 TESTNODE 中的 TEST2 刪除;第二個 patch 將 name = copyTestNode 的 TESTNODE 中的 SUBNODE 結(jié)點刪除。

游戲中數(shù)據(jù)庫內(nèi)容現(xiàn)在變成了:

這即是 ! 刪除操作符的含義。

現(xiàn)在進(jìn)入第 4 個patch:

文件 TESTPATCH5.cfg

和 TESTPATCH4.cfg 一樣,該文件也包含了 2 個 patch 操作:

  • 第一個 patch 將在 name = testName 的 TESTNODE 結(jié)點創(chuàng)建一個新的鍵 TEST2 并賦值為 V1V

  • 第二個 patch 則修改當(dāng)前已存在的鍵 TEST2 的值為 V1V

即現(xiàn)在游戲數(shù)據(jù)庫中內(nèi)容為:

這就是 % 操作符的用法含義。

運(yùn)用示例

場景1:對某個部件的名稱改成自己想要的。以原版【PPD-12穹頂艙】部件為例,將名稱改為【我的穹頂艙】。

首先打開原部件文件,獲得 PART 結(jié)點的 name

原部件文件內(nèi)容(部分摘取)

要更改名稱即更改 PART 里面的 title 鍵,所以該 MM patch 為

文件 myPartTitlePatch.cfg

拓展場景:更改深層結(jié)點,如增大該部件的動量輪扭矩大小至 20,且耗電量為 0

MM patch 改寫為:

場景2:更改 Mod 的設(shè)置文件,做到不直接動原文件的情況下對 Mod 進(jìn)行設(shè)置

示例 Mod - KSP Community Fixes

目的:禁用掉 PAWStockGroups 的功能即取消對原版部件動作菜單(PAW)的內(nèi)容進(jìn)行分組

禁用前的部件動作菜單如圖:

簡潔,但查看信息繁瑣

禁用功能后的部件動作菜單如圖:

雜亂,但一目了然

Mod 設(shè)置文件(GameData\KSPCommunityFixes\Settings.cfg)內(nèi)容(節(jié)選)

Patch 文件內(nèi)容:

patch 簡單解釋:

  • MM 首先在游戲數(shù)據(jù)庫查找到 KSP_COMMUNITY_FIXES 這個 ConfigNode ,然后進(jìn)行@操作,即編輯。

  • :AFTER[KSPCommunityFixes] 表示該 patch 將在 mod 中的所有包含的 patch (如果有的話)應(yīng)用后才開始應(yīng)用該 patch

  • 將 PAWStockGroups 的值從原來的 true 改成 false,即禁用該功能

基礎(chǔ)教程是不是非常簡單呢?那么,你學(xué)廢了嗎?

[KSP] Module Manager Patch 基礎(chǔ)教程的評論 (共 條)

分享到微博請遵守國家法律
壤塘县| 镇康县| 灵川县| 西贡区| 石嘴山市| 新巴尔虎右旗| 阿克苏市| 睢宁县| 木兰县| 志丹县| 平乐县| 林甸县| 永和县| 乌鲁木齐市| 苏尼特右旗| 达孜县| 庆元县| 塔河县| 武安市| 出国| 剑阁县| 衡南县| 左云县| 株洲市| 广德县| 凌云县| 长岭县| 同江市| 邓州市| 兴城市| 湘潭市| 茶陵县| 南丹县| 芦山县| 隆尧县| 宝应县| 宁远县| 乾安县| 五家渠市| 黔东| 海林市|