《命令與征服:重制版》MOD制作圖文教程
- 來源:3DM論壇
- 作者:bbitt
- 編輯:月色如畫
《命令與征服:重制版》是對命令與征服的高清重置,當然一些制作MOD的方法可以繼承,不過一些老版的工具代碼無法使用了,下邊就給大家?guī)怼癰bitt”分享的命令與征服重制版MOD制作圖文教程,大家可以來看一看。
命令與征服重制版MOD制作圖文教程
我們先準備一些東西:
1.有一定儲備的知識:具備一定的計算機編程語言知識,MOD的制作不只是隨便修改一下代碼就OK的。
2.Microsoft Visual Studio:要下載2017版本,2019版與官方提供的開源存在一定沖突。我在附件里會提供下載安裝用的程序。
3.批量UTF8查找工具:我附件會提供一個,你們?nèi)羰怯懈玫恼堊孕袦蕚洹?
4.《命令與征服》MOD開發(fā)用的開源代碼:正版游戲安裝目錄中會有提供。
現(xiàn)在開始教程:
一、下載安裝 Microsoft Visual Studio 2017版,選擇 使用C++桌面開發(fā) 其他用不到,就不要裝了。
右邊的安裝詳細信息里的建議都選上。里面有你對應系統(tǒng)的一些補丁、編程語言包之類的。
然后右下角點 安裝 ,我因為已經(jīng)裝好了所以是“關(guān)閉”。
注意:將你的系統(tǒng)設(shè)置為支持UTF8編碼,如果不設(shè)置的話 Microsoft Visual Studio 會將源碼程序中編碼編譯成其他編碼,生成MOD的時候會報錯。
Win10設(shè)置方法:
1、首先在開始菜單單擊鼠標右鍵,點擊 運行 ;
2、輸入control回車打開控制面板>時鐘和區(qū)域>區(qū)域>管理>更該系統(tǒng)區(qū)域設(shè)置>勾選"Beta 版: 使用 Unicode UTF-8 提供全球語言支持" 。
二、我們找到游戲安裝目錄中的 SOURCECODE 目錄(正版有,盜版有沒有不知道),將其拷貝出來(存哪你自己決定,別問我)。這個目錄就是官方提供的開源代碼程序。
用 Microsoft Visual Studio 打開你拷貝出去的目錄中的 CnCRemastered.sln 文件(文件→打開→項目/解決方案),右邊的解決方案資源管理器就會如圖中所示加載完畢。
里面包含兩個項目,分別對應的是《紅色警戒》和《命令與征服》,請根據(jù)自己的目標來修改。我這里就以《命令與征服》中修改一個單位“jeep”車為例。點開 TiberianDawn 項目,
我們可以看到很多的文件,哪個文件才是我們要找的目標呢?
接下來我們就需要用到 批量UTF8查找工具 了,我附件有提供,如果你們有其他工具請注意,一定要使用支持UTF8的工具。MOD修改時需要用到游戲中的一些要素,我們就通過查找這些要素來定位要找的文件。
這里因為打算要修改的是游戲里單位的屬性,我們已知的要素包含名字“jeep”和購買價格“COST”兩個字符串,我們就搜索這兩組字符串來找文件。
以我提供的修改器為例:
目錄選擇拷貝出去的目錄中 tiberiandawn 目錄,原字符串名改為 JEEP ,不區(qū)分大小寫,選中 僅查找不替換 ,新字符串名留空,點執(zhí)行會生成一個文本文檔,不要關(guān)閉。
將原字符串名改為 COST(購買價格),點執(zhí)行又會生成一個文本文檔。我們現(xiàn)在對比兩份文檔,可以看到這兩種字符串在同一個文件中出現(xiàn)了:UDATA.CPP
窗口切換到Microsoft Visual Studio ,找到之前打開的TiberianDawn 項目下 Source Files 目錄中的 UDATA.CPP 文件并雙擊打開。按 Ctrl+F 彈出搜索框 輸入 jeep 回車,就
找到了我們要搜索的字符段。
我們看下下邊的內(nèi)容:
//符號左邊邊是源代碼,右邊是對該段代碼的描述。
// Jeep (hummer)
static UnitTypeClass const UnitJeep(
UNIT_JEEP,
TXT_JEEP, // NAME: Text name of this unit type. 這個單位類型的名字
"JEEP", // NAME: Text name of this unit type. 這個單位類型的名字(和上一個有什么區(qū)別不知道,沒做測試)
ANIM_FRAG1, // EXPLOSION: Type of explosion when destroyed. 摧毀時的爆炸類型
2, // Build level. 建造、制造等級
STRUCTF_NONE, // Building prerequisite. 建造、制造先決條件
true, // Can this be a goodie surprise from a crate? 這個是否能從“板條箱”中得到(游戲里拾取箱子)
true, // Is a leader type? 是否是領(lǐng)航類型
false, // Only has eight facings? 是否只有8個朝向?(應該是車輛朝的方向:上、下、左、右、左上、右上、左下、右下)
false, // Always use the given name for the vehicle? 始終使用車輛的給定名稱?
false, // Is this a typical transport vehicle? 這是典型的運輸工具嗎?
false, // Can it be crushed by a heavy vehicle? 能被重型車壓碎嗎?
false, // Can this unit squash infantry? 這個單位能壓制步兵嗎?
false, // Does this unit harvest Tiberium? 這個單位能運送泰伯利亞礦石嗎?
false, // Is invisible to radar? 這個單位在雷達上隱形嗎?
true, // Is selectable by player? 這個單位能否被玩家選中?
true, // Can it be a target for attack or move? 是否是可以被移動或攻擊的目標
false, // Is it insignificant (won't be announced)? 是否無關(guān)緊要
false, // Is it immune to normal combat damage? 對正常戰(zhàn)斗傷害免疫嗎?
true, // Is it equipped with a combat turret? 它裝備了戰(zhàn)斗炮塔嗎?
false, // Fires multiple shots in quick succession? 快速射擊是否連續(xù)射出多發(fā)子彈?
true, // Can it be repaired in a repair facility? 它能在修理廠修理嗎?
true, // Can the player construct or order this unit? player可以建造或命令這個單元嗎?
true, // Is there a crew inside? 里面有人嗎?(有人的話擊毀后可以掉出小兵)
false, // Does it have a rotating radar dish? 它有旋轉(zhuǎn)的雷達天線嗎?
false, // Is there an associated firing animation? 是否存在關(guān)聯(lián)的射擊動畫?
false, // Must the turret be in a locked down position while moving? 移動時炮塔是否鎖定不動?
true, // Does it lay tracks while moving? 它在移動時會留下痕跡嗎?
false, // Is this a gigundo-rotund-enormous unit? 是一個 gigundo-圓形-巨大 單元嗎?(不懂)
false, // Is the unit's art as "chunky" cardinal facing only? (不懂)
false, // Is the unit capable of cloaking? 這個單位能隱形嗎?
false, // Does the unit have a constant animation? 該單元是否具有常量動畫?
-1, // AMMO: Number of shots it has (default). 彈藥量 -1是無限
150, // STRENGTH: Strength (in damage points). 裝甲強度(俗稱血量)
2, // SIGHTRANGE: Range of sighting. 視線范圍
1, // COST: Cost to build (Credits). 價格(我這里改成1是因為測試MOD用)
5, // SCENARIO: Starting availability scenario. 可用性開始場景(不明白用法)
80,41, // RISK/RWRD: Risk/reward rating values. 風險與回報評級值(不太懂用法)
HOUSEF_MULTI1|
HOUSEF_MULTI2|
HOUSEF_MULTI3|
HOUSEF_MULTI4|
HOUSEF_MULTI5|
HOUSEF_MULTI6|
HOUSEF_JP|
HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field).
WEAPON_M60MG,WEAPON_NONE, 第一武器 ,第二武器
ARMOR_ALUMINUM, // ARMOR: Armor type 裝甲類型 ALUMINUM 是鋁
SPEED_WHEEL, // MOVE: Locomotion type. 移動類型 WHEEL輪式
MPH_MEDIUM_FAST, // SPEED: Miles per hour. 速度(英里每小時) 格式不太懂,這個應該是個變量可以參考其他單位
10, // ROT: Rate of turn (degrees per tick). 炮塔轉(zhuǎn)動速度
0, // Turret center offset along body centerline. 炮塔中心沿著身體中心線偏移(使用方法不明)
MISSION_HUNT // ORDERS: Default order to give new unit. 訂單:給予新單位的默認訂單。(用法不明)
);
根據(jù)自己的目的進行修改代碼。(我這里只是修改了價格為1)
三、當你把所有要修改的修改完成后我們接下來生成MOD文件
鼠標右鍵點擊 Microsoft Visual Studio 的窗口中右邊解決方案資源管理器中 TiberianDawn 項目,彈出菜單后選擇 生成
生成時會在下邊的輸出窗口有各種提示,如果有錯誤會提示哪里有錯誤,請根據(jù)提示修正問題。如果正常生成完成就會提示 生成: 成功 xx 個,失敗 0 個,最新 0 個,跳過 0 個
這里重說一下,如果你之前沒有將系統(tǒng)修改為支持UTF8編碼,就會提示:
warning C4819: 該文件包含不能在當前代碼頁(936)中表示的字符。請將該文件保存為 Unicode 格式以防止數(shù)據(jù)丟失
生成成功后我們到源代碼目錄中的 bin 目錄下的 Win32 目錄中有4個文件,其中我們要用到的只有 TiberianDawn.dll 和 TiberianDawn.pdb 兩個文件。
MOD文件已經(jīng)準備好了,現(xiàn)在建立一個目錄 bbitt - TD Only (名字你自己決定,這里就以我準備的測試用MOD舉例)。在bbitt - TD Only 目錄下新建一個 DATA 目錄。
將之前準備好的 TiberianDawn.dll 和 TiberianDawn.pdb 兩個文件復制進去。
然后回到 bbitt - TD Only 目錄下新建一個文本文檔,內(nèi)容為:
{
"name": "bbitt - TD Only", MOD名字 bbitt - TD Only ,我怕識別不了就和目錄名字相同
"description": "Changes Hummer cost = 1", MOD簡介 Changes Hummer cost = 1 改變hummer的價額為1
"author": "bbitt", 作者
"load_order": 1, 加載順序
"version_low": 0, 版本低
"version_high": 1, 版本高,與版本低之間貌似一個設(shè)為1,另一個必須設(shè)為0
"game_type": "TD" 游戲類型:泰伯利亞黎明
}
內(nèi)容填好后將其重命名為 ccmod.json 注意擴展名,可不是 ccmod.json.txt 。
這樣MOD目錄就OK了。我們現(xiàn)在需要的就是將其放在游戲?qū)iT的MODS目錄中。具體位置是在 文檔>CnCRemastered>Mods>Tiberian_Dawn 目錄中。
好了我們測試一下,看看我們的MOD是否能加載,是否有效果。進入游戲、選項、模組,OK,我們的MOD已經(jīng)刷新出來了。選中然后點確定,會重啟游戲。
重啟后模組就加載好了,測試一下,完美!
玩家點評 (0人參與,0條評論)
熱門評論
全部評論