SA-MP Forums Archive
[Ajuda] Ajuda com veнculos - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Ajuda com veнculos (/showthread.php?tid=662986)



Ajuda com veнculos - SamuelMatheus05 - 17.01.2019

Entao galera quer bloquear o veнculo somente para o dono conseguir entrar e to sem ideia de como posso fazer isso.
Alguem pode me ajudar? nгo quero codigo pronto nem nada sу uma base de como fazer isso.

como estб sendo criado o veiculo

PHP Code:
VeiculoInfo[playerid][CriarVeiculoPessoal] = CreateVehicle(VeiculoInfo[playerid][IDVeiculoPessoal],VeiculoInfo[playerid][XVeiculoPessoal],VeiculoInfo[playerid][YVeiculoPessoal],VeiculoInfo[playerid][ZVeiculoPessoal],VeiculoInfo[playerid][RVeiculoPessoal],VeiculoInfo[playerid][Cor1VeiculoPessoal],VeiculoInfo[playerid][Cor2VeiculoPessoal], 00); 



Re: Ajuda com veнculos - InsaneBR - 17.01.2019

Vocк pode getar o nome do dono do veнculo e comparar com o nome do jogador que entrou no mesmo na callback OnPlayerEnterVehicle ou OnPlayerStateChange.

Como fazer?

1. Na callback escolhida faзa a verificaзгo em um loop e veja se o veнculo que o jogador entrou й um veнculo pessoal.

2. Se for um veнculo pessoal, gete o nome do dono no arquivo deste veнculo.

3. Compare (strcmp) o nome do dono com o nome do jogador que entrou no veнculo, se for diferente, force o jogador a sair do veнculo (RemovePlayerFromVehicle).


Re: Ajuda com veнculos - SamuelMatheus05 - 17.01.2019

Entao mano й que foi criado no VeiculoInfo[playerid][CriarVeiculoPessoal] daн se eu fosse colocar no onplayerentervehicle como ficaria ? ja tentei de diversas maneiras mas n deu


Re: Ajuda com veнculos - InsaneBR - 18.01.2019

Nгo faz muito sentido vocк utilizar uma variбvel per-player neste caso, jб que й um veнculo que serб criado e salvo com dados do jogador, certo? Isto irб atrapalhar em manipulaзхes futuras, repense o mйtodo para a criaзгo do veнculo.

Eu salvaria o ID do veнculo que foi criado com os demais dados a serem salvos, por exemplo:
Dono = InsaneBR
ID = 0
(o 0 й referente ao primeiro veнculo criado in-game.)


Agora, em relaзгo a sua dъvida,
Quote:
Originally Posted by SamuelMatheus05
View Post
Entao mano й que foi criado no VeiculoInfo[playerid][CriarVeiculoPessoal] daн se eu fosse colocar no onplayerentervehicle como ficaria ? ja tentei de diversas maneiras mas n deu
pawn Code:
//PS: Utilizei DOF2 no exemplo.

new veiculoPessoal;//Variбvel global

//Um comando para criar o veнculo pessoal, vocк deve adaptar da maneira que lhe agradar.   
CMD:veiculo(playerid)
{
    new carString[25],
        playerName[24]
    ;  
    format(carString, sizeof(carString), "Diretorio/veiculo%i.ini", veiculoPessoal);
    new carID = AddStaticVehicle(modelid, Float:X, Float:Y, Float:Z, Float:Angle, color1, color2);
   
    GetPlayerName(playerid, playerName, 24);
    DOF2_SetString(carString, "Dono", playerName);
    //
    DOF2_SetInt(carString, "ID", carID);
    DOF2_SaveFile();
   
    veiculoPessoal++;
    return 1;
}
   
public OnGameModeInit()
{
    new carString[25];
    for(new cars; cars <= /*MБXIMO DE VEНCULOS PESSOAIS*/; cars++)
    {
        format(carString, sizeof(carString),"Diretorio/veiculo%i.ini", cars);
        if(DOF2_FileExists(carString))
        {
            new carID = AddStaticVehicle(modelid, Float:X, Float:Y, Float:Z, Float:Angle, color1, color2);
            DOF2_SetInt(carString, "ID", carID);
            DOF2_SaveFile();

            veiculoPessoal++;
        }
    }
    return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER)
    {
        new carString[25],
            playerName[24]
        ;
        GetPlayerName(playerid, playerName, 24);

        for(new cars; cars <= /*MAXIMO DE VEНCULOS PESSOAIS*/; cars++)
        {
            format(carString, sizeof(carString),"Diretorio/veiculo%i.ini", cars);
            if(GetPlayerVehicleID(playerid) == DOF2_GetInt(carString, "ID"))
            {
                if(!strcmp(DOF2_GetString(carString,"Dono"), playerName))
                    SendClientMessage(playerid, -1, "Vocк entrou no seu veнculo pessoal!");
                else
                    RemovePlayerFromVehicle(playerid);
            }
        }
    }
    return 1;
}
Nгo cheguei a testar, mas deve funcionar com suas devidas adaptaзхes.


Re: Ajuda com veнculos - SamuelMatheus05 - 18.01.2019

Ok mano entendi seu raciocinio amanhг irei refazer meu sistema creio q irб dar certo!
Obrigado mano