Último login - Blueface - 25/08/2025
Alguém teria algum código com que possa puxar o ultimo login do player?
RE: Último login - xbruno1000x - 26/08/2025
Ficaria algo como:
Código: #include <a_samp>
#include <DOF2>
#define PATH "Contas/%s.ini"
forward SalvarUltimoLogin(playerid);
forward CarregarUltimoLogin(playerid);
public OnGameModeInit()
{
DOF2_Init(); // Inicializa o sistema de arquivos
return 1;
}
public OnPlayerConnect(playerid)
{
CarregarUltimoLogin(playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SalvarUltimoLogin(playerid);
return 1;
}
SalvarUltimoLogin(playerid)
{
new arquivo[64];
new nome[MAX_PLAYER_NAME];
new data[32];
GetPlayerName(playerid, nome, sizeof(nome));
format(arquivo, sizeof(arquivo), PATH, nome);
// pega a data e hora atual
getdate(data[0], data[1], data[2]); // ano, mês, dia
new ano = data[0], mes = data[1], dia = data[2];
new hora, minuto, segundo;
gettime(hora, minuto, segundo);
new ultimaEntrada[64];
format(ultimaEntrada, sizeof(ultimaEntrada), "%02d/%02d/%04d %02d:%02d:%02d", dia, mes, ano, hora, minuto, segundo);
// salva no arquivo
DOF2_SetString(arquivo, "UltimoLogin", ultimaEntrada);
DOF2_SaveFile();
return 1;
}
CarregarUltimoLogin(playerid)
{
new arquivo[64];
new nome[MAX_PLAYER_NAME];
new ultimaEntrada[64];
GetPlayerName(playerid, nome, sizeof(nome));
format(arquivo, sizeof(arquivo), PATH, nome);
if (DOF2_FileExists(arquivo))
{
DOF2_GetString(arquivo, "UltimoLogin", ultimaEntrada, sizeof(ultimaEntrada));
if(strlen(ultimaEntrada) > 0)
{
new msg[128];
format(msg, sizeof(msg), "Seu último login foi em: %s", ultimaEntrada);
SendClientMessage(playerid, -1, msg);
}
else
{
SendClientMessage(playerid, -1, "Bem-vindo! Este é seu primeiro login.");
}
}
else
{
SendClientMessage(playerid, -1, "Bem-vindo! Sua conta foi criada agora.");
}
return 1;
}
RE: Último login - Blueface - 26/08/2025
(26/08/2025 00:38)xbruno1000x Escreveu: Ficaria algo como:
Código: #include <a_samp>
#include <DOF2>
#define PATH "Contas/%s.ini"
forward SalvarUltimoLogin(playerid);
forward CarregarUltimoLogin(playerid);
public OnGameModeInit()
{
DOF2_Init(); // Inicializa o sistema de arquivos
return 1;
}
public OnPlayerConnect(playerid)
{
CarregarUltimoLogin(playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SalvarUltimoLogin(playerid);
return 1;
}
SalvarUltimoLogin(playerid)
{
new arquivo[64];
new nome[MAX_PLAYER_NAME];
new data[32];
GetPlayerName(playerid, nome, sizeof(nome));
format(arquivo, sizeof(arquivo), PATH, nome);
// pega a data e hora atual
getdate(data[0], data[1], data[2]); // ano, mês, dia
new ano = data[0], mes = data[1], dia = data[2];
new hora, minuto, segundo;
gettime(hora, minuto, segundo);
new ultimaEntrada[64];
format(ultimaEntrada, sizeof(ultimaEntrada), "%02d/%02d/%04d %02d:%02d:%02d", dia, mes, ano, hora, minuto, segundo);
// salva no arquivo
DOF2_SetString(arquivo, "UltimoLogin", ultimaEntrada);
DOF2_SaveFile();
return 1;
}
CarregarUltimoLogin(playerid)
{
new arquivo[64];
new nome[MAX_PLAYER_NAME];
new ultimaEntrada[64];
GetPlayerName(playerid, nome, sizeof(nome));
format(arquivo, sizeof(arquivo), PATH, nome);
if (DOF2_FileExists(arquivo))
{
DOF2_GetString(arquivo, "UltimoLogin", ultimaEntrada, sizeof(ultimaEntrada));
if(strlen(ultimaEntrada) > 0)
{
new msg[128];
format(msg, sizeof(msg), "Seu último login foi em: %s", ultimaEntrada);
SendClientMessage(playerid, -1, msg);
}
else
{
SendClientMessage(playerid, -1, "Bem-vindo! Este é seu primeiro login.");
}
}
else
{
SendClientMessage(playerid, -1, "Bem-vindo! Sua conta foi criada agora.");
}
return 1;
}
Opa muito obrigado meu sistema de salvamento é em mysql irei adaptar para mysql
RE: Último login - White_Blue - 26/08/2025
(26/08/2025 16:23)Blueface Escreveu: (26/08/2025 00:38)xbruno1000x Escreveu: Ficaria algo como:
Código: #include <a_samp>
#include <DOF2>
#define PATH "Contas/%s.ini"
forward SalvarUltimoLogin(playerid);
forward CarregarUltimoLogin(playerid);
public OnGameModeInit()
{
DOF2_Init(); // Inicializa o sistema de arquivos
return 1;
}
public OnPlayerConnect(playerid)
{
CarregarUltimoLogin(playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SalvarUltimoLogin(playerid);
return 1;
}
SalvarUltimoLogin(playerid)
{
new arquivo[64];
new nome[MAX_PLAYER_NAME];
new data[32];
GetPlayerName(playerid, nome, sizeof(nome));
format(arquivo, sizeof(arquivo), PATH, nome);
// pega a data e hora atual
getdate(data[0], data[1], data[2]); // ano, mês, dia
new ano = data[0], mes = data[1], dia = data[2];
new hora, minuto, segundo;
gettime(hora, minuto, segundo);
new ultimaEntrada[64];
format(ultimaEntrada, sizeof(ultimaEntrada), "%02d/%02d/%04d %02d:%02d:%02d", dia, mes, ano, hora, minuto, segundo);
// salva no arquivo
DOF2_SetString(arquivo, "UltimoLogin", ultimaEntrada);
DOF2_SaveFile();
return 1;
}
CarregarUltimoLogin(playerid)
{
new arquivo[64];
new nome[MAX_PLAYER_NAME];
new ultimaEntrada[64];
GetPlayerName(playerid, nome, sizeof(nome));
format(arquivo, sizeof(arquivo), PATH, nome);
if (DOF2_FileExists(arquivo))
{
DOF2_GetString(arquivo, "UltimoLogin", ultimaEntrada, sizeof(ultimaEntrada));
if(strlen(ultimaEntrada) > 0)
{
new msg[128];
format(msg, sizeof(msg), "Seu último login foi em: %s", ultimaEntrada);
SendClientMessage(playerid, -1, msg);
}
else
{
SendClientMessage(playerid, -1, "Bem-vindo! Este é seu primeiro login.");
}
}
else
{
SendClientMessage(playerid, -1, "Bem-vindo! Sua conta foi criada agora.");
}
return 1;
}
Opa muito obrigado meu sistema de salvamento é em mysql irei adaptar para mysql
Eis o código que costumo usar (depende de Pawn-Chrono):
Código PHP: #include <a_mysql> #include <chrono> #include <YSI_Coding/y_hooks>
// OBS: // Esta parte é opcional. Fiz um hook da função DurationFormat do Pawn-Chrono, pois as strings estavam em inglês e eu não queria alterar o código da include diretamente. // Mas você pode optar por criar uma função customizada, modificar as strings diretamente na include ou usar a versão com as strings em inglês. hook function DurationFormat(Seconds:duration, output[], len = sizeof output) { new Seconds:years, Seconds:days, Seconds:hours, Seconds:minutes;
if(duration > YearInSeconds) { years = (duration / YearInSeconds); duration -= (YearInSeconds * years); }
if(duration > DayInSeconds) { days = (duration / DayInSeconds); duration -= (DayInSeconds * days); }
if(duration > HourInSeconds) { hours = (duration / HourInSeconds); duration -= (HourInSeconds * hours); }
if(duration > MinuteInSeconds) { minutes = (duration / MinuteInSeconds); duration -= (MinuteInSeconds * minutes); }
if(years > Seconds:0) { format( output, len, "%s%d ano%s", output, _:years, (_:years > 1) ? ("s, ") : (", ") ); } if(days > Seconds:0) { format( output, len, "%s%d dia%s", output, _:days, (_:days > 1) ? ("s, ") : (", ") ); } if(hours > Seconds:0) { format( output, len, "%s%d hora%s", output, _:hours, (_:hours > 1) ? ("s, ") : (", ") ); } if(minutes > Seconds:0) { format( output, len, "%s%d minuto%s", output, _:minutes, (_:minutes > 1) ? ("s, ") : (", ") ); }
if(duration > Seconds:0) { format( output, len, "%s%d segundo%s", output, _:duration, (_:duration > 1) ? ("s, ") : (", ") ); }
output[strlen(output) - 2] = EOS; return 0; }
public OnPlayerConnect(playerid) { new query[128], playerName[MAX_PLAYER_NAME], last_login_str[20], output[128]; GetPlayerName(playerid, playerName, sizeof(playerName));
mysql_format(db_handle, query, sizeof(query), "SELECT last_login FROM players WHERE username = '%e'", playerName); mysql_query(db_handle, query);
if(cache_num_rows()) { cache_get_value_name(0, "last_login", last_login_str);
new Timestamp:last_login_ts; TimeParse(last_login_str, "%Y-%m-%d %H:%M:%S", last_login_ts);
TimeFormat(last_login_ts, "%d/%m/%Y %H:%M:%S", output, sizeof(output));
new Seconds:diff = Now() - last_login_ts; new duration_str[128]; DurationFormat(diff, duration_str, sizeof(duration_str));
format(query, sizeof(query), "Seu último login foi em %s, há %s atrás.", output, duration_str); SendClientMessage(playerid, -1, query); } else { SendClientMessage(playerid, -1, "Bem-vindo! Este é seu primeiro login!"); mysql_format(db_handle, query, sizeof(query), "INSERT INTO players (username, last_login) VALUES ('%e', NOW())", playerName); mysql_tquery(db_handle, query); } return 1; }
public OnPlayerDisconnect(playerid, reason) { new query[128], playerName[MAX_PLAYER_NAME]; GetPlayerName(playerid, playerName, sizeof(playerName));
mysql_format(db_handle, query, sizeof(query), "UPDATE players SET last_login = NOW() WHERE username = '%e'", playerName); mysql_tquery(db_handle, query); return 1; }
Adapte conforme suas necessidades.
|