📊 表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| guid | INT UNSIGNED | 自动递增 | 全局唯一标识符(主键) |
| id | INT UNSIGNED | 0 | 游戏对象模板ID |
| map | SMALLINT UNSIGNED | 0 | 地图ID |
| zoneId | SMALLINT UNSIGNED | 0 | 区域ID |
| areaId | SMALLINT UNSIGNED | 0 | 子区域ID |
| spawnMask | TINYINT UNSIGNED | 1 | 刷新掩码 |
| phaseMask | SMALLINT UNSIGNED | 1 | 相位掩码 |
| position_x | FLOAT | 0 | X坐标 |
| position_y | FLOAT | 0 | Y坐标 |
| position_z | FLOAT | 0 | Z坐标 |
| orientation | FLOAT | 0 | 朝向角度(弧度) |
| rotation0 | FLOAT | 0 | 旋转四元数X分量 |
| rotation1 | FLOAT | 0 | 旋转四元数Y分量 |
| rotation2 | FLOAT | 0 | 旋转四元数Z分量 |
| rotation3 | FLOAT | 0 | 旋转四元数W分量 |
| spawntimesecs | INT | 0 | 重生时间(秒) |
| animprogress | TINYINT UNSIGNED | 0 | 动画进度 |
| state | TINYINT UNSIGNED | 1 | 对象状态 |
| ScriptName | CHAR(64) | '' | 脚本名称 |
| VerifiedBuild | INT | NULL | 验证版本 |
| Comment | TEXT | NULL | 注释说明 |
🔑 核心字段详解
🆔 guid - 全局唯一标识符
详细说明:游戏对象实例的全局唯一标识符,自动递增。
取值范围:自动分配
- 主键字段
- 每个游戏对象实例有唯一guid
- 用于引用和操作特定对象
📋 id - 游戏对象模板ID
详细说明:对应gameobject_template.entry,指定游戏对象的类型和属性。
取值范围:对应gameobject_template.entry
- 决定对象的类型(箱子、门、按钮等)
- 决定对象的显示模型
- 决定对象的基本属性
🗺️ map - 地图ID
详细说明:游戏对象所在的地图ID,对应Maps.dbc。
常用地图ID:
- 0 - 东部王国
- 1 - 卡利姆多
- 530 - 外域
- 571 - 北极
- 副本地图各有独立ID
🎭 spawnMask - 刷新掩码
详细说明:控制在哪些副本难度下刷新该游戏对象。
取值范围:0-15
- 0 - 不刷新
- 1 - 10人普通(含无英雄模式地图)
- 2 - 25人普通(或3.2前英雄)
- 4 - 10人英雄
- 8 - 25人英雄
- 15 - 所有难度都刷新
👁️ phaseMask - 相位掩码
详细说明:控制游戏对象在哪些相位中可见。
取值范围:相位位掩码
- 1 - 相位1(默认)
- 2 - 相位2
- 3 - 相位1+2都可见
- 玩家通过光环261控制可见相位
- 多个相位可叠加(位掩码)
📍 position_x/y/z - 坐标位置
详细说明:游戏对象在世界中的三维坐标位置。
- position_x - X轴坐标
- position_y - Y轴坐标
- position_z - Z轴坐标(高度)
- 单位:游戏码(yards)
- 可通过GM命令获取坐标
🔄 orientation - 朝向角度
详细说明:游戏对象的朝向角度,以弧度为单位。
取值范围:0.0 - 6.28 (0-2π)
- 0 - 正北
- 1.57 (π/2) - 正东
- 3.14 (π) - 正南
- 4.71 (3π/2) - 正西
⏱️ spawntimesecs - 重生时间
详细说明:游戏对象被使用后重新刷新的时间(秒)。
单位:秒
- 0 - 使用后不消失
- 正数 - 正常重生时间
- 负数 - 初始为消失状态,需脚本激活
- 箱子通常180-300秒
- 矿石/草药通常1-15分钟
⚙️ state - 对象状态
详细说明:游戏对象的当前状态。
- 0 - 激活状态
- 1 - 就绪状态(默认)
- 2 - 关闭状态
- 3 - 激活状态2
- 不同类型对象有不同状态含义
💡 实际案例
邮箱 在暴风城添加邮箱
id=142102(邮箱模板), map=0(东部王国), 暴风城坐标
INSERT INTO gameobject VALUES(
NULL, 142102, 0, 0, 0, 1, 1,
-8833.37, 628.62, 94.00, 1.06,
0, 0, 0, 0, 300, 0, 1, '', NULL, '暴风城邮箱'
);箱子 添加可刷新的宝箱
id=12345(宝箱模板), spawntimesecs=180(3分钟刷新)
INSERT INTO gameobject VALUES(
NULL, 12345, 0, 0, 0, 1, 1,
-1000.5, 500.2, 45.8, 0,
0, 0, 0, 0, 180, 0, 1, '', NULL, '宝箱'
);副本 添加副本门(所有难度)
spawnMask=15(所有难度刷新), phaseMask=1
INSERT INTO gameobject VALUES(
NULL, 180405, 533, 0, 0, 15, 1,
3416.46, -3892.13, 133.12, 3.14,
0, 0, 0, 0, 0, 0, 1, '', NULL, '副本入口门'
);相位 添加相位任务对象
phaseMask=2(仅相位2可见),任务物品
INSERT INTO gameobject VALUES(
NULL, 12346, 571, 0, 0, 1, 2,
3500.0, -1200.5, 130.2, 0,
0, 0, 0, 0, 300, 0, 1, '', NULL, '相位任务物品'
);修改 修改对象位置
guid=42的对象移动到新位置
UPDATE gameobject
SET position_x = -8840.12,
position_y = 630.54,
position_z = 94.25,
orientation = 2.35
WHERE guid = 42;⚡ 快速参考
常用地图ID
| 0 | 东部王国 |
| 1 | 卡利姆多 |
| 530 | 外域 |
| 571 | 北极 |
spawnMask值
| 1 | 10人普通 |
| 2 | 25人普通 |
| 4 | 10人英雄 |
| 8 | 25人英雄 |
| 15 | 所有难度 |
朝向角度
| 0 | 正北 |
| 1.57 | 正东 |
| 3.14 | 正南 |
| 4.71 | 正西 |
重生时间
| 0 | 不消失 |
| 180 | 3分钟 |
| 300 | 5分钟 |
| 负数 | 脚本激活 |
🔗 相关表格
- gameobject_template - 游戏对象模板表
- gameobject_addon - 游戏对象附加属性
- gameobject_template_addon - 游戏对象模板附加
- gameobject_queststarter - 游戏对象任务开始
- gameobject_questender - 游戏对象任务结束
❓ 常见问题
Q1: 如何获取游戏中的坐标?
使用GM命令 .gps 或 .go xyz x y z map 获取当前位置坐标。
Q2: 添加对象后需要重启服务器吗?
不需要,使用命令 .reload gameobject 重新加载即可。
Q3: 如何让对象不消失?
设置 spawntimesecs = 0,对象使用后不会消失。
Q4: phaseMask如何设置多相位可见?
使用位掩码叠加,如相位1+2可见则设置 phaseMask = 3 (1+2)。