Creature text

Материал из World of WarCraft Developers Wiki
Перейти к навигации Перейти к поиску

Таблица creature_text

Таблица creature_text из базы данных world хранит **тексты реплик существ** (say/yell/whisper/emote/boss emote) и связанные параметры (язык, вероятность, эмоция, звук, дальность рассылки). Используется в smart_scripts (действия SAY/YELL/WHISPER/EMOTE и их random-версии) и в серверных скриптах ядра.

PRIMARY KEY составной: (CreatureID, GroupID, ID).

Field Type Attributes Key Null Default Extra
CreatureID int UNSIGNED PRIMARY NO 0
GroupID tinyint UNSIGNED PRIMARY NO 0
ID tinyint UNSIGNED PRIMARY NO 0
Text mediumtext NO
Type tinyint UNSIGNED NO 0
Language tinyint UNSIGNED NO 0
Probability float NO 0
Emote int UNSIGNED NO 0
Duration int UNSIGNED NO 0
Sound int UNSIGNED NO 0
SoundPlayType tinyint UNSIGNED NO 0
BroadcastTextId int NO 0
TextRange tinyint UNSIGNED NO 0
comment varchar(255) YES

CreatureID

ID шаблона существа, к которому привязаны реплики. Ссылка на creature_templateentry.

Пример: 68

GroupID

Группа реплик для данного существа. Группа используется для выбора «какую реплику говорить»:

  • внутри одной группы может быть несколько строк (разные ID) — ядро выбирает одну строку согласно вероятностям;
  • разные группы используются для разных контекстов/триггеров (например, отдельные наборы для aggro, death, random idle и т. д. — это уже определяется скриптами/SmartAI).

Практика заполнения:

  • если у существа только один набор реплик — обычно ставят GroupID = 0;
  • если наборов несколько — создают группы 0, 1, 2, ...

Пример: 0

ID

Порядковый номер реплики внутри GroupID. Должен быть уникален в пределах (CreatureID, GroupID). Обычно используется последовательность: 0, 1, 2, 3, ...

Пример: 2

Text

Текст реплики, который будет отображаться/произноситься. Поддерживаются форматные шаблоны, которые обрабатываются ядром (типовые примеры):

  • %s — имя/текст в стиле emote (“%s делает что-то”);
  • $n, $N и похожие токены — подстановка имени игрока (зависит от конкретного формата ядра).

Пример: "Taste blade, mongrel!"

Type

Тип сообщения (каким способом выводить текст).

Value Name Описание
12 Say Обычная речь (say)
14 Yell Крик (yell)
16 Emote Текст-эмоция (emote в чат/пузырь)
41 BossEmote Босс-эмоция (как правило, выделенный канал/оформление)
15 Whisper Шёпот (whisper)
42 BossWhisper Босс-шёпот

Пример: 14

Language

Язык реплики. Значение берётся из клиентских данных языков (DB2: Languages.db2). На практике чаще всего используют:

Value Описание
0 Универсальный (всем понятен / без привязки к языку)
>0 ID языка из клиентских данных

Пример: 0

Probability

Вероятность (в процентах), с которой данная строка будет выбрана/выполнена внутри своей группы.

Рекомендуемые значения:

Value Описание
100 Всегда (если выбирается из списка — без “пропуска”)
1..99.999 Шанс срабатывания
0 Технически допустимо по схеме, но практически означает «не выбирать/не выполнять» — избегайте

Пример: 33.3

Emote

ID эмоции (emote), которую существо проигрывает одновременно с произнесением текста.

Value Описание
0 Без эмоции
>0 ID эмоции (emote)

Пример: 1

Duration

Длительность отображения текста в миллисекундах.

Value Описание
0 По умолчанию (длительность рассчитывается ядром автоматически)
>0 Явно заданная длительность в мс

Пример: 5000

Sound

ID звука, который будет проигран одновременно с репликой. В актуальных версиях это обычно **SoundKit ID** (клиентские данные SoundKit).

Value Описание
0 Звук не проигрывать
>0 ID звука (SoundKit)

Пример: 123456

SoundPlayType

Определяет, каким способом (каким пакетом) отправлять звук клиенту.

Value Name Описание
0 Normal Обычное воспроизведение звука
1 ObjectSound Звук как «объектный» (позиционный/привязанный к объекту)

Пример: 0

BroadcastTextId

ID записи в таблице/данных BroadcastText (обычно world: broadcast_text), соответствующей этой реплике. Используется для корректной локализации через BroadcastText. Если значение = 0, локализация обычно обеспечивается через creature_text_locale (если она используется в вашей схеме).

Value Описание
0 Не задано / использовать локализацию через locale-таблицы (если применимо)
>0 ID BroadcastText

Пример: 27473

TextRange

Дальность рассылки текста (в каком “радиусе”/контексте игроки увидят сообщение).

Value Range Описание
0 Default Поведение по умолчанию для выбранного Type
1 Area В пределах текущей Area (подзона)
2 Zone В пределах зоны
3 Map В пределах карты
4 World По всему миру (глобально)
5 Personal Только персонально (обычно для конкретного игрока/получателя)

Пример: 1

comment

Комментарий (метка) для удобства сопровождения: кто говорит и при каком событии/триггере.

Пример: "Stormwind City Guard - Random aggro"