Ir para conteúdo

[Encerrado] [Encerrado] spell por atributo do item


Posts Recomendados

então eu gostaria de uma spell que verifique o atributo da pokeball (no caso pokeball serve como bota equipada)
exemplo
eu irei usar a spell
"Mega Destruction"

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

 

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

 

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

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

 

@zipter98

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

12 horas atrás, klipstyle disse:

Para verificar os atributos use.

getItemAttribute(pb.uid, "atributo")

 

 

 

 

fiz assim, mas deu erro no move 1.lua

Spoiler

elseif spell == "Mega Destruction" then   

local pb = getPlayerSlotItem(cid, 8)

if (getItemAttribute(pb.uid, "megaspell1") == 1) then

        spell = "Leaf Storm"

end

 

 

 erro

Spoiler

 

[13/07/2017 21:50:12] [Error - TalkAction Interface] 

[13/07/2017 21:50:12] data/talkactions/scripts/move1.lua:onSay

[13/07/2017 21:50:12] Description: 

[13/07/2017 21:50:12] (luaGetPlayerSlotItem) Player not found

[13/07/2017 21:50:12] [Error - TalkAction Interface] 

[13/07/2017 21:50:12] data/talkactions/scripts/move1.lua:onSay

[13/07/2017 21:50:12] Description: 

[13/07/2017 21:50:12] (luaGetItemAttribute) Item not found

 

 

 

 

 

Move1.lua

Spoiler

local msgs = {"use ", ""}

function doAlertReady(cid, id, movename, n, cd)

if not isCreature(cid) then return true end

local myball = getPlayerSlotItem(cid, 8)

if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") is ready!")

return true

end

local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)

if not p or #p <= 0 then return true end

for a = 1, #p do

if getItemAttribute(p[a], cd) == "cd:"..id.."" then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") is ready!")

return true

end

end

end

function onSay(cid, words, param, channel)

if param ~= "" then return true end

if string.len(words) > 3 then return true end

if #getCreatureSummons(cid) == 0 then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.")

return 0

end

local mypoke = getCreatureSummons(cid)[1]

if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end

if getCreatureName(mypoke) == "Evolution" then return true end

if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then

name = getPlayerStorageValue(mypoke, 1010)   --edited

else

name = getCreatureName(mypoke)

end  

local it = string.sub(words, 2, 3)

local idd = getPlayerSlotItem(cid, 8).uid

local move = (getCreatureName(mypoke) == "Smeargle" and getItemAttribute(idd, "skt1") and movestable[getItemAttribute(idd, "skt1")].move1 or movestable[name].move1) or (getCreatureName(mypoke) == "Shiny Smeargle" and getItemAttribute(idd, "skt1") and movestable[getItemAttribute(idd, "skt1")].move1 or movestable[name].move1)

if getPlayerStorageValue(mypoke, 212123) >= 1 then

cdzin = "cm_move"..it..""

else

cdzin = "move"..it..""

end

if it == "2" then

if getItemAttribute(idd, "skt2") then  

move = movestable[getItemAttribute(idd, "skt2")].move2

else

move = movestable[name].move2

end

elseif it == "3" then

if getItemAttribute(idd, "skt3") then  

move = movestable[getItemAttribute(idd, "skt3")].move3

else

move = movestable[name].move3

end  

elseif it == "4" then

if getItemAttribute(idd, "skt4") then  

move = movestable[getItemAttribute(idd, "skt4")].move4

else

move = movestable[name].move4

end 

elseif it == "4" then

if getItemAttribute(idd, "skt4") then  

move = movestable[getItemAttribute(idd, "skt4")].move4

else

move = movestable[name].move4

end 

elseif it == "5" then

if getItemAttribute(idd, "skt5") then  

move = movestable[getItemAttribute(idd, "skt5")].move5

else

move = movestable[name].move5

end 

elseif it == "6" then

if getItemAttribute(idd, "skt6") then  

move = movestable[getItemAttribute(idd, "skt6")].move6

else

move = movestable[name].move6

end 

elseif it == "7" then

if getItemAttribute(idd, "skt7") then  

move = movestable[getItemAttribute(idd, "skt7")].move7

else

move = movestable[name].move7

end 

elseif it == "8" then

if getItemAttribute(idd, "skt8") then  

move = movestable[getItemAttribute(idd, "skt8")].move8

else

move = movestable[name].move8

end 

elseif it == "9" then

move = movestable[name].move9

elseif it == "10" then

move = movestable[name].move10

elseif it == "11" then

move = movestable[name].move11

elseif it == "12" then

move = movestable[name].move12

elseif it == "13" then

move = movestable[name].move13

end 

if not move then

local isMega = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "megaStone")

if not isMega or name:find("Mega") then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")

return true

end

local moveTable, index = getNewMoveTable(movestable[name]), 0

for i = 1, 12 do

if not moveTable then

index = i

break

end

end

if tonumber(it) ~= index then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")

return true

end

local needCds = false                   --Coloque false se o pokémon puder mega evoluir mesmo com spells em cooldown.

if needCds then

for i = 1, 12 do

if getCD(getPlayerSlotItem(cid, 8).uid, "move"..i) > 0 then

