Ir para conteúdo

[Mini - Tuto]Entenda O Funcionamento De Um Otserv Pokemon


caotic

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
Compartilhar em outros sites

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