Персонаж: me

Данные персонажа, события, зона, транспорт и активные эффекты.

Подмодуль mod.game.me описывает текущего персонажа. Загружается по умолчанию; сведения о персонаже имеют смысл после входа в игру.

Проверка персонажа

mod.game.me.is(gameId) проверяет принадлежность ID текущему персонажу. Используйте результат как условие: текущая реализация возвращает this.gameId && this.gameId === gameId, поэтому до входа результат может быть null, а не строго false.

Свойства

Свойство Описание
gameId ID текущего игрового объекта до выхода/возврата к выбору персонажа
templateId Шаблон персонажа из UserData
serverId ID сервера
playerId Постоянный ID персонажа на сервере; пара serverId/playerId различает персонажей региона
name, level Имя и уровень
class, race, gender Строковые значения из DataCenter; например fighter, а не brawler
zone ID текущей зоны
alive Жив ли персонаж
mounted Находится ли на обычном транспорте
mountId, mountSkill Данные текущего транспорта
status Статус из S_USER_STATUS
inCombat Находится ли в бою
onPegasus Выполняется ли перелет на пегасе
inOpenWorld Открытый мир
inBattleground Поле боя
inDungeon Подземелье
inCivilUnrest Civil Unrest

Не путайте gameId и playerId: первый относится к игровому объекту в текущем подключении, второй — к персонажу на сервере.

События

Событие и аргументы Когда вызывается
change_template(templateId, className, race, gender) S_LOGIN или смена героя TBA
change_zone(zone, quick) Изменение зоны на S_LOAD_TOPO; quick: false означает экран загрузки
die() Смерть персонажа
resurrect() Воскрешение
mount(id, skill) Посадка на обычный транспорт; не пегас/NPC
dismount() Сход с обычного транспорта
change_name(name) Изменение имени в игре
change_level(level) Изменение уровня
enter_combat(), leave_combat() Вход/выход из боя
start_pegasus(), finish_pegasus() Начало/конец перелета

change_zone не срабатывает при смене канала или телепортации внутри той же зоны. Подписка: mod.game.me.on('change_level', (level) => { ... }). Имя аргумента className в JavaScript используется вместо зарезервированного слова class.

Abnormalities

Включите дополнительную функцию в конструкторе:

mod.game.initialize('me.abnormalities');

mod.game.me.abnormalities — объект с ID эффектов в ключах. Значения содержат id, число стаков stacks, время окончания until (timestamp в миллисекундах, BigInt), оставшееся время remaining в миллисекундах и data — ссылку на справочник эффектов. В текущей реализации положительный remaining — BigInt, а истекший эффект возвращает число 0; для дальнейшей арифметики явно нормализуйте тип.

for (const abnormality of Object.values(mod.game.me.abnormalities)) {
    mod.log(`${abnormality.data?.name ?? abnormality.id}: ${abnormality.stacks}`);
    for (const effect of abnormality.data?.effects ?? []) {
        mod.log(`Type ${effect.type}, method ${effect.method}, value ${effect.value}`);
    }
}

Источники: mods/tera-game-state/doc/me.md, mods/tera-game-state/lib/me.js.