GAMEOBJECT_TYPE_BUTTON
是 TrinityCore 中用于创建按钮的 GameObject 类型
字段详细说明
字段索引 | 字段名称 | 数据类型 | 默认值 | 说明 | 可选值/范围 |
---|
data0 | startOpen | enum | false | 按钮的初始状态 | 0 = 未按下, 1 = 已按下 |
data1 | open | uint32 | 0 | 按下按钮所需的锁类型ID | 引用 Lock.db2,0表示无需钥匙 |
data2 | autoClose | uint32 | 3000 | 按钮自动恢复时间(毫秒) | 0 - 2147483647 |
data3 | linkedTrap | uint32 | 0 | 关联的陷阱ID | 引用 GameObjects.db2 |
data4 | noDamageImmune | enum | false | 按钮是否对伤害免疫 | 0 = 否, 1 = 是 |
data5 | GiganticAOI | enum | false | 是否具有巨大活动范围 | 0 = 否, 1 = 是 |
data6 | openTextID | uint32 | 0 | 按下按钮时显示的文本ID | 引用 BroadcastText.db2 |
data7 | closeTextID | uint32 | 0 | 恢复按钮时显示的文本ID | 引用 BroadcastText.db2 |
data8 | requireLOS | enum | false | 是否需要视线 | 0 = 否, 1 = 是 |
data9 | conditionID1 | uint32 | 0 | 按钮的使用条件ID | 引用 PlayerCondition.db2 |
data10 | InteractRadiusOverride | uint32 | 0 | 交互半径覆盖值(码*100) | 0 - 2147483647 |
状态控制字段
字段 | 说明 |
---|
startOpen | 定义按钮在游戏世界中的初始状态,按下状态的按钮会在一段时间后自动恢复(根据autoClose值) |
autoClose | 控制按钮按下后多长时间自动恢复,0表示永不自动恢复 |
访问控制字段
字段 | 说明 |
---|
open | 定义按下按钮所需的钥匙或条件,引用 Lock.db2 表中的记录 |
conditionID1 | 定义玩家使用按钮之前必须满足的条件,引用 PlayerCondition.db2 表 |
关联机制字段
字段 | 说明 |
---|
linkedTrap | 关联一个陷阱对象,当按钮被按下时会触发该陷阱 |
交互反馈字段
字段 | 说明 |
---|
openTextID | 按钮被按下时显示给玩家的文本消息ID |
closeTextID | 按钮恢复时显示给玩家的文本消息ID |
游戏机制字段
字段 | 说明 |
---|
noDamageImmune | 控制按钮是否可以被攻击或法术影响 |
requireLOS | 控制玩家是否需要与按钮保持视线接触才能交互 |
GiganticAOI | 扩大按钮的活动范围,使远处玩家也能检测到 |
性能优化字段
字段 | 说明 |
---|
InteractRadiusOverride | 自定义按钮的交互距离,覆盖默认值 |
注意事项
触发机制: 按钮主要用于触发事件
linkedTrap关联: 通过linkedTrap可以创建复杂的触发机制,按钮按下时会激活关联的陷阱
视线要求: requireLOS字段可以增加游戏的交互真实感,玩家必须直视按钮才能按下
性能考虑: GiganticAOI会影响服务器性能,应谨慎使用
平衡性: autoClose时间过短或过长都可能影响游戏体验
使用示例
-- 一个基本的按钮,初始未按下,3秒后自动恢复
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, data2)
VALUES (223456, 1, 2234, '基本按钮', 0, 0, 3000);
-- 一个高级按钮,需要钥匙,关联陷阱,需要视线接触
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, data2, data3, data8)
VALUES (223457, 1, 2235, '高级按钮', 0, 100, 5000, 50001, 1);