mirror of
https://github.com/edubart/otclient.git
synced 2025-10-15 20:14:54 +02:00
Improve modules and sandbox system
This commit is contained in:
@@ -1,17 +1,52 @@
|
||||
Skills = {}
|
||||
skillsWindow = nil
|
||||
skillsButton = nil
|
||||
|
||||
-- private variables
|
||||
local skillsWindow
|
||||
local skillsButton
|
||||
function init()
|
||||
connect(LocalPlayer, {
|
||||
onExperienceChange = onExperienceChange,
|
||||
onLevelChange = onLevelChange,
|
||||
onHealthChange = onHealthChange,
|
||||
onManaChange = onManaChange,
|
||||
onSoulChange = onSoulChange,
|
||||
onFreeCapacityChange = onFreeCapacityChange,
|
||||
onStaminaChange = onStaminaChange,
|
||||
onMagicLevelChange = onMagicLevelChange,
|
||||
onSkillChange = onSkillChange
|
||||
})
|
||||
|
||||
-- private functions
|
||||
local function setSkillValue(id, value)
|
||||
skillsWindow = g_ui.loadUI('skills.otui', GameInterface.getRightPanel())
|
||||
skillsButton = TopMenu.addRightGameToggleButton('skillsButton', tr('Skills') .. ' (Ctrl+S)', 'skills.png', toggle)
|
||||
skillsButton:setOn(true)
|
||||
g_keyboard.bindKeyDown('Ctrl+S', toggle)
|
||||
|
||||
refresh()
|
||||
end
|
||||
|
||||
function terminate()
|
||||
disconnect(LocalPlayer, {
|
||||
onExperienceChange = onExperienceChange,
|
||||
onLevelChange = onLevelChange,
|
||||
onHealthChange = onHealthChange,
|
||||
onManaChange = onManaChange,
|
||||
onSoulChange = onSoulChange,
|
||||
onFreeCapacityChange = onFreeCapacityChange,
|
||||
onStaminaChange = onStaminaChange,
|
||||
onMagicLevelChange = onMagicLevelChange,
|
||||
onSkillChange = onSkillChange
|
||||
})
|
||||
|
||||
g_keyboard.unbindKeyDown('Ctrl+S')
|
||||
skillsButton:destroy()
|
||||
skillsWindow:destroy()
|
||||
end
|
||||
|
||||
function setSkillValue(id, value)
|
||||
local skill = skillsWindow:recursiveGetChildById(id)
|
||||
local widget = skill:getChildById('value')
|
||||
widget:setText(value)
|
||||
end
|
||||
|
||||
local function setSkillPercent(id, percent, tooltip)
|
||||
function setSkillPercent(id, percent, tooltip)
|
||||
local skill = skillsWindow:recursiveGetChildById(id)
|
||||
local widget = skill:getChildById('percent')
|
||||
widget:setPercent(percent)
|
||||
@@ -21,69 +56,25 @@ local function setSkillPercent(id, percent, tooltip)
|
||||
end
|
||||
end
|
||||
|
||||
-- public functions
|
||||
function Skills.init()
|
||||
connect(LocalPlayer, {
|
||||
onExperienceChange = Skills.onExperienceChange,
|
||||
onLevelChange = Skills.onLevelChange,
|
||||
onHealthChange = Skills.onHealthChange,
|
||||
onManaChange = Skills.onManaChange,
|
||||
onSoulChange = Skills.onSoulChange,
|
||||
onFreeCapacityChange = Skills.onFreeCapacityChange,
|
||||
onStaminaChange = Skills.onStaminaChange,
|
||||
onMagicLevelChange = Skills.onMagicLevelChange,
|
||||
onSkillChange = Skills.onSkillChange
|
||||
})
|
||||
|
||||
skillsWindow = g_ui.loadUI('skills.otui', GameInterface.getRightPanel())
|
||||
skillsButton = TopMenu.addRightGameToggleButton('skillsButton', tr('Skills') .. ' (Ctrl+S)', 'skills.png', Skills.toggle)
|
||||
skillsButton:setOn(true)
|
||||
g_keyboard.bindKeyDown('Ctrl+S', Skills.toggle)
|
||||
|
||||
Skills.refresh()
|
||||
end
|
||||
|
||||
function Skills.terminate()
|
||||
disconnect(LocalPlayer, {
|
||||
onExperienceChange = Skills.onExperienceChange,
|
||||
onLevelChange = Skills.onLevelChange,
|
||||
onHealthChange = Skills.onHealthChange,
|
||||
onManaChange = Skills.onManaChange,
|
||||
onSoulChange = Skills.onSoulChange,
|
||||
onFreeCapacityChange = Skills.onFreeCapacityChange,
|
||||
onStaminaChange = Skills.onStaminaChange,
|
||||
onMagicLevelChange = Skills.onMagicLevelChange,
|
||||
onSkillChange = Skills.onSkillChange
|
||||
})
|
||||
|
||||
g_keyboard.unbindKeyDown('Ctrl+S')
|
||||
skillsButton:destroy()
|
||||
skillsButton = nil
|
||||
skillsWindow:destroy()
|
||||
skillsWindow = nil
|
||||
|
||||
Skills = nil
|
||||
end
|
||||
|
||||
function Skills.refresh()
|
||||
function refresh()
|
||||
local player = g_game.getLocalPlayer()
|
||||
if not player then return end
|
||||
|
||||
Skills.onExperienceChange(player, player:getExperience())
|
||||
Skills.onLevelChange(player, player:getLevel(), player:getLevelPercent())
|
||||
Skills.onHealthChange(player, player:getHealth(), player:getMaxHealth())
|
||||
Skills.onManaChange(player, player:getMana(), player:getMaxMana())
|
||||
Skills.onSoulChange(player, player:getSoul())
|
||||
Skills.onFreeCapacityChange(player, player:getFreeCapacity())
|
||||
Skills.onStaminaChange(player, player:getStamina())
|
||||
Skills.onMagicLevelChange(player, player:getMagicLevel(), player:getMagicLevelPercent())
|
||||
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())
|
||||
|
||||
for i=0,6 do
|
||||
Skills.onSkillChange(player, i, player:getSkillLevel(i), player:getSkillLevelPercent(i))
|
||||
onSkillChange(player, i, player:getSkillLevel(i), player:getSkillLevelPercent(i))
|
||||
end
|
||||
end
|
||||
|
||||
function Skills.toggle()
|
||||
function toggle()
|
||||
if skillsButton:isOn() then
|
||||
skillsWindow:close()
|
||||
skillsButton:setOn(false)
|
||||
@@ -93,11 +84,11 @@ function Skills.toggle()
|
||||
end
|
||||
end
|
||||
|
||||
function Skills.onMiniWindowClose()
|
||||
function onMiniWindowClose()
|
||||
skillsButton:setOn(false)
|
||||
end
|
||||
|
||||
function Skills.onSkillButtonClick(button)
|
||||
function onSkillButtonClick(button)
|
||||
local percentBar = button:getChildById('percent')
|
||||
if percentBar then
|
||||
percentBar:setVisible(not percentBar:isVisible())
|
||||
@@ -109,33 +100,32 @@ function Skills.onSkillButtonClick(button)
|
||||
end
|
||||
end
|
||||
|
||||
-- hooked events
|
||||
function Skills.onExperienceChange(localPlayer, value)
|
||||
function onExperienceChange(localPlayer, value)
|
||||
setSkillValue('experience', tr(value))
|
||||
end
|
||||
|
||||
function Skills.onLevelChange(localPlayer, value, percent)
|
||||
function onLevelChange(localPlayer, value, percent)
|
||||
setSkillValue('level', tr(value))
|
||||
setSkillPercent('level', percent, tr('You have %s percent to go', 100 - percent))
|
||||
end
|
||||
|
||||
function Skills.onHealthChange(localPlayer, health, maxHealth)
|
||||
function onHealthChange(localPlayer, health, maxHealth)
|
||||
setSkillValue('health', tr(health))
|
||||
end
|
||||
|
||||
function Skills.onManaChange(localPlayer, mana, maxMana)
|
||||
function onManaChange(localPlayer, mana, maxMana)
|
||||
setSkillValue('mana', tr(mana))
|
||||
end
|
||||
|
||||
function Skills.onSoulChange(localPlayer, soul)
|
||||
function onSoulChange(localPlayer, soul)
|
||||
setSkillValue('soul', soul)
|
||||
end
|
||||
|
||||
function Skills.onFreeCapacityChange(localPlayer, freeCapacity)
|
||||
function onFreeCapacityChange(localPlayer, freeCapacity)
|
||||
setSkillValue('capacity', freeCapacity)
|
||||
end
|
||||
|
||||
function Skills.onStaminaChange(localPlayer, stamina)
|
||||
function onStaminaChange(localPlayer, stamina)
|
||||
local hours = math.floor(stamina / 60)
|
||||
local minutes = stamina % 60
|
||||
if minutes < 10 then
|
||||
@@ -147,12 +137,12 @@ function Skills.onStaminaChange(localPlayer, stamina)
|
||||
setSkillPercent('stamina', percent, tr('You have %s percent', percent))
|
||||
end
|
||||
|
||||
function Skills.onMagicLevelChange(localPlayer, value, percent)
|
||||
function onMagicLevelChange(localPlayer, value, percent)
|
||||
setSkillValue('magiclevel', value)
|
||||
setSkillPercent('magiclevel', percent, tr('You have %s percent to go', 100 - percent))
|
||||
end
|
||||
|
||||
function Skills.onSkillChange(localPlayer, id, level, percent)
|
||||
function onSkillChange(localPlayer, id, level, percent)
|
||||
setSkillValue('skillId' .. id, level)
|
||||
setSkillPercent('skillId' .. id, percent, tr('You have %s percent to go', 100 - percent))
|
||||
end
|
||||
|
Reference in New Issue
Block a user