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等)需要根据游戏难度和流程合理设置
使用示例
sql
复制代码
-- 一个基本的宝箱,包含战利品,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);
sql
复制代码
-- 一个与任务相关的宝箱,需要完成任务才能开启
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);
sql
复制代码
-- 一个高级宝箱,需要钥匙,关联陷阱,使用团队战利品规则
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);