mirror of
https://github.com/edubart/otclient.git
synced 2025-10-14 19:44:54 +02:00
Added new stats to the skills module, fixed minor market error.
* Added Offline Training information. * Added Regeneration Time information. * Added Speed information. * Added base stats/skills information (will show the players increase in a skill e.g. magic level 43 = 40 + 3 bonus from an item). * Fixed the game feature constants in const.lua. * Fixed a market error when logging out. * Added removeTooltip function.
This commit is contained in:
@@ -92,6 +92,10 @@ function UIWidget:setTooltip(text)
|
||||
self.tooltip = text
|
||||
end
|
||||
|
||||
function UIWidget:removeTooltip()
|
||||
self.tooltip = nil
|
||||
end
|
||||
|
||||
function UIWidget:getTooltip()
|
||||
return self.tooltip
|
||||
end
|
||||
|
@@ -467,7 +467,7 @@ local function onSelectSellOffer(table, selectedRow, previousSelectedRow)
|
||||
if offer then
|
||||
local price = offer:getPrice()
|
||||
if price > information.balance then
|
||||
balanceLabel:setColor('#b22222')
|
||||
balanceLabel:setColor('#b22222') -- red
|
||||
buyButton:setEnabled(false)
|
||||
else
|
||||
local slice = (information.balance / 2)
|
||||
@@ -751,7 +751,9 @@ function Market.reset()
|
||||
categoryList:setCurrentOption(getMarketCategoryName(MarketCategory.First))
|
||||
searchEdit:setText('')
|
||||
clearFilters()
|
||||
Market.updateCurrentItems()
|
||||
if information and not table.empty(information) then
|
||||
Market.updateCurrentItems()
|
||||
end
|
||||
end
|
||||
|
||||
function Market.clearSelectedItem()
|
||||
|
@@ -10,8 +10,18 @@ function init()
|
||||
onSoulChange = onSoulChange,
|
||||
onFreeCapacityChange = onFreeCapacityChange,
|
||||
onStaminaChange = onStaminaChange,
|
||||
onOfflineTrainingChange = onOfflineTrainingChange,
|
||||
onRegenerationChange = onRegenerationChange,
|
||||
onSpeedChange = onSpeedChange,
|
||||
onBaseSpeedChange = onBaseSpeedChange,
|
||||
onMagicLevelChange = onMagicLevelChange,
|
||||
onSkillChange = onSkillChange
|
||||
onBaseMagicLevelChange = onBaseMagicLevelChange,
|
||||
onSkillChange = onSkillChange,
|
||||
onBaseSkillChange = onBaseSkillChange
|
||||
})
|
||||
connect(g_game, {
|
||||
onGameStart = update,
|
||||
onGameEnd = update
|
||||
})
|
||||
|
||||
skillsWindow = g_ui.loadUI('skills.otui', modules.game_interface.getRightPanel())
|
||||
@@ -31,8 +41,18 @@ function terminate()
|
||||
onSoulChange = onSoulChange,
|
||||
onFreeCapacityChange = onFreeCapacityChange,
|
||||
onStaminaChange = onStaminaChange,
|
||||
onOfflineTrainingChange = onOfflineTrainingChange,
|
||||
onRegenerationChange = onRegenerationChange,
|
||||
onSpeedChange = onSpeedChange,
|
||||
onBaseSpeedChange = onBaseSpeedChange,
|
||||
onMagicLevelChange = onMagicLevelChange,
|
||||
onSkillChange = onSkillChange
|
||||
onBaseMagicLevelChange = onBaseMagicLevelChange,
|
||||
onSkillChange = onSkillChange,
|
||||
onBaseSkillChange = onBaseSkillChange
|
||||
})
|
||||
disconnect(g_game, {
|
||||
onGameStart = update,
|
||||
onGameEnd = update
|
||||
})
|
||||
|
||||
g_keyboard.unbindKeyDown('Ctrl+S')
|
||||
@@ -40,12 +60,40 @@ function terminate()
|
||||
skillsWindow:destroy()
|
||||
end
|
||||
|
||||
function setSkillBase(id, value, baseValue)
|
||||
local skill = skillsWindow:recursiveGetChildById(id)
|
||||
local widget = skill:getChildById('value')
|
||||
|
||||
if value > baseValue then
|
||||
widget:setColor('#008b00')
|
||||
skill:setTooltip(baseValue .. ' + ' .. (value - baseValue))
|
||||
elseif value < baseValue then
|
||||
widget:setColor('#008b00')
|
||||
skill:setTooltip(baseValue .. ' - ' .. (value - baseValue))
|
||||
else
|
||||
widget:setColor('#bbbbbb')
|
||||
skill:removeTooltip()
|
||||
end
|
||||
end
|
||||
|
||||
function setSkillValue(id, value)
|
||||
local skill = skillsWindow:recursiveGetChildById(id)
|
||||
local widget = skill:getChildById('value')
|
||||
widget:setText(value)
|
||||
end
|
||||
|
||||
function setSkillColor(id, value)
|
||||
local skill = skillsWindow:recursiveGetChildById(id)
|
||||
local widget = skill:getChildById('value')
|
||||
widget:setColor(value)
|
||||
end
|
||||
|
||||
function setSkillTooltip(id, value)
|
||||
local skill = skillsWindow:recursiveGetChildById(id)
|
||||
local widget = skill:getChildById('value')
|
||||
widget:setTooltip(value)
|
||||
end
|
||||
|
||||
function setSkillPercent(id, percent, tooltip)
|
||||
local skill = skillsWindow:recursiveGetChildById(id)
|
||||
local widget = skill:getChildById('percent')
|
||||
@@ -56,6 +104,22 @@ function setSkillPercent(id, percent, tooltip)
|
||||
end
|
||||
end
|
||||
|
||||
function update()
|
||||
local offlineTraining = skillsWindow:recursiveGetChildById('offlineTraining')
|
||||
if not g_game.getFeature(GameOfflineTrainingTime) then
|
||||
offlineTraining:hide()
|
||||
else
|
||||
offlineTraining:show()
|
||||
end
|
||||
|
||||
local regenerationTime = skillsWindow:recursiveGetChildById('regenerationTime')
|
||||
if not g_game.getFeature(GamePlayerRegenerationTime) then
|
||||
regenerationTime:hide()
|
||||
else
|
||||
regenerationTime:show()
|
||||
end
|
||||
end
|
||||
|
||||
function refresh()
|
||||
local player = g_game.getLocalPlayer()
|
||||
if not player then return end
|
||||
@@ -68,9 +132,15 @@ function refresh()
|
||||
onFreeCapacityChange(player, player:getFreeCapacity())
|
||||
onStaminaChange(player, player:getStamina())
|
||||
onMagicLevelChange(player, player:getMagicLevel(), player:getMagicLevelPercent())
|
||||
onOfflineTrainingChange(player, player:getOfflineTrainingTime())
|
||||
onRegenerationChange(player, player:getRegenerationTime())
|
||||
onSpeedChange(player, player:getSpeed())
|
||||
onBaseSpeedChange(player, player:getBaseSpeed())
|
||||
onBaseMagicLevelChange(player, player:getBaseMagicLevel())
|
||||
|
||||
for i=0,6 do
|
||||
onSkillChange(player, i, player:getSkillLevel(i), player:getSkillLevelPercent(i))
|
||||
onBaseSkillChange(player, i, player:getSkillBaseLevel(i))
|
||||
end
|
||||
end
|
||||
|
||||
@@ -137,13 +207,74 @@ function onStaminaChange(localPlayer, stamina)
|
||||
setSkillPercent('stamina', percent, tr('You have %s percent', percent))
|
||||
end
|
||||
|
||||
function onMagicLevelChange(localPlayer, value, percent)
|
||||
setSkillValue('magiclevel', value)
|
||||
function onOfflineTrainingChange(localPlayer, offlineTrainingTime)
|
||||
local hours = math.floor(offlineTrainingTime / 60)
|
||||
local minutes = offlineTrainingTime % 60
|
||||
if minutes < 10 then
|
||||
minutes = '0' .. minutes
|
||||
end
|
||||
local percent = 100 * offlineTrainingTime / (12 * 60) -- max is 12 hours
|
||||
|
||||
setSkillValue('offlineTraining', hours .. ":" .. minutes)
|
||||
setSkillPercent('offlineTraining', percent, tr('You have %s percent', percent))
|
||||
end
|
||||
|
||||
function onRegenerationChange(localPlayer, regenerationTime)
|
||||
local hours = math.floor(regenerationTime / 60)
|
||||
local minutes = regenerationTime % 60
|
||||
if minutes < 10 then
|
||||
minutes = '0' .. minutes
|
||||
end
|
||||
|
||||
setSkillValue('regenerationTime', hours .. ":" .. minutes)
|
||||
end
|
||||
|
||||
function onSpeedChange(localPlayer, speed)
|
||||
setSkillValue('speed', speed)
|
||||
|
||||
setSkillBase('speed', speed, localPlayer:getBaseSpeed())
|
||||
end
|
||||
|
||||
function onBaseSpeedChange(localPlayer, baseSpeed)
|
||||
if baseSpeed < 1 then
|
||||
return
|
||||
end
|
||||
local speed = localPlayer:getSpeed()
|
||||
onSpeedChange(localPlayer, baseSpeed)
|
||||
|
||||
setSkillBase('speed', speed, baseSpeed)
|
||||
end
|
||||
|
||||
function onMagicLevelChange(localPlayer, magiclevel, percent)
|
||||
setSkillValue('magiclevel', magiclevel)
|
||||
setSkillPercent('magiclevel', percent, tr('You have %s percent to go', 100 - percent))
|
||||
|
||||
setSkillBase('magiclevel', magiclevel, localPlayer:getBaseMagicLevel())
|
||||
end
|
||||
|
||||
function onBaseMagicLevelChange(localPlayer, baseMagicLevel)
|
||||
if baseMagicLevel < 1 then
|
||||
return
|
||||
end
|
||||
local magiclevel = localPlayer:getMagicLevel()
|
||||
onMagicLevelChange(localPlayer, magiclevel, localPlayer:getMagicLevelPercent())
|
||||
|
||||
setSkillBase('magiclevel', magiclevel, baseMagicLevel)
|
||||
end
|
||||
|
||||
function onSkillChange(localPlayer, id, level, percent)
|
||||
setSkillValue('skillId' .. id, level)
|
||||
setSkillPercent('skillId' .. id, percent, tr('You have %s percent to go', 100 - percent))
|
||||
|
||||
setSkillBase('skillId'..id, level, localPlayer:getSkillBaseLevel(id))
|
||||
end
|
||||
|
||||
function onBaseSkillChange(localPlayer, id, baseLevel)
|
||||
if baseLevel < 1 then
|
||||
return
|
||||
end
|
||||
local level = localPlayer:getSkillLevel(id)
|
||||
onSkillChange(localPlayer, id, level, localPlayer:getSkillLevelPercent(id))
|
||||
|
||||
setSkillBase('skillId'..id, level, baseLevel)
|
||||
end
|
@@ -85,6 +85,19 @@ MiniWindow
|
||||
!text: tr('Capacity')
|
||||
SkillValueLabel
|
||||
|
||||
SkillButton
|
||||
id: speed
|
||||
height: 15
|
||||
SkillNameLabel
|
||||
!text: tr('Speed')
|
||||
SkillValueLabel
|
||||
|
||||
SkillButton
|
||||
id: regenerationTime
|
||||
SkillNameLabel
|
||||
!text: tr('Regeneration Time')
|
||||
SkillValueLabel
|
||||
|
||||
SkillButton
|
||||
id: stamina
|
||||
SkillNameLabel
|
||||
@@ -92,6 +105,13 @@ MiniWindow
|
||||
SkillValueLabel
|
||||
SkillPercentPanel
|
||||
|
||||
SkillButton
|
||||
id: offlineTraining
|
||||
SkillNameLabel
|
||||
!text: tr('Offline Training')
|
||||
SkillValueLabel
|
||||
SkillPercentPanel
|
||||
|
||||
SkillButton
|
||||
id: magiclevel
|
||||
SkillNameLabel
|
||||
@@ -116,7 +136,6 @@ MiniWindow
|
||||
|
||||
SkillButton
|
||||
id: skillId2
|
||||
|
||||
SkillNameLabel
|
||||
!text: tr('Sword Fighting')
|
||||
SkillValueLabel
|
||||
|
@@ -41,30 +41,28 @@ FightDefensive = 3
|
||||
DontChase = 0
|
||||
ChaseOpponent = 1
|
||||
|
||||
GameExtendedOpcode = 0
|
||||
GameProtocolChecksum = 1
|
||||
GameAccountNames = 2
|
||||
GameChallangeOnLogin = 3
|
||||
GameStackposOnTileAddThing = 4
|
||||
GamePenalityOnDeath = 5
|
||||
GameNameOnNpcTrade = 6
|
||||
GameDoubleFreeCapacity = 7
|
||||
GameDoubleExperience = 8
|
||||
GameTotalCapacity = 9
|
||||
GameSkillsBase = 10
|
||||
GameAdditionalPlayerStats = 11
|
||||
GameIdOnCancelAttack = 12
|
||||
GamePlayerRegenerationTime = 11
|
||||
GameChannelPlayerList = 13
|
||||
GamePlayerMounts = 14
|
||||
GameEnvironmentEffect = 15
|
||||
GameCreatureType = 16
|
||||
GameCreatureEmblems = 17
|
||||
GameCreaturePassableInfo = 18
|
||||
GameItemAnimationPhase = 19
|
||||
GameTrucatedPingOpcode = 20
|
||||
GameReverseCreatureStack = 21
|
||||
GameMagicEffectU16 = 22
|
||||
GamePlayerMarket = 23
|
||||
GameSpritesU32 = 24
|
||||
GameChargeableItems = 25
|
||||
GameOfflineTrainingTime = 26
|
||||
GamePurseSlot = 27
|
||||
GameFormatCreatureName = 28
|
||||
|
||||
TextColors = {
|
||||
red = '#f55e5e', --'#c83200'
|
||||
|
Reference in New Issue
Block a user