strcmp nгo funcionando -
rolex - 01.05.2017
Solucionado.
Re: strcmp nгo funcionando (Sistema simples de login) -
Scorpion659 - 01.05.2017
jб tive esse problema coloque assim:
PHP код:
CMD:login(playerid, params[])
{
new file[64], password[MAX_PLAYERS], inputtext[256];
format(file, sizeof(file), "Players/%s.ini", PlayerName[playerid]);
password[playerid] = dini_Get(file, "Senha");
if(sscanf(params, "i", inputtext)){
SendClientMessage(playerid, red, "Coloque sua senha somente com nъmeros!");}else{
if(strcmp(password[playerid], inputtext, false) == 0)
{
SendClientMessage(playerid, green, "SERVER: Vocк logou com sucesso!");
SpawnPlayer(playerid);
}else{SendClientMessage(playerid, -1, "{FF0000}[SERVER]: Senha errada!");}}
return 1
}
@EDIT
cara nгo entendi sua lуgica, mas assim creio que funcione, copie e cole o codigo acima e tente
Re: strcmp nгo funcionando (Sistema simples de login) -
moura98 - 01.05.2017
@Edit
Sugiro que refaзa os comandos tem muita coisa errada cade as condiзхes se ele nгo digitar nada apуs /login?
@edit2
Tente:
Код:
CMD:registrar(playerid, params[])
{
new file[64], senha;
format(file, sizeof(file), "Players/%s.ini", pegarnome(playerid));
if(sscanf(params, "i", senha)) return SendClientMessage(playerid, red, "SERVER: Use /registrar [SENHA/NЪMEROS]");
if(dini_Exists(file)) return SendClientMessage(playerid, red, "SERVER: Esta conta jб existe! Use /login [SENHA] para jogar!");
dini_Create(file);
dini_IntSet(file, "Senha", senha);
SendClientMessage(playerid, green, "SERVER: Registrado com sucesso! Digite /login [SENHA] para logar-se no servidor!");
return 1;
}
CMD:login(playerid, params[])
{
new file[60],password[256], inputtext[256], password2[256];
format(file, sizeof(file), "Players/%s.ini", pegarnome(playerid));
if( sscanf(params, "i", inputtext)) return SendClientMessage(playerid, -1, "uso correto: /login <senha>");
format(password, sizeof(password), "%i", dini_Get(file, "senha"));
if (!strcmp(password, inputtext, false))
{
SpawnPlayer(playerid);
SendClientMessage(playerid, -1, "logado com sucesso!");
}
else return SendClientMessage(playerid,-1, "senha incorreta!");
}
stock pegarnome(playerid)
{
new name[24];
GetPlayerName(playerid, name, 24);
return name;
}
Re: strcmp nгo funcionando (Sistema simples de login) -
ViniBorn - 01.05.2017
PHP код:
if(!strcmp("Texto","Texto"))
{
print("Igual");
}
Traduzindo o cуdigo acima:
Se o primeiro texto for igual ao segundo, vai exibir "Igual" no console.
Re: strcmp nгo funcionando (Sistema simples de login) -
RodrigoMSR - 01.05.2017
Recomendo utilizar um hash nas senhas, tente esse cуdigo abaixo (poderб inserir letras e caracteres na senha):
Код:
CMD:registrar(playerid, params[])
{
new file[64], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), "Players/%s.ini", name);
if(dini_Exists(file)) return SendClientMessage(playerid, red, "SERVER: Esta conta jб existe! Use /login [SENHA] para jogar!");
new senha[30];
if(sscanf(params, "s[30]", senha)) return SendClientMessage(playerid, red, "SERVER: Use /registrar [SENHA]");
if(strlen(senha) > 30 || strlen(senha) < 3) return SendClientMessage(playerid, red, "SERVER: Senha muito grande/pequena!");
dini_Create(file);
dini_IntSet(file, "Senha", udb_hash(senha));
SendClientMessage(playerid, green, "SERVER: Registrado com sucesso! Digite /login [SENHA] para logar-se no servidor!");
return 1;
}
CMD:login(playerid, params[])
{
new password[30], password2[30];
if(sscanf(params, "s[30]s[30]", password, password2)) return SendClientMessage(playerid, 0xFF0000FF, "Uso: /login [Senha] [Confirmar senha]");
new file[64], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), "Players/%s.ini", name);
new hash, hash2;
hash = udb_hash(password);
hash2 = udb_hash(password2);
if(hash != hash2) return SendClientMessage(playerid, red, "SERVER: As senhas sгo diferentes!");
if(hash != dini_Int(file, "Senha")) return SendClientMessage(playerid, red, "SERVER: Senha errada!");
SendClientMessage(playerid, green, "SERVER: Vocк logou com sucesso!");
TogglePlayerSpectating(playerid, false);
SpawnPlayer(playerid);
return 1;
}
stock udb_hash(buf[])
{
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n<length; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}
Re: strcmp nгo funcionando (Sistema simples de login) -
rolex - 02.05.2017
Deleted.
Re: strcmp nгo funcionando (Sistema simples de login) -
RodrigoMSR - 02.05.2017
Errei em algumas coisas, atualizei o post, tente de novo.
Para isso que o hash serve, para esconder a senha e dar mais seguranзa aos seus usuбrios.
Re: strcmp nгo funcionando (Sistema simples de login) -
rolex - 02.05.2017
Tu й o cara, brother! Referente ao problema de spawnar o player, sabe me dizer?
Re: strcmp nгo funcionando (Sistema simples de login) -
RodrigoMSR - 02.05.2017
Atualizei de novo com algumas correзхes de falhas, inclusive do spawn.
Re: strcmp nгo funcionando (Sistema simples de login) -
rolex - 03.05.2017
Continua nгo spawnando, vou revisar aqui o GM todo.
Brothers, vocкs todos, valeu pela disposiзгo em ajudar aн, viu!? valeu mesmo!!
abraзos!