- Fixed some colors issues with enemies bars.

- Fixed some translations between ptBR -> enUS.
- More fixes with target damage and debuff uptime on overall segment.
- Major rewrite on CC Breaks, now it's working properly.
- Non player or pet Enemies will be flagged with .monster member.
- New member for combat object: start_time, end_time = combat_object:GetDate()
- Added new sub attribute for damage: Voidzones & Auras.
- First implementation of Hooks for plugins capture parser events in realtime.
- Added API: _detalhes:InstallHook (hooktype, func).
func receive parameters: token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname
- Added Global: DETAILS_HOOK_COOLDOWN
- Added API: _detalhes:StatusBarAlert (text, icon, color, time)
- Added API: _detalhes:InstallSkin (skin_name, skin_table)
More information on skin table, see the file functions/skins.lua
This commit is contained in:
Tercio
2013-12-09 21:51:32 -02:00
parent aee1488df7
commit bb6e7bdb6e
25 changed files with 664 additions and 159 deletions
+2
View File
@@ -14,6 +14,8 @@ locales\Details-enUS.lua
boot.lua
core\util.lua
functions\hooks.lua
functions\skins.lua
functions\boss.lua
functions\spells.lua
functions\events.lua
+7 -29
View File
@@ -2,15 +2,15 @@
--Last Modification: 27/07/2013
-- Change Log:
-- 27/07/2013: Finished alpha version.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> global name declaration
_ = nil
_detalhes = LibStub("AceAddon-3.0"):NewAddon("_detalhes", "AceTimer-3.0", "AceComm-3.0", "AceSerializer-3.0", "NickTag-1.0")
_detalhes.userversion = "v1.6.7"
_detalhes.version = "Alpha 010"
_detalhes.realversion = 10
_detalhes.userversion = "v1.7.0"
_detalhes.version = "Alpha 011"
_detalhes.realversion = 11
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> initialization stuff
@@ -60,31 +60,9 @@ do
_detalhes.pets_ignored = {}
_detalhes.pets_no_owner = {}
--> armazena as skins disponíveis para as janelas
_detalhes.skins = {["Default Skin"] = {file = "default_skin", author = "Details!", version = "1.0", site = "unknown", desc = "default skin for Details!", can_change_alpha_head = false, icon_anchor_main = {-1, 1}, icon_anchor_plugins = {-9, -7}, icon_plugins_size = {19, 19}}}
_detalhes.skin_path = "Interface\\AddOns\\Details\\images\\skins\\"
-- temporariamente aqui, precisa migrar para um arquivo separado
function _detalhes:InstallSkin (skin_name, skin_table)
if (not skin_name) then
return false -- sem nome
elseif (_detalhes.skins [skin_name]) then
return false -- ja existe
end
if (not skin_table.file) then
return false -- sem arquivo
end
skin_table.author = skin_table.author or ""
skin_table.version = skin_table.version or ""
skin_table.site = skin_table.site or ""
skin_table.desc = skin_table.desc or ""
_detalhes.skins [skin_name] = skin_table
return true
end
_detalhes:InstallSkin ("Flat Color", {file = "flat_skin", author = "Details!", version = "1.0", site = "unknown", desc = "a flat skin", can_change_alpha_head = true, icon_anchor_main = {-1, -5}, icon_anchor_plugins = {-7, -13}, icon_plugins_size = {19, 18}})
_detalhes.skins = {}
--> armazena os hooks das funções do parser
_detalhes.hooks = {}
--> Plugins
--> raid -------------------------------------------------------------------
+4
View File
@@ -207,6 +207,10 @@ function combate:UltimaAcao (tempo)
end
end
function combate:GetDate()
return self.data_inicio, self.data_fim
end
function combate:seta_data (tipo)
if (tipo == _detalhes._detalhes_props.DATA_TYPE_START) then
self.data_inicio = _date ("%H:%M:%S")
+231 -18
View File
@@ -32,6 +32,7 @@ local container_habilidades = _detalhes.container_habilidades
local container_combatentes = _detalhes.container_combatentes
local container_pets = _detalhes.container_pets
local atributo_damage = _detalhes.atributo_damage
local atributo_misc = _detalhes.atributo_misc
local habilidade_dano = _detalhes.habilidade_dano
local container_damage_target = _detalhes.container_type.CONTAINER_DAMAGETARGET_CLASS
@@ -191,14 +192,6 @@ end
for index, player in _ipairs (container) do
if (_bit_band (player.flag_original, 0x00000040) ~= 0) then --> é um inimigo
-- ele vai contar os inimigos com 0 tbm
--if (player[keyName] < 1) then --> dano menor que 1, interromper o loop
-- amount = index - 1
-- break
--end
total = total + player [keyName]
else
amount = index-1
@@ -367,17 +360,15 @@ function atributo_damage:AtualizarFrags (tabela, qual_barra, colocacao, instanci
end
--> ele nao come o texto quando a instância esta muito pequena
esta_barra.textura:SetVertexColor (_unpack (_detalhes.class_colors [tabela [3]]))
esta_barra.icone_classe:SetTexture ("Interface\\AddOns\\Details\\images\\classes_small")
if (tabela [3] == "UNKNOW" or tabela [3] == "UNGROUPPLAYER") then
if (tabela [3] == "UNKNOW" or tabela [3] == "UNGROUPPLAYER" or tabela [3] == "ENEMY") then
esta_barra.icone_classe:SetTexture ("Interface\\LFGFRAME\\LFGROLE_BW")
esta_barra.icone_classe:SetTexCoord (.25, .5, 0, 1)
esta_barra.icone_classe:SetVertexColor (1, 1, 1)
else
esta_barra.icone_classe:SetTexture ("Interface\\AddOns\\Details\\images\\classes_small")
esta_barra.icone_classe:SetTexCoord (_unpack (_detalhes.class_coords [tabela [3]])) --very slow method
esta_barra.icone_classe:SetTexCoord (_unpack (_detalhes.class_coords [tabela [3]]))
esta_barra.icone_classe:SetVertexColor (1, 1, 1)
end
@@ -387,7 +378,155 @@ function atributo_damage:AtualizarFrags (tabela, qual_barra, colocacao, instanci
end
function atributo_damage:ReportSingleVoidZoneLine (actor, instancia)
local barra = instancia.barras [actor.minha_barra]
local reportar = {"Details! " .. Loc ["STRING_ATTRIBUTE_DAMAGE_DEBUFFS_REPORT"] .. ": " .. actor.nome} --> localize-me
for i = 1, GameCooltip:GetNumLines() do
local texto_left, texto_right = GameCooltip:GetText (i)
if (texto_left and texto_right) then
texto_left = texto_left:gsub (("|T(.*)|t "), "")
reportar [#reportar+1] = ""..texto_left.." "..texto_right..""
end
end
return _detalhes:Reportar (reportar, {_no_current = true, _no_inverse = true, _custom = true})
end
function _detalhes:ToolTipVoidZones (instancia, actor, barra)
local damage_actor = instancia.showing[1]:PegarCombatente (_, actor.damage_twin)
local habilidade
local alvos
if (damage_actor) then
habilidade = damage_actor.spell_tables._ActorTable [actor.damage_spellid]
end
if (habilidade) then
alvos = habilidade.targets
end
local container = actor.debuff_uptime_targets._ActorTable
for _, alvo in _ipairs (container) do
if (alvos) then
local damage_alvo = alvos._NameIndexTable [alvo.nome]
if (damage_alvo) then
damage_alvo = alvos._ActorTable [damage_alvo]
alvo.damage = damage_alvo.total
else
alvo.damage = 0
end
else
alvo.damage = 0
end
end
--> sort no container:
_table_sort (container, function (tabela1, tabela2)
if (tabela1.damage > tabela2.damage) then
return true;
elseif (tabela1.damage == tabela2.damage) then
return tabela1.uptime > tabela2.uptime;
end
return false;
end)
actor.debuff_uptime_targets:remapear()
--> monta o cooltip
local GameCooltip = GameCooltip
GameCooltip:Reset()
GameCooltip:SetType ("tooltip")
GameCooltip:SetOwner (barra)
GameCooltip:SetOption ("LeftBorderSize", -5)
GameCooltip:SetOption ("RightBorderSize", 5)
GameCooltip:SetOption ("StatusBarTexture", [[Interface\WorldStateFrame\WORLDSTATEFINALSCORE-HIGHLIGHT]])
for _, alvo in _ipairs (container) do
local minutos, segundos = _math_floor (alvo.uptime / 60), _math_floor (alvo.uptime % 60)
if (minutos > 0) then
GameCooltip:AddLine (alvo.nome, _detalhes:comma_value (alvo.damage) .. " (" .. minutos .. "m " .. segundos .. "s" .. ")")
else
GameCooltip:AddLine (alvo.nome, _detalhes:comma_value (alvo.damage) .. " (" .. segundos .. "s" .. ")")
end
local classe = _detalhes:GetClass (alvo.nome)
if (classe) then
GameCooltip:AddIcon ([[Interface\AddOns\Details\images\classes_small]], nil, nil, 14, 14, unpack (_detalhes.class_coords [classe]))
else
GameCooltip:AddIcon ("Interface\\LFGFRAME\\LFGROLE_BW", nil, nil, 14, 14, .25, .5, 0, 1)
end
GameCooltip:AddStatusBar (100, 1, .1, .1, .1, .3)
end
GameCooltip:AddLine (Loc ["STRING_REPORT_LEFTCLICK"], nil, 1, "white")
GameCooltip:AddIcon ([[Interface\TUTORIALFRAME\UI-TUTORIAL-FRAME]], 1, 1, 12, 16, 0.015625, 0.13671875, 0.4375, 0.59765625)
GameCooltip:ShowCooltip()
end
local function RefreshBarraVoidZone (tabela, barra, instancia)
tabela:AtualizarVoidZone (tabela.minha_barra, barra.colocacao, instancia)
end
function atributo_misc:AtualizarVoidZone (qual_barra, colocacao, instancia)
local esta_barra = instancia.barras [qual_barra] --> pega a referência da barra na janela
if (not esta_barra) then
print ("DEBUG: problema com <instancia.esta_barra> "..qual_barra.." "..lugar)
return
end
self._refresh_window = RefreshBarraVoidZone
local tabela_anterior = esta_barra.minha_tabela
esta_barra.minha_tabela = self
self.minha_barra = qual_barra
esta_barra.colocacao = colocacao
esta_barra.texto_esquerdo:SetText (colocacao .. ". " .. self.nome)
esta_barra.texto_direita:SetText (self.debuff_uptime)
--if (colocacao == 1) then
esta_barra.statusbar:SetValue (100)
--else
-- esta_barra.statusbar:SetValue (self.debuff_uptime / instancia.top * 100)
--end
if (esta_barra.hidden or esta_barra.fading_in or esta_barra.faded) then
gump:Fade (esta_barra, "out")
end
local _, _, icon = GetSpellInfo (self.damage_spellid)
local school_color = _detalhes.school_colors [self.spellschool]
if (not school_color) then
school_color = _detalhes.school_colors ["unknown"]
end
esta_barra.textura:SetVertexColor (_unpack (school_color))
esta_barra.icone_classe:SetTexture (icon)
esta_barra.icone_classe:SetTexCoord (0, 1, 0, 1)
esta_barra.icone_classe:SetVertexColor (1, 1, 1)
if (esta_barra.mouse_over and not instancia.baseframe.isMoving) then --> precisa atualizar o tooltip
--gump:UpdateTooltip (qual_barra, esta_barra, instancia)
end
end
local ntable = {}
local vtable = {}
function atributo_damage:RefreshWindow (instancia, tabela_do_combate, forcar, exportar)
local showing = tabela_do_combate [class_type] --> o que esta sendo mostrado -> [1] - dano [2] - cura --> pega o container com ._NameIndexTable ._ActorTable
@@ -426,6 +565,8 @@ function atributo_damage:RefreshWindow (instancia, tabela_do_combate, forcar, ex
keyName = "frags"
elseif (sub_atributo == 6) then --> ENEMIES
keyName = "enemies"
elseif (sub_atributo == 7) then --> AURAS VOIDZONES
keyName = "voidzones"
end
else
keyName = exportar.key
@@ -447,6 +588,8 @@ function atributo_damage:RefreshWindow (instancia, tabela_do_combate, forcar, ex
keyName = "frags"
elseif (sub_atributo == 6) then --> ENEMIES
keyName = "enemies"
elseif (sub_atributo == 7) then --> AURAS VOIDZONES
keyName = "voidzones"
end
end
@@ -459,13 +602,16 @@ function atributo_damage:RefreshWindow (instancia, tabela_do_combate, forcar, ex
index = index + 1
local actor_classe = showing._NameIndexTable [fragName] --> get index
if (actor_classe) then
actor_classe = showing._ActorTable [actor_classe] --> get object
actor_classe = actor_classe.classe
local fragged_actor = showing._NameIndexTable [fragName] --> get index
local actor_classe
if (fragged_actor) then
fragged_actor = showing._ActorTable [fragged_actor] --> get object
actor_classe = fragged_actor.classe
end
if (not actor_classe) then
if (fragged_actor and fragged_actor.monster) then
actor_classe = "ENEMY"
elseif (not actor_classe) then
actor_classe = "UNGROUPPLAYER"
end
@@ -523,6 +669,69 @@ function atributo_damage:RefreshWindow (instancia, tabela_do_combate, forcar, ex
return _detalhes:EndRefresh (instancia, total, tabela_do_combate, showing) --> retorna a tabela que precisa ganhar o refresh
elseif (keyName == "voidzones") then
local index = 0
local misc_container = tabela_do_combate [4]
for _, actor in _ipairs (misc_container._ActorTable) do
if (actor.boss_debuff) then
index = index + 1
local twin_damage_actor = showing._NameIndexTable [actor.damage_twin]
if (twin_damage_actor) then
twin_damage_actor = showing._ActorTable [twin_damage_actor]
actor.damage = twin_damage_actor.total
else
actor.damage = 0
end
vtable [index] = actor
end
end
local tsize = #vtable
if (index < tsize) then
for i = index+1, tsize do
vtable [i] = nil
end
end
--print ("size: ", tsize)
if (tsize > 0 and vtable[1]) then
_table_sort (vtable, function (t1, t2)
return t1.damage > t2.damage
end)
instancia.top = vtable [1].damage
end
total = index
if (exportar) then
return vtable
end
if (total < 1) then
instancia:EsconderScrollBar()
return _detalhes:EndRefresh (instancia, total, tabela_do_combate, showing) --> retorna a tabela que precisa ganhar o refresh
end
--esta mostrando ALL então posso seguir o padrão correto? primeiro, atualiza a scroll bar...
instancia:AtualizarScrollBar (total)
--depois faz a atualização normal dele através dos iterators
local qual_barra = 1
local barras_container = instancia.barras
for i = instancia.barraS[1], instancia.barraS[2], 1 do --> vai atualizar só o range que esta sendo mostrado
vtable[i]:AtualizarVoidZone (qual_barra, i, instancia)
qual_barra = qual_barra+1
end
return _detalhes:EndRefresh (instancia, total, tabela_do_combate, showing) --> retorna a tabela que precisa ganhar o refresh
else
if (instancia.atributo == 5) then --> custom
@@ -535,6 +744,7 @@ function atributo_damage:RefreshWindow (instancia, tabela_do_combate, forcar, ex
elseif (keyName == "enemies") then
amount, total = _detalhes:ContainerSortEnemies (conteudo, amount, "total")
--keyName = "enemies"
--> grava o total
instancia.top = conteudo[1][keyName]
@@ -831,8 +1041,11 @@ function atributo_damage:AtualizaBarra (instancia, barras_container, qual_barra,
forcar = true
end
if (self.owner) then
actor_class_color_r, actor_class_color_g, actor_class_color_b = _unpack (_detalhes.class_colors [self.owner.classe])
elseif (self.monster) then
actor_class_color_r, actor_class_color_g, actor_class_color_b = _unpack (_detalhes.class_colors.ENEMY)
else
actor_class_color_r, actor_class_color_g, actor_class_color_b = _unpack (_detalhes.class_colors [self.classe])
end
@@ -973,7 +1186,7 @@ end
end
if (instancia.row_texture_class_colors) then
esta_barra.textura:SetVertexColor (240/255, 0, 5/255, 1)
esta_barra.textura:SetVertexColor (0.94117, 0, 0.01960, 1)
end
else
esta_barra.texto_esquerdo:SetText (esta_barra.colocacao..". "..self.displayName) --seta o texto da esqueda
+2 -1
View File
@@ -1241,6 +1241,7 @@ function _detalhes:TrocaTabela (instancia, segmento, atributo, sub_atributo, ini
local atributo_changed = false
--> verifica possiveis valores não passados
if (not segmento) then
segmento = instancia.segmento
end
@@ -1548,7 +1549,7 @@ function _detalhes:ChangeIcon (icon)
--> normal
local half = 0.00048828125
local size = 0.03125
self.baseframe.cabecalho.atributo_icon:SetTexture (_detalhes.skin_path .. skin.file)
self.baseframe.cabecalho.atributo_icon:SetTexture (skin.file)
self.baseframe.cabecalho.atributo_icon:SetTexCoord ( (0.03125 * (self.atributo-1)) + half, (0.03125 * self.atributo) - half, 0.35693359375, 0.38720703125)
local icon_anchor = skin.icon_anchor_main
+69 -46
View File
@@ -224,7 +224,7 @@ function _detalhes:ToolTipDead (instancia, morte, esta_barra)
if (battleress) then
--_table_insert (linhas, 2, {{"Interface\\AddOns\\Details\\images\\small_icons", .75, 1, 0, 1}, morte [6] .. " Morreu", "-- -- -- ", 100, {75/255, 75/255, 75/255, 1}, {noglow = true}}) --> localize-me
GameCooltip:AddSpecial ("line", 2, nil, morte [6] .. " Morreu", "-- -- -- ", 1, "white")
GameCooltip:AddSpecial ("line", 2, nil, morte [6] .. " " .. Loc ["STRING_TIME_OF_DEATH"] , "-- -- -- ", 1, "white")
GameCooltip:AddSpecial ("icon", 2, nil, "Interface\\AddOns\\Details\\images\\small_icons", 1, 1, nil, nil, .75, 1, 0, 1)
GameCooltip:AddSpecial ("statusbar", 2, nil, 100, 1, "darkgray", false)
else
@@ -842,42 +842,46 @@ function atributo_misc:ToolTipCC (instancia, numero, barra)
local meu_total = self ["cc_break"]
local habilidades = self.cc_break_spell_tables._ActorTable
--> habilidade usada para dispelar
local meus_cc_breaks = {}
--> habilidade usada para tirar o CC
for _spellid, _tabela in _pairs (habilidades) do
meus_cc_breaks [#meus_cc_breaks+1] = {_spellid, _tabela.cc_break}
end
_table_sort (meus_cc_breaks, function(a, b) return a[2] > b[2] end)
GameTooltip:AddLine (Loc ["STRING_SPELLS"]..":")
if (#meus_cc_breaks > 0) then
for i = 1, _math_min (3, #meus_cc_breaks) do
local esta_habilidade = meus_cc_breaks[i]
local nome_magia, _, icone_magia = _GetSpellInfo (esta_habilidade[1])
GameCooltip:AddLine (nome_magia..": ", esta_habilidade[2].." (".._cstr("%.1f", esta_habilidade[2]/meu_total*100).."%)")
GameCooltip:AddIcon (icone_magia, nil, nil, 14, 14)
--> quantidade
local nome_magia, _, icone_magia = _GetSpellInfo (_spellid)
GameCooltip:AddLine (nome_magia, _tabela.cc_break .. " (" .. _cstr ("%.1f", _tabela.cc_break / meu_total * 100) .. "%)")
GameCooltip:AddIcon (icone_magia, nil, nil, 14, 14)
GameCooltip:AddStatusBar (100, 1, r, g, b, barAlha)
--> o que quebrou
local quebrou_oque = _tabela.cc_break_oque
for spellid_quebrada, amt_quebrada in _pairs (_tabela.cc_break_oque) do
local nome_magia, _, icone_magia = _GetSpellInfo (spellid_quebrada)
GameCooltip:AddLine (nome_magia..": ", amt_quebrada)
GameCooltip:AddIcon ([[Interface\Buttons\UI-GroupLoot-Pass-Down]], nil, 1, 14, 14)
GameCooltip:AddIcon (icone_magia, nil, 2, 14, 14)
GameCooltip:AddStatusBar (100, 1, 1, 0, 0, .2)
end
else
GameTooltip:AddLine (Loc ["STRING_NO_SPELL"])
end
--> quais habilidades foram dispaladas
local buffs_dispelados = {}
for _spellid, amt in _pairs (self.cc_break_oque) do
buffs_dispelados [#buffs_dispelados+1] = {_spellid, amt}
end
_table_sort (buffs_dispelados, function(a, b) return a[2] > b[2] end)
GameTooltip:AddLine (Loc ["STRING_CCBROKE"] .. ":")
if (#buffs_dispelados > 0) then
for i = 1, _math_min (3, #buffs_dispelados) do
local esta_habilidade = buffs_dispelados[i]
local nome_magia, _, icone_magia = _GetSpellInfo (esta_habilidade[1])
GameCooltip:AddLine (nome_magia..": ", esta_habilidade[2].." (".._cstr("%.1f", esta_habilidade[2]/meu_total*100).."%)")
GameCooltip:AddIcon (icone_magia, nil, nil, 14, 14)
--> em quem quebrou
--GameCooltip:AddLine (Loc ["STRING_TARGETS"] .. ":")
for _, target in _ipairs (_tabela.targets._ActorTable) do
GameCooltip:AddLine (target.nome..": ", target.total)
local classe = _detalhes:GetClass (target.nome)
GameCooltip:AddIcon ([[Interface\AddOns\Details\images\espadas]], nil, 1, 14, 14)
if (classe) then
GameCooltip:AddIcon ([[Interface\AddOns\Details\images\classes_small]], nil, 2, 14, 14, unpack (_detalhes.class_coords [classe]))
else
GameCooltip:AddIcon ("Interface\\LFGFRAME\\LFGROLE_BW", nil, 2, 14, 14, .25, .5, 0, 1)
end
GameCooltip:AddStatusBar (100, 1, .1, .1, .1, .3)
end
end
return true
end
@@ -1881,14 +1885,17 @@ local sub_list = {"cc_break", "ress", "interrupt", "cooldowns_defensive", "dispe
local somar_alvos = function (container)
for index, alvo in _ipairs (actor [container]._ActorTable) do
--> cria e soma o valor do total
local alvo_shadow = shadow [container]:PegarCombatente (nil, alvo.nome, nil, true)
alvo_shadow.total = alvo_shadow.total + alvo.total
if (alvo.uptime) then --> boss debuff
alvo_shadow.uptime = alvo_shadow.uptime + alvo.uptime
alvo_shadow.activedamt = alvo_shadow.activedamt + alvo.activedamt
end
--if (shadow [container]) then -- index ?? a nil value
local alvo_shadow = shadow [container]:PegarCombatente (nil, alvo.nome, nil, true)
alvo_shadow.total = alvo_shadow.total + alvo.total
if (alvo.uptime) then --> boss debuff
alvo_shadow.uptime = alvo_shadow.uptime + alvo.uptime
alvo_shadow.activedamt = alvo_shadow.activedamt + alvo.activedamt
end
--end
--> refresh no alvo
_detalhes.refresh:r_alvo_da_habilidade (alvo, shadow [container])
end
end
--> somar as habilidades do ator
@@ -1941,9 +1948,6 @@ local sub_list = {"cc_break", "ress", "interrupt", "cooldowns_defensive", "dispe
--> soma o total (captura de dados)
shadow.debuff_uptime = shadow.debuff_uptime + actor.debuff_uptime
--> copia o container de alvos (captura de dados)
if (actor.boss_debuff) then
actor.debuff_uptime_targets.tipo = _detalhes.container_type.CONTAINER_ENEMYDEBUFFTARGET_CLASS
end
somar_alvos ("debuff_uptime_targets", shadow)
--> copia o container de habilidades (captura de dados)
somar_habilidades ("debuff_uptime_spell_tables", shadow)
@@ -2117,10 +2121,19 @@ function _detalhes.refresh:r_atributo_misc (este_jogador, shadow)
--> refresh buff uptime
if (este_jogador.debuff_uptime_targets) then
--> constrói os containers na shadow se não existir
if (not shadow.debuff_uptime_spell_targets) then
if (not shadow.debuff_uptime_targets) then
shadow.debuff_uptime = 0
shadow.debuff_uptime_spell_targets = container_combatentes:NovoContainer (container_damage_target) --> pode ser um container de alvo de dano, pois irá usar apenas o .total
shadow.debuff_uptime_spell_tables = container_habilidades:NovoContainer (_detalhes.container_type.CONTAINER_MISC_CLASS) --> cria o container das habilidades usadas para interromper
if (este_jogador.boss_debuff) then
shadow.debuff_uptime_targets = container_combatentes:NovoContainer (_detalhes.container_type.CONTAINER_ENEMYDEBUFFTARGET_CLASS)
shadow.boss_debuff = true
shadow.damage_twin = este_jogador.damage_twin
shadow.spellschool = este_jogador.spellschool
shadow.damage_spellid = este_jogador.damage_spellid
shadow.debuff_uptime = 0
else
shadow.debuff_uptime_targets = container_combatentes:NovoContainer (container_damage_target)
end
shadow.debuff_uptime_spell_tables = container_habilidades:NovoContainer (_detalhes.container_type.CONTAINER_MISC_CLASS)
end
--> recupera metas e indexes
_detalhes.refresh:r_container_combatentes (este_jogador.debuff_uptime_targets, shadow.debuff_uptime_targets)
@@ -2324,9 +2337,19 @@ atributo_misc.__add = function (tabela1, tabela2)
if (tabela2.debuff_uptime) then
if (not tabela1.debuff_uptime) then
if (tabela2.boss_debuff) then
tabela1.debuff_uptime_targets = container_combatentes:NovoContainer (_detalhes.container_type.CONTAINER_ENEMYDEBUFFTARGET_CLASS)
tabela1.boss_debuff = true
tabela1.damage_twin = tabela2.damage_twin
tabela1.spellschool = tabela2.spellschool
tabela1.damage_spellid = tabela2.damage_spellid
else
tabela1.debuff_uptime_targets = container_combatentes:NovoContainer (container_damage_target)
end
tabela1.debuff_uptime = 0
tabela1.debuff_uptime_targets = container_combatentes:NovoContainer (container_damage_target) --> pode ser um container de alvo de dano, pois irá usar apenas o .total
tabela1.debuff_uptime_spell_tables = container_habilidades:NovoContainer (container_misc) --> cria o container das habilidades usadas
tabela1.debuff_uptime_spell_tables = container_habilidades:NovoContainer (container_misc)
end
tabela1.debuff_uptime = tabela1.debuff_uptime + tabela2.debuff_uptime
+7
View File
@@ -175,11 +175,18 @@ local read_flag_ = function (novo_objeto, shadow_objeto, dono_do_pet, serial, fl
-- 0x00000060 --> inimigo neutro
if (_bit_band (flag, 0x00000010) ~= 0) then --> é amigo
details_flag = details_flag+0x00000010
elseif (_bit_band (flag, 0x00000020) ~= 0) then --> é neutro
details_flag = details_flag+0x00000020
--print ("neutro -> " .. nome)
elseif (_bit_band (flag, 0x00000040) ~= 0) then --> é inimigo
details_flag = details_flag+0x00000040
if (_bit_band (flag, 0x00000400) == 0 and _bit_band (flag, OBJECT_TYPE_PETGUARDIAN) == 0) then
novo_objeto.monster = true
end
--print ("inimigos -> " .. nome)
end
else
+3 -1
View File
@@ -296,7 +296,7 @@
_detalhes:CatchRaidBuffUptime ("BUFF_UPTIME_OUT")
_detalhes:CatchRaidDebuffUptime ("DEBUFF_UPTIME_OUT")
--_detalhes:CloseEnemyDebuffsUptime()
_detalhes:CloseEnemyDebuffsUptime()
--> pega a zona do jogador e vê se foi uma luta contra um Boss -- identifica se a luta foi com um boss
if (not _detalhes.tabela_vigente.is_boss) then
@@ -764,6 +764,8 @@
return _detalhes:ToolTipDead (self, objeto, esta_barra) --> instância, [morte], barra
elseif (objeto.frags) then
return _detalhes:ToolTipFrags (self, objeto, esta_barra)
elseif (objeto.boss_debuff) then
return _detalhes:ToolTipVoidZones (self, objeto, esta_barra)
end
local t = objeto:ToolTip (self, qual_barra, esta_barra) --> instância, nº barra, objeto barra
+44 -24
View File
@@ -101,6 +101,9 @@
local _recording_buffs_and_debuffs = false
--> in combat shortcut
local _in_combat = false
--> hooks
local _hook_cooldowns = false
local _hook_cooldowns_container = _detalhes.hooks ["HOOK_COOLDOWN"]
@@ -671,7 +674,7 @@
--> BUFFS & DEBUFFS serach key: ~buff ~aura ~shield |
-----------------------------------------------------------------------------------------------------------------------------------------
function parser:buff (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, _, tipo, amount)
function parser:buff (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spellschool, tipo, amount)
--> not yet well know about unnamed buff casters
if (not alvo_name) then
@@ -746,8 +749,8 @@
--> call record debuffs uptime
--[[not tail call, need to fix this]] parser:add_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, "DEBUFF_UPTIME_IN")
--elseif (raid_members_cache [alvo_serial] and _bit_band (who_flags, 0x00000040) ~= 0) then --> alvo é da raide e o caster é inimigo
--[[not tail call, need to fix this]] --parser:add_bad_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, "DEBUFF_UPTIME_IN")
elseif (raid_members_cache [alvo_serial] and not raid_members_cache [who_serial]) then --> alvo é da raide é alguem de fora da raide
--[[not tail call, need to fix this]] parser:add_bad_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spellschool, "DEBUFF_UPTIME_IN")
end
end
@@ -818,7 +821,7 @@
end
end
function parser:buff_refresh (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, _, tipo, amount)
function parser:buff_refresh (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spellschool, tipo, amount)
------------------------------------------------------------------------------------------------
--> handle shields
@@ -890,8 +893,8 @@
if (raid_members_cache [who_serial]) then
--> call record debuffs uptime
--[[not tail call, need to fix this]] parser:add_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, "DEBUFF_UPTIME_REFRESH")
--elseif (raid_members_cache [alvo_serial] and _bit_band (who_flags, 0x00000040) ~= 0) then --> alvo é da raide e o caster é inimigo
--[[not tail call, need to fix this]] --parser:add_bad_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, "DEBUFF_UPTIME_REFRESH")
elseif (raid_members_cache [alvo_serial] and not raid_members_cache [who_serial]) then --> alvo é da raide e o caster é inimigo
--[[not tail call, need to fix this]] parser:add_bad_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spellschool, "DEBUFF_UPTIME_REFRESH")
end
end
@@ -947,7 +950,7 @@
end
end
function parser:unbuff (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, _, tipo, amount)
function parser:unbuff (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spellschool, tipo, amount)
------------------------------------------------------------------------------------------------
--> handle shields
@@ -1013,8 +1016,8 @@
if (raid_members_cache [who_serial]) then
--> call record debuffs uptime
--[[not tail call, need to fix this]] parser:add_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, "DEBUFF_UPTIME_OUT")
--elseif (raid_members_cache [alvo_serial] and _bit_band (who_flags, 0x00000040) ~= 0) then --> alvo é da raide e o caster é inimigo
--[[not tail call, need to fix this]] --parser:add_bad_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, "DEBUFF_UPTIME_OUT")
elseif (raid_members_cache [alvo_serial] and not raid_members_cache [who_serial]) then --> alvo é da raide e o caster é inimigo
--[[not tail call, need to fix this]] parser:add_bad_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spellschool, "DEBUFF_UPTIME_OUT")
end
end
@@ -1059,7 +1062,7 @@
--> MISC search key: ~buffuptime ~buffsuptime |
-----------------------------------------------------------------------------------------------------------------------------------------
function parser:add_bad_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, in_out)
function parser:add_bad_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spellschool, in_out)
if (not alvo_name) then
--> no target name, just quit
@@ -1084,14 +1087,18 @@
if (not este_jogador.debuff_uptime) then
este_jogador.boss_debuff = true
este_jogador.owner = who_name
este_jogador.damage_twin = who_name
este_jogador.spellschool = spellschool
este_jogador.damage_spellid = spellid
este_jogador.debuff_uptime = 0
este_jogador.debuff_uptime_spell_tables = container_habilidades:NovoContainer (container_misc)
este_jogador.debuff_uptime_targets = container_combatentes:NovoContainer (container_enemydebufftarget_target)
if (not shadow.debuff_uptime_targets) then
shadow.boss_debuff = true
shadow.owner = who_name
shadow.damage_twin = who_name
shadow.spellschool = spellschool
shadow.damage_spellid = spellid
shadow.debuff_uptime = 0
shadow.debuff_uptime_spell_tables = container_habilidades:NovoContainer (container_misc)
shadow.debuff_uptime_targets = container_combatentes:NovoContainer (container_enemydebufftarget_target)
@@ -1527,6 +1534,13 @@
spell = este_jogador.cooldowns_defensive_spell_tables:PegaHabilidade (spellid, true, token)
end
if (_hook_cooldowns) then
--> send event to registred functions
for _, func in _ipairs (_hook_cooldowns_container) do
func (nil, token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname)
end
end
return spell:Add (alvo_serial, alvo_name, alvo_flags, who_name, token, "BUFF_OR_DEBUFF", "COOLDOWN")
end
@@ -1960,12 +1974,12 @@
------------------------------------------------------------------------------------------------
--> early checks and fixes
if (not cc_spell_list [extraSpellID]) then
return
if (not cc_spell_list [spellid]) then
--return print ("nao ta na lista")
end
if (_bit_band (who_flags, AFFILIATION_GROUP) == 0) then
--print (who_name.. " nao eh do grupo")
return
end
@@ -2037,16 +2051,16 @@
shadow.cc_break = shadow.cc_break + 1
--> broke what
if (not este_jogador.cc_break_oque [extraSpellID]) then
este_jogador.cc_break_oque [extraSpellID] = 1
if (not este_jogador.cc_break_oque [spellid]) then
este_jogador.cc_break_oque [spellid] = 1
else
este_jogador.cc_break_oque [extraSpellID] = este_jogador.cc_break_oque [extraSpellID] + 1
este_jogador.cc_break_oque [spellid] = este_jogador.cc_break_oque [spellid] + 1
end
if (not shadow.cc_break_oque [extraSpellID]) then
shadow.cc_break_oque [extraSpellID] = 1
if (not shadow.cc_break_oque [spellid]) then
shadow.cc_break_oque [spellid] = 1
else
shadow.cc_break_oque [extraSpellID] = shadow.cc_break_oque [extraSpellID] + 1
shadow.cc_break_oque [spellid] = shadow.cc_break_oque [spellid] + 1
end
--> actor targets
@@ -2059,11 +2073,11 @@
este_alvo.total = este_alvo.total + 1
--> actor spells table
local spell = este_jogador.cc_break_spell_tables._ActorTable [spellid]
local spell = este_jogador.cc_break_spell_tables._ActorTable [extraSpellID]
if (not spell) then
spell = este_jogador.cc_break_spell_tables:PegaHabilidade (spellid, true, token)
spell = este_jogador.cc_break_spell_tables:PegaHabilidade (extraSpellID, true, token)
end
return spell:Add (alvo_serial, alvo_name, alvo_flags, who_name, token, extraSpellID, extraSpellName)
return spell:Add (alvo_serial, alvo_name, alvo_flags, who_name, token, spellid, spellname)
end
--serach key: ~dead ~death ~morte
@@ -2716,6 +2730,12 @@
--_recording_took_damage = _detalhes.RecordRealTimeTookDamage
_recording_ability_with_buffs = _detalhes.RecordPlayerAbilityWithBuffs
_in_combat = _detalhes.in_combat
if (_detalhes.hooks ["HOOK_COOLDOWN"].enabled) then
_hook_cooldowns = true
else
_hook_cooldowns = false
end
return _detalhes:ClearParserCache()
end
+2
View File
@@ -463,6 +463,8 @@
if (tabela._custom) then
tabela (esta_barra, self)
elseif (tabela._refresh_window) then
tabela:_refresh_window (esta_barra, self)
else
tabela:RefreshBarra (esta_barra, self, true)
end
+8 -4
View File
@@ -17,6 +17,7 @@ do
"damage", --friendly fire
"miscdata", --frags
"damage", --enemy damage
"aura", --auras
"heal", --healing done
"heal", --hps
@@ -48,7 +49,7 @@ do
--[[ DAMAGE ]]
dano = 1, --> identifier
[1] = 6, --> sub attributes
[1] = 7, --> sub attributes
--[[ HEALING ]]
cura = 2, --> identifier
@@ -87,13 +88,15 @@ do
friendly_fire = 4,
frags = 5,
enemies = 6,
voidzones = 7,
lista = { --[[ String Names ]]
Loc ["STRING_ATTRIBUTE_DAMAGE_DONE"],
Loc ["STRING_ATTRIBUTE_DAMAGE_DPS"],
Loc ["STRING_ATTRIBUTE_DAMAGE_TAKEN"],
Loc ["STRING_ATTRIBUTE_DAMAGE_FRIENDLYFIRE"],
Loc ["STRING_ATTRIBUTE_DAMAGE_FRAGS"],
Loc ["STRING_ATTRIBUTE_DAMAGE_ENEMIES"]
Loc ["STRING_ATTRIBUTE_DAMAGE_ENEMIES"],
Loc ["STRING_ATTRIBUTE_DAMAGE_DEBUFFS"],
},
icones = {
{"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {0, .125, 0, 1}},
@@ -101,9 +104,10 @@ do
{"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {.25, .375, 0, 1}},
{"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {.375, .5, 0, 1}},
{"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {.5, 0.625, 0, 1}},
{"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {0.625, .75, 0, 1}}
{"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {0.625, .75, 0, 1}},
{"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {.75, 0.875, 0, 1}}
},
internal = {"total", "last_dps", "damage_taken", "friendlyfire_total", "frags", "enemies"}
internal = {"total", "last_dps", "damage_taken", "friendlyfire_total", "frags", "enemies", "voidzones"}
},
{
+50
View File
@@ -0,0 +1,50 @@
--File Revision: 1
--Last Modification: 06/12/2013
-- Change Log:
-- 06/12/2013: file added.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--[[global]] DETAILS_HOOK_COOLDOWN = "HOOK_COOLDOWN"
local _detalhes = _G._detalhes
local _
_detalhes.hooks ["HOOK_COOLDOWN"] = {}
function _detalhes:InstallHook (hook_type, func)
if (not _detalhes.hooks [hook_type]) then
return false, "Invalid hook type."
end
_detalhes.hooks [hook_type] [#_detalhes.hooks [hook_type] + 1] = func
_detalhes.hooks [hook_type].enabled = true
_detalhes:UpdateParserGears()
return true
end
function _detalhes:UnInstallHook (hook_type, func)
if (not _detalhes.hooks [hook_type]) then
return false, "Invalid hook type."
end
for index, this_func in ipairs (_detalhes.hooks [hook_type]) do
if (this_func == func) then
table.remove (_detalhes.hooks [hook_type], index)
if (#_detalhes.hooks [hook_type] == 0) then
_detalhes.hooks [hook_type].enabled = false
end
_detalhes:UpdateParserGears()
return true
end
end
end
+1 -1
View File
@@ -288,7 +288,7 @@ end --]]
["heal"] = true,
["energy"] = false,
["miscdata"] = true,
["aura"] = false,
["aura"] = true,
["spellcast"] = true,
}
+55
View File
@@ -0,0 +1,55 @@
--File Revision: 1
--Last Modification: 05/12/07/2013
-- Change Log:
-- 05/12/07/2013: This file has been introduced.
local _detalhes = _G._detalhes
local _
--> install skin function:
function _detalhes:InstallSkin (skin_name, skin_table)
if (not skin_name) then
return false -- sem nome
elseif (_detalhes.skins [skin_name]) then
return false -- ja existe
end
if (not skin_table.file) then
return false -- sem arquivo
end
skin_table.author = skin_table.author or ""
skin_table.version = skin_table.version or ""
skin_table.site = skin_table.site or ""
skin_table.desc = skin_table.desc or ""
_detalhes.skins [skin_name] = skin_table
return true
end
--> install default skins:
_detalhes:InstallSkin ("Default Skin", {
file = [[Interface\AddOns\Details\images\skins\default_skin]],
author = "Details!",
version = "1.0",
site = "unknown",
desc = "default skin for Details!",
can_change_alpha_head = false,
icon_anchor_main = {-1, 1},
icon_anchor_plugins = {-9, -7},
icon_plugins_size = {19, 19}
})
_detalhes:InstallSkin ("Flat Color", {
file = [[Interface\AddOns\Details\images\skins\flat_skin]],
author = "Details!",
version = "1.0",
site = "unknown",
desc = "a flat skin",
can_change_alpha_head = true,
icon_anchor_main = {-1, -5},
icon_anchor_plugins = {-7, -13},
icon_plugins_size = {19, 18}
})
+23
View File
@@ -108,6 +108,29 @@ function SlashCmdList.DETAILS (msg, editbox)
print ("GetTime()", GetTime())
print ("time()", time())
elseif (msg == "malkorok") then
print ("nome | count | unitCaster | spellId | isBossDebuff | value1 | value2 | value3")
do
local name, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId, canApplyAura, isBossDebuff, value1, value2, value3 = UnitDebuff ("player", 1)
if (name) then
print (name, " | ", count, " | ", unitCaster, " | ",spellId, " | ", isBossDebuff, " | ", value1, " | ", value2, " | ", value3)
end
end
do
local name, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId, canApplyAura, isBossDebuff, value1, value2, value3 = UnitDebuff ("player", 2)
if (name) then
print (name, " | ", count, " | ", unitCaster, " | ",spellId, " | ", isBossDebuff, " | ", value1, " | ", value2, " | ", value3)
end
end
do
local name, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId, canApplyAura, isBossDebuff, value1, value2, value3 = UnitDebuff ("player", 3)
if (name) then
print (name, " | ", count, " | ", unitCaster, " | ",spellId, " | ", isBossDebuff, " | ", value1, " | ", value2, " | ", value3)
end
end
elseif (msg == "copy") then
_G.DetailsCopy:Show()
_G.DetailsCopy.MyObject.text:HighlightText()
+1 -1
View File
@@ -539,7 +539,7 @@ local function cria_textos (este_gump)
este_gump.targets = este_gump:CreateFontString (nil, "OVERLAY", "QuestFont_Large")
este_gump.targets:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 24, -235)
este_gump.targets:SetText ("Alvos:")
este_gump.targets:SetText (Loc ["STRING_TARGETS"] .. ":")
end
+5 -4
View File
@@ -215,8 +215,8 @@ function _detalhes:OpenOptionsWindow (instance)
_detalhes:AtualizaGumpPrincipal (-1, true)
end
local timetypeOptions = {
{value = 1, label = "Chronometer", onclick = onSelectTimeType, icon = "Interface\\Icons\\INV_Misc_PocketWatch_01", desc = "The effective time are based on the actions of the actor\nand his activity time are paused when he is idle during combat."},
{value = 2, label = "Continuous", onclick = onSelectTimeType, icon = "Interface\\Icons\\INV_Misc_Gear_03", desc = "Activity time is the same for all the actors where the\ncombat time is used to measure the effectiveness of all actors."}
{value = 1, label = "Activity Time", onclick = onSelectTimeType, icon = "Interface\\Icons\\INV_Misc_PocketWatch_01", desc = "Activity time are based on the actions of the actor\nand his activity time are paused when he is idle during combat."},
{value = 2, label = "Effective Time", onclick = onSelectTimeType, icon = "Interface\\Icons\\INV_Misc_Gear_03", desc = "The effective time is the same for all the actors where the\ncombat time is used to measure the effectiveness of all actors."}
}
local buildTimeTypeMenu = function()
return timetypeOptions
@@ -298,7 +298,7 @@ function _detalhes:OpenOptionsWindow (instance)
g:NewSwitch (window, _, "$parentCaptureAuraSlider", "auraCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["aura"])
window.auraCaptureSlider:SetPoint ("left", window.auraCaptureLabel, "right", 2)
window.auraCaptureSlider.tooltip = "Pause or enable capture of:\n- buffs uptime"
window.auraCaptureSlider.tooltip = "Pause or enable capture of:\n- buffs uptime\n- debuffs uptime\n- void zones\n- cooldowns"
window.auraCaptureSlider.OnSwitch = function (self, _, value)
_detalhes:CaptureSet (value, "aura", true)
switch_icon_color (window.auraCaptureImage, value)
@@ -340,6 +340,7 @@ function _detalhes:OpenOptionsWindow (instance)
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)
--
@@ -349,7 +350,7 @@ function _detalhes:OpenOptionsWindow (instance)
_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)
+97 -3
View File
@@ -56,7 +56,7 @@ end
-- 0.00048828125
local DEFAULT_SKIN = _detalhes.skin_path .. _detalhes.skins ["Default Skin"].file
local DEFAULT_SKIN = [[Interface\AddOns\Details\images\skins\default_skin]]
local COORDS_LEFT_BALL = {0.15673828125, 0.28076171875, 0.08251953125, 0.20654296875} -- x1 160 y1 84 x2 288 y2 212
local COORDS_LEFT_CONNECTOR = {0.29541015625, 0.30224609375, 0.08251953125, 0.20654296875} --302 84 310 212
@@ -2452,6 +2452,73 @@ function _detalhes:InstanceColor (red, green, blue, alpha)
self.color[1], self.color[2], self.color[3], self.color[4] = red, green, blue, alpha
end
function _detalhes:StatusBarAlertTime (instance)
instance.baseframe.statusbar:Hide()
end
function _detalhes:StatusBarAlert (text, icon, color, time)
local statusbar = self.baseframe.statusbar
if (text) then
if (type (text) == "table") then
if (text.color) then
statusbar.text:SetTextColor (gump:ParseColors (text.color))
else
statusbar.text:SetTextColor (1, 1, 1, 1)
end
statusbar.text:SetText (text.text or "")
if (text.size) then
_detalhes:SetFontSize (statusbar.text, text.size)
else
_detalhes:SetFontSize (statusbar.text, 9)
end
else
statusbar.text:SetText (text)
statusbar.text:SetTextColor (1, 1, 1, 1)
_detalhes:SetFontSize (statusbar.text, 9)
end
else
statusbar.text:SetText ("")
end
if (icon) then
if (type (icon) == "table") then
local texture, w, h, l, r, t, b = unpack (icon)
statusbar.icon:SetTexture (texture)
statusbar.icon:SetWidth (w or 14)
statusbar.icon:SetHeight (h or 14)
if (l and r and t and b) then
statusbar.icon:SetTexCoord (l, r, t, b)
end
else
statusbar.icon:SetTexture (icon)
statusbar.icon:SetWidth (14)
statusbar.icon:SetHeight (14)
statusbar.icon:SetTexCoord (0, 1, 0, 1)
end
else
statusbar.icon:SetTexture (nil)
end
if (color) then
statusbar:SetBackdropColor (gump:ParseColors (color))
else
statusbar:SetBackdropColor (0, 0, 0, 1)
end
if (icon or text) then
statusbar:Show()
if (time) then
_detalhes:ScheduleTimer ("StatusBarAlertTime", time, self)
end
else
statusbar:Hide()
end
end
function gump:CriaRodape (BaseFrame, instancia)
BaseFrame.rodape = {}
@@ -2496,8 +2563,34 @@ function gump:CriaRodape (BaseFrame, instancia)
BaseFrame.rodape.StatusBarCenterAnchor = StatusBarCenterAnchor
--> display frame
BaseFrame.statusbar = _CreateFrame ("frame", nil, BaseFrame.cabecalho.fechar)
BaseFrame.statusbar:SetFrameLevel (BaseFrame.cabecalho.fechar:GetFrameLevel()+2)
BaseFrame.statusbar:SetPoint ("LEFT", BaseFrame.rodape.esquerdo, "RIGHT", -13, 10)
BaseFrame.statusbar:SetPoint ("RIGHT", BaseFrame.rodape.direita, "LEFT", 13, 10)
BaseFrame.statusbar:SetHeight (14)
local statusbar_icon = BaseFrame.statusbar:CreateTexture (nil, "overlay")
statusbar_icon:SetWidth (14)
statusbar_icon:SetHeight (14)
statusbar_icon:SetPoint ("left", BaseFrame.statusbar, "left")
local statusbar_text = BaseFrame.statusbar:CreateFontString (nil, "overlay", "GameFontNormal")
statusbar_text:SetPoint ("left", statusbar_icon, "right", 2, 0)
BaseFrame.statusbar:SetBackdrop ({
bgFile = "Interface\\AddOns\\Details\\images\\background", tile = true, tileSize = 16,
insets = {left = 0, right = 0, top = 0, bottom = 0}})
BaseFrame.statusbar:SetBackdropColor (0, 0, 0, 1)
BaseFrame.statusbar.icon = statusbar_icon
BaseFrame.statusbar.text = statusbar_text
BaseFrame.statusbar.instancia = instancia
BaseFrame.statusbar:Hide()
--> frame invisível
BaseFrame.DOWNFrame = _CreateFrame ("frame", nil, BaseFrame)
BaseFrame.DOWNFrame = _CreateFrame ("frame", nil, BaseFrame)
BaseFrame.DOWNFrame:SetPoint ("LEFT", BaseFrame.rodape.esquerdo, "RIGHT", 0, 10)
BaseFrame.DOWNFrame:SetPoint ("RIGHT", BaseFrame.rodape.direita, "LEFT", 0, 10)
BaseFrame.DOWNFrame:SetHeight (14)
@@ -2927,10 +3020,11 @@ function _detalhes:ChangeSkin (skin_name)
end
self.skin = skin_name
local skin_file = _detalhes.skin_path .. this_skin.file
local skin_file = this_skin.file
self.baseframe.cabecalho.ball:SetTexture (skin_file) --> bola esquerda
self.baseframe.cabecalho.emenda:SetTexture (skin_file) --> emenda que liga a bola a textura do centro
self.baseframe.cabecalho.ball_r:SetTexture (skin_file) --> bola direita onde fica o botão de fechar
self.baseframe.cabecalho.top_bg:SetTexture (skin_file) --> top background
+14 -14
View File
@@ -162,18 +162,18 @@ function _detalhes:OpenWelcomeWindow ()
local texto2 = window:CreateFontString (nil, "overlay", "GameFontNormal")
texto2:SetPoint ("topleft", window, "topleft", 20, -80)
texto2:SetText ("Damage & Healing per Second Timing:")
texto2:SetText ("Choose your DPS and HPS prefered method:")
local chronometer = CreateFrame ("CheckButton", "WelcomeWindowChronometer", window, "ChatConfigCheckButtonTemplate")
chronometer:SetPoint ("topleft", window, "topleft", 40, -110)
local continuous = CreateFrame ("CheckButton", "WelcomeWindowContinuous", window, "ChatConfigCheckButtonTemplate")
continuous:SetPoint ("topleft", window, "topleft", 40, -160)
_G ["WelcomeWindowChronometerText"]:SetText ("Chronometer"..": ")
_G ["WelcomeWindowContinuousText"]:SetText ("Continuous"..": ")
_G ["WelcomeWindowChronometerText"]:SetText ("Activity Time"..": ")
_G ["WelcomeWindowContinuousText"]:SetText ("Effective Time"..": ")
local chronometer_text = window:CreateFontString (nil, "overlay", "GameFontNormal")
chronometer_text:SetText ("standard way of measuring time, the timer of each raid member is put on hold if his activity is ceased and back again to count when actor activity is resumed.")
chronometer_text:SetText ("the timer of each raid member is put on hold if his activity is ceased and back again to count when is resumed, common way of mensure Dps and Hps.")
chronometer_text:SetWidth (360)
chronometer_text:SetHeight (40)
chronometer_text:SetJustifyH ("left")
@@ -182,8 +182,8 @@ function _detalhes:OpenWelcomeWindow ()
chronometer_text:SetPoint ("topleft", _G ["WelcomeWindowChronometerText"], "topright", 0, 0)
local continuous_text = window:CreateFontString (nil, "overlay", "GameFontNormal")
continuous_text:SetText ("also know as 'effective time', this method uses the elapsed combat time for mensure the Dps and Hps of all raid members.")
continuous_text:SetWidth (360)
continuous_text:SetText ("used for rankings, this method uses the elapsed combat time for mensure the Dps and Hps of all raid members.")
continuous_text:SetWidth (340)
continuous_text:SetHeight (40)
continuous_text:SetJustifyH ("left")
continuous_text:SetJustifyV ("top")
@@ -227,10 +227,10 @@ function _detalhes:OpenWelcomeWindow ()
local texto3 = window:CreateFontString (nil, "overlay", "GameFontNormal")
texto3:SetPoint ("topleft", window, "topleft", 20, -80)
texto3:SetText ("Reading combat data:")
texto3:SetText ("Which parts of a fight is important to you?")
local data_text = window:CreateFontString (nil, "overlay", "GameFontNormal")
data_text:SetText ("Details! reads and calculate combat data in a very fast way, but if you are unconfortable with you compunter performance, you can drop some types of data which isn't important to you:")
data_text:SetText ("Details! reads and calculate combat numbers in a very fast way, but if some kind of data is irrelevant for you, you can disable/enable it 'on-the-fly'.")
data_text:SetWidth (460)
data_text:SetHeight (40)
data_text:SetJustifyH ("left")
@@ -313,7 +313,7 @@ function _detalhes:OpenWelcomeWindow ()
g:NewSwitch (window, _, "$parentCaptureMiscSlider", "miscCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["miscdata"])
window.miscCaptureSlider:SetPoint ("left", window.miscCaptureLabel, "right", 2)
window.miscCaptureSlider.tooltip = "Pause or enable capture of:\n- cc breaks\n- dispell\n- interrupts\n- ress\n- deaths"
window.miscCaptureSlider.tooltip = "Pause or enable capture of:\n- cc breaks\n- dispell\n- interrupts\n- ress\n- deaths\n- frags"
window.miscCaptureSlider.OnSwitch = function (self, _, value)
_detalhes:CaptureSet (value, "miscdata", true)
switch_icon_color (window.miscCaptureImage, value)
@@ -322,7 +322,7 @@ function _detalhes:OpenWelcomeWindow ()
g:NewSwitch (window, _, "$parentCaptureAuraSlider", "auraCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["aura"])
window.auraCaptureSlider:SetPoint ("left", window.auraCaptureLabel, "right", 2)
window.auraCaptureSlider.tooltip = "Pause or enable capture of:\n- buffs uptime"
window.auraCaptureSlider.tooltip = "Pause or enable capture of:\n- buffs uptime\n- debuffs uptime\n- void zones\n- cooldowns"
window.auraCaptureSlider.OnSwitch = function (self, _, value)
_detalhes:CaptureSet (value, "aura", true)
switch_icon_color (window.auraCaptureImage, value)
@@ -355,10 +355,10 @@ function _detalhes:OpenWelcomeWindow ()
local texto4 = window:CreateFontString (nil, "overlay", "GameFontNormal")
texto4:SetPoint ("topleft", window, "topleft", 20, -80)
texto4:SetText ("Interface Tweaks:")
texto4:SetText ("Some Cool Interface Tweaks:")
local interval_text = window:CreateFontString (nil, "overlay", "GameFontNormal")
interval_text:SetText ("You can also adjust the interval (in seconds) between window updates, high values may save some performance.")
interval_text:SetText ("Here you can choose the uptime speed of all opened windows. Low values with dance bars enabled may create cool effects, but may consume more cpu.")
interval_text:SetWidth (460)
interval_text:SetHeight (40)
interval_text:SetJustifyH ("left")
@@ -367,13 +367,13 @@ function _detalhes:OpenWelcomeWindow ()
interval_text:SetPoint ("topleft", window, "topleft", 30, -110)
local dance_text = window:CreateFontString (nil, "overlay", "GameFontNormal")
dance_text:SetText ("Keeping 'Dance Bars' disabled also may help with performance.")
dance_text:SetText ("Enable 'Dance Bars' for bars animations.")
dance_text:SetWidth (460)
dance_text:SetHeight (40)
dance_text:SetJustifyH ("left")
dance_text:SetJustifyV ("top")
dance_text:SetTextColor (1, 1, 1, 1)
dance_text:SetPoint ("topleft", window, "topleft", 30, -170)
dance_text:SetPoint ("topleft", window, "topleft", 30, -175)
--------------- Update Speed
g:NewLabel (window, _, "$parentUpdateSpeedLabel", "updatespeedLabel", "Update Speed")
+14 -7
View File
@@ -30,6 +30,7 @@ do
function _detalhes.switch:CloseMe()
_detalhes.switch.frame:Hide()
_detalhes.switch.frame:SetBackdropColor (24/255, 24/255, 24/255, .8)
_detalhes.switch.current_instancia:StatusBarAlert (nil)
end
--> limitação: não tenho como pegar o base frame da instância por aqui
@@ -50,21 +51,23 @@ _detalhes.switch.current_instancia = nil
_detalhes.switch.current_button = nil
_detalhes.switch.height_necessary = (30*_detalhes.switch.slots)/2
--_detalhes:DelayMsg ("altura necessaria: " .. _detalhes.switch.height_necessary)
--_detalhes:DelayMsg ("slots: " .. _detalhes.switch.slots)
local right_click_text = {text = Loc ["STRING_SHORTCUT_RIGHTCLICK"], size = 9, color = {.9, .9, .9}}
local right_click_texture = {[[Interface\TUTORIALFRAME\UI-TUTORIAL-FRAME]], 14, 14, 0.0019531, 0.1484375, 0.6269531, 0.8222656}
function _detalhes.switch:ShowMe (instancia)
_detalhes.switch.current_instancia = instancia
_detalhes.switch.frame:SetFrameLevel (instancia.baseframe:GetFrameLevel() + 5)
_detalhes.switch.frame:SetPoint ("topleft", instancia.baseframe, "topleft", 2, 0)
_detalhes.switch.frame:SetPoint ("bottomright", instancia.baseframe, "bottomright", -2, 0)
_detalhes.switch.frame:SetBackdropColor (24/255, 24/255, 24/255, .8)
_detalhes.switch.frame:SetBackdropColor (0.094, 0.094, 0.094, .8)
local _r, _g, _b, _a = _detalhes.switch.frame:GetBackdropColor()
gump:GradientEffect (_detalhes.switch.frame, "frame", _r, _g, _b, _a, _r, _g, _b, 1, 1)
local altura = instancia.baseframe:GetHeight()
local mostrar_quantas = _math_floor (altura / 30)*2
local mostrar_quantas = _math_floor (altura / 30) * 2
if (_detalhes.switch.mostrar_quantas ~= mostrar_quantas) then
for i = 1, #_detalhes.switch.buttons do
@@ -86,6 +89,7 @@ function _detalhes.switch:ShowMe (instancia)
_detalhes.switch:Resize()
_detalhes.switch.frame:Show()
instancia:StatusBarAlert (right_click_text, right_click_texture) --icon, color, time
end
function _detalhes.switch:Config (_,_, atributo, sub_atributo)
@@ -111,16 +115,19 @@ function _detalhes:FastSwitch (_this)
GameCooltip:SetColor (1, nil)
GameCooltip:SetColor (2, nil)
GameCooltip:ShowCooltip()
--_detalhes.popup:ShowMe (_detalhes.switch.buttons [_this.button], _detalhes.switch.current_instancia, menu, sub_menu, "Interface\\AddOns\\Details\\images\\atributos_icones", 256, _, _, _, {["NoFade"] = true})
else --> botão esquerdo
if (_detalhes.switch.current_instancia.modo == _detalhes._detalhes_props["MODO_ALONE"]) then
_detalhes.switch.current_instancia:AlteraModo (_detalhes.switch.current_instancia, _detalhes.switch.current_instancia.LastModo)
elseif (_detalhes.switch.current_instancia.modo == _detalhes._detalhes_props["MODO_RAID"]) then
_detalhes.switch.current_instancia:AlteraModo (_detalhes.switch.current_instancia, _detalhes.switch.current_instancia.LastModo)
end
_detalhes.switch.current_instancia:TrocaTabela (_detalhes.switch.current_instancia.segmento, _this.atributo, _this.sub_atributo)
_detalhes.switch.current_instancia:TrocaTabela (_detalhes.switch.current_instancia, true, _this.atributo, _this.sub_atributo)
_detalhes.switch.CloseMe()
end
end
Binary file not shown.
Binary file not shown.
+5 -2
View File
@@ -3,8 +3,7 @@ if not Loc then return end
--------------------------------------------------------------------------------------------------------------------------------------------
-- \n\n|cFFFFFF00-|r
Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.6.7|r\n\n- Added support to skins, you can change over options panel.\n\n|cFFFFFF00v1.6.5|r\n\n|cFFFFFF00-|r Added sub attribute 'Enemies' which shows, of course, only enemies.\n\n|cFFFFFF00-|r Fixed issue with successful spell cast.\n\n|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_VERSION_LOG"] = "|cFFFFFF00v1.7.0|r\n\n- Fixed some colors issues with enimies bars.\n\n|cFFFFFF00-|r Fixed some phrases which isn't still not translated to enUS.\n\n|cFFFFFF00-|r Major rewrite on CC-Breaks, now it's working properly.\n\n|cFFFFFF00-|r Added new sub attribute for damage: Voidzones & Debuffs.|cFFFFFF00v1.6.7|r\n\n- Added support to skins, you can change over options panel.\n\n|cFFFFFF00v1.6.5|r\n\n|cFFFFFF00-|r Added sub attribute 'Enemies' which shows, of course, only enemies.\n\n|cFFFFFF00-|r Fixed issue with successful spell cast.\n\n|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
@@ -21,6 +20,8 @@ if not Loc then return end
Loc ["STRING_SEGMENT_TRASH"] = "Next Boss Cleanup"
Loc ["STRING_VERSION_UPDATE"] = "new version: what's changed? click here"
Loc ["STRING_NEWS_TITLE"] = "What's New In This Version"
Loc ["STRING_TIME_OF_DEATH"] = "Death"
Loc ["STRING_SHORTCUT_RIGHTCLICK"] = "Shortcut Menu (right click to close)"
Loc ["STRING_NO_DATA"] = "data already has been cleaned"
Loc ["STRING_ISA_PET"] = "This Actor is a Pet"
@@ -154,6 +155,8 @@ if not Loc then return end
Loc ["STRING_ATTRIBUTE_DAMAGE_FRIENDLYFIRE"] = "Friendly Fire"
Loc ["STRING_ATTRIBUTE_DAMAGE_FRAGS"] = "Frags"
Loc ["STRING_ATTRIBUTE_DAMAGE_ENEMIES"] = "Enemies"
Loc ["STRING_ATTRIBUTE_DAMAGE_DEBUFFS"] = "Auras & Voidzones"
Loc ["STRING_ATTRIBUTE_DAMAGE_DEBUFFS_REPORT"] = "Debuff Damage and Uptime"
Loc ["STRING_ATTRIBUTE_HEAL"] = "Heal"
Loc ["STRING_ATTRIBUTE_HEAL_DONE"] = "Healing Done"
+6 -2
View File
@@ -3,7 +3,7 @@ if not Loc then return end
--------------------------------------------------------------------------------------------------------------------------------------------
Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.6.7|r\n\n- Adicionado suporte a skins, troque ela atraves do painel de opcoes.\n\n|cFFFFFF00v1.6.5|r\n\n|cFFFFFF00-|r Adicionado o sub atributo 'Inimigos' que mostra, eh claro, somente inimigos.\n\n|cFFFFFF00-|r Corrigido um problema na captura das magias conjuradas.|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_VERSION_LOG"] = "|cFFFFFF00v1.7.0|r\n\n- Corrigido alguns problemas com as cores das barras de inimigos.\n\n|cFFFFFF00-|r CC Quebrado foi inteiramente reescrito e agora deve funcionar corretamente.\n\n|cFFFFFF00-|r Adicionado novo sub atributo ao dano: Voidzones & Debuffs.|cFFFFFF00v1.6.7|r\n\n- Adicionado suporte a skins, troque ela atraves do painel de opcoes.\n\n|cFFFFFF00v1.6.5|r\n\n|cFFFFFF00-|r Adicionado o sub atributo 'Inimigos' que mostra, eh claro, somente inimigos.\n\n|cFFFFFF00-|r Corrigido um problema na captura das magias conjuradas.|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
@@ -20,6 +20,8 @@ if not Loc then return end
Loc ["STRING_SEGMENT_TRASH"] = "Caminho do Proximo Boss"
Loc ["STRING_VERSION_UPDATE"] = "nova versao: clique para ver o que mudou"
Loc ["STRING_NEWS_TITLE"] = "Quais As Novidades Desta Versao"
Loc ["STRING_TIME_OF_DEATH"] = "Morreu"
Loc ["STRING_SHORTCUT_RIGHTCLICK"] = "Menu de Atalho (botao direito para fechar)"
Loc ["STRING_NO_DATA"] = "data já foi limpada"
Loc ["STRING_ISA_PET"] = "Este Ator e um Ajudante"
@@ -149,8 +151,10 @@ if not Loc then return end
Loc ["STRING_DAMAGE_TAKEN_FROM"] = "Dano Recebido Vindo De"
Loc ["STRING_DAMAGE_TAKEN_FROM2"] = "aplicou dano com"
Loc ["STRING_ATTRIBUTE_DAMAGE_FRIENDLYFIRE"] = "Fogo Amigo"
Loc ["STRING_ATTRIBUTE_DAMAGE_FRAGS"] = "Inimigos Abatidos"
Loc ["STRING_ATTRIBUTE_DAMAGE_FRAGS"] = "Abatimentos"
Loc ["STRING_ATTRIBUTE_DAMAGE_ENEMIES"] = "Inimigos"
Loc ["STRING_ATTRIBUTE_DAMAGE_DEBUFFS"] = "Auras & Voidzones"
Loc ["STRING_ATTRIBUTE_DAMAGE_DEBUFFS_REPORT"] = "Dano e Tempo de Atividade da Aura"
Loc ["STRING_ATTRIBUTE_HEAL"] = "Cura"
Loc ["STRING_ATTRIBUTE_HEAL_DONE"] = "Cura Feita"
+14 -2
View File
@@ -120,11 +120,11 @@ function _G._detalhes:Start()
for classe, tabela_cor in pairs ( RAID_CLASS_COLORS ) do
self.class_colors [classe] = {tabela_cor.r, tabela_cor.g, tabela_cor.b}
end
--self.class_colors ["UNKNOW"] = {0.3921, 0.0980, 0.0980}
self.class_colors ["UNKNOW"] = {0.2, 0.2, 0.2}
self.class_colors ["UNGROUPPLAYER"] = {0.4, 0.4, 0.4}
self.class_colors ["PET"] = {0.3, 0.4, 0.5}
end
self.class_colors ["ENEMY"] = self.class_colors ["ENEMY"] or {0.94117, 0, 0.01960, 1}
self.class_coords = {}
for class, tcoord in pairs (_G.CLASS_ICON_TCOORDS) do
@@ -136,13 +136,25 @@ function _G._detalhes:Start()
self.class_coords ["Horde"] = {0.7421875, 0.98828125, 0.75, 1}
self.class_coords ["PET"] = {0.25, 0.49609375, 0.75, 1}
self.class_coords ["MONSTER"] = {0, 0.25, 0.75, 1}
self.class_coords ["ENEMY"] = {0, 0.25, 0.75, 1}
self.class_coords ["UNKNOW"] = {0.5, 0.75, 0.75, 1}
self.class_coords ["UNGROUPPLAYER"] = {0.5, 0.75, 0.75, 1}
self.school_colors = {
[1] = {1.00, 1.00, 0.00},
[2] = {1.00, 0.90, 0.50},
[4] = {1.00, 0.50, 0.00},
[8] = {0.30, 1.00, 0.30},
[16] = {0.50, 1.00, 1.00},
[32] = {0.50, 0.50, 1.00},
[64] = {1.00, 0.50, 1.00},
["unknown"] = {0.5, 0.75, 0.75, 1}
}
--> single click row function replace
--damage, dps, damage taken, friendly fire
self.row_singleclick_overwrite [1] = {true, true, true, true, self.atributo_damage.ReportSingleFragsLine, true}
self.row_singleclick_overwrite [1] = {true, true, true, true, self.atributo_damage.ReportSingleFragsLine, true, self.atributo_damage.ReportSingleVoidZoneLine}
--healing, hps, overheal, healing taken
self.row_singleclick_overwrite [2] = {true, true, true, true, false, self.atributo_heal.ReportSingleDamagePreventedLine}
--mana, rage, energy, runepower