📊 表结构

字段名 数据类型 默认值 说明
CreatureID MEDIUMINT UNSIGNED 0 生物模板ID (主键1)
GroupID TINYINT UNSIGNED 0 文本组ID (主键2)
ID TINYINT UNSIGNED 0 文本ID (主键3)
Text LONGTEXT NULL 文本内容
Type TINYINT UNSIGNED 0 文本类型
Language TINYINT UNSIGNED 0 语言类型
Probability FLOAT 0 触发概率(0-100)
Emote MEDIUMINT UNSIGNED 0 表情动作ID
Duration INT UNSIGNED 0 持续时间(毫秒)
Sound INT UNSIGNED 0 声音文件ID
BroadcastTextID INT UNSIGNED 0 广播文本ID
TextRange TINYINT UNSIGNED 0 文本范围
comment VARCHAR(255) '' 注释说明

🔑 核心字段详解

🆔 CreatureID - 生物模板ID

详细说明:对应creature_template.entry,指定说话的生物。 取值范围:对应creature_template.entry
  • 复合主键的一部分
  • 同一生物可有多组不同文本

📁 GroupID - 文本组ID

详细说明:区分同一生物在不同情况下的话语。 取值范围:0 - 255
  • 0 - 进入战斗时
  • 1 - 死亡时
  • 2 - 击杀玩家时
  • 3 - 血量低于30%时
  • 4 - 血量低于15%时
  • 5 - 使用技能时
  • 6 - 召唤小怪时
  • 7 - 脱离战斗时

📝 ID - 文本ID

详细说明:同一组内的不同文本编号,系统随机选择。 取值范围:0 - 255
  • 同一组可有多个文本
  • 根据Probability随机触发
  • 增加对话多样性

💬 Text - 文本内容

详细说明:NPC说出的具体文本内容。
  • 支持玩家名称占位符 %s
  • 支持换行符 \n
  • 可包含颜色代码
  • NULL表示使用BroadcastTextID

📢 Type - 文本类型

详细说明:决定文本如何在游戏中呈现。
  • 0 - SAY(普通说话,范围25码)
  • 1 - YELL(大喊,范围300码)
  • 2 - TEXT_EMOTE(文字表情)
  • 3 - BOSS_EMOTE(BOSS表情,全屏)
  • 4 - WHISPER(悄悄话,单人)
  • 5 - BOSS_WHISPER(BOSS悄悄话)
  • 6 - ZONE_YELL(区域大喊)

🌍 Language - 语言类型

详细说明:文本使用的语言,影响不同种族理解能力。
  • 0 - UNIVERSAL(通用语,所有人可理解)
  • 1 - ORCISH(兽人语)
  • 2 - DARNASSIAN(达纳苏斯语)
  • 3 - TAURAHE(牛头人语)
  • 6 - DWARVISH(矮人语)
  • 7 - COMMON(通用语-联盟)
  • 8 - DEMONIC(恶魔语)

🎲 Probability - 触发概率

详细说明:文本被选中的概率。 取值范围:0.0 - 100.0
  • 100 - 100%触发
  • 50 - 50%触发
  • 同组内概率独立计算

🎭 Emote - 表情动作ID

详细说明:说话时播放的表情动作。
  • 0 - 无动作
  • 1 - 说话(TALK)
  • 5 - 感叹(EXCLAIM)
  • 6 - 疑问(QUESTION)
  • 15 - 愤怒(RUDE)
  • 18 - 攻击(ATTACK)
  • 25 - 指向(POINT)
  • 53 - 大笑(LAUGH)

🔊 Sound - 声音文件ID

详细说明:播放的声音文件ID,对应客户端音频资源。
  • 0 - 无声音
  • 角色配音、战斗喊声
  • 技能音效、环境音效

📡 TextRange - 文本范围

详细说明:扩展文本的可见范围。
  • 0 - 默认范围(由Type决定)
  • 1 - 区域范围
  • 2 - 地图范围
  • 3 - 世界范围

💡 实际案例

战斗台词 BOSS进入战斗喊话

CreatureID=100001, GroupID=0(进入战斗), Type=1(YELL)

-- BOSS进入战斗喊话 INSERT INTO creature_text VALUES( 100001, 0, 0, '你们这些蠢货竟敢挑战我!', 1, 0, 100, 15, 0, 0, 0, 0, '进入战斗' );

死亡台词 BOSS死亡喊话

CreatureID=100001, GroupID=1(死亡), Type=1(YELL)

-- BOSS死亡喊话 INSERT INTO creature_text VALUES( 100001, 1, 0, '这不可能...我...我是无敌的...', 1, 0, 100, 0, 0, 0, 0, 0, '死亡' );

击杀台词 BOSS击杀玩家喊话

CreatureID=100001, GroupID=2(击杀玩家), Type=1(YELL), 占位符%s

-- BOSS击杀玩家喊话 INSERT INTO creature_text VALUES( 100001, 2, 0, '%s,你的愚蠢让你付出了生命的代价!', 1, 0, 100, 53, 0, 0, 0, 0, '击杀玩家' );

多台词 同一组多条随机台词

CreatureID=100002, GroupID=0, ID=0/1/2三条随机台词

-- 进入战斗随机台词1 INSERT INTO creature_text VALUES( 100002, 0, 0, '谁敢闯入我的领地!', 1, 0, 33, 15, 0, 0, 0, 0, '' ); -- 进入战斗随机台词2 INSERT INTO creature_text VALUES( 100002, 0, 1, '你们注定要死在这里!', 1, 0, 33, 15, 0, 0, 0, 0, '' ); -- 进入战斗随机台词3 INSERT INTO creature_text VALUES( 100002, 0, 2, '准备好面对你们的末日吧!', 1, 0, 34, 15, 0, 0, 0, 0, '' );

表情动作 配合表情动作的文本

CreatureID=100003, Type=2(TEXT_EMOTE), Emote=25(指向)

-- 文字表情配合动作 INSERT INTO creature_text VALUES( 100003, 0, 0, '指向北方的道路。', 2, 0, 100, 25, 0, 0, 0, 0, 'NPC指路' );

BOSS提示 BOSS重要技能全屏提示

CreatureID=100004, GroupID=5(技能), Type=3(BOSS_EMOTE)

-- BOSS技能全屏提示 INSERT INTO creature_text VALUES( 100004, 5, 0, '|cFFFF0000BOSS开始释放毁灭之怒!|r', 3, 0, 100, 0, 0, 12345, 0, 0, '技能提示' );

⚡ 快速参考

文本类型Type

0SAY(25码)
1YELL(300码)
2TEXT_EMOTE
3BOSS_EMOTE
4WHISPER
6ZONE_YELL

文本组GroupID

0进入战斗
1死亡
2击杀玩家
3血量30%
4血量15%
5使用技能

表情动作Emote

1说话
5感叹
15愤怒
25指向
53大笑

语言Language

0通用语
1兽人语
7通用语(联盟)
8恶魔语

🔗 相关表格

❓ 常见问题

Q1: 如何让BOSS在特定阶段说话?
使用SmartAI脚本,在特定事件触发时调用文本组。
Q2: %s占位符是什么意思?
%s会被替换为触发事件的玩家名称。
Q3: 同一组多条文本如何选择?
根据Probability概率随机选择一条。
Q4: 如何添加声音效果?
设置Sound字段为客户端声音文件ID。