Comando - Enila182 - 08/10/2024
Eae pessoal, estou com uma dificuldade.
Criei um comando pra puxar dados do jogadores no MySQL só que não acontece nada.
Código: CMD:login(playerid, params[]) {
new player[24];
if(IsPlayerAdmin(playerid)) {
if(sscanf(params, "s[24]", player)) {
SendClientMessage(playerid, Vermelho, "| ERRO | Digite: /login [Nick]");
return 1;
}
new query[256];
format(query, sizeof(query), "SELECT `ContaID`, `Email`, `Ultimo_Login_Dia`, `Ultimo_Login_Mes`, `Ultimo_Login_Ano`, `Ultimo_Login_Hora`, `Ultimo_Login_Minutos`, `Ultimo_Login_Segundos` FROM `jogador` WHERE `Nome` = '%s' LIMIT 1", player);
mysql_tquery(Conexao, query, "OnPlayerLoginInfo", "i", playerid);
} else SendClientMessage(playerid, Vermelho, "| ERRO | Você não tem permissão!");
return 1;
}
function:OnPlayerLoginInfo(playerid) {
if(cache_num_rows() == 0) {
SendClientMessage(playerid, Vermelho, "| ERRO | Jogador não encontrado!");
return 1;
}
new conta_id;
new email[64];
new login_dia, login_mes, login_ano;
new login_hora, login_minutos, login_segundos;
new nome[24];
cache_get_value_index_int(0, 0, conta_id);
cache_get_value_index(0, 1, email, sizeof(email));
cache_get_value_index(0, 2, nome, sizeof(nome));
cache_get_value_index_int(0, 3, login_dia);
cache_get_value_index_int(0, 4, login_mes);
cache_get_value_index_int(0, 5, login_ano);
cache_get_value_index_int(0, 6, login_hora);
cache_get_value_index_int(0, 7, login_minutos);
cache_get_value_index_int(0, 8, login_segundos);
// Formata a data e hora de login
new login_data[64];
format(login_data, sizeof(login_data), "%02d/%02d/%04d - %02d:%02d:%02d",
login_dia, login_mes, login_ano, login_hora, login_minutos, login_segundos);
// Exibe as informações no diálogo
new str[512];
format(str, sizeof(str), "{FFFFFF}Nome: {FFFF00}%s\n{FFFFFF}Conta ID: {FFFF00}%d\n{FFFFFF}Email: {FFFF00}%s\n{FFFFFF}Último Login: {FFFF00}%s\n", nome, conta_id, email, login_data);
ShowPlayerDialog(playerid, D_PUXAR_LOGIN, DIALOG_STYLE_MSGBOX, "{FFFF00}Informações da Conta", str, "OK", "");
return 1;
}
RE: Comando - Enila182 - 10/10/2024
Alguém sabe como corrigir?
RE: Comando - Carlos Victor - 10/10/2024
Acredito que o problema esteja na coluna Nome que você tenta acessar em OnPlayerLoginInfo sem antes ter selecionado ela na consulta. Eu alterei um pouco o comando, dá uma olhada e qualquer deixa do seu jeito, mas eu tenho algumas dicas e alterações que eu com certeza faria:
1. Utilizar o ; no final de toda query, para dizer ao MySQL que a consulta termina ali.
2. Ao invés de criar 6 colunas para armazenar o último login, você pode só criar uma coluna com o o tipo DATETIME e depois manipular como quer mostrar. O tipo DATETIME salva o tempo da forma 00/00/0000 00:00:00 e você pode manipular ele como timestamp, ou então formatar da forma que quiser.
3. Procurar sempre otimizar o código, evitar ficar criando variáveis de forma excessiva e reutilizar variáveis grandes, apenas limpando e inserindo informações nela.
Código PHP: CMD:login(playerid, params[]) { if (IsPlayerAdmin(playerid)) return SendClientMessage(playerid, Vermelho, "| ERRO | Você não tem permissão!");
if ((strlen(params) < 3 || strlen(params) > 24) || isnull(params)) return SendClientMessage(playerid, Vermelho, "| ERRO | Digite: /login [Nick]"); new query[78] ;
format(query, sizeof query, "SELECT * FROM `jogador` WHERE `Nome`='%s' LIMIT 1;", params); mysql_tquery(Conexao, query, "OnPlayerLoginInfo", "i", playerid); return 1; }
forward OnPlayerLoginInfo(playerid); public OnPlayerLoginInfo(playerid) { if(!cache_num_rows()) return SendClientMessage(playerid, Vermelho, "| ERRO | Jogador não encontrado!");
new conta_id; new email[64]; new login_dia, login_mes, login_ano; new login_hora, login_minutos, login_segundos; new nome[24]; cache_get_value_name_int(0, "ContaID", conta_id); cache_get_value_name_int(0, "Ultimo_Login_Dia", login_dia); cache_get_value_name_int(0, "Ultimo_Login_Mes", login_mes); cache_get_value_name_int(0, "Ultimo_Login_Ano", login_ano); cache_get_value_name_int(0, "Ultimo_Login_Hora", login_hora); cache_get_value_name_int(0, "Ultimo_Login_Minutos", login_minutos); cache_get_value_name_int(0, "Ultimo_Login_Segundos", login_segundos);
cache_get_value_name(0, "Email", email); cache_get_value_name(0, "Nome", nome);
// Formata a data e hora de login new login_data[21 + 1]; format(login_data, sizeof(login_data), "%02d/%02d/%04d - %02d:%02d:%02d", login_dia, login_mes, login_ano, login_hora, login_minutos, login_segundos);
// Exibe as informações no diálogo new str[512]; format(str, sizeof(str), "{FFFFFF}Nome: {FFFF00}%s\n{FFFFFF}Conta ID: {FFFF00}%d\n{FFFFFF}Email: {FFFF00}%s\n{FFFFFF}Último Login: {FFFF00}%s\n", nome, conta_id, email, login_data); ShowPlayerDialog(playerid, D_PUXAR_LOGIN, DIALOG_STYLE_MSGBOX, "{FFFF00}Informações da Conta", str, "OK", ""); return 1; }
RE: Comando - Enila182 - 12/10/2024
deu certo
Vlw parceiro
|