Portal SAMP
[Ajuda] criar carro colocando a cor - 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] criar carro colocando a cor (/showthread.php?tid=3275)



criar carro colocando a cor - fearsa - 01/02/2023

boa noite. eu estou com um problema no meu sistema de spawnar carro.. ele criar tudo certo.. porém eu quero que ele crie usando assim: /car elegy cor1 cor2 e /car elegy com a cor aleatória.. porém so consigo criar com /car elegy e não consigo criar escolhendo a cor /car elegy 0 0 

se eu coloco no sscanf ele fica somente criar colocando a cor mas eu quero que tenha as duas opções.. 
Código:
CMD:car(playerid, params[])
{
new GetVehicle[15],interior;
if(PlayerInfo[playerid][modo] == 2)return SendClientMessage(playerid,Vermelho,"[ ERRO ] Comando bloqueado para este modo!!");
    GetPlayerPos(playerid,PlayerInfo[playerid][pPos][0],PlayerInfo[playerid][pPos][1],PlayerInfo[playerid][pPos][2]);
GetPlayerFacingAngle(playerid,PlayerInfo[playerid][pPos][3]);
interior = GetPlayerInterior(playerid);

    if(sscanf(params,"s[15]",GetVehicle)) return SendClientMessage(playerid,Vermelho,"[ ERRO ] Digite: /Car [Nome do Veiculo]");
    if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, Vermelho, "[ ERRO ] Voce nao pode criar um Veiculo dentro de outro!");

    new bool:existe, VeiculoID;
    for(new r = 0;r < 212; r++)
    {
        if(!strcmp(GetVehicle, VehicleNames[r],true))
        {
existe = true;
        }
        if(!strcmp(GetVehicle, VehicleNames[r],true)) VeiculoID = (r+400);
}
    if(!existe) return SendClientMessage(playerid,Vermelho,"[ ERRO ] Esse Veiculo nao existe!");

    if(VeiculoID == 520 || VeiculoID == 432 || VeiculoID == 592 || VeiculoID == 425 || VeiculoID == 464 || VeiculoID == 476 || VeiculoID == 447 || VeiculoID == 469 || VeiculoID == 441 || VeiculoID == 465 || VeiculoID == 501 || VeiculoID == 564 || VeiculoID == 594 || VeiculoID == 577)
{

if(GetPlayerVirtualWorld(playerid) == 0 || GetPlayerVirtualWorld(playerid) == 50)
return SendClientMessage(playerid, Vermelho, "[ ERRO ] Esse veiculo esta liberado somente no modo Livre ~> /Modos");

}
    if(PegarCarro[playerid] != -1 )
    DestroyVehicle(PegarCarro[playerid]);
    PegarCarro[playerid] = CreateVehicle(VeiculoID,PlayerInfo[playerid][pPos][0],PlayerInfo[playerid][pPos][1],PlayerInfo[playerid][pPos][2]+1,PlayerInfo[playerid][pPos][3],-1,-1, 0);
    LinkVehicleToInterior(PegarCarro[playerid],interior);
    SetVehicleVirtualWorld(PegarCarro[playerid] ,GetPlayerVirtualWorld(playerid));
    PutPlayerInVehicle(playerid,PegarCarro[playerid], 0);
    LigarCarro(playerid);
   
    SendClientMessage(playerid,0x799dc9FF,"[ ZP ] {FFFFFF}Veiculo criado com sucesso! ( Nome: {799dc9}%s{FFFFFF} )", VehicleNames[VeiculoID-400]);
    return 1;
}



RE: criar carro colocando a cor - xbruno1000x - 01/02/2023

Substitua a linha 3, 9 e 32 respectivamente:
Código:
new GetVehicle[15], cor1, cor2, interior;

if(sscanf(params, "s[15]dd", GetVehicle, cor1, cor2)) return SendClientMessage(playerid, Vermelho,"[ ERRO ] Digite: /Car [Nome do Veiculo][COR 1][COR 2]");

