📋 表概述

waypoints 表定义生物巡逻路径上的每一个坐标点。每条路径由一个 entry 标识,包含按 pointid 排序的多个坐标点。生物将以这些点为目标依次移动,形成巡逻路径。

🎯 核心概念:此表是较早的路径系统实现,新内容建议使用 waypoint_data 表(支持更多功能如 action 和 object_guid)。此表主要用于兼容旧数据和简单位置巡逻。

📊 表结构

字段名数据类型默认值说明
entryINT UNSIGNED0路径ID(联合主键,对应生物模板的 MovementType=2)
pointidINT UNSIGNED0路径点序号(联合主键,从1开始递增)
position_xFLOAT0路径点X坐标
position_yFLOAT0路径点Y坐标
position_zFLOAT0路径点Z坐标
orientationFLOATNULL到达后的朝向角度(弧度,0-2π)
delayINT UNSIGNED0到达后停留时间(毫秒)
point_commentTEXTNULL路径点注释

🔍 重要字段详解

🎯 entry - 路径ID

详细说明:entry 值对应 creature_template.entry 中设置了 MovementType=2(路径点移动)的生物。

⏱️ delay - 停留时间

详细说明:生物到达路径点后停留的毫秒数。0=不停留
  • 0 - 直接前往下一个点
  • 3000 - 停留3秒后继续
  • 60000 - 停留1分钟

💡 实战案例

创建护卫巡逻路径(4个点)

entry=100001 的生物在两个岗哨之间来回巡逻

-- 岗哨A → 岗哨B: 4个路径点的巡逻路线 INSERT INTO waypoints (entry, pointid, position_x, position_y, position_z, delay) VALUES (100001, 1, -8840.5, 630.2, 94.1, 5000), (100001, 2, -8820.0, 640.5, 94.1, 0), (100001, 3, -8800.0, 650.0, 94.1, 5000), (100001, 4, -8780.0, 640.0, 94.1, 0);

查询某生物的巡逻路径

SELECT pointid, position_x, position_y, position_z, delay, point_comment FROM waypoints WHERE entry = 100001 ORDER BY pointid;

❓ 常见问题

Q: waypoints 和 waypoint_data 有什么区别?

waypoints 是旧版系统,只支持简单坐标行走。新版 waypoint_data 功能更强大,支持到达后执行动作(如说话、施法)、延迟、朝向设置等。建议新内容使用 waypoint_data。

Q: 生物不动了怎么办?

检查:1) creature_template 的 MovementType 是否设为 2;2) waypoints 表中是否有该 entry 的路径点数据;3) 路径点坐标是否在地图可到达区域;4) pointid 序号是否正确(从1开始连续)。