Will show you the time left to advance on skills (Weapon Skill, Shielding and Magic Level).
Configuration
You Need to Add the Persistent Code on the tab Scripter -> Persistent and the HUD Code on the tab HUDs.
You need to wait your character gain 1% full on the skill to calculate the time left.
Codes
Persistent Code:
init start
-- Version 2.0.1
function GetWeaponPC()
SkillType = findweapontype()
local SkillNames = {'axe','sword','club','no weapon','distance weapon'}
if table.find(SkillNames,SkillType) then
if SkillType == 'axe' then
return $axepc
elseif SkillType == 'sword' then
return $swordpc
elseif SkillType == 'club' then
return $clubpc
elseif SkillType == 'no weapon' then
return $fistpc
elseif SkillType == 'distance weapon' then
return $distancepc
end
else
return $mlevelpc
end
end
local Config = {
{name = 'Weapon', _starttime = $timems, _skill = GetWeaponPC(), _traceskill = 0, _timers = {0}, _try = 0, _finalTime = {}},
{name = 'Magic', _starttime = $timems, _skill = $mlevelpc, _traceskill = 0, _timers = {0}, _try = 0, _finalTime = {}},
{name = 'Shielding', _starttime = $timems, _skill = $shieldingpc, _traceskill = 0, _timers = {0}, _try = 0, _finalTime = {}},
{name = 'Fishing', _starttime = $timems, _skill = $fishingpc, _traceskill = 0, _timers = {0}, _try = 0, _finalTime = {}}
}
init end
auto(100)
local Skills = {
{name = 'Weapon', _skill = GetWeaponPC(), _left = _left or 0, _avgTime = _avgTime or 0, _advanceTime = _advanceTime or 0},
{name = 'Magic', _skill = $mlevelpc, _left = _left or 0, _avgTime = _avgTime or 0, _advanceTime = _advanceTime or 0},
{name = 'Shielding', _skill = $shieldingpc, _left = _left or 0, _avgTime = _avgTime or 0, _advanceTime = _advanceTime or 0},
{name = 'Fishing', _skill = $fishingpc, _left = _left or 0, _avgTime = _avgTime or 0, _advanceTime = _advanceTime or 0}
}
for ic = 1,#Config do
for is = 1,#Skills do
if Skills[is].name == Config[ic].name then
if Config[ic]._skill ~= Skills[is]._skill then
Config[ic]._traceskill = $timems - Config[ic]._starttime
if Config[ic]._try > 0 then
table.insert(Config[ic]._timers,Config[ic]._traceskill)
end
Config[ic]._starttime = $timems
Config[ic]._skill = Skills[is]._skill
for it = 1,#Config[ic]._timers do
if it > 3 then
table.remove(Config[ic]._timers,1)
end
end
Config[ic]._try = Config[ic]._try + 1
end
function SkillTimer(skill)
curTime = math.floor($charactertime / 1000)
if Skills[1]._timeLeft ~= _Tracker.lastSkillPrediction then
_Tracker.lastSkillPrediction = Skills[1]._timeLeft
_Tracker.timeSkillPredictionChanged = curTime
end
if Skills[2]._timeLeft ~= _Tracker.lastMagicPrediction then
_Tracker.lastMagicPrediction = Skills[2]._timeLeft
_Tracker.timeMagicPredictionChanged = curTime
end
if Skills[3]._timeLeft ~= _Tracker.lastShieldingPrediction then
_Tracker.lastShieldingPrediction = Skills[3]._timeLeft
_Tracker.timeShieldingPredictionChanged = curTime
end
if Skills[4]._timeLeft ~= _Tracker.lastFishingPrediction then
_Tracker.lastFishingPrediction = Skills[4]._timeLeft
_Tracker.timeFishingPredictionChanged = curTime
end
if skill == 'Weapon' then
return math.max(math.round(Skills[1]._timeLeft - curTime + _Tracker.timeSkillPredictionChanged), 1)
elseif skill == 'Magic' then
return math.max(math.round(Skills[2]._timeLeft - curTime + _Tracker.timeMagicPredictionChanged), 1)
elseif skill == 'Shielding' then
return math.max(math.round(Skills[3]._timeLeft - curTime + _Tracker.timeShieldingPredictionChanged), 1)
elseif skill == 'Fishing' then
return math.max(math.round(Skills[4]._timeLeft - curTime + _Tracker.timeFishingPredictionChanged), 1)
end
end
if time(SkillTimer('Weapon')) ~= '1' then
showWeapon = time(SkillTimer('Weapon'))
else
showWeapon = 'Calculating'
end
if time(SkillTimer('Magic')) ~= '1' then
showMagic = time(SkillTimer('Magic'))
else
showMagic = 'Calculating'
end
if time(SkillTimer('Shielding')) ~= '1' then
showShielding = time(SkillTimer('Shielding'))
else
showShielding = 'Calculating'
end
if time(SkillTimer('Fishing')) ~= '1' then
showFishing = time(SkillTimer('Fishing'))
else
showFishing = 'Calculating'
end
HUD Code
init start
-- DO NOT EDIT BELOW THIS LINE
local HUD = {
Restart = -1,
Position = {$clientwin.left, $worldwin.bottom},
Auxiliar = {0, 0},
ColumnWidth = {125, 12},
Moving = false,
Blue = {0.0, color(90, 12, 15, 20), 0.23, color(98, 13, 17, 20), 0.76, color(52, 6, 9, 20)},
Black = {0.0, color(75, 75, 75, 20), 0.23, color(45, 45, 45, 20), 0.76, color(19, 19, 19, 20)},
Orange = {0.0, color(120, 120, 120, 20), 0.23, color(100, 100, 100, 20), 0.76, color(35, 35, 35, 20)},
Green = {0.0, color(65, 96, 12, 20), 0.23, color(67, 99, 13, 20), 0.76, color(36, 52, 6, 20)},
Red = {0.0, color(90, 12, 15, 20), 0.23, color(98, 13, 17, 20), 0.76, color(52, 6, 9, 20)},
}
showWeapon = showWeapon or 0
showShielding = showShielding or 0
showMagic = showMagic or 0
showFishing = showFishing or 0
local tempPos = $chardb:getvalue('SkillTimer.TH', 'POSITION')
if tempPos then
tempPos = tempPos:explode(":")
HUD.Position = {tonumber(tempPos[1]), tonumber(tempPos[2])}
end
function inputevents(e)
if e.type == IEVENT_RMOUSEDOWN or e.type == IEVENT_MMOUSEDOWN then
HUD.Moving, HUD.Auxiliar = true, {$cursor.x - HUD.Position[1], $cursor.y - HUD.Position[2]}
elseif e.type == IEVENT_RMOUSEUP or e.type == IEVENT_MMOUSEUP then
HUD.Moving = false
elseif e.type == IEVENT_LMOUSEUP then
if e.elementid == HUD.Restart then
SkillTable = {}
CalculateTry = 0
ShieldingTable = {}
ShieldingCalculateTry = 0
MagicTable = {}
MagicCalculateTry = 0
end
end
end
local function displaytext(text, x, y, c)
addgradcolors(unpack(c))
local w, h = measurestring(text)
HUD.ColumnWidth[1], HUD.ColumnWidth[2] = math.max(HUD.ColumnWidth[1], w or 0), math.max(HUD.ColumnWidth[2], h or 0)
local t = drawroundrect(x, y, HUD.ColumnWidth[1] + 7, HUD.ColumnWidth[2], 2, 2)
drawtext(text, x + 2, y + math.floor(HUD.ColumnWidth[2] / 4) - 2.55)
return t
end
init end
if HUD.Moving then
auto(10)
HUD.Position = {$cursor.x - HUD.Auxiliar[1], $cursor.y - HUD.Auxiliar[2]}
$chardb:setvalue('SkillTimer.TH', 'POSITION', table.concat(HUD.Position, ':'))
end
local x, y = 0, 0
displaytext(" Skill Timer", x, y, HUD.Blue)
addgradcolors(unpack(HUD.Green))
w, h = measurestring("RESET")
HUD.Restart = drawroundrect(x - w + HUD.ColumnWidth[1], y, w + 7, h, 2, 2)
drawtext("RESET", 5 + x - w + HUD.ColumnWidth[1], y + math.floor(h / 4) - 2.4)
y = y + 16
displaytext(' Weapon Timer: '..showWeapon, x, y, HUD.Black)
y = y + 16
displaytext(' Shielding Timer: '..showShielding, x,y, HUD.Black)
y = y + 16
displaytext(' Magic Level Timer: '..showMagic, x,y, HUD.Black)
y = y + 16
displaytext(' Fishing Timer: '..showFishing, x,y, HUD.Black)
setposition(unpack(HUD.Position))
Thanks
I would like to thanks @Leonardo, @Lucas Terra and @Raphael for the assistance and for being awesome guys haha