healthmana module
This commit is contained in:
parent
f444dc624c
commit
5d54971568
|
@ -0,0 +1,17 @@
|
|||
Module
|
||||
name: game
|
||||
description: Create the game interface, where the ingame stuff starts
|
||||
author: OTClient team
|
||||
website: https://github.com/edubart/otclient
|
||||
autoLoad: true
|
||||
dependencies:
|
||||
- core
|
||||
- tibiafiles
|
||||
- topmenu
|
||||
- entergame
|
||||
- background
|
||||
|
||||
onLoad: |
|
||||
require 'game'
|
||||
require 'textmessage'
|
||||
return true
|
|
@ -0,0 +1,60 @@
|
|||
TextMessage = {}
|
||||
|
||||
-- require styles
|
||||
importStyles '/game/ui/textmessage.otui'
|
||||
|
||||
-- private variables
|
||||
local bottomLabelWidget, centerLabelWidget
|
||||
local messageTypes = {
|
||||
first = 12,
|
||||
{ type = 'MessageOrange', color = '#C87832', showOnConsole = true, showOnWindow = false },
|
||||
{ type = 'MessageOrange', color = '#C87832', showOnConsole = true, showOnWindow = false },
|
||||
{ type = 'MessageRed', color = '#C83200', showOnConsole = true, showOnWindow = true, windowLocation = 'CenterLabel' },
|
||||
{ type = 'MessageWhite', color = '#FFFFFF', showOnConsole = true, showOnWindow = true, windowLocation = 'CenterLabel' },
|
||||
{ type = 'MessageWhite', color = '#FFFFFF', showOnConsole = true, showOnWindow = true, windowLocation = 'BottomLabel' },
|
||||
{ type = 'MessageWhite', color = '#FFFFFF', showOnConsole = true, showOnWindow = true, windowLocation = 'BottomLabel' },
|
||||
{ type = 'MessageGreen', color = '#3FBE32', showOnConsole = true, showOnWindow = true, windowLocation = 'CenterLabel' },
|
||||
{ type = 'MessageWhite', color = '#FFFFFF', showOnConsole = false, showOnWindow = true, windowLocation = 'BottomLabel' },
|
||||
{ type = 'MessageBlue', color = '#3264C8', showOnConsole = true, showOnWindow = false },
|
||||
{ type = 'MessageRed', color = '#C83200', showOnConsole = true, showOnWindow = false }
|
||||
}
|
||||
|
||||
-- public functions
|
||||
function TextMessage.create()
|
||||
bottomLabelWidget = UILabel.create()
|
||||
Game.gameMapPanel:addChild(bottomLabelWidget)
|
||||
|
||||
centerLabelWidget = UILabel.create()
|
||||
Game.gameMapPanel:addChild(centerLabelWidget)
|
||||
end
|
||||
|
||||
-- hooked events
|
||||
function Game.onTextMessage(type, message)
|
||||
local messageType = messageTypes[type - messageTypes.first]
|
||||
|
||||
if messageType.showOnConsole then
|
||||
-- TODO
|
||||
end
|
||||
|
||||
if messageType.showOnWindow then
|
||||
local label
|
||||
if messageType.windowLocation == 'BottomLabel' then
|
||||
label = bottomLabelWidget
|
||||
elseif messageType.windowLocation == 'CenterLabel' then
|
||||
label = centerLabelWidget
|
||||
end
|
||||
|
||||
label:setVisible(true)
|
||||
label:setForegroundColor(messageType.color)
|
||||
label:setText(message)
|
||||
|
||||
label:setStyle(messageType.windowLocation)
|
||||
|
||||
time = #message * 75
|
||||
scheduleEvent(function()
|
||||
label:setVisible(false)
|
||||
end, time)
|
||||
end
|
||||
end
|
||||
|
||||
connect(Game, { onLogin = TextMessage.create })
|
|
@ -0,0 +1,14 @@
|
|||
Module
|
||||
name: health_mana
|
||||
description: Displays health and mana points
|
||||
author: OTClient team
|
||||
website: https://github.com/edubart/otclient
|
||||
autoLoad: true
|
||||
dependencies:
|
||||
- game
|
||||
|
||||
onLoad: |
|
||||
require 'viplist'
|
||||
return true
|
||||
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
HealthMana = {}
|
||||
|
||||
-- private variables
|
||||
local healthManaPanel = nil
|
||||
|
||||
-- public functions
|
||||
function HealthMana.create()
|
||||
healthManaPanel = loadUI("/health_mana/health_mana.otui", Game.gameRightPanel)
|
||||
|
||||
local healthLabel = UILabel.create()
|
||||
healthManaPanel:addChild(healthLabel)
|
||||
healthLabel:setId('healthLabel')
|
||||
healthLabel:setStyle('HealthLabel')
|
||||
healthLabel:setText('0 / 0')
|
||||
|
||||
local manaLabel = UILabel.create()
|
||||
healthManaPanel:addChild(manaLabel)
|
||||
manaLabel:setId('manaLabel')
|
||||
manaLabel:setStyle('ManaLabel')
|
||||
manaLabel:setText('0 / 0')
|
||||
|
||||
healthManaPanel:setHeight(healthLabel:getHeight() + manaLabel:getHeight())
|
||||
end
|
||||
|
||||
function HealthMana.destroy()
|
||||
healthManaPanel:destroy()
|
||||
healthManaPanel = nil
|
||||
end
|
||||
|
||||
-- hooked events
|
||||
function Game.onHealthChange(health, maxHealth)
|
||||
local label = healthManaPanel:getChildById('healthLabel')
|
||||
label:setText(health .. ' / ' .. maxHealth)
|
||||
end
|
||||
|
||||
function Game.onManaChange(mana, maxMana)
|
||||
local label = healthManaPanel:getChildById('manaLabel')
|
||||
label:setText(mana .. ' / ' .. maxMana)
|
||||
end
|
||||
|
||||
connect(Game, { onLogin = HealthMana.create,
|
||||
onLogout = HealthMana.destroy })
|
|
@ -0,0 +1,42 @@
|
|||
HealthMana = {}
|
||||
|
||||
-- private variables
|
||||
local healthManaPanel = nil
|
||||
|
||||
-- public functions
|
||||
function HealthMana.create()
|
||||
healthManaPanel = loadUI("/health_mana/health_mana.otui", Game.gameRightPanel)
|
||||
|
||||
local healthLabel = UILabel.create()
|
||||
healthManaPanel:addChild(healthLabel)
|
||||
healthLabel:setId('healthLabel')
|
||||
healthLabel:setStyle('HealthLabel')
|
||||
healthLabel:setText('0 / 0')
|
||||
|
||||
local manaLabel = UILabel.create()
|
||||
healthManaPanel:addChild(manaLabel)
|
||||
manaLabel:setId('manaLabel')
|
||||
manaLabel:setStyle('ManaLabel')
|
||||
manaLabel:setText('1 / 1')
|
||||
|
||||
healthManaPanel:setHeight(healthLabel:getHeight() + manaLabel:getHeight())
|
||||
end
|
||||
|
||||
function HealthMana.destroy()
|
||||
healthManaPanel:destroy()
|
||||
healthManaPanel = nil
|
||||
end
|
||||
|
||||
-- hooked events
|
||||
function Game.onHealthChange(health, maxHealth)
|
||||
local label = healthManaPanel:getChildById('healthLabel')
|
||||
label:setText(health .. ' / ' .. maxHealth)
|
||||
end
|
||||
|
||||
function Game.onManaChange(mana, maxMana)
|
||||
local label = healthManaPanel:getChildById('manaLabel')
|
||||
label:setText(mana .. ' / ' .. maxMana)
|
||||
end
|
||||
|
||||
connect(Game, { onLogin = HealthMana.create,
|
||||
onLogout = HealthMana.destroy })
|
|
@ -0,0 +1,14 @@
|
|||
Module
|
||||
name: health_mana
|
||||
description: Displays health and mana points
|
||||
author: OTClient team
|
||||
website: https://github.com/edubart/otclient
|
||||
autoLoad: true
|
||||
dependencies:
|
||||
- game
|
||||
|
||||
onLoad: |
|
||||
require 'health_mana'
|
||||
return true
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
HealthLabel < Label
|
||||
color: white
|
||||
background-color: red
|
||||
align: center
|
||||
font: verdana-11px-monochrome
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: parent.top
|
||||
image: /core_styles/images/empty_rect.png
|
||||
|
||||
ManaLabel < Label
|
||||
color: white
|
||||
background-color: blue
|
||||
align: center
|
||||
font: verdana-11px-monochrome
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
image: /core_styles/images/empty_rect.png
|
||||
|
||||
UIWindow
|
||||
id: healthManaPanel
|
||||
width: 192
|
||||
margin.top: 6
|
||||
margin.left: 6
|
||||
margin.right: 6
|
||||
move policy: free updated
|
||||
image: /core_styles/images/empty_rect.png
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
HealthLabel < Label
|
||||
color: red
|
||||
background-color: green
|
||||
align: center
|
||||
font: verdana-11px-monochrome
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: parent.top
|
||||
image: /core_styles/images/empty_rect.png
|
||||
|
||||
ManaLabel < Label
|
||||
color: blue
|
||||
background-color: red
|
||||
align: center
|
||||
font: verdana-11px-monochrome
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
image: /core_styles/images/empty_rect.png
|
||||
|
||||
UIWindow
|
||||
id: healthManaPanel
|
||||
width: 192
|
||||
margin.top: 6
|
||||
margin.left: 6
|
||||
margin.right: 6
|
||||
move policy: free updated
|
||||
image: /core_styles/images/empty_rect.png
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
Skills = {}
|
||||
|
||||
-- private variables
|
||||
local skillWindow = nil
|
||||
local skills = {"Fist Fighting", "Club Fighting", "Sword Fighting", "Axe Fighting", "Distance Fighting", "Shielding", "Fishing"}
|
||||
|
||||
-- public functions
|
||||
function Skills.create()
|
||||
skillWindow = loadUI("/skills/skills.otui", Game.gameRightPanel)
|
||||
|
||||
local skillPanel = skillWindow:getChildById('skillPanel')
|
||||
|
||||
-- create first widget cause of layout
|
||||
local widget = UIWidget.create()
|
||||
skillPanel:addChild(widget)
|
||||
widget:setStyle('SkillFirstWidget')
|
||||
|
||||
-- create skills
|
||||
for i=1,#skills,1 do
|
||||
local nameLabel = UILabel.create()
|
||||
skillPanel:addChild(nameLabel)
|
||||
nameLabel:setStyle('SkillNameLabel')
|
||||
nameLabel:setText(skills[i])
|
||||
|
||||
local levelLabel = UILabel.create()
|
||||
skillPanel:addChild(levelLabel)
|
||||
levelLabel:setStyle('SkillLevelLabel')
|
||||
levelLabel:setId('skillLevelId' .. i)
|
||||
levelLabel:setText('0')
|
||||
|
||||
local percentPanel = UIWidget.create()
|
||||
skillPanel:addChild(percentPanel)
|
||||
percentPanel:setStyle('SkillPercentPanel')
|
||||
end
|
||||
end
|
||||
|
||||
function Skills.destroy()
|
||||
skillWindow:destroy()
|
||||
skillWindow = nil
|
||||
end
|
||||
|
||||
-- hooked events
|
||||
function Game.setSkill(id, level, percent)
|
||||
local skillPanel = skillWindow:getChildById('skillPanel')
|
||||
|
||||
local levelLabel = skillPanel:getChildById('skillLevelId' .. id)
|
||||
levelLabel:setText(level)
|
||||
|
||||
--local percentLabel = skillPanel:getChildById('skillLevelId' .. id)
|
||||
--levelLabel:setText(percent)
|
||||
end
|
||||
|
||||
connect(Game, { onLogin = Skills.create,
|
||||
onLogout = Skills.destroy })
|
|
@ -631,12 +631,22 @@ void ProtocolGame::parsePlayerStats(InputMessage& msg)
|
|||
{
|
||||
m_localPlayer->setStatistic(Otc::Health, msg.getU16());
|
||||
m_localPlayer->setStatistic(Otc::MaxHealth, msg.getU16());
|
||||
|
||||
g_dispatcher.addEvent([=] {
|
||||
g_lua.callGlobalField("Game", "onHealthChange", m_localPlayer->getStatistic(Otc::Health), m_localPlayer->getStatistic(Otc::MaxHealth));
|
||||
});
|
||||
|
||||
m_localPlayer->setStatistic(Otc::FreeCapacity, msg.getU32());
|
||||
m_localPlayer->setStatistic(Otc::Experience, msg.getU32());
|
||||
m_localPlayer->setStatistic(Otc::Level, msg.getU16());
|
||||
m_localPlayer->setStatistic(Otc::LevelPercent, msg.getU8());
|
||||
m_localPlayer->setStatistic(Otc::Mana, msg.getU16());
|
||||
m_localPlayer->setStatistic(Otc::MaxMana, msg.getU16());
|
||||
|
||||
g_dispatcher.addEvent([=] {
|
||||
g_lua.callGlobalField("Game", "onManaChange", m_localPlayer->getStatistic(Otc::Mana), m_localPlayer->getStatistic(Otc::MaxMana));
|
||||
});
|
||||
|
||||
m_localPlayer->setStatistic(Otc::MagicLevel, msg.getU8());
|
||||
m_localPlayer->setStatistic(Otc::MagicLevelPercent, msg.getU8());
|
||||
m_localPlayer->setStatistic(Otc::Soul, msg.getU8());
|
||||
|
|
Loading…
Reference in New Issue