Portal SAMP
[Ajuda] Problemas com o formato de Carregamento - 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] Problemas com o formato de Carregamento (/showthread.php?tid=4467)



Problemas com o formato de Carregamento - NandoXs - 25/01/2024

Opa, estou com um problema no meu servidor, onde eu q sou Admin tenho o Nick (Nando) e qnd alguem cria outra conta usando uma letra maiúscula ou minúscula, Ex: (NANDO), consegue acessar meu usuário admin.

Minha Stock de carregamento e salvamento da administração:

Código:
 
stock carregaradmins()
{
    new File:file = fopen("Arquivos/Admins.txt", io_read);
new Arquivo[10][128];
new PegarLinha[512];
    for(new ii; ii<MAX_ADMINS; ii++)
{
    format(Admin[ii][admNome], 40, Nome(-1));
    format(Admin[ii][admResponssavel], 40, Nome(-1));
    Admin[ii][admDia] = 0;
    Admin[ii][admMes] = 0;
    Admin[ii][admAno] = 0;
    Admin[ii][admHora] = 0;
    Admin[ii][admMinuto] = 0;
    Admin[ii][admSegundo] = 0;
    Admin[ii][admNivel] = 0;
}
if(file)
{
    for(new i; i<MAX_ADMINS; i++)
{
    fread(file, PegarLinha);
    split(PegarLinha, Arquivo, '|');
strmid(Admin[i][admNome], Arquivo[1], 0, strlen(Arquivo[1]), 255);
strmid(Admin[i][admResponssavel], Arquivo[2], 0, strlen(Arquivo[2]), 255);
    Admin[i][admDia] = strval(Arquivo[3]);
    Admin[i][admMes] = strval(Arquivo[4]);
    Admin[i][admAno] = strval(Arquivo[5]);
    Admin[i][admHora] = strval(Arquivo[6]);
    Admin[i][admMinuto] = strval(Arquivo[7]);
    Admin[i][admSegundo] = strval(Arquivo[8]);
    Admin[i][admNivel] = strval(Arquivo[9]);
}
    fclose(file);
}
return 1;
}
stock salvaradmins()
{
    new File:file;
    new PegarLinha[512];
    for(new ii; ii<MAX_ADMINS; ii++)
    {
        format(PegarLinha, sizeof PegarLinha, "%d|%s|%s|%d|%d|%d|%d|%d|%d|%d\r\n",
        ii,Admin[ii][admNome],
        Admin[ii][admResponssavel],
        Admin[ii][admDia],
        Admin[ii][admMes],
        Admin[ii][admAno],
        Admin[ii][admHora],
        Admin[ii][admMinuto],
        Admin[ii][admSegundo],
        Admin[ii][admNivel]);
        if(ii == 0) file = fopen("Arquivos/Admins.txt", io_write);
        else file = fopen("Arquivos/Admins.txt", io_append);
        fwrite(file, PegarLinha);
        fclose(file);
    }
    return 1;
}

stock AdminPlayer(playerid)
{
    if(!IsPlayerConnected2(playerid)) return 0;
    for(new i; i<MAX_ADMINS; i++) if(Comparar(Nome(playerid), Admin[i][admNome])) return Admin[i][admNivel];
    return 0;
}

stock Comparar(params1[], params[])
{
    if(strcmp(params, params1, true) == 0) return 1;
    else return 0;
}



RE: Problemas com o formato de Carregamento - Carlos Victor - 25/01/2024

Você pode verificar usando a variável Admin[ii][admNome] se há já um administrador com esse nome ou conta, dessa foram você pode barrar nomes com diferenciação de letras maiúsculas e minúsculas, usando a função strcmp que há um parâmetro para isso.


RE: Problemas com o formato de Carregamento - NandoXs - 26/01/2024

(25/01/2024 23:19)Carlos Victor Escreveu: Você pode verificar usando a variável Admin[ii][admNome] se há já um administrador com esse nome ou conta, dessa foram você pode barrar nomes com diferenciação de letras maiúsculas e minúsculas, usando a função strcmp que há um parâmetro para isso.

É como eu fiz aqui, que tu fala? No caso a minha Stock "Comparar"

Código:
stock AdminPlayer(playerid)
{
 if(!IsPlayerConnected2(playerid)) return 0;
 for(new i; i<MAX_ADMINS; i++) if(Comparar(Nome(playerid), Admin[i][admNome])) return Admin[i][admNivel];
 return 0;
}

stock Comparar(params1[], params[])
{
    if(strcmp(params, params1, true) == 0) return 1;
    else return 0;
}



RE: Problemas com o formato de Carregamento - xbruno1000x - 26/01/2024

Os sistemas de arquivos do windows e macOS não diferenciam maiúsculas de minúsculas por padrão.
Porém o SA-MP diferencia...

Então você precisa criar um bloqueio para ninguém criar nicks iguais ou migrar para o linux.


RE: Problemas com o formato de Carregamento - NandoXs - 26/01/2024

(26/01/2024 18:25)xbruno1000x Escreveu: Os sistemas de arquivos do windows e macOS não diferenciam maiúsculas de minúsculas por padrão.
Porém o SA-MP diferencia...

Então você precisa criar um bloqueio para ninguém criar nicks iguais ou migrar para o linux.

Os arquivos criados Separados, em uma pasta com Nick por Arquivo, o sistema diferencia, porém dessa forma (em um só arquivo) não;

Como eu poderia fazer este tipo de bloqueio?


RE: Problemas com o formato de Carregamento - Carlos Victor - 28/01/2024

(26/01/2024 07:01)NandoXs Escreveu:
(25/01/2024 23:19)Carlos Victor Escreveu: Você pode verificar usando a variável Admin[ii][admNome] se há já um administrador com esse nome ou conta, dessa foram você pode barrar nomes com diferenciação de letras maiúsculas e minúsculas, usando a função strcmp que há um parâmetro para isso.

É como eu fiz aqui, que tu fala? No caso a minha Stock "Comparar"

Código:
stock AdminPlayer(playerid)
{
 if(!IsPlayerConnected2(playerid)) return 0;
 for(new i; i<MAX_ADMINS; i++) if(Comparar(Nome(playerid), Admin[i][admNome])) return Admin[i][admNivel];
 return 0;
}

stock Comparar(params1[], params[])
{
    if(strcmp(params, params1, true) == 0) return 1;
    else return 0;
}

Sim, mas tem um problema, sua função ignora se a letra é minúscula ou maiúscula naquele true da função, para verificar você precisa deixar como false.

Strcmp - SA-MP Wiki (blast.hk)