将近两千条结构完全一样的条目,却没有一行解释这些数字是什么意思。下面把每一个值讲清楚:它做什么、以什么为单位、改了会怎样。
文中所有数字都来自 Bohemia 官方原版切尔诺俄罗斯 types.xml 及其 1970 条条目——是数出来的,不是估出来的。
一句话速查
- nominal — 经济系统希望世界上同时存在多少个
- min — 数量降到这个值时,补货到
nominal - restock — 补货前的等待秒数
- lifetime — 无人触碰的物品多少秒后消失
- quantmin / quantmax — 刷出时的装填百分比(
-1= 默认) - cost — 刷新优先级,默认 100,基本不用动
- flags — 哪些位置会算进
nominal - category — 粗分的物品大类
- usage — 在哪些类型的地点刷新
- value — 在地图的哪些 Tier 分区
- tag — 建筑内部哪一类刷新点
如果只是想让某件物品更常见或更稀有,用到的只有三个:nominal、min 和 restock。
文件在哪
mpmissions/dayzOffline.chernarusplus/db/types.xml
它是中央经济系统的库存清单:一件物品最多能存在多少个、在地上能躺多久。它不决定东西落在哪个货架上——哪些建筑有哪些刷新点写在 mapgroupproto.xml 里,哪个区域属于哪个 Tier 则由地图决定。
一条条目长这样
<type name="AK101">
<nominal>4</nominal>
<lifetime>28800</lifetime>
<restock>3600</restock>
<min>2</min>
<quantmin>30</quantmin>
<quantmax>80</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="weapons"/>
<usage name="Military"/>
<value name="Tier3"/>
<value name="Tier4"/>
</type>元素顺序沿用 Bohemia 自己的写法:nominal、lifetime、restock、min、quantmin、quantmax、cost、flags、category、tag、usage、value。保持这个顺序,两个文件版本之间的差异对比才好读。
逐个数值详解
name
物品的类名,必须和游戏里的写法完全一致。
也就是 AK101,不是「AK-101」。写一个不存在的名字,物品就永远不会刷新——这条条目等于没写。
nominal — 目标数量
经济系统希望世界上同时存在多少个。
这是上限,不是承诺。能不能真的达到,取决于是否有足够匹配的刷新点——见 usage 和 value。
nominal = 0表示经济系统永远不会自己刷这件物品。
原版文件里的情况
1970 条中有 873 条是 nominal = 0:需要玩家喷漆才出现的颜色变体、宰杀动物才得到的肉,以及只能通过事件进入世界的物品。
min — 补货阈值
当游戏中的数量降到这个值,经济系统就重新补到 nominal。
所以 min 永远要低于 nominal。两者之间的差距决定节奏:nominal 4 / min 2 让存量在二到四之间波动、成批补货;nominal 4 / min 3 把存量控得更紧,触发补货的次数也更多。
为什么有些原版条目的 min 大于 nominal
这种情况有 172 条——而且这 172 条全部都是 nominal = 0。不是错误,只是毫无作用:没有目标数量就没有补货,阈值也就无从触发。
restock — 补货前的等待时间
放入新物品之前要经过的秒数。
1800 是 30 分钟,3600 是一小时。0 不等于「立刻」,而是「经济系统下一轮时」——服务器按周期运行,不是每秒都跑。
restock是让物资显得更稀缺、却不减少总量的那根杠杆:被搜刮一空的军事基地会空上好一阵子。
lifetime — 东西能在地上放多久
无人触碰的物品消失前的秒数。
玩家的任何交互都会让计时重新开始。lifetime 设得过短会间接减少游戏中的数量,因为东西在被人找到之前就消失了。
常见取值以及 0 的含义
14400(4 小时)—— 1079 条28800(8 小时)—— 415 条1800(30 分钟)—— 220 条3888000(45 天)—— 帐篷、油桶、航海箱、瞭望塔:基地建造的持久化时长
lifetime = 0 出现 66 次,无一例外都是集装箱、残骸这类静态世界物体(Land_…、StaticObj_…)。对普通物资来说,写 0 是配置错误。
quantmin 和 quantmax — 刷出来装多满
以百分比表示的装填程度,适用于一切有内容物的东西:子弹、水、燃料、罐头。
刷新时服务器在两者之间随机取值。-1 表示「不适用」,物品按自身默认值刷出。
以 AK101 为例,quantmin 30、quantmax 80:这把枪刷出时弹匣装填量在 30% 到 80% 之间。
怎么确定这是百分比
整个原版文件里没有任何一个数值超过 100。所以这确实是百分比,而不是件数。
cost — 刷新优先级
当多件物品都符合条件时,用来决定谁占用空闲刷新点的权重。默认 100。
最诚实的建议:别动它。在 1970 条条目中,Bohemia 自己只有一次偏离了 100——
Mag_SVD_10Rnd是 1000。要调频率,请用nominal、min和restock。
flags — 哪些会被计入
这六个开关决定哪些位置会算进 nominal。
调整物资时出错最多的地方就在这里。
count_in_map— 摆在世界里的物品(原版 1970 条中有 1902 条开启)count_in_cargo— 载具和容器里的物品(开启 47 次)count_in_hoarder— 帐篷、油桶、埋藏箱子里的物品(开启 31 次)count_in_player— 玩家随身携带的物品(开启 55 次)crafted— 物品由玩家制作产生,而不是经济系统刷出(开启 313 次)deloot— 物品来自动态事件而非建筑(开启 47 次)
只要某个开关是 0,物品在那个位置对经济系统就是隐形的。
为什么营地堆满了服务器还在不停刷新
因为原版里 count_in_hoarder 几乎都是 0:帐篷里的东西根本不算数。想让稀有物品真正保持稀有,就得动这几个开关——副作用是囤积的物资从此会拖慢所有人的补给。
crafted 和 nominal = 0 是一对:全部 313 条 crafted="1" 的条目同时也是 nominal = 0。
典型的 deloot 物品有 AK74、FAMAS、M79 和 GasMask——直升机残骸的经典产物。
category — 粗分的物品大类
八选一:weapons、clothes、tools、food、containers、explosives、books、lootdispatch。
特例 lootdispatch
原版 174 条,基本上是车门之类的载具部件。没理由乱动它,汽车零件就会消失。另有 348 条完全没有分类:感染者和静态物体不需要。
usage — 会在哪些地点出现
允许物品出现的地点类型。可以写多个,彼此是「或」的关系。
切尔诺俄罗斯有十七种:Military、Police、Medic、Firefighter、Industrial、Farm、Coast、Town、Village、Hunting、Office、School、Prison、Lunapark、SeasonalEvent、ContaminatedArea 和 Historical。
没有
usage,物品在正常的物资循环里哪儿都不会出现——对制作类和事件类物品来说,这恰恰是正确的。
不同地图,不同取值
利沃尼亚和萨哈尔有 Special 和 Underground,却没有 Historical。你的地图认识哪些值不写在 types.xml 里,而是写在任务文件夹的 cfglimitsdefinition.xml 中。那里没有的值,在这张地图上就是无效的。
value — 地图的 Tier 分区
物品能出现到内陆多深的位置。
Tier 1 是新角色出生的海岸线;Tier 越高越靠内陆、军事色彩越浓。没有 value,物品在任何分区里都不被允许——效果和缺少 usage 一样。
每张地图各有哪些 Tier
- 切尔诺俄罗斯:Tier1 到 Tier4,外加
Unique - 萨哈尔:Tier1 到 Tier4,外加
Unique - 利沃尼亚:只有 Tier1 到 Tier3,外加
Unique
在利沃尼亚的文件里写 Tier4,在那张地图上根本无效。
tag — 建筑内部的位置
floor、shelves 或 ground 用来限定使用哪一类刷新点。
原版 1970 条里只有 281 条用到它;不写就等于所有点位都允许。也就是说 tag 只会收窄范围,永远不会扩大。
常见的翻车方式
把数字调高却什么都没变。 nominal 只是上限。如果地图上没有足够多 usage 和 value 都匹配的刷新点,目标数量永远达不到。给一件纯 Military 物品写 nominal 500,得到的也不会超过军事点位所能容纳的数量。
一次改一大堆。 同时动 nominal、min、restock 和 lifetime,事后就说不清是哪一项起了作用。每轮只改一个值,然后重启、观察。
指望立刻见效。 经济系统不会在玩家附近清理或刷新物品——globals.xml 里的 LootSpawnAvoidance 和 CleanupAvoidance 都是 100——而且它按周期工作。重启之后要过一会儿,改动才会显现。
不检查自己的文件。 少一个 > 就足以让服务器在没有经济系统的情况下启动。结果不是物资多一点,而是一件都不刷。
配套工具
两个都免费,也不需要注册:
- types 编辑器 —— 在浏览器里打开你的文件,为每件物品显示图标和名称,在你编辑的位置直接解释每个值,还支持按筛选分组批量修改。
- XML 校验器 —— 带着行号找出语法错误,赶在你的服务器发现之前。
对某个具体数值有疑问,欢迎直接在本主题下回复——这样答案就留给所有人了。
· 已编辑