Ir para conteúdo
  • 0

transformar action em spell


wevertonvrb

Pergunta

então eu quero fazer uma action virar uma spell

 

Tentando fazer cheguei nisso mas n deu certo

lembrando que o erro relacionado ao pokemon moves
é esse script também 
 

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                  --alterado v1.9 \/ peguem ele todo!

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

essa é a função da evolução

Spoiler

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


espero que alguem possa me ajudar obg desde ja




@Poccnn se puder dar uma olhada tb te agradeço mt
aé eu to meio q intermediário nos script já, vc é um otimo professor +/_ rsrsrs

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

12 respostass a esta questão

Posts Recomendados

  • 0

O erro se encontra aqui:

Citar

local ball = getPlayerSlotItem(cid, 8).uid

retire o ".uid" do final da função. 

 

Na questão da spell, não faço a menor idéia de como funciona spell para servidores derivados. 

 

Writen in color pink? Wtf!

Link para o comentário
Compartilhar em outros sites

  • 0

O problema é que ele não está conseguindo encontrar o player

(luaGetPlayerSlotItem) Player not found

 

Troque 

local ball = getPlayerSlotItem(cid, 8).uid

por 

local ball = getPlayerSlotItem(getCreatureMaster(cid), 8)

 

Link para o comentário
Compartilhar em outros sites

  • 0
5 horas atrás, Drakopoulos disse:

O problema é que ele não está conseguindo encontrar o player

(luaGetPlayerSlotItem) Player not found

 

Troque 

local ball = getPlayerSlotItem(cid, 8).uid

por 

local ball = getPlayerSlotItem(getCreatureMaster(cid), 8)

 

com essa troca gera um erro  ainda maior

 

Spoiler

[Error - TalkAction Interface] 

[16/11/2016 20:20:55] data/talkactions/scripts/move1.lua:onSay

[16/11/2016 20:20:55] Description: 

[16/11/2016 20:20:55] (luaGetCreatureName) Creature not found

[16/11/2016 20:20:55] [Error - TalkAction Interface] 

[16/11/2016 20:20:55] data/talkactions/scripts/move1.lua:onSay

[16/11/2016 20:20:55] Description: 

[16/11/2016 20:20:55] (luaGetCreatureName) Creature not found

[16/11/2016 20:20:56] [Error - TalkAction Interface] 

[16/11/2016 20:20:56] data/talkactions/scripts/move1.lua:onSay

[16/11/2016 20:20:56] Description: 

[16/11/2016 20:20:56] (luaGetCreatureName) Creature not found

[16/11/2016 20:20:56] [Error - TalkAction Interface] 

[16/11/2016 20:20:56] data/talkactions/scripts/move1.lua:onSay

[16/11/2016 20:20:56] Description: 

[16/11/2016 20:20:56] (luaGetCreatureName) Creature not found

[16/11/2016 20:20:56] [Error - TalkAction Interface] 

[16/11/2016 20:20:56] data/talkactions/scripts/move1.lua:onSay

[16/11/2016 20:20:56] Description: 

[16/11/2016 20:20:56] (luaGetPlayerSlotItem) Player not found

[16/11/2016 20:20:56] [Error - TalkAction Interface] 

[16/11/2016 20:20:56] data/talkactions/scripts/move1.lua:onSay

[16/11/2016 20:20:56] Description: 

[16/11/2016 20:20:56] (luaGetPlayerSlotItem) Player not found

[16/11/2016 20:20:56] [Error - TalkAction Interface] 

[16/11/2016 20:20:56] data/talkactions/scripts/move1.lua:onSay

[16/11/2016 20:20:56] Description: 

[16/11/2016 20:20:56] data/lib/level system.lua:145: attempt to index field '?' (a nil value)

[16/11/2016 20:20:56] stack traceback:

[16/11/2016 20:20:56]     data/lib/level system.lua:145: in function 'doEvolvePokemon'

[16/11/2016 20:20:56]     data/lib/pokemon moves.lua:295: in function 'docastspell'

[16/11/2016 20:20:56]     data/talkactions/scripts/move1.lua:235: in function <data/talkactions/scripts/move1.lua:20>

essa é a linha 145 do level system que tambem esta citado acima como função da evolução

 

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) -- linha 145

    return true

    end

10 horas atrás, Poccnn disse:

O erro se encontra aqui:

retire o ".uid" do final da função. 

 

Na questão da spell, não faço a menor idéia de como funciona spell para servidores derivados. 

 

Writen in color pink? Wtf!

man voce ja me ajudou bastante com coisas bem complicadas sou mt grato

 

eu postei a função da evolução acima junto com o script q rode ela, por favor deh uma olhadinha pra mim, caso n seja possivel criar uma spell crie uma talkaction que ne seja necessario os itens acredito que o erro seja por que a a função pede itens e o spell n  deh uma olhada pra mim pff

talvez seja ate necessario criar uma nova funcão que n pessa esses itens

 

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

  • 0
Em 23/11/2016 at 23:33, kttallan disse:

Cara né mais facil você fazer a spell PELO POKEMON MOVES e colocar condições nela?

é oque eu tentei fazer ate disponibilizei ate onde cheguei, sera q pode dar uma ajudinha?

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

×
×
  • Criar Novo...