GAMEOBJECT_TYPE_GOOBER 是 TrinityCore 中用于创建傻瓜的 GameObject 类型
字段详细说明
字段索引 | 字段名称 | 数据类型 | 默认值 | 说明 | 可选值/范围 |
---|---|---|---|---|---|
data0 | open | uint32 | 0 | 交互所需的锁类型ID | 引用 Lock.db2,0表示无需钥匙 |
data1 | questID | uint32 | 0 | 关联的任务ID | 引用 QuestV2.db2 |
data2 | eventID | uint32 | 0 | 关联的游戏事件ID | 引用 GameEvents.db2 |
data3 | autoClose | uint32 | 3000 | 自动关闭时间(毫秒) | 0 - 2147483647 |
data4 | customAnim | uint32 | 0 | 自定义动画 | 0 - 4 |
data5 | consumable | enum | false | 是否为消耗品 | 0 = 否, 1 = 是 |
data6 | cooldown | uint32 | 0 | 冷却时间(秒) | 0 - 65535 |
data7 | pageID | uint32 | 0 | 页面ID | 引用 PageText.db2 |
data8 | language | uint32 | 0 | 语言ID | 引用 Languages.db2 |
data9 | pageMaterial | uint32 | 0 | 页面材质 | 引用 PageTextMaterial.db2 |
data10 | spell | uint32 | 0 | 关联的法术ID | 引用Spell.dbc |
data11 | noDamageImmune | enum | false | 是否对伤害免疫 | 0 = 否, 1 = 是 |
data12 | linkedTrap | uint32 | 0 | 关联的陷阱ID | 引用 GameObjects.db2 |
data13 | GiganticAOI | enum | false | 是否具有巨大活动范围 | 0 = 否, 1 = 是 |
data14 | openTextID | uint32 | 0 | 开启时显示的文本ID | 引用 BroadcastText.db2 |
data15 | closeTextID | uint32 | 0 | 关闭时显示的文本ID | 引用 BroadcastText.db2 |
data16 | requireLOS | enum | false | 是否需要视线 | 0 = 否, 1 = 是 |
data17 | allowMounted | enum | false | 是否允许骑乘状态下交互 | 0 = 否, 1 = 是 |
data18 | floatingTooltip | enum | false | 是否显示浮动提示 | 0 = 否, 1 = 是 |
data19 | gossipID | uint32 | 0 | 对话ID | 引用 Gossip.db2 |
data20 | AllowMultiInteract | enum | false | 是否允许多次交互 | 0 = 否, 1 = 是 |
data21 | floatOnWater | enum | false | 是否在水面上浮动 | 0 = 否, 1 = 是 |
data22 | conditionID1 | uint32 | 0 | 使用条件ID | 引用 PlayerCondition.db2 |
data23 | playerCast | enum | false | 是否由玩家施放 | 0 = 否, 1 = 是 |
data24 | SpawnVignette | uint32 | 0 | 生成时的视觉效果ID | 引用 vignette.db2 |
data25 | startOpen | enum | false | 初始状态 | 0 = 关闭, 1 = 开启 |
data26 | DontPlayOpenAnim | enum | false | 是否不播放开启动画 | 0 = 否, 1 = 是 |
data27 | IgnoreBoundingBox | enum | false | 是否忽略边界框 | 0 = 否, 1 = 是 |
data28 | NeverUsableWhileMounted | enum | false | 是否禁止骑乘时使用 | 0 = 否, 1 = 是 |
data29 | SortFarZ | enum | false | 是否按远Z排序 | 0 = 否, 1 = 是 |
data30 | SyncAnimationtoObjectLifetime | enum | false | 是否同步动画到对象生命周期 | 0 = 否, 1 = 是 |
data31 | NoFuzzyHit | enum | false | 是否无模糊命中 | 0 = 否, 1 = 是 |
data32 | LargeAOI | enum | false | 是否具有较大活动范围 | 0 = 否, 1 = 是 |
data33 | InteractRadiusOverride | uint32 | 0 | 交互半径覆盖值(码*100) | 0 - 2147483647 |
核心功能字段
字段 | 说明 |
---|---|
spell | 关联的法术ID,交互时施放指定法术 |
questID | 关联的任务ID,引用 QuestV2.db2 表 |
eventID | 关联的游戏事件ID,引用 GameEvents.db2 表 |
访问控制字段
字段 | 说明 |
---|---|
open | 定义交互所需的钥匙或条件,引用 Lock.db2 表中的记录 |
conditionID1 | 使用对象前必须满足的条件,引用 PlayerCondition.db2 表 |
cooldown | 对象使用后的冷却时间(秒) |
时间控制字段
字段 | 说明 |
---|---|
autoClose | 对象自动关闭的时间(毫秒) |
consumable | 是否为消耗品,使用后消失 |
页面和文本字段
字段 | 说明 |
---|---|
pageID | 页面ID,引用 PageText.db2 表,用于显示文本内容 |
language | 语言ID,引用 Languages.db2 表 |
pageMaterial | 页面材质,引用 PageTextMaterial.db2 表 |
openTextID/closeTextID | 开启/关闭时显示的文本ID,引用 BroadcastText.db2 表 |
动画和视觉效果字段
字段 | 说明 |
---|---|
customAnim | 自定义动画,值范围0-4 |
floatingTooltip | 控制是否显示浮动提示信息 |
floatOnWater | 控制对象是否在水面上浮动 |
SpawnVignette | 对象生成时的视觉效果ID |
DontPlayOpenAnim | 是否不播放开启动画 |
SortFarZ | 是否按远Z排序渲染 |
交互机制字段
字段 | 说明 |
---|---|
requireLOS | 控制是否需要视线接触才能交互 |
allowMounted | 控制是否可以在骑乘状态下交互 |
NeverUsableWhileMounted | 强制禁止在骑乘状态下使用 |
AllowMultiInteract | 是否允许多个玩家同时交互 |
playerCast | 控制法术是否由玩家施放 |
关联机制字段
字段 | 说明 |
---|---|
linkedTrap | 关联一个陷阱对象,交互时会触发该陷阱 |
gossipID | 指向 Gossip.db2 表中的记录,定义交互时的对话选项 |
性能优化字段
字段 | 说明 |
---|---|
GiganticAOI/LargeAOI | 扩大对象的活动范围,使远处玩家也能检测到 |
InteractRadiusOverride | 自定义对象的交互距离,覆盖默认值 |
IgnoreBoundingBox | 是否忽略对象的边界框检测 |
NoFuzzyHit | 是否禁用模糊命中检测 |
生命周期字段
字段 | 说明 |
---|---|
startOpen | 对象的初始状态 |
SyncAnimationtoObjectLifetime | 是否同步动画到对象生命周期 |
注意事项
-
功能丰富: GOOBER是功能最丰富的GameObject类型,适用于各种特殊用途
-
法术系统集成: spell字段连接了游戏的法术系统,是其核心功能之一
-
冷却机制: cooldown字段可以控制对象的使用频率
-
动画支持: customAnim和相关动画字段提供了丰富的视觉效果
-
交互控制: 多个字段控制交互条件,如requireLOS、allowMounted等
-
性能考虑: GiganticAOI和LargeAOI会影响服务器性能,应谨慎使用
使用示例
sql
-- 一个基本的goober对象,交互时施放法术
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), data10)
VALUES (1023456, 10, 10234, '基本goober对象', 12345);
sql
-- 一个与任务相关的goober对象
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, data10)
VALUES (1023457, 10, 10235, '任务相关对象', 500, 12346);
sql
-- 一个带冷却时间的goober对象
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), data10, data6)
VALUES (1023458, 10, 10236, '带冷却对象', 12347, 30);