Esse tutorial aki é realmente muito útil para servidores, seja de pequeno ou grande porte.
Muitos aki do fórum tinham dúvidas com relação a EXCLUSÃO DE CONTAS INUTILIZADAS. Eu fiz pela primeira vez e deu certo!
Básicamente verifica se a conta está sendo utilizada ou não, caso a conta tenha ultrapassado tantos dias e não foi logado mais nela, automaticamente ela será excluída do BD.
OBS: Esse tutorial é diretamente voltado para Banco de Dados e estarei usando MySQL e SQLite.
Eu ia publicar isso na área códigos úteis, mas achei melhor fazer como tutorial, pois assim os iniciantes podem postar suas dúvidas com relação a esse sistema.
Suponho que vc já tenha um sistema de registro e login completo em seu GM.
Toda vez que o jogador logar em seu servidor, vc precisa atualizar o tempo da conta para o tempo atual, obviamente.
O tempo que utilizei foi de 30 DIAS, então alterem para o tempo que vcs acham melhor.
ETAPA 1: Atualizando a conta.
Explicação: Toda vez que o jogador logar em sua conta, a coluna onde guarda o valor do gettime irá ser resetada para o valor inicial, ou seja, voltará ao inicio da contagem.
MySQL R7:
Code:
new MySQL_Format[200], Name[24];
GetPlayerName(playerid, Name, sizeof Name);
mysql_format(conection, MySQL_Format, "UPDATE `table_name` SET `colunm_name` = '%i' WHERE `player_name` = '%s'", 30 * 24 * 60 * 60 + gettime(), Name);
mysql_function_query(conection, MySQL_Format, false, "", "");
SQLite:
Code:
new SQL_Format[200], Name[24];
GetPlayerName(playerid, Name, sizeof Name);
format(SQL_Format, sizeof(SQL_Format), "UPDATE `table_name` SET `colunm_name` = '%i' WHERE `player_name` = '%s'", 30 * 24 * 60 * 60 + gettime(), Name);
db_query(conection, SQL_Format);
ETAPA 2: Verificando as contas.
Explicação: Vamos criar um timer que será responsável por verificar as contas inutilizadas e as mesmas, ao ultrapassarem o limite de tempo, serão automaticamente excluídas.
Timer (OnGameModeInit/OnFilterStriptInit):
Code:
SetTimer("CheckUnusedAccounts", 60 * 1000, true); // verifica a cada 1 minuto
MySQL R7:
Code:
forward CheckUnusedAccounts();
public CheckUnusedAccounts()
{
new MySQL_Format[200];
mysql_format(connection, MySQL_Format, "DELETE FROM `table_name` WHERE `colunm_name` < '%i'", gettime());
mysql_function_query(connection, MySQL_Format, false, "", "");
return 1;
}
SQLite:
Code:
forward CheckUnusedAccounts();
public CheckUnusedAccounts()
{
new SQL_Format[200];
format(SQL_Format, sizeof(SQL_Format), "DELETE FROM `table_name` WHERE `colunm_name` < '%i'", gettime());
db_query(connection, SQL_Format);
return 1;
}
Explicação final (para iniciantes):
connection = Banco de dados.
table_name = Nome da tabela onde armazena os dados dos jogares.
colunm_name = Nome da coluna que será inserida junto aos dados dos players.
player_name = Nome do jogador em questão.
__________________
Muitos aki do fórum tinham dúvidas com relação a EXCLUSÃO DE CONTAS INUTILIZADAS. Eu fiz pela primeira vez e deu certo!
Básicamente verifica se a conta está sendo utilizada ou não, caso a conta tenha ultrapassado tantos dias e não foi logado mais nela, automaticamente ela será excluída do BD.
OBS: Esse tutorial é diretamente voltado para Banco de Dados e estarei usando MySQL e SQLite.
Eu ia publicar isso na área códigos úteis, mas achei melhor fazer como tutorial, pois assim os iniciantes podem postar suas dúvidas com relação a esse sistema.
Suponho que vc já tenha um sistema de registro e login completo em seu GM.
Toda vez que o jogador logar em seu servidor, vc precisa atualizar o tempo da conta para o tempo atual, obviamente.
O tempo que utilizei foi de 30 DIAS, então alterem para o tempo que vcs acham melhor.
ETAPA 1: Atualizando a conta.
Explicação: Toda vez que o jogador logar em sua conta, a coluna onde guarda o valor do gettime irá ser resetada para o valor inicial, ou seja, voltará ao inicio da contagem.
MySQL R7:
Code:
new MySQL_Format[200], Name[24];
GetPlayerName(playerid, Name, sizeof Name);
mysql_format(conection, MySQL_Format, "UPDATE `table_name` SET `colunm_name` = '%i' WHERE `player_name` = '%s'", 30 * 24 * 60 * 60 + gettime(), Name);
mysql_function_query(conection, MySQL_Format, false, "", "");
SQLite:
Code:
new SQL_Format[200], Name[24];
GetPlayerName(playerid, Name, sizeof Name);
format(SQL_Format, sizeof(SQL_Format), "UPDATE `table_name` SET `colunm_name` = '%i' WHERE `player_name` = '%s'", 30 * 24 * 60 * 60 + gettime(), Name);
db_query(conection, SQL_Format);
ETAPA 2: Verificando as contas.
Explicação: Vamos criar um timer que será responsável por verificar as contas inutilizadas e as mesmas, ao ultrapassarem o limite de tempo, serão automaticamente excluídas.
Timer (OnGameModeInit/OnFilterStriptInit):
Code:
SetTimer("CheckUnusedAccounts", 60 * 1000, true); // verifica a cada 1 minuto
MySQL R7:
Code:
forward CheckUnusedAccounts();
public CheckUnusedAccounts()
{
new MySQL_Format[200];
mysql_format(connection, MySQL_Format, "DELETE FROM `table_name` WHERE `colunm_name` < '%i'", gettime());
mysql_function_query(connection, MySQL_Format, false, "", "");
return 1;
}
SQLite:
Code:
forward CheckUnusedAccounts();
public CheckUnusedAccounts()
{
new SQL_Format[200];
format(SQL_Format, sizeof(SQL_Format), "DELETE FROM `table_name` WHERE `colunm_name` < '%i'", gettime());
db_query(connection, SQL_Format);
return 1;
}
Explicação final (para iniciantes):
connection = Banco de dados.
table_name = Nome da tabela onde armazena os dados dos jogares.
colunm_name = Nome da coluna que será inserida junto aos dados dos players.
player_name = Nome do jogador em questão.
__________________