Получить информацию о достижениях участников текущего или только что закончившегося инстанс-ивента. Информация доступна автоматически сразу после завершения инстанс-ивента либо может быть получена запросом matchMaking.ListenEventProgress() (закрытая ссылка). В обоих случаях приходит сообщение EVENT_MATCH_MAKING_EVENT_PROGRESS_ADDED.
-- библиотека:
matchMaking
-- объявление:
function GetEventProgressInfo()
-- параметры:
нет
-- возвращаемое значение:
table or nil - таблица с описанием, если информация получена, содержит поля:
completed: boolean - завершился ли ивент
durationMs: number (integer) - фактическая длительность завершившегося инстанс-ивента (в миллисекундах), если ивент ещё не завершён, то 0
elapsedMs: number (integer) - время с начала инстанс-ивента в миллисекундах
round: number (integer) - номер текущего раунда (начинается с нуля)
durationsByRound: table - ключи - номера раундов, значения - длительность раундов
startTimesByRound: table - ключи - номера раундов, значения - время старта раундов
winnerBattlegroundMarkId: BattlegroundMarkId or nil - BattlegrounMarkId победившей команды в случае группового инстанс-ивента, nil в случае одиночного или ещё не завершённого
winnerFactionId: FactionId - FactionId победившей фракции в случае группового инстанс-ивента, nil в случае одиночного или ещё не завершённого
members: table of tables or nil - индексированная с нуля таблица с описаниями достижений отдельных участников инстанс-ивента, nil если механика данного инстанс-ивента подразумевает сокрытие участников; в каждом поле содержится таблица с описанием достижений участника инстанс-ивента, формат поля:
name: WString - ник игрока
shardName: WString - название шарда игрока
id: ObjectId or nil - идентификатор аватара(если доступен)
factionId: FactionId - фракция игрока
present: boolean - флаг наличия игрока на инстанс-ивенте (игрок может покинуть ивент до его окончания, в этом случае значение флага будет false)
achievements: table of tables - индексированная с нуля таблица с достижениями данного участника; в каждом поле содержится таблица с описанием достижения. ВАЖНО: набор полей может меняться в процессе сражения. Формат поля:
sysName: string или nil - если есть, то нелокализуемое системное имя достижения
name: WString - имя
description: WString - описание
value: number (integer) - количество
raceClass: table LuaRaceClassInfoPart - таблица с описанием расы/класса персонажа, см. описание по ссылке ниже
battlegroundMarkId: BattlegroundMarkId или nil - идентификатор команды, к которой принадлежит участник (используется для баттлграунда)
Пример:
local info = matchMaking.GetEventProgressInfo()
if info.winnerBattlegroundMarkId then
LogInfo( "Winner team: ", info.winnerBattlegroundMarkId:GetInfo() )
end
for i, memberInfo in pairs( info.members ) do
LogInfo( "-- member: ", memberInfo.name )
for j, achievInfo in pairs( info.memberInfo.achievements ) do
LogInfo( "-- achievement: ", achievInfo.name, achievInfo.value )
end
end
См. также