📊 表结构

字段名 数据类型 默认值 说明
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值

110人普通
225人普通
410人英雄
825人英雄
15所有难度

朝向角度

0正北
1.57正东
3.14正南
4.71正西

重生时间

0不消失
1803分钟
3005分钟
负数脚本激活

🔗 相关表格

❓ 常见问题

Q1: 如何获取游戏中的坐标?
使用GM命令 .gps 或 .go xyz x y z map 获取当前位置坐标。
Q2: 添加对象后需要重启服务器吗?
不需要,使用命令 .reload gameobject 重新加载即可。
Q3: 如何让对象不消失?
设置 spawntimesecs = 0,对象使用后不会消失。
Q4: phaseMask如何设置多相位可见?
使用位掩码叠加,如相位1+2可见则设置 phaseMask = 3 (1+2)。