eh q a barra usa as functions doGoPokemon e doReturnPokemon, va em lib/some function.lua e ache essas functions, e faça a ms coisa q tu fez no goback.lua...
- Fórum
- OTServ
- Suporte
- Tópicos Sem Resposta
- [Encerrado] [Duvida] Addon System
5
1.2k
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

13 de novembro de 2012 às 08:55
info
Grupo: Campones
Registrado: 12/02/08
Posts: 95
Reputação: +9
Gênero: Masculino

13 de novembro de 2012 às 09:14
Perfeito @Slicer
Obrigado...
Rep++ sempre..
ahsuasa
obs.: mas to sem agora
Editado Novembro 13 por BobStriker
5 meses depois...
29 de abril de 2013 às 20:59
Qual o addon q voceaxo to usando o do slicer 1.8
5 anos depois...
info
Grupo: Herói
Registrado: 28/11/10
Posts: 3.4k
Reputação: +585
Gênero: Masculino

21 de abril de 2018 às 02:46
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.
+ 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.




info
Grupo: Campones
Registrado: 12/02/08
Posts: 95
Reputação: +9
Gênero: Masculino
Implantei um sistema de addon, que encontrei no forum, no meu servidor PDA Slicer 1.7 s/ level.
Funcionou Quase que perfeitamente. Não consegui configurar a pokebar para funcionar com o addon (se usar o pokemon pela pokebar ele vai sem addon).
Alguem saberia como fazer?
Em actions.xml adicione a seguinte tag:
<action itemid="xxxx" event="script" value="addons.lua"/>
Sendo, xxxx o id do item que vai dar o addon.
addons.lua
function onUse(cid, item, fromPosition, itemEx, toPosition)
local addons = {
[xxxx] = {pokemon= "Scyther" , looktype = 510}, --xxxx = id do item do addon --- "Scyther" = nome do pokemon --- looktype = 1 é o looktype do pokemon com addon
}
if #getCreatureSummons(cid) > 0 then
doPlayerSendCancel(cid, "Please back your pokemon.")
return false
end
local numero = addons[item.itemid].looktype
local pb = getPlayerSlotItem(cid, 8).uid
local pk = addons[item.itemid].pokemon
if getItemAttribute(pb,"poke") ~= pk then
doPlayerSendCancel(cid, "Sorry, you can't use this addon on this poke.")
return false
end
if getItemAttribute(pb,"addon") < 1 then
doRemoveItem(item.uid, 1)
doPlayerSendTextMessage(cid, 27, "Congratulations! Now your pokemon will use the addon.")
doSetItemAttribute(pb,"addon",numero)
return true
end
return true
end
Na action do goback, no finalzinho antes de
else
doPlayerSendCancel(cid, "This pokemon is fainted.")
end
Coloque:
local pk = getCreatureSummons(cid)[1]
local pb = getPlayerSlotItem(cid, 8).uid
local look = getItemAttribute(pb,"addon")
if not look then
doSetItemAttribute(pb,"addon",0)
return false
end
if look > 0 then
doSetCreatureOutfit(pk, {lookType = look}, -1)
return true
end
Agora em data/lib/catch system.lua
Depois de:
doItemSetAttribute(item, "description", description)
Coloque:
doItemSetAttribute(item, "addon", 0)
Depois em data/talkactions/scripts/createpokeball.lua depois de:
doItemSetAttribute(item, "description", "Contains a "..name..".")
Coloque:
doItemSetAttribute(item, "addon", 0)
function getPlayerPokeballs(cid)
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 = "p#,"
local balls = getPlayerPokeballs(cid)
local times = 0
for a = 1, #balls do
local item = balls[a]
local hp = math.ceil(getItemAttribute(item.uid, "hp") * 100)
local name = getItemAttribute(item.uid, "poke")
local port = getPlayerSlotItem(cid, CONST_SLOT_LEGS)
if fotos[name] >= 11137 and fotos[name] <= 11387 then
times = times + 1
local foto = fotos[name] - 911
doItemSetAttribute(item.uid, "ballorder", times)
ret = ret..""..foto..","..name..""..times..","..hp.."," --alterado v1.4
elseif fotos[name] >= 12577 then --tem q ver isso aki ainda --'
times = times + 1
local foto = 11916
doItemSetAttribute(item.uid, "ballorder", times)
ret = ret..""..foto..","..name..""..times..","..hp..","
else
times = times + 1
local foto = fotos[name] - 928
doItemSetAttribute(item.uid, "ballorder", times)
ret = ret..""..foto..","..name..""..times..","..hp..","
end
end
doPlayerSendCancel(cid, ret)
end
function getNewMoveTable(table, n)
if table == nil or not n then return false end
if n == 1 and table.move1 then
return table.move1
elseif n == 2 and table.move2 then
return table.move2
elseif n == 3 and table.move3 then
return table.move3
elseif n == 4 and table.move4 then
return table.move4
elseif n == 5 and table.move5 then
return table.move5
elseif n == 6 and table.move6 then
return table.move6
elseif n == 7 and table.move7 then
return table.move7
elseif n == 8 and table.move8 then
return table.move8
elseif n == 9 and table.move9 then
return table.move9
elseif n == 10 and table.move10 then
return table.move10
elseif n == 11 and table.move11 then
return table.move11
elseif n == 12 and table.move12 then
return table.move12
else
return false
end
end
function doUpdateMoves(cid)
if not isCreature(cid) then return true end
local summon = getCreatureSummons(cid)[1]
local ret = "12&,"
if not summon then
for a = 1, 12 do
ret = ret.."n/n,"
end
doPlayerSendCancel(cid, ret)
addEvent(doUpdateCooldowns, 100, cid)
return true
end
local ret = "12&,"
if getCreatureName(summon) == "Ditto" and pokes[getPlayerStorageValue(summon, 1010)] and getPlayerStorageValue(summon, 1010) ~= "Ditto" then
moves = movestable[getPlayerStorageValue(summon, 1010)]
else --alterado v1.6
moves = movestable[getCreatureName(summon)]
end
for a = 1, 12 do
local b = getNewMoveTable(moves, a)
if b then
ret = ret..""..b.name..","
else
ret = ret.."n/n,"
end
end
doPlayerSendCancel(cid, ret)
addEvent(doUpdateCooldowns, 100, cid)
end
function doUpdateCooldowns(cid)
if not isCreature(cid) then return true end
local a = getPlayerSlotItem(cid, 8)
local ret = "12|,"
if a.uid <= 0 or #getCreatureSummons(cid) <= 0 then
for cds = 1, 12 do
ret = useOTClient and ret.."-1|0," or ret.."-1," --alterado v1.7
end
doPlayerSendCancel(cid, ret)
return true
end
for cds = 1, 12 do --alterado v1.7 \/\/
----
local summon = getCreatureSummons(cid)[1]
if summon and getPlayerStorageValue(summon, 212123) >= 1 then
cdzin = "cm_move"..cds
else --alterado v1.5
cdzin = "move"..cds
end
----
if getCreatureName(summon) == "Ditto" and pokes[getPlayerStorageValue(summon, 1010)] and getPlayerStorageValue(summon, 1010) ~= "Ditto" then
moves = movestable[getPlayerStorageValue(summon, 1010)]
else
moves = movestable[getCreatureName(summon)]
end
local b = getNewMoveTable(moves, cds)
----
if getCD(a.uid, cdzin) > 0 then
ret = useOTClient and ret..""..(getCD(a.uid, cdzin)).."|"..b.level.."," or ret..""..(getCD(a.uid, cdzin) -1)..","
else
ret = (useOTClient and b) and ret.."0|"..b.level.."," or ret.."0,"
end
end
doPlayerSendCancel(cid, ret) -- alterado v1.7 /\/\
end
function getBallsAttributes(item)
local t = {"poke", "gender", "nick", "boost", "happy", "hp", "description", "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", "addon"} --alterado v1.7
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))
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))
end
local pb = getPlayerSlotItem(cid, 8).uid
local look = getItemAttribute(pb,"addon")
if not look then
doSetItemAttribute(pb,"addon",0)
return false
end
if look > 0 then
doSetCreatureOutfit(pk, {lookType = look}, -1)
return true
end
end
local function ChangeBalls(cid, param, cancelequal)
local balls = getPlayerPokeballs(cid)
for a = 1, #balls do
local item = balls[a]
if not getItemAttribute(item.uid, "ballorder") then return doPlayerSendTextMessage(cid, 27, "Do update your pokemon bar!") end --alterado v1.6
local name = getItemAttribute(item.uid, "poke") .. getItemAttribute(item.uid, "ballorder")
if name == param then
if cancelequal and item.uid == getPlayerSlotItem(cid, 8).uid then return true end
doChangeBalls(cid, getPlayerSlotItem(cid, 8), item)
return 0
end
end
end
function onSay(cid, words, param)
if not useKpdoDlls then return true end
if words == "!code64" then
return 0
end
if words == "/pokeread" then
if #getCreatureSummons(cid) >= 1 and getPlayerStorageValue(cid, 212124) <= 0 then --alterado v1.6
local pokemon = getCreatureSummons(cid)[1]
local pokelife = (getCreatureHealth(pokemon) / getCreatureMaxHealth(pokemon))
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", pokelife)
end
doUpdatePokemonsBar(cid)
end
if words == "/goaction" then
if param == "null" then return 0 end
if exhaustion.get(cid, 6666) and exhaustion.get(cid, 6666) > 0 then return true end
if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then return true end
if #getCreatureSummons(cid) >= 1 then
if not getItemAttribute(getPlayerSlotItem(cid, 8).uid, "ballorder") then return doPlayerSendTextMessage(cid, 27, "Do update your pokemon bar!") end
--alterado v1.6
addEvent(doReturnPokemon, 100, cid, getCreatureSummons(cid)[1], false, pokeballs[getPokeballType(getPlayerSlotItem(cid, 8).itemid)].effect)
if param ~= getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke") .. getItemAttribute(getPlayerSlotItem(cid, 8).uid, "ballorder") then
addEvent(ChangeBalls, 1200, cid, param, true)
end
else
addEvent(ChangeBalls, 100, cid, param)
end
exhaustion.set(cid, 6666, 2)
return 0
end
if words == "/reloadCDs" then --alterado v1.7
doUpdateMoves(cid)
return true
end
return 0
end