GameObject 常见类型详解 -- 陷阱(TRAP)

GAMEOBJECT_TYPE_TRAP 是 TrinityCore 中用于创建陷阱的 GameObject 类型

字段详细说明

字段索引 字段名称 数据类型 默认值 说明 可选值/范围
data0 open uint32 0 触发陷阱所需的锁类型ID 引用 Lock.db2,0表示无需钥匙
data1 Unused int32 0 未使用字段 0 - 65535
data2 radius uint32 0 陷阱触发半径 0 - 100
data3 spell uint32 0 触发的法术ID 引用 Spell.db2
data4 charges uint32 1 可触发次数 0 - 65535
data5 cooldown uint32 0 冷却时间(秒) 0 - 65535
data6 autoClose uint32 0 自动关闭时间(毫秒) 0 - 2147483647
data7 startDelay uint32 0 启动延迟(秒) 0 - 65535
data8 serverOnly enum false 是否仅服务器端 0 = 否, 1 = 是
data9 stealthed enum false 是否潜行状态 0 = 否, 1 = 是
data10 GiganticAOI enum false 是否具有巨大活动范围 0 = 否, 1 = 是
data11 stealthAffected enum false 是否受潜行影响 0 = 否, 1 = 是
data12 openTextID uint32 0 触发时显示的文本ID 引用 BroadcastText.db2
data13 closeTextID uint32 0 关闭时显示的文本ID 引用 BroadcastText.db2
data14 IgnoreTotems enum false 是否忽略图腾 0 = 否, 1 = 是
data15 conditionID1 uint32 0 触发条件ID 引用 PlayerCondition.db2
data16 playerCast enum false 是否由玩家施放 0 = 否, 1 = 是
data17 SummonerTriggered enum false 是否由召唤者触发 0 = 否, 1 = 是
data18 requireLOS enum false 是否需要视线 0 = 否, 1 = 是
data19 TriggerCondition uint32 0 触发条件ID 引用 PlayerCondition.db2
data20 Checkallunits enum false 是否检查所有单位 0 = 否(仅检查玩家), 1 = 是(检查所有单位)
data21 InteractRadiusOverride uint32 0 交互半径覆盖值(码*100) 0 - 2147483647

核心功能字段

字段 说明
spell 陷阱触发时施放的法术ID,引用 Spell.db2 表
radius 陷阱的触发半径,单位为码
charges 陷阱可触发的次数,0表示无限次数

时间控制字段

字段 说明
cooldown 陷阱触发后的冷却时间(秒)
startDelay 陷阱启动前的延迟时间(秒)
autoClose 陷阱自动关闭的时间(毫秒)

访问控制字段

字段 说明
open 定义触发陷阱所需的钥匙或条件,引用 Lock.db2 表中的记录
conditionID1 触发陷阱前必须满足的条件,引用 PlayerCondition.db2 表
TriggerCondition 另一个触发条件字段,功能与conditionID1类似

隐身和检测字段

字段 说明
stealthed 陷阱是否处于潜行状态
stealthAffected 陷阱是否受潜行状态影响
IgnoreTotems 陷阱是否忽略图腾的影响

交互机制字段

字段 说明
requireLOS 控制是否需要视线接触才能触发陷阱
Checkallunits 控制陷阱是否检查所有单位(包括NPC)或仅检查玩家
playerCast 控制陷阱是否由玩家施放

视觉效果字段

字段 说明
openTextID 陷阱触发时显示给玩家的文本消息ID
closeTextID 陷阱关闭时显示给玩家的文本消息ID
serverOnly 控制陷阱是否仅在服务器端存在,客户端不可见

性能优化字段

字段 说明
GiganticAOI 扩大陷阱的活动范围,使远处玩家也能检测到
InteractRadiusOverride 自定义陷阱的交互距离,覆盖默认值
SummonerTriggered 控制陷阱是否由召唤者触发

注意事项

  • 法术系统集成: spell字段是陷阱的核心,它连接了游戏的法术系统

  • 触发范围: radius字段定义了陷阱的有效范围

  • 使用次数: charges字段控制陷阱的可使用次数,0表示无限使用

  • 冷却机制: cooldown字段可以防止陷阱被频繁触发

  • 隐身机制: stealthed和stealthAffected字段与潜行系统相关

  • 检测机制: Checkallunits字段控制陷阱检测目标的范围

  • 性能考虑: GiganticAOI会影响服务器性能,应谨慎使用

使用示例

sql 复制代码
-- 一个基本的陷阱,触发时施放法术,有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), data2, data3, data4) 
VALUES (623456, 6, 6234, '基本陷阱', 5, 12345, 3);
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), data2, data3, data5, data7) 
VALUES (623457, 6, 6235, '延迟陷阱', 3, 12346, 10, 2);
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), data2, data3, data12, data15) 
VALUES (623458, 6, 6236, '高级陷阱', 4, 12347, 200, 300);
相关推荐
大厂技术总监下海5 小时前
根治LLM胡说八道!用 Elasticsearch 构建 RAG,给你一个“有据可查”的AI
大数据·elasticsearch·开源
星浩AI6 小时前
Google 官方发布:让你的 AI 编程助手"边写、边看、边调",像人类开发者一样工作
人工智能·后端·开源
寺中人7 小时前
QtScrcpy手机投屏开源免费工具
开源·工具·投屏·实用·qtscrcpy
小润nature8 小时前
Spec-Driven Development (SDD) 框架与开源 AI 智能体-意图的进化
人工智能·开源
小羊羊Python11 小时前
Sound Maze - 基于 SFML+C++14 的音效迷宫开源游戏 | MIT 协议
c++·游戏·开源
Van_Moonlight13 小时前
RN for OpenHarmony 实战 TodoList 项目:已完成未完成数量显示
javascript·开源·harmonyos
济南壹软网络科技有限公司13 小时前
基于 ThinkPHP 8.1 + Workerman 的全开源商业级游戏陪玩系统技术架构设计
游戏·开源·游戏陪玩·php护航·商业版游戏护航
大厂技术总监下海14 小时前
大数据生态的“主动脉”:RocketMQ 如何无缝桥接 Flink、Spark 与业务系统?
大数据·开源·rocketmq
玖日大大14 小时前
Milvus 深度解析:开源向量数据库的技术架构、实践指南与生态生态
数据库·开源·milvus
这儿有一堆花14 小时前
MusicFree:开源多平台聚合音乐软件
开源·github