[Off] Sistema de registro e login
#1

Bom dia, tarde ou noite.
Basicamente estou tentando recriar o GM da LK(CVR) mais pra aprender mesmo(Depois disso eu vou recomeзar e quem sabe atй fazer o meu, por isso tudo ta igual no GM inclusive as mensagens no Gmail) achei que seria um GM legal pra comeзar a estudar pawn, bom a primeira coisa que eu fiz foi o sistema de registro e login com salvamento em DOF2 e o sistema de Level mais eu estou com dificuldade na parte do level porquк nгo consigo salvar o tempo restante para o player upar entгo se ele saiu com 5 minutos faltando para o up quando ele entrar ele volta a ter 10 minutos.

Outro problema foi em reproduzir essa print. "Verificar o e-mail no banco de dados.."


Eu vou postar aqui o cуdigo e eu peзo que alguйm com mais experiencia me ajude analisando o cуdigo e me falando o que eu poderia mudar e o por quк disso, desde jб agradeзo!

Код:
/* include */
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <DOF2>

/* mailer */
#define MAILER_URL 																"blablav.000webhostapp.com/sendmailer.php" // Pode usar esse host mais recomendo que pegue algum outro
#include <mailer>
#define SERVER_EMAIL															"serverteste09@gmail.com"

/* defines */
#define PASTA_CONTA																"Contas/%s.ini"
#define SKIN_FEMININA															12
#define SKIN_MASCULINA 															154

/* define dialog */
#define DIALOG_REGISTRO                                                         10001
#define DIALOG_REGISTRO1                                                        10002
#define DIALOG_REGISTRO2                                                        10003
#define DIALOG_REGISTRO3                                                        10004
#define DIALOG_REGISTRO4                                                        10005
#define DIALOG_LOGIN 															10006
#define DIALOG_LOGIN1 															10007

/* forward */
forward KickPlayerTimer(playerid);
forward UpTimer(playerid);

/* enum's */
enum pInfo
{
	pCodigoLiberacao,
	pSenhaInvalida,
	pExperiencia,
	pLevel
};

/* news */
new pInfos[MAX_PLAYERS][pInfo];
new LetterList[26][] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };

main()
{
	print("\n----------------------------------");
	print(" Blank Gamemode by KaioMuzzo");
	print("----------------------------------\n");
}

public OnGameModeInit()
{
	SetGameModeText("Blank Gamemode by KaioMuzzo");
	AddPlayerClass(154, 1958.3783, 1343.1572, 15.3746, 0, 0, 0, 0, 0, 0, 0);

	// Veiculos BMX 
	AddStaticVehicle(481, 828.1001, -1336.1182, 13.0559, 359.9905,  1, 1);
	AddStaticVehicle(481, 829.2002, -1336.1337, 13.0620, 359.9879, 12, 9);

	return 1;
}

public OnGameModeExit()
{
	DOF2_Exit();
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerPos(playerid, -2626.3479, 1422.0120, 24.5625);
	SetPlayerFacingAngle(playerid, 239.9000);
	SetPlayerCameraPos(playerid, -2622.5000, 1418.6584, 24.5625);
	SetPlayerCameraLookAt(playerid, -2625.0000, 1423.1483, 24.5625);

	/* dialog de registro/login quando o player entrar */
	new string[512];
	
			/* registro mal executado */
	if(strfind("0", DOF2_GetString(GetPlayerAccount(playerid), "Sexo"), true) != -1){
		/* se ''Sexo'' for igual a 0 (caso o player tenha saido sem digitar o codigo)*/	
		format(string, sizeof(string), "{F8FCF8}Bem vindo(a) novamente {6094E8}%s\n\n{F8FCF8}Vocк tem o e-mail ( {208C20}%s {F8FCF8}) cadastrado nesse nick, acesse-o para ver\no cуdigo de liberaзгo e informe abaixo, apos informar selecione {F84400}Confirmar\n\n{F8FCF8}Caso o e-mail informado esteja errado poderб edita-lo selecionando {F84400}Alterar", GetPlayerNome(playerid), DOF2_GetString(GetPlayerAccount(playerid), "E-mail"));
		ShowPlayerDialog(playerid, DIALOG_REGISTRO3, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Confirmar", "Alterar");
			/* fim registro */
	} else {
		if(DOF2_FileExists(GetPlayerAccount(playerid))){
			/* login caso a conta do player exista */
			format(string, sizeof(string), "{7084E8}Usuбrio: {F8FCF8}%s\n\nConta: {30CC30}Registrada\n\n{F8FCF8}Informe sua Senha:", GetPlayerNome(playerid));
			ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{F80000}Conta", string, "Logar", "Sair");
		} else {
			/* registro caso o player nгo possua uma conta */
			format(string, sizeof(string), "{7084E8}Usuбrio: {F8FCF8}%s\n\nConta: {F80000} Nгo registrada\n\n{F8FCF8}Informe sua Senha:", GetPlayerNome(playerid));
			ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "{F80000}Conta", string, "Registrar", "Sair");
		}
	}
	return 1;
}

