O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Khas Pathfinder

Iniciado por Raizen, 01/02/2013 às 14:33

Khas Pathfinder
by Khas Arcthunder

- Introdução:
Precisa de ferramentas bacanas? Veja esta, um script de pathfinding! Este script encontra a menor rota entre dois pontos, e move o personagem com esta rota.

- Características:
Caminhos inteligentes
Algorítmo rápido
Fácil de usar
Plug'n'Play
Compatível com objetos da Game_Character
Ferramenta de Log

- Como usar:
Todas as instruções estão na demo.
Leia com atenção antes de usar.

- Links:
Termos de uso: Português – Leia antes de usar
Download: Português – Última versão no final do post

- Créditos:
Criado por Khas Arcthunder
Enjoy!

É um dos scripts que eu mais gosto, devido à função, e
portanto, acaba sendo o que eu mais uso também.
Como gosto de fazer os sistemas (como as batalhas)
por eventos, ele agiliza, e muitas vezes torna viável
o trabalho...

Muito, muito bom mesmo. E quase não há nada para
ter o que configurar...
  :ok:

#of : Eae  raizen, quanto tempo mano :*-*: bom ?

Hey, to com um problemão com esse script :será:
Estou usando um mapa de 500 de altura, e quando coloco para o evento ir de uma ponta a outra, laga tanto mais tanto mais tanto que nem carrega o jogo... ( Eu sei que é lag porque tentei com numeros menores e o jogo carregou super lentamente ) ....
Teria como dar uma arrumada ? \:
Tudo vai dar certo (y(8.

Citação de: katumblo online 10/08/2014 às 19:27
#of : Eae  raizen, quanto tempo mano :*-*: bom ?

Hey, to com um problemão com esse script :será:
Estou usando um mapa de 500 de altura, e quando coloco para o evento ir de uma ponta a outra, laga tanto mais tanto mais tanto que nem carrega o jogo... ( Eu sei que é lag porque tentei com numeros menores e o jogo carregou super lentamente ) ....
Teria como dar uma arrumada ? \:
pathfinder é um algoritmo pesado >_>, ele não foi feito para usar com uma distancia tão longa assim xD... Por exemplo o tibia que usa um pathfinder, limita acho que a 60-70 tiles e não 500 .-.

Tipo não tem como eu modificar esse para lagar menos, tem outros pathfinders com algoritmos mais leves, só que não será a menor rota, será simplesmente uma rota que serve.

Você pode quebrar a rota, isso vai reduzir muito o lag, tipo 50 tiles, depois mais 50... enfim.

Já tentei diminuir a rota mas o lag só para quando vou de 10 em 10 mais ou menos ... Assim ficarei um ano até chegar no final ;-; rs

Quais outros pathfinder mais leves ? Não achei nenhum :x ( Pode ser a rota que serve mesmo )
Tudo vai dar certo (y(8.


Citação de: katumblo online 10/08/2014 às 19:27
#of : Eae  raizen, quanto tempo mano :*-*: bom ?

Hey, to com um problemão com esse script :será:
Estou usando um mapa de 500 de altura, e quando coloco para o evento ir de uma ponta a outra, laga tanto mais tanto mais tanto que nem carrega o jogo... ( Eu sei que é lag porque tentei com numeros menores e o jogo carregou super lentamente ) ....
Teria como dar uma arrumada ? \:

Cara um mapa com 500 de altura? Mesmo sem o pathfinder eu não recomendaria fazer um mapa tão grande no maker, não só por questões técnicas que já teria bastante, mas por não ficar legal também. Tenta diminuir o mapa e não achar um script que seja mais leve porque acho que o problema não ta nisso.

11/08/2014 às 19:44 #7 Última edição: 11/08/2014 às 19:46 por katumblo
Uma pequena duvida que algum de vocês dois poderiam me responder ?

Em instruções do script, está assim :

Spoiler

                                INSTRUÇÕES
                               
  Existem dois modos de funcionamento deste pathfinder:
 
    - mode 0: "ir para" - para ser usado em cenas, em direção a locais estáticos
      (que não se movem), pois o personagem fará o caminho completo até o
      objetivo, sem poder ser interrompido;
     
    - mode 1: "ir para sem esperar" - funciona da mesma forma que o mode 0,
      exceto pelo fato de que o movimento não precisa ser completado para que
      se execute o próximo comando na lista do evento com o comando de script;
     
    - mode 2: "seguir" - para ser usado repetidamente, até mesmo em processos
      paralelos, geralmente em direção a objetivos móveis, pois cada vez que
      um comando neste modo é chamado, o personagem avança um passo em direção
      a seu objetivo, sem interromper as ações do jogador.
     
 
  Para usar o pathfinder, use um comando de chamar script assim:
 
    Script: pf = LET::PathFinder.new(<inteiro>)
          : pf.find_path(<objetivo>, <distância>, <modo>, <alcance>)
         
    Sendo que:
      - <inteiro> pode ser: 0 para o personagem; negativo para um seguidor que
        ocupa a posição '-<inteiro>' na fila; positivo para a ID de um evento.
        Este será o personagem que irá andar até o objetivo especificado.
       
      - <objetivo> pode receber a mesma entrada que <inteiro> além de uma
        entrada da classe LET::Point, que é um ponto com valores de x e y, que
        pode ser definido assim: ponto = LET::Point.new(<x><y>)
       
      - <distância> a distância que o personagem deve manter de seu objetivo;
        se for 0, ele irá pisar sobre o objetivo; se for maior que 0, manterá
        alguma distância de seu objetivo. Padrão: 0
       
      - <modo> 0, 1 ou 2, já explicado anteriormente. Padrão: 0
     
      - <alcance> número máximo de tiles a serem percorridos até o objetivo;
        se a distância for maior que o alcance, o personagem não irá tentar
        seguir o objetivo; o valor padrão desse parâmetro pode ser modificado
        pela variável PF_DEFAULT_RANGE do módulo LET.
   
[close]

No evento, eu pus assim :

pf = LET::PathFinder.new(3)
pf.find_path(13, 0, 0, 2, 600)

O que esta errado? ( Em "objetivo" é para por o x e y certo ? Então, teria que por deste jeito ... não ?

[user]NightWalker[/user]
Spoiler

Citar
Cara um mapa com 500 de altura? Mesmo sem o pathfinder eu não recomendaria fazer um mapa tão grande no maker, não só por questões técnicas que já teria bastante, mas por não ficar legal também. Tenta diminuir o mapa e não achar um script que seja mais leve porque acho que o problema não ta nisso.
[close]

Eu preciso 500 de altura ... E fiz pequeno ainda, levaria mais que 1000 de altura, mas vou dividi-lo em duas partes, melhor ...
Tudo vai dar certo (y(8.

Seu comando de modo correto:
pf = LET::PathFinder.new(0)
ponto = LET::Point.new(13,0)
pf.find_path(p, 2, 0, 600)


Compare com o seu e compreenda.

Citação de: JohnBolton online 11/08/2014 às 20:03
Seu comando de modo correto:
pf = LET::PathFinder.new(0)
ponto = LET::Point.new(13,0)
pf.find_path(p, 2, 0, 600)


Compare com o seu e compreenda.

Mas assim da o seguinte erro :

Tudo vai dar certo (y(8.

Vê assim ó:
pf = LET::PathFinder.new(3)
p = LET::Point.new(13, 0)
pf.find_path(p, 2, 0, 600)

Perfeito ! :*-*: Ao iniciar da uma pequena travada mas depois o lag gerado é totalmente nulo.

Muitissmo obrigado.
Tudo vai dar certo (y(8.