Код:
#include <a_samp>
#include <dof2>
#include <a_http>
#define CONTAS \
"PlayersJFS/%s.ini"
#define REGISTRO \
(787)
#define LOGIN \
(790)
#define MAXPLAYERSJFS \
(5) // Slots do seu Servidor
#define DinheiroInicio \
(1000) // Comeca com MIL de Grana
#define LevelInicio \
(1) // Comeзa com 1 de Level
#define SkinInicio \
(189) // Comeзa com a skin 289
#define EmailServidor \
("jonathan_feitosa@hotmail.com.br") // Email que enviarб os Emails para o Pessoal !
#define NomeServidor \
("[JFS/SAMP] - Recuperar Senha") // Configure :)
#define TAtualizarLevel \
(4000) // Tempo para Atualizar Level, 4 SEG !
//native WP_Hash(buffer[], len, const str[]);
new
Invalido[MAXPLAYERSJFS],
Nome[MAX_PLAYER_NAME],
String[128],
Matou[MAXPLAYERSJFS],
Morreu[MAXPLAYERSJFS],
Level[MAXPLAYERSJFS],
Skin[MAXPLAYERSJFS],
Logou[MAXPLAYERSJFS],
Ano[MAXPLAYERSJFS],
Mes[MAXPLAYERSJFS],
Hora[MAXPLAYERSJFS],
Dia[MAXPLAYERSJFS],
Minuto[MAXPLAYERSJFS],
PrimeiraVezON[MAXPLAYERSJFS]
;
public OnFilterScriptInit()
{
print("JFS Registro v1.1 PT/BR Iniciado.");
SetTimer("AtualizarLevel", TAtualizarLevel, true);
return true;
}
public OnFilterScriptExit()
{
for(new i=0; i<MAXPLAYERSJFS; ++i) SalvarPlayer(i);
DOF2::Exit();
return true;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(IsPlayerConnected(killerid))
{
Matou[killerid] ++;
Level[killerid] ++;
GameTextForPlayer(killerid,"~>~~r~Matou + 1 Level.!!!",4000,3);
}
if(IsPlayerConnected(playerid))
{
Morreu[playerid] ++;
GameTextForPlayer(playerid,"~>~~r~Morto - 1 Level!!!",4000,3);
Level[playerid] --;
}
return true;
}
public OnPlayerDisconnect(playerid, reason) return SalvarPlayer(playerid);
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strfind(cmdtext, "/stats", true) != -1)
{
static DialogStatus[250];
static EmailStats[40];
GetPlayerName(playerid, Nome, sizeof(Nome));
format(EmailStats, sizeof(EmailStats), CONTAS, Nome);
format(String, sizeof(String),"{FFFFFF}Status De {1E90FF}%s\n\n",Nome);
strcat(DialogStatus, String);
format(String, sizeof(String),"{FFFFFF}Email: {1E90FF}%s\n", DOF2::GetString(EmailStats,"Email"));
strcat(DialogStatus, String);
format(String, sizeof(String),"{FFFFFF}Level: {1E90FF}%d\n", Level[playerid]);
strcat(DialogStatus, String);
format(String, sizeof(String),"{FFFFFF}Skin: {1E90FF}%d\n", Skin[playerid]);
strcat(DialogStatus, String);
format(String, sizeof(String),"{FFFFFF}Dinheiro: {1E90FF}%d\n", GetPlayerMoney(playerid));
strcat(DialogStatus, String);
format(String, sizeof(String),"{FFFFFF}Matou: {1E90FF}%d\n", Matou[playerid]);
strcat(DialogStatus, String);
format(String, sizeof(String),"{FFFFFF}Morreu: {1E90FF}%d\n",Morreu[playerid]);
strcat(DialogStatus, String);
format(String, sizeof(String),"{FFFFFF}Vocк Jб Logou {1E90FF}%d{FFFFFF} Vezes Neste Servidor", Logou[playerid]);
strcat(DialogStatus, String);
ShowPlayerDialog(playerid, 5732, DIALOG_STYLE_MSGBOX, "{00F6F6}Minhas Informaзхes ( RG )", DialogStatus, "Fechar", "");
return true;
}
if(strfind(cmdtext, "/mudaremail", true) != -1)
{
if(strlen(cmdtext) == 11)
return SendClientMessage(playerid, -1, "/mudaremail [EMAIL]");
strdel(cmdtext, 0, 11);
GetPlayerName(playerid, Nome, sizeof(Nome));
format(String, sizeof(String), CONTAS, Nome);
static Celula[128];
format(Celula, sizeof(Celula),"[JFS Sistema de Registro] - Vocк Mudou seu Email de %s para %s !!", DOF2::GetString(String,"Email"), cmdtext);
SendClientMessage(playerid, -1, Celula);
SendClientMessage(playerid, -1, "Cuidado ! vocк deve verificar se estб certo ! pois poderб perder sua Conta.");
DOF2::SetString(String,"Email", cmdtext);
DOF2::SaveFile();
return true;
}
return false;
}
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid, -1, "Esse servidor possui um FilterScript Criado Por JFS - JonathanFeitosa :).");
GetPlayerName(playerid, Nome, sizeof(Nome));
format(String, sizeof(String), CONTAS, Nome);
if(!DOF2::FileExists(String))
{
format(String, sizeof(String), "\n{7FFFD4}Nick: {1E90FF}%s Nгo Registrado\n\n{FFFFFF} Digite Uma Senha Para Registrar Sua Conta\n", Nome);
ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_PASSWORD, "Sistema de Registro", String, "Registrar", "Cancelar");
}
else format(String, sizeof(String), "\n{7FFFD4}Nick: {1E90FF}%s Registrado\n\n{FFFFFF} Digite sua Senha Corretamente para Logar\n", Nome),
ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Sistema de Login", String, "Logar", "Cancelar");
return true;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == REGISTRO)
{
if(response)
{
if(!strlen(inputtext))
{
GetPlayerName(playerid, Nome, sizeof(Nome));
format(String, sizeof(String), "\n{7FFFD4}Nick: {1E90FF}%s Nгo Registrado\n\n{FFFFFF} Digite Uma Senha Para Registrar Sua Conta\n", Nome);
ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_PASSWORD, "Sistema de Registro", String, "Registrar", "Cancelar");
return true;
}
GetPlayerName(playerid, Nome, sizeof(Nome));
format(String, sizeof(String), CONTAS, Nome);
DOF2::CreateFile(String);
DOF2::SetString(String,"Senha", inputtext);
DOF2::SetString(String,"Email","EmailDesconfigurado");
DOF2::SetInt(String,"Dinheiro", DinheiroInicio);
DOF2::SetInt(String,"Level", LevelInicio);
DOF2::SetInt(String,"Skin", SkinInicio);
DOF2::SetInt(String,"Matou", 0);
DOF2::SetInt(String,"Morreu", 0);
DOF2::SetInt(String,"Admin", 0);
DOF2::SetInt(String,"Logou", 0);
DOF2::SetInt(String, "Ano", 0);
DOF2::SetInt(String, "Mкs", 0);
DOF2::SetInt(String, "Dia", 0);
DOF2::SetInt(String, "Hora", 0);
DOF2::SetInt(String, "Minuto", 0);
DOF2::SaveFile();
ShowPlayerDialog(playerid, 6783, DIALOG_STYLE_INPUT, "JFS Registro - Configure seu Email", "\n\n{1E90FF}Digite seu Email abaixo para terminar o registro.\n\n{1E90FF}PS: Caso perca sua senha, usarб para recuperar-lб.\n\n", "Configurar", "");
return true;
}
else
{
SendClientMessage(playerid, 0xFF0000AA, "Vocк Foi Kickado Porque Nгo Quis Se Registrar!!");
Kick(playerid);
return true;
}
}
if(dialogid == 6783)
{
if(response)
{
GetPlayerName(playerid, Nome, sizeof(Nome));
format(String, sizeof(String), CONTAS, Nome);
DOF2::SetString(String,"Email", inputtext);
DOF2::SaveFile();
format(String, sizeof(String), "Email Configurado para: %s", DOF2::GetString(String,"Email"));
SendClientMessage(playerid, -1, String);
Registrando(playerid);
return true;
}
}
if(dialogid == 6784)
{
if(response)
{
GetPlayerName(playerid, Nome, sizeof(Nome));
format(String, sizeof(String), CONTAS, Nome);
static Celula[300];
format(Celula, sizeof(Celula),
"Sistema de Registro/Login com Recuperar Senha via Email - Sistema Criado Por Jonathan Feitosa\nVisite: www.********.com/GoHumorGTA\n\nSenha: %s\n\n\nContato Skype: jonathanfeitosajfs\nContato MSN: jonathan_feitosa@hotmail.com.br", DOF2::GetString(String,"Senha"));
SendClientMessage(playerid, -1, "Um Email com sua senha foi enviado para seu Email com sucesso.");
SendClientMessage(playerid, -1, "PS: As Vezes Podem demorar cerca de no mбximo 5 minutos.");
Kick(playerid);
}
else
{
SendClientMessage(playerid, -1, "Vocк nгo quis Enviar um Email por isso foi kickado :)");
Kick(playerid);
}
return true;
}
if(dialogid == LOGIN)
{
if(response)
{
if(!strlen(inputtext))
{
GetPlayerName(playerid, Nome, sizeof(Nome));
format(String, sizeof(String),
"\n{7FFFD4}Nick: {1E90FF}%s Registrado\n\n{FFFFFF} Digite sua Senha Corretamente para Logar\n", Nome);
ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Sistema de Login", String, "Logar", "Cancelar");
SendClientMessage(playerid,0x1E90FFAA,"CAMPO EM BRANCO - Digite sua senha corretamente !");
return true;
}
// static HashSenha[129];
GetPlayerName(playerid, Nome, sizeof(Nome));
format(String, sizeof(String), CONTAS, Nome);
// WP_Hash(HashSenha, 129, inputtext);
if(!strcmp(inputtext,DOF2_GetString(String,"Senha"),false))
{
Logando(playerid);
return true;
}
else
{
Invalido[playerid] += 1;
if(Invalido[playerid] == 5)
return ShowPlayerDialog(playerid, 6784, DIALOG_STYLE_MSGBOX, "JFS Registro - Recuperaзгo de Senha", "\n\n{33CCFF}Aperte em 'Enviar' para enviar um email para o seu email contendo sua senha.\n\n{7491F6}PS: Espero que seja um Email vбlido, se nгo, entre em contato com Administrador Dono.\n\n", "Enviar", "Cancelar");
SendClientMessage(playerid,0x00FF00AA,"Senha incorreta, Se errar 5 vezes terб que recuperar-lб por E-mail !");
format(String, sizeof(String),
"\n{7FFFD4}Nick: {1E90FF}%s Registrado\n\n{FFFFFF} Digite sua Senha Corretamente para Logar\n", Nome);
ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Sistema de Login", String, "Logar", "Cancelar");
}
return true;
}
else
{
SendClientMessage(playerid, 0xFF0000AA, "Vocк nгo quis se logar, por este motivo serб Kickado");
Kick(playerid);
return true;
}
}
return true;
}
stock SalvarPlayer(playerid)
{
GetPlayerName(playerid, Nome, sizeof(Nome));
format(String, sizeof(String), CONTAS, Nome);
DOF2::SetInt(String,"Dinheiro", GetPlayerMoney(playerid));
DOF2::SetInt(String,"Level", Level[playerid]);
Skin[playerid] = GetPlayerSkin(playerid);
DOF2::SetInt(String,"Skin", Skin[playerid]);
DOF2::SetInt(String,"Matou", Matou[playerid]);
DOF2::SetInt(String,"Morreu", Morreu[playerid]);
DOF2::SetInt(String,"Logou", Logou[playerid]);
getdate(Ano[playerid], Mes[playerid], Dia[playerid]);
gettime(Hora[playerid], Minuto[playerid]);
DOF2::SetInt(String, "Minuto", Minuto[playerid]);
DOF2::SetInt(String, "Hora", Hora[playerid]);
DOF2::SetInt(String, "Dia", Dia[playerid]);
DOF2::SetInt(String, "Mкs", Mes[playerid]);
DOF2::SetInt(String, "Ano", Ano[playerid]);
DOF2::SaveFile();
return true;
}
stock CarregarPlayer(playerid)
{
GetPlayerName(playerid, Nome, sizeof(Nome));
format(String, sizeof(String), CONTAS, Nome);
GivePlayerMoney(playerid, DOF2::GetInt(String,"Dinheiro"));
Level[playerid] = DOF2::GetInt(String, "Level");
Skin[playerid] = DOF2::GetInt(String, "Skin");
SetPlayerSkin(playerid, Skin[playerid]);
Matou[playerid] = DOF2::GetInt(String, "Matou");
Morreu[playerid] = DOF2::GetInt(String, "Morreu");
Logou[playerid] = DOF2::GetInt(String, "Logou");
DOF2::GetString(String, "Email");
Minuto[playerid] = DOF2::GetInt(String, "Minuto");
Hora[playerid] = DOF2::GetInt(String, "Hora");
Dia[playerid] = DOF2::GetInt(String, "Dia");
Mes[playerid] = DOF2::GetInt(String, "Mкs");
Ano[playerid] = DOF2::GetInt(String, "Ano");
DOF2::SaveFile();
return true;
}
stock Logando(playerid)
{
CarregarPlayer(playerid);
Logou[playerid] += 1;
if(PrimeiraVezON[playerid] != 1)
{
format(String, sizeof(String), "Seu Ъltimo LOGIN Foi Dia: %d/%d/%d Бs %d Horas e %d Minutos", Dia[playerid], Mes[playerid], Ano[playerid], Hora[playerid], Minuto[playerid]);
}
else format(String, sizeof(String), "Bem Vindo na sua Primeira Vez no Servidor ! Vocк Comeзou com %dR$ e Level %d.", DinheiroInicio, LevelInicio),
SendClientMessage(playerid, -1, String),
PrimeiraVezON[playerid] = 0;
// Bote Aqui as funзхes quando o Player estб logando.
return true;
}
stock Registrando(playerid)
{
// Bote aqui as funзхes quando o Player estiver se registrando pela primeira vez ! :) PS: poderб ser um sistema de tutorial !
PrimeiraVezON[playerid] = 1;
format(String, sizeof(String), "\n{7FFFD4}Nick: {1E90FF}%s Registrado\n\n{FFFFFF} Digite sua Senha Corretamente para Logar\n", Nome);
ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Sistema de Login", String, "Logar", "Cancelar");
return true;
}
forward AtualizarLevel();
public AtualizarLevel()
{
for(new i=0; i<MAXPLAYERSJFS; ++ i)
{
SetPlayerScore(i, Level[i]);
}
return true;
}
Na GM eu uso o ZCMD, teria como por esse FS em ZCMD tambйm? se nгo for pedir demais...