跳转至

04. 索引与数据字段详解

本章字段取自公开枪包的实际文件。TaCZ 版本之间字段可能微调——动手前请以你本机 tacz/tacz_default_gun 的对应文件为准,那里是最权威的"字段字典"。

4.1 index/guns/<id>.json —— 枪的登记表

{
  "name": "mypack.gun.m4a1.name",
  "tooltip": "mypack.gun.m4a1.desc",
  "display": "mypack:m4a1_display",
  "data": "mypack:m4a1_data",
  "type": "rifle",
  "item_type": "modern_kinetic",
  "sort": 100
}
字段 必填 说明
name ✅ 显示名的语言键(去 lang/zh_cn.json 找对应文字)
tooltip ⬜ 物品描述的键
display ✅ 指向 assets/<ns>/display/guns/<id>_display.json(写逻辑名 <id>_display,不带后缀)
data ✅ 指向 data/<ns>/data/guns/<id>_data.json
type ✅ 枪种:rifle / smg / pistol / sniper / shotgun / mg / rpg / melee 等(影响默认动画与部分行为)
item_type ✅ 大类:modern_kinetic(现代动能)/ old_kinetic(老式)/ energy(能量)等
sort ⬜ 创造物品栏排序,数字更小更靠前

4.2 index/ammo/<id>.json —— 弹药登记

{
  "name": "mypack.ammo.556x45.name",
  "display": "mypack:556x45_display",
  "stack_size": 60,
  "sort": 100
}
字段 说明
stack_size 一叠最多多少发(别超过原版堆叠上限太多)

4.3 index/attachments/<id>.json —— 配件登记

{
  "name": "mypack.attachment.scope_m4a1.name",
  "display": "mypack:scope_m4a1_display",
  "data": "mypack:scope_m4a1_data",
  "type": "scope"
}
字段 说明
type 槽位类型:scope(瞄具)/ muzzle(枪口)/ grip(握把)/ stock(枪托)/ extended_mag(扩容弹匣)/ laser(激光)等

4.4 data/guns/<id>_data.json —— 枪的数值

① 基础与弹药

字段 说明 例
ammo 用哪种弹药(完整 id) "mypack:556x45"
ammo_amount 弹匣容量 30
extended_mag_ammo_amount 扩容弹匣各档容量数组 [30, 45, 60]
script / script_param 特殊装填逻辑(如扩容弹匣) "tacz:xmag_reload_logic"

② 射击方式

字段 说明
bolt closed_bolt / open_bolt(是否每发都需要上膛类行为)
rpm 每分钟射速(600 = 每秒 10 发)
fire_mode 可切换模式数组:["auto","semi","burst"]

③ 弹道(bullet)

字段 说明
damage 单发伤害(平衡最常改)
bullet_amount 一次射出几发弹丸(霰弹用;此时"总伤害 = damage × bullet_amount")
speed 初速(越高弹道越平直)
gravity 重力下坠系数
life 弹丸存活时间(秒)
pierce 可穿透的实体数
knockback 击退
friction 空气阻力(越小越"飘"得远)
ignite_entity_time 命中点燃时长(燃烧弹)
tracer_count_interval 每隔几发显示曳光(0 = 不发)
extra_damage.armor_ignore 无视护甲比例(0~1)
extra_damage.head_shot_multiplier 爆头倍率(默认手感的核心参数之一)
extra_damage.damage_adjust 距离衰减表:[{ "distance": 30, "damage": 9 }, { "distance": "infinite", "damage": 6 }]

④ 装填(reload)

字段 说明
reload.type magazine(换弹匣)等
reload.infinite 是否无限弹药(调试/特殊玩法用)
reload.feed.empty / .tactical 空仓换弹 / 战术换弹的"开始吃子弹"时间(秒)
reload.cooldown.empty / .tactical 两者的"结束冷却"时间(秒)

