《命令与征服:重制版》MOD制作图文教程
- 来源:3DM论坛
- 作者:bbitt
- 编辑:月色如画
《命令与征服:重制版》是对命令与征服的高清重置,当然一些制作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已经刷新出来了。选中然后点确定,会重启游戏。
重启后模组就加载好了,测试一下,完美!
玩家点评 (0人参与,0条评论)
热门评论
全部评论