📊 表结构

字段名 数据类型 默认值 说明
CreatureId 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 TINYINT UNSIGNED NULL 交互暂停时间

🔑 核心字段详解

🆔 CreatureId - 生物模板ID

详细说明:对应creature_template.entry,指定移动配置的生物。 取值范围:对应creature_template.entry
  • 表的主键
  • 每个生物模板一条记录
  • 可被creature_movement_override覆盖

🏃 Ground - 地面移动方式

详细说明:生物在地面上的移动方式。 取值范围:0 - 2
状态说明
0None无地面移动能力
1Run可以奔跑(最常见)
2Hover悬浮移动(不接触地面)

🏊 Swim - 游泳能力

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

🦅 Flight - 飞行能力

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

注意:建议使用DisableGravity(1)代替CanFly(2)

🌱 Rooted - 固定不动

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

重要配置:

  • 死亡不倒地的固定生物:Ground=1, Swim=0, Flight=0, Rooted=1 (水中时Swim=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秒(常见值)
  • 用于NPC对话后短暂停留

💡 实际案例

普通生物 配置普通地面生物

CreatureId=12345, 可以奔跑、游泳、不能飞行

INSERT INTO creature_template_movement VALUES( 12345, 1, 1, 0, 0, 0, 0, 5000 );

飞行生物 配置飞行生物

CreatureId=12346, 悬浮飞行、可以游泳

INSERT INTO creature_template_movement VALUES( 12346, 0, 1, 1, 0, 0, 0, 3000 );

固定NPC 配置固定不动的NPC

CreatureId=12347, 固定不动、死亡不倒地

INSERT INTO creature_template_movement VALUES( 12347, 1, 0, 0, 1, NULL, NULL, 0 );

固定倒地 配置固定但死亡会倒地的生物

CreatureId=12348, 固定不动、死亡会倒地

INSERT INTO creature_template_movement VALUES( 12348, 0, 0, 1, 1, NULL, NULL, 0 );

行走生物 配置总是行走的生物

CreatureId=12349, 追逐和巡逻都行走

INSERT INTO creature_template_movement VALUES( 12349, 1, 1, 0, 0, 2, 0, 5000 );

查询 查询生物的移动配置

查询CreatureId=12345的移动能力

SELECT ctm.CreatureId, ct.name, ctm.Ground, ctm.Swim, ctm.Flight, ctm.Rooted, ctm.Chase, ctm.Random, ctm.InteractionPauseTimer FROM creature_template_movement ctm JOIN creature_template ct ON ctm.CreatureId = ct.entry WHERE ctm.CreatureId = 12345;

⚡ 快速参考

地面移动

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

游泳能力

0不能游泳
1可以游泳

飞行能力

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

固定状态

0可以移动
1固定不动
死亡不倒地G=1,S=0,F=0,R=1
死亡倒地G=0,S=0,F=1,R=1

🔗 相关表格

❓ 常见问题

Q1: 如何让NPC固定不动?
设置Rooted=1,并根据是否死亡倒地配置Ground和Flight字段。
Q2: Flight字段1和2的区别?
DisableGravity(1)是推荐值,CanFly(2)已弃用。建议使用1。
Q3: InteractionPauseTimer的作用?
与玩家交互后暂停移动的时间,让NPC短暂停留,增强交互体验。
Q4: 如何配置水生生物?
设置Swim=1, Ground=0或1(根据是否可以上岸), Flight=0。