Weverton Siri 0 Postado Julho 12, 2017 Share Postado Julho 12, 2017 (editado) 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 Julho 12, 2017 por Weverton Siri Link para o comentário Compartilhar em outros sites More sharing options...
klipstyle 13 Postado Julho 13, 2017 Share Postado Julho 13, 2017 Para verificar os atributos use. getItemAttribute(pb.uid, "atributo") Link para o comentário Compartilhar em outros sites More sharing options...
Weverton Siri 0 Postado Julho 14, 2017 Autor Share Postado Julho 14, 2017 (editado) 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 Julho 14, 2017 por Weverton Siri Link para o comentário Compartilhar em outros sites More sharing options...
klipstyle 13 Postado Julho 14, 2017 Share Postado Julho 14, 2017 (editado) se você esta editando pokemon moves.lua cid = pokemon use desta maneira. local pb = getPlayerSlotItem(getCreatureMaster(cid), 8) Editado Julho 14, 2017 por klipstyle Link para o comentário Compartilhar em outros sites More sharing options...
Weverton Siri 0 Postado Julho 14, 2017 Autor Share Postado Julho 14, 2017 (editado) 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 Julho 18, 2017 por Weverton Siri Link para o comentário Compartilhar em outros sites More sharing options...
Crypter 136 Postado Julho 26, 2017 Share Postado Julho 26, 2017 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 More sharing options...
Stigal 584 Postado Novembro 29, 2017 Share Postado Novembro 29, 2017 A questão neste tópico de suporte foi encerrada por falta de resposta. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta. Link para o comentário Compartilhar em outros sites More sharing options...
Stigal 584 Postado Novembro 29, 2017 Share Postado Novembro 29, 2017 A questão neste tópico de suporte foi encerrada por falta de resposta. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados