Skip to content
Dmitry Shin edited this page Oct 5, 2020 · 177 revisions

Команды режима отладки

Все сообщения отладки выводятся в консоль TERA Toolbox (Tera-Proxy).

Toolbox(/8) Описание команды
guide debug s Вкл./выкл. вывода информации об умениях босса.
guide debug am Вкл./выкл. вывода информации об эффектах, наложенных на вас боссом.
guide debug ae Вкл./выкл. вывода информации об эффектах, наложенных на вас сервером.
guide debug ab Вкл./выкл. вывода информации об эффектах, наложенных на босса.
guide debug ar Вкл./выкл. вывода информации об удалении эффектов с вас.
guide debug ad Вкл./выкл. вывода информации об удалении эффектов с босса.
guide debug h Вкл./выкл. вывода информации о здоровье босса.
guide debug ns Вкл./выкл. вывода информации о спауне NPC.
guide debug nd Вкл./выкл. вывода информации о деспауне NPC.
guide debug dm Вкл./выкл. вывода информации Dungeon Message.
guide debug qb Вкл./выкл. вывода информации Quest Balloon.
guide debug all Вкл./выкл. вывода всей отладочной информации (установленные выше опции игнорируются).
guide debug chat Вкл./выкл. вывода отладочной информации в чат Proxy в игре.
guide debug status Отобразить состояние всех настроек режима отладки.

Команды обработчика событий

