Creature text
Таблица 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_template → entry.
Пример: 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"