只允许主机、特定领袖、特定文明使用特定功能的模组
背景
一直想实现一个在联机模式下,只允许主机,特定领袖,特定文明使用特定功能的模组.
模组介绍
这是一个建筑添加与德国特色工业区下,每回合建筑生产一定的资源并修改城市每回合所产出的资源.
建筑本身加成:黄金 + 5, 食物 + 5, 文化 + 1, 科技 + 1, 信仰 + 5, 生产力 + 5
城市资源加成:黄金 + 116, 信仰 + 116, 文化 + 5, 生产力 + 20, 食物 + 20, 科技 + 5
建筑名称 | 加成类型 | 建筑每回合生产 | 城市每回合生产 |
---|---|---|---|
少年的野心/DefinCivilizationTraitBuilding | 黄金 | +5 | +116 |
食物 | +5 | +116 | |
文化 | +1 | +5 | |
科技 | +1 | +5 | |
信仰 | +5 | +116 | |
生产力 | +5 | +20 |
订阅地址
你可以直接订阅这个模组:Stem 创意工坊
参考链接
思路记录
下午打开 Steam 时收到来自玉皇大帝模组开发者的回复.
墨影斋主人:在你的建筑下添加一个修改器,判定建造条件是 “玩家”,如果是绑定领袖或者文明,就直接用 TraitType
我迫不及待想要去尝试下
打开 HBX(HBuilderX) 检索一下 TraitType
看下这玩意怎么写的.
我在 Civilizations.xml
文件中的 第 200 行 找到了一条相关有可能的但与玉皇大帝作者说的完全不同的代码
1 | <Row CivilizationType="CIVILIZATION_GERMANY" LeaderType="LEADER_BARBAROSSA" |
第 2657 - 2659 行有点像
1 | <Row CivilizationType="CIVILIZATION_GERMANY" TraitType="TRAIT_CIVILIZATION_IMPERIAL_FREE_CITIES"/> |
我没有在修改器文件Modifiers.xml
文件中找到相关代码,据猜测这可能是自由添加,或许游戏源文件没有可能说明那只是一部分示例代码,并且游戏开发商不可能想象到各种可能性.
修改器文件如何编写
第一种可能性
他说的是修改器Modifiers
应该不可能是 ModifierArguments
, BuildingModifiers
这两个修改器.
我没有见过单独绑定领袖的写法,在读一遍修改器文件吧Modifiers.xml
这两千多行代码全都是一个写法
1 | <Types> |
根据这段代码,可以猜测出一种可能性.
- 第六行代码的修改器类型和第 2 行的类型相等,这说明引用的是建筑名称
- 后面第7和8行不知道表达的什么意思
- 可能需要拼接代码
1 | <Types> |
第 10 行完全是文明类型和区域类型的两种结合写法,先构建一下试试效果吧.
试了下其他文明是否有这个建筑,很遗憾,并没有成功绑定领袖
第二种可能性
我打开了领袖Leaders.xml
文件,终于发现了一个比较合理的代码.
换了好几个关键字,终于用巴巴罗萨的英译名在第 828 行找到了LEADER_BARBAROSSA
1 | <Row LeaderType="LEADER_BARBAROSSA" TraitType="TRAIT_LEADER_HOLY_ROMAN_EMPEROR"/> |
应该是这一行了,很遗憾,也不是这个
第三种可能性
我阅读了玉皇大帝的领袖文件,我猜测写法应该是这样.
1 | <Row |
我直接追加到了建筑名称的后面,当我使用其它领袖的时候,他成功的没有显示出来.当然不排除是我写错了,在没有写正确的情况下是不会显示的.
我再试试德国,万一我写对了呢.对吧!
竟然真成功了,再试试一下热座模式,因为仅允许玩家使用和德国使用,看看这两个条件冲突不
还真能用,没有任何冲突,终于完成了
总结
即时在不依靠国内的各种文档,视频教程,依然可以依靠阅读英文文档和官网的帮助以及自己的猜测和摸索一样能达成目标.
虽然我最后实现功能的方式和玉皇大帝模组开发者说的答案有点出入,但还是他提醒了我,我愣是依靠一条信息找到了答案"领袖,文明,特征TraitType
"才完成了我一直以来的目标.