Toolbox(/8) Описание команды
guide event load zone Загрузить указанный в параметре zone гайд (указывается id данжа из списка поддерживаемых). Допустимо указание значения test для чтения гайда из файла guides/test.js (пример файла https://github.com/hsdn/tera-guide/wiki/Test-Guide). При загрузке будут добавлены все хуки, связанные с гайдом.
guide event reload Перезагрузить конфигурацию и хуки текущего загруженного гайда.
guide event unload Выгрузить всю конфигурацию и удалить хуки для текущего загруженного гайда.
guide event trigger key Выполнить событие из загруженного гайда, где key указывается ключ события.
guide event spawn context Создать объект (предмет, табличка и т.д.), где context указывается запись в формате JSON.
guide event text context Вывести текстовое сообщение в чат или на экран, где context указывается запись в формате JSON.

Примеры

/8 guide event load 3026
/8 guide event trigger "s-3026-1000-2153-0"
/8 guide event text '{"sub_type":"message","message":"Сообщение"}'
/8 guide event spawn '{"sub_type":"item","id":"88704","sub_delay":"999999"}'

Как создать свой гайд

Сначала установите параметры отладки при помощи команд описанных выше (для добавления хуков и вывода нужной информации), затем войдите в данж, для которого вы хотите создать гайд. Как только вы вошли, посмотрите в консоли на идентификатор (id). Далее создайте файл в папке guides. Имя файла должно состоять из id (номера) данжа с расширением ".js". Первой строкой в файле необходимо указать комментарий с названием данжа на английском языке (см. примеры в существующих файлах). Редактирование файла config.json не требуется, вся необходимая информация о конфигурации созданного гайда будет добавлена автоматически при входе в игру.

Важно отметить, что вам нужно будет включить основную информацию для загрузки в созданный файл:

module.exports = (dispatch, handlers, guide, lang) => {
   // здесь описываются вспомогательные функции

   return {
     // здесь описывается сценарий гайда
   }; 
};

Принимаемые аргументы

dispatch - объект экземпляра класса Dispatch (экземпляр модуля доступен как dispatch._dispatch).
handlers - объект экземпляра класса Handlers, содержит все функции обработчиков событий.
guide - объект данных загруженного гайда.
lang - объект данных языковых настроек.

Хуки

Хук (hook) - функция, вызываемая при срабатывании определенного событии, сгенерированного игрой (например при атаке босса, наложении эффекта и т.д.). Каждый хук может быть связан с необходимым алгоритмом обработки при помощи сценария гайда. О том как написать свой сценарий и связать нужные хуки с желаемыми действиями (выводом текста на экран, спауном маркеров и т.д.) - читайте ниже.

Примечание: все хуки, связанные с включенными опциями отладки, будут принудительно добавлены в любой гайд при его загрузке, даже если его сценарий не содержит ключей, добавляющих данные хуки.

Написание сценария

Для написания сценария используется определенный формат, заданный в виде объекта JavaScript {...}, возвращаемого основной функцией в файле гайда (в значении оператора return). Каждый элемент данного объекта представляет из себя ключ, в значении которого указывается массив [...] с объектами {...}, содержащими параметры, необходимые для обработки событий. Форматы ключей и объектов обработки событий описаны ниже.

Формат ключа

Ключ представляет из себя строку, разделенную символами "-", состоящую из: префикса (указывающего на тип отслеживаемого события), идентификатора зоны huntingZoneId (id данжа или локации), идентификатора босса/моба templateId, а также отслеживаемой информации (hp% босса, идентификатор умения, стадия анимации умения и т.д.).

Пример ключа:

"s-735-1000-304-0": [...]

s - префикс, указывающий на обработку умения босса (при загрузке гайда будет добавлен нужный хук).
735 - идентификатор данжа (обычно совпадает с идентификатором гайда).
1000 - идентификатор босса (первый босс обычно имеет id 1000, второй босс 2000 и т.д.).
304 - идентификатор умения босса (формат может отличаться в зависимости от указанного типа гайда, см. ниже).
0 - стадия анимации умения босса (многие анимации умений имеют несколько стадий, указываемых от 0 до n).

Типы гайдов (диапазоны идентификаторов умений)

Существует несколько типов форматирования идентификаторов умений боссов, предназначенных для упрощения написания сценариев. Например если необходимо, чтобы все умения босса учитывали состояние его ярости, можно указать тип SP, после чего вначале идентификатора будет добавлена дополнительная цифра, указывающая на состояние босса. Ниже представлена таблица с описанием всех типов.

Тип Диапазоны Возможное применение
SP 1000-1999
2000-2999
3000-3999
Обработка умений в состоянии ярости (2000-2999) и без ярости (1000-1999), а также обработка специальных умений.
ES 100-299
3000-3999
Обработка умений без учета состояния ярости, а также обработка специальных умений.
нет 100-399 Обработка умений без учета состояния ярости.

Тип форматирования указывается внутри основной функции в файле гайда при помощи свойства type для аргумента guide. Значение задается в виде констант SP или ES, например:

guide.type = SP;

При отсутствии указания типа, будет применено форматирование по умолчанию (диапазон 100-399).

Формат объекта обработки события

Чтобы обрабатывать событие, вызываемое хуком при нахождении соответствующего ключа в сценарии, необходимо в массиве значения ключа указать один или более объектов обработки событий. Объект обработки событий представляет из себя набор параметров, описывающих то или иное действие, выполняемое при срабатывании события.

Пример объекта обработки события:

{ type: "text", sub_type: "message", message: "Out", message_RU: "От него" }

type - тип действия, которое необходимо совершить ("text" - вывод сообщения на экран).
sub_type - дополнительный параметр для типа "text" ("message" - стандартное сообщение).
message и message_RU - тексты сообщения на разных языках.

Набор параметров не ограничивается только теми, которые указаны в примере выше. Объекты событий могут описывать не только вывод сообщений на экран, но и спаун сложных объектов, вызов функций, проигрывание речи и т.д. Точный список всех доступных параметров описан в таблице ниже.

Пример готового сценария:

   return {
      // ключи            // массивы объектов обработки события
      "s-735-1000-304-0": [{ type: "text", sub_type: "message", message: "Out", message_RU: "От него" }],
      "s-735-1000-305-0": [{ type: "text", sub_type: "message", message: "In", message_RU: "К нему" }],
   };

Префиксы ключей

Префикс a указывает на средство обработки эффекта. Однако помимо этого, есть подтипы к эффектам:

Подтип Описание
m Эффект был наложен на вас боссом.
e Эффект был наложен на вас сервером.
b Эффект был наложен на босса.
r Эффект был удален.
d Эффект был удален с босса.

Префикс s указывает на обработку умения NPC.
Префикс h указывает на здоровье NPC (только целые числа). Например h-735-1000-60 означает, что событие сработает на 60% здоровья.
Префикс ns указывает на обработку событий спауна (выполняется при появлении босса).
Префикс nd указывает на обработку событий деспауна (выполняется при смерти/вайпе босса).
Префикс dm указывает на обработку Dungeon Message.
Префикс qb указывает на обработку Quest Balloon.

Для записей, указывающих обработку умений NPC, после последней "-" всегда указывается значение стадии анимации (число 0 или больше). Например для срабатывания на нулевой (0) стадии анимации умения с id 304, указывается: s-735-1000-304-0.

Все хуки, связанные с указанным в ключе префиксом, будут добавлены автоматически при загрузке гайда.

Параметры объекта обработки события

Параметр (ключ) Обязательный Значения Использование
type Да text, spawn, despawn, despawn_all, marker, marker_remove, marker_remove_all, func, stop_timers Определяет, какие действия будут произведены при вызове события.
sub_type Да(text), Возможно(spawn), Нет message(text), notification(text), alert(text), warning(text), collection(spawn(default)), item(spawn), build_object(spawn) Используется в сочетании с определенными типами.
id Да(spawn, marker, marker_remove), Нет Уникальный идентификатор. Используется для спауна объекта (item id), размещения маркера на цель (gameId). НЕ ИСПОЛЬЗУЙТЕ 0 ДЛЯ ID НИ В КАКОМ СЛУЧАЕ!
delay Нет Задержка в миллисекундах Создает таймер, который можно использовать для задержки ЛЮБОГО события.
sub_delay Да(spawn), Возможно(marker), Нет Продолжительность существования в миллисекундах. Используется при спауне объектов или при размещении маркера на цели.
distance Возможно(spawn), Нет Дистанция в единицах (1 метр = 25 ед.) Используется при спауне (насколько далеко будет размещено относительно NPC).
offset Возможно(spawn), Нет -PI, PI Используется при спауне (угол смещения относительно NPC). используйте это или pos
pos Возможно(spawn), Нет { x, y, z } Используется при спауне (указание координат на карте). используйте это или offset
message, message_LANG Да(text), Нет Текст, который вы хотите отобразить при выполнении записи. Используйте с типом text.
func Да(func), Нет Функция, которая должна вызываться при выполнении записи. Вызов будет передан указанной функции с параметрами события, из которого оно было вызвано, такими как: ent - сущность объекта босса, event - сущность события, handlers - сущность обработчиков.
args Да(func), Возможно(spawn), Нет Список аргументов функции Определяет список аргументов, передаваемых в функцию, указанную в func.
color Возможно(marker), Нет red, yellow, blue Определяет наименования цвета маркера.
class_position Нет tank, dps, heal, priest, mystic, lancer Если это используется, событие будет выполняться только для указанного игрового класса.

Функции спауна (если указан аргумент "func" для события типа "spawn")

Все функции описаны в классе Spawn в файле lib/spawn.js модуля tera-guide-core.

item - Создать предмет (выброшенный на землю)

Аргументы функции: item, angle, distance, delay, duration

Аргумент Значение Использование
item Число Идентификатор предмета, см. https://teralore.com/ru/items/
angle Число Угол поворота относительно точки привязки (допускается отрицательное значение)
distance Число Смещение относительно точки привязки в единицах (25 ед. = 1 метр)
delay Число Временная задержка до спауна в миллисекундах
duration Число Продолжительность спауна в миллисекундах

Пример использования:

{ "type": "spawn", "func": "item", "args": [88704, 0, 0, 0, 1000] }

marker - Создать маркер (табличка с надписью)

Аргументы функции: target, angle, distance, delay, duration, highlight, label

Аргумент Значение Использование
target true, false Использование сущности dest вместо loc при определении точки привязки
angle Число Угол поворота относительно точки привязки (допускается отрицательное значение)
distance Число Смещение относительно точки привязки в единицах (25 ед. = 1 метр)
delay Число Временная задержка до спауна в миллисекундах
duration Число Продолжительность спауна в миллисекундах
highlight true, false Разрешить/запретить свечение (создание доп.объекта)
label [Строка, Строка], null Тексты надписей на табличке (заголовок, текст)

Пример использования:

{ "type": "spawn", "func": "marker", "args": [false, 180, 100, 0, 2000, false, ["CENTER", "IN"]] }

point - Создать точку

Аргументы функции: item, angle, distance, delay, duration

Аргумент Значение Использование
item Число Идентификатор предмета, см. https://teralore.com/ru/gatherables/
angle Число Угол поворота относительно точки привязки (допускается отрицательное значение)
distance Число Смещение относительно точки привязки в единицах (25 ед. = 1 метр)
delay Число Временная задержка до спауна в миллисекундах
duration Число Продолжительность спауна в миллисекундах

Пример использования:

{ "type": "spawn", "func": "point", "args": [553, 120, 250, 0, 3000] }

vector - Создать вектор (линию)

Аргументы функции: item, offsetAngle, offsetDistance, angle, length, delay, duration

Аргумент Значение Использование
item Число Идентификатор предмета, см. https://teralore.com/ru/gatherables/
offsetAngle Число Угол поворота смещения относительно точки привязки (допускается отрицательное значение)
offsetDistance Число Смещение относительно точки привязки в единицах (25 ед. = 1 метр)
angle Число Угол поворота вектора относительно смещения (допускается отрицательное значение)
length Число Длина вектора в единицах (25 ед. = 1 метр)
delay Число Временная задержка до спауна в миллисекундах
duration Число Продолжительность спауна в миллисекундах

Пример использования:

{ "type": "spawn", "func": "vector", "args": [553, 0, 0, 240, 380, 0, 2000] },
{ "type": "spawn", "func": "vector", "args": [553, 0, 0, 120, 380, 0, 2000] }

circle - Создать круг

Аргументы функции: target, item, offsetAngle, offsetDistance, interval, radius, delay, duration

Аргумент Значение Использование
target true, false Использование сущности dest вместо loc при определении точки привязки
item Число Идентификатор предмета, см. https://teralore.com/ru/gatherables/
offsetAngle Число Угол поворота смещения относительно точки привязки (допускается отрицательное значение)
offsetDistance Число Смещение относительно точки привязки в единицах (25 ед. = 1 метр)
interval Число Интервал чередования объектов (меньшее значение - больше объектов)
radius Число Радиус круга в единицах (25 ед. = 1 метр)
delay Число Временная задержка до спауна в миллисекундах
duration Число Продолжительность спауна в миллисекундах

Пример использования:

{ "type": "spawn", "func": "circle", "args": [true, 553, 0, 300, 12, 228, 0, 3000] }

semicircle - Создать полукруг

Аргументы функции: degree1, degree2, item, offsetAngle, offsetDistance, interval, radius, delay, duration

Аргумент Значение Использование
degree1 Число Градус первой половины полукруга (допускается отрицательное значение)
degree2 Число Градус второй половины полукруга (допускается отрицательное значение)
item Число Идентификатор предмета, см. https://teralore.com/ru/gatherables/
offsetAngle Число Угол поворота смещения относительно точки привязки (допускается отрицательное значение)
offsetDistance Число Смещение относительно точки привязки в единицах (25 ед. = 1 метр)
interval Число Интервал чередования объектов (меньшее значение - больше объектов)
radius Число Радиус круга в единицах (25 ед. = 1 метр)
delay Число Временная задержка до спауна в миллисекундах
duration Число Продолжительность спауна в миллисекундах

Пример использования:

{ "type": "spawn", "func": "semicircle", "args": [-60, 70, 912, 0, 50, 8, 450, 0, 4000] },
{ "type": "spawn", "func": "semicircle", "args": [120, 250, 912, 0, 50, 8, 450, 0, 4000] }

Основные объекты маркеров

id Название
553 Цилиндр с циазмами
912 Яйцо страуса
445 Эфра
537 Мутировавший гриб
413 Сладкий сеноцвет
476 Лазурный осколок
548 Отражающий корень

Объекты маркеров подсветки

id Название Свечение
89542 Диск уничтожения Синий столб
89543 Диск уничтожения Фиолетовый столб
206960 Ящик с дыханием мира Красный столб
110684 Исключительное Парные клинки Синий столб (без надписи)
88704 Памятная монета Велики Высокий столб

Список идентификаторов данжей

https://teralore.com/ru/instances/
https://teralore.com/en/instances/

Clone this wiki locally