📊 表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| entry | MEDIUMINT UNSIGNED | 0 | 游戏对象模板ID(主键) |
| type | TINYINT UNSIGNED | 0 | 游戏对象类型 |
| displayId | MEDIUMINT UNSIGNED | 0 | 显示模型ID |
| name | VARCHAR(100) | '' | 对象名称 |
| IconName | VARCHAR(100) | '' | 图标名称 |
| castBarCaption | VARCHAR(100) | '' | 施法条标题 |
| unk1 | VARCHAR(100) | '' | 未知字段 |
| size | FLOAT | 1 | 对象大小 |
| data0 | INT | 0 | 数据字段0(根据type含义不同,详见下方说明) |
| data1 | INT | 0 | 数据字段1 |
| data2 | INT | 0 | 数据字段2 |
| data3 | INT | 0 | 数据字段3 |
| data4 | INT | 0 | 数据字段4 |
| data5 | INT | 0 | 数据字段5 |
| data6 | INT | 0 | 数据字段6 |
| data7 | INT | 0 | 数据字段7 |
| data8 | INT | 0 | 数据字段8 |
| data9 | INT | 0 | 数据字段9 |
| data10 | INT | -1 | 数据字段10 |
| data11 | INT | -1 | 数据字段11 |
| data12 | INT | 0 | 数据字段12 |
| data13 | INT | 0 | 数据字段13 |
| data14 | INT | 0 | 数据字段14 |
| data15 | INT | 0 | 数据字段15 |
| data16 | INT | 0 | 数据字段16 |
| data17 | INT | 0 | 数据字段17 |
| data18 | INT | 0 | 数据字段18 |
| data19 | INT | 0 | 数据字段19 |
| data20 | INT | 0 | 数据字段20 |
| data21 | INT | 0 | 数据字段21 |
| data22 | INT | 0 | 数据字段22 |
| data23 | INT | 0 | 数据字段23 |
| AIName | CHAR(64) | '' | AI名称 |
| ScriptName | VARCHAR(64) | '' | 脚本名称 |
| WDBVerified | SMALLINT | 1 | 验证版本 |
🔑 核心字段详解
🆔 entry - 游戏对象模板ID
详细说明:游戏对象模板的唯一标识符。
取值范围:1 - 16777215
- 主键字段
- gameobject表的id字段引用此值
- 每个对象类型有唯一entry
📦 type - 游戏对象类型
详细说明:定义游戏对象的类型,决定对象的行为和data字段含义。
取值范围:0 - 35
常用类型:
- 0 - 门(DOOR)
- 1 - 按钮(BUTTON)
- 2 - 任务给予者(QUESTGIVER)
- 3 - 箱子(CHEST)
- 5 - 通用(GENERIC)
- 6 - 陷阱(TRAP)
- 7 - 椅子(CHAIR)
- 8 - 法术焦点(SPELL_FOCUS)
- 10 - 交互对象(GOOBER)
- 19 - 邮箱(MAILBOX)
- 22 - 法术施法者(SPELLCASTER)
- 23 - 集合石(MEETINGSTONE)
🎨 displayId - 显示模型ID
详细说明:游戏对象的3D模型ID,对应GameObjectDisplayInfo.dbc。
取值范围:对应DBC文件
- 决定对象的外观表现
- 包含模型文件和贴图信息
- 不同displayId显示不同造型
📝 name - 对象名称
详细说明:游戏对象的名称,显示给玩家。
- 最大长度100字符
- 显示在鼠标悬停提示
- 可通过本地化表翻译
🎯 IconName - 图标名称
详细说明:鼠标悬停时显示的图标类型。
常用图标:
- Taxi - 飞行点图标
- Talk - 对话图标
- Attack - 攻击图标
- Directions - 方向图标
- Quest - 任务图标(黄色感叹号)
📏 size - 对象大小
详细说明:游戏对象的缩放比例。
取值范围:0.1 - 10.0+
- 1.0 - 默认大小
- 0.5 - 缩小一半
- 2.0 - 放大两倍
- 模型可被重新缩放
📊 data0-data23 - 数据字段
详细说明:根据type不同,这些字段有不同含义。
重要提示:
- 这些字段来自WDB,不应随意修改
- 不同type的data字段含义完全不同
- 部分字段默认值为-1表示特殊含义
- data0 - 打开所需锁ID
- data1 - 掉落模板ID(loot_id)
- data2 - 使用后消失时间(秒)
- data3 - 触发陷阱的gameobject_template.entry
- data4 - 最小金币
- data5 - 最大金币
🤖 AIName - AI名称
详细说明:游戏对象使用的AI类型。
常用AI:
- SmartGameObjectAI - SmartAI系统
- GameObjectAI - 基础AI
- 空字符串表示无AI
📜 ScriptName - 脚本名称
详细说明:游戏对象使用的C++脚本名称。
- 对应脚本库中的脚本类
- 可实现复杂自定义逻辑
- 优先级高于AIName
💡 实际案例
箱子 创建普通宝箱模板
type=3(箱子), data1=掉落ID, data2=刷新时间
INSERT INTO gameobject_template VALUES(
12345, 3, 10, '普通宝箱', '', '', '', 1,
0, 12345, 180, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
'', '', 1
);邮箱 创建邮箱模板
type=19(邮箱), displayId=邮箱模型
INSERT INTO gameobject_template VALUES(
142102, 19, 307, '邮箱', 'Mail', '', '', 1,
0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
'', '', 1
);门 创建副本门模板
type=0(门), data0=初始状态, data2=自动关闭时间
INSERT INTO gameobject_template VALUES(
180405, 0, 5432, '副本门', '', '', '', 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
'', '', 1
);SmartAI 创建使用SmartAI的对象
AIName='SmartGameObjectAI', 配合smart_scripts表
INSERT INTO gameobject_template VALUES(
12346, 10, 10, '交互对象', 'Talk', '正在激活...', '', 1,
0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
'SmartGameObjectAI', '', 1
);修改 修改箱子掉落ID
entry=12345的箱子修改掉落模板
UPDATE gameobject_template
SET data1 = 54321
WHERE entry = 12345;⚡ 快速参考
常用类型
| 0 | 门 |
| 1 | 按钮 |
| 3 | 箱子 |
| 10 | 交互对象 |
| 19 | 邮箱 |
箱子data字段
| data0 | 锁ID |
| data1 | 掉落ID |
| data2 | 刷新时间 |
| data4-5 | 金币范围 |
图标类型
| Taxi | 飞行点 |
| Talk | 对话 |
| Quest | 任务 |
| 邮箱 |
AI类型
| SmartGameObjectAI | SmartAI |
| GameObjectAI | 基础AI |
| 空字符串 | 无AI |
🔗 相关表格
- gameobject - 游戏对象刷新表
- gameobject_template_addon - 游戏对象模板附加
- gameobject_template_locale - 游戏对象模板本地化
- gameobject_loot_template - 游戏对象掉落模板
- smart_scripts - SmartAI脚本表
❓ 常见问题
Q1: 如何确定data字段的含义?
根据type值查阅AZ官方文档,不同type的data字段含义完全不同。
Q2: displayId从哪里获取?
从GameObjectDisplayInfo.dbc文件或wowhead等网站查询模型ID。
Q3: 如何让箱子有掉落?
设置data1为掉落模板ID,并在gameobject_loot_template表中配置掉落内容。
Q4: ScriptName和AIName的区别?
ScriptName是C++脚本,AIName是内置AI系统。ScriptName优先级更高。