public OnPlayerConnect(playerid)
{
	return 1;
}

public OnPlayerSpawn(playerid)
{
	SetTimerEx("UpTimer", 600000, true, "i", playerid);
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	
	/* news */
	new Float:Pos[4];

	// pegar as cords do player
	GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
	GetPlayerFacingAngle(playerid, Pos[3]);

	/* salvar informacoes da conta */
	DOF2_SetFloat(GetPlayerAccount(playerid), "UltimaPosX", Pos[0]);
	DOF2_SetFloat(GetPlayerAccount(playerid), "UltimaPosY", Pos[1]);
	DOF2_SetFloat(GetPlayerAccount(playerid), "UltimaPosZ", Pos[2]);
	DOF2_SetFloat(GetPlayerAccount(playerid), "UltimaPosA", Pos[3]);
	DOF2_SetInt(GetPlayerAccount(playerid), "Dinheiro", GetPlayerMoney(playerid));
	DOF2_SetInt(GetPlayerAccount(playerid), "Level", GetPlayerScore(playerid));
	DOF2_SetInt(GetPlayerAccount(playerid), "Experiencia", pInfos[playerid][pExperiencia]);
	KillTimer(UpTimer(playerid)); 
	DOF2_SaveFile();
	/* fim informacoes salvas */
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}

public OnPlayerText(playerid, text[])
{
	return 1;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
	return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
	return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
	return 1;
}

public OnRconCommand(cmd[])
{
	return 1;
}

public OnPlayerRequestSpawn(playerid)
{
	return 1;
}

public OnObjectMoved(objectid)
{
	return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
	return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
	return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
	return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
	return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
	return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
	return 1;
}

public OnPlayerExitedMenu(playerid)
{
	return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
	return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
	return 1;
}

