Ir para conteúdo

Pet System OOP


Oneshot

Posts Recomendados

Descobri o que houve era o arquivo pet trainer.lua que eu tinha escrito de maneira errada.

Consegui colocar ele no mapa, porém ele não vende o pet, o que devo fazer?

 

Eu escrevo "sell", mas não acontece nada. Agora se eu escrever Revive ele diz "You don't have a pet".

Link para o comentário
Compartilhar em outros sites

Instalei sim, creio que tudo.

Sobre a questão de colocar:

 

 

<script>

<event name="PetDeath"/>

</script>

 

eu posso colocar em qualquer parte do monstro?

e o monstro continua no lugar de sempre? (data\monster) ?

 

 

SERVIDOR: Real Server 3.1

Link para o comentário
Compartilhar em outros sites

Sim em qualquer parte do XML do monstro e sim dentro da pasta data\monster.

Não pode esquecer de verificar se está assim também :

 

 

<flag convinceable="1"/>

Link para o comentário
Compartilhar em outros sites

E incrível o sistema

Você manipula a criatura de um jeito espetacular salvando a criatura com o pet:setit

A única coisa chata seria as storages.

 

 

Mais ta incrível

Parabéns.

 

Então, cara, eu até fiz enquanto na fase de desenvolvimento por querys na database. O problema é que se toda hora eu tenho que salvar o pet na database e obter dados dela, acabei notando o pequeno lag que se criava na execução dos comandos, aí fiz por storage.

 

Obrigado a todos.

 

Eu não li o código (muito extenso), apenas tenho uma ideia de como ele funciona, então posso estar falando uma grande besteira, mas vamos lá...

 

Storages são armazenadas no banco de dados da mesma forma que seria se você criasse uma tabela especifica para os pets, então teoricamente (e provavelmente também na prática) o custo de salvar as informações é exatamente o mesmo. A diferença é quando salvar essas informações.

 

Se toda vez que você alterasse a storage de um player alterasse diretamente no banco de dados, o custo seria bem mais alto. Da mesma forma aconteceria se você alterasse a tabela de pets diretamente.

 

O motivo das storages serem mais rápidas é porque quando você altera uma storage, o banco de dados não é alterado imediatamente. A informação só é trocada na memória do servidor, de uma forma crua e rápida, e só é transmitida definitivamente ao banco de dados quando o player é salvo (quando é executado um save automático, quando o player sai do jogo, ou quando o servidor é fechado).

 

Agora que já está tudo feito por storages, não compensa alterar só por esse detalhe, mas uma coisa interessante de se fazer seria sobrecarregar (no sentido Lua) a função de save do open tibia:

 

__doPlayerSave__ = doPlayerSave
function doPlayerSave(cid, shallow)
   get_pet(cid):save(shallow)
   return __doPlayerSave__(cid, shallow)
end

 

Uma coisa interessante seria fazer proveito do "shallow", indicando à sua função de save se ela deve salvar todas as informações ou apenas as mais cruciais (para evitar, por exemplo, clonamento de itens ou algo assim).

 

O único problema de sobrecarregar a função Lua é que talvez ela não seja executada em todos os saves. Provavelmente quando o player sai do jogo ou o servidor desliga, uma função interna do open tibia é executada pra salvar o player, e não a função em Lua, então você teria que alterar diretamente no código fonte ou então criar um script que execute quando o player saia do jogo e quando o servidor feche, para que salvem o player.

 

Ou então usar storages, já que o open tibia vai cuidar de tudo direitinho pra você. É, tudo isso que eu escrevi não serviu pra nada mesmo.

Link para o comentário
Compartilhar em outros sites

Testei aqui, muito bom o sistema Oneshot, Rep+

Me deu varias ideias, inclusive de uma vocation nova para meu projeto hahaha..

Sou leigo nesse assunto, mas será q n teria como modificar para tipo:

o pet avança lvl e ganha atributos, no caso nao só HP e MP mas tbm defesa e ataque.

Outra coisa que melhoraria o script seria o sistema de spells do pet ter como base

algum comando para soltar tal spell, exemplo: /pet cast m1 ou /pet cast Dark Bite, /pet cast Rock throw

algo assim para diferenciar os ataques do pet. É apenas uma sugestao, mais acho q ficaria mto bom :p

Link para o comentário
Compartilhar em outros sites

Testei aqui, muito bom o sistema Oneshot, Rep+

Me deu varias ideias, inclusive de uma vocation nova para meu projeto hahaha..

Sou leigo nesse assunto, mas será q n teria como modificar para tipo:

o pet avança lvl e ganha atributos, no caso nao só HP e MP mas tbm defesa e ataque.

Outra coisa que melhoraria o script seria o sistema de spells do pet ter como base

algum comando para soltar tal spell, exemplo: /pet cast m1 ou /pet cast Dark Bite, /pet cast Rock throw

algo assim para diferenciar os ataques do pet. É apenas uma sugestao, mais acho q ficaria mto bom :p

 

Eu planejo para um próximo update um sistema de atributos para pet. E sobre o comando /pet cast, irei aperfeiçoar-lo também.

 

Abraços.

Link para o comentário
Compartilhar em outros sites

E incrível o sistema

Você manipula a criatura de um jeito espetacular salvando a criatura com o pet:setit

A única coisa chata seria as storages.

 

 

Mais ta incrível

Parabéns.

 

Então, cara, eu até fiz enquanto na fase de desenvolvimento por querys na database. O problema é que se toda hora eu tenho que salvar o pet na database e obter dados dela, acabei notando o pequeno lag que se criava na execução dos comandos, aí fiz por storage.

 

Obrigado a todos.

 

Não use querys, vai acabar crashando de tantas consultas a db, a não ser que use cache com luasql, nesse caso é otimo, do contrario continue da forma que está pois está excelente. Storages não executam as querys quando são modificadas, elas salvam na memoria e só executam no logout e login.

 

No geral o sistema está muito bom, só a parte de spells que acho que poderia ser algo mais livre. Uma sugestão seria usar uma lib externa com todas as spells, e buscá-las apenas pelo seu nome, dai teria mais liberdade na criação das mesmas.

 

Meus parabéns, otimo sistema.

 

#Edit

 

Vi que as spells já são pelo nome, porem ela só da a configuração, se quiser uma spell diferente com varias areas, efeitos, conditions, creio que será mais complicado, a spell inteira criada num arquivo ou ate mesmo em uma função seria mais interessante.

 

ex.:

function do_pet_cast_spell(spell_name)
     if spell_name "dark bite" then
           -- executa a spell
     elseif spell_name "furios bite" then -- sem criatividade kk
           -- executa ,,,
     else
           -- ..
     end
end

Dai ficaria algo mais livre pra criação. Isso é uma opnião minha apenas, e não sei se fica mais facil para os que detem pouco conhecimento de scripting.

Editado por dalvorsn
Link para o comentário
Compartilhar em outros sites

Bom, como eu disse, é um sistema em fase de aprimoramento, então eu ainda quero sim mudar algumas coisas no sistema de magias e nos atributos do pet.

Editado por Oneshot
Link para o comentário
Compartilhar em outros sites

Meus parabéns minha meta neste ano é ficar muito melhor em programação, sei apenas linguagem C++, C#, tenho preguiças de aprender Lua solo, muito bom, quem sabe não façamos umas turmas de estudo. Muito Bom Oneshot, logo logo você jpa lança a 2.0!!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...