- Joined
- Jan 30, 2013
- Messages
- 12,883
This is a pretty good utility, I'll keep this in hand. Would be neat for some genres with zero damage RnG.
-- HideMinDamageV7
do
local realFunction = MarkGameStarted
local timer, damageA, damageB, parentA, parentB, damageA2, damageB2, text, index
local oldTextA,oldTextB
local function update(sourceFrame, targetFrame, oldText)
text = BlzFrameGetText(sourceFrame)
if text ~= oldText then
index = string.find(text, " - ", 1, true)
BlzFrameSetText(targetFrame, string.sub( text, index + 3))
return text
end
end
local function Init()
BlzLoadTOCFile("war3mapImported\\HideMinDamage.toc")
if not timer then
timer = CreateTimer()
if FrameLoaderAdd then FrameLoaderAdd(Init) end
end
damageA = BlzGetFrameByName("InfoPanelIconValue", 0)
damageB = BlzGetFrameByName("InfoPanelIconValue", 1)
parentA = BlzGetFrameByName("SimpleInfoPanelIconDamage",0)
parentB = BlzGetFrameByName("SimpleInfoPanelIconDamage",1)
local frame = BlzCreateSimpleFrame("CustomDamageString", parentA, 0)
if GetHandleId(frame) > 0 then
damageA2 = BlzGetFrameByName("CustomDamageStringValue", 0)
BlzCreateSimpleFrame("CustomDamageString", parentB, 1)
damageB2 = BlzGetFrameByName("CustomDamageStringValue", 1)
else -- no fdf
BlzCreateSimpleFrame("SimpleInfoPanelDestructableDetail", parentA, 11)
damageA2 = BlzGetFrameByName("SimpleDestructableNameValue", 11)
BlzFrameClearAllPoints(damageA2)
BlzFrameSetPoint(damageA2, FRAMEPOINT_TOPLEFT, BlzGetFrameByName("InfoPanelIconLabel", 0), FRAMEPOINT_BOTTOMLEFT, 0.002625, -0.003)
if SkinManagerGetLocalPath then BlzFrameSetFont(damageA2, SkinManagerGetLocalPath("InfoPanelTextFont"), 0.008, 0) else BlzFrameSetFont(damageA2, "Fonts/frizqt__.ttf", 0.008, 0) end
BlzCreateSimpleFrame("SimpleInfoPanelDestructableDetail", parentB, 12)
damageB2 = BlzGetFrameByName("SimpleDestructableNameValue", 12)
BlzFrameClearAllPoints(damageB2)
BlzFrameSetPoint(damageB2, FRAMEPOINT_TOPLEFT, BlzGetFrameByName("InfoPanelIconLabel", 1), FRAMEPOINT_BOTTOMLEFT, 0.002625, -0.003)
if SkinManagerGetLocalPath then BlzFrameSetFont(damageB2, SkinManagerGetLocalPath("InfoPanelTextFont"), 0.008, 0) else BlzFrameSetFont(damageB2, "Fonts/frizqt__.ttf", 0.008, 0) end
end
BlzFrameSetFont(damageA, "", 0, 0)
BlzFrameSetFont(damageB, "", 0, 0)
TimerStart(timer, 0.05, true, function()
if BlzFrameIsVisible(parentA) then
local text = update(damageA, damageA2, oldTextA)
if text then oldTextA = text end
end
if BlzFrameIsVisible(parentB) then
local text = update(damageB, damageB2, oldTextB)
if text then oldTextB = text end
end
end)
end
HideMinDamageInit = Init
if OnInit then -- Total Initialization v5.2.0.1 by Bribe
OnInit.final(Init)
else -- without
local real = MarkGameStarted
function MarkGameStarted()
real()
Init()
end
end
end
library HideMinDamageText initializer init_function requires optional FrameLoader
// HideMinDamageV7
globals
private framehandle DamageA
private framehandle DamageB
private framehandle DamageA2
private framehandle DamageB2
private framehandle ParentA
private framehandle ParentB
private string Text
private string OldTextA = ""
private string OldTextB = ""
private integer Index
private integer LoopA
private integer LoopAEnd
endglobals
private function find takes nothing returns nothing
set LoopAEnd = StringLength(Text) - 1
set LoopA = 1
loop
exitwhen LoopA >= LoopAEnd
if SubString(Text, LoopA, LoopA +3) == " - " then
set Index = LoopA + 3
return
endif
set LoopA = LoopA + 1
endloop
set Index = 0
endfunction
private function update takes nothing returns nothing
if BlzFrameIsVisible(ParentA) then
set Text = BlzFrameGetText(DamageA)
if Text != OldTextA then
set OldTextA = Text
call find()
call BlzFrameSetText(DamageA2, SubString(Text, Index, StringLength(Text)))
endif
endif
if BlzFrameIsVisible(ParentB) then
set Text = BlzFrameGetText(DamageB)
if Text != OldTextB then
set OldTextB = Text
call find()
call BlzFrameSetText(DamageB2, SubString(Text, Index, StringLength(Text)))
endif
endif
endfunction
private function At0s takes nothing returns nothing
call BlzLoadTOCFile("war3mapImported\\HideMinDamage.toc")
set ParentA = BlzGetFrameByName("SimpleInfoPanelIconDamage", 0)
set ParentB = BlzGetFrameByName("SimpleInfoPanelIconDamage", 1)
set DamageA = BlzGetFrameByName("InfoPanelIconValue", 0)
set DamageB = BlzGetFrameByName("InfoPanelIconValue", 1)
call BlzCreateSimpleFrame("CustomDamageString", ParentA, 0)
set DamageA2 = BlzGetFrameByName("CustomDamageStringValue", 0)
if GetHandleId(DamageA2) > 0 then
call BlzCreateSimpleFrame("CustomDamageString", ParentB, 1)
set DamageB2 = BlzGetFrameByName("CustomDamageStringValue", 1)
else
call BlzCreateSimpleFrame("SimpleInfoPanelDestructableDetail", ParentA, 11)
set DamageA2 = BlzGetFrameByName("SimpleDestructableNameValue", 11)
//call BlzFrameSetFont(DamageA2, SkinManagerGetLocalPath("InfoPanelTextFont"), 0.008, 0)
call BlzFrameSetFont(DamageA2, "Fonts/frizqt__.ttf", 0.008, 0)
call BlzFrameClearAllPoints(DamageA2)
call BlzFrameSetPoint(DamageA2, FRAMEPOINT_TOPLEFT, BlzGetFrameByName("InfoPanelIconLabel", 0), FRAMEPOINT_BOTTOMLEFT, 0.002625, -0.003)
call BlzCreateSimpleFrame("SimpleInfoPanelDestructableDetail", ParentB, 12)
set DamageB2 = BlzGetFrameByName("SimpleDestructableNameValue", 12)
//call BlzFrameSetFont(DamageB2, SkinManagerGetLocalPath("InfoPanelTextFont"), 0.008, 0)
call BlzFrameSetFont(DamageB2, "Fonts/frizqt__.ttf", 0.008, 0)
call BlzFrameClearAllPoints(DamageB2)
call BlzFrameSetPoint(DamageB2, FRAMEPOINT_TOPLEFT, BlzGetFrameByName("InfoPanelIconLabel", 1), FRAMEPOINT_BOTTOMLEFT, 0.002625, -0.003)
endif
call BlzFrameSetFont(DamageA, "", 0, 0)
call BlzFrameSetFont(DamageB, "", 0, 0)
call TimerStart(GetExpiredTimer(), 0.05, true, function update)
endfunction
private function init_function takes nothing returns nothing
static if LIBRARY_FrameLoader then
call FrameLoaderAdd(function At0s)
endif
call TimerStart(CreateTimer(), 0, false, function At0s)
endfunction
endlibrary