{cont.}
-- draw the bar here, on getting the prompt, or window resize
function draw_bar ()
-- check numbers for validity
if not current_xp or
not max_xp or
current_xp < 0 or
max_xp <= 0 then
return
end -- if
-- cannot have more than max xp
if current_xp > max_xp then
current_xp = max_xp
end -- if
-- width is window width minus 2
local gauge_width = GetInfo (281) - 2
-- make room for the bar
local bottom_margin = GetInfo (275)
-- adjust text rectangle, keeping existing settings where possible
if bottom_margin == 0 or
(bottom_margin < 0 and math.abs (bottom_margin) < (GAUGE_HEIGHT + 2)) then
TextRectangle(GetInfo (272), GetInfo (273), -- left, top
GetInfo (274), -- right
- (GAUGE_HEIGHT + 2), -- bottom (gauge height plus 2 more)
GetInfo (276), GetInfo (282) or 0, GetInfo (277), -- BorderOffset, BorderColour, BorderWidth
GetInfo (278), GetInfo (279)) -- OutsideFillColour, OutsideFillStyle
end -- if
-- make the miniwindow
WindowCreate (win,
0, 0, -- left, top (auto-positions)
gauge_width, -- width
GAUGE_HEIGHT, -- height
10, -- auto-position: bottom left
0, -- flags
BACKGROUND_COLOUR)
WindowRectOp (win, 2, 0, 0, 0, 0, BACKGROUND_COLOUR) -- fill entire box
-- how far through the level we are
local done = current_xp / max_xp
local bar_width = gauge_width * done
-- box size must be > 0 or WindowGradient fills the whole thing
if math.floor (bar_width) > 0 then
-- top half
WindowGradient (win, 0, 0,
bar_width, GAUGE_HEIGHT / 2,
0x000000, -- black
BOX_COLOUR,
2) -- vertical gradient
-- bottom half
WindowGradient (win, 0, GAUGE_HEIGHT / 2,
bar_width, 0,
BOX_COLOUR,
0x000000, -- black
2) -- vertical gradient
end -- any experience to speak of
-- show ticks
local ticks_at = gauge_width / NUMBER_OF_TICKS
-- ticks
for i = 1, NUMBER_OF_TICKS do
WindowLine (win, i * ticks_at, 0, i * ticks_at, GAUGE_HEIGHT, ColourNameToRGB ("silver"), 0, 1)
end -- for
-- draw a box around it
check (WindowRectOp (win, 1, 0, 0, 0, 0, ColourNameToRGB ("lightgrey"))) -- frame entire box
-- ensure window visible
WindowShow (win, true)
end -- draw_bar
function do_prompt (name, line, wildcards, styles)
-- CHANGE HERE if your prompt is different (eg. different wildcard numbers)
-- (string.gsub removes commas from the experience figures, if necessary)
max_xp = tonumber (char_xpl)
current_xp = max_xp - tonumber (wildcards.axp)
draw_bar ()
end -- do_prompt
function OnPluginWorldOutputResized ()
draw_bar ()
end -- function
-- hide window on removal
function OnPluginClose ()
WindowShow (win, false) -- hide it
end -- OnPluginClose
-- hide window on disable
function OnPluginDisable ()
WindowShow (win, false) -- hide it
end -- OnPluginDisable
]]></script>
</muclient>
Thank you again. |