27.09.2018, 21:02
Problema ao fazer login. 
Eu entro no servidor ele checa se o usuario existe, atй aн tudo bem, mas na hora de checar se a senha estб correta ele nгo checa, simplesmente ele entra, pode a senha ser "123", e o cara colocar no dialog "fsadsada", sempre vai entrar, alguem pode dar uma ajudinha aqui? kkk
Nгo faзo a menor ideia de como faзo pra comparar 2 textos.
A que estб em PlayerInfo[playerid][pSenha] e oque estб no inputtext.
Dб um help aqui pls :c
Aн estб todo o cуdigo da GM.
Fonte do Cуdigo: Cleyson

Eu entro no servidor ele checa se o usuario existe, atй aн tudo bem, mas na hora de checar se a senha estб correta ele nгo checa, simplesmente ele entra, pode a senha ser "123", e o cara colocar no dialog "fsadsada", sempre vai entrar, alguem pode dar uma ajudinha aqui? kkk
Nгo faзo a menor ideia de como faзo pra comparar 2 textos.
A que estб em PlayerInfo[playerid][pSenha] e oque estб no inputtext.
Dб um help aqui pls :c
Code:
#include <a_samp>
#include <a_mysql>
#define MySQL_HOST "localhost"
#define MySQL_USER "root"
#define MySQL_PASS ""
#define MySQL_DATA "banco"
#define mysql_fetch_row(%1) mysql_fetch_row_format(%1,"|")
#define DIALOG_REGISTRO 1
#define DIALOG_LOGIN 2
new MySQL:con;
enum pInfo
{
pID,
pNick[24],
pSenha[20],
pScore,
pDinheiro,
pBanco,
pAdmin,
bool:pLogado
};
new PlayerInfo[MAX_PLAYERS][pInfo];
main(){
}
public OnGameModeInit(){
con = mysql_connect(MySQL_HOST,MySQL_USER,MySQL_PASS,MySQL_DATA);
mysql_query(con,"CREATE TABLE IF NOT EXISTS contas(id INT(11) NOT NULL AUTO_INCREMENT, nick VARCHAR(24) NOT NULL, senha VARCHAR(40) NOT NULL, score INT(11) DEFAULT '15', banco BIGINT(20) NOT NULL,dinheiro BIGINT(20) NOT NULL)");
if(mysql_errno(con) != 0){
printf("Falha na conexгo com o banco de dados.");
}else{
printf("Conexгo com o banco de dados bem sucedida.");
}
return 1;
}
public OnGameModeExit()
{
for(new i = 0; i < MAX_PLAYERS; i++) SalvarDados(i);
mysql_close(con);
return 1;
}
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid, PlayerInfo[playerid][pNick], 24);
new Query[90];
mysql_format(con, Query, sizeof(Query), "SELECT * FROM `contas` WHERE nick='%s'", PlayerInfo[playerid][pNick]);
mysql_tquery(con, Query, "PegarSenha", "i", playerid);
mysql_format(con, Query, sizeof(Query), "SELECT * FROM `contas` WHERE nick='%s'", PlayerInfo[playerid][pNick]);
mysql_tquery(con, Query, "VerificarContas", "i", playerid);
return 1;
}
forward VerificarContas(playerid);
public VerificarContas(playerid)
{
new Dialog[240];
if(cache_num_rows() > 0)
{
cache_get_value(0, "Senha", PlayerInfo[playerid][pSenha], 20);
format(Dialog, sizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocк ja tem uma Conta registrada\n\nDigite sua senha para Logar\n\nStatus: {1E90FF}Registrado", PlayerInfo[playerid][pNick]);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", Dialog, "Logar", "Cancelar");
} else {
format(Dialog, sizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocк nгo tem uma Conta registrada\n\nDigite uma senha para Registrar\n\nStatus: {058AFF}N/A Registrado", PlayerInfo[playerid][pNick]);
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", Dialog, "Registrar", "Cancelar");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SalvarDados(playerid);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DIALOG_REGISTRO:
{
if(!response) return Kick(playerid);
if(strlen(inputtext) < 4 || strlen(inputtext) > 20)
{
SendClientMessage(playerid, -1, "ERRO:{FFFFFF} A senha deve conter de 4 a 20 caracteres!");
new Dialog[240];
format(Dialog, sizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocк nгo tem uma Conta registrada\n\nDigite uma senha para Registrar\n\nStatus: {058AFF}N/A Registrado", PlayerInfo[playerid][pNick]);
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", Dialog, "Registrar", "Cancelar");
} else {
new Query[100];
mysql_format(con, Query, sizeof(Query), "INSERT INTO `contas`(`nick`, `senha`) VALUES ('%s', '%s')", PlayerInfo[playerid][pNick], inputtext);
mysql_tquery(con, Query, "DadosRegistrados", "i", playerid);
RegistrarDados(playerid);
}
}
case DIALOG_LOGIN:
{
if(!response) return Kick(playerid);
if(!strlen(inputtext))
{
SendClientMessage(playerid, -1, "ERRO:{FFFFFF} Vocк nгo digitou a senha !");
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:", "Digite sua senha abaixo para logar-se", "Logar", "Voltar");
return 1;
}
if(!strcmp(PlayerInfo[playerid][pSenha], inputtext, true, 20))
{
new Query[70];
mysql_format(con, Query, sizeof(Query), "SELECT * FROM `contas` WHERE nick='%s'", PlayerInfo[playerid][pNick]);
mysql_tquery(con, Query, "CarregarContas", "d", playerid);
PlayerInfo[playerid][pLogado] = true;
} else {
SendClientMessage(playerid, -1, "ERRO:{FFFFFF} Senha incorreta !");
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:", "Digite sua senha abaixo para logar-se", "Logar", "Voltar");
}
}
}
return 1;
}
public OnPlayerUpdate(playerid)
{
new Query[70];
mysql_format(con, Query, sizeof(Query), "SELECT * FROM `contas` WHERE nick='%s'", PlayerInfo[playerid][pNick]);
mysql_tquery(con, Query, "AtualizarConta", "i", playerid);
if(GetPlayerMoney(playerid) != PlayerInfo[playerid][pDinheiro]){
GivePlayerMoney(playerid,- GetPlayerMoney(playerid));
GivePlayerMoney(playerid, PlayerInfo[playerid][pDinheiro]);
}
if(GetPlayerScore(playerid) != PlayerInfo[playerid][pScore]){
SetPlayerScore(playerid,PlayerInfo[playerid][pScore]);
}
return 1;
}
forward AtualizarConta(playerid);
public AtualizarConta(playerid)
{
cache_get_value_int(0, "score", PlayerInfo[playerid][pScore]);
cache_get_value_int(0, "dinheiro", PlayerInfo[playerid][pDinheiro]);
cache_get_value_int(0, "banco", PlayerInfo[playerid][pBanco]);
return 1;
}
forward DadosRegistrados(playerid);
public DadosRegistrados(playerid)
{
printf("-> Nova conta registrada ID: %d", PlayerInfo[playerid][pID]);
return 1;
}
forward CarregarContas(playerid);
public CarregarContas(playerid)
{
cache_get_value_int(0, "id", PlayerInfo[playerid][pID]);
cache_get_value_int(0, "admin", PlayerInfo[playerid][pAdmin]);
cache_get_value_int(0, "score", PlayerInfo[playerid][pScore]);
cache_get_value_int(0, "dinheiro", PlayerInfo[playerid][pDinheiro]);
cache_get_value_int(0, "banco", PlayerInfo[playerid][pBanco]);
CarregarDados(playerid);
return 1;
}
forward PegarSenha(playerid);
public PegarSenha(playerid)
{
cache_get_value(0, "senha", PlayerInfo[playerid][pSenha]);
CarregarDados(playerid);
return 1;
}
stock RegistrarDados(playerid)
{
PlayerInfo[playerid][pDinheiro] = 500;
PlayerInfo[playerid][pBanco] = 1000;
PlayerInfo[playerid][pAdmin] = 0;
PlayerInfo[playerid][pScore] = 15;
CarregarDados(playerid);
return 1;
}
stock CarregarDados(playerid)
{
PlayerInfo[playerid][pLogado] = true;
SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
GivePlayerMoney(playerid,- GetPlayerMoney(playerid));
GivePlayerMoney(playerid, PlayerInfo[playerid][pDinheiro]);
return 1;
}
stock SalvarDados(playerid)
{
if(PlayerInfo[playerid][pLogado] == false) return 1;
PlayerInfo[playerid][pDinheiro] = GetPlayerMoney(playerid);
new Query[350];
mysql_format(con, Query, sizeof(Query), "UPDATE `contas` SET `score`=%d, `admin`=%d, `dinheiro`=%d, `banco`=%d WHERE `nick`=%d",
PlayerInfo[playerid][pScore],
PlayerInfo[playerid][pAdmin],
PlayerInfo[playerid][pDinheiro],
PlayerInfo[playerid][pBanco],
PlayerInfo[playerid][pNick]);
mysql_tquery(con, Query, "DadosSalvos","d", playerid);
PlayerInfo[playerid][pScore] = 0;
PlayerInfo[playerid][pAdmin] = 0;
PlayerInfo[playerid][pDinheiro] = 0;
PlayerInfo[playerid][pBanco] = 0;
PlayerInfo[playerid][pLogado] = false;
return 1;
}
forward DadosSalvos(playerid);
public DadosSalvos(playerid) return printf("-> Conta salva ID: %d", PlayerInfo[playerid][pID]);
Fonte do Cуdigo: Cleyson