💡 两个时间的关系:feed 决定什么时候弹匣数量跳变,cooldown 决定什么时候能再次开火/开镜。空仓永远比战术换弹慢。

⑤ 手持手感

字段 说明
draw_time / put_away_time 切出 / 收起时间(秒)
aim_time 开镜时间
sprint_time 冲刺后收枪/开火准备时间
weight 重量(影响移速惩罚的手感)
movement_speed.base/aim/reload 基础 / 开镜 / 换弹时移速加成(负数=减速)
can_crawl / can_slide 是否允许趴下 / 滑铲(需配合玩法模组)

⑥ 音效与表现相关的数据

字段 说明
fire_sound.fire_multiplier 开火音量倍率
fire_sound.silence_multiplier 消音时的音量倍率

想调"音量/音色"本身要去 display.sounds 指向的 ogg 文件;这里只是倍率。

4.5 data/attachments/<id>_data.json —— 配件数值

{
  "weight": 0,
  "ads_addend": 0.1
}
字段 说明
weight 重量(叠加到枪上)
ads_addend 开镜速度修正(正数=更慢/更稳,按版本含义可能相反,改动后务必进游戏实测)

4.6 assets/<ns>/display/guns/<id>_display.json —— 表现

{
  "model": "mypack:gun/m4a1_geo",
  "texture": "mypack:gun/uv/m4a1",
  "slot": "mypack:gun/slot/m4a1",
  "hud": "mypack:gun/hud/m4a1",
  "animation": "mypack:m4a1",
  "use_default_animation": "rifle",
  "third_person_animation": "default",
  "iron_zoom": 1.33,
  "zoom_model_fov": 45,
  "ammo_count_style": "normal",
  "damage_style": "per_projectile",
  "show_crosshair": false,
  "transform": {
    "scale": {
      "thirdperson": [0.6, 0.6, 0.6],
      "ground":      [0.6, 0.6, 0.6],
      "fixed":       [1.2, 1.2, 1.2]
    }
  },
  "sounds": {
    "shoot": "mypack:m4a1/shoot",
    "reload": "mypack:m4a1/reload"
  }
}
字段 说明
model geo_models/gun/<id>_geo.json(引用写 gun/m4a1_geo)
texture textures/gun/uv/<id>.png
slot 背包图标 textures/gun/slot/<id>.png
hud HUD 图案 textures/gun/hud/<id>.png(可选)
animation animations/<id>.animation.json
use_default_animation 缺动画时复用的本体动画模板(rifle/pistol/…)——新枪强烈建议写上
third_person_animation 第三人称动画方案(default 等)
iron_zoom 机械瞄具的放大倍率
zoom_model_fov 开镜时的模型 FOV(越小越"推近")
ammo_count_style 弹药数显示风格
damage_style 伤害显示口径(per_projectile = 按单颗弹丸)
show_crosshair 是否显示原版准星(枪械一般 false)
transform.scale.* 第三人称 / 掉落物 / 展示框的缩放
sounds 音效引用(不带 .ogg)

弹药 display 最小就一行:

{ "slot": "mypack:ammo/slot/556x45" }

配件 display 通常是 model / texture / slot 三件,套路与枪一致。

4.7 「我想改 XX,该动哪个字段」速查

想要的效果 改哪里
打得更疼 bullet.damage(霰弹注意 bullet_amount)
爆头更狠 bullet.extra_damage.head_shot_multiplier
射速更快 rpm(注意它和 fire_mode 的配合)
换弹更快 reload.feed.* / reload.cooldown.*
弹匣更大 ammo_amount(+ extended_mag_ammo_amount 若用扩容)
开镜更快 aim_time、display.iron_zoom
切枪更快 draw_time / put_away_time
远距离衰减更小 bullet.extra_damage.damage_adjust
模型太大/太小 display.transform.scale.*
枪名/描述 lang/*.json(不是 index!)
音量太大 fire_sound.fire_multiplier 或换 ogg