Portal SAMP
[Ajuda] Congelar veículos - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Congelar veículos (/showthread.php?tid=1761)



Congelar veículos - enige - 24/10/2021

Como posso congelar veículos spawnados com AddStaticVehicleEx? "congelar" quero dizer impedir que os veículos sejam arrastados por jogadores, ou seja, o veículo continua na mesma posição até que alguém entre no veículo. Se alguém puder ajudar, fico grato


RE: Congelar veículos - ipsLuan - 24/10/2021

Como se fosse um freio de mão? Bom... vamos pela lógica!

Percorra um loop a cada 1 segundo verificando todos os veículos criados pelo servidor. Após fazer isso, verifica se o veículo percorrido está ocupado com algum passageiro ou motorista.  

1. Se estiver desocupado: Verificar se a posição atual é a mesma posição em que ele estava quando criou o veículo.
2. Se a posição estiver diferente da posição quando criou: Faz o respawn do veículo para o seu local de criação.

Observações: Você precisa criar uma variável com MAX_VEHICLES e colocar a posição de criação do veículo. Ex: new Float:_Pos[MAX_VEHICLES][3] e salvar o X, Y, Z.
Para pegar a posição atual do veículo, use GetVehiclePos.
Para fazer o respawn do veículo, use SetVehicleToRespawn.

No mais, acredito que com apenas esses critérios você consegue fazer um sistema eficaz.


RE: Congelar veículos - DeviceBlack - 25/10/2021

Eu usaria ColAndreas e criaria uma colisão em volta de veículos sem motoristas ?


RE: Congelar veículos - xbruno1000x - 25/10/2021

Para você impedir um veículo vazio de ser movido, deve utilizar a função nativa OnUnoccupiedVehicleUpdate.
Passam por essa callback todos os updates em veículos vazios.

https://open.mp/pt/docs/scripting/callbacks/OnUnoccupiedVehicleUpdate


RE: Congelar veículos - enige - 25/10/2021

Muito obrigado a todos, vou escrever o código!


RE: Congelar veículos - enige - 25/10/2021

Obrigado novamente, usei a checagem do ipsLuan, porém ao invés do timer, usei a callback que o xbruno1000x mandou. Está funcionando perfeitamente, obrigado pessoal, +rep


RE: Congelar veículos - xbruno1000x - 25/10/2021

(25/10/2021 22:35)enige Escreveu: Obrigado novamente, usei a checagem do ipsLuan, porém ao invés do timer, usei a callback que o xbruno1000x mandou. Está funcionando perfeitamente, obrigado pessoal, +rep

Fico feliz por ter ajudado. Poucas pessoas lembram-se dessa callback pois é muito antiga (lançada no SA-MP 0.3c). Usando a variável nativa new_x, new_y e new_z, pode-se facilmente criar anti-cheaters e outras funções simplesmente comparando com a GetVehiclePos. Vale ressaltar que o GetVehiclePos nessa callback entrega as coordenadas do veículo antes do update, então não há possibilidade de bugar.