Portal SAMP
[Ajuda] Retornos de ID dos veiculos - 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] Retornos de ID dos veiculos (/showthread.php?tid=1759)



Retornos de ID dos veiculos - k2bi_YT - 22/10/2021

Estou com uma duvida e não estou conseguindo ter alguma ideia de como resolver o seguinte problema .

Exemplo, quando o jogador usar tal comando para criar o veículo estou fazendo o seguinte esquema.
Código PHP:
new vehicleid INVALID_VEHICLE_ID;
vehicleid CreateVehicle(...);
format(SVeh[vehicleid][Owner], MAX_PLAYER_NAMEPlayerName(playerid)); 

Feito isso, minha duvida começa pela DIALOG. Eu fazendo todas as listagem dos veiculos, suponhamos que eu tenho criado 3 veiculos com a mesma função acima e estou querendo mudar o modelo do 2 veiculo, sendo que eu selecionei a segunda das tres opção de veiculos criados.
Como posso identificar o ID do veiculo para estar fazendo a troca do modelo? Ou até mesmo destruindo o veículo, isso é, eu selecionei o veiculo que eu quero fazer alterações pela DIALOG_LIST. Como posso estar usando a função, por exemplo DestroyVehicle(..), como irei identificar o ID do veiculo selecionado na dialog para fazer essas alterações?

Espero que tenham compreendido minha duvida.


RE: Retornos de ID dos veiculos - xbruno1000x - 22/10/2021

new variavel[Linhas][Colunas];

A cada coluna adicionada, a variável poderá comportar 1 veículo a mais.

Edit:
Um Exemplo para fazer isso:

new WeaponStats[MAX_PLAYERS][11];

Eu uso da seguinte forma:
WeaponStats[playerid][ID Da Weapon Skill];


RE: Retornos de ID dos veiculos - ipsLuan - 23/10/2021

Código PHP:
new myVehicles[MAX_PLAYERS][3];

myVehicles[playerid][0] = CreateVehicle(...);
myVehicles[playerid][1] = CreateVehicle(...);
myVehicles[playerid][2]= CreateVehicle(...); 



RE: Retornos de ID dos veiculos - ProKillerPa - 23/10/2021

Bom dia! Pelo que entendi, voce deu um exemplo de 3 veiculos, mas não seria o limite maximo, logo o comentário acima não resolveria seu problema.
Se eu entendi corretamente, eu faria da seguinte forma:

Levando em consideração que 'SVeh[vehicleid][Owner]' armazena o nome de cada jogador no ID do veiculo, fica facil a gente fazer uma verificação de nome 
através de um loop, veja:

Código PHP:
new msg[50], msg2[50 5]; // Alterar 5 pelo MAX de veiculos.

for(new iMAX_VEHICLESi++){

    if(IsValidVehicle(i)){

        if(strcmp(SVeh[i][Owner], NomePQP(playerid), true) == 0){

            format(msgsizeof msg"Veiculo %s\n"); // colocar getvehiclename(i)
            strcat(msg2msg)
        }
    }
}

ShowPlayerDialog(playeriddialogidstylecaption[], msg2button1[], button2[]); 

Agora voce me pergunta, como que eu irei acessar o veiculo 2? Facil, através de uma variavel que fará a contagem de voltas dentro do strcmp.

Na resposta do dialogid:

Código PHP:
new pqp 0;

for(new 
iMAX_VEHICLESi++){

    if(IsValidVehicle(i)){

        if(strcmp(SVeh[i][Owner], NomePQP(playerid), true) == 0){

            if(pqp == listitem){

                //Aqui voce achou o seu veiculo clicado no dialog!

                break;
            }

            pqp++;
        }
    }


Lembrando que NomePQP(playerid) é uma stock que retorna o nome do jogador.

Espero que entendi corretamente seu problema. Abraços!


RE: Retornos de ID dos veiculos - k2bi_YT - 23/10/2021

(23/10/2021 11:42)ProKillerPa Escreveu: Bom dia! Pelo que entendi, voce deu um exemplo de 3 veiculos, mas não seria o limite maximo, logo o comentário acima não resolveria seu problema.
Se eu entendi corretamente, eu faria da seguinte forma:

Levando em consideração que 'SVeh[vehicleid][Owner]' armazena o nome de cada jogador no ID do veiculo, fica facil a gente fazer uma verificação de nome 
através de um loop, veja:

Código PHP:
new msg[50], msg2[50 5]; // Alterar 5 pelo MAX de veiculos.

for(new iMAX_VEHICLESi++){

    if(IsValidVehicle(i)){

        if(strcmp(SVeh[i][Owner], NomePQP(playerid), true) == 0){

            format(msgsizeof msg"Veiculo %s\n"); // colocar getvehiclename(i)
            strcat(msg2msg)
        }
    }
}

ShowPlayerDialog(playeriddialogidstylecaption[], msg2button1[], button2[]); 

Agora voce me pergunta, como que eu irei acessar o veiculo 2? Facil, através de uma variavel que fará a contagem de voltas dentro do strcmp.

Na resposta do dialogid:

Código PHP:
new pqp 0;

for(new 
iMAX_VEHICLESi++){

    if(IsValidVehicle(i)){

        if(strcmp(SVeh[i][Owner], NomePQP(playerid), true) == 0){

            if(pqp == listitem){

                //Aqui voce achou o seu veiculo clicado no dialog!

                break;
            }

            pqp++;
        }
    }


Lembrando que NomePQP(playerid) é uma stock que retorna o nome do jogador.

Espero que entendi corretamente seu problema. Abraços!


Sim, é bem isso que eu queria mesmo. Já cheguei a fazer algo bem semelhante a tempos atrás porém não lembrava como era, obrigado pela ajuda.

Agradeço a todos pela ajuda. Obrigado!