return doPlayerSendCancel(cid, "para mega evoluir os cds do pokemon devem estar carregados.")

end

end

end

move = {name = "Mega Evolution", level = 0, cd = 0, dist = 1, target = 0, f = 0, t = "?"}

end

if getPlayerLevel(cid) < move.level then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need be atleast level "..move.level.." to use this move.")

return true

end

if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." seconds to use "..move.name.." again.")

return true

end

if getTileInfo(getThingPos(mypoke)).protection then

doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.")

return true

end

if getPlayerStorageValue(mypoke, 3894) >= 1 then

return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v1.3

end

if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then       

doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!")

return true

end

if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) then 

local target = getCreatureTarget(cid)                                                                                       

if math.random(1, 100) <= passivesChances["Evasion"][getCreatureName(target)] then 

if isCreature(getMasterTarget(target)) then   --alterado v1.6                                                                   

doSendMagicEffect(getThingPos(target), 211)

doSendAnimatedText(getThingPos(target), "TOO BAD", 215)                                

doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false)

doSendMagicEffect(getThingPos(target), 211)

doFaceCreature(target, getThingPos(mypoke))            

return true       --alterado v1.6

end

end

end

if move.target == 1 then

if not isCreature(getCreatureTarget(cid)) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don\'t have any targets.")

return 0

end

if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then

return 0

end

if getCreatureHealth(getCreatureTarget(cid)) <= 0 then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your have already defeated your target.")

return 0

end

if not isCreature(getCreatureSummons(cid)[1]) then

return true

end

if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.")

return 0

end

if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then

return 0

end

end

local newid = 0

if isSleeping(mypoke) or isSilence(mypoke) then  --alterado v1.5

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.")

return 0

else

newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd)

end

local spellMessage = msgs[math.random(#msgs)]..""..move.name.."!"

if move.name == "Mega Evolution" then

spellMessage = "Mega Evolve!"

end

doCreatureSay(cid, getPokeName(mypoke)..", "..spellMessage, TALKTYPE_SAY)

local summons = getCreatureSummons(cid) --alterado v1.6

addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin)

for i = 2, #summons do

if isCreature(summons) and getPlayerStorageValue(cid, 637501) >= 1 then

docastspell(summons, move.name)        --alterado v1.6

end

end 

docastspell(mypoke, move.name)

doCreatureAddCondition(cid, playerexhaust)

if useKpdoDlls then

doUpdateCooldowns(cid)

end

return 0

end

 

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

se você esta editando pokemon moves.lua

cid = pokemon

use desta maneira.

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

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

Em 14/07/2017 at 16:22, klipstyle disse:

se você esta editando pokemon moves.lua

cid = pokemon

use desta maneira.

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

 

script ficou assim

Spoiler

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

 e deu o mesmo erro
 

Spoiler

 

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

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

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

 

 

o move1.lua eu ja postei acima


deste jeito ela esta funcionando porem apenas o ADM pode usar 

PARA FUNCIONAR ELA DEVE ESTAR REGISTRADA
NO SPELLS.XML
COM A SEGUINTE TAG, ALEM DISSO ELE N PODE TER UM NOME, E NEM ESTAR REGISTRADO NO POKEMON MOVES.LUA
<instant name="" words="megaspell1" lvl="1" mana="0" aggressive="1" event="script" exausted="100" value="megaspell1.lua"></instant>

Spoiler

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

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

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

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

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

return true
end






uma coisinha, eu gostaria de saber como eu coloco isso no pokemon moves.lua
exemplo: 
elseif spell == "Mega Destruction" then   

doCreatureSay(cid, "chuva de pétalas") ---sendo que quem deve dizer chuva de pétalas é o player e não o pokemon, do jeito que eu coloquei é o pokemon quem diz isso

@klipstyle

 

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

  • 2 weeks later...
Em 14/07/2017 at 19:43, Weverton Siri disse:

 

script ficou assim

  Ocultar conteúdo

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

 e deu o mesmo erro
 

  Mostrar conteúdo oculto

 

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

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

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

 

 

o move1.lua eu ja postei acima


deste jeito ela esta funcionando porem apenas o ADM pode usar 

PARA FUNCIONAR ELA DEVE ESTAR REGISTRADA
NO SPELLS.XML
COM A SEGUINTE TAG, ALEM DISSO ELE N PODE TER UM NOME, E NEM ESTAR REGISTRADO NO POKEMON MOVES.LUA
<instant name="" words="megaspell1" lvl="1" mana="0" aggressive="1" event="script" exausted="100" value="megaspell1.lua"></instant>

  Mostrar conteúdo oculto

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

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

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

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

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

return true
end






uma coisinha, eu gostaria de saber como eu coloco isso no pokemon moves.lua
exemplo: 
elseif spell == "Mega Destruction" then   

doCreatureSay(cid, "chuva de pétalas") ---sendo que quem deve dizer chuva de pétalas é o player e não o pokemon, do jeito que eu coloquei é o pokemon quem diz isso

@klipstyle

 


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

Link para o comentário
Compartilhar em outros sites

  • 4 months later...
Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...