Ir para conteúdo
  • 0

(resolvido) alguém pode criar uma spell a partir dessa action por favor?


wevertonvrb

Pergunta

então eu quero fazer uma action virar uma spell ou seja criar uma spell, caso n seja possivel uma spell pode ser uma talkaction
e tambem quero que não seja necessário nenhum item apenas a talk ou a spell

 

Tentando fazer cheguei nisso mas n deu certo

 

Spoiler

elseif spell == "Transform" then
        local theevo = ""
        local ball = getPlayerSlotItem(cid, 8).uid
        local evolution = 0
 if getPokemonName(ball.uid) == "Castform" then --
essa é a linha 287 relacionada ao erro
        theevo = "Fire Castform"
        elseif getPokemonName(ball.uid)  == "Fire Castform" then
           theevo = "Water Castform"
             elseif getPokemonName(ball.uid)  == "Water Castform" then
               theevo = "Ice Castform"
                elseif getPokemonName (ball.uid) == "Ice Castform" then
                  theevo = "Fire Castform"
                  return true
                        end
          
          doEvolvePokemon(cid, ball, theevo, evolution)
           
           
           
 doItemSetAttribute(ball, "morta", "no")
 doItemSetAttribute(ball, "Icone", "yes")    
 doTransformItem(ball, icons[getItemAttribute(ball, "poke")].use)
        

 

 

 

 

 

gerou os seguintes erros
 

Spoiler

 [Error - TalkAction Interface] 
[15/11/2016 22:49:25] data/talkactions/scripts/move1.lua:onSay
[15/11/2016 22:49:25] Description: 
[15/11/2016 22:49:25] (luaGetPlayerSlotItem) Player not found

[15/11/2016 22:49:25] [Error - TalkAction Interface] 
[15/11/2016 22:49:25] data/talkactions/scripts/move1.lua:onSay
[15/11/2016 22:49:25] Description: 
[15/11/2016 22:49:25] data/lib/pokemon moves.lua:287: attempt to index local 'ball' (a number value)
[15/11/2016 22:49:25] stack traceback:
[15/11/2016 22:49:25]     data/lib/pokemon moves.lua:287: in function 'docastspell'
[15/11/2016 22:49:25]     data/talkactions/scripts/move1.lua:235: in function <data/talkactions/scripts/move1.lua:20>

 

 

 

 

 

 

 

esse  é o script da action que quero transformar no spell
 

Spoiler

local special = specialevo                  

local types = {
[leaf] = {"Bulbasaur", "Ivysaur", "Oddish", "Gloom", "Bellsprout", "Weepinbell", "Exeggcute", "Chikorita", "Bayleef", "Hoppip", "Skiploom", "Sunkern"},
[water] = {"Squirtle", "Wartortle", "Horsea", "Goldeen", "Magikarp", "Psyduck", "Poliwag", "Poliwhirl", "Tentacool", "Krabby", "Staryu", "Omanyte", "Eevee", "Totodile", "Croconow", "Chinchou", "Marill", "Wooper", "Slowpoke", "Remoraid", "Seadra"},
[venom] = {"Zubat", "Ekans", "Nidoran male", "Nidoran female", "Nidorino", "Nidorina", "Gloom", "Venonat", "Tentacool", "Grimer", "Koffing", "Spinarak", "Golbat"},
[thunder] = {"Magnemite", "Pikachu", "Voltorb", "Eevee", "Chinchou", "Pichu", "Mareep", "Flaaffy", "Elekid"},
[rock] = {"Geodude", "Graveler", "Rhyhorn", "Kabuto", "Slugma", "Pupitar"},
[punch] = {"Machop", "Machoke", "Mankey", "Poliwhirl", "Tyrogue"},
[fire] = {"Charmander", "Charmeleon", "Vulpix", "Growlithe", "Ponyta", "Eevee", "Cyndaquil", "Quilava", "Slugma", "Houndour", "Magby"},
[coccon] = {"Caterpie", "Metapod", "Weedle", "Kakuna", "Paras", "Venonat", "Scyther", "Ledyba", "Spinarak", "Pineco"},
[crystal] = {"Dratini", "Dragonair", "Magikarp", "Omanyte", "Kabuto", "Seadra"},
[dark] = {"Gastly", "Haunter", "Eevee", "Houndour", "Pupitar"},
[earth] = {"Cubone", "Sandshrew", "Nidorino", "Nidorina", "Diglett", "Onix", "Rhyhorn", "Wooper", "Swinub", "Phanpy", "Larvitar"},
[enigma] = {"Abra", "Kadabra", "Psyduck", "Slowpoke", "Drowzee", "Eevee", "Natu", "Smoochum"},
[heart] = {"Rattata", "Pidgey", "Pidgeotto", "Spearow", "Clefairy", "Jigglypuff", "Meowth", "Doduo", "Porygon", "Chansey", "Sentret", "Hoothoot", "Cleffa", "Igglybuff", "Togepi", "Snubull", "Teddiursa"},
[ice] = {"Seel", "Shellder", "Smoochum", "Swinub"},
[metal] = {"Onix", "Scyther"},
[ancient] = {"Sunkern", "Gloom", "Slowpoke", "Poliwhirl", "Seadra", "Porygon"},
[sfire] = {"Shiny Charmander", "Shiny Charmeleon", "Shiny Magmortar", "Shiny Vulpix", "Shiny Growlithe", "Shiny Ponyta", "Shiny Eevee"},
[swater] = {"Shiny Squirtle", "Shiny Wartortle", "Shiny Horsea", "Shiny Goldeen", "Shiny Magikarp", "Shiny Psyduck", "Shiny Poliwag", "Shiny Poliwhirl", "Shiny Tentacool", "Shiny Krabby", "Shiny Staryu", "Shiny Omanyte", "Shiny Eevee"},
[sleaf] = {"Shiny Bulbasaur", "Shiny Ivysaur", "Shiny Oddish", "Shiny Gloom", "Shiny Bellsprout", "Shiny Weepinbell", "Shiny Exeggcute"},
[sheart] = {"Shiny Rattata", "Shiny Pidgey", "Shiny Pidgeotto", "Shiny Spearow", "Shiny Clefairy", "Shiny Jigglypuff", "Shiny Meowth", "Shiny Doduo", "Shiny Porygon", "Shiny Chansey"},
[senigma] = {"Shiny Abra", "Shiny Kadabra", "Shiny Psyduck", "Shiny Slowpoke", "Shiny Drowzee", "Shiny Eevee"},
[srock] = {"Shiny Geodude", "Shiny Graveler", "Shiny Rhyhorn", "Shiny Kabuto"},
[svenom] = {"Shiny Zubat", "Shiny Ekans", "Shiny Nidoran male", "Shiny Nidoran female", "Shiny Nidorino", "Shiny Nidorina", "Shiny Gloom", "Shiny Venonat", "Shiny Tentacool", "Shiny Grimer", "Shiny Koffing"},
[sice] = {"Shiny Seel", "Shiny Shellder"},
[sthunder] = {"Shiny Magnemite", "Shiny Pikachu", "Shiny electivire", "Shiny Voltorb", "Shiny Eevee"},
[scrystal] = {"Shiny Dratini", "Shiny Dragonite", "Shiny Dragonair", "Shiny Magikarp", "Shiny Omanyte", "Shiny Kabuto"},
[scoccon] = {"Shiny Caterpie", "Shiny Metapod", "Shiny Weedle", "Shiny Kakuna", "Shiny Paras", "Shiny Venonat", "Shiny Scyther"},
[sdarkness] = {"Shiny Gastly", "Shiny Haunter", "Shiny Eevee"},
[spunch] = {"Shiny Machop", "Shiny Machoke", "Shiny Mankey", "Shiny Poliwhirl"},
[searth] = {"Shiny Cubone", "Shiny Sandshrew", "Shiny Nidorino", "Shiny Nidorina", "Shiny Diglett", "Shiny Onix", "Shiny Rhyhorn"}

}

