找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4911|回复: 5

【工具分享】INI 连接器和 Rules 等 ini 文件的拆分

[复制链接]
发表于 2023-11-28 20:40:52 | 显示全部楼层 |阅读模式
本帖最后由 Sidoupiar 于 2023-12-17 14:40 编辑

先说 ini 文件的拆分,其实就是 rules,art,sound 和 ai 的拆分,所有内容均已按一定规则拆分并翻译了主要的注释。
此文件拆分主要是为了 INI 连接器服务的,同时也适合于新手了解 rules 的各个模块内容。
(注意:ini 是使用 yr 1.000 的文件进行拆分的,因此会有一些 yr 1.001 才修复的错误,如果用此做 mod,需要对比两个版本的 ini 文件找到并修改对应的代码块的属性值)

工具名称:SI INI 连接器
最新版本:v0.1.5
使用 c# 开发的控制台程序,需要外置 bat 文件启动(命令行代码见下)。

主要功能:
1. 最核心的功能,那当然是连接 ini 文件,把很多很多的 ini 文件(指上述的拆分好的 ini)连接成一个整体文件。拆分成很多文件的好处就是可以多人协作而很少冲突。
2. 自动生成单位图标 pcx 文件,并支持 Phobos 的图标排序(pcx 文件是全彩的,因此需要 Phobos 才能使用此功能)。由于可以自动生成图标,所以单位图标只需要准备一个原始图片就可以了。
3. 版本限制,连接器支持设置部署的版本,支持给代码块和属性添加所属的版本,版本不匹配的代码块和属性不会输出,导出测试版和正式版就只是改一个版本号的事情。
4. 继承,一个块继承另一个块的各项属性,支持嵌套,ARES 和 Phobos 都增加了继承的功能,但是连机器是预编译的,导出的 ini 并不包含继承的代码,游戏可以直接载入,在一些情况下,载入效率会提高。
5. 自动创建,说白了就是反向继承,支持嵌套。说白了,就是告诉连接器,这个块要创建若干个新的块,新的块要继承当前块的各项属性,并支持微调。
6. 自动值,通过已有的属性计算得出指定属性的指,有字符串型和数值型两种类型的自动值,支持多种类型的运算,代码图片见下。
7. 关联校验(检测),可以检测未使用的块。
8. 自动注册,所有的原版类型都可以自动注册(以及武器注册),并且为了支持地图和脚本,在自动注册的同时,也支持手动注册,最终注册的结果会以手动注册为前提进行自动注册。
9. AI 触发和脚本的代码优化,AI 触发可以拆开写(见下图),AI 脚本支持使用单位名称,导出的时候,连接器会把它们变成游戏认识的形式。
10. 可以分别让最终输出的 ini 的代码块和块内属性乱序(支持排除特定块),此种方案可以提高修改 ini 的门槛,而且不会对载入造成影响。栗子:结合上述的继承和自动值功能,可以轻松维护每个弹头对自定义护甲的比例,这样就使得定义数百个护甲来精确控制单位的防御能力成为轻松的工作,而对于修改者来说,他想修改某个弹头的伤害,就要面对完全没有顺序可言的数百个精确的比例值,使得修改难度暴增。
11. 支持移除空行和注释(可选)。

限制(注意事项):
1. 连接器需要专门的符合结构的工程文件夹结构,否则无法正常运行;并不强制要求使用上述的拆分 ini,任何文件结构类似的都可以(主要看文件和文件夹的前缀)。
2. 连接器不检测 ini 的整体完整性,因此只有部分 ini 也可以正常运行。
3. 不能使用“区间注释”,它会造成连接器的读取错误。
4. 如果仅仅是使用乱序和移除空行、注释功能的话,并不需要拆分 ini,直接把 ini 放在【基础设置 -> 自定义设置(每种)】中即可,其他文件删除或保留空文件都行,记得设置好要排除的特定块(注册表也要排除)并关闭自动注册功能。
5. 此工具并不具备把给定的 ini 拆分的功能,只能连接已经拆好的 ini,这是故意的。

搭建工程:
我个人的做法是用 vscode,无需额外设置,把 vscode 的工程文件夹设置为拆分好的 ini 的文件夹根目录即可。

样例工程项目可以参考我的 Github 仓库:
地址:https://github.com/Sidoupiar/Ra2-WinterIsComing

运行图:
由于是控制台程序,所以只有黑窗


bat 代码参考:(路径含有中文需要使用 ansi 编码,windows 下)

"绝对路径\SI INI 连接器.exe" "工程文件夹的绝对路径" "要部署的游戏目录的绝对路径"
PAUSE



自动值举例(12级武器,每级伤害递增):


AI 触发与脚本的代码优化:



关于版本号:
我的习惯是每更新一次就加 0.0.1,满 10 进 1,和什么完成没完成无关,只代表了更新次数,不要在意就好了。

关于源码:
鉴于一些事情的发生,最终决定不放出源码了。

由于文件太大上传不了,所以就走网盘了。以后更新也会直接都放在这个分享文件夹里。
下载地址:
链接:https://pan.baidu.com/s/1MZ2y-d8r_2miqU5m1xUkKA?pwd=0sie
提取码:0sie






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2023-11-29 09:49:26 | 显示全部楼层
大佬太强了!
回复

使用道具 举报

发表于 2023-11-29 15:25:16 | 显示全部楼层
https://bbs.ra2diy.com/forum.php?mod=viewthread&tid=20877
你们都需要一个更优秀的产品设计
回复

使用道具 举报

发表于 2023-11-29 22:51:29 | 显示全部楼层
本帖最后由 ruanhuhu 于 2023-11-29 22:55 编辑

下载下来看到了 可以随便合并拆分的ini
回复

使用道具 举报

 楼主| 发表于 2023-11-29 22:55:16 | 显示全部楼层
kenosis 发表于 2023-11-29 15:25
https://bbs.ra2diy.com/forum.php?mod=viewthread&tid=20877
你们都需要一个更优秀的产品设计 ...

其实我并不打算做任何界面,就一直准备用vscode作为图形编辑器,工具负责提供一些自动化的手段,我希望工具自动生成那些每个单位都有的、相同的或者按照一定规则生成的属性,就比如Name和UIName这种、还有类似于取Cost一半值的Soylent的这种,对于其他属性,我个人更倾向于使用文本编辑器手动维护。选择拆分ini对我来说只是比较省ctrl+f;同时按照文件位置来生成注册表;关联检验只是提示用,不对ini完整性负责,也不打算做得多复杂。这个工具在我手上已经重写了4次,这个是从去年9月开始的版本,我用到现在其实都没啥大的变化,一直以来的维护都是补充新的语句用于提示。
回复

使用道具 举报

发表于 2023-11-30 00:30:30 | 显示全部楼层
为什么它总是提示“未找到工程设置.ini”?我明明把工程设置.ini放到工程文件夹里了。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|管理员邮箱|红警DIY论坛 |网站地图

GMT+8, 2026-8-28 06:28 , Processed in 0.067122 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表