表概述

broadcast_text表存储了游戏世界中所有NPC对话、喊话、表情动作和音效的关联数据。每条记录对应一个独立的对话条目,包含男女角色文本关联表情动作音效ID语言类型

主键为 ID,被creature_text、gossip_menu_option、quest_template等多个表引用。

表结构

字段名数据类型默认值说明
IDINT UNSIGNED0广播文本唯一ID
LanguageIDINTNULL语言ID,决定文本显示的语言
MaleTextLONGTEXTNULL男性角色显示的文本
FemaleTextLONGTEXTNULL女性角色显示的文本
EmoteID1INTNULL第一个表情动作ID
EmoteID2INTNULL第二个表情动作ID
EmoteID3INTNULL第三个表情动作ID
EmoteDelay1INTNULL第一个表情的延迟时间(毫秒)
EmoteDelay2INTNULL第二个表情的延迟时间(毫秒)
EmoteDelay3INTNULL第三个表情的延迟时间(毫秒)
SoundEntriesIdINTNULL关联音效ID
EmotesIDINTNULL表情预设组ID
FlagsINTNULL控制标志位
VerifiedBuildSMALLINT0验证版本号

重要字段详解

MaleText / FemaleText (男女文本)

分别定义男性和女性NPC说话时显示的文本内容。常见用法:

  • 两个字段都填写相同内容 → NPC不分性别说相同的话
  • 只填写MaleText → 男性NPC有对话,女性NPC无对话
  • 分别填写不同内容 → NPC根据性别说不同的台词

文本支持颜色代码和换行符等格式化标记。

LanguageID (语言类型)

定义对话的显示语言:

  • 0 - 通用语(联盟)
  • 1 - 兽人语(部落)
  • 2 - 达纳苏斯语
  • 3 - 牛头人语
  • 7 - 通用语(双方)
EmoteID1-3 / EmoteDelay1-3 (表情系统)

定义NPC说话时伴随的表情动作。支持最多3个表情:

  • EmoteID - 表情动作编号(如1=挥手,11=大笑)
  • EmoteDelay - 表情播放的延迟(毫秒),相对对话开始时间

实战案例

查询某生物的对话文本:
SELECT ct.text, bt.MaleText, bt.LanguageID
FROM creature_text ct
JOIN broadcast_text bt ON ct.BroadcastTextId = bt.ID
WHERE ct.CreatureID = 12345
ORDER BY ct.GroupID, ct.ID;
搜索包含特定关键词的对话:
SELECT ID, MaleText
FROM broadcast_text
WHERE MaleText LIKE '%为了联盟%'
LIMIT 20;
添加一条带表情的新对话:
INSERT INTO broadcast_text (ID, LanguageID, MaleText, FemaleText, EmoteID1, EmoteDelay1, SoundEntriesId)
VALUES (99999, 0, '欢迎来到艾泽拉斯,冒险者!', '欢迎来到艾泽拉斯,冒险者!', 2, 1000, 0);

常见问题

Q: NPC说了话但没有显示文本,如何排查?

按以下步骤:

  1. 检查creature_text中的BroadcastTextId是否正确指向broadcast_text.ID
  2. 检查broadcast_text中的MaleText/FemaleText是否有内容
  3. 检查LanguageID是否正确设置
  4. 检查玩家语言技能是否支持该语言

Q: MaleText和FemaleText有什么实际区别?

当玩家角色是男性时显示MaleText,女性时显示FemaleText。大多数情况下两个字段内容相同。只有少数特殊NPC会根据玩家性别说不同的话。