local specEvos = {   --alterado v1.9 \/
["Eevee"] = {
               [thunder] = "Jolteon",
               [water] = "Vaporeon",
               [fire] = "Flareon",
               [enigma] = "Espeon",
               [dark] = "Umbreon",
            },
}

function onUse(cid, item, frompos, item2, topos)

local pokeball = getPlayerSlotItem(cid, 8):

if not isMonster(item2.uid) or not isSummon(item2.uid) then
   return true
end
if #getCreatureSummons(cid) > 1 then
   return true                           --alterado v1.9
end

if getCreatureCondition(item2.uid, CONDITION_INVISIBLE) then return true end

local pevo = poevo[getCreatureName(item2.uid)]

if not isInArray(specialevo, getCreatureName(item2.uid)) then
   if not pevo then
      doPlayerSendCancel(cid, "This pokemon can't evolve.")
      return true
   end
   if not isPlayer(getCreatureMaster(item2.uid)) or getCreatureMaster(item2.uid) ~= cid then
      doPlayerSendCancel(cid, "You can only use stones on pokemons you own.")
      return true
   end
   if pevo.stoneid ~= item.itemid and pevo.stoneid2 ~= item.itemid then 
      doPlayerSendCancel(cid, "This isn't the needed stone to evolve this pokemon.")
      return true
   end
end

local minlevel = 0

if getPokemonName(item2.uid) == "Eevee" then
   local eevee = specEvos["Eevee"][item.itemid]
   if not eevee then
      doPlayerSendCancel(cid, "This isn't the required stone to evolve this pokemon.")
      return true
   end   

   minlevel = pokes[eevee].level

   if getPlayerLevel(cid) < minlevel then
      doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
      return true
   end

   doRemoveItem(item.uid, 1)
   doEvolvePokemon(cid, item2, eevee, 0, 0)
           local ball = getPlayerSlotItem(cid, 8).uid
           doItemSetAttribute (ball, "addon", 0)
            --  doItemEraseAttribute(ball, "boost")    
 doItemSetAttribute(ball, "morta", "no")
 doItemSetAttribute(ball, "Icone", "yes")    
 doTransformItem(ball, icons[getItemAttribute(ball, "poke")].use)
   return true
end