PegarCarro[playerid] = CreateVehicle(VeiculoID,PlayerInfo[playerid][pPos][0],PlayerInfo[playerid][pPos][1],PlayerInfo[playerid][pPos][2]+1,PlayerInfo[playerid][pPos][3], cor1, cor2, 0);



RE: criar carro colocando a cor - fearsa - 01/02/2023

(01/02/2023 22:06)xbruno1000x Escreveu: Substitua a linha 3, 9 e 32 respectivamente:
Código:
new GetVehicle[15], cor1, cor2, interior;

if(sscanf(params, "s[15]dd", GetVehicle, cor1, cor2)) return SendClientMessage(playerid, Vermelho,"[ ERRO ] Digite: /Car [Nome do Veiculo][COR 1][COR 2]");

PegarCarro[playerid] = CreateVehicle(VeiculoID,PlayerInfo[playerid][pPos][0],PlayerInfo[playerid][pPos][1],PlayerInfo[playerid][pPos][2]+1,PlayerInfo[playerid][pPos][3], cor1, cor2, 0);
Eu fiz assim como falei acima ele só spawna colocando as duas cores.. eu quero isso e quero que ele spawne com a cor aleatória tb.. as duas opções no caso.


RE: criar carro colocando a cor - White_Blue - 01/02/2023

Você não está colocando o ponteiro da cor no sscanf, fora que o código está com alguns erros a mais.


Código totalmente corrigido:

Código PHP:
CMD:car(playeridparams[]) {
  new GetVehicle[15], interiorAngleFloat:XFloat:YFloat:Zmodelobool:existe[MAX_PLAYERS], str[128], cor1cor2;
  if(PlayerInfo[playerid][modo] == 2) return SendClientMessage(playerid,Vermelho,"[ ERRO ] Comando bloqueado para este modo!!");


    GetPlayerPos(playeridPlayerInfo[playerid][pPos][0], PlayerInfo[playerid][pPos][1], PlayerInfo[playerid][pPos][2]);
    interior GetPlayerInterior(playerid);
    GetPlayerFacingAngle(playeridAngle);
    GetPlayerPos(playeridXYZ);

    if(sscanf(params,"s[15]D(-1)D(-1)"/* Esse -1 e D maiúsculo torna os parâmetros das cores opicionais, por padrão a cor vai vir como branco.*/GetVehiclecor1cor2)) return SendClientMessage(playeridVermelho"[ ERRO ] Digite: /Car [Nome do Veiculo]");
    if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playeridVermelho"[ ERRO ] Voce nao pode criar um
Veiculo dentro de outro!"
);

       for(new 0212r++)  {
            if(!
strcmp(GetVehicleVehicleNames[r],true)) {
    
        existe[playerid] = true;
          }
        if(!strcmp(GetVehicleVehicleNames[r], true)) modelo = (400);
      }

         if(!existe) return SendClientMessage(playeridVermelho"[ ERRO ] Esse Veiculo nao existe!");

        if(
modelo == 520 || modelo == 432 || modelo == 592 ||
        
modelo == 425 || modelo == 464 || modelo == 476 || modelo ==
        
447 || modelo == 469 || modelo == 441 || modelo == 465 ||
        
modelo == 501 || modelo == 564 || modelo == 594 || modelo == 577)  {
           if(GetPlayerVirtualWorld(playerid) == || GetPlayerVirtualWorld(playerid) == 50) return SendClientMessage(playeridVermelho"[ ERRO ] Esse veiculo esta liberado somente no modo Livre ~> /Modos");
        }
    if(PegarCarro[playerid] != -)
    DestroyVehicle(PegarCarro[playerid]);
    PegarCarro[playerid] =
    
AddStaticVehicleEx(modeloXYZAnglecor1cor230); // Você não está usando o parâmetro das cores aqui. Está -1, -1 o que é branco. E tomei a liberdade de trocar CreateVehicle por AddStaticVehicleEx por que é melhor.
    LinkVehicleToInterior(PegarCarro[playerid], interior);
    SetVehicleVirtualWorld(PegarCarro[playerid], GetPlayerVirtualWorld(playerid));
    PutPlayerInVehicle(playeridPegarCarro[playerid], 0);
    LigarCarro(playerid);

    format(strsizeof(str), "[ ZP ] {FFFFFF}Veiculo criado
 com sucesso! ( Nome: {799dc9}%s{FFFFFF}"
VehicleNames[VeiculoID 400]);

    SendClientMessage(playerid0x799dc9FFstr); // Não está formatando a string nessa linha.
    return 1;





RE: criar carro colocando a cor - fearsa - 01/02/2023

(01/02/2023 22:34)White_Blue Escreveu: Você não está colocando o ponteiro da cor no sscanf, fora que o código está com alguns erros a mais.


Código totalmente corrigido:

Código PHP:
CMD:car(playeridparams[]) {
  new GetVehicle[15], interiorAngleFloat:XFloat:YFloat:Zmodelobool:existe[MAX_PLAYERS], str[128], cor1cor2;
  if(PlayerInfo[playerid][modo] == 2) return SendClientMessage(playerid,Vermelho,"[ ERRO ] Comando bloqueado para este modo!!");


    GetPlayerPos(playeridPlayerInfo[playerid][pPos][0], PlayerInfo[playerid][pPos][1], PlayerInfo[playerid][pPos][2]);
    interior GetPlayerInterior(playerid);
    GetPlayerFacingAngle(playeridAngle);
    GetPlayerPos(playeridXYZ);

    if(sscanf(params,"s[15]D(-1)D(-1)"/* Esse -1 e D maiúsculo torna os parâmetros das cores opicionais, por padrão a cor vai vir como branco.*/GetVehiclecor1cor2)) return SendClientMessage(playeridVermelho"[ ERRO ] Digite: /Car [Nome do Veiculo]");
    if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playeridVermelho"[ ERRO ] Voce nao pode criar um
Veiculo dentro de outro!"
);

       for(new 0212r++)  {
            if(!
strcmp(GetVehicleVehicleNames[r],true)) {
    
        existe[playerid] = true;
          }
        if(!strcmp(GetVehicleVehicleNames[r], true)) modelo = (400);
      }

         if(!existe) return SendClientMessage(playeridVermelho"[ ERRO ] Esse Veiculo nao existe!");

        if(
modelo == 520 || modelo == 432 || modelo == 592 ||
        
modelo == 425 || modelo == 464 || modelo == 476 || modelo ==
        
447 || modelo == 469 || modelo == 441 || modelo == 465 ||
        
modelo == 501 || modelo == 564 || modelo == 594 || modelo == 577)  {
           if(GetPlayerVirtualWorld(playerid) == || GetPlayerVirtualWorld(playerid) == 50) return SendClientMessage(playeridVermelho"[ ERRO ] Esse veiculo esta liberado somente no modo Livre ~> /Modos");
        }
    if(PegarCarro[playerid] != -)
    DestroyVehicle(PegarCarro[playerid]);
    PegarCarro[playerid] =
    AddStaticVehicleEx(modeloXYZAnglecor1cor230); // Você não está usando o parâmetro das cores aqui. Está -1, -1 o que é branco. E tomei a liberdade de trocar CreateVehicle por AddStaticVehicleEx por que é melhor.
    LinkVehicleToInterior(PegarCarro[playerid], interior);
    SetVehicleVirtualWorld(PegarCarro[playerid], GetPlayerVirtualWorld(playerid));
    PutPlayerInVehicle(playeridPegarCarro[playerid], 0);
    LigarCarro(playerid);

    format(strsizeof(str), "[ ZP ] {FFFFFF}Veiculo criado
 com sucesso! ( Nome: {799dc9}%s{FFFFFF}"
VehicleNames[VeiculoID 400]);

    SendClientMessage(playerid0x799dc9FFstr); // Não está formatando a string nessa linha.
    return 1;



edit: vlw.. eu esqueci do cor1 e cor2 no sscanf.