SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 12 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

2 participantes

    Checar obstaculo entre dois pontos

    ipsBruno
    ipsBruno
    --> Postador Iniciante
    --> Postador Iniciante


    Celular : 5496263238
    Mensagens : 5
    Moedas : 3569
    Data de inscrição : 02/08/2014

    Checar obstaculo entre dois pontos Empty Checar obstaculo entre dois pontos

    Mensagem por ipsBruno Sáb 2 Ago 2014 - 17:43

    Fiz uma função para implementar no meu servidor de zumbis que está em desenvolvimento. Pensei em colocar nos códigos úteis, mas levei um bom tempo pra pensar em uma função assim — sou burro mesmo, inclusive tentei fazê-la em meados de 2013 e não tive sucesso no meu gamemode de zumbis antigo, agora está funcionando bem, porém tem melhorias ainda a fazer.


    Informações sobre a função:

    A velocidade dela é bastante boa, dá pra colocar num loop de até 300 ms. 

    Ela funciona com morros atualmente, contanto que não sejam muito ingrimes

    Não detecta muros, arvores muito pequenas, postes, lixeiras e outros objetos pequenos, apenas casas ou grandes torres no meio do trajeto

    Útil para implementar em diversas funções, verificar se um player enxerga o outro ou há uma casa na frente, ou até algorítimos de path como zumbis e gps avançados, ou qualquer coisa que envolva verificar se há uma casa entre DOIS pontos 




    Como usar:


    Para usar, há os seguintes parâmetros.
    Código:

    Float:nx, Float:ny, Float: nz
    representam a posição do ponto A

    Código:
    Float:px, Float:py, Float:pz,
    representam a posição do ponto B


    Float: offset = 1.5

    representará o tamanho do incremento dado a cada nova verificada da função, é interessante deixar aqui um valor de 1.0 que é o limite do MapAndreas.

    Float: diffHeigth = 1.5

    Representa altura do entre o último ponto verificado e o próximo, caso for maior que 1.5 há algum obstaculo GRANDE na frente do trajeto.




    Como funciona?

    Isto funciona de uma maneira bem simples, basicamente você pega dois pontos A e B, e traça uma reta entre eles. Nessa reta, o MapAndeas vai executando a cada metro (definido por offset) verificando se a altura é diferente da altura anterior. Obviamente, se a altura for demasiadamente diferente, como 10 ou 20 metros, haverá um edifício naquela posição ou algo do tipo, logo ela retorna false acusando de haver um obstaculo no meio do caminho. Simples, não?




    Exemplo:

    Aqui um vídeo dos zumbis utilizando o sistema com a função implementada, como eram mais de 350 pendurados deu um pouco de lag, mas até que rodou tranquilo. 

    Com ela, eu verifico se há uma casa ou muros gigantes entre o trajeto, caso não tiver, ir reto, caso não tiver fazer uma rota alternativa (que é outro código que não vou postar aqui por enquanto)



    https://www.youtube.com/watch?v=B5rccvHY8Hk

    Favor salvar em route.inc


    Código: http://pastebin.com/bpux0aT0


    Smile
    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11378
    Moedas : 1031966
    Data de inscrição : 06/10/2011
    Idade : 28
    Localização : Brasil

    Checar obstaculo entre dois pontos Empty Re: Checar obstaculo entre dois pontos

    Mensagem por Weslley_Script Sáb 2 Ago 2014 - 17:49

    Isso ira ajudar mt a aprimorar os scripter daqui bruno obrigadão Smile



    Checar obstaculo entre dois pontos D07Xwqb
    Checar obstaculo entre dois pontos Yjab9HN

      Data/hora atual: Sáb 27 Abr 2024 - 8:31