SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 04/11/2018, 10:59 PM   #1
SmokeKiLL
Huge Clucker
 
Join Date: Aug 2017
Posts: 385
Reputation: 2
Default Como que eu faço pra gerar letras e números aleatórios?

Fala pessoal, estou com um dúvida, não sei a lógica pra gerar letras e números aleatórios, eu queria que gerasse assim:

ABC-1234

Seria esse padrão, estou tentando criar um sistema que cada veículo tenha uma placa. Se alguém puder me ajudar eu agradeço <3
SmokeKiLL is offline   Reply With Quote
Old 04/11/2018, 11:46 PM   #2
Ermanhaut
Gangsta
 
Ermanhaut's Avatar
 
Join Date: Apr 2016
Location: Brazil
Posts: 661
Reputation: 47
Default Re: Como que eu faço pra gerar letras e números aleatórios?

pawn Code:
randomChar() {
  static c[2];
  format(c, 2, "%c", random(26) + 'A');
  return c;
}

new string[9];
format(string, sizeof string, "%s%s%s-%04d", randomChar(), randomChar(), randomChar(), random(10000));
SendClientMessage(playerid, -1, string);

//  Resultado possível: JIN-0929

Sei que é horrível retornar strings, mas acho que isso não vai dar nenhum problema.
__________________
try, try and try again
Ermanhaut is offline   Reply With Quote
Old 04/11/2018, 11:56 PM   #3
SmokeKiLL
Huge Clucker
 
Join Date: Aug 2017
Posts: 385
Reputation: 2
Default Re: Como que eu faço pra gerar letras e números aleatórios?

Funcionou, você poderia me dar uma pequena base de como seria pra salvar em DOF2? o nome do arquivo com o que gerou.
SmokeKiLL is offline   Reply With Quote
Old 05/11/2018, 12:12 AM   #4
Ermanhaut
Gangsta
 
Ermanhaut's Avatar
 
Join Date: Apr 2016
Location: Brazil
Posts: 661
Reputation: 47
Default Re: Como que eu faço pra gerar letras e números aleatórios?

pawn Code:
new string[32];
tryagain:
format(string, sizeof string, "veiculos/%s.ini", generateUniquePlaque());
if(!DOF2_FileExists(string)) {
  // Salvar dados;
} else goto tryagain;

generateUniquePlaque() {
  static str[10];
  format(str, sizeof str, "%s%s%s-%04d", randomChar(), randomChar(), randomChar(), random(10000));
  return str;
}

randomChar() {
  static c[2];
  format(c, 2, "%c", random(26) + 'A');
  return c;
}
__________________
try, try and try again
Ermanhaut is offline   Reply With Quote
Old 05/11/2018, 12:22 AM   #5
SmokeKiLL
Huge Clucker
 
Join Date: Aug 2017
Posts: 385
Reputation: 2
Default Re: Como que eu faço pra gerar letras e números aleatórios?

Não funcionou aqui, eu fiz assim:
PHP Code:
CMD:teste(playerid)
{
    
GerarPlaca();
    return 
1;
}

