Portal SAMP
[Ajuda] veiculos bugando spawn - 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] veiculos bugando spawn (/showthread.php?tid=3661)



veiculos bugando spawn - DPB G4MERS - 04/06/2023

Olá, estou com um problema grande! já tentei resolver inumeras vezes é que que quando um veiculo é criado na concessionaria o de outro player é destruido. o que pode ser que esteja acontecendo? estou há muito tempo tentando.


segue o codigo de quando o veiculo é criado:
Código PHP:
public OnPlayerConnect(playerid)

{
    
CriarCarro(playerid);
    return 
1;
}
forward CriarCarro(playerid);
public 
CriarCarro(playerid)
{
    if(
IsPlayerNPC(playerid))
    
    return 0;
    if(
Conce[playerid][IDVeh] != 0)
    {
    
    new caridlocal;
    
    DestroyVehicle(GetPVarInt(playerid"Veh"));
         new idcarroFloat:Pos[4],Cor[2];
    
    idcarro DOF2_GetInt(GetPasta(playerid), "IDVeh");
    
    Pos[0] = DOF2_GetFloat(GetPasta(playerid), "CarX");
    
    Pos[1] = DOF2_GetFloat(GetPasta(playerid), "CarY");
    
    Pos[2] = DOF2_GetFloat(GetPasta(playerid), "CarZ");
    
    Pos[3] = DOF2_GetFloat(GetPasta(playerid), "CarAngle");
    
    Cor[0] = DOF2_GetInt(GetPasta(playerid), "Cor1");
    
    Cor[1] = DOF2_GetInt(GetPasta(playerid), "Cor2");
        
caridlocal AddStaticVehicleEx(idcarroPos[0], Pos[1], Pos[2], Pos[3], Cor[0], Cor[1], -1);
        
SetPVarInt(playerid"Veh"caridlocal);
        
Gasosa[GetPVarInt(playerid"Veh")] = Conce[playerid][Gasolina];
        
//Gasosa[Veh[playerid]] = 100;
        
VehDono[caridlocal] = playerid;
        
AddVehicleComponent(GetPVarInt(playerid"Veh"), Conce[playerid][Nitro]);
        
AddVehicleComponent(GetPVarInt(playerid"Veh"), Conce[playerid][AeroFolio]);
        
SetVehicleVirtualWorld(GetPVarInt(playerid"Veh"), 0);
        
japode[playerid] = true;
        if(
Conce[playerid][PaintJob] == 1)
        {
        
    ChangeVehiclePaintjob(GetPVarInt(playerid"Veh"), 0);
        }
        else if(
Conce[playerid][PaintJob] == 2)
        {
        
    ChangeVehiclePaintjob(GetPVarInt(playerid"Veh"), 1);
        }
        else if(
Conce[playerid][PaintJob] == 3)
        {
        
    ChangeVehiclePaintjob(GetPVarInt(playerid"Veh"), 2);
        }
    }
    if(
Conce[playerid][IDVeh2] != 0)
    {
    
    new caridlocal;
    
    DestroyVehicle(GetPVarInt(playerid"Veh2"));
         new idcarroFloat:Pos[4],Cor[2];
    
    idcarro DOF2_GetInt(GetPasta(playerid), "IDVeh2");
    
    Pos[0] = DOF2_GetFloat(GetPasta(playerid), "CarX2");
    
    Pos[1] = DOF2_GetFloat(GetPasta(playerid), "CarY2");
    
    Pos[2] = DOF2_GetFloat(GetPasta(playerid), "CarZ2");
    
    Pos[3] = DOF2_GetFloat(GetPasta(playerid), "CarAngle2");
    
    Cor[0] = DOF2_GetInt(GetPasta(playerid), "Cor3");
    
    Cor[1] = DOF2_GetInt(GetPasta(playerid), "Cor4");
        
caridlocal AddStaticVehicleEx(idcarroPos[0], Pos[1], Pos[2], Pos[3], Cor[0], Cor[1], -1);
        
SetPVarInt(playerid"Veh2"caridlocal);
        
Gasosa[GetPVarInt(playerid"Veh2")] = Conce[playerid][Gasolina2];
        
VehDono[GetPVarInt(playerid"Veh2")] = playerid;
        
AddVehicleComponent(GetPVarInt(playerid"Veh2"), Conce[playerid][Nitro2]);
        
AddVehicleComponent(GetPVarInt(playerid"Veh2"), Conce[playerid][AeroFolio2]);
        
SetVehicleVirtualWorld(GetPVarInt(playerid"Veh2"), 0);
        
japode[playerid] = true;
        if(
Conce[playerid][PaintJob2] == 1)
        {
        
    ChangeVehiclePaintjob(GetPVarInt(playerid"Veh2"), 0);
        }
        else if(
Conce[playerid][PaintJob2] == 2)
        {
        
    ChangeVehiclePaintjob(GetPVarInt(playerid"Veh2"), 1);
        }
        else if(
Conce[playerid][PaintJob2] == 3)
        {
        
    ChangeVehiclePaintjob(GetPVarInt(playerid"Veh2"), 2);
        }
    }
    return 
1;

se alguem puder me ajudar ficarei grato, porque nunca tinha feito uma concessionaria e enfrentei isso.


RE: veiculos bugando spawn - White_Blue - 04/06/2023

Citar:
Código PHP:
DestroyVehicle(GetPVarInt(playerid"Veh")); 


O trecho de código acima está destruindo o veículo armazenado na variável "Veh" pode ser o problema. Se possível explicar como você está usando essa variável e para que ela serve para podermos te ajudar de forma mais eficaz.


RE: veiculos bugando spawn - DPB G4MERS - 04/06/2023

estou usando assim:

Código:
new caridlocal;
caridlocal = AddStaticVehicleEx(idcarro, Pos[0], Pos[1], Pos[2], Pos[3], Cor[0], Cor[1], -1);
        SetPVarInt(playerid, "Veh", caridlocal);



RE: veiculos bugando spawn - White_Blue - 04/06/2023

(04/06/2023 08:25)DPB G4MERS Escreveu: estou usando assim:

Código:
new caridlocal;
caridlocal = AddStaticVehicleEx(idcarro, Pos[0], Pos[1], Pos[2], Pos[3], Cor[0], Cor[1], -1);
        SetPVarInt(playerid, "Veh", caridlocal);

Por que está deletando o veículo da variável?


RE: veiculos bugando spawn - DPB G4MERS - 04/06/2023

(04/06/2023 10:25)White_Blue Escreveu:
(04/06/2023 08:25)DPB G4MERS Escreveu: estou usando assim:

Código:
new caridlocal;
caridlocal = AddStaticVehicleEx(idcarro, Pos[0], Pos[1], Pos[2], Pos[3], Cor[0], Cor[1], -1);
        SetPVarInt(playerid, "Veh", caridlocal);

Por que está deletando o veículo da variável?

eu no começo da função deleto o veiculo e crio novamente. então devo mudar isso?


RE: veiculos bugando spawn - Carlos Victor - 04/06/2023

Está sendo destruído provavelmente porque você não está zerando os dados, acaba que quando um jogador loga, as variáveis do jogador antes no caso o playerid que estava usando o mesmo ID antes continua se você não resetar para um valor default (padrão). Eu acredito que o problema esteja nisso, você destrói o carro só quando é criado, deveria destruir quando o jogador desconecta do servidor e apagar a variável.

Código PHP:
public OnPlayerDisconnect(playeridreason)
{
    static
        
vehicleid;

    
vehicleid GetPVarInt(playerid"Veh");

    if(
IsValidVehicle(vehicleid)) {
        
DestroyVehicle(vehicleid);
        
        
DeletePVar(playerid"Veh");
    }
    return 
1;




RE: veiculos bugando spawn - White_Blue - 04/06/2023

(04/06/2023 11:37)DPB G4MERS Escreveu:
(04/06/2023 10:25)White_Blue Escreveu:
(04/06/2023 08:25)DPB G4MERS Escreveu: estou usando assim:

Código:
new caridlocal;
caridlocal = AddStaticVehicleEx(idcarro, Pos[0], Pos[1], Pos[2], Pos[3], Cor[0], Cor[1], -1);
        SetPVarInt(playerid, "Veh", caridlocal);

Por que está deletando o veículo da variável?

eu no começo da função deleto o veiculo e crio novamente. então devo mudar isso?

Se você está criando o veículo, tecnicamente ele não deveria existir antes disso, então não faz sentido deletar o veículo no meu ponto de vista, creio que isto possa estar relacionado com seu problema, teste removendo esse trecho do código, se o problema parar, isso significa que é algo relacionado à aquele trecho do código. Ao menos que eu tenha entendido as suas intenções usando a função para deletar o veículo erroneamente, eu creio que possa ser isso o problema.

Outra coisa que não entendi o por que você está fazendo, é atribuir os valores da variável local "caridlocal" em uma na pvar "Veh", lembre-se que pvar's são mais lentas que as variáveis normais, sendo que seria muito mais fácil apenas declarar a variável local "caridlocal" como uma variável global.


RE: veiculos bugando spawn - DPB G4MERS - 04/06/2023

obrigado, espero que resolva o que vocês me mandaram, obrigado por cederem seus tempos, vou tentar tirar esse PVar e colocar variável global novamente. desculpa qualquer incômodo eu não gosto de pedir ajuda mas quando preciso eu peço.