置顶Tutorial

types.xml 详解:nominal、min、restock、lifetime 以及其他所有数值到底有什么用

作者 TimV · · 19 次浏览 · 0 条回复

TimV楼主

注册于 · 1 帖

#1

将近两千条结构完全一样的条目,却没有一行解释这些数字是什么意思。下面把每一个值讲清楚:它做什么、以什么为单位、改了会怎样。

文中所有数字都来自 Bohemia 官方原版切尔诺俄罗斯 types.xml 及其 1970 条条目——是数出来的,不是估出来的。

一句话速查

  • nominal — 经济系统希望世界上同时存在多少个
  • min — 数量降到这个值时,补货到 nominal
  • restock — 补货前的等待秒数
  • lifetime — 无人触碰的物品多少秒后消失
  • quantmin / quantmax — 刷出时的装填百分比(-1 = 默认)
  • cost — 刷新优先级,默认 100,基本不用动
  • flags — 哪些位置会算进 nominal
  • category — 粗分的物品大类
  • usage — 在哪些类型的地点刷新
  • value — 在地图的哪些 Tier 分区
  • tag — 建筑内部哪一类刷新点

如果只是想让某件物品更常见或更稀有,用到的只有三个:nominalminrestock

文件在哪

mpmissions/dayzOffline.chernarusplus/db/types.xml

它是中央经济系统的库存清单:一件物品最多能存在多少个、在地上能躺多久。它决定东西落在哪个货架上——哪些建筑有哪些刷新点写在 mapgroupproto.xml 里,哪个区域属于哪个 Tier 则由地图决定。

一条条目长这样

XML
<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 — 目标数量

经济系统希望世界上同时存在多少个。

这是上限,不是承诺。能不能真的达到,取决于是否有足够匹配的刷新点——见 usagevalue

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 30quantmax 80:这把枪刷出时弹匣装填量在 30% 到 80% 之间。

怎么确定这是百分比

整个原版文件里没有任何一个数值超过 100。所以这确实是百分比,而不是件数。

cost — 刷新优先级

当多件物品都符合条件时,用来决定谁占用空闲刷新点的权重。默认 100。

最诚实的建议:别动它。在 1970 条条目中,Bohemia 自己只有一次偏离了 100——Mag_SVD_10Rnd 是 1000。要调频率,请用 nominalminrestock

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:帐篷里的东西根本不算数。想让稀有物品真正保持稀有,就得动这几个开关——副作用是囤积的物资从此会拖慢所有人的补给。

craftednominal = 0 是一对:全部 313 条 crafted="1" 的条目同时也是 nominal = 0

典型的 deloot 物品有 AK74FAMASM79GasMask——直升机残骸的经典产物。

category — 粗分的物品大类

八选一:weaponsclothestoolsfoodcontainersexplosivesbookslootdispatch

特例 lootdispatch

原版 174 条,基本上是车门之类的载具部件。没理由乱动它,汽车零件就会消失。另有 348 条完全没有分类:感染者和静态物体不需要。

usage — 会在哪些地点出现

允许物品出现的地点类型。可以写多个,彼此是「或」的关系。

切尔诺俄罗斯有十七种:Military、Police、Medic、Firefighter、Industrial、Farm、Coast、Town、Village、Hunting、Office、School、Prison、Lunapark、SeasonalEvent、ContaminatedArea 和 Historical。

没有 usage,物品在正常的物资循环里哪儿都不会出现——对制作类和事件类物品来说,这恰恰是正确的。

不同地图,不同取值

利沃尼亚和萨哈尔有 SpecialUnderground,却没有 Historical。你的地图认识哪些值不写在 types.xml 里,而是写在任务文件夹的 cfglimitsdefinition.xml 中。那里没有的值,在这张地图上就是无效的。

value — 地图的 Tier 分区

物品能出现到内陆多深的位置。

Tier 1 是新角色出生的海岸线;Tier 越高越靠内陆、军事色彩越浓。没有 value,物品在任何分区里都不被允许——效果和缺少 usage 一样。

每张地图各有哪些 Tier
  • 切尔诺俄罗斯:Tier1 到 Tier4,外加 Unique
  • 萨哈尔:Tier1 到 Tier4,外加 Unique
  • 利沃尼亚:只有 Tier1 到 Tier3,外加 Unique

在利沃尼亚的文件里写 Tier4,在那张地图上根本无效。

tag — 建筑内部的位置

floorshelvesground 用来限定使用哪一类刷新点。

原版 1970 条里只有 281 条用到它;不写就等于所有点位都允许。也就是说 tag 只会收窄范围,永远不会扩大。


常见的翻车方式

把数字调高却什么都没变。 nominal 只是上限。如果地图上没有足够多 usagevalue 都匹配的刷新点,目标数量永远达不到。给一件纯 Military 物品写 nominal 500,得到的也不会超过军事点位所能容纳的数量。

一次改一大堆。 同时动 nominal、min、restock 和 lifetime,事后就说不清是哪一项起了作用。每轮只改一个值,然后重启、观察。

指望立刻见效。 经济系统不会在玩家附近清理或刷新物品——globals.xml 里的 LootSpawnAvoidanceCleanupAvoidance 都是 100——而且它按周期工作。重启之后要过一会儿,改动才会显现。

不检查自己的文件。 少一个 > 就足以让服务器在没有经济系统的情况下启动。结果不是物资多一点,而是一件都不刷。


配套工具

两个都免费,也不需要注册:

  • types 编辑器 —— 在浏览器里打开你的文件,为每件物品显示图标和名称,在你编辑的位置直接解释每个值,还支持按筛选分组批量修改。
  • XML 校验器 —— 带着行号找出语法错误,赶在你的服务器发现之前。

对某个具体数值有疑问,欢迎直接在本主题下回复——这样答案就留给所有人了。

· 已编辑

写回复

登录后即可回复。

服务器已经搭好了。玩家找得到吗?

免费发布到 DZPage:支持 PC、PlayStation 和 Xbox,带实时在线人数、投票、评论和专属的服务器页面。没有付费推广位,不用花钱,不用等待。

30 天内 3,935 位访客 · 免费,没有付费推广位 · 目前只收录了 13 个服务器

服务器配置卡住了?

来 DZPage 的 Discord 提问——服主和开发者都在那里解答。新工具也会先在那里公布。

加入 Discord763 名成员
10% 优惠

租一台自己的 DayZ 服务器

使用我们的合作链接,在 GPORTAL 下单每次都能享 10% 优惠——支持 PC、PlayStation 和 Xbox 的服务器。

领取 10% 优惠

广告合作伙伴 · 合作链接:你省 10%,我们拿一份佣金。

这个工具免费——而且会一直免费

无需登录、没有付费墙、没有限制。如果它帮你省下了时间,一次性 5 欧元就能让服务器继续运转,还能为你去掉广告。

支持 DZPage