stock GerarPlaca()
{
    new 
str[128];
    
format(strsizeof(str), "Veiculos/%s%s%s-%04d.ini"randomChar(), randomChar(), randomChar(), random(10000));

    if(!
DOF2_FileExists(str))
    {
        
DOF2_CreateFile(str);
    }
    return 
1;

Fica certo assim? está funcionando...
SmokeKiLL is offline   Reply With Quote
Old 05/11/2018, 12:32 AM   #6
Ermanhaut
Gangsta
 
Ermanhaut's Avatar
 
Join Date: Apr 2016
Location: Brazil
Posts: 661
Reputation: 47
Default Re: Como que eu faço pra gerar letras e números aleatórios?

Sim, isso mesmo.
Porém, se houver um arquivo com o mesmo nome, nada será feito.
pawn Code:
stock GerarPlaca()
{
    new str[128];
    tentar_novamente:
    format(str, sizeof(str), "Veiculos/%s%s%s-%04d.ini", randomChar(), randomChar(), randomChar(), random(10000));

    if(!DOF2_FileExists(str)) //Se o arquivo não existir, faça isso
    {
        DOF2_CreateFile(str);
    }
    else // Se houver um arquivo com o mesmo nome, faça isso
    {
        goto tentar_novamente; // "goto" quer dizer "vá para", que faz com que o fluxo do programa vá ali pra cima, realizando o código novamente. Isto acontecerá até uma placa com um nome único ser gerada.
    }
    return 1;
}
__________________
try, try and try again
Ermanhaut is offline   Reply With Quote
Old 05/11/2018, 12:37 AM   #7
SmokeKiLL
Huge Clucker
 
Join Date: Aug 2017
Posts: 385
Reputation: 2
Default Re: Como que eu faço pra gerar letras e números aleatórios?

AAAAAAH daora, valeu <3 vou testar aqui !
SmokeKiLL is offline   Reply With Quote
Old 05/11/2018, 12:41 AM   #8
SmokeKiLL
Huge Clucker
 
Join Date: Aug 2017
Posts: 385
Reputation: 2
Default Re: Como que eu faço pra gerar letras e números aleatórios?

Está gerando... Valeu mano +REP
SmokeKiLL is offline   Reply With Quote
Old 05/11/2018, 01:01 AM   #9
SmokeKiLL
Huge Clucker
 
Join Date: Aug 2017
Posts: 385
Reputation: 2
Default Re: Como que eu faço pra gerar letras e números aleatórios?

Mano, só mais uma coisa... eu to fazendo assim:

PHP Code:
CMD:teste(playerid)
{
    new 
veiculo;
    
vehInfo[veiculo][vehModel] = 560;
    
GerarPlaca(veiculo);
    return 
1;
}

stock GerarPlaca(idx)
{
    new 
str[128];
    
tentar_novamente:
    
    for(new 
0MAX_VEHICLEi++)
    {
        
format(strsizeof(str), "Veiculos/%s%s%s-%04d.ini"randomChar(), randomChar(), randomChar(), random(10000));

        if(!
DOF2_FileExists(str)) //Se o arquivo não existir, faça isso
        
{
            
DOF2_CreateFile(str);

            
DOF2_SetInt(str"Modelo"vehInfo[idx][vehModel]);

            
DOF2_SaveFile();
        }
        else 
// Se houver um arquivo com o mesmo nome, faça isso
        
{
            goto 
tentar_novamente// "goto" quer dizer "vá para", que faz com que o fluxo do programa vá ali pra cima, realizando o código novamente. Isto acontecerá até uma placa com um nome único ser gerada.
        
}
    }
    return 
1;

Só que ta criando 500 arquivos... como devo fazer?
SmokeKiLL is offline   Reply With Quote
Old 05/11/2018, 01:12 AM   #10
Felipealves
Huge Clucker
 
Felipealves's Avatar
 
Join Date: Mar 2016
Location: Paraná
Posts: 449
Reputation: 25
Default Re: Como que eu faço pra gerar letras e números aleatórios?

PHP Code:
stock GerarPlaca(idx)
{
    new 
str[128];
    
tentar_novamente:
    
    for(new 
0MAX_VEHICLEi++)
    {
        
format(strsizeof(str), "Veiculos/%s%s%s-%04d.ini"randomChar(), randomChar(), randomChar(), random(10000));

        if(!
DOF2_FileExists(str)) //Se o arquivo não existir, faça isso
        
{
            
DOF2_CreateFile(str);

            
DOF2_SetInt(str"Modelo"vehInfo[idx][vehModel]);

            
DOF2_SaveFile();
            return 
1// ou break;
        
}
        else 
// Se houver um arquivo com o mesmo nome, faça isso
        
{
            goto 
tentar_novamente// "goto" quer dizer "vá para", que faz com que o fluxo do programa vá ali pra cima, realizando o código novamente. Isto acontecerá até uma placa com um nome único ser gerada.
        
}
    }
    return 
1;

Felipealves is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Pedido] Gerar números 2 aleatórios sem repetir GasparzinhoXD Português/Portuguese 13 28/06/2018 04:45 PM
[Ajuda] Ajuda em numeros aleatorios para cod SamuelMatheus05 Português/Portuguese 4 20/02/2018 11:57 PM
[Ajuda] Login com Letras e Números ranzatti Português/Portuguese 2 05/02/2017 01:32 AM
[Ajuda] Salvar letras e numeros blackunik Português/Portuguese 1 05/03/2013 12:23 AM
[Ajuda] Letras ou numeros Duduloch Português/Portuguese 18 03/01/2013 11:13 PM


All times are GMT. The time now is 09:28 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.