📊 表结构

字段名 数据类型 默认值 说明
SpawnId INT UNSIGNED 0 生物刷新ID (主键)
Ground TINYINT UNSIGNED NULL 地面移动方式
Swim TINYINT UNSIGNED NULL 游泳能力
Flight TINYINT UNSIGNED NULL 飞行能力
Rooted TINYINT UNSIGNED NULL 是否固定不动
Chase TINYINT UNSIGNED NULL 追逐移动方式
Random TINYINT UNSIGNED NULL 随机移动方式
InteractionPauseTimer INT UNSIGNED NULL 交互暂停时间

🔑 核心字段详解

🆔 SpawnId - 生物刷新ID

详细说明:对应creature.guid,指定覆盖移动配置的生物实例。 取值范围:对应creature.guid
  • 表的主键
  • 针对单个生物实例
  • 覆盖creature_template_movement的配置
  • 优先级高于模板配置

🏃 Ground - 地面移动方式

详细说明:覆盖生物在地面上的移动方式。 取值范围:0 - 2
状态说明
0None无地面移动能力
1Run可以奔跑
2Hover悬浮移动

🏊 Swim - 游泳能力

详细说明:覆盖生物是否可以在水中游泳。 取值范围:0 - 1
状态说明
0None不能游泳
1Swim可以游泳

🦅 Flight - 飞行能力

详细说明:覆盖生物的飞行能力类型。 取值范围:0 - 2
状态说明
0None不能飞行
1DisableGravity禁用重力(推荐)
2CanFly可以自由飞行(已弃用)

🌱 Rooted - 固定不动

详细说明:覆盖生物是否被固定在原地。 取值范围:0 - 1
状态说明
0None可以移动
1Rooted固定不动

重要配置:

  • 死亡不倒地:Ground=1, Swim=0, Flight=0, Rooted=1
  • 死亡会倒地:Ground=0, Swim=0, Flight=1, Rooted=1

🎯 Chase - 追逐移动方式

详细说明:覆盖生物追逐目标时的移动方式。 取值范围:0 - 2
状态说明
0Run总是奔跑追逐
1CanWalk可以行走追逐
2AlwaysWalk总是行走追逐

🎲 Random - 随机移动方式

详细说明:覆盖生物随机巡逻时的移动方式。 取值范围:0 - 2
状态说明
0Walk总是行走巡逻
1CanRun可以奔跑巡逻
2AlwaysRun总是奔跑巡逻

⏸️ InteractionPauseTimer - 交互暂停时间

详细说明:覆盖与玩家交互后暂停移动的时间。 取值范围:0 - 4294967295 (毫秒)
  • 单位:毫秒(ms)
  • 0 - 不暂停
  • 3000 - 暂停3秒
  • 5000 - 暂停5秒

💡 实际案例

覆盖固定 让特定生物实例固定不动

SpawnId=123456, 覆盖为固定不动

INSERT INTO creature_movement_override VALUES( 123456, 1, 0, 0, 1, NULL, NULL, 0 );

覆盖飞行 让特定生物实例可以飞行

SpawnId=123457, 覆盖为悬浮飞行

INSERT INTO creature_movement_override VALUES( 123457, 0, 1, 1, 0, 0, 0, 3000 );

覆盖游泳 让特定生物实例不能游泳

SpawnId=123458, 覆盖为不能游泳

INSERT INTO creature_movement_override VALUES( 123458, 1, 0, 0, 0, 0, 0, 5000 );

覆盖暂停 设置特定NPC的交互暂停时间

SpawnId=123459, 交互后暂停10秒

INSERT INTO creature_movement_override VALUES( 123459, 1, 1, 0, 0, 0, 0, 10000 );

查询 查询生物实例的移动覆盖

查询SpawnId=123456的移动覆盖配置

SELECT cmo.SpawnId, c.guid, c.id1, ct.name, cmo.Ground, cmo.Swim, cmo.Flight, cmo.Rooted, cmo.Chase, cmo.Random, cmo.InteractionPauseTimer FROM creature_movement_override cmo JOIN creature c ON cmo.SpawnId = c.guid JOIN creature_template ct ON c.id1 = ct.entry WHERE cmo.SpawnId = 123456;

⚡ 快速参考

覆盖优先级

模板配置creature_template_movement
实例覆盖creature_movement_override
优先级覆盖 > 模板

地面移动

0无地面移动
1奔跑
2悬浮

游泳能力

0不能游泳
1可以游泳

飞行能力

0不能飞行
1禁用重力
2自由飞行

🔗 相关表格

❓ 常见问题

Q1: 与creature_template_movement的区别?
creature_template_movement针对模板(所有同类生物),creature_movement_override针对单个实例(特定刷新的生物)。
Q2: 何时使用覆盖表?
当需要特定位置的生物有不同于模板的移动行为时使用,如某个NPC需要固定而其他同类NPC可以移动。
Q3: 覆盖表的优先级?
creature_movement_override优先级高于creature_template_movement,会覆盖模板配置。
Q4: NULL值的作用?
NULL表示不覆盖该字段,使用模板的默认配置。只有非NULL值才会覆盖模板配置。