Ir para conteúdo
  • Cadastre-se

(AJUDA) POKEMON MOVES (talkaction)


Posts Recomendados

E ai pessoal to precisando de uma ajuda, resumindo tudo eu tenho um ot pokemon(lunus) e quero fazer os moves de "ataque" diferente.

 

Explicando:

 

Quando você usa uma habilidade por exemplo "m1" o pokemon ataca e logo depois o aparece a mensagem que a magia(m1) está carregada, até ai ok.

 

Porem eu queria que após a mensagem aparecesse ou seja a magia podesse ser usada novamente, o pokemon usasse a magia novamente como se fosse um bot, o proposito disso é fazer o jogo ficar mais divertido.

 

Vou colocar minha talkaction aki embaixo \/:

 

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
 
if getCreatureCondition(getCreatureSummons(cid)[1], CONDITION_INVISIBLE) and not isGhostPokemon(getCreatureSummons(cid)[1]) then
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
 
local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke)
 
local it = string.sub(words, 2, 3)
local move = movestable[name].move1
local cdzin = "move"..it..""
 
if it == "2" then
move = movestable[name].move2
elseif it == "3" then
move = movestable[name].move3
elseif it == "4" then
move = movestable[name].move4
elseif it == "5" then
move = movestable[name].move5
elseif it == "6" then
move = movestable[name].move6
elseif it == "7" then
move = movestable[name].move7
elseif it == "8" then
move = movestable[name].move8
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
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
return true
end
 
if false and getLevel(mypoke) < move.level then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't have enough level to use this move.")
return 0
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 this move again.")
return 0
end
 
if getTileInfo(getThingPos(mypoke)).protection then
doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.")
return 0
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
 
doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY)
 
local newid = 0
 
if isSleeping(mypoke) then
newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, 8)
doCreatureSay(mypoke, "zZzZ", TALKTYPE_MONSTER)
return 0
else
newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd)
end
 
if move.name ~= "Metronome" then
doCreatureSay(mypoke, ""..string.upper(move.name).."!", TALKTYPE_MONSTER)
end
 
addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin)
docastspell(mypoke, move.name)
doCreatureAddCondition(cid, playerexhaust)
 
if useKpdoDlls then
doUpdateCooldowns(cid)
end
 
return 0
end

 

 

 

Eu tentei criar dois function doAlertReady(cid, id, movename, n, cd)

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

Até funcionou mas por algum motivo todas abilidades repetiam o m1 ou seja:

Eu usava m1, o "bot" usava m1, eu usava m2 o "bot usava m1.

 

Bom é isso, obrigado desde já.!!

 

 

 


Outra tentativa:

 

 

function doAlertReady(cid, id, movename, n, cd, mypoke)
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!")                      
doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..movename.."!", TALKTYPE_SAY)
docastspell(mypoke, movename)
doCreatureAddCondition(cid, playerexhaust)
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
 

 
Eu to tentando entender como funciona esse parâmetros dentro das funções :P
 
Dessa vez ele usa novamente o ataque mas falta muito para completa-lo. Ainda falta setar o cooldown denovo da habilidade e criar talvez mais um addEvent para usar a habilidade denovo, se alguem tiver uma ideia agradeço. :)
 
 
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo