Criteria data

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

Таблица criteria_data

Таблица criteria_data из базы данных world хранит **дополнительные требования/ограничения** для критериев (criteria) системы достижений. Каждая строка описывает одно условие, привязанное к criteria_id. Поля value1 и value2 интерпретируются в зависимости от type.

PRIMARY KEY составной: (criteria_id, type).

Field Type Attributes Key Null Default Extra
criteria_id int PRIMARY NO
type tinyint UNSIGNED PRIMARY NO 0
value1 int UNSIGNED NO 0
value2 int UNSIGNED NO 0
ScriptName varchar(64) utf8mb4_unicode_ci NO

criteria_id

ID критерия из клиентских данных (Achievement Criteria). Используется как ключ, к которому добавляются дополнительные проверки через записи в этой таблице.

Пример: 3882

type

Тип дополнительного требования. Именно он определяет смысл value1 и value2.

Value Name Краткое назначение
0 TYPE_NONE Нет доп. требования
1 TYPE_T_CREATURE Требование к цели: существо определённого entry
2 TYPE_T_PLAYER_CLASS_RACE Требование к цели-игроку: класс + раса
3 TYPE_T_PLAYER_LESS_HEALTH Требование к цели-игроку: здоровье ниже процента
4 TYPE_T_PLAYER_DEAD Требование к цели-игроку: мёртв + проверка фракции
5 TYPE_S_AURA Требование к источнику: на игроке должна быть аура (spell + effectIndex)
6 TYPE_S_AREA Требование к источнику: быть в Area
7 TYPE_T_AURA Требование к цели: на цели должна быть аура (spell + effectIndex)
8 TYPE_VALUE Числовое сравнение (value1 сравнивается по правилу из value2)
9 TYPE_T_LEVEL Требование к цели: минимальный уровень
10 TYPE_T_GENDER Требование к цели: пол (0/1)
11 TYPE_SCRIPT Проверка через ScriptName (логика ядра/SmartTrigger)
12 TYPE_MAP_DIFFICULTY Требование: сложность (dungeon/raid)
13 TYPE_MAP_PLAYER_COUNT Требование: число игроков на карте/в зоне (по реализации)
14 TYPE_T_TEAM Требование к цели: команда (Alliance/Horde)
15 TYPE_S_DRUNK Требование к источнику: степень опьянения
16 TYPE_HOLIDAY Требование: активный праздник (Holiday)
17 TYPE_BG_LOSS_TEAM_SCORE Требование: победа команды и диапазон счёта противника (min/max)
18 TYPE_INSTANCE_SCRIPT Проверка через instance script
19 TYPE_S_EQUIPED_ITEM Требование к источнику: экипированный предмет (уровень предмета + качество)
20 TYPE_MAP_ID Требование: находиться на конкретной карте (mapId)
21 TYPE_S_PLAYER_CLASS_RACE Требование к источнику-игроку: класс + раса
22 TYPE_NTH_BIRTHDAY Требование: N-ый “день рождения” (событие/счётчик)
23 TYPE_S_KNOWN_TITLE Требование: известен титул (titleId)

Пример: 5

value1

Первое значение условия. Смысл зависит от type:

type value1 — что хранится
TYPE_T_CREATURE entry цели из creature_template
TYPE_T_PLAYER_CLASS_RACE classId цели (при этом value2 = raceId)
TYPE_T_PLAYER_LESS_HEALTH порог здоровья цели в процентах
TYPE_T_PLAYER_DEAD фракция/команда цели-игрока (должна совпасть с игроком, выполняющим критерий)
TYPE_S_AURA spellId ауры на игроке (при этом value2 = effectIndex)
TYPE_S_AREA AreaID (AreaTable)
TYPE_T_AURA spellId ауры на цели (при этом value2 = effectIndex)
TYPE_VALUE значение для сравнения
TYPE_T_LEVEL минимальный уровень цели
TYPE_T_GENDER пол цели: 0 = Male, 1 = Female
TYPE_SCRIPT не используется как данные (обычно 0)
TYPE_MAP_DIFFICULTY “map difficulty” (см. описание ниже)
TYPE_MAP_PLAYER_COUNT количество игроков (трактовка min/max зависит от реализации)
TYPE_T_TEAM команда цели: Alliance = 469, Horde = 67
TYPE_S_DRUNK степень опьянения (0..3)
TYPE_HOLIDAY HolidayID (Holiday + game_event)
TYPE_BG_LOSS_TEAM_SCORE min score противника
TYPE_INSTANCE_SCRIPT не используется как данные (обычно 0)
TYPE_S_EQUIPED_ITEM item level
TYPE_MAP_ID mapId (Map)
TYPE_S_PLAYER_CLASS_RACE classId источника (при этом value2 = raceId)
TYPE_NTH_BIRTHDAY номер “дня рождения”
TYPE_S_KNOWN_TITLE titleId (CharTitles)

Пример: 48890

value2

Второе значение условия. Используется только у части типов:

type value2 — что хранится
TYPE_T_PLAYER_CLASS_RACE raceId цели (ChrRaces)
TYPE_S_PLAYER_CLASS_RACE raceId источника (ChrRaces)
TYPE_S_AURA effectIndex ауры
TYPE_T_AURA effectIndex ауры
TYPE_BG_LOSS_TEAM_SCORE max score противника
TYPE_S_EQUIPED_ITEM item quality
TYPE_VALUE тип сравнения (ComparisationType)

Для TYPE_VALUE сравнение задаётся так:

Value ComparisationType Описание
0 COMP_TYPE_EQ равно
1 COMP_TYPE_HIGH строго больше
2 COMP_TYPE_LOW строго меньше
3 COMP_TYPE_HIGH_EQ больше или равно
4 COMP_TYPE_LOW_EQ меньше или равно

Пример: 0

ScriptName

Имя скрипта для проверки условия на стороне ядра (используется, когда type требует скриптовой проверки: TYPE_SCRIPT / TYPE_INSTANCE_SCRIPT и т. п.). Также может использоваться специальное имя, чтобы проверка выполнялась через SmartAI-триггер.

Пример: "SmartTrigger"