来源:
data/lua/README.md
data/lua/manifest.schema.json
data/lua/types/ccb_api_v5.d.lua
data/lua/reference/ccb_public_api_v5.json
data/lua/reference/ccb_public_api_v5_coverage.json
tools/lua_api/README.md
commit d32b9cc880a8
api-contract
Lua 内容待修订: 本页仍含已移除的 v5 接口或旧运行时示例,不可作为当前 Lua 开发依据。请使用 Platform v1 入门。
物品与 Pocket 容器系统技术手册 (Items & Pockets Manual)¶
本手册详细剖析 Cataclysm: Cleanwater Bomb (CCB) 中的物品实体模型、物理量换算以及 CCB 独创的 多 Pocket 容器树状嵌套机制。
1. 物品物理量与度量衡标准¶
在 CCB 引擎中,所有物品的物理属性采用统一的公制度量衡:
- 重量 (Weight):底层整数存储,单位为克 (g)。例如
1500代表 1.5 公斤。 - 体积 (Volume):底层整数存储,单位为毫升 (ml)。例如
2500代表 2.5 升。 - 尺寸限制 (Length):单位为毫米 (mm)。用于长杆武器、长枪与刀鞘长度适配。
- 价格 (Price):单位为美分 (cents)。例如
1000代表 10 美元。
2. Pocket 容器嵌套架构模型¶
CCB 彻底淘汰了老旧的单层背包扁平列表,所有容器(背包、弹匣、水壶、枪套、战术腰带)均由一个或多个 pocket 构成:
graph TD
Rig[战术胸挂背包 ccb_tactical_rig] --> P1[主仓 Pocket 1: 12L / 15kg]
Rig --> P2[弹匣快拔副仓 Pocket 2: 1.5L / 2kg]
Rig --> P3[水袋仓 Pocket 3: 3L / 密闭防水]
P1 --> Box[战利品急救箱]
Box --> P4[药剂子仓]
P4 --> Syringe[肾上腺素针剂]
Pocket 核心控制属性¶
max_contains_volume(integer): 该口袋最大容纳体积 (ml)。max_contains_weight(integer): 该口袋最大承重上限 (g)。max_item_length(integer): 放入该口袋的物品最长几何尺寸 (mm)。watertight(boolean): 是否气密防水。为true时才可盛装水、汽油、酸液等未封口流体。rigid(boolean): 是否为刚性结构。若为false,装入物品后容器外部体积会相应膨胀。moves(integer): 从该口袋拔取/放入物品所消耗的基础动作点数(AP)。
3. 核心 API 参考¶
game.items.register(config)¶
向游戏引擎注册全新的物品原型。
参数 (Parameters):
* config (table, 必填): 物品原型定义表。包含 id, name, weight, volume, pockets, melee, armor, on_use 等配置项。
实战示例 (Example):
game.items.register({
id = "ccb_canteen_sealed",
name = "军用野战密封水壶",
weight = 250, -- 250 克自重
volume = 1200, -- 1.2 升外部体积
category = "container",
pockets = {
{
pocket_type = "CONTAINER",
max_contains_volume = 1000, -- 容纳 1 升液体
max_contains_weight = 1200,
watertight = true, -- 密封防水
open_container = false
}
}
})
item:get_total_weight() -> integer¶
递归计算物品本体及其内部所有子 Pocket 中物品的总重量。
返回值 (Returns): * integer: 真实总重量(克)。
item:has_flag(flag_name) -> boolean¶
检查物品是否包含指定的特性标签(如 "FIRE", "LEAK_RESIST", "SHEATH_KNIFE")。