2012-07-24 02:22:38 +02:00
|
|
|
skillsWindow = nil
|
|
|
|
skillsButton = nil
|
2011-09-13 23:54:23 +02:00
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
function init()
|
2012-03-28 16:10:21 +02:00
|
|
|
connect(LocalPlayer, {
|
2012-07-24 02:22:38 +02:00
|
|
|
onExperienceChange = onExperienceChange,
|
|
|
|
onLevelChange = onLevelChange,
|
|
|
|
onHealthChange = onHealthChange,
|
|
|
|
onManaChange = onManaChange,
|
|
|
|
onSoulChange = onSoulChange,
|
|
|
|
onFreeCapacityChange = onFreeCapacityChange,
|
|
|
|
onStaminaChange = onStaminaChange,
|
|
|
|
onMagicLevelChange = onMagicLevelChange,
|
|
|
|
onSkillChange = onSkillChange
|
2012-03-28 16:10:21 +02:00
|
|
|
})
|
|
|
|
|
2012-06-26 00:13:30 +02:00
|
|
|
skillsWindow = g_ui.loadUI('skills.otui', GameInterface.getRightPanel())
|
2012-07-24 02:22:38 +02:00
|
|
|
skillsButton = TopMenu.addRightGameToggleButton('skillsButton', tr('Skills') .. ' (Ctrl+S)', 'skills.png', toggle)
|
2012-03-28 16:10:21 +02:00
|
|
|
skillsButton:setOn(true)
|
2012-07-24 02:22:38 +02:00
|
|
|
g_keyboard.bindKeyDown('Ctrl+S', toggle)
|
2012-04-27 08:30:54 +02:00
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
refresh()
|
2011-12-22 05:06:00 +01:00
|
|
|
end
|
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
function terminate()
|
2012-03-28 16:10:21 +02:00
|
|
|
disconnect(LocalPlayer, {
|
2012-07-24 02:22:38 +02:00
|
|
|
onExperienceChange = onExperienceChange,
|
|
|
|
onLevelChange = onLevelChange,
|
|
|
|
onHealthChange = onHealthChange,
|
|
|
|
onManaChange = onManaChange,
|
|
|
|
onSoulChange = onSoulChange,
|
|
|
|
onFreeCapacityChange = onFreeCapacityChange,
|
|
|
|
onStaminaChange = onStaminaChange,
|
|
|
|
onMagicLevelChange = onMagicLevelChange,
|
|
|
|
onSkillChange = onSkillChange
|
2012-03-28 16:10:21 +02:00
|
|
|
})
|
|
|
|
|
2012-06-26 00:13:30 +02:00
|
|
|
g_keyboard.unbindKeyDown('Ctrl+S')
|
2012-01-23 14:47:15 +01:00
|
|
|
skillsButton:destroy()
|
|
|
|
skillsWindow:destroy()
|
2012-07-24 02:22:38 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
function setSkillValue(id, value)
|
|
|
|
local skill = skillsWindow:recursiveGetChildById(id)
|
|
|
|
local widget = skill:getChildById('value')
|
|
|
|
widget:setText(value)
|
|
|
|
end
|
2012-04-27 06:54:14 +02:00
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
function setSkillPercent(id, percent, tooltip)
|
|
|
|
local skill = skillsWindow:recursiveGetChildById(id)
|
|
|
|
local widget = skill:getChildById('percent')
|
|
|
|
widget:setPercent(percent)
|
|
|
|
|
|
|
|
if tooltip then
|
|
|
|
widget:setTooltip(tooltip)
|
|
|
|
end
|
2011-11-03 13:17:10 +01:00
|
|
|
end
|
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
function refresh()
|
2012-04-27 08:30:54 +02:00
|
|
|
local player = g_game.getLocalPlayer()
|
|
|
|
if not player then return end
|
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
onExperienceChange(player, player:getExperience())
|
|
|
|
onLevelChange(player, player:getLevel(), player:getLevelPercent())
|
|
|
|
onHealthChange(player, player:getHealth(), player:getMaxHealth())
|
|
|
|
onManaChange(player, player:getMana(), player:getMaxMana())
|
|
|
|
onSoulChange(player, player:getSoul())
|
|
|
|
onFreeCapacityChange(player, player:getFreeCapacity())
|
|
|
|
onStaminaChange(player, player:getStamina())
|
|
|
|
onMagicLevelChange(player, player:getMagicLevel(), player:getMagicLevelPercent())
|
2012-04-27 08:30:54 +02:00
|
|
|
|
|
|
|
for i=0,6 do
|
2012-07-24 02:22:38 +02:00
|
|
|
onSkillChange(player, i, player:getSkillLevel(i), player:getSkillLevelPercent(i))
|
2012-04-27 08:30:54 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
function toggle()
|
2012-06-21 21:31:22 +02:00
|
|
|
if skillsButton:isOn() then
|
|
|
|
skillsWindow:close()
|
|
|
|
skillsButton:setOn(false)
|
|
|
|
else
|
|
|
|
skillsWindow:open()
|
|
|
|
skillsButton:setOn(true)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
function onMiniWindowClose()
|
2012-06-21 21:31:22 +02:00
|
|
|
skillsButton:setOn(false)
|
2012-01-14 20:31:20 +01:00
|
|
|
end
|
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
function onSkillButtonClick(button)
|
2012-01-06 09:48:59 +01:00
|
|
|
local percentBar = button:getChildById('percent')
|
|
|
|
if percentBar then
|
|
|
|
percentBar:setVisible(not percentBar:isVisible())
|
|
|
|
if percentBar:isVisible() then
|
|
|
|
button:setHeight(21)
|
|
|
|
else
|
|
|
|
button:setHeight(21 - 6)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
function onExperienceChange(localPlayer, value)
|
2012-04-26 18:45:25 +02:00
|
|
|
setSkillValue('experience', tr(value))
|
2011-12-22 05:06:00 +01:00
|
|
|
end
|
2011-11-03 23:14:56 +01:00
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
function onLevelChange(localPlayer, value, percent)
|
2012-04-26 18:45:25 +02:00
|
|
|
setSkillValue('level', tr(value))
|
2012-04-26 21:54:16 +02:00
|
|
|
setSkillPercent('level', percent, tr('You have %s percent to go', 100 - percent))
|
2011-12-22 05:06:00 +01:00
|
|
|
end
|
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
function onHealthChange(localPlayer, health, maxHealth)
|
2012-04-26 18:45:25 +02:00
|
|
|
setSkillValue('health', tr(health))
|
2011-12-22 05:06:00 +01:00
|
|
|
end
|
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
function onManaChange(localPlayer, mana, maxMana)
|
2012-04-26 18:45:25 +02:00
|
|
|
setSkillValue('mana', tr(mana))
|
2011-12-22 05:06:00 +01:00
|
|
|
end
|
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
function onSoulChange(localPlayer, soul)
|
2011-12-22 05:06:00 +01:00
|
|
|
setSkillValue('soul', soul)
|
|
|
|
end
|
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
function onFreeCapacityChange(localPlayer, freeCapacity)
|
2011-12-22 05:06:00 +01:00
|
|
|
setSkillValue('capacity', freeCapacity)
|
|
|
|
end
|
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
function onStaminaChange(localPlayer, stamina)
|
2011-12-22 05:06:00 +01:00
|
|
|
local hours = math.floor(stamina / 60)
|
|
|
|
local minutes = stamina % 60
|
|
|
|
if minutes < 10 then
|
|
|
|
minutes = '0' .. minutes
|
|
|
|
end
|
|
|
|
local percent = 100 * stamina / (42 * 60) -- max is 42 hours
|
2012-01-06 09:48:59 +01:00
|
|
|
|
2011-12-22 05:06:00 +01:00
|
|
|
setSkillValue('stamina', hours .. ":" .. minutes)
|
2012-04-26 21:54:16 +02:00
|
|
|
setSkillPercent('stamina', percent, tr('You have %s percent', percent))
|
2011-12-22 05:06:00 +01:00
|
|
|
end
|
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
function onMagicLevelChange(localPlayer, value, percent)
|
2011-12-22 05:06:00 +01:00
|
|
|
setSkillValue('magiclevel', value)
|
2012-04-26 21:54:16 +02:00
|
|
|
setSkillPercent('magiclevel', percent, tr('You have %s percent to go', 100 - percent))
|
2011-12-22 05:06:00 +01:00
|
|
|
end
|
2011-11-03 23:14:56 +01:00
|
|
|
|
2012-07-24 02:22:38 +02:00
|
|
|
function onSkillChange(localPlayer, id, level, percent)
|
2011-12-22 05:06:00 +01:00
|
|
|
setSkillValue('skillId' .. id, level)
|
2012-04-26 21:54:16 +02:00
|
|
|
setSkillPercent('skillId' .. id, percent, tr('You have %s percent to go', 100 - percent))
|
2011-11-03 21:54:53 +01:00
|
|
|
end
|
|
|
|
|