Ir para conteúdo
  • Cadastre-se

Posts Recomendados

DESDE JA AGRADEÇO A TODOS QUE ENTRARAM NO TOPCO COM A INTENÇÃO DE ME AJUDAR

então gente eu gostaria de uma spells que quando usada ela verifique o atributo na pokeball localizada no slot 8 (esse slot 8 equivale a pé, feet)

 

exemplo
eu irei usar a spell
"Mega Destruction"

local pb = getPlayerSlotItem(getCreatureMaster(item2.uid), 8) ---slot 8, pé
se o item tem o atributo
doItemSetAttribute(pb.uid, "megaspell1", 1)  ira usar o spell "Leaf Storm"

 

caso tenha o atributo 
doItemSetAttribute(pb.uid, "megaspell2", 1)  ira usar o spell "Magma Storm"

 

e caso tenha o atributo 
doItemSetAttribute(pb.uid, "megaspell3", 1)  ira usar o spell "Shadow Storm"
e assim suscetivamente 

se o item não tiver nenhum dos atributos aparece uma mensagem dizendo que o pokemon não possui mega spell



eu tentei fazer por mim mesmo mas n consegui o spells ficou assim, mas não funcionou e gerou um erro

SPELL no pokemon moves.lua

Spoiler

elseif spell == "Mega Destruction" then   
local pb = getPlayerSlotItem(getCreatureMaster(cid), 8)
if (getItemAttribute(pb.uid, "megaspell1") == 1) then
        spell = "Leaf Storm"
end

 

 

ERRO

Spoiler

[15/07/2017 19:33:57] [Error - TalkAction Interface] 
[15/07/2017 19:33:57] data/talkactions/scripts/move1.lua:onSay
[15/07/2017 19:33:57] Description: 
[15/07/2017 19:33:57] (luaGetCreatureMaster) Creature not found

[15/07/2017 19:33:57] [Error - TalkAction Interface] 
[15/07/2017 19:33:57] data/talkactions/scripts/move1.lua:onSay
[15/07/2017 19:33:57] Description: 
[15/07/2017 19:33:57] (luaGetPlayerSlotItem) Player not found

[15/07/2017 19:33:57] [Error - TalkAction Interface] 
[15/07/2017 19:33:57] data/talkactions/scripts/move1.lua:onSay
[15/07/2017 19:33:57] Description: 
[15/07/2017 19:33:57] (luaGetItemAttribute) Item not found



move1.lua

Spoiler

