《命令与征服:重制版》MOD制作图文教程

《命令与征服:重制版》是对命令与征服的高清重置,当然一些制作MOD的方法可以继承,不过一些老版的工具代码无法使用了,下边就给大家带来“bbitt”分享的命令与征服重制版MOD制作图文教程,大家可以来看一看。

命令与征服重制版MOD制作图文教程

我们先准备一些东西:

1.有一定储备的知识:具备一定的计算机编程语言知识,MOD的制作不只是随便修改一下代码就OK的。

2.Microsoft Visual Studio:要下载2017版本,2019版与官方提供的开源存在一定冲突。我在附件里会提供下载安装用的程序。

3.批量UTF8查找工具:我附件会提供一个,你们若是有更好的请自行准备。

4.《命令与征服》MOD开发用的开源代码:正版游戏安装目录中会有提供。

现在开始教程:

一、下载安装 Microsoft Visual Studio 2017版,选择 使用C++桌面开发 其他用不到,就不要装了。

右边的安装详细信息里的建议都选上。里面有你对应系统的一些补丁、编程语言包之类的。

然后右下角点 安装 ,我因为已经装好了所以是“关闭”。

注意:将你的系统设置为支持UTF8编码,如果不设置的话 Microsoft Visual Studio
会将源码程序中编码编译成其他编码,生成MOD的时候会报错。 

Win10设置方法:

1、首先在开始菜单单击鼠标右键,点击 运行 ;

2、输入control回车打开控制面板>时钟和区域>区域>管理>更该系统区域设置>勾选”Beta 版: 使用 Unicode
UTF-8 提供全球语言支持” 。

二、我们找到游戏安装目录中的 SOURCECODE
目录(正版有,盗版有没有不知道),将其拷贝出来(存哪你自己决定,别问我)。这个目录就是官方提供的开源代码程序。

用 Microsoft Visual Studio 打开你拷贝出去的目录中的 CnCRemastered.sln
文件(文件→打开→项目/解决方案),右边的解决方案资源管理器就会如图中所示加载完毕。

里面包含两个项目,分别对应的是《红色警戒》和《命令与征服》,请根据自己的目标来修改。我这里就以《命令与征服》中修改一个单位“jeep”车为例。点开
TiberianDawn 项目,

我们可以看到很多的文件,哪个文件才是我们要找的目标呢?

接下来我们就需要用到 批量UTF8查找工具
了,我附件有提供,如果你们有其他工具请注意,一定要使用支持UTF8的工具。MOD修改时需要用到游戏中的一些要素,我们就通过查找这些要素来定位要找的文件。

这里因为打算要修改的是游戏里单位的属性,我们已知的要素包含名字“jeep”和购买价格“COST”两个字符串,我们就搜索这两组字符串来找文件。

以我提供的修改器为例:

目录选择拷贝出去的目录中 tiberiandawn 目录,原字符串名改为 JEEP ,不区分大小写,选中 仅查找不替换
,新字符串名留空,点执行会生成一个文本文档,不要关闭。

将原字符串名改为
COST(购买价格),点执行又会生成一个文本文档。我们现在对比两份文档,可以看到这两种字符串在同一个文件中出现了:UDATA.CPP

窗口切换到Microsoft Visual Studio ,找到之前打开的TiberianDawn 项目下 Source Files 目录中的
UDATA.CPP 文件并双击打开。按 Ctrl+F 弹出搜索框 输入 jeep 回车,就

找到了我们要搜索的字符段。

我们看下下边的内容:

//符号左边边是源代码,右边是对该段代码的描述。

// 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.
这个单位类型的名字(和上一个有什么区别不知道,没做测试)

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? 是否是领航类型

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)? 是否无关紧要

false, // Is it immune to normal combat damage? 对正常战斗伤害免疫吗?

true, // Is it equipped with a combat turret? 它装备了战斗炮塔吗?

false, // Fires multiple shots in quick succession? 快速射击是否连续射出多发子弹?

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? 它有旋转的雷达天线吗?

false, // Is there an associated firing animation? 是否存在关联的射击动画?

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). 炮塔转动速度

0, // Turret center offset along body centerline. 炮塔中心沿着身体中心线偏移(使用方法不明)

MISSION_HUNT // ORDERS: Default order to give new unit.
订单:给予新单位的默认订单。(用法不明)

);

根据自己的目的进行修改代码。(我这里只是修改了价格为1)

三、当你把所有要修改的修改完成后我们接下来生成MOD文件

鼠标右键点击 Microsoft Visual Studio 的窗口中右边解决方案资源管理器中 TiberianDawn 项目,弹出菜单后选择
生成

生成时会在下边的输出窗口有各种提示,如果有错误会提示哪里有错误,请根据提示修正问题。如果正常生成完成就会提示 生成: 成功 xx 个,失败 0 个,最新
0 个,跳过 0 个

这里重说一下,如果你之前没有将系统修改为支持UTF8编码,就会提示:

warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

生成成功后我们到源代码目录中的 bin 目录下的 Win32 目录中有4个文件,其中我们要用到的只有 TiberianDawn.dll 和
TiberianDawn.pdb 两个文件。

MOD文件已经准备好了,现在建立一个目录 bbitt – TD Only (名字你自己决定,这里就以我准备的测试用MOD举例)。在bbitt – TD
Only 目录下新建一个 DATA 目录。

将之前准备好的 TiberianDawn.dll 和 TiberianDawn.pdb 两个文件复制进去。

然后回到 bbitt – TD Only 目录下新建一个文本文档,内容为:

{

“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, 版本高,与版本低之间貌似一个设为1,另一个必须设为0

“game_type”: “TD” 游戏类型:泰伯利亚黎明

}

内容填好后将其重命名为 ccmod.json 注意扩展名,可不是 ccmod.json.txt 。

这样MOD目录就OK了。我们现在需要的就是将其放在游戏专门的MODS目录中。具体位置是在
文档>CnCRemastered>Mods>Tiberian_Dawn 目录中。

好了我们测试一下,看看我们的MOD是否能加载,是否有效果。进入游戏、选项、模组,OK,我们的MOD已经刷新出来了。选中然后点确定,会重启游戏。

重启后模组就加载好了,测试一下,完美!

类似文章