if isInArray(specialevo, getPokemonName(item2.uid)) then
   if getPokemonName(item2.uid) == "Poliwhirl" then
      local evolution = 0
      local theevo = ""
      
      if item.itemid == water then
         if getPlayerItemCount(cid, king) >= 1 then
            evolution = king
            theevo = "Politoed"
         elseif getPlayerItemCount(cid, punch) >= 1 then
            evolution = punch
            theevo = "Poliwrath"
         else
            doPlayerSendCancel(cid, "You need a water stone and a punch stone (Poliwrath) or a King's Rock (Politoed) to evolve this pokemon.")
            return true
         end
         
         minlevel = pokes[theevo].level
         
         if getPlayerLevel(cid) < minlevel then
            doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
            return true
         end
         if getPlayerItemCount(cid, punch) >= 1 and getPlayerItemCount(cid, king) >= 1 then
            doPlayerSendCancel(cid, "Please, use your Punch Stone to evolve this pokemon to a Poliwrath, or a King's Rock to a Politoed.")
            return true
         end
         doEvolvePokemon(cid, item2, theevo, evolution, water)
           local ball = getPlayerSlotItem(cid, 8).uid
           doItemSetAttribute (ball, "addon", 0)
           --   doItemEraseAttribute(ball, "boost")    
 doItemSetAttribute(ball, "morta", "no")
 doItemSetAttribute(ball, "Icone", "yes")    
 doTransformItem(ball, icons[getItemAttribute(ball, "poke")].use)

      elseif item.itemid == punch then
         minlevel = pokes["Poliwrath"].level
         
         if getPlayerLevel(cid) < minlevel then
            doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
            return true
         end
         if getPlayerItemCount(cid, water) <= 0 then
            doPlayerSendCancel(cid, "You need at least one Punch Stone and one Water Stone to evolve this pokemon.")
            return true
         end

         local theevo = "Poliwrath"
         doEvolvePokemon(cid, item2, theevo, water, punch)
           local ball = getPlayerSlotItem(cid, 8).uid
           doItemSetAttribute (ball, "addon", 0)
            --  doItemEraseAttribute(ball, "boost")    
 doItemSetAttribute(ball, "morta", "no")
 doItemSetAttribute(ball, "Icone", "yes")    
 doTransformItem(ball, icons[getItemAttribute(ball, "poke")].use)
    
      elseif item.itemid == king then
         minlevel = pokes["Politoed"].level

         if getPlayerLevel(cid) < minlevel then
            doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
            return true
         end
         if getPlayerItemCount(cid, water) <= 0 then
            doPlayerSendCancel(cid, "You need at least one Punch Stone and one King's Rock to evolve this pokemon.")
            return true
         end
         local theevo = "Politoed"
         doEvolvePokemon(cid, item2, theevo, water, king)
           local ball = getPlayerSlotItem(cid, 8).uid
           doItemSetAttribute (ball, "addon", 0)
            --  doItemEraseAttribute(ball, "boost")    
 doItemSetAttribute(ball, "morta", "no")
 doItemSetAttribute(ball, "Icone", "yes")    
 doTransformItem(ball, icons[getItemAttribute(ball, "poke")].use)
      end

    elseif getPokemonName(item2.uid) == "Gloom" then
       local theevo = ""
       local evolution = 0
       if item.itemid == leaf then
          if getPlayerItemCount(cid, leaf) >= 1 then
             theevo = "Vileplume"
             evolution = leaf
          elseif getPlayerItemCount(cid, sun) >= 1 then
             theevo = "Bellossom"
             evolution = sun
          else
             doPlayerSendCancel(cid, "You need at least one Leaf Stone, and a Sun Stone (Bellossom) or a 2 Leaf Stone (Vileplume) to evolve this pokemon.")
             return true
          end
          
          minlevel = pokes[theevo].level
          
          if getPlayerLevel(cid) < minlevel then
             doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
             return true
          end
          if getPlayerItemCount(cid, venom) >= 1 and getPlayerItemCount(cid, sun) >= 1 then
             doPlayerSendCancel(cid, "Please, use your Leaf Stone to evolve this pokemon to a Vileplume, or a Sun Stone to a Bellossom.")
             return true
          end
          
          doEvolvePokemon(cid, item2, theevo, evolution, leaf)
           local ball = getPlayerSlotItem(cid, 8).uid
           doItemSetAttribute (ball, "addon", 0)
           --   doItemEraseAttribute(ball, "boost")    
 doItemSetAttribute(ball, "morta", "no")
 doItemSetAttribute(ball, "Icone", "yes")    
 doTransformItem(ball, icons[getItemAttribute(ball, "poke")].use)

       elseif item.itemid == leaf then
          minlevel = pokes["Vileplume"].level

          if getPlayerLevel(cid) < minlevel then
             doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
             return true
          end
          if getPlayerItemCount(cid, leaf) <= 0 then
             doPlayerSendCancel(cid, "You need at least 2 Leaf Stones to evolve this pokemon.")
             return true
          end
          doEvolvePokemon(cid, item2, "Vileplume", leaf, leaf)
           local ball = getPlayerSlotItem(cid, 8).uid
           doItemSetAttribute (ball, "addon", 0)
             -- doItemEraseAttribute(ball, "boost")    
 doItemSetAttribute(ball, "morta", "no")
 doItemSetAttribute(ball, "Icone", "yes")    
 doTransformItem(ball, icons[getItemAttribute(ball, "poke")].use)
          
       elseif item.itemid == sun then
          minlevel = pokes["Bellossom"].level

          if getPlayerLevel(cid) < minlevel then
             doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
             return true
          end
          if getPlayerItemCount(cid, leaf) <= 0 then
             doPlayerSendCancel(cid, "You need at least one Leaf Stone and one Sun Stone to evolve this pokemon.")
             return true
          end
          doEvolvePokemon(cid, item2, "Bellossom", sun, leaf)
           local ball = getPlayerSlotItem(cid, 8).uid
           doItemSetAttribute (ball, "addon", 0)
            --  doItemEraseAttribute(ball, "boost")    
 doItemSetAttribute(ball, "morta", "no")
 doItemSetAttribute(ball, "Icone", "yes")    
 doTransformItem(ball, icons[getItemAttribute(ball, "poke")].use)
       end
       
    elseif getPokemonName(item2.uid) == "Slowpoke" then
       if item.itemid == enigma then
          minlevel = pokes["Slowbro"].level

          if getPlayerLevel(cid) < minlevel then
             doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
             return true
          end
          doEvolvePokemon(cid, item2, "Slowbro", enigma, 0)
           local ball = getPlayerSlotItem(cid, 8).uid
           doItemSetAttribute (ball, "addon", 0)
            --  doItemEraseAttribute(ball, "boost")    
 doItemSetAttribute(ball, "morta", "no")
 doItemSetAttribute(ball, "Icone", "yes")    
 doTransformItem(ball, icons[getItemAttribute(ball, "poke")].use)

        elseif item.itemid == king then
          minlevel = pokes["Slowking"].level

          if getPlayerLevel(cid) < minlevel then
             doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
             return true
          end
          doEvolvePokemon(cid, item2, "Slowking", king, 0)
           local ball = getPlayerSlotItem(cid, 8).uid
           doItemSetAttribute (ball, "addon", 0)
             -- doItemEraseAttribute(ball, "boost")    
 doItemSetAttribute(ball, "morta", "no")
 doItemSetAttribute(ball, "Icone", "yes")    
 doTransformItem(ball, icons[getItemAttribute(ball, "poke")].use)
        end

    elseif getPokemonName(item2.uid) == "Tyrogue" then
        local evolution = ""

        evolution = choose("Hitmonlee", "Hitmonchan", "Hitmontop")
        minlevel = pokes[evolution].level

        if getPlayerLevel(cid) < minlevel then
           doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
           return true
        end
        doEvolvePokemon(cid, item2, evolution, punch, 0)
           local ball = getPlayerSlotItem(cid, 8).uid
           doItemSetAttribute (ball, "addon", 0)
            --  doItemEraseAttribute(ball, "boost")    
 doItemSetAttribute(ball, "morta", "no")
 doItemSetAttribute(ball, "Icone", "yes")    
 doTransformItem(ball, icons[getItemAttribute(ball, "poke")].use)
    end
return true
end

local count = poevo[getPokemonName(item2.uid)].count
local stnid = poevo[getPokemonName(item2.uid)].stoneid
local stnid2 = poevo[getPokemonName(item2.uid)].stoneid2
local evo = poevo[getPokemonName(item2.uid)].evolution

if stnid2 > 1 and (getPlayerItemCount(cid, stnid2) < count or getPlayerItemCount(cid, stnid) < count) then
   doPlayerSendCancel(cid, "You need at least one "..getItemNameById(stnid).." and one "..getItemNameById(stnid2).." to evolve this pokemon!")
   return true
end

if getPlayerItemCount(cid, stnid) < count then
   local str = ""
   if count >= 2 then
      str = "s"
   end
return doPlayerSendCancel(cid, "You need at least "..count.." "..getItemNameById(stnid)..""..str.." to evolve this pokemon!")
end

minlevel = pokes[evo].level

if getPlayerLevel(cid) < minlevel then
   doPlayerSendCancel(cid, "Você não possui level necessario para evoluir esse pokemon ("..minlevel..").")
   return true
end

if count >= 2 then
   stnid2 = stnid
end

doEvolvePokemon(cid, item2, evo, stnid, stnid2)
           local ball = getPlayerSlotItem(cid, 8).uid
           doItemSetAttribute (ball, "addon", 0)
            --  doItemEraseAttribute(ball, "boost")    
 doItemSetAttribute(ball, "morta", "no")
 doItemSetAttribute(ball, "Icone", "yes")    
 doTransformItem(ball, icons[getItemAttribute(ball, "poke")].use)

return TRUE
end

 

 

 

 

 

 

 

 e esse é o move1.lua relacionado ao erro tambem
 

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
                      --alterado v1.5
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 name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke)

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
if getPlayerStorageValue(mypoke, 212123) >= 1 then
   cdzin = "cm_move"..it..""
else
   cdzin = "move"..it..""       --alterado v1.5
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
                                  --alterado v1.6                  
    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
                                                                     --alterado v1.7 \/\/\/
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


 

 

 

 

 

 

 

 

 

e por ultimo mas não menos importante  aqui esta as funções salvas na lib
LIB

Spoiler

function adjustWildPoke(cid, optionalLevel)
if isMonster(cid) and pokes[getCreatureName(cid)] then

    local level = (optionalLevel and optionalLevel >= 1) and optionalLevel or getPokemonLevel(cid)  --alterado v1.8
    
               local level = 0
    local b = getCreatureOutfit(cid).lookBody
    local shiny = 100
    local lvl = getPokemonLevel(cid)
    local monstrinho = getCreatureName(cid)
                                                 --alterado v1.4
                                                 
    if optionalLevel then
       level = optionalLevel
    elseif b > lvl then
       level = b
    elseif string.find(monstrinho, "Shiny") then
      level = lvl * 01.0
    else
       level = lvl
    end
    
    setPlayerStorageValue(cid, 1000, level) --alterado v1.8
    setPlayerStorageValue(cid, 1001, pokes[getCreatureName(cid)].offense * level)
    setPlayerStorageValue(cid, 1002, pokes[getCreatureName(cid)].defense)
    setPlayerStorageValue(cid, 1003, pokes[getCreatureName(cid)].agility)                                  
    setPlayerStorageValue(cid, 1004, pokes[getCreatureName(cid)].vitality * level)
    setPlayerStorageValue(cid, 1005, pokes[getCreatureName(cid)].specialattack * level)
    
    doRegainSpeed(cid)         --alterado!
    setCreatureMaxHealth(cid, (getVitality(cid) * HPperVITwild)) 
    doCreatureAddHealth(cid,  getCreatureMaxHealth(cid))
   
    if pokes[getCreatureName(cid)].exp then
       local exp = pokes[getCreatureName(cid)].exp * baseExpRate + pokes[getCreatureName(cid)].vitality * pokemonExpPerLevelRate
       setPlayerStorageValue(cid, 1006, (exp * generalExpRate/2)*10)
       if getPlayerStorageValue(cid, 22546) == 1 then
          setPlayerStorageValue(cid, 1006, 750)
          doSetCreatureDropLoot(cid, false)      
       end   
    end
end
end       

function getPokemonXMLOutfit(name)                --alterado v1.9 \/
local path = "data/monster/pokes/Shiny/"..name..".xml"
local tpw = io.type(io.open(path))

if not tpw then
   path = "data/monster/pokes/geracao 2/"..name..".xml"
   tpw = io.type(io.open(path))
end
if not tpw then
   path = "data/monster/pokes/geracao 3/"..name..".xml"
   tpw = io.type(io.open(path))
end
if not tpw then
   path = "data/monster/pokes/geracao 4/"..name..".xml"
   tpw = io.type(io.open(path))
end
if not tpw then
   path = "data/monster/pokes/geracao 1/"..name..".xml"
   tpw = io.type(io.open(path))
end
if not tpw then
   path = "data/monster/pokes/"..name..".xml"
   tpw = io.type(io.open(path))
end   
if not tpw then
   return print("[getPokemonXMLOutfit] Poke with name: "..name.." ins't in any paste on monster/pokes/") and 2
end
   local arq = io.open(path, "a+")
   local txt = arq:read("*all")
   arq:close()
   local a, b = txt:find('look type="(.-)"')
   txt = string.sub(txt, a + 11, b - 1)
return tonumber(txt)
end 

function doEvolutionOutfit(cid, oldout, outfit)
    if not isCreature(cid) then return true end
        if getCreatureOutfit(cid).lookType == oldout then
            doSetCreatureOutfit(cid, {lookType = outfit}, -1)
        else
            doSetCreatureOutfit(cid, {lookType = oldout}, -1)
        end
end

function doSendEvolutionEffect(cid, pos, evolution, turn, ssj, evolve, f, h)
    if not isCreature(cid) then
        doSendAnimatedText(pos, "CANCEL", 215)
        return true 
    end
    if evolve then
        doEvolvePokemon(getCreatureMaster(cid), {uid = cid}, evolution, 0, 0)
    return true
    end
    doSendMagicEffect(pos, 18)
        if ssj then
            sendSSJEffect(evo)
        end
    doEvolutionOutfit(cid, f, h)
    addEvent(doSendEvolutionEffect, math.pow(1900, turn/20), cid, getThingPos(cid), evolution, turn - 1, turn == 19, turn == 2, f, h)
end

function sendSSJEffect(cid)
    if not isCreature(cid) then return true end
    local pos1 = getThingPos(cid)
    local pos2 = getThingPos(cid)
    pos2.x = pos2.x + math.random(-1, 1)
    pos2.y = pos2.y - math.random(1, 2)
    doSendDistanceShoot(pos1, pos2, 37)
    addEvent(sendSSJEffect, 45, cid)
end

function sendFinishEvolutionEffect(cid, alternate)
    if not isCreature(cid) then return true end
    local pos1 = getThingPos(cid)

    if alternate then
        local pos = {
        [1] = {-2, 0},
        [2] = {-1, -1},
        [3] = {0, -2},
        [4] = {1, -1},
        [5] = {2, 0},
        [6] = {1, 1},
        [7] = {0, 2},
        [8] = {-1, 1}}
        for a = 1, 8 do
            local pos2 = getThingPos(cid)
            pos2.x = pos2.x + pos[a][1]
            pos2.y = pos2.y + pos[a][2]
            local pos = getThingPos(cid)
            doSendDistanceShoot(pos2, pos, 37)
            addEvent(doSendDistanceShoot, 300, pos, pos2, 37)
        end
    else
        for a = 0, 3 do
            doSendDistanceShoot(pos1, getPosByDir(pos1, a), 37)
        end
        for a = 4, 7 do
            addEvent(doSendDistanceShoot, 600, pos1, getPosByDir(pos1, a), 37)
        end
    end
end

function doEvolvePokemon(cid, item2, theevo, stone1, stone2)

    if not isCreature(cid) then return true end

    if not pokes[theevo] or not pokes[theevo].offense then
    doReturnPokemon(cid, item2.uid, getPlayerSlotItem(cid, 8), pokeballs[getPokeballType(getPlayerSlotItem(cid, 8).itemid)].effect, false, true)
    return true
    end

    local owner = getCreatureMaster(item2.uid)
    local pokeball = getPlayerSlotItem(cid, 8):
    local description = "Contains a "..theevo.."."
    local pct = getCreatureHealth(item2.uid) / getCreatureMaxHealth(item2.uid)

        doItemSetAttribute(pokeball.uid, "hp", pct)

        doItemSetAttribute(pokeball.uid, "poke", theevo)
        doItemSetAttribute(pokeball.uid, "description", "Contains a "..theevo..".")

        doPlayerSendTextMessage(cid, 27, "Congratulations! Your "..getPokeName(item2.uid).." evolved into a "..theevo.."!")        

        doSendMagicEffect(getThingPos(item2.uid), 18)
        doTransformItem(getPlayerSlotItem(cid, 7).uid, fotos[theevo])
        doSendMagicEffect(getThingPos(cid), 173)

        local oldpos = getThingPos(item2.uid)
        local oldlod = getCreatureLookDir(item2.uid)
        doRemoveCreature(item2.uid)

        doSummonMonster(cid, theevo)
        local pk = getCreatureSummons(cid)[1]

        doTeleportThing(pk, oldpos, false)
        doCreatureSetLookDir(pk, oldlod)

        sendFinishEvolutionEffect(pk, true)
        addEvent(sendFinishEvolutionEffect, 550, pk, true)
        addEvent(sendFinishEvolutionEffect, 1050, pk)
        
        doPlayerRemoveItem(cid, stone1, 1)
        doPlayerRemoveItem(cid, stone2, 1)

        doAddPokemonInOwnList(cid, theevo)

        local happy = getItemAttribute(pokeball.uid, "happy")

        doItemSetAttribute(pokeball.uid, "happy", happy + happyGainedOnEvolution)

        if happy + happyGainedOnEvolution > 255 then
            doItemSetAttribute(pokeball.uid, "happy", 255)
        end

        adjustStatus(pk, pokeball.uid, true, false)

        if useKpdoDlls then
            doUpdateMoves(cid)
        end
end

function doMathDecimal(number, casas)

    if math.floor(number) == number then return number end

    local c = casas and casas + 1 or 3

    for a = 0, 10 do
        if math.floor(number) < math.pow(10, a) then
            local str = string.sub(""..number.."", 1, a + c)
            return tonumber(str)    
        end
    end

return number
end

function doAdjustWithDelay(cid, pk, health, vit, status)
if isCreature(cid) then                                   
   adjustStatus(pk, getPlayerSlotItem(cid, 8).uid, health, vir, status)
end
end

function adjustStatus(pk, item, health, vite, conditions)

    if not isCreature(pk) then return true end

    local gender = getItemAttribute(item, "gender") and getItemAttribute(item, "gender") or 0
    addEvent(doCreatureSetSkullType, 10, pk, gender)

-- Defense -- 
local bonusdef = {}
local Tiers = {
[1] = {bonus = DefBonus1},
[2] = {bonus = DefBonus2},
[3] = {bonus = DefBonus3},
[4] = {bonus = DefBonus4},
[5] = {bonus = DefBonus5},
[6] = {bonus = DefBonus6},
[7] = {bonus = DefBonus7},
}
local Tier = getItemAttribute(item, "heldx")

if Tier and Tier > 0 and Tier < 8 then
bonusdef = Tiers[Tier].bonus
else
bonusdef = 1
end
-- Defense --
-- Boost -- 
local bonusboost = {}
local Tiers2 = {
[36] = {bonus = BoostBonus1},
[37] = {bonus = BoostBonus2},
[38] = {bonus = BoostBonus3},
[39] = {bonus = BoostBonus4},
[40] = {bonus = BoostBonus5},
[41] = {bonus = BoostBonus6},
[42] = {bonus = BoostBonus7},
}
if Tier and Tier > 35 and Tier < 43 then
bonusboost = Tiers2[Tier].bonus
else
bonusboost = 0
end
-- Boost -- 
    if (getItemAttribute(item, "ehditto") == 1) then
setPlayerStorageValue(pk, 1001, (pokes[getCreatureName(pk)].offense * (getMasterLevel(pk) + getPokemonBoost(pk))) * 0.99)
setPlayerStorageValue(pk, 1002, (pokes[getCreatureName(pk)].defense) * 0.99)
setPlayerStorageValue(pk, 1003, pokes[getCreatureName(pk)].agility)
setPlayerStorageValue(pk, 1004, (pokes[getCreatureName(pk)].vitality * (getMasterLevel(pk) + getPokemonBoost(pk))) * 0.99)
setPlayerStorageValue(pk, 1005, (pokes[getCreatureName(pk)].specialattack * (getMasterLevel(pk) + getPokemonBoost(pk))) * 0.99)
else
setPlayerStorageValue(pk, 1001, pokes[getCreatureName(pk)].offense * (getMasterLevel(pk) + getPokemonBoost(pk)))
setPlayerStorageValue(pk, 1002, pokes[getCreatureName(pk)].defense)
setPlayerStorageValue(pk, 1003, pokes[getCreatureName(pk)].agility)
setPlayerStorageValue(pk, 1004, pokes[getCreatureName(pk)].vitality * (getMasterLevel(pk) + getPokemonBoost(pk)))
setPlayerStorageValue(pk, 1005, pokes[getCreatureName(pk)].specialattack * (getMasterLevel(pk) + getPokemonBoost(pk)))
end
    
    if vite == true then
        local pct = getCreatureHealth(pk) / getCreatureMaxHealth(pk)
        local vit = getVitality(pk)
        setCreatureMaxHealth(pk, ( vit * HPperVITsummon ))
        doCreatureAddHealth(pk, pct * vit * HPperVITsummon)
    end
                                                                      
    doRegainSpeed(pk)  

    local nick = getItemAttribute(item, "poke")

    if isGhostPokemon(pk) then
       setPlayerStorageValue(pk, 8981, 1)
       updateGhostWalk(pk)
    end
        
    if string.find(tostring(nick), "Shiny") then
       nick = tostring(nick):match("Shiny (.*)")
    end
    
    if string.find(tostring(nick), "Brooders") then
       nick = tostring(nick):match("Brooders (.*)")
    end
    
    if string.find(tostring(nick), "Fire") then
       nick = tostring(nick):match("Fire (.*)")
    end
    
    if string.find(tostring(nick), "Water") then
       nick = tostring(nick):match("Water (.*)")
    end

    if string.find(tostring(nick), "Ice") then
       nick = tostring(nick):match("Ice (.*)")
    end
    
    if string.find(tostring(nick), "Sua") then
       nick = tostring(nick):match("Sua (.*)")
    end
    
    if string.find(tostring(nick), "Seu") then
       nick = tostring(nick):match("Seu (.*)")
    end
    
    if string.find(tostring(nick), "Fire") then
       nick = tostring(nick):match("Fire (.*)")
    end
    
    if string.find(tostring(nick), "Flying") then
       nick = tostring(nick):match("Flying (.*)")
    end
    
    if string.find(tostring(nick), "Ghost") then
       nick = tostring(nick):match("Ghost (.*)")
    end
    
    if string.find(tostring(nick), "Grass") then
       nick = tostring(nick):match("Grass (.*)")
    end

    if string.find(tostring(nick), "Male") then
       nick = tostring(nick):match("Male (.*)")
    end
    
    if string.find(tostring(nick), "Female") then
       nick = tostring(nick):match("Female (.*)")
    end    
    
    if getItemAttribute(item, "nick") then
        nick = getItemAttribute(item, "nick")
    end

    setPlayerStorageValue(pk, 1007, nick)

    doCreatureSetNick(pk, nick)

    if not getItemAttribute(item, "happy") then
        doItemSetAttribute(item, "happy", 120)
    end

    if not getItemAttribute(item, "hunger") then
        doItemSetAttribute(item, "hunger", 5)
    end

    local happy = getItemAttribute(item, "happy")
        if happy < 0 then
            happy = 1
        end
    setPlayerStorageValue(pk, 1008, happy)

    local hunger = getItemAttribute(item, "hunger")
    setPlayerStorageValue(pk, 1009, hunger)

    if health == true then
        local mh = HPperVITsummon * getVitality(pk)
        local rd = 1 - (tonumber(getItemAttribute(item, "hp")))
        setCreatureMaxHealth(pk, mh)                                  
        doCreatureAddHealth(pk, getCreatureMaxHealth(pk))
        doCreatureAddHealth(pk, -(getCreatureMaxHealth(pk) * rd))
    end

    if isSummon(pk) and conditions then
        local burn = getItemAttribute(item, "burn")   
        if burn and burn >= 0 then
           local ret = {id = pk, cd = burn, check = false, damage = getItemAttribute(item, "burndmg"), cond = "Burn"}
           addEvent(doCondition2, 3500, ret)
        end

        local poison = getItemAttribute(item, "poison")
        if poison and poison >= 0 then
           local ret = {id = pk, cd = poison, check = false, damage = getItemAttribute(item, "poisondmg"), cond = "Poison"}
           addEvent(doCondition2, 1500, ret)
        end

        local confuse = getItemAttribute(item, "confuse")
        if confuse and confuse >= 0 then
           local ret = {id = pk, cd = confuse, check = false, cond = "Confusion"}
           addEvent(doCondition2, 1200, ret)                                                
        end

        local sleep = getItemAttribute(item, "sleep")
        if sleep and sleep >= 0 then
           local ret = {id = pk, cd = sleep, check = false, first = true, cond = "Sleep"}
           doCondition2(ret)
        end
        
        local miss = getItemAttribute(item, "miss")     
        if miss and miss >= 0 then      
          local ret = {id = pk, cd = miss, eff = getItemAttribute(item, "missEff"), check = false, spell = getItemAttribute(item, "missSpell"), cond = "Miss"}
          doCondition2(ret)
        end
        
        local fear = getItemAttribute(item, "fear")
        if fear and fear >= 0 then
           local ret = {id = pk, cd = fear, check = false, skill = getItemAttribute(item, "fearSkill"), cond = "Fear"}
           doCondition2(ret)
        end
        
        local silence = getItemAttribute(item, "silence")
        if silence and silence >= 0 then      
           local ret = {id = pk, cd = silence, eff = getItemAttribute(item, "silenceEff"), check = false, cond = "Silence"}
           doCondition2(ret)
        end                                     
        
        local stun = getItemAttribute(item, "stun")
        if stun and stun >= 0 then
           local ret = {id = pk, cd = stun, eff = getItemAttribute(item, "stunEff"), check = false, spell = getItemAttribute(item, "stunSpell"), cond = "Stun"}
           doCondition2(ret)
        end 
                                                       
        local paralyze = getItemAttribute(item, "paralyze")
        if paralyze and paralyze >= 0 then
           local ret = {id = pk, cd = paralyze, eff = getItemAttribute(item, "paralyzeEff"), check = false, first = true, cond = "Paralyze"}
           doCondition2(ret)
        end  
                                                     
        local slow = getItemAttribute(item, "slow")
        if slow and slow >= 0 then
           local ret = {id = pk, cd = slow, eff = getItemAttribute(item, "slowEff"), check = false, first = true, cond = "Slow"}
           doCondition2(ret)
        end                                              
        
        local leech = getItemAttribute(item, "leech")
        if leech and leech >= 0 then
           local ret = {id = pk, cd = leech, attacker = 0, check = false, damage = getItemAttribute(item, "leechdmg"), cond = "Leech"}
           doCondition2(ret)
        end                               
        
        for i = 1, 3 do
            local buff = getItemAttribute(item, "Buff"..i)
            if buff and buff >= 0 then
               local ret = {id = pk, cd = buff, eff = getItemAttribute(item, "Buff"..i.."eff"), check = false, 
               buff = getItemAttribute(item, "Buff"..i.."skill"), first = true, attr = "Buff"..i}
               doCondition2(ret)
            end
        end
               
    end
                                                                          --alterado v1.9
    if getItemAttribute(item, "boost") and getItemAttribute(item, "boost") >= 50 and getItemAttribute(item, "aura") then
       sendAuraEffect(pk, auraSyst[getItemAttribute(item, "aura")])        
    end
    
    if getPlayerStorageValue(getCreatureMaster(pk), 6598754) >= 1 then
        setPlayerStorageValue(pk, 6598754, 1)                               
    elseif getPlayerStorageValue(getCreatureMaster(pk), 6598755) >= 1 then
        setPlayerStorageValue(pk, 6598755, 1)
    end

return true
end

function getOffense(cid)
    if not isCreature(cid) then return 0 end
return tonumber(getPlayerStorageValue(cid, 1001))
end

function getDefense(cid)
    if not isCreature(cid) then return 0 end
return tonumber(getPlayerStorageValue(cid, 1002))
end

function getSpeed(cid)
    if not isCreature(cid) then return 0 end
return tonumber(getPlayerStorageValue(cid, 1003))
end

function getVitality(cid)
    if not isCreature(cid) then return 0 end
return tonumber(getPlayerStorageValue(cid, 1004))
end

function getSpecialAttack(cid)
    if not isCreature(cid) then return 0 end
return tonumber(getPlayerStorageValue(cid, 1005))
end

function getHappiness(cid)
    if not isCreature(cid) then return 0 end
return tonumber(getPlayerStorageValue(cid, 1008))
end

function getSpecialDefense(cid)
    if not isCreature(cid) then return 0 end
return getSpecialAttack(cid) * 0.85 + getDefense(cid) * 0.2      
end

function getPokemonLevel(cid, dex)
if not isCreature(cid) or not pokes[getCreatureName(cid)] then return 0 end 
    if not dex then                      --alterado v1.9
       if ehMonstro(cid) and getPlayerStorageValue(cid, 1000) > 0 then  
          return getPlayerStorageValue(cid, 1000)
       elseif ehMonstro(cid) then 
          return pokes[getCreatureName(cid)].wildLvl             
       end
    end   
return pokes[getCreatureName(cid)].level
end

function getPokemonLevelByName(name)
return pokes[name] and pokes[name].level or 0  --alterado v1.9
end

function getMasterLevel(poke)
    if not isSummon(poke) then return 0 end
return getPlayerLevel(getCreatureMaster(poke))
end

function getPokemonBoost(poke)
    if not isSummon(poke) then return 0 end
return getItemAttribute(getPlayerSlotItem(getCreatureMaster(poke), 8).uid, "boost") or 0
end

function getPokeballBoost(ball)
    if not isPokeball(ball.itemid) then return 0 end  --alterado v1.8
return getItemAttribute(ball.uid, "boost") or 0
end

function getPokeName(cid)
    if not isSummon(cid) then return getCreatureName(cid) end
    if getCreatureName(cid) == "Evolution" then return getPlayerStorageValue(cid, 1007) end
    
local item = getPlayerSlotItem(getCreatureMaster(cid), 8):
    if getItemAttribute(item.uid, "nick") then
       return getItemAttribute(item.uid, "nick")
    end
    if string.find(tostring(getCreatureName(cid)), "Shiny") then
      local newName = tostring(getCreatureName(cid)):match("Shiny (.*)")
      return newName
    end
return getCreatureName(cid)
end

function getPokeballName(item, truename)
if not truename and getItemAttribute(item, "nick") then
return getItemAttribute(item, "nick")
end
return getItemAttribute(item, "poke")
end

function getPokemonName(cid)
return getCreatureName(cid)
end

function getPokemonGender(cid) --alterado v1.9
return getCreatureSkullType(cid)
end

function setPokemonGender(cid, gender)
if isCreature(cid) and gender then        --alterado v1.8
   doCreatureSetSkullType(cid, gender)
   return true
end
return false
end

function getWildPokemonExp(cid)
return getPlayerStorageValue(cid, 1006)
end


espero que alguém possa me ajudar obg desde ja
 

Editado por wevertonvrb
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0
21 horas atrás, zipter98 disse:

Ah, eu programei apenas para Castforms de jogadores.

Vou editar para os selvagens também.

 

Pronto, editado para Castforms selvagens.

 

 

 

aqui esta o script

Spoiler

elseif spell == "Transform" then

    local config = {

        forms = {"Castform", "Fire Castform", "Water Castform", "Ice Castform"},    --Formas, na ordem de transformação.

        effects = {

            ["water"] = 18,                                                        --["elemento_primário_da_nova_forma"] = efeito_na_transformação,

            ["ice"] = 18,

            ["fire"] = 18,

        }

    }

    

    local function fakeEvolution(cid, newPoke, pokeball)

        local owner = getCreatureMaster(cid)

        if not owner then return true end

        local description = "Contains a "..newPoke.."."

        local pct = getCreatureHealth(cid) / getCreatureMaxHealth(cid)

        doItemSetAttribute(pokeball, "hp", pct)

        doItemSetAttribute(pokeball, "poke", newPoke)

        doItemSetAttribute(pokeball, "morta", "no")

        doItemSetAttribute(pokeball, "Icone", "yes")    

        doItemSetAttribute(pokeball, "description", "Contains a "..newPoke..".")

        doSendMagicEffect(getThingPos(cid), config.effects[pokes[newPoke].type] or 18)

        doTransformItem(pokeball, icons[getItemAttribute(pokeball, "poke")].use)

        doTransformItem(getPlayerSlotItem(owner, 7).uid, fotos[newPoke])

        local oldpos, oldlod, health_percent_lost = getThingPos(cid), getCreatureLookDir(cid), (getCreatureMaxHealth(cid) - getCreatureHealth(cid)) * 100 / getCreatureMaxHealth(cid)

        doRemoveCreature(cid)

        doSummonMonster(owner, newPoke)

        local pk = getCreatureSummons(owner)[1]

        doTeleportThing(pk, oldpos, false)

        doCreatureSetLookDir(pk, oldlod)

        adjustStatus(pk, pokeball, true, false)

        doCreatureAddHealth(pk, -(health_percent_lost * getCreatureMaxHealth(pk) / 100))

        if useKpdoDlls then

            doUpdateMoves(owner)

        end

    end

    

    table.find = function (table, value)

        for i, v in pairs(table) do

            if(v == value) then

                return i

            end

        end

        return nil

    end

        

    if not isInArray(config.forms, getCreatureName(cid)) then return true end

    

    local next_form = config.forms[table.find(config.forms, getCreatureName(cid)) + 1]

    if not next_form then next_form = config.forms[1] end

    

    if not isSummon(cid) then

        local pos, dir, health_percent_lost = getThingPos(cid), getCreatureLookDir(cid), (getCreatureMaxHealth(cid) - getCreatureHealth(cid)) * 100 / getCreatureMaxHealth(cid)

        doRemoveCreature(cid)

        

        local newMonster = doCreateMonster(next_form, pos)

        

        adjustWildPoke(newMonster)

        doCreatureSetLookDir(newMonster, dir)

        doCreatureAddHealth(newMonster, -(health_percent_lost * getCreatureMaxHealth(newMonster) / 100))

    else

        local p = getPlayerSlotItem(getCreatureMaster(cid), 8):

        if not p then return true

        end ------- coloquei este end

        

        fakeEvolution(cid, next_form, p.uid)

    end

bom agora deu 2 erros mas nenhum na distro

 

PRIMEIRO se meu pokemon tiver com 95% da vida total quando eu tranformar ele perde + 5% da vida ficando com 90% e se eu transformar novamente ele perde mais 10%

ou seja transformar esta tendo um custo de vida e esse custo é a % de vida ja perdida ou seja se meu pokemon tiver com 50% de vida ou menos e eu transformar ele morre.

 

SEGUNDO os pokemons selvagens quando se transforma recupera 100% de sua vida 

 

 

EDIT: consegui arrumar o primeiro bug trocando ISSO >> doCreatureAddHealth(pk, -(health_percent_lost * getCreatureMaxHealth(pk) / 100))

POR ISSO >> doCreatureAddHealth(pk, health_percent_lost)

 

AGORA FALTA ARRUMAR O SEGUNDO BUG ONDE OS POKES SELVAGENS RESTALRA 100% DA VIDA

Editado por wevertonvrb
Link para o comentário
Compartilhar em outros sites

  • 0

Não imaginei que meses sem programar de fato desfariam meu conhecimento em bases poketibianas. Havia esquecido completamente a estrutura das funções de evolução e ajustes de status no PDA.

Enfim, editei meu comentário que continha o código com ambas as correções.

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0
Em 09/12/2016 at 03:05, zipter98 disse:

Ah, eu programei apenas para Castforms de jogadores.

Vou editar para os selvagens também.

 

Pronto, editado para Castforms selvagens.

corrigiu os erros anteriores porem surgiu mais um erro.

o castform selvagem esta ficando com apenas 1 quarto da vida dos outros ou seja se todos os castform tem 200k de vida total o castform normal esta ficando com apenas 50k de vida total n sei o motimo mas sem a alteração a vida fica igual

 

Link para o comentário
Compartilhar em outros sites

  • 0

Eu acabei de testar o código, e está funcionando como devido (se há alguma discrepância na variação de HP, não passa de 10).

A vida da nova forma é proporcional a da anterior. 

Porém, se o que você quer dizer é que as formas estão com vida total e o Castform normal está perdendo HP, significa que há algum erro no seu código. Se for o caso, peço que poste-o aqui.

Link para o comentário
Compartilhar em outros sites

  • 0
23 minutos atrás, zipter98 disse:

Eu acabei de testar o código, e está funcionando como devido (se há alguma discrepância na variação de HP, não passa de 10).

A vida da nova forma é proporcional a da anterior. 

Porém, se o que você quer dizer é que as formas estão com vida total e o Castform normal está perdendo HP, significa que há algum erro no seu código. Se for o caso, peço que poste-o aqui.

obrigado resolvido o erro estava no wild lvl ja corrigi rep + man sou teu fan quero aprender a programar sabe de uns bons tutoriais?

ou sera q quer ser meu proff? rsrs abraço

 

 

 

 

Editado por wevertonvrb
Link para o comentário
Compartilhar em outros sites

  • 0

Ah, Lua é bem fácil de aprender. Tem tutoriais por toda a internet (aqui no XTibia, inclusive, tem vários). Basta estudá-los, ler códigos de outras pessoas e praticar. Principalmente praticar.

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

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