bbitt 发表于 2020-6-9 19:15

【国内首发】《命令与征服:典藏版》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请参考http://www.winwin7.com/JC/16635.html

二、我们找到游戏安装目录中的 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已经刷新出来了。选中然后点确定,会重启游戏。



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




因文件大附件上传不了所以测试用MOD放在度盘里了: https://pan.baidu.com/s/1M-OhWE4tYczgpEShmZ0y0w 提取码: **** Hidden Message *****
**** Hidden Message *****


w74242424 发表于 2021-2-11 17:56

66666666666666666666666666

痞子东 发表于 2021-3-1 20:18

这东西找了好久勒,谢谢!!

ping331333 发表于 2021-7-13 02:06

多谢学习中

hrehfvbgserh 发表于 2021-7-15 00:11

看看隐藏内容是什么!谢谢!厉害了!先收藏,再回复!谢谢!

皮尔卡丹 发表于 2021-11-28 21:29

感谢分享

vicky1210 发表于 2022-10-21 22:36

啊啊啊啊啊啊啊啊啊啊啊

bauult 发表于 2023-3-17 20:07

谢谢分享!

hh7622712 发表于 2024-12-14 15:08

111111111111111111111111111111111111
页: [1]
查看完整版本: 【国内首发】《命令与征服:典藏版》MOD的图文制作教程