diff --git a/boot.lua b/boot.lua index ebfae4ee..c25b0223 100644 --- a/boot.lua +++ b/boot.lua @@ -8,7 +8,7 @@ _ = nil _detalhes = LibStub("AceAddon-3.0"):NewAddon("_detalhes", "AceTimer-3.0", "AceComm-3.0", "AceSerializer-3.0", "NickTag-1.0") - _detalhes.userversion = "v1.6.1" + _detalhes.userversion = "v1.6.3" _detalhes.version = "Alpha 010" _detalhes.realversion = 10 @@ -29,6 +29,8 @@ do --> containers --> armazenas as funções do parser - All parse functions _detalhes.parser = {} + _detalhes.parser_frame = CreateFrame ("Frame", nil, _UIParent) + _detalhes.parser_frame:Hide() --> armazena os escudos - Shields information for absorbs _detalhes.escudos = {} --> armazena os overwirtes de spells pelo usuario diff --git a/classes/classe_damage_habilidade.lua b/classes/classe_damage_habilidade.lua index 2b20094a..94c2f32a 100644 --- a/classes/classe_damage_habilidade.lua +++ b/classes/classe_damage_habilidade.lua @@ -37,7 +37,7 @@ function habilidade_dano:NovaTabela (id, link, token) --aqui eu n total = 0, --total de dano aplicado por esta habilidade counter = 0, --conta quantas vezes a habilidade foi chamada id = id, - --school = 0, + successful_casted = 0, --> normal n_min = 0, @@ -52,31 +52,21 @@ function habilidade_dano:NovaTabela (id, link, token) --aqui eu n c_dmg = 0, --> glacing - --g_min = 0, --not sure but, glancing min and max shouldn't be necessary - --g_max = 0, -- g_amt = 0, g_dmg = 0, --> resisted - --r_min = 0, --not sure but, resisted min and max shouldn't be necessary - --r_max = 0, -- r_amt = 0, r_dmg = 0, --> blocked - --b_min = 0, --not sure but, block min and max shouldn't be necessary - --b_max = 0, -- b_amt = 0, b_dmg = 0, --> obsorved - --a_min = 0, --not sure but, absorbed min and max shouldn't be necessary - --a_max = 0, -- a_amt = 0, a_dmg = 0, - --crushing = 0, --> this still exists? - targets = container_combatentes:NovoContainer (container_damage_target) } @@ -117,7 +107,6 @@ function habilidade_dano:Add (serial, nome, flag, amount, who_nome, resisted, bl self.counter = self.counter + 1 - --local alvo = self.targets:PegarCombatente (serial, nome, flag, true) local alvo = self.targets._NameIndexTable [nome] if (not alvo) then alvo = self.targets:PegarCombatente (serial, nome, flag, true) @@ -128,56 +117,26 @@ function habilidade_dano:Add (serial, nome, flag, amount, who_nome, resisted, bl if (resisted and resisted > 0) then self.r_dmg = self.r_dmg+amount --> tabela.total é o total de dano self.r_amt = self.r_amt+1 --> tabela.total é o total de dano - --if (amount > self.r_max) then - -- self.r_max = amount - --end - --if (self.r_min > amount or self.r_min == 0) then - -- self.r_min = amount - --end end if (blocked and blocked > 0) then self.b_dmg = self.b_dmg+amount --> amount é o total de dano self.b_amt = self.b_amt+1 --> amount é o total de dano - --if (amount > self.b_max) then - -- self.b_max = amount - --end - --if (self.b_min > amount or self.b_min == 0) then - -- self.b_min = amount - --end end if (absorbed and absorbed > 0) then self.a_dmg = self.a_dmg+amount --> amount é o total de dano self.a_amt = self.a_amt+1 --> amount é o total de dano - --if (amount > self.a_max) then - -- self.a_max = amount - --end - --if (self.a_min > amount or self.a_min == 0) then - -- self.a_min = amount - --end end - --if (amount and amount > 0) then - --if (amount and amount > 0) then - self.total = self.total + amount - - --alvo:AddQuantidade (amount) alvo.total = alvo.total + amount if (glacing) then - -- esta_tabela.glacing = {["mim"] = 0, ["max"] = 0, ["total"] = 0, ["dmg"] = 0} self.g_dmg = self.g_dmg+amount --> amount é o total de dano self.g_amt = self.g_amt+1 --> amount é o total de dano - --if (amount > self.g_max) then - -- self.g_max = amount - --end - --if (self.g_min > amount or self.g_min == 0) then - -- self.g_min = amount - --end + elseif (critical) then - --esta_tabela.critico = {["mim"] = 0, ["max"] = 0, ["total"] = 0, ["dmg"] = 0} self.c_dmg = self.c_dmg+amount --> amount é o total de dano self.c_amt = self.c_amt+1 --> amount é o total de dano if (amount > self.c_max) then @@ -187,7 +146,6 @@ function habilidade_dano:Add (serial, nome, flag, amount, who_nome, resisted, bl self.c_min = amount end else - --esta_tabela.normal = {["mim"] = 0, ["max"] = 0, ["total"] = 0, ["dmg"] = 0} self.n_dmg = self.n_dmg+amount self.n_amt = self.n_amt+1 if (amount > self.n_max) then @@ -276,7 +234,8 @@ end habilidade_dano.__add = function (tabela1, tabela2) tabela1.total = tabela1.total + tabela2.total tabela1.counter = tabela1.counter + tabela2.counter - + tabela1.successful_casted = tabela1.successful_casted + tabela2.successful_casted + tabela1.n_min = tabela1.n_min + tabela2.n_min tabela1.n_max = tabela1.n_max + tabela2.n_max tabela1.n_amt = tabela1.n_amt + tabela2.n_amt @@ -315,6 +274,7 @@ end habilidade_dano.__sub = function (tabela1, tabela2) tabela1.total = tabela1.total - tabela2.total tabela1.counter = tabela1.counter - tabela2.counter + tabela1.successful_casted = tabela1.successful_casted - tabela2.successful_casted tabela1.n_min = tabela1.n_min - tabela2.n_min tabela1.n_max = tabela1.n_max - tabela2.n_max diff --git a/classes/classe_instancia.lua b/classes/classe_instancia.lua index 3b33a40c..43638a0e 100644 --- a/classes/classe_instancia.lua +++ b/classes/classe_instancia.lua @@ -860,6 +860,9 @@ function _detalhes:RestauraJanela (index, temp) self.consolidate = self.consolidate or false self.icons = self.icons or {true, true, true, true} + + --> teste + --self.barrasInfo.altura = 14 self.barrasInfo.mostrando = 0 self.barrasInfo.criadas = 0 @@ -970,7 +973,19 @@ function _detalhes:RefreshBars (instance) self = instance end if (self.barras and self.barras[1]) then + + local altura = self.barrasInfo.altura + for index, row in _ipairs (self.barras) do + + local y = self.barrasInfo.alturaReal * (row.row_id - 1) + y = y*-1 + row:SetPoint ("TOPLEFT", self.baseframe, "TOPLEFT", self.barrasInfo.espaco.esquerda, y) + row:SetHeight (altura) + row.icone_classe:SetHeight (altura) + row.icone_classe:SetWidth (altura) + row.icone_terceiro:SetHeight (altura) + row.icone_terceiro:SetWidth (altura) row.textura:SetTexture (self.barrasInfo.textura) @@ -984,8 +999,8 @@ function _detalhes:RefreshBars (instance) row.background:SetVertexColor (r, g, b, c[4]) end - row.texto_esquerdo:SetFont (self.barrasInfo.font or "GameFontHighlight", self.barrasInfo.fontSize or self.barrasInfo.altura*0.75) - row.texto_direita:SetFont (self.barrasInfo.font or "GameFontHighlight", self.barrasInfo.fontSize or self.barrasInfo.altura*0.75) + row.texto_esquerdo:SetFont (self.barrasInfo.font or "GameFontHighlight", self.barrasInfo.fontSize or altura * 0.75) + row.texto_direita:SetFont (self.barrasInfo.font or "GameFontHighlight", self.barrasInfo.fontSize or altura * 0.75) end end end diff --git a/classes/classe_others.lua b/classes/classe_others.lua index 1f2921a0..ad72c06e 100644 --- a/classes/classe_others.lua +++ b/classes/classe_others.lua @@ -1005,7 +1005,8 @@ function _detalhes:CatchRaidDebuffUptime (in_or_out) -- "DEBUFF_UPTIME_IN" for raidIndex = 1, _GetNumGroupMembers() do local his_target = _UnitGUID ("raid"..raidIndex.."target") - if (his_target and not checked [his_target] and UnitReaction ("raid"..raidIndex.."target", "player") <= 4) then + local rect = UnitReaction ("raid"..raidIndex.."target", "player") + if (his_target and rect and not checked [his_target] and rect <= 4) then checked [his_target] = true diff --git a/classes/container_historico.lua b/classes/container_historico.lua index f76009aa..ca56f00f 100644 --- a/classes/container_historico.lua +++ b/classes/container_historico.lua @@ -42,6 +42,7 @@ function historico:adicionar (tabela) --> fazer limpeza na tabela local _segundo_combate = self.tabelas[2] + local _terceiro_combate = self.tabelas[3] local container_damage = _segundo_combate [1] local container_heal = _segundo_combate [2] @@ -63,29 +64,58 @@ function historico:adicionar (tabela) end end - --[[ - if (self.tabelas[3]) then - if (self.tabelas[3].is_trash and self.tabelas[2].is_trash and not self.tabelas[3].is_boss and not self.tabelas[2].is_boss) then - --> tabela 2 deve ser deletada e somada a tabela 1 - if (_detalhes.debug) then - detalhes:Msg ("(debug) concatenating two trash segments.") + if (_detalhes.trash_auto_remove) then + if (_terceiro_combate) then + if (_terceiro_combate.is_trash and not _terceiro_combate.is_boss) then + _detalhes.tabela_overall = _detalhes.tabela_overall - _terceiro_combate + --> verificar novamente a time machine + for _, jogador in ipairs (_terceiro_combate [1]._ActorTable) do --> damage + if (jogador.timeMachine) then + jogador:DesregistrarNaTimeMachine() + end + end + for _, jogador in ipairs (_terceiro_combate [2]._ActorTable) do --> heal + if (jogador.timeMachine) then + jogador:DesregistrarNaTimeMachine() + end + end + --> remover + _table_remove (self.tabelas, 3) + _detalhes:SendEvent ("DETAILS_DATA_SEGMENTREMOVED", nil, nil) end - - self.tabelas[2] = self.tabelas[2] + self.tabelas[3] - _detalhes.tabela_overall = _detalhes.tabela_overall - self.tabelas[3] - - self.tabelas[2].is_trash = true - - --> remover - _table_remove (self.tabelas, 3) - _detalhes:SendEvent ("DETAILS_DATA_SEGMENTREMOVED", nil, nil) end - --> debug - --self.tabelas[2] = self.tabelas[2] + self.tabelas[3] - --_table_remove (self.tabelas, 3) + elseif (_detalhes.trash_concatenate) then + + if (_terceiro_combate) then + if (_terceiro_combate.is_trash and _segundo_combate.is_trash and not _terceiro_combate.is_boss and not _segundo_combate.is_boss) then + --> tabela 2 deve ser deletada e somada a tabela 1 + if (_detalhes.debug) then + detalhes:Msg ("(debug) concatenating two trash segments.") + end + + _segundo_combate = _segundo_combate + _terceiro_combate + _detalhes.tabela_overall = _detalhes.tabela_overall - _terceiro_combate + + _segundo_combate.is_trash = true + + --> verificar novamente a time machine + for _, jogador in ipairs (_terceiro_combate [1]._ActorTable) do --> damage + if (jogador.timeMachine) then + jogador:DesregistrarNaTimeMachine() + end + end + for _, jogador in ipairs (_terceiro_combate [2]._ActorTable) do --> heal + if (jogador.timeMachine) then + jogador:DesregistrarNaTimeMachine() + end + end + --> remover + _table_remove (self.tabelas, 3) + _detalhes:SendEvent ("DETAILS_DATA_SEGMENTREMOVED", nil, nil) + end + end end - --]] end diff --git a/core/parser.lua b/core/parser.lua index 5bcb0b0c..ae60bc12 100644 --- a/core/parser.lua +++ b/core/parser.lua @@ -206,7 +206,6 @@ end end - --]] --> damager shadow local shadow = este_jogador.shadow @@ -348,6 +347,8 @@ owner_target = meu_dono.targets._ActorTable [owner_target] end owner_target.total = owner_target.total + amount + + meu_dono.last_event = _tempo end --> actor @@ -374,7 +375,6 @@ spell = este_jogador.spell_tables:PegaHabilidade (spellid, true, token) end - --return spell:Add (alvo_serial, alvo_name, alvo_flags, amount, who_name, resisted, blocked, absorbed, critical, glacing, token) return spell_damage_func (spell, alvo_serial, alvo_name, alvo_flags, amount, who_name, resisted, blocked, absorbed, critical, glacing, token) end @@ -457,6 +457,11 @@ ------------------------------------------------------------------------------------------------ --> early checks and fixes + --> only capture heal if is in combat + if (not _in_combat) then + return + end + --> check nil serial against pets if (who_serial == "0x0000000000000000") then if (who_flags and _bit_band (who_flags, OBJECT_TYPE_PETS) ~= 0) then --> é um pet @@ -486,11 +491,10 @@ _current_heal_container.need_refresh = true _overall_heal_container.need_refresh = true - + ------------------------------------------------------------------------------------------------ --> get actors - --> debug - no cache local este_jogador, meu_dono = healing_cache [who_name] if (not este_jogador) then --> pode ser um desconhecido ou um pet este_jogador, meu_dono, who_name = _current_heal_container:PegarCombatente (who_serial, who_name, who_flags, true) @@ -1487,7 +1491,7 @@ end - --> search key: ~spellcast castspell + --> search key: ~spellcast ~castspell ~cast function parser:spellcast (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spelltype) --print (token, time, "WHO:",who_serial, who_name, who_flags, "TARGET:",alvo_serial, alvo_name, alvo_flags, "SPELL:",spellid, spellname, spelltype) @@ -1512,7 +1516,21 @@ return end else - --> + --> successful casts (not interrupted) + if (_bit_band (who_flags, 0x00000040) ~= 0) then --> byte 2 = 4 (enemy) + --> damager + local este_jogador = damage_cache [who_name] + if (not este_jogador) then + este_jogador = _current_damage_container:PegarCombatente (who_serial, who_name, who_flags, true) + end + --> actor spells table + local spell = este_jogador.spell_tables._ActorTable [spellid] + if (not spell) then + spell = este_jogador.spell_tables:PegaHabilidade (spellid, true, token) + end + spell.successful_casted = spell.successful_casted + 1 + --print ("cast success", who_name, spellname) + end return end @@ -1924,7 +1942,7 @@ --> build dead - if (alvo_flags and _bit_band (alvo_flags, 0x00000008) ~= 0) then -- and _in_combat --byte 1 = 8 (AFFILIATION_OUTSIDER) + if (_in_combat and alvo_flags and _bit_band (alvo_flags, 0x00000008) ~= 0) then -- and _in_combat --byte 1 = 8 (AFFILIATION_OUTSIDER) --> outsider death while in combat --> frags @@ -1966,10 +1984,13 @@ --> check if it's done local its_done = true - for _, killed in pairs (_detalhes.encounter.data) do + for npcID, killed in pairs (_detalhes.encounter.data) do if (not killed) then its_done = false + --print ("npc",npcID,"NAO esta morto","quem morreu:",alvo_name) break + else + --print ("npc",npcID,"esta morto","quem morreu:",alvo_name) end end @@ -1978,6 +1999,9 @@ if (_detalhes.debug) then _detalhes:Msg ("(debug) combat finished: encounter objective is completed") end + + --print ("saindo do combate") + _detalhes:SairDoCombate (true) end end @@ -2017,44 +2041,6 @@ misc_cache [alvo_name] = este_jogador end end - - --[[ - if (dano.last_events_table) then - - local novaTabela = {} - local counter = 1 - - --> junta os danos iguais - for i = 1, #dano.last_events_table, 1 do - - local este_dano = dano.last_events_table[i] - local proximo_dano = dano.last_events_table[counter+1] - - if (este_dano and proximo_dano) then - - local spellId_this = este_dano[2] - local tempo_this = este_dano[4] - - local spellId_next = proximo_dano[2] - local tempo_next = proximo_dano[4] - - if (spellId_this == spellId_next and _cstr ("%.1f", tempo_this) == _cstr ("%.1f", tempo_next)) then - este_dano[3] = este_dano[3] + proximo_dano[3] - if (not este_dano [7]) then - este_dano[7] = 2 - else - este_dano[7] = este_dano[7] + 1 - end - _table_remove (dano.last_events_table, counter+1) - end - - end - - counter = counter + 1 - - end - end - --]] --> monta a estrutura da morte pegando a tabela de dano e a tabela de cura local dano = _current_combat[1]:PegarCombatente (alvo_serial, alvo_name, alvo_flags, true) --> container do dano @@ -2313,60 +2299,13 @@ -- PARSER - --serach key: ~parser - function parser:do_parser (time, token, hidding, who_serial, who_name, who_flags, who_flags2, alvo_serial, alvo_name, alvo_flags, alvo_flags2, ...) + --serach key: ~parser ~event - --print (token) - - -- DEBUG - --[ - --if (alvo_name == "Ditador") then - -- local a, b, c, d, e, f, g, h, i, j, k = select (1, ...) - -- print (token, who_name, a, b, c, d, e, f, g, h, i, j, k) - --end - --]] - --[[ - if (who_name == "Ditador") then - if (token:find ("CAST")) then - - if (token == "SPELL_CAST_START") then - _detalhes.castStart = time - end - - if (token == "SPELL_CAST_SUCCESS") then - local tempoGasto = time - _detalhes.castStart - local default_cast_time = 2500 -- 2.5 sec - print (tempoGasto) - - local arg1, arg2, arg3, arg4, arg5 = select (1, ...) - local cd = GetSpellCooldown (arg1) - print (cd) - end - --local arg1, arg2, arg3, arg4, arg5 = select (1, ...) - --print (token, arg1, arg2, arg3, arg4, arg5) - --local name, rank, icon, cost, isFunnel, powerType, castTime, minRange, maxRange = GetSpellInfo (arg1) - --print (castTime) - end - end - --]] - - local funcao = token_list [token] - if (funcao) then - return funcao (nil, token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, ... ) - else - return - end - end - - --serach key: ~event function _detalhes:OnEvent (evento, ...) --print (evento, select (1, ...)) - - if (evento == "COMBAT_LOG_EVENT_UNFILTERED") then - return parser:do_parser (...) - - elseif (evento == "ZONE_CHANGED_NEW_AREA" or evento == "PLAYER_ENTERING_WORLD") then + + if (evento == "ZONE_CHANGED_NEW_AREA" or evento == "PLAYER_ENTERING_WORLD") then local zoneName, zoneType, _, _, _, _, _, zoneMapID = _GetInstanceInfo() @@ -2512,6 +2451,16 @@ end _detalhes.listener:SetScript ("OnEvent", _detalhes.OnEvent) + + function _detalhes:OnParserEvent (evento, time, token, hidding, who_serial, who_name, who_flags, who_flags2, alvo_serial, alvo_name, alvo_flags, alvo_flags2, ...) + local funcao = token_list [token] + if (funcao) then + return funcao (nil, token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, ... ) + else + return + end + end + _detalhes.parser_frame:SetScript ("OnEvent", _detalhes.OnParserEvent) function _detalhes:UpdateParser() _tempo = _detalhes._tempo diff --git a/functions/savedata.lua b/functions/savedata.lua index e03a5980..8e6dfd9f 100644 --- a/functions/savedata.lua +++ b/functions/savedata.lua @@ -122,6 +122,8 @@ function _detalhes:SaveDataOnLogout() _detalhes_global.memory_threshold = _detalhes.memory_threshold _detalhes_global.memory_ram = _detalhes.memory_ram _detalhes_global.remove_realm_from_name = _detalhes.remove_realm_from_name + _detalhes_global.trash_concatenate = _detalhes.trash_concatenate + _detalhes_global.trash_auto_remove = _detalhes.trash_auto_remove _detalhes_global.SpellOverwriteUser = _detalhes.SpellOverwriteUser @@ -330,7 +332,9 @@ end --]] _detalhes.memory_threshold = _detalhes_global.memory_threshold _detalhes.memory_ram = _detalhes_global.memory_ram _detalhes.remove_realm_from_name = _detalhes_global.remove_realm_from_name - + _detalhes.trash_concatenate = _detalhes_global.trash_concatenate + _detalhes.trash_auto_remove = _detalhes_global.trash_auto_remove + _detalhes.SpellOverwriteUser = _detalhes_global.SpellOverwriteUser or _detalhes.SpellOverwriteUser else _detalhes.is_first_run = true diff --git a/gumps/janela_options.lua b/gumps/janela_options.lua index cea4798e..149781eb 100644 --- a/gumps/janela_options.lua +++ b/gumps/janela_options.lua @@ -339,6 +339,28 @@ function _detalhes:OpenOptionsWindow (instance) end window.fragsPvpSlider.tooltip = "Only record frags from player characters." + --------------- Concatenate Trash + g:NewLabel (window, _, "$parentConcatenateTrash", "concatenateTrashLabel", "concatenate clean up segments") + window.concatenateTrashLabel:SetPoint (10, -344) + -- + g:NewSwitch (window, _, "$parentConcatenateTrashSlider", "concatenateTrashSlider", 60, 20, _, _, _detalhes.trash_concatenate) + window.concatenateTrashSlider:SetPoint ("left", window.concatenateTrashLabel, "right") + window.concatenateTrashSlider.OnSwitch = function (self, _, amount) --> slider, fixedValue, sliderValue + _detalhes.trash_concatenate = amount + end + window.concatenateTrashSlider.tooltip = "Concatenate the next boss segments into only one." + + --------------- Erase Trash + g:NewLabel (window, _, "$parentEraseTrash", "eraseTrashLabel", "remove clean up segments") + window.eraseTrashLabel:SetPoint (10, -359) + -- + g:NewSwitch (window, _, "$parentRemoveTrashSlider", "removeTrashSlider", 60, 20, _, _, _detalhes.trash_auto_remove) + window.removeTrashSlider:SetPoint ("left", window.eraseTrashLabel, "right") + window.removeTrashSlider.OnSwitch = function (self, _, amount) --> slider, fixedValue, sliderValue + _detalhes.trash_auto_remove = amount + end + window.removeTrashSlider.tooltip = "Auto erase the next boss segments." + -- Current Instalnce -------------------------------------------------------------------------------------------------------------------------------------------- @@ -364,7 +386,7 @@ function _detalhes:OpenOptionsWindow (instance) g:NewLabel (window, _, "$parentFontSizeLabel", "fonsizeLabel", "text size") window.fonsizeLabel:SetPoint (250, -53) -- - g:NewSlider (window, _, "$parentSliderFontSize", "fonsizeSlider", 90, 20, 8, 15, 1, tonumber (instance.barrasInfo.fontSize)) --parent, container, name, member, w, h, min, max, step, defaultv + g:NewSlider (window, _, "$parentSliderFontSize", "fonsizeSlider", 150, 20, 8, 15, 1, tonumber (instance.barrasInfo.fontSize)) --parent, container, name, member, w, h, min, max, step, defaultv window.fonsizeSlider:SetPoint ("left", window.fonsizeLabel, "right", 2) window.fonsizeSlider:SetThumbSize (50) window.fonsizeSlider:SetHook ("OnValueChange", function (self, instance, amount) @@ -555,6 +577,21 @@ function _detalhes:OpenOptionsWindow (instance) instance:InstanceRefreshRows() end + --------------- Bar Height + g:NewLabel (window, _, "$parentRowHeightLabel", "rowHeightLabel", "bar height") + window.rowHeightLabel:SetPoint (250, -163) + -- + g:NewSlider (window, _, "$parentSliderRowHeight", "rowHeightSlider", 170, 20, 10, 30, 1, tonumber (instance.barrasInfo.altura)) --parent, container, name, member, w, h, min, max, step, defaultv + window.rowHeightSlider:SetPoint ("left", window.rowHeightLabel, "right", 2) + window.rowHeightSlider:SetThumbSize (50) + window.rowHeightSlider:SetHook ("OnValueChange", function (self, instance, amount) + instance.barrasInfo.altura = amount + instance.barrasInfo.alturaReal = instance.barrasInfo.altura+instance.barrasInfo.espaco.entre + instance:RefreshBars() + instance:InstanceReset() + instance:ReajustaGump() + end) + --------------- Background local onSelectSecTexture = function (self, instance, texturePath) @@ -1333,6 +1370,9 @@ function _detalhes:OpenOptionsWindow (instance) _G.DetailsOptionsWindowFontDropdown.MyObject:SetFixedParameter (instance) _G.DetailsOptionsWindowFontDropdown.MyObject:Select (instance.barrasInfo.fontName) -- + _G.DetailsOptionsWindowSliderRowHeight.MyObject:SetFixedParameter (instance) + _G.DetailsOptionsWindowSliderRowHeight.MyObject:SetValue (instance.barrasInfo.altura) + -- _G.DetailsOptionsWindowSliderFontSize.MyObject:SetFixedParameter (instance) _G.DetailsOptionsWindowSliderFontSize.MyObject:SetValue (instance.barrasInfo.fontSize) -- diff --git a/gumps/janela_principal.lua b/gumps/janela_principal.lua index 1350fa31..d89166b3 100644 --- a/gumps/janela_principal.lua +++ b/gumps/janela_principal.lua @@ -2174,11 +2174,12 @@ end function gump:NewRow (instancia, index) return gump:CriaNovaBarra (instancia, index) end - +--> search key: ~row ~barra function gump:CriaNovaBarra (instancia, index) local BaseFrame = instancia.baseframe local esta_barra = _CreateFrame ("Button", "DetailsBarra_"..instancia.meu_id.."_"..index, BaseFrame) + esta_barra.row_id = index local y = instancia.barrasInfo.alturaReal*(index-1) y = y*-1 diff --git a/locales/Details-enUS.lua b/locales/Details-enUS.lua index 3891d579..9dddda70 100644 --- a/locales/Details-enUS.lua +++ b/locales/Details-enUS.lua @@ -4,7 +4,7 @@ if not Loc then return end -------------------------------------------------------------------------------------------------------------------------------------------- -- \n\n|cFFFFFF00-|r - Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.6.1|r\n\n|cFFFFFF00-|r Fixed:\n- a issue with debuff uptime.\n- overall data dps and hps for overall data on micro display.\n- many bugs involving sword and book menus.\n- garbage collector erasing actors with interactions with your group members.\n\n|cFFFFFF00-|r overall data now always use the combat data for measure dps and hps.\n\n|cFFFFFF00v1.6.0|r\n\n|cFFFFFF00-|r Added debuff uptime at misc attribute.\n\n|cFFFFFF00-|r Disabled attributes now have a darkness effect over sword menu.\n\n|cFFFFFF00-|r Fixed a issue were sometimes you need to /reload before change a talent.\n\n|cFFFFFF00v1.5.3|r\n\n|cFFFFFF00-|r Fixed a issue with report data during combat lockdown.\n\n|cFFFFFF00-|r Improved pet owner recognition and added a ignore list if couldn't find his owner.\n\n|cFFFFFF00-|r Added an option to display only frags on enemy players.\n\n|cFFFFFF00-|r Added class colors for frags.\n\n|cFFFFFF00v1.5.2|r\n\n|cFFFFFF00-|r Fixed a issue were turning off buff uptime was disabling healing done too.\n\n|cFFFFFF00-|r Avoidance statistics will not be recorded for pets, ungrouped players and monsters.\n\n|cFFFFFF00-|r Fixed a issue were sometimes buff uptime was taking too long to save data on logout.\n\n|cFFFFFF00v1.5.1|r\n\n|cFFFFFF00-|r Fixed a issue with report data were sometimes wasn't working.\n\n|cFFFFFF00v1.5.0|r\n\n|cFFFFFF00-|r Buff Uptime was been implemented over Miscellaneous attribute.\n\n|cFFFFFF00-|r Death Logs now also display cooldowns and last cooldown used.\n\n|cFFFFFF00-|r Added this window showing the latest changes.\n\n|cFFFFFF00-|r Fixed the issue were sometimes the instance stops to update when clicking on the attribute name over sword menu.\n\n|cFFFFFF00-|r Disabling Healing now shutdown the absorbs too, disabling auras doesn't interrupt absorbs any more.\n\n|cFFFFFF00-|r Friendly Fire now only track players which is inside a group.\n\n|cFFFFFF00-|r Fixed a issue were pet damage on target isn't added to owner target.\n\n|cFFFFFF00-|r Fixed a bug were refreshing a cooldown isn't counting.\n\n|cFFFFFF00-|r Added absorbs for shammy and monk 2P tier 16.\n\n|cFFFFFF00-|r Added slash command 'worldboss' and 'updates'.\n\n" + Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.6.3|r\n\n|cFFFFFF00-|r data capture now runs 4% faster.\n\n|cFFFFFF00-|r Fixed issue with pets were wasn't uptading owner activity time.\n\n|cFFFFFF00-|r Fixed healing being counted even out of combat.\n\n|cFFFFFF00-|r Fixed some problems with multi-boss encountes like Twin Consorts.\n\n|cFFFFFF00-|r Added options for concatenate trash segments.\n\n|cFFFFFF00-|r Added options for auto remove trash segments. \n\n|cFFFFFF00-|r Added options for change bar height. \n\n|cFFFFFF00-|r Encounter Details now display how many interrupted and successful cast of a boss skill.\n\n|cFFFFFF00v1.6.1|r\n\n|cFFFFFF00-|r Fixed:\n- a issue with debuff uptime.\n- overall data dps and hps for overall data on micro display.\n- many bugs involving sword and book menus.\n- garbage collector erasing actors with interactions with your group members.\n\n|cFFFFFF00-|r overall data now always use the combat data for measure dps and hps.\n\n|cFFFFFF00v1.6.0|r\n\n|cFFFFFF00-|r Added debuff uptime at misc attribute.\n\n|cFFFFFF00-|r Disabled attributes now have a darkness effect over sword menu.\n\n|cFFFFFF00-|r Fixed a issue were sometimes you need to /reload before change a talent.\n\n|cFFFFFF00v1.5.3|r\n\n|cFFFFFF00-|r Fixed a issue with report data during combat lockdown.\n\n|cFFFFFF00-|r Improved pet owner recognition and added a ignore list if couldn't find his owner.\n\n|cFFFFFF00-|r Added an option to display only frags on enemy players.\n\n|cFFFFFF00-|r Added class colors for frags.\n\n|cFFFFFF00v1.5.2|r\n\n|cFFFFFF00-|r Fixed a issue were turning off buff uptime was disabling healing done too.\n\n|cFFFFFF00-|r Avoidance statistics will not be recorded for pets, ungrouped players and monsters.\n\n|cFFFFFF00-|r Fixed a issue were sometimes buff uptime was taking too long to save data on logout.\n\n|cFFFFFF00v1.5.1|r\n\n|cFFFFFF00-|r Fixed a issue with report data were sometimes wasn't working.\n\n|cFFFFFF00v1.5.0|r\n\n|cFFFFFF00-|r Buff Uptime was been implemented over Miscellaneous attribute.\n\n|cFFFFFF00-|r Death Logs now also display cooldowns and last cooldown used.\n\n|cFFFFFF00-|r Added this window showing the latest changes.\n\n|cFFFFFF00-|r Fixed the issue were sometimes the instance stops to update when clicking on the attribute name over sword menu.\n\n|cFFFFFF00-|r Disabling Healing now shutdown the absorbs too, disabling auras doesn't interrupt absorbs any more.\n\n|cFFFFFF00-|r Friendly Fire now only track players which is inside a group.\n\n|cFFFFFF00-|r Fixed a issue were pet damage on target isn't added to owner target.\n\n|cFFFFFF00-|r Fixed a bug were refreshing a cooldown isn't counting.\n\n|cFFFFFF00-|r Added absorbs for shammy and monk 2P tier 16.\n\n|cFFFFFF00-|r Added slash command 'worldboss' and 'updates'.\n\n" Loc ["STRING_DETAILS1"] = "|cffffaeaeDetails:|r " --> color and details name diff --git a/locales/Details-ptBR.lua b/locales/Details-ptBR.lua index f609888b..9582d45a 100644 --- a/locales/Details-ptBR.lua +++ b/locales/Details-ptBR.lua @@ -3,7 +3,7 @@ if not Loc then return end -------------------------------------------------------------------------------------------------------------------------------------------- - Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.6.1|r\n\n|cFFFFFF00-|r Corrigido:\n- problema com o tempo de debuffs.\n- dps dos dados gerais e o dps no micro display .\n- varios bugs envolvendo o menu da espada e do livro.\n- o coletor de lixo nao ira mais apagar jogadores com vinculo a membros do grupo.\n\n|cFFFFFF00-|r dados gerais agora sempre ira usar o tempo do combate para medir dps e hps.\n\n|cFFFFFF00v1.6.0|r\n\n|cFFFFFF00-|r Adicionado tempo de debuff no atributo miscelanea.\n\n|cFFFFFF00-|r Atributos desativados agora ficam escurecidos no menu da espada.\n\n|cFFFFFF00-|r Corrigido um problema aonde algumas vezes era necessario dar /reload para trocar um talento.\n\n|cFFFFFF00v1.5.3|r\n\n|cFFFFFF00-|r Corrigido problema ao reportar durante o combate.\n\n|cFFFFFF00-|r Melhorado a reconhecimento dos donos de ajudantes.\n\n|cFFFFFF00-|r Adicionada uma opcao para mostrar apenas frags em cima de jogadores inimigos.\n\n|cFFFFFF00-|r Adicionado cor e icone aos frags.\n\n|cFFFFFF00v1.5.2|r\n\n|cFFFFFF00-|r Corrigido problema onde desativando o tempo dos buffs estava desativando tambem a cura feita.\n\n|cFFFFFF00-|r Estatisticas de Avoidance nao seram mais capturadas para pessoas foram do grupo, monstros ou ajudantes.\n\n|cFFFFFF00-|r Corrigido problema onde as vezes estava demorando muito para salvar o tempo dos buffs ao sair do jogo.\n\n|cFFFFFF00v1.5.1|r\n\n|cFFFFFF00-|r Corrigido problema ao reportar o Dps onde as vezes nao mostrava nenhum jogador.\n\n|cFFFFFF00v1.5.0|r\n\n|cFFFFFF00-|r Buff Uptime foi implementado no atributo miscelanea.\n\n|cFFFFFF00-|r Cooldowns usados agora aparecem nos registros da morte.\n\n|cFFFFFF00-|r Implementado esta janela mostrando as atualizacoes.\n\n|cFFFFFF00-|r Corrigido problema onde algumas vezes clicando no nome do atributo fazia a instancia parar de atualizar.\n\n|cFFFFFF00-|r Desativando a cura agora para as absorcoes tambem. Desligando as Auras nao interrompe as absorcoes. \n\n|cFFFFFF00-|r Fogo Amigo agora conta apenas jogadores dentro do grupo.\n\n|cFFFFFF00-|r Corrigido problema onde o dano feito por um ajudando nao estava contando no alvo do dono.\n\n|cFFFFFF00-|r Corrigido problema onde a atualizacao de um cooldown nao estava sendo contada.\n\n|cFFFFFF00-|r Adicionada as magias de absorcao para 2P tier 16.\n\n|cFFFFFF00-|r Adicionado os comandos de barra 'worldboss' e 'updates'.\n\n|cFFFFFF00-|r Corrigido problema ao reportar onde algumas vezes nao estava funcionando." + Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.6.3|r\n\n|cFFFFFF00-|r captura de dados agora roda 4% mais rapido.\n\n|cFFFFFF00-|r Corrigido problema onde os ajudantes nao atualizavam o tempo de atividade do dono.\n\n|cFFFFFF00-|r Corrigido problema onde o healing era contado mesmo fora do combate.\n\n|cFFFFFF00-|r Corrigido problema com chefes multiplos como Twin Consorts.\n\n|cFFFFFF00-|r Adicionada opcao para juntar os segmentos de trash mobs.\n\n|cFFFFFF00-|r Adicionada opcao para auto remover os segmentos de trash mobs. \n\n|cFFFFFF00-|r Adicionada opcao para alterar a altura das barras.\n\n|cFFFFFF00-|r Plugin Encounter Details agora mostra quantos cast bem sucedidos as magias interrompidas tiveram.\n\n|cFFFFFF00v1.6.1|r\n\n|cFFFFFF00-|r Corrigido:\n- problema com o tempo de debuffs.\n- dps dos dados gerais e o dps no micro display .\n- varios bugs envolvendo o menu da espada e do livro.\n- o coletor de lixo nao ira mais apagar jogadores com vinculo a membros do grupo.\n\n|cFFFFFF00-|r dados gerais agora sempre ira usar o tempo do combate para medir dps e hps.\n\n|cFFFFFF00v1.6.0|r\n\n|cFFFFFF00-|r Adicionado tempo de debuff no atributo miscelanea.\n\n|cFFFFFF00-|r Atributos desativados agora ficam escurecidos no menu da espada.\n\n|cFFFFFF00-|r Corrigido um problema aonde algumas vezes era necessario dar /reload para trocar um talento.\n\n|cFFFFFF00v1.5.3|r\n\n|cFFFFFF00-|r Corrigido problema ao reportar durante o combate.\n\n|cFFFFFF00-|r Melhorado a reconhecimento dos donos de ajudantes.\n\n|cFFFFFF00-|r Adicionada uma opcao para mostrar apenas frags em cima de jogadores inimigos.\n\n|cFFFFFF00-|r Adicionado cor e icone aos frags.\n\n|cFFFFFF00v1.5.2|r\n\n|cFFFFFF00-|r Corrigido problema onde desativando o tempo dos buffs estava desativando tambem a cura feita.\n\n|cFFFFFF00-|r Estatisticas de Avoidance nao seram mais capturadas para pessoas foram do grupo, monstros ou ajudantes.\n\n|cFFFFFF00-|r Corrigido problema onde as vezes estava demorando muito para salvar o tempo dos buffs ao sair do jogo.\n\n|cFFFFFF00v1.5.1|r\n\n|cFFFFFF00-|r Corrigido problema ao reportar o Dps onde as vezes nao mostrava nenhum jogador.\n\n|cFFFFFF00v1.5.0|r\n\n|cFFFFFF00-|r Buff Uptime foi implementado no atributo miscelanea.\n\n|cFFFFFF00-|r Cooldowns usados agora aparecem nos registros da morte.\n\n|cFFFFFF00-|r Implementado esta janela mostrando as atualizacoes.\n\n|cFFFFFF00-|r Corrigido problema onde algumas vezes clicando no nome do atributo fazia a instancia parar de atualizar.\n\n|cFFFFFF00-|r Desativando a cura agora para as absorcoes tambem. Desligando as Auras nao interrompe as absorcoes. \n\n|cFFFFFF00-|r Fogo Amigo agora conta apenas jogadores dentro do grupo.\n\n|cFFFFFF00-|r Corrigido problema onde o dano feito por um ajudando nao estava contando no alvo do dono.\n\n|cFFFFFF00-|r Corrigido problema onde a atualizacao de um cooldown nao estava sendo contada.\n\n|cFFFFFF00-|r Adicionada as magias de absorcao para 2P tier 16.\n\n|cFFFFFF00-|r Adicionado os comandos de barra 'worldboss' e 'updates'.\n\n|cFFFFFF00-|r Corrigido problema ao reportar onde algumas vezes nao estava funcionando." Loc ["STRING_DETAILS1"] = "|cffffaeaeDetalhes:|r " --> color and details name diff --git a/plugins/Details_EncounterDetails/Details_EncounterDetails.lua b/plugins/Details_EncounterDetails/Details_EncounterDetails.lua index c2f80d72..da624a8b 100644 --- a/plugins/Details_EncounterDetails/Details_EncounterDetails.lua +++ b/plugins/Details_EncounterDetails/Details_EncounterDetails.lua @@ -1104,10 +1104,21 @@ function EncounterDetails:OpenAndRefresh() barra.report_text = "Details! ".. Loc ["STRING_INTERRUPT_BY"] end + local spellid = tabela [3] + local nome_magia, _, icone_magia = _GetSpellInfo (tabela [3]) + local successful = 0 + --> pegar quantas vezes a magia passou com sucesso. + for _, enemy_actor in _ipairs (DamageContainer._ActorTable) do + if (enemy_actor.spell_tables._ActorTable [spellid]) then + local spell = enemy_actor.spell_tables._ActorTable [spellid] + successful = spell.successful_casted + end + end barra.texto_esquerdo:SetText (nome_magia) - barra.texto_direita:SetText (tabela [2]) + local total = successful + tabela [2] + barra.texto_direita:SetText (tabela [2] .. " / ".. total) _detalhes:name_space (barra) diff --git a/startup.lua b/startup.lua index f72781df..a1db0371 100644 --- a/startup.lua +++ b/startup.lua @@ -37,6 +37,13 @@ function _G._detalhes:Start() self.deadlog_limit = self.deadlog_limit or 12 self.minimum_combat_time = self.minimum_combat_time or 5 + if (type (self.trash_concatenate) ~= "boolean") then + self.trash_concatenate = false + end + if (type (self.trash_auto_remove) ~= "boolean") then + self.trash_auto_remove = false + end + if (type (self.only_pvp_frags) ~= "boolean") then self.only_pvp_frags = false end @@ -245,7 +252,8 @@ function _G._detalhes:Start() --> load parser capture options self:CaptureRefresh() --> register parser events - self.listener:RegisterEvent ("COMBAT_LOG_EVENT_UNFILTERED") + --self.listener:RegisterEvent ("COMBAT_LOG_EVENT_UNFILTERED") + self.parser_frame:RegisterEvent ("COMBAT_LOG_EVENT_UNFILTERED") self.listener:RegisterEvent ("PLAYER_REGEN_DISABLED") self.listener:RegisterEvent ("PLAYER_REGEN_ENABLED") self.listener:RegisterEvent ("SPELL_SUMMON")