Smart scripts: различия между версиями
User1 (обсуждение | вклад) |
User1 (обсуждение | вклад) |
||
| Строка 277: | Строка 277: | ||
=== target_type === | === target_type === | ||
==== SMART_TARGET_NONE = 0, // NONE, defaulting to invoket ==== | |||
==== SMART_TARGET_SELF = 1, // Self cast ==== | |||
==== SMART_TARGET_VICTIM = 2, // Our current target (ie: highest aggro) ==== | |||
==== SMART_TARGET_HOSTILE_SECOND_AGGRO = 3, // Second highest aggro ==== | |||
==== SMART_TARGET_HOSTILE_LAST_AGGRO = 4, // Dead last on aggro ==== | |||
==== SMART_TARGET_HOSTILE_RANDOM = 5, // Just any random target on our threat list ==== | |||
==== SMART_TARGET_HOSTILE_RANDOM_NOT_TOP = 6, // Any random target except top threat ==== | |||
==== SMART_TARGET_ACTION_INVOKER = 7, // Unit who caused this Event to occur ==== | |||
==== SMART_TARGET_POSITION = 8, // use xyz from event params ==== | |||
==== SMART_TARGET_CREATURE_RANGE = 9, // CreatureEntry(0any), minDist, maxDist ==== | |||
==== SMART_TARGET_CREATURE_GUID = 10, // guid, entry ==== | |||
==== SMART_TARGET_CREATURE_DISTANCE = 11, // CreatureEntry(0any), maxDist ==== | |||
==== SMART_TARGET_STORED = 12, // id, uses pre-stored target(list) ==== | |||
==== SMART_TARGET_GAMEOBJECT_RANGE = 13, // entry(0any), min, max ==== | |||
==== SMART_TARGET_GAMEOBJECT_GUID = 14, // guid, entry ==== | |||
==== SMART_TARGET_GAMEOBJECT_DISTANCE = 15, // entry(0any), maxDist ==== | |||
==== SMART_TARGET_INVOKER_PARTY = 16, // invoker's party members ==== | |||
==== SMART_TARGET_PLAYER_RANGE = 17, // min, max ==== | |||
==== SMART_TARGET_PLAYER_DISTANCE = 18, // maxDist ==== | |||
==== SMART_TARGET_CLOSEST_CREATURE = 19, // CreatureEntry(0any), maxDist, dead? ==== | |||
==== SMART_TARGET_CLOSEST_GAMEOBJECT = 20, // entry(0any), maxDist ==== | |||
==== SMART_TARGET_CLOSEST_PLAYER = 21, // maxDist ==== | |||
==== SMART_TARGET_ACTION_INVOKER_VEHICLE = 22, // Unit's vehicle who caused this Event to occur ==== | |||
==== SMART_TARGET_OWNER_OR_SUMMONER = 23, // Unit's owner or summoner ==== | |||
==== SMART_TARGET_THREAT_LIST = 24, // All units on creature's threat list ==== | |||
==== SMART_TARGET_CLOSEST_ENEMY = 25, // maxDist ==== | |||
==== SMART_TARGET_CLOSEST_FRIENDLY = 26, // maxDist ==== | |||
==== SMART_TARGET_HOSTILE_RANDOM_PLAYER = 125, // Just any random target on our threat list player ==== | |||
==== SMART_TARGET_HOSTILE_RANDOM_NOT_TOP_PLAYER = 126, // Any random target except top threat player ==== | |||
==== SMART_TARGET_HOSTILE_RANDOM_AURA = 127, // Any random target except top threat player ==== | |||
==== SMART_TARGET_RANDOM_POSITION = 128, // Any random position ==== | |||
==== SMART_TARGET_TARGETUNIT = 129, // Target unit by GetTargetUnit() ==== | |||
==== SMART_TARGET_INVOKER_OWNER = 130, ==== | ==== SMART_TARGET_INVOKER_OWNER = 130, ==== | ||
'''Пример использования: если призванный игроком нпц(Х) суммонит нпц(У) и необходимо, чтобы нпц(У) взаимодействовало напрямую с игроком-призывателем нпц(Х), то юзается этот таргет.''' | '''Пример использования: если призванный игроком нпц(Х) суммонит нпц(У) и необходимо, чтобы нпц(У) взаимодействовало напрямую с игроком-призывателем нпц(Х), то юзается этот таргет.''' | ||
==== SMART_TARGET_INVOKERS_SUMMON_WITH_ENTRY = 131, ==== | |||
Таргет суммон инвокера по энтри(ид нпц) | |||
'''target_param1 = id NPC''' | |||
==== SMART_TARGET_INVOKERS_PASSENGER = 132, ==== | |||
Таргет пассажир инвокера | |||
'''target_param1 = id сиденья''' | |||
==== SMART_TARGET_SUMMONERS_SUMMON_WITH_ENTRY = 133, ==== | |||
Таргет нпц-суммон призывателя по энтри | |||
'''target_param1 = id нпц''' | |||
==== SMART_TARGET_SUMMON_WITH_ENTRY = 134, ==== | |||
Таргет нпц-суммон по энтри | |||
'''target_param1 = id нпц''' | |||
Версия от 13:31, 24 марта 2019
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; // Повторная проверка
SMART_EVENT_ON_OWNER_HAS_QUEST = 81,
При наличии(отсутствии) квеста у призывателя(овнера). Проверяется по указанному таймеру.
param1; // Id квеста param2; // Негатив. То есть если указанный квест отсутствует у игрока param3; // Таймер. Интервал с которым будет идти проверка. По дефолту выставлено в ядре 1500 мс(меньше не поставить, чтобы избежать фризов)
action_type
SMART_ACTION_SUMMON_CREATURE = 12
misc1 = id npc misc2 = тип суммона misc3 = длительность(мс) misc4 = добавить в лист суммонов misc5 = атаковать призывателя misc6 = взять фазы цели
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 = значение
SMART_ACTION_UPDATE_PLAYER_PHASES = 225,
Принудительное обновление фаз у игрока. Например для применение кондишена для какой-то фазы, которая еще не применена у игрока, но условия(например есть аура) для ее применения выполнены.
SMART_ACTION_SET_SPECIAL_DATA = 226,
Описание в 80 ивенте
misc1; // значение misc2; // добавить +1 к текущему значению кастом даты у таргета
SMART_ACTION_SEND_LAST_INVOKER = 227,
отправить последнего инвокера указанной цели. пример: вы берете квест у нпц Х и вам необходимо, чтобы нпц У мог юзать вас в качестве таргета #7. Соответственно вы юзаете 227 экшн при взятии квеста у нпц Х и указываете в качестве таргета нпц У.
SMART_ACTION_KILLCREDIT_GO = 228,
Засчитать в квест использование ГО. Пример квеста: q38934
misc1; // ИД ГО
SMART_ACTION_MAKE_CASTER_AND_CAST_SPELL = 229,
на данный момент бесполезен
SMART_ACTION_MEET_QUEST_OBJECTIVE_AREATRIGGER = 230,
Использовать вместо устаревшего 15 экшена.
misc1; // Id квеста
target_type
SMART_TARGET_NONE = 0, // NONE, defaulting to invoket
SMART_TARGET_SELF = 1, // Self cast
SMART_TARGET_VICTIM = 2, // Our current target (ie: highest aggro)
SMART_TARGET_HOSTILE_SECOND_AGGRO = 3, // Second highest aggro
SMART_TARGET_HOSTILE_LAST_AGGRO = 4, // Dead last on aggro
SMART_TARGET_HOSTILE_RANDOM = 5, // Just any random target on our threat list
SMART_TARGET_HOSTILE_RANDOM_NOT_TOP = 6, // Any random target except top threat
SMART_TARGET_ACTION_INVOKER = 7, // Unit who caused this Event to occur
SMART_TARGET_POSITION = 8, // use xyz from event params
SMART_TARGET_CREATURE_RANGE = 9, // CreatureEntry(0any), minDist, maxDist
SMART_TARGET_CREATURE_GUID = 10, // guid, entry
SMART_TARGET_CREATURE_DISTANCE = 11, // CreatureEntry(0any), maxDist
SMART_TARGET_STORED = 12, // id, uses pre-stored target(list)
SMART_TARGET_GAMEOBJECT_RANGE = 13, // entry(0any), min, max
SMART_TARGET_GAMEOBJECT_GUID = 14, // guid, entry
SMART_TARGET_GAMEOBJECT_DISTANCE = 15, // entry(0any), maxDist
SMART_TARGET_INVOKER_PARTY = 16, // invoker's party members
SMART_TARGET_PLAYER_RANGE = 17, // min, max
SMART_TARGET_PLAYER_DISTANCE = 18, // maxDist
SMART_TARGET_CLOSEST_CREATURE = 19, // CreatureEntry(0any), maxDist, dead?
SMART_TARGET_CLOSEST_GAMEOBJECT = 20, // entry(0any), maxDist
SMART_TARGET_CLOSEST_PLAYER = 21, // maxDist
SMART_TARGET_ACTION_INVOKER_VEHICLE = 22, // Unit's vehicle who caused this Event to occur
SMART_TARGET_OWNER_OR_SUMMONER = 23, // Unit's owner or summoner
SMART_TARGET_THREAT_LIST = 24, // All units on creature's threat list
SMART_TARGET_CLOSEST_ENEMY = 25, // maxDist
SMART_TARGET_CLOSEST_FRIENDLY = 26, // maxDist
SMART_TARGET_HOSTILE_RANDOM_PLAYER = 125, // Just any random target on our threat list player
SMART_TARGET_HOSTILE_RANDOM_NOT_TOP_PLAYER = 126, // Any random target except top threat player
SMART_TARGET_HOSTILE_RANDOM_AURA = 127, // Any random target except top threat player
SMART_TARGET_RANDOM_POSITION = 128, // Any random position
SMART_TARGET_TARGETUNIT = 129, // Target unit by GetTargetUnit()
SMART_TARGET_INVOKER_OWNER = 130,
Пример использования: если призванный игроком нпц(Х) суммонит нпц(У) и необходимо, чтобы нпц(У) взаимодействовало напрямую с игроком-призывателем нпц(Х), то юзается этот таргет.
SMART_TARGET_INVOKERS_SUMMON_WITH_ENTRY = 131,
Таргет суммон инвокера по энтри(ид нпц) target_param1 = id NPC
SMART_TARGET_INVOKERS_PASSENGER = 132,
Таргет пассажир инвокера target_param1 = id сиденья
SMART_TARGET_SUMMONERS_SUMMON_WITH_ENTRY = 133,
Таргет нпц-суммон призывателя по энтри target_param1 = id нпц
SMART_TARGET_SUMMON_WITH_ENTRY = 134,
Таргет нпц-суммон по энтри target_param1 = id нпц