表概述

transports表属于Transports系统,记录了魔兽世界中所有公共交通工具的定义。每条记录对应一艘船或飞艇,由guid自增主键唯一标识,entry指向GameObject模板。

交通工具的实际航行路径由底层C++脚本控制,ScriptName字段指定关联的脚本类名。该表包含20条交通工具记录。

表结构

字段名数据类型默认值说明
guidINT UNSIGNEDAUTO_INCREMENT交通工具唯一标识(主键)
entryINT UNSIGNED0GameObject模板ID
nameTEXTNULL交通工具名称描述
ScriptNameCHAR(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)。