Smart scripts
smart_scripts - таблица всевозможных действий существ. (ниже только наши "специфические")
event_type
SMART_EVENT_ACCEPTED_QUEST = 19,
При принятии задания игроком. Так же добавлена возможность установки кулдауна для срабатывания ивента.
questID - id задания
repeatMin;
repeatMax; Минимальное и максимальное время до повтора.
SMART_EVENT_REWARD_QUEST = 20,
При завершении задания игроком. Так же добавлена возможность установки кулдауна для срабатывания ивента.
questID - id задания
repeatMin;
repeatMax; Минимальное и максимальное время до повтора.
SMART_EVENT_GOSSIP_SELECT = 62,
При использовнии госсип меню
menuID - id меню
optionID - id опции
repeatMin;
repeatMax; Минимальное и максимальное время до повтора.
SMART_EVENT_ON_SPELLCLICK = 73,
При спеллклике
repeatMin;
repeatMax; Минимальное и максимальное время до повтора.
SMART_EVENT_CHECK_DIST_TO_HOME = 74,
Проверяет расстояние до позиции "спауна" (home). Если находится в пределах расстояния, указанного в maxDist, то делает действие.
maxDist - Максимальная дистанция, при которой будет срабатывать смарт
param 2; // пустое значение
repeatMin;
repeatMax;
Минимальное и максимальное время до повтора.
SMART_EVENT_EVENTOBJECT_ONTRIGGER = 75,
При достижении ивент объекта
param1; // пустое значение
repeatMin;
repeatMax;
Минимальное и максимальное время до повтора.
SMART_EVENT_EVENTOBJECT_OFFTRIGGER = 77,
При выходе из ивент объекта
param1; // пустое значение
repeatMin;
repeatMax;
Минимальное и максимальное время до повтора.
SMART_EVENT_ON_APPLY_OR_REMOVE_AURA = 78,
При наложении или снятии ауры с нпц
param1; // SpellId
param2; // режим снятия ауры(AURA_REMOVE_NONE = 0, AURA_REMOVE_BY_DEFAULT = 1, AURA_REMOVE_BY_CANCEL= 2,AURA_REMOVE_BY_ENEMY_SPELL, AURA_REMOVE_BY_EXPIRE, AURA_REMOVE_BY_DEATH,AURA_REMOVE_BY_MECHANIC,AURA_REMOVE_BY_DROP_CHARGERS, AURA_REMOVE_BY_INTERRUPT
param3; // при наложении = 1, при удалении = 0
param4; // КД на возможность повтора в мс
SMART_EVENT_ON_FIND_OBJECT_IN_RANGE = 79,
При обнаружении объекта в радиусе
param1; // Радиус
param2; // Тип(1 - игрок, 2 - НПЦ, 3 - ГО) param3; // Энтри(НПЦ ИД, ИД ГО, 0 - если игрок)
param4; // Время до повторной проверки
SMART_EVENT_ON_SPECIAL_DATA = 80,
При получении кастом даты. Пример использования: если по квесту суммонит волны аддов и необходимо чтобы только после убийства всех мобов первой волны суммонило следующую, то используйте этот ивент вместе с экшеном SMART_ACTION_SET_SPECIAL_DATA. Когда нпц из волны аддов погибает, то кидается кастом дата мобу, далее при накоплении нужного кол-ва дат происходит нужное вам действие.
param1; // Значение param2; // Повторная проверка
action_type
SMART_ACTION_MOVE_FORWARD = 46
Движение вперед
misc1 = Расстояние misc2 = 1 вкл бег, 0 выкл бег
SMART_ACTION_MOVE_TO_POS = 69
Движение в точку
misc1 = pointid(не обязательно) misc2 = 1 вкл бег, 0 выкл бег
SMART_ACTION_RANDOM_MOVE = 89
Случайное передвижение
misc1 = расстояние misc2 = 1 вкл бег, 0 выкл бег
SMART_ACTION_BOSS_EVADE = 200
Заставляет босса эвейднуться. Не имеет параметров.
SMART_ACTION_BOSS_ANOUNCE = 201
Делает анонс от лица босса в указанной локации указанного текста
tesxid - ид текста из trinity_strings, который будет заанонсен
area - арея, в которой будет анонс (по желанию). Если босс не в той арее, то анонса не будет
local - локализация
idsample - то, что будет указано перед самим текстом, так сказать, автор. Напрмер, если 3, то будет [SERVER]: {текст из tesxid}, если 4, то [Event Message]: {текст из tesxid}
SMART_ACTION_MOVE_Z = 202
Своего рода передвижение "по воздуху", то есть, полёт или движение в указанную точку
target X
target Y
target Z
Координаты, куда переместится моб
flymode если 1 - полетит, если 0 - побежит.
SMART_ACTION_SET_KD = 203
"Вручает" игрокам в инсте, где происходят событие, КД на этот инст. Не имеет параметров
SMART_ACTION_SET_SCENATIO_ID = 204
Если в первом параметре выставить ид нужного сценария и использовать на игрока (таргет), то при попадании игроком в инст, где должен происходить указанный сценарий, сценарий запустится автоматически.
Как найти ИД сценарий?
- В снифах в пакете SMSG_SCENARIO_STATE идет его ИД
- В дбц LfgDungeons.db2(но тут сложнее так как там их много)
SMART_ACTION_UPDATE_ACHIEVEMENT_CRITERIA = 205
Активирует обновление критерия ачивки. Эту штуку можно использовать посути вообще для всего: как засчет шагов в сценарии, так и комплит каких-либо других критериев.
Параметры:
uint32 type; - тип критерия
- ACHIEVEMENT_CRITERIA_TYPE_UPGRADE_GARRISON_BUILDING = 168,
- ACHIEVEMENT_CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING = 169,
- ACHIEVEMENT_CRITERIA_TYPE_UPGRADE_GARRISON = 170,
- ACHIEVEMENT_CRITERIA_TYPE_START_GARRISON_MISSION = 171,
Или которые используются иногда для сценариев, если там нету засчета по килу моба или касту спела
- ACHIEVEMENT_CRITERIA_TYPE_SCRIPT_EVENT = 73
- ACHIEVEMENT_CRITERIA_TYPE_SCRIPT_EVENT_2 = 92
uint32 misc1;
uint32 misc2;
uint32 misc3;
Это всевозможные параметры засчета. В основном misc1 - это количество, например убито мобов 1, 2 или 3
SMART_ACTION_SUMMON_CONVERSATION = 206
Принудительно-кастомный сумон конверсейшина. Как показала практика, не все они сумонятся из спелов.
Параметры:
uint32 id; ид конверсейшина. Берется только из снифов
Координаты, куда суммонить конверсейшин. Если они не указаны, то суммон идет под игрока (таргет).
int32 targetX;
int32 targetY;
int32 targetZ;
Зачем координаты?
В инсте суммон идет строго в одну точку. (вдруг близы забыли про спелл))) Если это всплывающая табличка, то координаты лучше не указывать, тогда будет суммон под игрока.
SMART_ACTION_SUMMON_ADD_PLR_PERSONNAL_VISIBILE = 207
добавляет игрока в персональную фазу для этого моба. Иначе говоря, если использовать этот смарт на игрока, то ТОЛЬКО этот игрок сможет видеть данного моба.
SMART_ACTION_SUMMON_ARIATRIGGER = 208
Параметры такие же, что и в 206 (конверсатион)
SMART_ACTION_JOIN_LFG = 209
Присоеденить игрока к лфг
SMART_ACTION_IGNORE_PATHFINDING = 219,
Вкл/откл игнорирование поиска путей
SMART_ACTION_SUMMON_CREATURE_IN_PERS_VISIBILITY = 220
Суммон моба с инстантным добавлением игрока(суммонера) в персональную видимость. Важно! Таргет у данного смарта всегда 7(т.е. игрок). Моб суммонится строго по координатам из данных - targetX, targetY, targetZ, targetO.
Параметры:
uint32 misc1; id npc
uint32 misc2; тип призыва. пример: TEMPSUMMON_TIMED_DESPAWN
uint32 misc3; таймер(в мс).
uint32 misc4; атаковать призывателя.
uint32 misc5; взять фазы призывателя при суммоне. вряд ли пригодится, так как суммон находится в персональной фазе с игроком.
uint32 misc6; 1 - суммонить в точку где стоит нпц. 0 - будут браться координаты из 7 таргета
SMART_ACTION_START_TIMED_ACHIEVEMENT = 221,
Запуск таймера у ачивмента
misc1 = Тип таймед критерии
misc2 - id критерии
SMART_ACTION_SEND_GO_VISUAL_ID = 222,
Отправка GO визуала по ид
misc1 = visual id
misc1 - misc6 = quest ID's
SMART_ACTION_COMPLETE_QUEST = 223,
Выполнить квест(условия). Больше нужно для комплита хайден квестов.
misc1 - misc6 = quest ID's
SMART_ACTION_SET_HEALTH_IN_PERCENT = 224,
Установить значение ХП от максимального в процентах
misc1 = значение
target_type
SMART_TARGET_INVOKER_OWNER = 130,
Пример использования: если призванный игроком нпц(Х) суммонит нпц(У) и необходимо, чтобы нпц(У) взаимодействовало напрямую с игроком-призывателем нпц(Х), то юзается этот таргет.