Portal SAMP
[Ajuda] SISTEMA DE MILHAS VEÍCULO - 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] SISTEMA DE MILHAS VEÍCULO (/showthread.php?tid=2441)



SISTEMA DE MILHAS VEÍCULO - Woorz - 03/06/2022

FAMÍLIA,

ESTOU TENTANDO PENSAR EM UM SISTEMS DE KM RODADOS PARA VEÍCULO, PORÉM NAO VEM A MENTE AINDA.

VOCÊS TERIA UMA IDEIA AI DE COMO INCIA-LO?

SERA REGISTRADO NA DB SQL, SEMPRE QUE O VEICULO ESTIVER ANDANDO ELA VAI GERANDO OS KM NO VEICULO. QUANDO ATINGIR UM CERTO KM O VEICULO VAI PARAR.


RE: SISTEMA DE MILHAS VEÍCULO - Hatiro - 03/06/2022

(03/06/2022 08:34)Woorz Escreveu: FAMÍLIA,

ESTOU TENTANDO PENSAR EM UM SISTEMS DE KM RODADOS PARA VEÍCULO, PORÉM NAO VEM A MENTE AINDA.

VOCÊS TERIA UMA IDEIA AI DE COMO INCIA-LO?

SERA REGISTRADO NA DB SQL, SEMPRE QUE O VEICULO ESTIVER ANDANDO ELA VAI GERANDO OS KM NO VEICULO. QUANDO ATINGIR UM CERTO KM O VEICULO VAI PARAR.
Eu usaria GetVehicleVelocity para calcular os km rodado


RE: SISTEMA DE MILHAS VEÍCULO - Woorz - 03/06/2022

(03/06/2022 08:50)Hatiro Escreveu:
(03/06/2022 08:34)Woorz Escreveu: FAMÍLIA,

ESTOU TENTANDO PENSAR EM UM SISTEMS DE KM RODADOS PARA VEÍCULO, PORÉM NAO VEM A MENTE AINDA.

VOCÊS TERIA UMA IDEIA AI DE COMO INCIA-LO?

SERA REGISTRADO NA DB SQL, SEMPRE QUE O VEICULO ESTIVER ANDANDO ELA VAI GERANDO OS KM NO VEICULO. QUANDO ATINGIR UM CERTO KM O VEICULO VAI PARAR.
Eu usaria GetVehicleVelocity para calcular os km rodado

Top irmão.

Provavelmente vai ter que ser em Float então?
Tem uma ideia aí pra aonde usa ele pra Pegando a Velocidade para adicionar na variável?


RE: SISTEMA DE MILHAS VEÍCULO - Dr Editor - 03/06/2022

Você pode usar a velocidade ou a distância percorrida a cada segundo.
A velocidade entregaria uma maior precisão.
Em qualquer um dos casos é interessante verificar apenas no espaço 2D, pois em 3D vai verificar a queda do veículo.


RE: SISTEMA DE MILHAS VEÍCULO - Hatiro - 03/06/2022

(03/06/2022 09:11)Woorz Escreveu:
(03/06/2022 08:50)Hatiro Escreveu:
(03/06/2022 08:34)Woorz Escreveu: FAMÍLIA,

ESTOU TENTANDO PENSAR EM UM SISTEMS DE KM RODADOS PARA VEÍCULO, PORÉM NAO VEM A MENTE AINDA.

VOCÊS TERIA UMA IDEIA AI DE COMO INCIA-LO?

SERA REGISTRADO NA DB SQL, SEMPRE QUE O VEICULO ESTIVER ANDANDO ELA VAI GERANDO OS KM NO VEICULO. QUANDO ATINGIR UM CERTO KM O VEICULO VAI PARAR.
Eu usaria GetVehicleVelocity para calcular os km rodado

Top irmão.

Provavelmente vai ter que ser em Float então?
Tem uma ideia aí pra aonde usa ele pra Pegando a Velocidade para adicionar na variável?
Uma boa pratica seria criar um timer quando a callback OnPlayerEnterVehicle ser chamada e, logo em seguida, criamos um temporizador para ir verificando a velocidade do veiculo, respondendo sua pergunta sim os valores são retornados em flutuantes
 
Código:
new Float:Velocity[3];
  GetVehicleVelocity(GetPlayerVehicleID(playerid), Velocity[0], Velocity[1], Velocity[2]);

Uma boa ideia também seria calcular a distancia percorrida de cada ponto deis de o momento que o player entrou no carro 
Função: calcular distancia entre pontos
Código:
forward Float:GetDistanceBetweenPoints(Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2);
Float:GetDistanceBetweenPoints(Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2)
return VectorSize(x2 - x1, y2 - y1, z2 - z1);

Usando:
Código:
printf("%f", GetDistanceBetweenPoints(1, 1, 1, 2, 2, 1));



RE: SISTEMA DE MILHAS VEÍCULO - White_Blue - 03/06/2022

Código PHP:
new PlayerText:KmRodado[MAX_PLAYERS][1];
static 
Float:Velocity[3];

stock GetPlayerSpeed(vehicleid) {
 
GetVehicleVelocity(vehicleidVelocity[0], Velocity[1], Velocity[2]);
 return 
floatround(floatsqroot(Velocity[0] * Velocity[0] + Velocity[1] * Velocity[1] + Velocity[2] * Velocity[2]));
}

forward AtualizarKM(playerid);
public 
AtualizarKM(playerid) {
    new 
vid GetPlayerVehicleID(playerid), string[128];
    
format(stringsizeof(string), "~y~%.1f KM Rodado"GetPlayerSpeed(vid));
    
PlayerTextDrawSetString(playeridKmRodado[playerid][0], string);
    return 
1;
}

public 
OnPlayerStateChange(playeridnewstateoldstate) {
    new 
Timer[MAX_PLAYERS];
    if(
newstate == PLAYER_STATE_DRIVER) {
        PlayerTextDrawShow(playeridKmRodado[playerid][0]);
    
Timer[playerid] = SetTimerEx("AtualizarKM"1000true"d"playerid);
    }
    else if(
oldstate == PLAYER_STATE_DRIVER) {
    
PlayerTextDrawHide(playeridKmRodado[playerid][0]);
    
KillTimer(Timer[playerid]);
    }
    return 
1;
}

public 
OnPlayerConnect(playerid) {
        KmRodado[playerid][0] = CreatePlayerTextDraw(playerid522.470458339.916717"~n~");
    
PlayerTextDrawLetterSize(playeridKmRodado[playerid][0], 0.4000001.600000);
    
PlayerTextDrawAlignment(playeridKmRodado[playerid][0], 1);
    
PlayerTextDrawColor(playeridKmRodado[playerid][0], 16777215);
    
PlayerTextDrawSetShadow(playeridKmRodado[playerid][0], 0);
    
PlayerTextDrawSetOutline(playeridKmRodado[playerid][0], 1);
    
PlayerTextDrawBackgroundColor(playeridKmRodado[playerid][0], 255);
    
PlayerTextDrawFont(playeridKmRodado[playerid][0], 1);
    
PlayerTextDrawSetProportional(playeridKmRodado[playerid][0], 1);
    return 
1;