📊 表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| 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
| 值 | 状态 | 说明 |
|---|---|---|
| 0 | None | 无地面移动能力 |
| 1 | Run | 可以奔跑(最常见) |
| 2 | Hover | 悬浮移动(不接触地面) |
🏊 Swim - 游泳能力
详细说明:生物是否可以在水中游泳。
取值范围:0 - 1
| 值 | 状态 | 说明 |
|---|---|---|
| 0 | None | 不能游泳 |
| 1 | Swim | 可以游泳 |
🦅 Flight - 飞行能力
详细说明:生物的飞行能力类型。
取值范围:0 - 2
| 值 | 状态 | 说明 |
|---|---|---|
| 0 | None | 不能飞行 |
| 1 | DisableGravity | 禁用重力(悬浮) |
| 2 | CanFly | 可以自由飞行(已弃用) |
注意:建议使用DisableGravity(1)代替CanFly(2)
🌱 Rooted - 固定不动
详细说明:生物是否被固定在原地不能移动。
取值范围:0 - 1
| 值 | 状态 | 说明 |
|---|---|---|
| 0 | None | 可以移动 |
| 1 | Rooted | 固定不动 |
重要配置:
- 死亡不倒地的固定生物:Ground=1, Swim=0, Flight=0, Rooted=1 (水中时Swim=1)
- 死亡会倒地的固定生物:Ground=0, Swim=0, Flight=1, Rooted=1
🎯 Chase - 追逐移动方式
详细说明:生物追逐目标时的移动方式。
取值范围:0 - 2
| 值 | 状态 | 说明 |
|---|---|---|
| 0 | Run | 总是奔跑追逐 |
| 1 | CanWalk | 可以行走追逐 |
| 2 | AlwaysWalk | 总是行走追逐 |
🎲 Random - 随机移动方式
详细说明:生物随机巡逻时的移动方式。
取值范围:0 - 2
| 值 | 状态 | 说明 |
|---|---|---|
| 0 | Walk | 总是行走巡逻 |
| 1 | CanRun | 可以奔跑巡逻 |
| 2 | AlwaysRun | 总是奔跑巡逻 |
⏸️ 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 |
🔗 相关表格
- creature_template - 生物模板表
- creature_movement_override - 生物移动覆盖表
- creature - 生物刷新表
❓ 常见问题
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。