local msgs = {"use ", ""}
function doAlertReady(cid, id, movename, n, cd)
if not isCreature(cid) then return true end
local myball = getPlayerSlotItem(cid, 8)
if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") is ready!")
return true
end
local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)
if not p or #p <= 0 then return true end
for a = 1, #p do
if getItemAttribute(p[a], cd) == "cd:"..id.."" then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") is ready!")
return true
end
end
end
function onSay(cid, words, param, channel)
if param ~= "" then return true end
if string.len(words) > 3 then return true end
if #getCreatureSummons(cid) == 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.")
return 0
end
local mypoke = getCreatureSummons(cid)[1]
if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end
if getCreatureName(mypoke) == "Evolution" then return true end
if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then
name = getPlayerStorageValue(mypoke, 1010)   --edited
else
name = getCreatureName(mypoke)
end  
local it = string.sub(words, 2, 3)
local idd = getPlayerSlotItem(cid, 8).uid
local move = (getCreatureName(mypoke) == "Smeargle" and getItemAttribute(idd, "skt1") and movestable[getItemAttribute(idd, "skt1")].move1 or movestable[name].move1) or (getCreatureName(mypoke) == "Shiny Smeargle" and getItemAttribute(idd, "skt1") and movestable[getItemAttribute(idd, "skt1")].move1 or movestable[name].move1)
if getPlayerStorageValue(mypoke, 212123) >= 1 then
cdzin = "cm_move"..it..""
else
cdzin = "move"..it..""
end
if it == "2" then
if getItemAttribute(idd, "skt2") then  
move = movestable[getItemAttribute(idd, "skt2")].move2
else
move = movestable[name].move2
end
elseif it == "3" then
if getItemAttribute(idd, "skt3") then  
move = movestable[getItemAttribute(idd, "skt3")].move3
else
move = movestable[name].move3
end  
elseif it == "4" then
if getItemAttribute(idd, "skt4") then  
move = movestable[getItemAttribute(idd, "skt4")].move4
else
move = movestable[name].move4
end 
elseif it == "4" then
if getItemAttribute(idd, "skt4") then  
move = movestable[getItemAttribute(idd, "skt4")].move4
else
move = movestable[name].move4
end 
elseif it == "5" then
if getItemAttribute(idd, "skt5") then  
move = movestable[getItemAttribute(idd, "skt5")].move5
else
move = movestable[name].move5
end 
elseif it == "6" then
if getItemAttribute(idd, "skt6") then  
move = movestable[getItemAttribute(idd, "skt6")].move6
else
move = movestable[name].move6
end 
elseif it == "7" then
if getItemAttribute(idd, "skt7") then  
move = movestable[getItemAttribute(idd, "skt7")].move7
else
move = movestable[name].move7
end 
elseif it == "8" then
if getItemAttribute(idd, "skt8") then  
move = movestable[getItemAttribute(idd, "skt8")].move8
else
move = movestable[name].move8
end 
elseif it == "9" then
move = movestable[name].move9
elseif it == "10" then
move = movestable[name].move10
elseif it == "11" then
move = movestable[name].move11
elseif it == "12" then
move = movestable[name].move12
elseif it == "13" then
move = movestable[name].move13
end 
if not move then
local isMega = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "megaStone")
if not isMega or name:find("Mega") then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
return true
end
local moveTable, index = getNewMoveTable(movestable[name]), 0
for i = 1, 12 do
if not moveTable then
index = i
break
end
end
if tonumber(it) ~= index then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
return true
end
local needCds = false                   --Coloque false se o pokémon puder mega evoluir mesmo com spells em cooldown.
if needCds then
for i = 1, 12 do
if getCD(getPlayerSlotItem(cid, 8).uid, "move"..i) > 0 then
return doPlayerSendCancel(cid, "para mega evoluir os cds do pokemon devem estar carregados.")
end
end
end
move = {name = "Mega Evolution", level = 0, cd = 0, dist = 1, target = 0, f = 0, t = "?"}
end
if getPlayerLevel(cid) < move.level then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need be atleast level "..move.level.." to use this move.")
return true
end
if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." seconds to use "..move.name.." again.")
return true
end
if getTileInfo(getThingPos(mypoke)).protection then
doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.")
return true
end
if getPlayerStorageValue(mypoke, 3894) >= 1 then
return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v1.3
end
if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then       
doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!")
return true
end
if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) then 
local target = getCreatureTarget(cid)                                                                                       
if math.random(1, 100) <= passivesChances["Evasion"][getCreatureName(target)] then 
if isCreature(getMasterTarget(target)) then   --alterado v1.6                                                                   
doSendMagicEffect(getThingPos(target), 211)
doSendAnimatedText(getThingPos(target), "TOO BAD", 215)                                
doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false)
doSendMagicEffect(getThingPos(target), 211)
doFaceCreature(target, getThingPos(mypoke))            
return true       --alterado v1.6
end
end
end
if move.target == 1 then
if not isCreature(getCreatureTarget(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don\'t have any targets.")
return 0
end
if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then
return 0
end
if getCreatureHealth(getCreatureTarget(cid)) <= 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your have already defeated your target.")
return 0
end
if not isCreature(getCreatureSummons(cid)[1]) then
return true
end
if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.")
return 0
end
if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then
return 0
end
end
local newid = 0
if isSleeping(mypoke) or isSilence(mypoke) then  --alterado v1.5
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.")
return 0
else
newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd)
end
local spellMessage = msgs[math.random(#msgs)]..""..move.name.."!"
if move.name == "Mega Evolution" then
spellMessage = "Mega Evolve!"
end
doCreatureSay(cid, getPokeName(mypoke)..", "..spellMessage, TALKTYPE_SAY)
local summons = getCreatureSummons(cid) --alterado v1.6
addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin)
for i = 2, #summons do
if isCreature(summons) and getPlayerStorageValue(cid, 637501) >= 1 then
docastspell(summons, move.name)        --alterado v1.6
end
end 
docastspell(mypoke, move.name)
doCreatureAddCondition(cid, playerexhaust)
if useKpdoDlls then
doUpdateCooldowns(cid)
end
return 0
end

 

 


ESTA ESTA FUNCIONANDO, POREM APENAS O ADM PODE USAR, SE O PLAYER TENTAR USAR DA ERRO sem contar tambem q ela existe mapenas no spell.xml e na pasta da spell, sendo que não tem nada referente a ela no pokemo move.lua

Spoiler

function onCastSpell(cid, var)
local mypoke = getCreatureSummons(cid)[1]
local pb = getPlayerSlotItem(cid, 8)

if #getCreatureSummons(cid) == 0 then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.")
return true
end

if getTileInfo(getThingPos(mypoke)).protection then
    doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.")
return 0
end

if exhaustion.get(cid, 60029) then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait 47 seconds to use this move again.")
return true
end

if (getItemAttribute(pb.uid, "megaspell1") == 1) then
        doCreatureSay(mypoke, "PSYCHIC!", TALKTYPE_MONSTER)
        docastspell(mypoke, "Psychic")
        exhaustion.set(cid, 60029, 47)
        doCreatureSay(cid, ""..getPokeName(mypoke)..", use Psychic!", TALKTYPE_MONSTER)
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
return true
end

return true
end



@PedroSTT te marquei pq vi q tu ajudou o outro leki com a spell dele, espero q possa me ajudar tambem

Editado por wevertonvrb (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por LeoTK
      Salve galera neste tópico irei postar algumas prints do mapa do servidor para quem queira acompanhar e quem sabe até utilizar de inspiração para mapear o seu NTO.
       
      #Att 11/08/2022

       
       
       
       
      Konoha (Em Desenvolvimento)
       
       
       
       
    • Por DiigooMix
      Como o título já diz, será que alguém possui sprite do hitto e se possível as transformações dele?
    • Por OmegaZero
      Olá gostaria que alguém me ajudasse com uma "scripting" não sei se é pela mesma, seria o seguinte uma determinada arma teria a chance de dar double hit e não sei oque fazer alguem poderia ajudar?

      OBS:não sei se é o local correto se não for mova, desculpe
    • Por Madarasenju
      Olá galera do Tibia King, queria por uns npc's no meu server que não tem função de trade nem nada do tipo, queria que eles só andassem como enfeite, Rep+ Pra quem me ajudar... grato desde já.
    • Por SilenceRoot
      A magia é assim o você usa a a magia e ela ficará ativado por 10 segundos, até que o inimigo lance a primeira magia ou todos de uma vez, quando ele lançar a primeira magia, ele não lhe acertará ou seja esquivando dela, e logo em seguida será teletransportado aleatoriamente ao redor do inimigo que usou.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo