GAMEOBJECT_TYPE_CHEST 是 TrinityCore 中用于创建宝箱的 GameObject 类型
字段详细说明
字段索引 | 字段名称 | 数据类型 | 默认值 | 说明 | 可选值/范围 |
---|
data0 | open | uint32 | 0 | 开启宝箱所需的锁类型ID | 引用 Lock.db2,0表示无需钥匙 |
data1 | chestLoot | uint32 | 0 | 宝箱战利品表ID | 引用 Treasure.db2 |
data2 | chestRestockTime | uint32 | 0 | 宝箱重新刷新时间(毫秒) | 0 - 1800000 |
data3 | consumable | enum | false | 是否为消耗品 | 0 = 否, 1 = 是 |
data4 | minRestock | uint32 | 0 | 最小重新填充时间 | 0 - 65535 |
data5 | maxRestock | uint32 | 0 | 最大重新填充时间 | 0 - 65535 |
data6 | triggeredEvent | uint32 | 0 | 触发的游戏事件ID | 引用 GameEvents.db2 |
data7 | linkedTrap | uint32 | 0 | 关联的陷阱ID | 引用 GameObjects.db2 |
data8 | questID | uint32 | 0 | 关联的任务ID | 引用 QuestV2.db2 |
data9 | InteractRadiusOverride | uint32 | 0 | 交互半径覆盖值(码*100) | 0 - 2147483647 |
data10 | requireLOS | enum | false | 是否需要视线 | 0 = 否, 1 = 是 |
data11 | leaveLoot | enum | false | 是否留下战利品 | 0 = 否, 1 = 是 |
data12 | notInCombat | enum | false | 是否在战斗中不可用 | 0 = 否, 1 = 是 |
data13 | logloot | enum | false | 是否记录战利品获取 | 0 = 否, 1 = 是 |
data14 | openTextID | uint32 | 0 | 开启时显示的文本ID | 引用 BroadcastText.db2 |
data15 | usegrouplootrules | enum | false | 是否使用团队战利品规则 | 0 = 否, 1 = 是 |
data16 | floatingTooltip | enum | false | 是否显示浮动提示 | 0 = 否, 1 = 是 |
data17 | conditionID1 | uint32 | 0 | 使用条件ID | 引用 PlayerCondition.db2 |
data18 | xpLevel | int32 | 0 | 经验等级 | -2147483648 - 2147483647 |
data19 | xpDifficulty | enum | No Exp | 经验难度 | No Exp, Trivial, Very Small, Small, Substandard, Standard, High, Epic, Dungeon, 5 |
data20 | Unused | int32 | 0 | 未使用字段 | 0 - 123 |
data21 | GroupXP | enum | false | 是否获得团队经验 | 0 = 否, 1 = 是 |
data22 | DamageImmuneOK | enum | false | 是否允许伤害免疫 | 0 = 否, 1 = 是 |
data23 | trivialSkillLow | uint32 | 0 | 简单技能等级下限 | 0 - 65535 |
data24 | trivialSkillHigh | uint32 | 0 | 简单技能等级上限 | 0 - 65535 |
data25 | DungeonEncounter | uint32 | 0 | 地下城遭遇战ID | 引用 DungeonEncounter.db2 |
data26 | spell | uint32 | 0 | 关联的法术ID | 引用 Spell.db2 |
data27 | GiganticAOI | enum | false | 是否具有巨大活动范围 | 0 = 否, 1 = 是 |
data28 | LargeAOI | enum | false | 是否具有较大活动范围 | 0 = 否, 1 = 是 |
data29 | SpawnVignette | uint32 | 0 | 生成时的视觉效果ID | 引用 vignette.db2 |
data30 | chestPersonalLoot | uint32 | 0 | 个人战利品表ID | 引用 Treasure.db2 |
data31 | turnpersonallootsecurityoff | enum | false | 是否关闭个人战利品安全机制 | 0 = 否, 1 = 是 |
data32 | ChestProperties | uint32 | 0 | 宝箱属性ID | 引用 ChestProperties.db2 |
data33 | chestPushLoot | uint32 | 0 | 推送战利品表ID | 引用 Treasure.db2 |
data34 | ForceSingleLooter | enum | false | 是否强制单人拾取 | 0 = 否, 1 = 是 |
核心功能字段
字段 | 说明 |
---|
chestLoot | 指向 Treasure.db2 表中的记录,定义了宝箱包含的战利品 |
chestPersonalLoot | 个人战利品表,为每个玩家生成独特的战利品 |
chestPushLoot | 推送战利品表,可能用于特定的游戏机制 |
访问控制字段
字段 | 说明 |
---|
open | 定义开启宝箱所需的钥匙或条件,引用 Lock.db2 表中的记录 |
questID | 宝箱关联的任务ID,玩家必须完成指定任务才能开启宝箱 |
conditionID1 | 定义玩家使用宝箱之前必须满足的条件,引用 PlayerCondition.db2 表 |
刷新机制字段
字段 | 说明 |
---|
chestRestockTime | 宝箱被清空后重新刷新战利品的时间(毫秒) |
minRestock/maxRestock | 宝箱重新填充时间的随机范围 |
consumable | 是否为消耗品,开启后消失 |
交互机制字段
字段 | 说明 |
---|
requireLOS | 控制玩家是否需要与宝箱保持视线接触才能交互 |
notInCombat | 控制玩家是否可以在战斗状态下开启宝箱 |
usegrouplootrules | 是否使用团队战利品分配规则 |
战利品机制字段
字段 | 说明 |
---|
leaveLoot | 是否在宝箱被开启后留下战利品 |
logloot | 是否记录玩家获取的战利品到日志 |
ForceSingleLooter | 是否强制只能由一个玩家拾取战利品 |
关联机制字段
字段 | 说明 |
---|
linkedTrap | 关联一个陷阱对象,开启宝箱时会触发该陷阱 |
triggeredEvent | 开启宝箱时触发的游戏事件ID |
spell | 开启宝箱时施放的法术ID |
经验和技能字段
字段 | 说明 |
---|
xpLevel | 与宝箱相关的经验等级 |
xpDifficulty | 经验获取难度等级 |
trivialSkillLow/High | 简单技能等级范围,用于技能相关的宝箱 |
视觉效果字段
字段 | 说明 |
---|
floatingTooltip | 是否显示浮动提示信息 |
openTextID | 开启宝箱时显示给玩家的文本消息ID |
SpawnVignette | 宝箱生成时的视觉效果ID |
性能优化字段
字段 | 说明 |
---|
GiganticAOI/LargeAOI | 扩大宝箱的活动范围,使远处玩家也能检测到 |
InteractRadiusOverride | 自定义宝箱的交互距离,覆盖默认值 |
注意事项
战利品系统: chestLoot是宝箱的核心字段,用于战利品内容
刷新机制: chestRestockTime控制宝箱的刷新时间,对于公共区域的宝箱尤其重要
任务关联: questID字段可以创建任务相关的宝箱
团队机制: usegrouplootrules和ForceSingleLooter字段控制团队环境下的战利品分配
安全机制: turnpersonallootsecurityoff可以控制个人战利品的安全机制
性能考虑: GiganticAOI和LargeAOI会影响服务器性能,应谨慎使用
平衡性: 各种限制条件(open, conditionID1等)需要根据游戏难度和流程合理设置
使用示例
-- 一个基本的宝箱,包含战利品,5分钟刷新
INSERT INTO `gameobject_template`
(entry, [type](file://c:\TrinityCore\dep\protobuf\src\google\protobuf\descriptor.h#L797-L797), displayId, [name](file://c:\TrinityCore\dep\g3dlite\include\G3D\XML.h#L166-L168), data1, data2)
VALUES (423456, 3, 4234, '基本宝箱', 100, 300000);
-- 一个与任务相关的宝箱,需要完成任务才能开启
INSERT INTO `gameobject_template`
(entry, [type](file://c:\TrinityCore\dep\protobuf\src\google\protobuf\descriptor.h#L797-L797), displayId, [name](file://c:\TrinityCore\dep\g3dlite\include\G3D\XML.h#L166-L168), data0, data1, data8)
VALUES (423457, 3, 4235, '任务宝箱', 0, 101, 500);
-- 一个高级宝箱,需要钥匙,关联陷阱,使用团队战利品规则
INSERT INTO `gameobject_template`
(entry, [type](file://c:\TrinityCore\dep\protobuf\src\google\protobuf\descriptor.h#L797-L797), displayId, [name](file://c:\TrinityCore\dep\g3dlite\include\G3D\XML.h#L166-L168), data0, data1, data7, data15)
VALUES (423458, 3, 4236, '高级宝箱', 50, 102, 50001, 1);