transports 表
transports表定义游戏中的交通工具(船、飞艇等),包括航行路线、名称和关联的脚本。
表概述
transports表属于Transports系统,记录了魔兽世界中所有公共交通工具的定义。每条记录对应一艘船或飞艇,由guid自增主键唯一标识,entry指向GameObject模板。
交通工具的实际航行路径由底层C++脚本控制,ScriptName字段指定关联的脚本类名。该表包含20条交通工具记录。
表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| guid | INT UNSIGNED | AUTO_INCREMENT | 交通工具唯一标识(主键) |
| entry | INT UNSIGNED | 0 | GameObject模板ID |
| name | TEXT | NULL | 交通工具名称描述 |
| ScriptName | CHAR(64) | '' | 关联的脚本类名 |
重要字段详解
entry (GameObject模板ID)
对应gameobject_template表中type=15(MoTransport)的GameObject模板。常见交通工具entry:
- 176495 - 米奈希尔港-塞拉摩 船
- 176310 - 藏宝海湾-棘齿城 船
- 176244 - 奥格瑞玛-雷霆崖 飞艇
- 176231 - 提瑞斯法林地-奥格瑞玛 飞艇
- 181688 - 北风苔原-嚎风峡湾 船
ScriptName (交通脚本)
控制交通工具的航行路线、停靠时间和动画效果。脚本类继承自C++的Transport类,在核心代码中定义。
如果ScriptName为空字符串,交通工具将不会移动,仅作为静态GameObject存在。
实战案例
查询所有已定义的交通工具
SELECT guid, entry, name, ScriptName
FROM transports
ORDER BY guid;
新增一条交通工具定义
-- 添加一条新的船线(需在C++中实现对应的Transport脚本)
INSERT INTO transports (entry, name, ScriptName)
VALUES (190000, '暴风城-达纳苏斯 夜航船', 'transport_sw_darnassus');
查询无脚本绑定的交通工具(可能无法正常移动)
SELECT * FROM transports WHERE ScriptName = '';
常见问题
Q: 为什么船不动?
A: 检查三个条件:(1) transports表中的entry必须对应gameobject_template中type=15的模板;(2) ScriptName不能为空且对应的C++脚本已编译;(3) 地图文件(.vmap/.mmap)中路径点正确。
Q: guid和entry有什么区别?
A: entry指向GameObject模板(类似生物模板),guid是世界中该交通工具的唯一实例ID。同一种船型(同一entry)可以有多条不同航线(不同guid)。