AM
poketibia

[Encerrado] Cooldown não conta tempo no client!

Por Amantezinho, 09 de out. de 2015 em Tópicos Sem Resposta

6
1.1k
AmantezinhoA
09 de outubro de 2015 às 04:24

Acabei de passar por uma dificil imigração do sistema de Cooldown bar do Erodino para meu projeto, porém há um erro no cdBar.lua do client, creio eu!

IMAGEM

 

2mgm7hd.jpg

 

 

 

Legenda:

 

  1. É a Cooldown Bar com os ícones, está funcionando direito as funções m1-m12 por ela. Porém, sem girar aquele reloginho.
  2. É o Cooldown (ou será exhaustion?) dos moves rodando.
  3. É o que me aparece no Terminal do OTClient.

PS: Na executável do server não aparece nada sobre erro do reloginho ;)

 

 

cdBar.lua do OTclient:

 

 

 

-- Privates variables

local cdBarWin = nil
local isIn = 'H' --[[ 'H' = horizontal; 'V' = vertical ]]--
local namesAtks = ''
local icons = {}
-- End privates variables
-- Public functions
function init()
cdBarWin = g_ui.displayUI('cdBar', modules.game_interface.getRootPanel())
cdBarWin:setVisible(false)
cdBarWin:move(250,50)
connect(g_game, 'onTextMessage', getParams)
connect(g_game, { onGameEnd = hide } )
connect(LocalPlayer, { onLevelChange = onLevelChange })
g_mouse.bindPress(cdBarWin, function() createMenu() end, MouseRightButton)
createIcons()
end
function terminate()
disconnect(g_game, { onGameEnd = hide })
disconnect(g_game, 'onTextMessage', getParams)
disconnect(LocalPlayer, { onLevelChange = onLevelChange })
destroyIcons()
cdBarWin:destroy()
end
function onLevelChange(localPlayer, value, percent)
g_game.talk("!cd")
end
function getParams(mode, text)
if not g_game.isOnline() then return end
if mode == MessageModes.Failure then
if string.find(text, '12//,') then
if string.find(text, 'hide') then hide() else show() end
elseif string.find(text, '12|,') then
atualizarCDs(text)
elseif string.find(text, '12&,') then
FixTooltip(text)
end
end
end
function atualizarCDs(text)
if not g_game.isOnline() then return end
if not cdBarWin:isVisible() then return end
local t = text:explode(",")
table.remove(t, 1)
for i = 1, 12 do
local t2 = t:explode("|")
barChange(i, tonumber(t2[1]), tonumber(t2[2]), tonumber(t2[3]))
end
end
function changePercent(progress, icon, perc, num, init)
if not cdBarWin:isVisible() then return end
if init then
progress:setPercent(0)
else
progress:setPercent(progress:getPercent()+perc)
end
if progress:getPercent() >= 100 then
progress:setText("")
return
end
progress:setText(num)
icons[icon:getId()].event = scheduleEvent(function() changePercent(progress, icon, perc, num-1) end, 1000)
end
function barChange(ic, num, lvl, lvlPoke)
if not g_game.isOnline() then return end
if not cdBarWin:isVisible() then return end
local icon = icons['Icon'..ic].icon
local progress = icons['Icon'..ic].progress
if not progress:getTooltip() then return end
local player = g_game.getLocalPlayer()
local pathOn = "moves_icon/"..progress:getTooltip().."_on.png"
icon:setImageSource(pathOn)
if num and num >= 1 then
cleanEvents('Icon'..ic)
changePercent(progress, icon, 100/num, num, true)
else
if (lvlPoke and lvlPoke < lvl) or player:getLevel() < lvl then
progress:setPercent(0)
progress:setText('L.'.. lvl)
progress:setColor('#FF0000')
else
progress:setPercent(100)
progress:setText("")
end
end
end
function FixTooltip(text)
cdBarWin:setHeight(isIn == 'H' and 416 or 40)
cdBarWin:setWidth(isIn == 'H' and 40 or 416)
if not text then text = namesAtks else namesAtks = text end
local t2 = text:explode(",")
local count = 0
for j = 2, 13 do
local ic = icons['Icon'..(j-1)]
ic.icon:setMarginLeft(isIn == 'H' and 4 or ic.dist)
ic.icon:setMarginTop(isIn == 'H' and ic.dist or 4)
if t2[j] == 'n/n' then
ic.icon:hide()
count = count+1
else
ic.icon:show()
ic.progress:setTooltip(t2[j])
ic.progress:setVisible(true)
end
end
if count > 0 and count ~= 12 then
if isIn == "H" then
cdBarWin:setHeight(416 - (count*34))
else
cdBarWin:setWidth(416 - (count*34))
end
elseif count == 12 then
cdBarWin:setHeight(40)
cdBarWin:setWidth(40)
local p = icons['Icon1'].progress
p:setTooltip(false)
p:setVisible(false)
end
end
function createIcons()
local d = 38
for i = 1, 12 do
local icon = g_ui.createWidget('SpellIcon', cdBarWin)
local progress = g_ui.createWidget('SpellProgress', cdBarWin)
icon:setId('Icon'..i)
progress:setId('Progress' ..i)
icons['Icon'..i] = {icon = icon, progress = progress, dist = (i == 1 and 5 or i == 2 and 38 or d + ((i-2)*34)), event = nil}
icon:setMarginTop(icons['Icon'..i].dist)
icon:setMarginLeft(4)
progress:fill(icon:getId())
progress.onClick = function() g_game.talk('m'..i) end
end
end
function destroyIcons()
for i = 1, 12 do
icons['Icon'..i].icon:destroy()
icons['Icon'..i].progress:destroy()
end
cleanEvents()
icons = {}
end
function cleanEvents(icon)
local e = icons[icon]
if icon then
if e and e.event ~= nil then
removeEvent(e.event)
e.event = nil
end
else
for i = 1, 12 do
e = icons['Icon'..i]
cleanEvents('Icon'..i)
e.progress:setPercent(100)
e.progress:setText("")
end
end
end
function createMenu()
local menu = g_ui.createWidget('PopupMenu')
menu:addOption("Set "..(isIn == 'H' and 'Vertical' or 'Horizontal'), function() toggle() end)
menu:display()
end
function toggle()
if not cdBarWin:isVisible() then return end
cdBarWin:setVisible(false)
if isIn == 'H' then
isIn = 'V'
else
isIn = 'H'
end
FixTooltip()
show()
end
function hide()
cleanEvents()
cdBarWin:setVisible(false)
end
function show()
cdBarWin:setVisible(true)
end
-- End public functions

 

 

