- 0
suporte scripts (resolvido) alguém pode criar uma spell a partir dessa action por favor?
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.
-
Conteúdo Similar
-
- 2 respostas
- 945 visualizações
-
- 13 respostas
- 11776 visualizações
-
- 0 respostas
- 1705 visualizações
-
- 20 respostas
- 13339 visualizações
-
- 40 respostas
- 14846 visualizações
-
Pergunta
wevertonvrb 25
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
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
[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
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,
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
local msgs = {"use ", ""}
function doAlertReady(cid, id, movename, n, cd)
if not isCreature(cid) then return true end
local myball = getPlayerSlotItem(cid,
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
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,
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),
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
Link para o comentário
Compartilhar em outros sites
24 respostass a esta questão
Posts Recomendados