Postado Dezembro 25, 2012 12 anos Este é um post popular. 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 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. 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 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 PokemonsEstes 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 Creditos: Caotic 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 Meu Ultimo projeto em desenvolvimento! http://www.tibiaking.com/forum/topic/47753-show-off-ultimo-projeto-para-download/ Grupo do facebook para OtServidores! (Divulgação + Criação de Equipe) https://www.facebook.com/groups/otservidores/
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.