Portal SAMP
[Ajuda] Ajuda Verificação Veiculo || 1 - 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] Ajuda Verificação Veiculo || 1 (/showthread.php?tid=2366)

Páginas: 1 2


Ajuda Verificação Veiculo || 1 - agi.exe - 07/05/2022

Como verifica se o player esta perto de um Veiculo????


RE: Ajuda Verificação Veiculo || 1 - xbruno1000x - 07/05/2022

Creio que seja isso:
Código:
stock CheckPlayerDistanceToVehicle(Float:radi, playerid, vehicleid)
{
    if(IsPlayerConnected(playerid))
    {
        new Float:PX,Float:PY,Float:PZ,Float:X,Float:Y,Float:Z;
        GetPlayerPos(playerid,PX,PY,PZ);
        GetVehiclePos(vehicleid, X,Y,Z);
        new Float:Distance = (X-PX)*(X-PX)+(Y-PY)*(Y-PY)+(Z-PZ)*(Z-PZ);
        if(Distance <= radi*radi)
            return 1;
    }
    return 0;
}

Peguei do GM Brasil Play Realistic.


RE: Ajuda Verificação Veiculo || 1 - agi.exe - 07/05/2022

Uso?


RE: Ajuda Verificação Veiculo || 1 - k2bi_YT - 07/05/2022

Exemplo:
Código PHP:
if(CheckPlayerDistanceToVehicle(8.0playerid481) {...}//Irá verificar se o jogador esta dentro de um raio de 8.0 do veiculo ID 481 (id do veiculo e não o modelo) 

Nesse codigo abaixo, irá verificar se existe algum veiculo dentro de 8.0 (o mesmo que o code acima, porem de uma forma mais "global")
Código PHP:
new Float:pos[3];

for(new 
vehicleidvehicleid != GetVehiclePoolSize(); vehicleid++)
{
    
GetVehiclePos(vehicleidpos[0], pos[1], pos[2]);
    if(
IsPlayerInRangeOfPoint(playerid8.0 pos[0], pos[1], pos[2]))
    {...}




RE: Ajuda Verificação Veiculo || 1 - xbruno1000x - 07/05/2022

(07/05/2022 16:55)SkayBR Escreveu: Uso?

Toda stock é utilizada da mesma forma que uma função nativa do sa-mp. Você insere ela em qualquer lugar do código, depois é só chamar a função com os parâmetros.

Nesse caso os parâmetros estão bem evidentes:
Radi - Distância entre o player e o veículo que você deseja testar.
Playerid - ID do player(Que normalmente se usa playerid mesmo).
vehicleid - ID do veículo que você deseja saber se o player está próximo.


RE: Ajuda Verificação Veiculo || 1 - agi.exe - 08/05/2022

[b]Fiz o codigo desse jeito, esta certo?

[/b]

Código PHP:
CMD:testar(playerid)
{
    new 
ResultadoQuantos 0;
     for(new 
i!= MAX_VEHICLESi++)
    {
         new 
dist Checarveiculo(5,playeridi);
        if(
dist)
        {
             
Resultado i;
             
Quantos ++;
         }
    }
    switch(
Quantos)
    {
    
    case 0:
    
    {
    
        Msg(playerid,VVV,"Voce nao esta perto de um veiculo");
    
    }
    
    case 1:
    
    {
    
        Msg(playerid,ZZZ,"Voce esta perto de um veiculo");
    
    }
    }
    return 
1;




RE: Ajuda Verificação Veiculo || 1 - k2bi_YT - 08/05/2022

Assim:

Código PHP:
CMD:testar(playerid)
{
    new 
str[64];
    for(new 
i!= GetVehiclePoolSize(); i++)
    {
        if(
Checarveiculo(5,playeridi);)
        {
            
format(strsizeof(str), "Você está proximo do veiculo ID %d"i);
            
SendClientMessage(playerid, -1str);
            return 
true;
        }
    }
    
SendClientMessage(playerid, -1"Você não está proximo de um veículo");
    return 
1;




RE: Ajuda Verificação Veiculo || 1 - White_Blue - 09/05/2022

Testa assim

Código PHP:
#if !defined IsValidVehicle // No topo do script
    native IsValidVehicle(vehicleid);
#endif

CMD:prox(playerid)
{
    new string[128];
    for(new 0MAX_VEHICLESi++)
    {
        if(CheckPlayerDistanceToVehicle(5.0playeridi))
        {
                if(!IsValidVehicle(i)) return 1;
        
format(stringsizeof(string), "Você está próximo do veículo %i!"i);
                SendClientMessage(playerid, -1string);
        }
    }
    return 1;
}

stock CheckPlayerDistanceToVehicle(Float:radiplayeridvehicleid)
{
    if(IsPlayerConnected(playerid))
    {
        new Float:PX,Float:PY,Float:PZ,Float:X,Float:Y,Float:Z;
        GetPlayerPos(playerid,PX,PY,PZ);
        GetVehiclePos(vehicleidX,Y,Z);
        new Float:Distance = (X-PX)*(X-PX)+(Y-PY)*(Y-PY)+(Z-PZ)*(Z-PZ);
        if(Distance <= radi*radi)
            return 1;
    }
    return 0;




RE: Ajuda Verificação Veiculo || 1 - agi.exe - 09/05/2022

Quí. tal desse jeito ?


Código PHP:
CMD:trancar(playerid)
{
    for(new i!= MAX_VEHICLESi++)
    {
    if(ChecarveiculoBORP(2,playeridi))
    {
        if(MeuCarro[playerid] != i) return Msg(playerid,VVV,"Voce nao tem a chave deste veiculo");
           new motlualarporcappormaob;
           GetVehicleParamsEx(imotlualarporcappormaob);
         if(por)
          {
              SetVehicleParamsEx(i,mot,lu,alar,VEHICLE_PARAMS_OFFcappormaob);
               Msg(playerid,AAA,"Veiculo Destrancado");
           }
        else
        {
            SetVehicleParamsEx(i,mot,lu,alar,VEHICLE_PARAMS_ONcappormaob);
             Msg(playerid,EEE,"Veiculo Trancado");
        }
        PlayerPlaySound(playerid10560.00.010.0);
        return true;
    }
    }
    Msg(playerid,VVV"Você não está proximo de um veículo");
    return 1;
}




stock ChecarveiculoBORP(Float:radiplayeridvehicleid)
{
    new Float:xFloat:yFloat:z;
    GetVehiclePos(vehicleidxyz);
    if(IsPlayerInRangeOfPoint(playeridradixyz))
    return 1;
    return 0;




RE: Ajuda Verificação Veiculo || 1 - White_Blue - 09/05/2022

Se deu certo esse jeito que você fez tanto melhor.