Ir para conteúdo
  • 0

Monstros se matando


Skulls

Pergunta

Alguma chance de fazer dois monstros selvagens brigarem entre si, sem ter que mudar na source a AI dos monstros?

onTarget não serve pra monstros e, aparentemente, o setTarget não funciona para 2 monstros, nem o challengeCreature.

 

Alguma ideia?

 

Edited: Descobri que é possível fazer isso usando combat, mas ainda procuro uma solução mais simples do que refazer toda a iteração dos monstros via combat rs.

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

Posts Recomendados

  • 0

Funcionou, porem deu erro na hora de executar: LIBMYSQL.dll missing..

Compartilhei o sisteminha que fiz em lua para tal:

http://www.xtibia.com/forum/topic/238899-monstros-duelando-entre-si/

Link para o comentário
Compartilhar em outros sites

  • 0

pensei nisso hoje, se nao me engano tem scripts de monstros passivos por aí via source editing, com a tag de monstros passivos daria pra fazer monstros agressivos atacarem os passivos da mesma forma que atacam um player, mas como não mexo com c++, não faço idéia de como seria uma possivel implementação disso

Link para o comentário
Compartilhar em outros sites

  • 0

pensei nisso hoje, se nao me engano tem scripts de monstros passivos por aí via source editing, com a tag de monstros passivos daria pra fazer monstros agressivos atacarem os passivos da mesma forma que atacam um player, mas como não mexo com c++, não faço idéia de como seria uma possivel implementação disso

Pois é. Eu até sei C++, mas nunca mexi com C++ pra ot e as vezes que baixei uma source apanhei pra compilar, então eu estou evitando usá-lo.

Eu encontrei um jeito, usando doTargetCombatHealth e doAreaCombatHealth, e mandando procurar na mão se tem algum monstro por perto para ele dar target, mas vai dar um puta trabalho, rs. Queria mesmo um jeito mais simples.

 

EDITED:

Não ta 100% ainda não, mas já é uma luz :tongue:

 

giphy.gif

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

  • 0

Isso daqui é um script pra monstros não atacarem determinadas vocações, alguns NTO's utilizam algo semelhante para não atacar determinados storages, acredito que com as modificações corretas daria pra implementar um sistema complexo de hierarquia na ordem de ataques:

Se o lobo tem um cervo e um humano pra atacar, qual dos dois ele escolhe?

Observe o script:

 

local notattackable = {1,2,5,6} --- vocações que não receberão ataque
function onCombat(cid, target)
 
if(not isPlayer(target)) then
return true
else
 
targets = getMonsterTargetList(cid)
if isInArray(notattackable, getPlayerVocation(target)) then
   addEvent(check,1000,cid,targets)
   return false
else
return true
end
end
end
 
function check(cid,targets) 
for i=1, #targets do
	if isInArray(notattackable, getPlayerVocation(targets[i])) then	  
	   addEvent(check,1000,cid,targets)
	   return false
	else
		stopEvent(check)
		return true
	end
end
end

 


não é de minha autoria, tenho aqui no pc salvo mas peguei de algum lugar acho.. só não lembro onde.

Com algumas tabelas vc consegue controlar muita coisa nesse script, só tem que verificar se na targetList ele considera outros monstros, porque se não... teria que modificar essa função na source :/

 

Link para o comentário
Compartilhar em outros sites

  • 0

Pelo que eu li rapidamente na source monstros entram na friend list não na target list. :( mas vou dar uma olhada nisso depois, vai ajudar ja. Valeu!

Link para o comentário
Compartilhar em outros sites

  • 0

então tenta trocar pra toda vez que for iniciar o combat, se for player checar as criaturas em volta e ver se há monstros passivos e aí vc usa o dotargetCombat, se fizer um script só pro combat dos monstros, vc pode configurar quais vão ser agressivos só botando a tag do creaturescript no xml

Link para o comentário
Compartilhar em outros sites

  • 0

Eh exatamente isso que estou fazendo, inclusive aquela gif ali.. ta funcionando, mas da trabalho.. eu vou fazer meu próprio sistema de Target de monstro e ignorar as interações vindas da source xP

 

Eu to com um probleminha que eh o maldito follow que eles dão, mesmo nao batendo no player, eles mantem uma interacao seguido ele como se tivesse com target. Nesse script que vc postou das vocações, acontece isso?

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

  • 0

não se tiver outro target, o problema do script acima é que ele não assume modo defensivo na presença de outro player.. lembro de um teste q eu fiz com um demon e somente um personagem da vocação q nao podia ser atacada, oque aconteceu foi que o demon ficava correndo pra lá e pra cá em volta do player como se tivesse se preparando pra ir atacar ele, mas não ia. Não lembro se o demon me seguia caso eu fugisse mas pro seu caso acredito q isso nao seria um problema.. a menos q vc esteja pensando em fazer monstros de raças que não atacam os humanos, por exemplo.. mas aí compensa mais trabalhar em cima da IA via source

Link para o comentário
Compartilhar em outros sites

  • 0

Eu acredito que seja muito melhor editar o IA dos monstros pelas sources, qualquer método diferente, é um "atalho" ou "redirecionamento"...

é melhor criar uma raça (Ex: blood, undead) de monstros, que tenha essa característica. Mas aí mano, vai ter que aprender a mexer bem nas sources, porque não é só criar um bool lá que tá tudo resolvido...

 

Eu acho que criar outra raça seria muito mais legal, e fácil para você controlar os monstros que não atacam player...

Link para o comentário
Compartilhar em outros sites

  • 0

Exatamente, por mais que eu saiba c++ eu ia ter que ler códigos e tutoriais pra aprender a editar as sources e fazer algo decente. Sem contar que eu nunca consigo compilar. Acho que do jeito que estou fazendo vou conseguir fazer o que preciso, só tenho que resolver esse problema do follow. Tem como criar outra raça via script?

Link para o comentário
Compartilhar em outros sites

  • 0

Rapaz, se for 0.3~0.4 vc tem uma gama infinita de creaturescripts pra brincar..

onAttack
onFollow
onTarget

Experimenta cada um deles com return false e verifica qual que impede o monstro de seguir o player.

Não sei se vou levar advertencia por postar link de outros fóruns mas não tem como eu copiar todo o contéudo que eu escrevi lá aqui.

To meio sem tempo pra ficar abrindo sv e fazendo testes, mas prometo q se vc não conseguir eu vou fazer de tudo pra tentar algo aqui também. Boa sorte amigo, e se conseguir, por favor compartilhe a solução ^^

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

  • 0

Wolf tu já me ajuda muito. Eu tenho esse post seu no meu favoritos, sempre que preciso de um callback novo recorro a ele. Infelizmente, onTarget não serve para monstros. Eu nunca testei onFollow, mas acredito que não funcione pq o follow que ele da é de Target. O onAttack é o que eu estou usando, não resolve o problema.

Vou postar sim, criei um tópico nos showoffs com o gif do que já fiz e a cada avanço vou compartilhar os resultados. Ao final eu posto o código completo em downloads.

Você me ajudando com ideias e possíveis caminhos já ta ótimo, eu vou implementando o que formos pensando e vendo se funciona.

Link para o comentário
Compartilhar em outros sites

  • 0

Não quero mexer nas sources.

Consegui um resultado bem bom, vou fazer mais alguns ajustes e segunda feira posto aqui! So com setCreatureNoMove da pra contornar o bug.

 

Sabem me dizer se as funções set e get playerStorage podem ser usadas com uid de monstro (funcionou,mas quero saber se buga alguma coisa)

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

×
×
  • Criar Novo...