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:
parent
8222e85abd
commit
d237087718
|
@ -92,6 +92,10 @@ function UIWidget:setTooltip(text)
|
||||||
self.tooltip = text
|
self.tooltip = text
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function UIWidget:removeTooltip()
|
||||||
|
self.tooltip = nil
|
||||||
|
end
|
||||||
|
|
||||||
function UIWidget:getTooltip()
|
function UIWidget:getTooltip()
|
||||||
return self.tooltip
|
return self.tooltip
|
||||||
end
|
end
|
||||||
|
|
|
@ -467,7 +467,7 @@ local function onSelectSellOffer(table, selectedRow, previousSelectedRow)
|
||||||
if offer then
|
if offer then
|
||||||
local price = offer:getPrice()
|
local price = offer:getPrice()
|
||||||
if price > information.balance then
|
if price > information.balance then
|
||||||
balanceLabel:setColor('#b22222')
|
balanceLabel:setColor('#b22222') -- red
|
||||||
buyButton:setEnabled(false)
|
buyButton:setEnabled(false)
|
||||||
else
|
else
|
||||||
local slice = (information.balance / 2)
|
local slice = (information.balance / 2)
|
||||||
|
@ -751,8 +751,10 @@ function Market.reset()
|
||||||
categoryList:setCurrentOption(getMarketCategoryName(MarketCategory.First))
|
categoryList:setCurrentOption(getMarketCategoryName(MarketCategory.First))
|
||||||
searchEdit:setText('')
|
searchEdit:setText('')
|
||||||
clearFilters()
|
clearFilters()
|
||||||
|
if information and not table.empty(information) then
|
||||||
Market.updateCurrentItems()
|
Market.updateCurrentItems()
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function Market.clearSelectedItem()
|
function Market.clearSelectedItem()
|
||||||
if Market.isItemSelected() then
|
if Market.isItemSelected() then
|
||||||
|
|
|
@ -10,8 +10,18 @@ function init()
|
||||||
onSoulChange = onSoulChange,
|
onSoulChange = onSoulChange,
|
||||||
onFreeCapacityChange = onFreeCapacityChange,
|
onFreeCapacityChange = onFreeCapacityChange,
|
||||||
onStaminaChange = onStaminaChange,
|
onStaminaChange = onStaminaChange,
|
||||||
|
onOfflineTrainingChange = onOfflineTrainingChange,
|
||||||
|
onRegenerationChange = onRegenerationChange,
|
||||||
|
onSpeedChange = onSpeedChange,
|
||||||
|
onBaseSpeedChange = onBaseSpeedChange,
|
||||||
onMagicLevelChange = onMagicLevelChange,
|
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())
|
skillsWindow = g_ui.loadUI('skills.otui', modules.game_interface.getRightPanel())
|
||||||
|
@ -31,8 +41,18 @@ function terminate()
|
||||||
onSoulChange = onSoulChange,
|
onSoulChange = onSoulChange,
|
||||||
onFreeCapacityChange = onFreeCapacityChange,
|
onFreeCapacityChange = onFreeCapacityChange,
|
||||||
onStaminaChange = onStaminaChange,
|
onStaminaChange = onStaminaChange,
|
||||||
|
onOfflineTrainingChange = onOfflineTrainingChange,
|
||||||
|
onRegenerationChange = onRegenerationChange,
|
||||||
|
onSpeedChange = onSpeedChange,
|
||||||
|
onBaseSpeedChange = onBaseSpeedChange,
|
||||||
onMagicLevelChange = onMagicLevelChange,
|
onMagicLevelChange = onMagicLevelChange,
|
||||||
onSkillChange = onSkillChange
|
onBaseMagicLevelChange = onBaseMagicLevelChange,
|
||||||
|
onSkillChange = onSkillChange,
|
||||||
|
onBaseSkillChange = onBaseSkillChange
|
||||||
|
})
|
||||||
|
disconnect(g_game, {
|
||||||
|
onGameStart = update,
|
||||||
|
onGameEnd = update
|
||||||
})
|
})
|
||||||
|
|
||||||
g_keyboard.unbindKeyDown('Ctrl+S')
|
g_keyboard.unbindKeyDown('Ctrl+S')
|
||||||
|
@ -40,12 +60,40 @@ function terminate()
|
||||||
skillsWindow:destroy()
|
skillsWindow:destroy()
|
||||||
end
|
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)
|
function setSkillValue(id, value)
|
||||||
local skill = skillsWindow:recursiveGetChildById(id)
|
local skill = skillsWindow:recursiveGetChildById(id)
|
||||||
local widget = skill:getChildById('value')
|
local widget = skill:getChildById('value')
|
||||||
widget:setText(value)
|
widget:setText(value)
|
||||||
end
|
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)
|
function setSkillPercent(id, percent, tooltip)
|
||||||
local skill = skillsWindow:recursiveGetChildById(id)
|
local skill = skillsWindow:recursiveGetChildById(id)
|
||||||
local widget = skill:getChildById('percent')
|
local widget = skill:getChildById('percent')
|
||||||
|
@ -56,6 +104,22 @@ function setSkillPercent(id, percent, tooltip)
|
||||||
end
|
end
|
||||||
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()
|
function refresh()
|
||||||
local player = g_game.getLocalPlayer()
|
local player = g_game.getLocalPlayer()
|
||||||
if not player then return end
|
if not player then return end
|
||||||
|
@ -68,9 +132,15 @@ function refresh()
|
||||||
onFreeCapacityChange(player, player:getFreeCapacity())
|
onFreeCapacityChange(player, player:getFreeCapacity())
|
||||||
onStaminaChange(player, player:getStamina())
|
onStaminaChange(player, player:getStamina())
|
||||||
onMagicLevelChange(player, player:getMagicLevel(), player:getMagicLevelPercent())
|
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
|
for i=0,6 do
|
||||||
onSkillChange(player, i, player:getSkillLevel(i), player:getSkillLevelPercent(i))
|
onSkillChange(player, i, player:getSkillLevel(i), player:getSkillLevelPercent(i))
|
||||||
|
onBaseSkillChange(player, i, player:getSkillBaseLevel(i))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -137,13 +207,74 @@ function onStaminaChange(localPlayer, stamina)
|
||||||
setSkillPercent('stamina', percent, tr('You have %s percent', percent))
|
setSkillPercent('stamina', percent, tr('You have %s percent', percent))
|
||||||
end
|
end
|
||||||
|
|
||||||
function onMagicLevelChange(localPlayer, value, percent)
|
function onOfflineTrainingChange(localPlayer, offlineTrainingTime)
|
||||||
setSkillValue('magiclevel', value)
|
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))
|
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
|
end
|
||||||
|
|
||||||
function onSkillChange(localPlayer, id, level, percent)
|
function onSkillChange(localPlayer, id, level, percent)
|
||||||
setSkillValue('skillId' .. id, level)
|
setSkillValue('skillId' .. id, level)
|
||||||
setSkillPercent('skillId' .. id, percent, tr('You have %s percent to go', 100 - percent))
|
setSkillPercent('skillId' .. id, percent, tr('You have %s percent to go', 100 - percent))
|
||||||
|
|
||||||
|
setSkillBase('skillId'..id, level, localPlayer:getSkillBaseLevel(id))
|
||||||
end
|
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')
|
!text: tr('Capacity')
|
||||||
SkillValueLabel
|
SkillValueLabel
|
||||||
|
|
||||||
|
SkillButton
|
||||||
|
id: speed
|
||||||
|
height: 15
|
||||||
|
SkillNameLabel
|
||||||
|
!text: tr('Speed')
|
||||||
|
SkillValueLabel
|
||||||
|
|
||||||
|
SkillButton
|
||||||
|
id: regenerationTime
|
||||||
|
SkillNameLabel
|
||||||
|
!text: tr('Regeneration Time')
|
||||||
|
SkillValueLabel
|
||||||
|
|
||||||
SkillButton
|
SkillButton
|
||||||
id: stamina
|
id: stamina
|
||||||
SkillNameLabel
|
SkillNameLabel
|
||||||
|
@ -92,6 +105,13 @@ MiniWindow
|
||||||
SkillValueLabel
|
SkillValueLabel
|
||||||
SkillPercentPanel
|
SkillPercentPanel
|
||||||
|
|
||||||
|
SkillButton
|
||||||
|
id: offlineTraining
|
||||||
|
SkillNameLabel
|
||||||
|
!text: tr('Offline Training')
|
||||||
|
SkillValueLabel
|
||||||
|
SkillPercentPanel
|
||||||
|
|
||||||
SkillButton
|
SkillButton
|
||||||
id: magiclevel
|
id: magiclevel
|
||||||
SkillNameLabel
|
SkillNameLabel
|
||||||
|
@ -116,7 +136,6 @@ MiniWindow
|
||||||
|
|
||||||
SkillButton
|
SkillButton
|
||||||
id: skillId2
|
id: skillId2
|
||||||
|
|
||||||
SkillNameLabel
|
SkillNameLabel
|
||||||
!text: tr('Sword Fighting')
|
!text: tr('Sword Fighting')
|
||||||
SkillValueLabel
|
SkillValueLabel
|
||||||
|
|
|
@ -41,30 +41,28 @@ FightDefensive = 3
|
||||||
DontChase = 0
|
DontChase = 0
|
||||||
ChaseOpponent = 1
|
ChaseOpponent = 1
|
||||||
|
|
||||||
GameExtendedOpcode = 0
|
|
||||||
GameProtocolChecksum = 1
|
GameProtocolChecksum = 1
|
||||||
GameAccountNames = 2
|
GameAccountNames = 2
|
||||||
GameChallangeOnLogin = 3
|
GameChallangeOnLogin = 3
|
||||||
GameStackposOnTileAddThing = 4
|
|
||||||
GamePenalityOnDeath = 5
|
GamePenalityOnDeath = 5
|
||||||
GameNameOnNpcTrade = 6
|
GameNameOnNpcTrade = 6
|
||||||
GameDoubleFreeCapacity = 7
|
GameDoubleFreeCapacity = 7
|
||||||
GameDoubleExperience = 8
|
GameDoubleExperience = 8
|
||||||
GameTotalCapacity = 9
|
GameTotalCapacity = 9
|
||||||
GameSkillsBase = 10
|
GameSkillsBase = 10
|
||||||
GameAdditionalPlayerStats = 11
|
GamePlayerRegenerationTime = 11
|
||||||
GameIdOnCancelAttack = 12
|
|
||||||
GameChannelPlayerList = 13
|
GameChannelPlayerList = 13
|
||||||
GamePlayerMounts = 14
|
GamePlayerMounts = 14
|
||||||
GameEnvironmentEffect = 15
|
GameEnvironmentEffect = 15
|
||||||
GameCreatureType = 16
|
|
||||||
GameCreatureEmblems = 17
|
GameCreatureEmblems = 17
|
||||||
GameCreaturePassableInfo = 18
|
|
||||||
GameItemAnimationPhase = 19
|
GameItemAnimationPhase = 19
|
||||||
GameTrucatedPingOpcode = 20
|
|
||||||
GameReverseCreatureStack = 21
|
|
||||||
GameMagicEffectU16 = 22
|
GameMagicEffectU16 = 22
|
||||||
GamePlayerMarket = 23
|
GamePlayerMarket = 23
|
||||||
|
GameSpritesU32 = 24
|
||||||
|
GameChargeableItems = 25
|
||||||
|
GameOfflineTrainingTime = 26
|
||||||
|
GamePurseSlot = 27
|
||||||
|
GameFormatCreatureName = 28
|
||||||
|
|
||||||
TextColors = {
|
TextColors = {
|
||||||
red = '#f55e5e', --'#c83200'
|
red = '#f55e5e', --'#c83200'
|
||||||
|
|
|
@ -514,11 +514,14 @@ void Creature::setOutfit(const Outfit& outfit)
|
||||||
|
|
||||||
void Creature::setSpeed(uint16 speed)
|
void Creature::setSpeed(uint16 speed)
|
||||||
{
|
{
|
||||||
|
uint16 oldSpeed = m_speed;
|
||||||
m_speed = speed;
|
m_speed = speed;
|
||||||
|
|
||||||
// speed can change while walking (utani hur, paralyze, etc..)
|
// speed can change while walking (utani hur, paralyze, etc..)
|
||||||
if(m_walking)
|
if(m_walking)
|
||||||
nextWalkUpdate();
|
nextWalkUpdate();
|
||||||
|
|
||||||
|
callLuaField("onSpeedChange", speed, oldSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Creature::setSkull(uint8 skull)
|
void Creature::setSkull(uint8 skull)
|
||||||
|
|
|
@ -39,6 +39,7 @@ LocalPlayer::LocalPlayer()
|
||||||
m_walkLockExpiration = 0;
|
m_walkLockExpiration = 0;
|
||||||
|
|
||||||
m_skillsLevel.fill(-1);
|
m_skillsLevel.fill(-1);
|
||||||
|
m_skillsBaseLevel.fill(-1);
|
||||||
m_skillsLevelPercent.fill(-1);
|
m_skillsLevelPercent.fill(-1);
|
||||||
|
|
||||||
m_health = -1;
|
m_health = -1;
|
||||||
|
@ -51,8 +52,13 @@ LocalPlayer::LocalPlayer()
|
||||||
m_maxMana = -1;
|
m_maxMana = -1;
|
||||||
m_magicLevel = -1;
|
m_magicLevel = -1;
|
||||||
m_magicLevelPercent = -1;
|
m_magicLevelPercent = -1;
|
||||||
|
m_baseMagicLevel = -1;
|
||||||
m_soul = -1;
|
m_soul = -1;
|
||||||
m_stamina = -1;
|
m_stamina = -1;
|
||||||
|
m_baseSpeed = -1;
|
||||||
|
m_regenerationTime = -1;
|
||||||
|
m_offlineTrainingTime = -1;
|
||||||
|
m_totalCapacity = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocalPlayer::lockWalk(int millis)
|
void LocalPlayer::lockWalk(int millis)
|
||||||
|
@ -248,6 +254,21 @@ void LocalPlayer::setSkill(Otc::Skill skill, int level, int levelPercent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LocalPlayer::setBaseSkill(Otc::Skill skill, int baseLevel)
|
||||||
|
{
|
||||||
|
if(skill >= Otc::LastSkill) {
|
||||||
|
g_logger.traceError("invalid skill");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int oldBaseLevel = m_skillsBaseLevel[skill];
|
||||||
|
if(baseLevel != oldBaseLevel) {
|
||||||
|
m_skillsBaseLevel[skill] = baseLevel;
|
||||||
|
|
||||||
|
callLuaField("onBaseSkillChange", skill, baseLevel, oldBaseLevel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void LocalPlayer::setHealth(double health, double maxHealth)
|
void LocalPlayer::setHealth(double health, double maxHealth)
|
||||||
{
|
{
|
||||||
if(m_health != health || m_maxHealth != maxHealth) {
|
if(m_health != health || m_maxHealth != maxHealth) {
|
||||||
|
@ -277,6 +298,16 @@ void LocalPlayer::setFreeCapacity(double freeCapacity)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LocalPlayer::setTotalCapacity(double totalCapacity)
|
||||||
|
{
|
||||||
|
if(m_totalCapacity != totalCapacity) {
|
||||||
|
double oldTotalCapacity = m_totalCapacity;
|
||||||
|
m_totalCapacity = totalCapacity;
|
||||||
|
|
||||||
|
callLuaField("onTotalCapacityChange", totalCapacity, oldTotalCapacity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void LocalPlayer::setExperience(double experience)
|
void LocalPlayer::setExperience(double experience)
|
||||||
{
|
{
|
||||||
if(m_experience != experience) {
|
if(m_experience != experience) {
|
||||||
|
@ -323,6 +354,16 @@ void LocalPlayer::setMagicLevel(double magicLevel, double magicLevelPercent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LocalPlayer::setBaseMagicLevel(double baseMagicLevel)
|
||||||
|
{
|
||||||
|
if(m_baseMagicLevel != baseMagicLevel) {
|
||||||
|
double oldBaseMagicLevel = m_baseMagicLevel;
|
||||||
|
m_baseMagicLevel = baseMagicLevel;
|
||||||
|
|
||||||
|
callLuaField("onBaseMagicLevelChange", baseMagicLevel, oldBaseMagicLevel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void LocalPlayer::setSoul(double soul)
|
void LocalPlayer::setSoul(double soul)
|
||||||
{
|
{
|
||||||
if(m_soul != soul) {
|
if(m_soul != soul) {
|
||||||
|
@ -377,6 +418,36 @@ void LocalPlayer::setPremium(bool premium)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LocalPlayer::setBaseSpeed(double baseSpeed)
|
||||||
|
{
|
||||||
|
if(m_baseSpeed != baseSpeed) {
|
||||||
|
double oldBaseSpeed = m_baseSpeed;
|
||||||
|
m_baseSpeed = baseSpeed;
|
||||||
|
|
||||||
|
callLuaField("onBaseSpeedChange", baseSpeed, oldBaseSpeed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LocalPlayer::setRegenerationTime(double regenerationTime)
|
||||||
|
{
|
||||||
|
if(m_regenerationTime != regenerationTime) {
|
||||||
|
double oldRegenerationTime = m_regenerationTime;
|
||||||
|
m_regenerationTime = regenerationTime;
|
||||||
|
|
||||||
|
callLuaField("onRegenerationChange", regenerationTime, oldRegenerationTime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LocalPlayer::setOfflineTrainingTime(double offlineTrainingTime)
|
||||||
|
{
|
||||||
|
if(m_offlineTrainingTime != offlineTrainingTime) {
|
||||||
|
double oldOfflineTrainingTime = m_offlineTrainingTime;
|
||||||
|
m_offlineTrainingTime = offlineTrainingTime;
|
||||||
|
|
||||||
|
callLuaField("onOfflineTrainingChange", offlineTrainingTime, oldOfflineTrainingTime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
double LocalPlayer::getWalkPing()
|
double LocalPlayer::getWalkPing()
|
||||||
{
|
{
|
||||||
if(m_lastWalkPings.empty())
|
if(m_lastWalkPings.empty())
|
||||||
|
|
|
@ -41,27 +41,35 @@ public:
|
||||||
|
|
||||||
void setStates(int states);
|
void setStates(int states);
|
||||||
void setSkill(Otc::Skill skill, int level, int levelPercent);
|
void setSkill(Otc::Skill skill, int level, int levelPercent);
|
||||||
|
void setBaseSkill(Otc::Skill skill, int baseLevel);
|
||||||
void setHealth(double health, double maxHealth);
|
void setHealth(double health, double maxHealth);
|
||||||
void setFreeCapacity(double freeCapacity);
|
void setFreeCapacity(double freeCapacity);
|
||||||
|
void setTotalCapacity(double totalCapacity);
|
||||||
void setExperience(double experience);
|
void setExperience(double experience);
|
||||||
void setLevel(double level, double levelPercent);
|
void setLevel(double level, double levelPercent);
|
||||||
void setMana(double mana, double maxMana);
|
void setMana(double mana, double maxMana);
|
||||||
void setMagicLevel(double magicLevel, double magicLevelPercent);
|
void setMagicLevel(double magicLevel, double magicLevelPercent);
|
||||||
|
void setBaseMagicLevel(double baseMagicLevel);
|
||||||
void setSoul(double soul);
|
void setSoul(double soul);
|
||||||
void setStamina(double stamina);
|
void setStamina(double stamina);
|
||||||
void setKnown(bool known) { m_known = known; }
|
void setKnown(bool known) { m_known = known; }
|
||||||
void setInventoryItem(Otc::InventorySlot inventory, const ItemPtr& item);
|
void setInventoryItem(Otc::InventorySlot inventory, const ItemPtr& item);
|
||||||
void setVocation(int vocation);
|
void setVocation(int vocation);
|
||||||
void setPremium(bool premium);
|
void setPremium(bool premium);
|
||||||
|
void setBaseSpeed(double baseSpeed);
|
||||||
|
void setRegenerationTime(double regenerationTime);
|
||||||
|
void setOfflineTrainingTime(double offlineTrainingTime);
|
||||||
|
|
||||||
int getStates() { return m_states; }
|
int getStates() { return m_states; }
|
||||||
int getSkillLevel(Otc::Skill skill) { return m_skillsLevel[skill]; }
|
int getSkillLevel(Otc::Skill skill) { return m_skillsLevel[skill]; }
|
||||||
|
int getSkillBaseLevel(Otc::Skill skill) { return m_skillsBaseLevel[skill]; }
|
||||||
int getSkillLevelPercent(Otc::Skill skill) { return m_skillsLevelPercent[skill]; }
|
int getSkillLevelPercent(Otc::Skill skill) { return m_skillsLevelPercent[skill]; }
|
||||||
int getVocation() { return m_vocation; }
|
int getVocation() { return m_vocation; }
|
||||||
double getWalkPing();
|
double getWalkPing();
|
||||||
double getHealth() { return m_health; }
|
double getHealth() { return m_health; }
|
||||||
double getMaxHealth() { return m_maxHealth; }
|
double getMaxHealth() { return m_maxHealth; }
|
||||||
double getFreeCapacity() { return m_freeCapacity; }
|
double getFreeCapacity() { return m_freeCapacity; }
|
||||||
|
double getTotalCapacity() { return m_totalCapacity; }
|
||||||
double getExperience() { return m_experience; }
|
double getExperience() { return m_experience; }
|
||||||
double getLevel() { return m_level; }
|
double getLevel() { return m_level; }
|
||||||
double getLevelPercent() { return m_levelPercent; }
|
double getLevelPercent() { return m_levelPercent; }
|
||||||
|
@ -69,8 +77,12 @@ public:
|
||||||
double getMaxMana() { return m_maxMana; }
|
double getMaxMana() { return m_maxMana; }
|
||||||
double getMagicLevel() { return m_magicLevel; }
|
double getMagicLevel() { return m_magicLevel; }
|
||||||
double getMagicLevelPercent() { return m_magicLevelPercent; }
|
double getMagicLevelPercent() { return m_magicLevelPercent; }
|
||||||
|
double getBaseMagicLevel() { return m_baseMagicLevel; }
|
||||||
double getSoul() { return m_soul; }
|
double getSoul() { return m_soul; }
|
||||||
double getStamina() { return m_stamina; }
|
double getStamina() { return m_stamina; }
|
||||||
|
double getBaseSpeed() { return m_baseSpeed; }
|
||||||
|
double getRegenerationTime() { return m_regenerationTime; }
|
||||||
|
double getOfflineTrainingTime() { return m_offlineTrainingTime; }
|
||||||
ItemPtr getInventoryItem(Otc::InventorySlot inventory) { return m_inventoryItems[inventory]; }
|
ItemPtr getInventoryItem(Otc::InventorySlot inventory) { return m_inventoryItems[inventory]; }
|
||||||
|
|
||||||
bool hasSight(const Position& pos);
|
bool hasSight(const Position& pos);
|
||||||
|
@ -111,6 +123,7 @@ private:
|
||||||
std::deque<int> m_lastWalkPings;
|
std::deque<int> m_lastWalkPings;
|
||||||
|
|
||||||
std::array<int, Otc::LastSkill> m_skillsLevel;
|
std::array<int, Otc::LastSkill> m_skillsLevel;
|
||||||
|
std::array<int, Otc::LastSkill> m_skillsBaseLevel;
|
||||||
std::array<int, Otc::LastSkill> m_skillsLevelPercent;
|
std::array<int, Otc::LastSkill> m_skillsLevelPercent;
|
||||||
|
|
||||||
bool m_known;
|
bool m_known;
|
||||||
|
@ -121,6 +134,7 @@ private:
|
||||||
double m_health;
|
double m_health;
|
||||||
double m_maxHealth;
|
double m_maxHealth;
|
||||||
double m_freeCapacity;
|
double m_freeCapacity;
|
||||||
|
double m_totalCapacity;
|
||||||
double m_experience;
|
double m_experience;
|
||||||
double m_level;
|
double m_level;
|
||||||
double m_levelPercent;
|
double m_levelPercent;
|
||||||
|
@ -128,8 +142,12 @@ private:
|
||||||
double m_maxMana;
|
double m_maxMana;
|
||||||
double m_magicLevel;
|
double m_magicLevel;
|
||||||
double m_magicLevelPercent;
|
double m_magicLevelPercent;
|
||||||
|
double m_baseMagicLevel;
|
||||||
double m_soul;
|
double m_soul;
|
||||||
double m_stamina;
|
double m_stamina;
|
||||||
|
double m_baseSpeed;
|
||||||
|
double m_regenerationTime;
|
||||||
|
double m_offlineTrainingTime;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -383,6 +383,7 @@ void OTClient::registerLuaFunctions()
|
||||||
g_lua.bindClassMemberFunction<LocalPlayer>("setInventoryItem", &LocalPlayer::setInventoryItem);
|
g_lua.bindClassMemberFunction<LocalPlayer>("setInventoryItem", &LocalPlayer::setInventoryItem);
|
||||||
g_lua.bindClassMemberFunction<LocalPlayer>("getStates", &LocalPlayer::getStates);
|
g_lua.bindClassMemberFunction<LocalPlayer>("getStates", &LocalPlayer::getStates);
|
||||||
g_lua.bindClassMemberFunction<LocalPlayer>("getSkillLevel", &LocalPlayer::getSkillLevel);
|
g_lua.bindClassMemberFunction<LocalPlayer>("getSkillLevel", &LocalPlayer::getSkillLevel);
|
||||||
|
g_lua.bindClassMemberFunction<LocalPlayer>("getSkillBaseLevel", &LocalPlayer::getSkillBaseLevel);
|
||||||
g_lua.bindClassMemberFunction<LocalPlayer>("getSkillLevelPercent", &LocalPlayer::getSkillLevelPercent);
|
g_lua.bindClassMemberFunction<LocalPlayer>("getSkillLevelPercent", &LocalPlayer::getSkillLevelPercent);
|
||||||
g_lua.bindClassMemberFunction<LocalPlayer>("getHealth", &LocalPlayer::getHealth);
|
g_lua.bindClassMemberFunction<LocalPlayer>("getHealth", &LocalPlayer::getHealth);
|
||||||
g_lua.bindClassMemberFunction<LocalPlayer>("getMaxHealth", &LocalPlayer::getMaxHealth);
|
g_lua.bindClassMemberFunction<LocalPlayer>("getMaxHealth", &LocalPlayer::getMaxHealth);
|
||||||
|
@ -396,6 +397,11 @@ void OTClient::registerLuaFunctions()
|
||||||
g_lua.bindClassMemberFunction<LocalPlayer>("getMagicLevelPercent", &LocalPlayer::getMagicLevelPercent);
|
g_lua.bindClassMemberFunction<LocalPlayer>("getMagicLevelPercent", &LocalPlayer::getMagicLevelPercent);
|
||||||
g_lua.bindClassMemberFunction<LocalPlayer>("getSoul", &LocalPlayer::getSoul);
|
g_lua.bindClassMemberFunction<LocalPlayer>("getSoul", &LocalPlayer::getSoul);
|
||||||
g_lua.bindClassMemberFunction<LocalPlayer>("getStamina", &LocalPlayer::getStamina);
|
g_lua.bindClassMemberFunction<LocalPlayer>("getStamina", &LocalPlayer::getStamina);
|
||||||
|
g_lua.bindClassMemberFunction<LocalPlayer>("getOfflineTrainingTime", &LocalPlayer::getOfflineTrainingTime);
|
||||||
|
g_lua.bindClassMemberFunction<LocalPlayer>("getRegenerationTime", &LocalPlayer::getRegenerationTime);
|
||||||
|
g_lua.bindClassMemberFunction<LocalPlayer>("getBaseSpeed", &LocalPlayer::getBaseSpeed);
|
||||||
|
g_lua.bindClassMemberFunction<LocalPlayer>("getBaseMagicLevel", &LocalPlayer::getBaseMagicLevel);
|
||||||
|
g_lua.bindClassMemberFunction<LocalPlayer>("getTotalCapacity", &LocalPlayer::getTotalCapacity);
|
||||||
g_lua.bindClassMemberFunction<LocalPlayer>("getInventoryItem", &LocalPlayer::getInventoryItem);
|
g_lua.bindClassMemberFunction<LocalPlayer>("getInventoryItem", &LocalPlayer::getInventoryItem);
|
||||||
g_lua.bindClassMemberFunction<LocalPlayer>("getVocation", &LocalPlayer::getVocation);
|
g_lua.bindClassMemberFunction<LocalPlayer>("getVocation", &LocalPlayer::getVocation);
|
||||||
g_lua.bindClassMemberFunction<LocalPlayer>("isPremium", &LocalPlayer::isPremium);
|
g_lua.bindClassMemberFunction<LocalPlayer>("isPremium", &LocalPlayer::isPremium);
|
||||||
|
|
|
@ -876,7 +876,7 @@ void ProtocolGame::parsePlayerStats(const InputMessagePtr& msg)
|
||||||
else
|
else
|
||||||
freeCapacity = msg->getU16() / 100.0;
|
freeCapacity = msg->getU16() / 100.0;
|
||||||
|
|
||||||
double totalCapacity;
|
double totalCapacity = 0;
|
||||||
if(g_game.getFeature(Otc::GameTotalCapacity))
|
if(g_game.getFeature(Otc::GameTotalCapacity))
|
||||||
totalCapacity = msg->getU32() / 100.0;
|
totalCapacity = msg->getU32() / 100.0;
|
||||||
|
|
||||||
|
@ -892,42 +892,57 @@ void ProtocolGame::parsePlayerStats(const InputMessagePtr& msg)
|
||||||
double maxMana = msg->getU16();
|
double maxMana = msg->getU16();
|
||||||
double magicLevel = msg->getU8();
|
double magicLevel = msg->getU8();
|
||||||
|
|
||||||
|
double baseMagicLevel;
|
||||||
if(g_game.getFeature(Otc::GameSkillsBase))
|
if(g_game.getFeature(Otc::GameSkillsBase))
|
||||||
msg->getU8(); // base magic level
|
baseMagicLevel = msg->getU8();
|
||||||
|
else
|
||||||
|
baseMagicLevel = magicLevel;
|
||||||
|
|
||||||
double magicLevelPercent = msg->getU8();
|
double magicLevelPercent = msg->getU8();
|
||||||
double soul = msg->getU8();
|
double soul = msg->getU8();
|
||||||
double stamina = msg->getU16();
|
double stamina = msg->getU16();
|
||||||
|
|
||||||
|
double baseSpeed = 0;
|
||||||
|
if(g_game.getFeature(Otc::GameSkillsBase))
|
||||||
|
baseSpeed = msg->getU16();
|
||||||
|
|
||||||
|
double regeneration = 0;
|
||||||
|
if(g_game.getFeature(Otc::GamePlayerRegenerationTime))
|
||||||
|
regeneration = msg->getU16();
|
||||||
|
|
||||||
|
double training = 0;
|
||||||
|
if(g_game.getFeature(Otc::GameOfflineTrainingTime))
|
||||||
|
training = msg->getU16();
|
||||||
|
|
||||||
m_localPlayer->setHealth(health, maxHealth);
|
m_localPlayer->setHealth(health, maxHealth);
|
||||||
m_localPlayer->setFreeCapacity(freeCapacity);
|
m_localPlayer->setFreeCapacity(freeCapacity);
|
||||||
|
m_localPlayer->setTotalCapacity(totalCapacity);
|
||||||
m_localPlayer->setExperience(experience);
|
m_localPlayer->setExperience(experience);
|
||||||
m_localPlayer->setLevel(level, levelPercent);
|
m_localPlayer->setLevel(level, levelPercent);
|
||||||
m_localPlayer->setMana(mana, maxMana);
|
m_localPlayer->setMana(mana, maxMana);
|
||||||
m_localPlayer->setMagicLevel(magicLevel, magicLevelPercent);
|
m_localPlayer->setMagicLevel(magicLevel, magicLevelPercent);
|
||||||
|
m_localPlayer->setBaseMagicLevel(baseMagicLevel);
|
||||||
m_localPlayer->setStamina(stamina);
|
m_localPlayer->setStamina(stamina);
|
||||||
m_localPlayer->setSoul(soul);
|
m_localPlayer->setSoul(soul);
|
||||||
|
m_localPlayer->setBaseSpeed(baseSpeed);
|
||||||
if(g_game.getFeature(Otc::GameSkillsBase))
|
m_localPlayer->setRegenerationTime(regeneration);
|
||||||
msg->getU16(); // base speed
|
m_localPlayer->setOfflineTrainingTime(training);
|
||||||
|
|
||||||
if(g_game.getFeature(Otc::GamePlayerRegenerationTime))
|
|
||||||
msg->getU16();
|
|
||||||
|
|
||||||
if(g_game.getFeature(Otc::GameOfflineTrainingTime))
|
|
||||||
msg->getU16();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProtocolGame::parsePlayerSkills(const InputMessagePtr& msg)
|
void ProtocolGame::parsePlayerSkills(const InputMessagePtr& msg)
|
||||||
{
|
{
|
||||||
for(int skill = 0; skill < Otc::LastSkill; skill++) {
|
for(int skill = 0; skill < Otc::LastSkill; skill++) {
|
||||||
int level = msg->getU8();
|
int level = msg->getU8();
|
||||||
|
int baseLevel;
|
||||||
if(g_game.getFeature(Otc::GameSkillsBase))
|
if(g_game.getFeature(Otc::GameSkillsBase))
|
||||||
msg->getU8(); // base
|
baseLevel = msg->getU8(); // base
|
||||||
|
else
|
||||||
|
baseLevel = level;
|
||||||
|
|
||||||
int levelPercent = msg->getU8();
|
int levelPercent = msg->getU8();
|
||||||
|
|
||||||
m_localPlayer->setSkill((Otc::Skill)skill, level, levelPercent);
|
m_localPlayer->setSkill((Otc::Skill)skill, level, levelPercent);
|
||||||
|
m_localPlayer->setBaseSkill((Otc::Skill)skill, baseLevel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue