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

  • 1
elseif spell == "Transform" then     local config = {        forms = {"Castform", "Fire Castform", "Water Castform", "Ice Castform"},    --Formas, na ordem de transformação.        effects = {            ["water"] = xxx,                                                        --["elemento_primário_da_nova_forma"] = efeito_na_transformação,            ["ice"] = xxx,            ["fire"] = xxx,        }    }        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..".")        doTransformItem(pokeball, icons[getItemAttribute(pokeball, "poke")].use)        doTransformItem(getPlayerSlotItem(owner, 7).uid, fotos[newPoke])        local oldpos, oldlod = getThingPos(cid), getCreatureLookDir(cid)        doRemoveCreature(cid)        doSummonMonster(owner, newPoke)        local pk = getCreatureSummons(owner)[1]        doTeleportThing(pk, oldpos, false)        doCreatureSetLookDir(pk, oldlod)        adjustStatus(pk, pokeball, true, false)        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        doSendMagicEffect(getThingPos(cid), config.effects[pokes[next_form].type] or 18)    if not isSummon(cid) then        local pos, dir, health_lost = getThingPos(cid), getCreatureLookDir(cid), getCreatureHealth(cid) / getCreatureMaxHealth(cid)                doRemoveCreature(cid)        local newMonster = doCreateMonster(next_form, pos)                setPlayerStorageValue(newMonster, 94831, health_lost)        doCreatureSetLookDir(newMonster, dir)    else        local p = getPlayerSlotItem(getCreatureMaster(cid), 8)        if not p then return true end                fakeEvolution(cid, next_form, p.uid)    end

 

Depois, em data/lib/level system.lua, no código da função adjustWildPoke:

Abaixo de:

doCreatureAddHealth(cid,  getCreatureMaxHealth(cid))

coloque:

if tonumber(getPlayerStorageValue(cid, 94831)) > -1 then	local ratio = 1 - tonumber(getPlayerStorageValue(cid, 94831))	doCreatureAddHealth(cid, -(getCreatureMaxHealth(cid) * ratio))end

 

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

  • 0
16 horas atrás, Poccnn disse:

Tu já viu algum script de talkaction? 

sim tenho vários aqui porem eu quero tirar isso de ser necessário esses itens, eu simplesmente tou tentando fazer sozinho mas não estou conseguindo eu gostaria mt dessa spell mas uma talkaction com  os que siga os mesmos valores seria suficiente. se puder me ajudar agradeceria mt

Link para o comentário
Compartilhar em outros sites

  • 0
48 minutos atrás, zipter98 disse:

Você poderia, por gentileza, descrever o código que quer?

CLARO

eu quero uma spell que faça os pokemons evoluir. em meu serve existe uma action que faz isso,

então eu postei a action com todas as suas funçoes etc e tall para que talvez sirva de base,

também postei a spell que eu tentei fazer e não deu certo.

a action que tenho precisa de itens e tudo mais porem eu quero de preferencia uma spell que n precise de itens apenas a spell ou a talkaction ja evoluiria

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

data/talkactions/scripts:

local specialevo = {    ["Eevee"] = {"Vaporeon", "Flareon", "Jolteon", "Umbreon", "Espeon"},    ["Poliwhirl"] = {"Poliwrath", "Politoed"},    ["Gloom"] = {"Vileplume", "Bellossom"},    ["Slowpoke"] = {"Slowbro", "Slowking"},    ["Tyrogue"] = {"Hitmonlee", "Hitmonchan", "Hitmontop"},}function doCorrectString(str)                        --Slicer    local name = str:explode(" ")    local final = {}    for _, s in ipairs(name) do        table.insert(final, s:sub(1, 1):upper()..s:sub(2, #s):lower())    end    return table.concat(final, (name[2] and " " or ""))end   function onSay(cid, words, param)    local pokeball = getPlayerSlotItem(cid, 8)        if pokeball.uid == 0 or #getCreatureSummons(cid) == 0 then        doPlayerSendCancel(cid, "First, summon your pokemon.")        return true    elseif #getCreatureSummons(cid) > 1 then        return true    elseif getCreatureCondition(getCreatureSummons(cid)[1], CONDITION_INVISIBLE) then        return true    end        local ref = getCreatureSummons(cid)[1]    local new_poke = specialevo[getCreatureName(ref)] and doCorrectString(param) or poevo[getCreatureName(ref)] and poevo[getCreatureName(ref)].evolution        if (specialevo[getCreatureName(ref)] and not isInArray(specialevo[getCreatureName(ref)], new_poke)) or not new_poke then        doPlayerSendCancel(cid, "This evolution doesn't exist.")        return true    elseif getPlayerLevel(cid) < pokes[new_poke].level then        doPlayerSendCancel(cid, "You need to be level "..pokes[new_poke].level.." to evolve your pokemon.")        return true    end                doEvolvePokemon(cid, ref, new_poke)    doItemSetAttribute (pokeball.uid, "addon", 0)    doItemSetAttribute(pokeball.uid, "morta", "no")    doItemSetAttribute(pokeball.uid, "Icone", "yes")        doTransformItem(pokeball.uid, icons[getItemAttribute(pokeball.uid, "poke")].use)    return trueend

Tag:

<talkaction words="/evolve" event="script" value="nome_do_arquivo.lua"/>

 

Em data/lib, level system.lua:

No código da função:

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

Troque todos os:

item2.uid

por apenas:

item2

Depois, remova as seguintes linhas:

doPlayerRemoveItem(cid, stone1, 1)doPlayerRemoveItem(cid, stone2, 1)

 

 

PS: Você não disse qual a forma que a evolução de pokémons como Eevee e Tyrogue será escolhida, então coloquei como uma opção no comando.

 

Por exemplo:

/evolve                         --Para evoluir um pokémon "normal"./evolve nome_da_evolução        --Para pokémons como Eevee, Gloom, etc.--> /evolve Bellossom    /evolve Hitmonlee

 

Link para o comentário
Compartilhar em outros sites

  • 0
3 horas atrás, zipter98 disse:

 

Tag:

<talkaction words="/evolve" event="script" value="nome_do_arquivo.lua"/>

 

Em data/lib, level system.lua:

 

Troque todos os:

item2.uid

por apenas:

item2

Depois, remova as seguintes linhas:

doPlayerRemoveItem(cid, stone1, 1)doPlayerRemoveItem(cid, stone2, 1)

 

 

PS: Você não disse qual a forma que a evolução de pokémons como Eevee e Tyrogue será escolhida, então coloquei como uma opção no comando.

 

Po

 

 

bom a forma é essa no caso é pro castform

aqui esta a spell que tentei fazer

 

Spoiler

elseif spell == "Transform" then

        local theevo = ""

        local ball = getPlayerSlotItem(cid, 8).uid

        local evolution = 0

 if getPokemonName(ball.uid) == "Castform" then 
        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)

        

irei testar amanhã e volto aqui

so uma duvida.

se eu trocar o item2.uid Por item2 a action continuara a funcionar?? pois n quero tirar a action essa evolução servira para apenas 2 pokemons

 

acredito que sera preciso criar outra função para que não afete a action.

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

  • 0

Ah, pensei que você quisesse que a talkaction substituísse a action. 

Então, você quer uma spell que transforme permanentemente apenas certos pokémon?

Se possível, especifique seu pedido.

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

  • 0
2 horas atrás, zipter98 disse:

Ah, pensei que você quisesse que a talkaction substituísse a action. 

Então, você quer uma spell que transforme permanentemente apenas certos pokémon?

Se possível, especifique seu pedido.

ISSO MESMO, QUERO UMA SPELL QUE TRANSFORME (EVOLUA) CERTOS POKEMONS

 

o pokemon é o castform ele tem 4 formas elementais

NORMAL - Castform

FOGO     - Fire Castform

AGUA     - Water Castform

GELO     - Ice Castmorm

 

quero colocar a spell no m11 que ao usar ele evolua mudando de forma elemental 

as evoluções seriam de...

CASTFORM PARA FIRE CASTFORM

FIRE CASTFORM PARA WATER CASTFORM

WATER CASTFORM PARA ICE CASTFORM

E ICE CASTFORM PARA CASTFORM

 

UMA EVOLUÇÃO INFINITA MAS NA VERDADE ELE ESTARIA APENAS TROCANDO DE FORMA

 

essa spell funcionaria parecido com a action que postei porem nem necessidade de itens

e caso n seja possivel fazer a spell poderia ser uma talkaction

 

 

postei a action para que sirva de base pois n quero retira-la 

 

eu tentei fazer a spell mas n funcionou eu vou postar ela novamente abaixo para que veja ate que ponto cheguei

 

 

 

 

AQUI ESTA A SPELL QUE TENTEI FAZER

 

Spoiler

elseif spell == "Transform" then

        local theevo = ""

        local ball = getPlayerSlotItem(cid, 8).uid

        local evolution = 0

 if getPokemonName(ball.uid) == "Castform" then 
        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)

 

 

 

 

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

  • 0

Posso fazer esse da PxG depois de terminar o pedido do wevertonvrb. É um código bem simples, na verdade.

 

@wevertonvrb

Estas formas seriam temporárias, certo? Como funcionaria a escolha da forma elemental? A nova forma poderia se transformar em outra? Se sim, como?

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

  • 0

 

1 hora atrás, zipter98 disse:

Posso fazer esse da PxG depois de terminar o pedido do wevertonvrb. É um código bem simples, na verdade.

 

@wevertonvrb

Estas formas seriam temporárias, certo? Como funcionaria a escolha da forma elemental? A nova forma poderia se transformar em outra? Se sim, como?

QUERO UMA SPELL QUE TRANSFORME (EVOLUA) CERTOS POKEMONS

o pokemon é o castform ele tem 4 formas elementais
NORMAL - Castform
FOGO     - Fire Castform
AGUA     - Water Castform
GELO     - Ice Castmorm

quero colocar a spell no m11 que ao usar ele evolua mudando de forma elemental 
as evoluções seriam de...
CASTFORM PARA FIRE CASTFORM
FIRE CASTFORM PARA WATER CASTFORM
WATER CASTFORM PARA ICE CASTFORM
E ICE CASTFORM PARA CASTFORM

UMA EVOLUÇÃO INFINITA MAS NA VERDADE ELE ESTARIA APENAS TROCANDO DE FORMA

 

 

 

 

 

TODOS OS CASTFORMS TERIAM ESSA SPELL NO M11 E CADA FORMA TRANSFORMARIA EM OUTRA E ASSIM SUCESSIVAMENTE .
AS FORMAS SERÃO PERMANENTE ATE QUE SE USE A SPELL NOVAMENTE PARA ALTERA-LA

@zipter98

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

  • 0
22 horas atrás, zipter98 disse:
elseif spell == "Transform" then    local config = {        forms = {"Castform", "Fire Castform", "Water Castform", "Ice Castform"},    --Formas, na ordem de transformação.        effects = {            ["water"] = xxx,                                                        --["elemento_primário_da_nova_forma"] = efeito_na_transformação,            ["ice"] = xxx,            ["fire"] = xxx,        }    }        if not isSummon(cid) then return true end        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 = getThingPos(cid)        local oldlod = getCreatureLookDir(cid)        doRemoveCreature(cid)        doSummonMonster(owner, newPoke)        local pk = getCreatureSummons(owner)[1]        doTeleportThing(pk, oldpos, false)        doCreatureSetLookDir(pk, oldlod)        adjustStatus(pk, pokeball, true, false)        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]    local p = getPlayerSlotItem(getCreatureMaster(cid), 8)    if not next_form then next_form = config.forms[1] elseif not p then return true end        fakeEvolution(cid, next_form, p.uid)

 

funcionou perfeitamente porem não esta funcionando com os castform selvagens, eles usa mas não transforma sera que pode ver isso?? desde ja mt obrigado man

Link para o comentário
Compartilhar em outros sites

  • 0

Ah, eu programei apenas para Castforms de jogadores.

Vou editar para os selvagens também.

 

Pronto, editado para Castforms selvagens.

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

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