Fala galera do TK tudo belezura? Espero que sim com todo mundo...
Peço caridosamente a moderação que me mova para a área correta caso eu tenha feito o post no lugar errado. ??
Bom o que eu vim trazer na faixa para vocês é um sistema onde o jogador vai poder ter um PET que vai subindo até certo level e com isso vai ganhando mais força.
Eu me baseei no sistema desse amiguinho aqui:
@PsyMcKenzie
Link para o Post do amiguinho. Onde eu vi que tava muito legal mas estavam faltando algumas verificações.
Demorei para fazer esses scripts e toda a lógica mexendo apenas 2 horas por dia, por isso vou dar um alert:
<<<< -------------------- >>>>
"PAM: não me peça para mudar scripts ou adaptar de algum jeito pois eu não vou ter muito tempo para atender pedidos. Vou postar do jeito que está funcionando e se por acaso precisar de ajuste, peço para que outros scripters dêem a devida atenção. Obrigado pela compreensão amiguinhos ?"
<<<< -------------------- >>>>
Vamos lá, saiba que você vai ter que alterar várias partes de vários fontes, então deixa de preguiça e coloque a mão na massa...
Espero que esse script incentive a continuação e aperfeiçõamento de mais desenvolvedores a trabalhar com a nossa comunidade.
Na sua pasta de Movements Ex.: "Pasta do Ot Sever\data\movements" no arquivo movements.xml acrescente essas 2 tags:
Na pasta scripts dentro da pasta Movements Ex.: "Pasta do Ot Server\data\movements\scripts" crie um arquivo com nome equippet.lua e cole isso dentro do arquivo
Na pasta Actions Ex.: "Pasta do Ot Server\data\actions" no arquivo actions.xml cole a TAG:
Na pasta Scripts em Actions Ex.: "Pasta do Ot Server\data\actions\scripts" crie um arquivo chamado catchpet.lua e cole isso dentro:
Na pasta creaturescripts Ex.: "Pasta do Ot Server\data\creaturescripts" no arquivo creaturescripts.xml cole a TAG:
No arquivo dentro da pasta Scripts em CreatureScripts Ex.: "Pasta do Ot Server\data\creaturescripts\scripts" com o arquivo login.lua aberto, procure por "registerCreatureEvent" e adicione abaixo de qualquer um, a seguinte linha de comando:
Se o seu Ot server tiver o arquivo save.lua dentro da pasta de creaturescripts Ex.: "Pasta do Ot Server\creaturescripts\scripts\save.lua" você precisa adaptar o script abaixo para se adequar ao seu save.lua. caso seu ot server não tenha o arquivo save.lua apenas insira o script abaixo:
Na pasta Monster Ex.: "Pasta do Ot Server\data\monster" no arquivo monster.xml você vai precisar inserir as tags dos pets que for adicionando, por exemplo no meu caso eu criei 5 níveis de pet e você vai entender porque na explicação mais a frente.
Na pasta Scripts em Monster Ex.: "Pasta do Ot Server\data\monster\scripts" crie uma pasta chamada Pet e dentro dela o monstro deve ter o mesmo nome que está no arquivo "catchpet.lua" que criamos no começo do processo. Por exemplo no arquivo catchpet.lua que criamos o pet do Dragon Lord está definido como ["Dragon Lord Pet"] = {hp = 500, maxhp = 500, corpse = 7622, chance = 100, level = 0, experience = 0, basename = 'Dragon Lord Pet'} então o monstro deve ser Dragon Lord Pet seguido dos níveis: 0, 1, 2, 3, 4, 5, 6.
Por exemplo dentro da pasta "Pasta do Ot Server\data\monster\scripts\Pet" tem que ter os monstros DragonLord Pet0.xml, DragonLord Pet1.xml, DragonLord Pet2.xml, DragonLord Pet3.xml
----------------------------------
Na pasta lib Ex.: "Pasta do Ot Server\data\lib" acrescente no fim do arquivo 050-function.lua o script abaixo:
Obs.: Esse script foi feito pelo amiguinho @Orochi Elf e ficou espetacular, parabéns cara... eu só precisei remover o local da variável item pq quando o script verificava itens na BP e nos Slots estava fechando o servidor. Mas o crédito é todo dele, ótimo desenvolvedor sem dúvida.
Na pasta npc Ex.: "Pasta do Ot Server\data\npc" crie um arquivo com nome PetHealer.xml e acrescente o código abaixo:
Na pasta Scripts de npc Ex.: "Pasta do Ot Server\data\npc\scripts" crie um arquivo com nome pethealer.lua e acrescente o código abaixo:
Obs.: Esse script do TalkAlot não fui eu quem desenvolveu, foi alguém aqui do fórum mas tem muito tempo que eu peguei e uso e não lembro a quem devo os créditos, foi mal ai...
Execute essa query no seu banco de dados:
E agora finalmente a explicação do código:
Bom primeiramente o sistema inicial estava utilizando actions e não movements, mas eu resolvi colocar como movements para evitar um pouco de transtorno na lógica apesar de não ter evitado muito...
Bem, o sistema consiste em utilizar um item no corpse de um monstro morto para capturá-lo essa é a função do script: catchpet.lua
as definições de monstros que podem ser capturados estão no objeto
local mtrs = {
["Rat Pet"] = {hp = 500, maxhp = 1000, corpse = 2813, chance = 100, level = 0, experience = 0, basename = 'Rat Pet'},
["Dragon Lord Pet"] = {hp = 500, maxhp = 500, corpse = 7622, chance = 100, level = 0, experience = 0, basename = 'Dragon Lord Pet'}
}
Como podem ver o nome entre colchetes e o basename são iguais e tem que ser assim para não dar nenhum erro... o base name tem que ser o mesmo nome do monstro criado na pasta monster\Pet... na pasta como falei antes, o basename tem que ser acompanhado dos níveis no caso do Rat por exemplo, seria Rat Pet0.xml, Rat Pet1.xml, Rat Pet2.xml, até o nível que você determinar, esse sistema do jeito que está, habilita os pets até o nível 10.
Os pets são como summons, então coisas relacionadas a ATK, DEF, Magias que os pets tem, tem que ser configuradas no arquivo do monstro. Por exemplo se eu quiser que um Rat nível 2 use UE, vou configurar isso no XML Rat Pet2.xml
- hp e maxhp, são as configurações para o hp máximo e hp atual,
- chance é a chance em % que o player tem de capturar o monstro,
- corpse é o id do corpo que o player pode usar o item para capturar o monstro.
na linha de comando "local itemcatch = doPlayerAddItem(cid, 9980, 1, false, 1, 3) -- Cristal que contem o monstro." o id 9980 é o item que vai armazenar as informações do pet e isso você pode mudar sem a necessidade de mexer no items.xml.
Obs.: Lembrando que se esse id for alterado, você precisa verificar nos fontes onde mais ele faz referência para esse id, por exemplo no save.lua na pasta data\creaturescripts\scripts
Obs2.: não use itens stackáveis pois eles perdem a informação do pet quando você os movimenta, pelo menos nessa source que eu estou usando.
O itemid definido na tag actions.xml é o item que vai ser usado na captura do monstro.
No fonte do equippet.lua as informações cruciais são:
Toda vez que que o pet é equipado com sucesso, uma linha é gravada na database com o xp do player atualmente, e quando desequipado com sucesso, essa linha é removida, e a diferença de exp adiquirida é acrescentada no Pet.
Você pode alterar as condições de level do Pet dentro do método updateAttributes.
O arquivo save.lua só foi alterado para avaliar algumas condições antes do player deslogar caso ele esteja com o pet.
Para usar o pet, vc precisa estar com o item do pet capturado e colocar no slot da flecha, se as condições estiverem certas ele sumona o pet. Se o item for removido do slot e tiver com as condições corretas, ele remove o summon.
O sistema não tem muitos efeitos especiais pois acredito que isso é uma coisa particular de cada Host.
Se por acaso o pet for morto, o PetHealer pode trazê-lo de volta por uma quantia de 300k mas isso pode ser alterado no script é bem simples. Além disso o NPC PetHealer tem uma micro IA que explica como utilizar o Pet.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Bom, espero que vocês gostem do sistema, testem e me avaliem nos comentários se tiverem algum problema e se for útil para você, da um REP++ ai ?
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>