Получите значение урона и школу магического входящего урона (WoW 1.13) - PullRequest
0 голосов
/ 07 ноября 2019

Как получить значение урона и школу магии входящего урона, используя API World Of WarCraft 1.13 на языке lua? Урон, нанесенный мне другим игроком или мобом. Это необходимо для того, чтобы я мог использовать

print("You received " .. damageValue .. " " .. damageSchool .. " damage")

Чтобы я мог войти в чат:

Вы получили 100 урона от огня

Вы получили 50 физическихурон

и т. д.

1 Ответ

0 голосов
/ 07 ноября 2019

Классический боевой журнал должен быть почти таким же, как в розницу
См. https://wow.gamepedia.com/COMBAT_LOG_EVENT

local playerGUID = UnitGUID("player")
local MSG_PLAYER_DAMAGE = "You received %d %s damage"

local damageEvents = {
    SWING_DAMAGE = true,
    SPELL_DAMAGE = true,
}

local f = CreateFrame("Frame")
f:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
f:SetScript("OnEvent", function(self, event)
    self:OnEvent(event, CombatLogGetCurrentEventInfo())
end)

function f:OnEvent(event, ...)
    local timestamp, subevent, _, sourceGUID, sourceName, sourceFlags, sourceRaidFlags, destGUID, destName, destFlags, destRaidFlags = ...
    local spellId, spellName, spellSchool
    local amount, overkill, school, resisted, blocked, absorbed, critical, glancing, crushing, isOffHand

    if subevent == "SWING_DAMAGE" then
        amount = select(12, ...)
    elseif subevent == "SPELL_DAMAGE" then
        spellId, spellName, spellSchool, amount = select(12, ...)
    end

    if damageEvents[subevent] and destGUID == playerGUID then
        print(MSG_PLAYER_DAMAGE:format(amount, GetSchoolString(spellSchool or 0x1)))
    end
end
...