【问题标题】:Get damage value and school of magic incoming damage (WoW 1.13)获得伤害值和魔法学派受到的伤害(WoW 1.13)
【发布时间】:2020-03-03 22:44:19
【问题描述】:

我如何使用 lua 语言的 api World Of WarCraft 1.13 获得伤害值和传入伤害魔法的学校?其他玩家或暴徒对我造成的伤害。 这是必要的,以便我可以使用

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

这样我就可以加入聊天:

你受到了 100 点火焰伤害

你受到 50 点物理伤害

等等

【问题讨论】:

    标签: lua add-on world-of-warcraft


    【解决方案1】:

    经典实战日志应该和零售差不多
    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
    

    【讨论】:

      猜你喜欢
      • 2021-09-15
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      相关资源
      最近更新 更多