Ir para conteúdo

[Encerrado] [Duvida] Addon System


victormoaz

Posts Recomendados

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?

  • Script Dos Addon - Creditos RicardoSohnn •

 

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)

 

 

 

  • Lib/cooldown bar.lua

 

 

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

 

  • talkaction/cdbar.lua

 

 

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

 

 

Link para o comentário
Compartilhar em outros sites

  • 5 months later...
  • 4 years later...
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.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...