DeadpoolD
09 de outubro de 2015 às 22:55

você tem o cooldownbar na lib?

AmantezinhoA
09 de outubro de 2015 às 22:58

você tem o cooldownbar na lib?

 

Ei, você sabe se esse KDPO.dll tem que estar na pasta do server?

 

 

useOTClient = true

useKpdoDlls = true -- coloque true pra usar as barras de cooldown.
function isTransformed(cid)
return isCreature(cid) and not isInArray({-1, "Ditto", "Shiny Ditto"}, getPlayerStorageValue(cid, 1010)) --alterado v1.9
end
function getPlayerPokeballs(cid) --alterado v1.9 \/
local ret = {}
local container = 0
if isCreature(cid) then
container = getPlayerSlotItem(cid, 3).uid
local myball = getPlayerSlotItem(cid, 8)
if myball.uid > 0 then
table.insert(ret, myball)
end
else
container = cid
end
if isContainer(container) and getContainerSize(container) > 0 then
for slot = 0, (getContainerSize(container) - 1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getPlayerPokeballs(item.uid)
if itemsbag and #itemsbag > 0 then
for i = 0, #itemsbag do
table.insert(ret, itemsbag)
end
end
elseif isPokeball(item.itemid) then
table.insert(ret, item)
end
end
end
return ret
end
function doUpdatePokemonsBar(cid)
if not isCreature(cid) then return true end
if getPlayerStorageValue(cid, 656494) > 0 then
return true
end
setPlayerStorageValue(cid, 656494, 1000)
addEvent(setPlayerStorageValue, 100, cid, 656494, -1)
local ret = {}
table.insert(ret, "p#,")
local balls = getPlayerPokeballs(cid)
local times = 0
for a = 1, #balls do
local item = balls[a]
times = times + 1
local name = getItemAttribute(item.uid, "poke")
doItemSetAttribute(item.uid, "ballorder", times)
table.insert(ret, name..",")
end
doPlayerSendCancel(cid, table.concat(ret))
end
function getNewMoveTable(table, n)
if table == nil or not n then return false end
local moves = {table.move1, table.move2, table.move3, table.move4, table.move5, table.move6, table.move7, table.move8, table.move9,
table.move10, table.move11, table.move12}
return moves[n] or false
end
function doUpdateMoves(cid)
if not isCreature(cid) then return true end
local summon = getCreatureSummons(cid)[1]
local ret = {}
table.insert(ret, "12&,")
if not summon then
for a = 1, 12 do
table.insert(ret, "n/n,")
end
doPlayerSendCancel(cid, table.concat(ret))
addEvent(doUpdateCooldowns, 100, cid)
return true
end
if isTransformed(summon) then --alterado v1.9
moves = movestable[getPlayerStorageValue(summon, 1010)]
else
moves = movestable[getCreatureName(summon)]
end
for a = 1, 12 do
local b = getNewMoveTable(moves, a)
if b then
table.insert(ret, b.name..",")
else
table.insert(ret, "n/n,")
end
end
doPlayerSendCancel(cid, table.concat(ret))
addEvent(doUpdateCooldowns, 100, cid)
end
function ControlMoves(cid)
doPlayerSendCancel(cid, '12//,hide')
local ret = {}
table.insert(ret, "12&,")
for a = 1, 12 do
table.insert(ret, "moves"..a..",")
end
doPlayerSendCancel(cid, table.concat(ret))
end
function doUpdateCooldowns(cid)
if not isCreature(cid) then return true end
local a = getPlayerSlotItem(cid, 8)
local ret = {}
table.insert(ret, "12|,")
if a.uid <= 0 or #getCreatureSummons(cid) <= 0 then
for cds = 1, 12 do
if useOTClient then table.insert(ret, "-1|0,") else table.insert(ret, "-1,") end
end
doPlayerSendCancel(cid, table.concat(ret))
return true
end
for cds = 1, 12 do
----
local summon = getCreatureSummons(cid)[1]
if summon and getPlayerStorageValue(summon, 212123) >= 1 then
cdzin = "cm_move"..cds
else
cdzin = "move"..cds
end
----
if isTransformed(summon) then --alterado v1.9
moves = movestable[getPlayerStorageValue(summon, 1010)]
else
moves = movestable[getCreatureName(summon)]
end
local b = getNewMoveTable(moves, cds)
if not b then
for cds = 1, 12 do
if useOTClient then table.insert(ret, "-1|0,") else table.insert(ret, "-1,") end --alterado v1.9
end
doPlayerSendCancel(cid, table.concat(ret))
return true
end
----
if getCD(a.uid, cdzin) > 0 then
if (useOTClient and b) then table.insert(ret, (getCD(a.uid, cdzin)).."|"..b.level..",") else table.insert(ret, (getCD(a.uid, cdzin))..",") end
else
if (useOTClient and b) then table.insert(ret, "0|"..b.level..",") else table.insert(ret, "0,") end
end
end
doPlayerSendCancel(cid, table.concat(ret))
end
function getBallsAttributes(item)
local t = {"poke", "gender", "nick", "maxhealth", "boost", "happy", "hp", "addon", "description", "atualLife", "transBegin", "hunger", "transLeft", "transTurn", "transOutfit", "transName",
"trans", "light", "blink", "move1", "move2", "move3", "move4", "move5", "move6", "move7", "move8", "move9", "move10", "move11", "move12", "ballorder",
"hands", "aura", "burn", "burndmg", "poison", "poisondmg", "confuse", "sleep", "miss", "missSpell", "missEff", "fear", "fearSkill", "silence",
"silenceEff", "stun", "stunEff", "stunSpell", "paralyze", "paralyzeEff", "slow", "slowEff", "leech", "leechdmg", "Buff1", "Buff2", "Buff3", "Buff1skill",
"Buff2skill", "Buff3skill", "control", "unique", "task", "lock"}
local ret = {}
for a = 1, #t do
if getItemAttribute(item, t[a]) == "hands" then
return
end
ret[t[a]] = getItemAttribute(item, t[a]) or false
end
return ret
end
function doChangeBalls(cid, item1, item2)
if not isCreature(cid) then return true end
if item1.uid == item2.uid then
if #getCreatureSummons(cid) <= 0 then
doGoPokemon(cid, getPlayerSlotItem(cid, 8))
else
doReturnPokemon(cid, getCreatureSummons(cid)[1], getPlayerSlotItem(cid, 8), pokeballs[getPokeballType(getPlayerSlotItem(cid, 8).itemid)].effect)
end
return true
end
if item1.uid > 0 and item2.uid > 0 then
local io = getBallsAttributes(item1.uid)
local it = getBallsAttributes(item2.uid)
for a, b in pairs (io) do
if b then
doItemSetAttribute(item2.uid, a, b)
else
doItemEraseAttribute(item2.uid, a)
end
end
for a, b in pairs (it) do
if b then
doItemSetAttribute(item1.uid, a, b)
else
doItemEraseAttribute(item1.uid, a)
end
end
local id = item2.itemid
doTransformItem(item2.uid, item1.itemid)
doTransformItem(item1.uid, id)
doGoPokemon(cid, getPlayerSlotItem(cid, 8), pokeballs[getPokeballType(getPlayerSlotItem(cid, 8).itemid)].effect)
else
local id = item2.itemid
local b = getBallsAttributes(item2.uid)
local a = doPlayerAddItem(cid, 2643, false)
for c, d in pairs (b) do
if d then
doItemSetAttribute(a, c, d)
else
doItemEraseAttribute(a, c)
end
end
doRemoveItem(item2.uid, 1)
doTransformItem(a, id)
doGoPokemon(cid, getPlayerSlotItem(cid, 8), pokeballs[getPokeballType(getPlayerSlotItem(cid, 8).itemid)].effect)
end

end

 

DeadpoolD
09 de outubro de 2015 às 22:59

Tem sim, na lib

AmantezinhoA
09 de outubro de 2015 às 23:07

Tem sim, na lib

Data/lib?

4ic5cw.jpg

2 anos depois...
StigalS
21 de abril de 2018 às 03:31
A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta.

+ Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda.
* Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado.