05.02.2019, 22:18
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!
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; }