Jump to content
Sign in to follow this  
Ramza

isSightClear em LUA?

Recommended Posts

Ramza    11
Ramza

Tava dando uma olhada nas sources, e vi a função isSightClear.

Ela é uma função super útil, mas pelo fato de estar nas sources e em C++ fica difícil de entende-la.

Alguém sabe se existe ela em LUA?

Entendo muito pouco de C++, tentei entender a função pra faze-la em lua mas tá difícil, dá mil voltar, mil for's...

Alguém tem ela em LUA?

Seria pegar duas posições A e B, e traçar uma linha reta entre as duas checando todos os pontos entre eles pra ver se existe algo blocando o caminho.

Abraços!

Share this post


Link to post
Share on other sites
Mock    32
Mock

tem usando pathfinding.

vc usa a funçao isWalkable na tela toda e salva numa tabela os valores 0 p livre e 1 p ocupado. ai dps é so roda um algoritimo nessa matriz

Share this post


Link to post
Share on other sites
Ramza    11
Ramza
tem usando pathfinding.

vc usa a funçao isWalkable na tela toda e salva numa tabela os valores 0 p livre e 1 p ocupado. ai dps é so roda um algoritimo nessa matriz

 

Isso é a parte fácil né, nem precisava fazer com matriz, chega a ser perda de tempo.

Porque logo após pegar no mapa todo as posições que tem ou não algo blocando, você precisa saber qual vai ser a trajetória da magia/item/munição até o alvo, portanto, você precisaria saber por quais sqms ela vai passar de você até a posição desejada. Isso que é o foda.

Sabendo isso, você não precisa fazer matriz, apenas um for pegando em todas as posições e checando.

Mas o difícil é saber por quais sqms vai passar :/

Share this post


Link to post
Share on other sites
Biozard    0
Biozard

q q essa função faz?

Share this post


Link to post
Share on other sites
Ramza    11
Ramza
q q essa função faz?

Ela checa se, se você lançar uma magia de uma posição até a outra, vai ter uma parede ou algo do tipo no caminho. Mas pra isso ela tem que pegar todas as posições que a magia vai passar, certinho. E isso que é foda!

Share this post


Link to post
Share on other sites
Eduardowm    0
Eduardowm

Eu ja te mandei essa função por pm uma vez :/

 

isSightClear(fromPos, toPos, floorCheck)

Share this post


Link to post
Share on other sites
Ramza    11
Ramza

Me mandou? DASHADSHUSADHUADS

Nem lembro, mas enfim, ela tá em C++ nas sources, o foda é trazer ela pra lua...

Tentei descobrir qual a rota que uma magia ou munição faz de uma pos até a outra, como calcular essa rota saca? Mas não consegui :/

Tensíssimo!

Share this post


Link to post
Share on other sites
Eduardowm    0
Eduardowm

Eu acabei de postar a função :<, ela pode ser usada nos scripts.

 

isSightClear(fromPos, toPos, floorCheck)

 

Pode testar, funciona normal e é muito útil.

Share this post


Link to post
Share on other sites
Ramza    11
Ramza
Eu acabei de postar a função :<, ela pode ser usada nos scripts.

 

isSightClear(fromPos, toPos, floorCheck)

 

Pode testar, funciona normal e é muito útil.

DASHUDHUDSAHUADSHADUDSA

agora que entendi o que você quis dizer...

Eu sei que ela existe, mas to falando em lua, essa tá na sources!

Tá feita toda em C++, não dá pra entender nada!

Queria saber se alguém conseguiu/consegue fazer ela em lua, aquela parada de saber por quais sqms vai passar a magia pra chegar de um ponto ao outro xD

Share this post


Link to post
Share on other sites
Eduardowm    0
Eduardowm

Ah você só quer intender ela... Boa sorte então =p

Share this post


Link to post
Share on other sites
Socket    0
Socket

Certo, vou dar uma pequena explicação.

 

A função isSightClear, existe sim, você pode chama-la em seus scripts, ela não irá mover uma determinada criatura, irá apenas checar se uma criatura pode mover de fromPos à toPos.

 

Munição, no caso que você disee, simplesmente verifica se pode, simbologicamente, enviar uma flecha, caso sim, o servidor calcula o tempo que o efeito irá demorar até atingir o target, após esse tempo passar, ele simplesmente causa o dano.

 

O movimento de uma criatura, é definido por uma task, uma espécie de evento.

 

Se você quer mover uma criatura, seguindo todos os steps, você deve criar uma função nas sources, que irá mudar a atual task da criatura, e após isso fazer o binding.

 

Se você quiser fazer em LUA, você deve usar pathfinding, da maneira que o Mock disse.

 

Atenciosamente, Socket.

Share this post


Link to post
Share on other sites
Ramza    11
Ramza
Certo, vou dar uma pequena explicação.

 

A função isSightClear, existe sim, você pode chama-la em seus scripts, ela não irá mover uma determinada criatura, irá apenas checar se uma criatura pode mover de fromPos à toPos.

 

Munição, no caso que você disee, simplesmente verifica se pode, simbologicamente, enviar uma flecha, caso sim, o servidor calcula o tempo que o efeito irá demorar até atingir o target, após esse tempo passar, ele simplesmente causa o dano.

 

O movimento de uma criatura, é definido por uma task, uma espécie de evento.

 

Se você quer mover uma criatura, seguindo todos os steps, você deve criar uma função nas sources, que irá mudar a atual task da criatura, e após isso fazer o binding.

 

Se você quiser fazer em LUA, você deve usar pathfinding, da maneira que o Mock disse.

 

Atenciosamente, Socket.

Hm, muito obrigado Socket.

É que eu precisava checar as posições em que uma determinada 'passaria' até chegar no alvo para saber se existe um determinado item ou tile nas posições, pra isso eu precisaria criar uma função que faria o pathfinding, isso que tá fud*ndo tudo dashudahudsa

E o pior: Eu precisaria pra segunda feira entregar um script de pathfinding na aula de inteligencia computacional, lascou-se DHUASDHUADSHUASD

 

Alguém sabe se já tem o algoritmo de pathfinding do tibia em algum lugar?

Se for aquilo que tá no map.cpp da função isSightClear ferrou, pq não entendi nada dahsudashudas

Share this post


Link to post
Share on other sites
Socket    0
Socket
Hm, muito obrigado Socket.

É que eu precisava checar as posições em que uma determinada 'passaria' até chegar no alvo para saber se existe um determinado item ou tile nas posições, pra isso eu precisaria criar uma função que faria o pathfinding, isso que tá fud*ndo tudo dashudahudsa

E o pior: Eu precisaria pra segunda feira entregar um script de pathfinding na aula de inteligencia computacional, lascou-se DHUASDHUADSHUASD

 

Alguém sabe se já tem o algoritmo de pathfinding do tibia em algum lugar?

Se for aquilo que tá no map.cpp da função isSightClear ferrou, pq não entendi nada dahsudashudas

 

Tem sim, um bem simples que o Colex fez: http://forums.otserv.com.br/showthread.php?121021-Pathfinder-Recursividade

 

Atenciosamente, Socket.

Edited by Mickfern

Share this post


Link to post
Share on other sites
Notorious    1
Notorious

É, eu fiz uma vez um traceRoute(frompos, topos), bem legal, só que ele só traça a rota, sem checar se é andável ou tá bloqueado ...

 

Se você quiser fala comigo no MSN, quem sabe agente nao dê uma melhorada na função e poste :)

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×