public OnPlayerUpdate(playerid)
{
	return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
	return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
	return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
	return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	switch(dialogid) {

		/*------------------------------------------------------------------------------------------------------------------------*/		
		/*------------------------------------------------DIALOGREGISTRO----------------------------------------------------------*/
		/*------------------------------------------------------------------------------------------------------------------------*/

		case DIALOG_REGISTRO: {
			if(response){
				/* se a resposta for registrar */
				new string[256];
				if(!strlen(inputtext)){
					/* se nгo tiver nada na caixa de texto */
					SendClientMessage(playerid, 0xF84400AA, "| INFO | A senha deve ter entre 4 e 16 caracteres!");
					format(string, sizeof(string), "{F8FCF8}Senha muito grande ou pequena, {6884E8}%s {F8FCF8}!\nColoque sua senha e clique em {F80000}Registrar", GetPlayerNome(playerid));
					ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "{F80000}Registrando uma conta", string, "Registrar", "Sair");
				} else if(strlen(inputtext) < 4 && strlen(inputtext) >= 1) {
					/* caso a senha tenha menos de 4 caracteres */
					SendClientMessage(playerid, 0xF84400AA, "| INFO | A senha deve ter entre 4 e 16 caracteres!");
					format(string, sizeof(string), "{F8FCF8}Senha muito grande ou pequena, {6884E8}%s {F8FCF8}!\nColoque sua senha e clique em {F80000}Registrar", GetPlayerNome(playerid));
					ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "{F80000}Registrando uma conta", string, "Registrar", "Sair");
				} else if(strlen(inputtext) > 16) {
					/* caso a senha tenha mais de 16 caracteres */
					SendClientMessage(playerid, 0xF84400AA, "| INFO | A senha deve ter entre 4 e 16 caracteres!");
					format(string, sizeof(string), "{F8FCF8}Senha muito grande ou pequena, {6884E8}%s {F8FCF8}!\nColoque sua senha e clique em {F80000}Registrar", GetPlayerNome(playerid));
					ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "{F80000}Registrando uma conta", string, "Registrar", "Sair");
				} else {
					/* configuracao na case (DIALOG_REGISTRO1) */
					DOF2_CreateFile(GetPlayerAccount(playerid));	// criou o arquivo .ini
					DOF2_SetString(GetPlayerAccount(playerid), "Nome", GetPlayerNome(playerid));
					DOF2_SetString(GetPlayerAccount(playerid), "Senha", inputtext);
					DOF2_SetString(GetPlayerAccount(playerid), "Sexo", "0");
					DOF2_SetString(GetPlayerAccount(playerid), "E-mail", "0");
					DOF2_SetString(GetPlayerAccount(playerid), "CodigoLiberacao", "0");					
					DOF2_SetInt(GetPlayerAccount(playerid), "Level", 0);
					DOF2_SetInt(GetPlayerAccount(playerid), "Experiencia", 0);
					DOF2_SetInt(GetPlayerAccount(playerid), "Dinheiro", 600);
					DOF2_SetInt(GetPlayerAccount(playerid), "Skin", 0);
					DOF2_SaveFile();	// salvando os aquivos acima
					SendClientMessage(playerid, 0xF8FCF8AA, "| CONTA | Registrado com sucesso!");
					format(string, sizeof(string), "{F8FCF8}Para confirmar sua conta, vocк deve informar um e-mail valido abaixo, serб enviado\num cуdigo no e-mail informado para prosseguir com o registro\n\n{F80000}Obs: {F8FCF8}Em alguns caso o e-mail com o cуdigo de liberaзгo vai para o lixo eletrфnico");
					ShowPlayerDialog(playerid, DIALOG_REGISTRO1, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Enviar", "");
				}  				
			} else {
				/* se a resposta for sair */
				SendClientMessage(playerid, 0xF80000AA, "| REGISTRO | Vocк foi kickado por sair sem se registrar!");
				SetTimerEx("KickPlayerTimer", 100, false, "i", playerid);
			}
			return 1;
		/* fim case DIALOG_REGISTRO */
		}
		
		case DIALOG_REGISTRO1: {
			if(response){
				/* se a resposta for enviar */
				new string[512];
				if(!strlen(inputtext)){
					/* se nгo tiver nada na caixa de texto */
					format(string, sizeof(string), "{6090E0}%s{F8FCF8}, um erro ocorreu, detalhe:\n\n» {F80000}| ERRO | {F8FCF8}E-mail muito pequeno ou grande demais pra ser valido!\n\nPara se registrar no servidor vocк deve informar um e-mail valido abaixo, serб enviado\num cуdigo no e-mail informado para prosseguir com o registro\n\n{F80000}Obs: {F8FCF8}Em alguns caso o e-mail com o cуdigo de liberaзгo vai para o lixo eletrфnico", GetPlayerNome(playerid));
					ShowPlayerDialog(playerid, DIALOG_REGISTRO1, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Enviar", "");
				} else if(EmailCaps(inputtext)) {
					/* se tiver letras maiusculas */
					format(string, sizeof(string), "{6090E0}%s{F8FCF8}, um erro ocorreu, detalhe:\n\n» {F80000}| ERRO | {F8FCF8}E-mail nгo pode conter letras MAIUSCULAS!\n\nPara se registrar no servidor vocк deve informar um e-mail valido abaixo, serб enviado\num cуdigo no e-mail informado para prosseguir com o registro\n\n{F80000}Obs: {F8FCF8}Em alguns caso o e-mail com o cуdigo de liberaзгo vai para o lixo eletrфnico", GetPlayerNome(playerid));
					ShowPlayerDialog(playerid, DIALOG_REGISTRO1, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Enviar", "");						
				}  else if(strlen(inputtext) < 5 || strlen(inputtext) > 51){ 
					/* verifica se o que foi digitado tem mais de 5 caracteres */
					format(string, sizeof(string), "{6090E0}%s{F8FCF8}, um erro ocorreu, detalhe:\n\n» {F80000}| ERRO | {F8FCF8}E-mail muito pequeno ou grande demais pra ser valido!\n\nPara se registrar no servidor vocк deve informar um e-mail valido abaixo, serб enviado\num cуdigo no e-mail informado para prosseguir com o registro\n\n{F80000}Obs: {F8FCF8}Em alguns caso o e-mail com o cуdigo de liberaзгo vai para o lixo eletrфnico", GetPlayerNome(playerid));
					ShowPlayerDialog(playerid, DIALOG_REGISTRO1, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Enviar", "");					
				} else if(strfind(inputtext, "@hotmail.com") == -1 && strfind(inputtext, "@gmail.com") == -1 && strfind(inputtext, "@live.com") == -1 && strfind(inputtext, "@outlook.com") == -1 && strfind(inputtext, "@terra.com") == -1 && strfind(inputtext, "@ig.com") == -1){
					/* Verifica se o que foi digitado й um e-mail valido */
					format(string, sizeof(string), "{6090E0}%s{F8FCF8}, um erro ocorreu, detalhe:\n\n» {F80000}| ERRO | {F8FCF8}E-mail informado estб invalido!\n\nE-mails suportados ( {30C830}@hotmail - @gmail - @live - @outlook - @terra - @ig {F8FCF8})\n\nPara se registrar no servidor vocк deve informar um e-mail valido abaixo, serб enviado\num cуdigo no e-mail informado para prosseguir com o registro\n\n", GetPlayerNome(playerid));
					strcat(string, "{F80000}Obs: {F8FCF8}Em alguns caso o e-mail com o cуdigo de liberaзгo vai para o lixo eletrфnico");
					ShowPlayerDialog(playerid, DIALOG_REGISTRO1, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Enviar", "");				
				} else{
					/* envia e-mail para conta com o codigo de liberaзгo, configuracao na case (DIALOG_REGISTRO2) */
					DOF2_SetString(GetPlayerAccount(playerid), "E-mail", inputtext);
					DOF2_SetString(GetPlayerAccount(playerid), "CodigoLiberacao", RandomCodeLiberacao());
					DOF2_SaveFile();
					format(string, sizeof(string), "%s,\n\nPara completar o processo de registro no servidor ''Cidade Vida Real'', Use o cГіdigo abaixo:\n\nCГіdigo: %s\n\n\nAtenciosamente,\nLos Katchorros - Jogos Online\nhttp://www.loskatchorros.com.br", GetPlayerNome(playerid), DOF2_GetString(GetPlayerAccount(playerid), "CodigoLiberacao")); /* arrumado, obs GetString %s GetInt %d ;D */
					SendMail(DOF2_GetString(GetPlayerAccount(playerid), "E-mail"), SERVER_EMAIL, "Cidade Vida Real - código", "Código para liberação de conta", string);
					format(string, sizeof(string), "{6094E8}%s{F8FCF8},\n\nFoi enviado a seu e-mail o cуdigo de liberaзгo\nInforme-o abaixo para prosseguir com o registro\n\n{F80000}Obs: {F8FCF8}Em alguns caso o e-mail com o cуdigo de liberaзгo vai para o lixo eletrфnico", GetPlayerNome(playerid));
					ShowPlayerDialog(playerid, DIALOG_REGISTRO2, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Confirmar", "");
				
				}
			} else {
				/* se ele tentar fechar a dialog */
				new string[256];
				format(string, sizeof(string), "{F8FCF8}Para confirmar sua conta, vocк deve informar um e-mail valido abaixo, serб enviado\num cуdigo no e-mail informado para prosseguir com o registro\n\n{F80000}Obs: {F8FCF8}Em alguns caso o e-mail com o cуdigo de liberaзгo vai para o lixo eletrфnico");
				ShowPlayerDialog(playerid, DIALOG_REGISTRO1, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Enviar", "");

			}		
			return 1;	
		/* fim case DIALOG_REGISTRO1 */
		}	

		case DIALOG_REGISTRO2: {
			if(response){
				/* se a resposta for confirmar */
				new string[512];
				if(strfind(inputtext, DOF2_GetString(GetPlayerAccount(playerid), "CodigoLiberacao"), true) != -1){
					format(string, sizeof(string), "selecione!");
					ShowPlayerDialog(playerid, DIALOG_REGISTRO4, DIALOG_STYLE_MSGBOX, "{F80000}Qual seu sexo?", string, "Masculino", "Feminino");
				} else {
					pInfos[playerid][pCodigoLiberacao]++;
					format(string, sizeof(string), "{6090E0}%s{F8FCF8}, um erro ocorreu, detalhe:\n\n» {F80000}| ERRO | {F8FCF8}Cуdigo incorreto!\n\n{F80000}Obs: {F8FCF8}Ao errar 3 vezes, serб enviado um novo cуdigo para o e-mail cadastrado\n\nInforme o codigo que recebeu em seu e-mail para prosseguir com o registro", GetPlayerNome(playerid));
					ShowPlayerDialog(playerid, DIALOG_REGISTRO2, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Confirmar", "");
					if(pInfos[playerid][pCodigoLiberacao] == 3){
						/* sistema de reenvio de e-mail trocar o codigo de liberacao */
						format(string, sizeof(string), "{6090E0}%s{F8FCF8}, um erro ocorreu, detalhe:\n\n» {F80000}| ERRO | {F8FCF8}Vocк digitou o cуdigo errado 3 vezes!\n\nFoi gerado um novo cуdigo de liberaзгo e enviado ao e-mail cadastrado\ninforme o cуdigo que recebeu em seu e-mail para prosseguir com o registro", GetPlayerNome(playerid));
						ShowPlayerDialog(playerid, DIALOG_REGISTRO2, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Confirmar", "");
						DOF2_SetString(GetPlayerAccount(playerid), "CodigoLiberacao", RandomCodeLiberacao());
						DOF2_SaveFile();
						format(string, sizeof(string), "%s,\n\nPara completar o processo de registro no servidor ''Cidade Vida Real'', Use o cГіdigo abaixo:\n\nCГіdigo: %s\n\n\nAtenciosamente,\nLos Katchorros - Jogos Online\nhttp://www.loskatchorros.com.br", GetPlayerNome(playerid), DOF2_GetString(GetPlayerAccount(playerid), "CodigoLiberacao"));
						SendMail(DOF2_GetString(GetPlayerAccount(playerid), "E-mail"), SERVER_EMAIL, "Código para liberação de conta", "Cidade Vida Real - código", string);
						pInfos[playerid][pCodigoLiberacao]--;
						pInfos[playerid][pCodigoLiberacao]--;
						pInfos[playerid][pCodigoLiberacao]--;
					}
					if(!strlen(inputtext)){
						/* se nгo tiver nada na caixa de texto */					
						format(string, sizeof(string), "{6090E0}%s{F8FCF8}, um erro ocorreu, detalhe:\n\n» {F80000}| ERRO | {F8FCF8}Vocк deixou o campo em branco!\n\nInforme o dнgitos de 4 digitos que recebeu em seu e-mail para prosseguir com o registro", GetPlayerNome(playerid));
						ShowPlayerDialog(playerid, DIALOG_REGISTRO2, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Confirmar", "");
					}
				}
			} else {
				/* se ele tentar fechar a dialog */
				new string[512];
				if(strfind(inputtext, DOF2_GetString(GetPlayerAccount(playerid), "CodigoLiberacao"), true) != -1){
					format(string, sizeof(string), "selecione!");
					ShowPlayerDialog(playerid, DIALOG_REGISTRO4, DIALOG_STYLE_MSGBOX, "{F80000}Qual seu sexo?", string, "Masculino", "Feminino");
				} else {
					pInfos[playerid][pCodigoLiberacao]++;
					format(string, sizeof(string), "{6090E0}%s{F8FCF8}, um erro ocorreu, detalhe:\n\n» {F80000}| ERRO | {F8FCF8}Cуdigo incorreto!\n\n{F80000}Obs: {F8FCF8}Ao errar 3 vezes, serб enviado um novo cуdigo para o e-mail cadastrado\n\nInforme o codigo que recebeu em seu e-mail para prosseguir com o registro", GetPlayerNome(playerid));
					ShowPlayerDialog(playerid, DIALOG_REGISTRO2, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Confirmar", "");
					if(pInfos[playerid][pCodigoLiberacao] == 3){
						/* sistema de reenvio de e-mail trocar o codigo de liberacao */
						DOF2_SetString(GetPlayerAccount(playerid), "CodigoLiberacao", RandomCodeLiberacao());
						DOF2_SaveFile();
						format(string, sizeof(string), "%s,\n\nPara completar o processo de registro no servidor ''Cidade Vida Real'', Use o cГіdigo abaixo:\n\nCГіdigo: %s\n\n\nAtenciosamente,\nLos Katchorros - Jogos Online\nhttp://www.loskatchorros.com.br", GetPlayerNome(playerid), DOF2_GetString(GetPlayerAccount(playerid), "CodigoLiberacao"));
						SendMail(DOF2_GetString(GetPlayerAccount(playerid), "E-mail"), SERVER_EMAIL, "Código para liberação de conta", "Cidade Vida Real - código", string);
						format(string, sizeof(string), "{6090E0}%s{F8FCF8}, um erro ocorreu, detalhe:\n\n» {F80000}| ERRO | {F8FCF8}Vocк digitou o cуdigo errado 3 vezes!\n\nFoi gerado um novo cуdigo de liberaзгo e enviado ao e-mail cadastrado\ninforme o cуdigo que recebeu em seu e-mail para prosseguir com o registro", GetPlayerNome(playerid));
						ShowPlayerDialog(playerid, DIALOG_REGISTRO2, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Confirmar", "");
						pInfos[playerid][pCodigoLiberacao]--;
						pInfos[playerid][pCodigoLiberacao]--;
						pInfos[playerid][pCodigoLiberacao]--;
					}
					if(!strlen(inputtext)){
						/* se nгo tiver nada na caixa de texto */					
						format(string, sizeof(string), "{6090E0}%s{F8FCF8}, um erro ocorreu, detalhe:\n\n» {F80000}| ERRO | {F8FCF8}Vocк deixou o campo em branco!\n\nInforme o dнgitos de 4 digitos que recebeu em seu e-mail para prosseguir com o registro", GetPlayerNome(playerid));
						ShowPlayerDialog(playerid, DIALOG_REGISTRO2, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Confirmar", "");
					}
				}
			}
			return 1;
		/* fim case DIALOG_REGISTRO2 */	
		}

		case DIALOG_REGISTRO3: {
			new string[512];
			if(response){
				/* confirmar */
				if(strfind(inputtext, DOF2_GetString(GetPlayerAccount(playerid), "CodigoLiberacao"), true) != -1){
					format(string, sizeof(string), "selecione!");
					ShowPlayerDialog(playerid, DIALOG_REGISTRO4, DIALOG_STYLE_MSGBOX, "{F80000}Qual seu sexo?", string, "Masculino", "Feminino");
				} else {
					/* se o codigo informado for o errado */
					pInfos[playerid][pCodigoLiberacao]++;
					format(string, sizeof(string), "{6090E0}%s{F8FCF8}, um erro ocorreu, detalhe:\n\n» {F80000}| ERRO | {F8FCF8}Cуdigo incorreto!\n\n{F80000}Obs: {F8FCF8}Ao errar 3 vezes, serб enviado um novo cуdigo para o e-mail cadastrado\n\nInforme o codigo que recebeu em seu e-mail para prosseguir com o registro", GetPlayerNome(playerid));
					ShowPlayerDialog(playerid, DIALOG_REGISTRO2, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Confirmar", "");
					if(pInfos[playerid][pCodigoLiberacao] == 3){
						/* sistema de reenvio de e-mail / troca do codigo de liberacao */
						format(string, sizeof(string), "{6090E0}%s{F8FCF8}, um erro ocorreu, detalhe:\n\n» {F80000}| ERRO | {F8FCF8}Vocк digitou o cуdigo errado 3 vezes!\n\nFoi gerado um novo cуdigo de liberaзгo e enviado ao e-mail cadastrado\ninforme o cуdigo que recebeu em seu e-mail para prosseguir com o registro", GetPlayerNome(playerid));
						ShowPlayerDialog(playerid, DIALOG_REGISTRO2, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Confirmar", "");
						DOF2_SetString(GetPlayerAccount(playerid), "CodigoLiberacao", RandomCodeLiberacao());
						DOF2_SaveFile();
						format(string, sizeof(string), "%s,\n\nPara completar o processo de registro no servidor ''Cidade Vida Real'', Use o cГіdigo abaixo:\n\nCГіdigo: %s\n\n\nAtenciosamente,\nLos Katchorros - Jogos Online\nhttp://www.loskatchorros.com.br", GetPlayerNome(playerid), DOF2_GetString(GetPlayerAccount(playerid), "CodigoLiberacao"));
						SendMail(DOF2_GetString(GetPlayerAccount(playerid), "E-mail"), SERVER_EMAIL, "Código para liberação de conta", "Cidade Vida Real - código", string);
						pInfos[playerid][pCodigoLiberacao]--;
						pInfos[playerid][pCodigoLiberacao]--;
						pInfos[playerid][pCodigoLiberacao]--;
					}
					if(!strlen(inputtext)){
						/* se nгo tiver nada na caixa de texto */					
						format(string, sizeof(string), "{6090E0}%s{F8FCF8}, um erro ocorreu, detalhe:\n\n» {F80000}| ERRO | {F8FCF8}Vocк deixou o campo em branco!\n\nInforme o dнgitos de 4 digitos que recebeu em seu e-mail para prosseguir com o registro", GetPlayerNome(playerid));
						ShowPlayerDialog(playerid, DIALOG_REGISTRO2, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Confirmar", "");
					}
				}
			} else {
				/* alterar */
				format(string, sizeof(string), "{6894E8}%s{F8FCF8}, vocк estб em processo de alteraзгo do e-mail\n\nPara se registrar no servidor vocк deve informar um e-mail valido abaixo, serб enviado\num cуdigo no e-mail informado para prosseguir com o registro\n\n{F80000}Obs: {F8FCF8}Em alguns caso o e-mail com o cуdigo de liberaзгo vai para o lixo eletrфnico", GetPlayerNome(playerid));
				ShowPlayerDialog(playerid, DIALOG_REGISTRO1, DIALOG_STYLE_INPUT, "{F80000}Registro", string, "Enviar", "");				
			}
		/* fim case DIALOG_REGISTRO3 */
			return 1;
		} 

		case DIALOG_REGISTRO4: {
			if(response){
				/* se a resposta for Masculino */
				SetPlayerSkin(playerid, SKIN_MASCULINA);
				DOF2_SetString(GetPlayerAccount(playerid), "Sexo", "Masculino");
				DOF2_SetInt(GetPlayerAccount(playerid), "Skin", SKIN_MASCULINA);
				DOF2_SaveFile();
				GivePlayerMoney(playerid, DOF2_GetInt(GetPlayerAccount(playerid), "Dinheiro"));
				SetSpawnInfo(playerid, 0, DOF2_GetInt(GetPlayerAccount(playerid), "Skin"), 822.8328, -1341.8531, 13.5177, 354.1657, 0, 0, 0, 0, 0, 0);
				SpawnPlayer(playerid);
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
			} else { 
				/* se a resposta for Feminino */
				SetPlayerSkin(playerid, SKIN_FEMININA);
				DOF2_SetString(GetPlayerAccount(playerid), "Sexo", "Feminino");
				DOF2_SetInt(GetPlayerAccount(playerid), "Skin", SKIN_FEMININA);
				DOF2_SaveFile();
				GivePlayerMoney(playerid, DOF2_GetInt(GetPlayerAccount(playerid), "Dinheiro"));
				SetSpawnInfo(playerid, 0, DOF2_GetInt(GetPlayerAccount(playerid), "Skin"), 822.8328, -1341.8531, 13.5177, 354.1657, 0, 0, 0, 0, 0, 0);	
				SpawnPlayer(playerid);		
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
			}
			return 1;
		/* fim case DIALOG_REGISTRO4 */
		}
		/* dialog registro */

		/*------------------------------------------------------------------------------------------------------------------------*/		
		/*------------------------------------------------DIALOGLOGIN-------------------------------------------------------------*/
		/*------------------------------------------------------------------------------------------------------------------------*/

		
		/* dialog login */
		case DIALOG_LOGIN: {
			if( response ) {
				/* logar */
				new string[256];
				if(!strlen(inputtext)){
					format(string, sizeof(string), "{F8FCF8}Vocк deve digitar uma senha {7088E8}%s\n\n{F8FCF8}Digite sua senha e clique em ''{F84400}Logar{F8FCF8}''", GetPlayerNome(playerid));
					ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{F80000}Conta", string, "Logar", "Sair");
				} else if( strcmp( inputtext, DOF2_GetString(GetPlayerAccount(playerid), "Senha"), false)){
					/* senha errada */
					pInfos[playerid][pSenhaInvalida]++;
					SendClientMessage(playerid, 0xF84400AA, "| CONTA | Senha incorreta, Se errar 3 vezes terб que recuperar-lб por E-mail!");
					format(string, sizeof(string), "{F8FCF8}Senha incorreta {7088E8}%s\n\n{F8FCF8}Digite sua senha e clique em ''{F84400}Logar{F8FCF8}''", GetPlayerNome(playerid));
					ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{F80000}Conta", string, "Logar", "Sair");
					if(pInfos[playerid][pSenhaInvalida] == 3){
						/* senha errada 3x */
						format(string, sizeof(string), "{F8FCF8}Aperte em '{2090F8}Enviar{F8FCF8}' para enviar os dados para o seu e-mail contendo sua senha\n{F80000}Obs: {F8FCF8}A senha serб enviada para o e-mail cadastrado em nosso banco de dados", GetPlayerNome(playerid));
						ShowPlayerDialog(playerid, DIALOG_LOGIN1, DIALOG_STYLE_MSGBOX, "{F80000}Registro {F8FCF8}Recuperaзгo de Senha", string, "Enviar", "Cancelar");
					}
				} else {
						/* se o login for efetuado corretamente */
					SendClientMessage(playerid, 0xF8FCF8AA, "");
					SendClientMessage(playerid, 0xF8FCF8AA, "");
					SendClientMessage(playerid, 0xF8FCF8AA, "");	
					SendClientMessage(playerid, 0xF8FCF8AA, "");
					SendClientMessage(playerid, 0xF8FCF8AA, "");
					SendClientMessage(playerid, 0xF8FCF8AA, "");
					SendClientMessage(playerid, 0xF8FCF8AA, "");
					SendClientMessage(playerid, 0xF8FCF8AA, "");
					SendClientMessage(playerid, 0xF8FCF8AA, "");
					SendClientMessage(playerid, 0xF8FCF8AA, "| CONTA | Logado com sucesso!");
					GivePlayerMoney(playerid, DOF2_GetInt(GetPlayerAccount(playerid), "Dinheiro"));
					SetPlayerScore(playerid, DOF2_GetInt(GetPlayerAccount(playerid), "Level"));
					pInfos[playerid][pExperiencia] = DOF2_GetInt(GetPlayerAccount(playerid), "Experiencia");	
					SetSpawnInfo(playerid, 0, DOF2_GetInt(GetPlayerAccount(playerid), "Skin"), DOF2_GetFloat(GetPlayerAccount(playerid), "UltimaPosX"), DOF2_GetFloat(GetPlayerAccount(playerid), "UltimaPosY"), DOF2_GetFloat(GetPlayerAccount(playerid), "UltimaPosZ"), DOF2_GetFloat(GetPlayerAccount(playerid), "UltimaPosA"), 0, 0, 0, 0, 0, 0);
					SpawnPlayer(playerid);
				}
			} else {
				/* sair */
				SendClientMessage(playerid, 0xF80000AA, "| LOGIN | Vocк foi kickado por sair sem logar");
				SetTimerEx("KickPlayerTimer", 100, false, "i", playerid);				
			}
			return 1;
		/* fim dialog login */
		}
		case DIALOG_LOGIN1:{
			if(response){
				/* enviar informacoes para o email */
				new string[512];
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "");
				SendClientMessage(playerid, 0xF8FCF8AA, "| INFO | Dados com sua senha foi enviado para seu E-mail");
				SendClientMessage(playerid, 0xF8FCF8AA, "| INFO | As vezes pode demorar 5 minutos");
				SetTimerEx("KickPlayerTimer", 100, false, "i", playerid);
				DOF2_SetString(GetPlayerAccount(playerid), "Senha", RandomCodeLiberacao());
				DOF2_SaveFile();
				format(string, sizeof(string), "%s,\n\nPara completar o processo de recuperaзгo de senha da sua conta no servidor ''Cidade Vida Real'', Use os seguintes dados:\n\nNick: %s\nSenha: %s\n\nIMPORTANTE: Ao logar no servidor use o comando /TrocarSenha para redefini-la\n\n\nAtenciosamente,\nLos Katchorros - Jogos Online\nhttp://www.loskatchorros.com.br", GetPlayerNome(playerid), GetPlayerNome(playerid), DOF2_GetString(GetPlayerAccount(playerid), "Senha"));
				SendMail(DOF2_GetString(GetPlayerAccount(playerid), "E-mail"), SERVER_EMAIL, "Cidade Vida Real - Recuperaзгo de senha", "Recuperaзгo de senha", string);
			} else {
				/* cancelar e kickar o player */
				SendClientMessage(playerid, 0xF8FCF8AA, "| INFO | Vocк cancelou a aзгo de enviar um E-mail");
				SetTimerEx("KickPlayerTimer", 100, false, "i", playerid);				
			}
		}
	}
	return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	return 1;
}

public KickPlayerTimer(playerid)
{
	Kick(playerid);
	return 1;
}

public UpTimer(playerid)
{
	new string[64];
	pInfos[playerid][pLevel] = GetPlayerScore(playerid);
	if(pInfos[playerid][pExperiencia] == 4){
		// up Level
		pInfos[playerid][pExperiencia]++;
		SetPlayerScore(playerid, pInfos[playerid][pLevel] + 1);
		SendClientMessage(playerid, 0x75EA00AA, "| UP | Vocк ganhou +1 de Experiкncia ( 5/5 )");
		format(string, sizeof(string), "| UP | Vocк juntou 5 de Experiкncia, e ganhou +1 level ( %d )", GetPlayerScore(playerid));
		SendClientMessage(playerid, 0x75EA00AA, string);
		pInfos[playerid][pExperiencia]--;
		pInfos[playerid][pExperiencia]--;
		pInfos[playerid][pExperiencia]--;
		pInfos[playerid][pExperiencia]--;
		pInfos[playerid][pExperiencia]--;
	} else if(pInfos[playerid][pExperiencia] == 3){
		// mensagem quando ele tiver 4
		SendClientMessage(playerid, 0x75EA00AA, "| UP | Vocк ganhou +1 de Experiкncia ( 4/5 )");
		pInfos[playerid][pExperiencia]++;

	} else if(pInfos[playerid][pExperiencia] == 2){
		// mensagem quando ele tiver 3
		SendClientMessage(playerid, 0x75EA00AA, "| UP | Vocк ganhou +1 de Experiкncia ( 3/5 )");
		pInfos[playerid][pExperiencia]++;

	} else if(pInfos[playerid][pExperiencia] == 1){
		// mensagem quando ele tiver 2
		SendClientMessage(playerid, 0x75EA00AA, "| UP | Vocк ganhou +1 de Experiкncia ( 2/5 )");
		pInfos[playerid][pExperiencia]++;

	}  else {
		// mensagem quando ele tiver 1
		SendClientMessage(playerid, 0x75EA00AA, "| UP | Vocк ganhou +1 de Experiкncia ( 1/5 )");
		pInfos[playerid][pExperiencia]++;
	}
	return 1;
}

stock GetPlayerAccount(playerid){ // Aprendi em uma video aula do LeoBradoks
	new file[128];
	format(file, sizeof(file), PASTA_CONTA, GetPlayerNome(playerid));
	return file;
}

stock GetPlayerNome(playerid){ // Aprendi em uma video aula do LeoBradoks
	new aname[MAX_PLAYER_NAME];
	GetPlayerName(playerid, aname, sizeof(aname));
	return aname;
}

stock RandomCodeLiberacao(){ // Esse codigo eu tirei do proprio forum samp infelizmente nao tenho o link do autor mais se souberem por favor me avisem
    new codrand[16];
    format(codrand, sizeof(codrand), "%s%d%s%d%d%d", LetterList[random(sizeof(LetterList))], random(10), LetterList[random(sizeof(LetterList))], random(10), random(10), random(10));
    return codrand;
}

stock EmailCaps( text[ ] ){ // Esse codigo eu tirei do proprio forum samp infelizmente nao tenho o link do autor mais se souberem por favor me avisem
    for( new i, j = strlen( text )-1; i < j; i ++ )
    {
        if( ( 'A' <= text[ i ] <= 'Z' ) && ( 'A' <= text[ i ] <= 'Z' ) )
            return true;
    }
    return false;
}
Reply
#2

Tem a GM liberada na internet e so pegar de la, O Sistema de UP nгo й assim tbm, N Vi o sistema de Registro e Login, Parece meio "bagunзado" й olha.. Acho que nem DOF2 eles salva o servidor deles '-', Devem usar mysql, te concelho copiar outro server (R/PG)

Se quiser salvar as Experiencias apenas colocar no Registro:

PHP код:
DOF2::SetInt(File"EXP"Player[playerid][Experiencia] = 0);
DOF2::SetInt(File"Level"Player[playerid][Level] = 0);
DOF2::SaveFile();
SetPlayerScore(playeridPlayer[playerid][Score]); 
Parte do login:

PHP код:
Player[playerid][Experiencia] = DOF2::GetInt(File"EXP");
Player[playerid][Level] = DOF2::GetInt(File"Level");
SetPlayerScore(playeridPlayer[playerid][Level]); 
Й por fim salvando quando for sair ( Disconnect )

PHP код:
Player[playerid][Level] = GetPlayerScore(playerid);
DOF2::SetInt(File"EXP"Player[playerid][Experiencia]);
DOF2::SetInt(File"Level"Player[playerid][Level]);
DOF2::SaveFile();
// resetando
Player[playerid][Experiencia] = 0;
Player[playerid][Level] = 0
Se fizer oq eu falei de procurar a GM deles na Internet e pegar toda ideia que foi feito a um tempo atrбs vocк consegue passб-la para Pawn.CMD e DOF2. Pq era por dini e strcmp ( A GM disponнvel ainda й ) :/

Reply
#3

Quote:
Originally Posted by AutoMatic2
Посмотреть сообщение
Tem a GM liberada na internet
Nгo achei nгo cara
Reply
#4

Quote:
Originally Posted by KaioStinson
Nгo achei nгo cara
https://www.4shared.com/rar/Z8NNYxh3...Crakudos.html#

Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)