Ir para conteúdo

Posts Recomendados

poketibia.png

 

 

Ola pessoal estou neste tutorial para revelar todos os fundamentos de um otserv pokemon.

Quando eu desenvolvia otservs pokemons eu sempre utilizava de base o pokemon dash.

Pokemon dash foi criado pelo brun123 o mesmo criador do PDA.

Logo apos o lançamento do PDA o pokemon dash perdeu sua popularidade mais continua sendo umas melhoras opções para o desenvolvimento de um otserv pokemon.

 

Neste tutorial vamos ver com o pokemon dash utiliza LUA e como seu funcionamento e tão perfeito.

 

PokeBalls 23313_129883283690278_357_q.jpg

 

 

As pokebolas que são famosas bolas que guardam monstrinhos que podem ser soltos pelo treinador.

No seu otserv pokemon basicamente suas pokebolas são itens normais como atributos diferentes.

A função doItemSetAttribute(....) e a responsável pelo nome,vida e etc....

 

doItemSetAttribute(item, "poke", params.poke)
doItemSetAttribute(item, "nome", params.nome)
doItemSetAttribute(item, "description", params.description)
doItemSetAttribute(item, "description", "Contains a "..i.." +1.")
doItemSetAttribute(item, "nick", ""..i.."")
r1 = math.random(1,2)
if r1 == 1 then
doItemSetAttribute(item, "gender", 3)
end
if r1 == 2 then
doItemSetAttribute(item, "gender", 4)
end

 

 

Todos estes atributos são verificados durante a action do go/back e logo seu summon veem com características únicas.

 

Vamos ao exemplo do script que eu fiz usando as funções do executavel do PDA.

 

 

function onSay(cid, words, param, channel)

if(param == '') then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")

 

return true

end

 

local pk = getCreatureSummons(cid)[1]

local pokeball = getPlayerSlotItem(cid, 8)

local pkcmpos = getThingPos(getCreatureSummons(cid)[1])

if #getCreatureSummons(cid) == 0 then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Solte seu pokemon")

return true

end

 

doItemSetAttribute(pokeball.uid, "nick", ""..param.."")

doRemoveCreature(getCreatureSummons(cid)[1])

pk = doSummonCreature(getItemAttribute(pokeball.uid, "poke"):match("This is (.-)'s pokeball."), pkcmpos)

doConvinceCreature(cid, pk)

doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 12)

doPlayerSendTextMessage(cid,27, "Parabens voce colocou um novo nick seu nick nove e "..param.."." )

doCreatureSetNick(getCreatureSummons(cid)[1],""..getItemAttribute(pokeball.uid, "nick").."")

doCreatureSetSkullType(pk, getItemAttribute(pokeball.uid, "gender"))

return true

end

 

 

Summons pok311.gif?w=50&h=50

 

 

Incrivelmente os summons foi uma etapa fácil para a criação dos sistema dos pokemons porque tibia já acompanha funções para summonar

 

getCreatureMaster(cid)
getCreatureSummons(cid)
doSummonCreature(name, pos)
doRemoveCreature(cid[, executeLogout = true])

 

 

Estas funções foram muito importante para que seu otserv pokemon ser construído.

A manipulação das funções e de fácil utilização mais precisa tomar algumas precações.

A função getCreatureSummons(cid) verifica TODOS os summons do player então precisamos usar # ou uma estrutura de repetição tal como for.

 

Vamos verificar se o player tem pelo menos um summon:

for _,summon in pairs(getCreatureSummons(cid)) do
if summon > 0 then
.....
return true
end

 

if #getCreatureSummons(cid)) > 0 then
....
return true
end

 

Habilidades Pokemons dpiconani006d.gif

 

 

Não foi um grande desafio criar o order sytem mais a quantidade de habilidades custo algumas horas de trabalhos.

Os famosos ride e fly foram criados usando funções tibianas o que acontece e que quando o order e clicado no player acontece uma rápida troca de outfit e a colocação de algumas storages.

Light/Rock Smash/Cut e Ditto são sistema secundários do order sytem.

 

Todas essa habilidades foram feitas em apenas uma action.

Na action do order existe varias verificações do item2 tais como itemID,Monstro e Player.

O order sytem e um desafio para a edição pois a retirada de apenas uma storage pode bugar o sistema completamente.

 

Moves Pokemonsmew_hgss.png

 

Estes foram complicados e estão ate hoje em evolução.

São muitos ataques de pokemons e diferentes de tibia os ataques foram todos construindo em talkactions separados com (m1,m2,m3,m4,m5,m6,m7,m8,m9,10,m11,m12).

Foram utilizados funções para mandar efeitos e retirar danos

 

doAreaCombatHealth(....)
doSendMagicEffect(...)

 

Tabelas

 

local flamen = createCombatArea{
{0, 0, 2, 0, 0},
{0, 1, 1, 1, 0},
{0, 1, 1, 1, 0},
{0, 1, 1, 1, 0},
{0, 0, 0, 0, 0}
}

 

[6] = {x = {
  pok = wartortle,
  spell = "Bubbles",
  minLv = 20,
  ex = 8000002,
  base1 = 120,
  base2 = 135,
  dista = 4,
  bonus = 4.2,
  type = "water",
  cd = 8
   }
  }

 

 

Para os iniciantes a edição de tal script foi um pouco complicado.

Suas variáveis foram todas colocadas em tabelas deixando o script um pouco mais leve.

 

 

O script e ainda maior do que o order sytem

Link para o comentário
https://xtibia.com/forum/topic/196333-mini-tutoentenda-o-funcionamento-de-um-otserv-pokemon/
Compartilhar em outros sites

  • 2 months later...
×
×
  • Criar Novo...