Advertisement
Wooziesan

[FS] Registro com Código de Liberação

Mar 9th, 2013
1,049
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 10.71 KB | None | 0 0
  1. /*
  2. |=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
  3. |-----------------------------------------------|
  4. | Sistema de Registro com liberação via e-mail    |
  5. |  ***** Desenvolvido by: [C.D.M]Woozie *****   |
  6. |-----------------------------------------------|
  7. |=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
  8. */
  9.  
  10. #include <a_samp>
  11. #define  MAILER_URL "urlmailer.comule.com/PagUrl.php"
  12. #include <mailer>
  13.  
  14. #include <DOF2>
  15. //---------------------------
  16. #define EMAIL               3
  17. #define CODIGO              4
  18. #define REGISTRO            5
  19. #define LOGIN               6
  20. #define RECUPERACAO         7
  21. //---------------------------
  22.  
  23. new Erro[MAX_PLAYERS];
  24. new ErroCode[MAX_PLAYERS];
  25.  
  26. #pragma tabsize 4
  27.  
  28. #define MAX_EMAIL 10000
  29. #define STR 50
  30.  
  31. new Swears[MAX_EMAIL][STR];
  32. new num_email = 0;
  33.  
  34. new CodigoS[10][2] = {"0","1","2","3","4","5","6","7","8","9"};
  35.  
  36. public OnFilterScriptInit()
  37. {
  38. new string[STR], File:file;
  39. if((file = fopen("EmailsCadastrado.ini",io_read)))
  40. {
  41. while(fread(file,string))
  42. {
  43. for(new i = 0, j = strlen(string); i < j; i++) if(string[i] == '\n' || string[i] == '\r') string[i] = '\0';
  44. Swears[num_email] = string;
  45.  
  46. num_email++;
  47. }
  48. fclose(file);
  49. }
  50. return 1;
  51. }
  52.  
  53. public OnFilterScriptExit()
  54. {
  55.     return 1;
  56. }
  57.  
  58. public OnPlayerConnect(playerid)
  59. {
  60. Erro[playerid] = 0;
  61. ErroCode[playerid] = 0;
  62. new string[1500];
  63.  
  64. new arquivo[40], Nome[MAX_PLAYER_NAME];
  65. GetPlayerName(playerid, Nome, 32);
  66. format(arquivo, 40, "Registrados/%s.ini", Nome);
  67.  
  68.  
  69. if(DOF2_FileExists(arquivo))
  70. {
  71. format(string, sizeof(string), "{00FF7F}Nome: {FFFFFF}%s\n{00FF7F}Status do Nome: {FFFFFF}Já registrado.\n\n{FFFFFF}Informe sua senha corretamente para logar.", Nome);
  72. ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Login", string, "Logar", "Cancelar");
  73. }
  74. else
  75. {
  76. format(string, sizeof(string),"{FFFFFF}Bem vindo ao Server {6495ED}%s{FFFFFF}\nInforme um e-mail valido para receber um código\nde libeção pra poder registra no server.", Nome);
  77. ShowPlayerDialog(playerid, EMAIL, DIALOG_STYLE_INPUT,"Registro", string, "Enviar", "");
  78. }
  79. return 1;
  80. }
  81.  
  82. public OnPlayerCommandText(playerid, cmdtext[])
  83. {
  84. new cmd[256],string[256],idx;
  85. cmd = strtok(cmdtext, idx);
  86.  
  87. if(strcmp(cmd, "/trocaremail", true) == 0)
  88. {
  89. new Senha[100];
  90. Senha = strtok(cmdtext, idx);
  91. if(!strcmp(Senha,DOF2_GetString(Contas(playerid),"Senha"),false))
  92. {
  93.  
  94. }
  95. else
  96. {
  97. SendClientMessage(playerid, -1, "Senha incorreta!!");
  98. return 1;
  99. }
  100.  
  101. new length = strlen(cmdtext);
  102. while ((idx < length) && (cmdtext[idx] <= ' '))
  103. {
  104. idx++;
  105. }
  106. new offset = idx;
  107. new menssagem[156];
  108. while ((idx < length) && ((idx - offset) < (sizeof(menssagem) - 1)))
  109. {
  110. menssagem[idx - offset] = cmdtext[idx];
  111. idx++;
  112. }
  113. menssagem[idx - offset] = EOS;
  114.  
  115. if(!strlen(menssagem))
  116. {
  117. SendClientMessage(playerid, -1, "Uso correto: /trocaremail (senha) (novo e-mail)");
  118. return 1;
  119. }
  120.  
  121. new arquivo[40], name[MAX_PLAYER_NAME];
  122. GetPlayerName(playerid, name, 32);
  123. format(arquivo, 40, "Registrados/%s.ini", name);
  124.  
  125. DOF2_SetString(arquivo,"Email", menssagem);
  126. DOF2_SaveFile();
  127.  
  128. format(string, sizeof(string), "E-mail trocado com sucesso! Novo e-mail da sua conta: %s", menssagem);
  129. SendClientMessageToAll(-1, string);
  130. return 1;
  131. }
  132.  
  133. return 0;
  134. }
  135.  
  136. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  137. {
  138. new string[1500], arquivo[40], Nome[MAX_PLAYER_NAME], endereco[100];
  139. GetPlayerName(playerid, Nome, 32);
  140. format(arquivo, 40, "Registrados/%s.ini", Nome);
  141. format(endereco, 40, "Emails/%s.ini", Nome);
  142.  
  143. if(dialogid == EMAIL)
  144. {
  145. if(strlen(inputtext) < 5)
  146. {
  147. format(string, sizeof(string),"{FFFFFF}Bem vindo ao Server {6495ED}%s{FFFFFF}\nInforme um e-mail valido para receber um código\nde libeção pra poder registra no server.\n{FF0000}E-mail Pequeno demais pra ser valido!!", Nome);
  148. ShowPlayerDialog(playerid, EMAIL, DIALOG_STYLE_INPUT,"Registro", string, "Enviar", "");
  149. return 1;
  150. }
  151.  
  152. for(new s = 0; s < num_email; s++)
  153. {
  154. if(strcmp(inputtext,Swears[s],false) != -1)
  155. {
  156. format(string, sizeof(string),"{FFFFFF}Bem vindo ao Server {6495ED}%s{FFFFFF}\nInforme um e-mail valido para receber um código\nde libeção pra poder registra no server.\n{FF0000}E-mail já cadastrado!! Informe outro.", Nome);
  157. ShowPlayerDialog(playerid, EMAIL, DIALOG_STYLE_INPUT,"Registro", string, "Enviar", "");
  158. }
  159. else
  160. {
  161.  
  162. new Mensagem[300], Codigostrg[5], aleatorio1 = random(sizeof(CodigoS)), aleatorio2 = random(sizeof(CodigoS)), aleatorio3 = random(sizeof(CodigoS)), aleatorio4 = random(sizeof(CodigoS));
  163. format(Codigostrg, sizeof(Codigostrg), "%s%s%s%s", CodigoS[aleatorio1],CodigoS[aleatorio2],CodigoS[aleatorio3],CodigoS[aleatorio4]);
  164.  
  165. DOF2_CreateFile(endereco);
  166. DOF2_SetString(endereco, "E-mail", inputtext);
  167. DOF2_SetString(endereco, "Codigo", Codigostrg);
  168. DOF2_SaveFile();
  169.  
  170. format(Mensagem, sizeof(Mensagem),"Código: %s\n\nUse esse código para liberar o registro em nosso Servidor." ,Codigostrg);
  171. SendMail(DOF2_GetString(Exmail(playerid),"E-mail"), "[email protected]", "Server Sa-mp", "Liberção de Registro", Mensagem);
  172. ShowPlayerDialog(playerid, CODIGO, DIALOG_STYLE_INPUT, "Registro","{FFFFFF}O codigo de liberção pra se registrar foi enviado para\no e-mail informado, após recebe-lo informe-o abaixo.", "Confirmar", "");
  173. return 1;
  174. }
  175. }
  176. }
  177.  
  178. if(dialogid == CODIGO)
  179. {
  180. if(!strlen(inputtext))
  181. {
  182. ShowPlayerDialog(playerid, CODIGO, DIALOG_STYLE_INPUT, "Registro","O codigo de liberção pra se registrar foi enviado para\no e-mail informado, após recebe-lo informe-o abaixo.\n{FF0000}Campo em branco!!", "Confirmar", "");
  183. return 1;
  184. }
  185.  
  186. new CordaCode[196];
  187. format(CordaCode, sizeof(CordaCode), "%s", inputtext);
  188.  
  189. if(!strcmp(CordaCode,DOF2_GetString(Exmail(playerid),"Codigo"),false))
  190. {
  191. format(string, sizeof(string), "{00FF7F}Nome: {FFFFFF}%s\n{00FF7F}Status do Nome: {FFFFFF}Não registrado.\n\n{FFFFFF}Informe uma senha para registrar.", Nome);
  192. ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_INPUT, "Registro", string, "Registrar", "Cancelar");
  193. }
  194. else
  195. {
  196. ErroCode[playerid]++;
  197. ShowPlayerDialog(playerid, CODIGO, DIALOG_STYLE_INPUT, "Registro","{FFFFFF}O codigo de liberção pra se registrar foi enviado para\no e-mail informado, após recebe-lo informe-o abaixo.\n{FF0000}Codigo incoreto!!", "Confirmar", "");
  198. }
  199.  
  200. if(ErroCode[playerid] == 3)
  201. {
  202. ErroCode[playerid] = 0;
  203.  
  204. format(endereco, 40, "Emails/%s.ini", Nome);
  205. new Codigostrg[5], aleatorio1 = random(sizeof(CodigoS)), aleatorio2 = random(sizeof(CodigoS)), aleatorio3 = random(sizeof(CodigoS)), aleatorio4 = random(sizeof(CodigoS));
  206. format(Codigostrg, sizeof(Codigostrg), "%s%s%s%s", CodigoS[aleatorio1],CodigoS[aleatorio2],CodigoS[aleatorio3],CodigoS[aleatorio4]);
  207.  
  208. DOF2_SetString(endereco, "Codigo", Codigostrg);
  209. DOF2_SaveFile();
  210.  
  211. new Mensagem[300];
  212. format(Mensagem, sizeof(Mensagem),"Novo Código: %s\n\nUse esse código para liberar o registro em nosso Servidor." ,Codigostrg);
  213. SendMail(DOF2_GetString(Exmail(playerid),"E-mail"), "[email protected]", "Server Sa-mp", "Liberção de Registro", Mensagem);
  214. ShowPlayerDialog(playerid, CODIGO, DIALOG_STYLE_INPUT, "Registro","{FF0000}Você digitou o Código errado 3 vezes!!\n{FFFFFF}Um novo codigo de liberção pra se registrar foi enviado para\no e-mail informado, após recebe-lo informe-o abaixo.", "Confirmar", "");
  215. return 1;
  216. }
  217. }
  218.  
  219.  
  220.  
  221. if(dialogid == REGISTRO)
  222. {
  223. if(!response)
  224. {
  225. SendClientMessage(playerid, -1, "[info] Você foi kickado por não se registrar.");
  226. Kick(playerid);
  227. return 1;
  228. }
  229. else
  230. {
  231. new CordaSenha[196];
  232. format(CordaSenha, sizeof(CordaSenha), "%s", inputtext);
  233. format(string, 256, "%s\r\n" ,DOF2_GetString(Exmail(playerid),"E-mail"));
  234. ArmazenarEmails(string);
  235.  
  236. DOF2_CreateFile(arquivo);
  237. DOF2_SetString(arquivo, "Senha", CordaSenha);
  238. DOF2_SetString(arquivo, "E-mail", DOF2_GetString(Exmail(playerid),"E-mail"));
  239. DOF2_RemoveFile(endereco);
  240. DOF2_SaveFile();
  241.  
  242. format(string, sizeof(string), "{00FF7F}Nome: {FFFFFF}%s\n{00FF7F}Status do Nome: {FFFFFF}Registrado.\n\n{FFFFFF}Informe sua senha corretamente para logar.", Nome);
  243. ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Login", string, "Logar", "Cancelar");
  244. }
  245. }
  246.  
  247. if(dialogid == LOGIN)
  248. {
  249.  
  250. if(!response)
  251. {
  252. SendClientMessage(playerid, -1, "[info] Você foi kickado por cancelar o login.");
  253. Kick(playerid);
  254. }
  255. else
  256. {
  257. new CordaSenha[196];
  258. format(CordaSenha, sizeof(CordaSenha), "%s", inputtext);
  259. if(!strcmp(CordaSenha,DOF2_GetString(Contas(playerid),"Senha"),false))
  260. {
  261. //
  262. }
  263. else
  264. {
  265. format(string, sizeof(string), "{00FF7F}Nome: {FFFFFF}%s\n{00FF7F}Status do Nome: {FFFFFF}Já registrado.\n{FF0000}Senha incorreta!\n{FFFFFF}Informe sua senha corretamente para logar.", Nome);
  266. ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Login", string, "Logar", "Cancelar");
  267. Erro[playerid]++;
  268. }
  269. }
  270.  
  271. if(Erro[playerid] == 3)
  272. {
  273. new DialogKrayvhus[1500];
  274. format(string, sizeof(string), "[AVISO] Você errou a senha 3 vezes !!\nAperte em 'Enviar' para Receber um E-mail com a senha da sua conta.");
  275. strcat(DialogKrayvhus,string);
  276. ShowPlayerDialog(playerid, RECUPERACAO, DIALOG_STYLE_MSGBOX, "Recuperação de Senha", string, "Enviar", "");
  277. return 1;
  278. }
  279. }
  280.  
  281. if(dialogid == RECUPERACAO)
  282. {
  283. new Mensagem[300];
  284. GetPlayerName(playerid, Nome, 32);
  285. format(Mensagem, sizeof(Mensagem),"Olá %s, esse e-mail foi enviado pra você através do Servidor Sa-mp solicitando a Recuperação de Senha.\n\nSua senha: %s\n\nCaso não tenha feito essa Solicitação, verifique se alguém não está tentando acessar sua conta." ,Nome, DOF2_GetString(Contas(playerid),"Senha"));
  286. SendMail(DOF2_GetString(Contas(playerid),"E-mail"), "[email protected]", "Servidor Sa-mp", "Recuperação de Senha", Mensagem);
  287. SendClientMessage(playerid, -1, "[info] Um e-mail com a senha de sua conta foi enviado para o endereço de e-mail cadastrado na mesma.");
  288. SendClientMessage(playerid, -1, "[info] Se você não encontrar o e-mail, verifique se ele não foi parar na lixeira.");
  289. SendClientMessage(playerid, -1, "[info] Caso contrario, Contacte o Dono do servidor.");
  290. Kick(playerid);
  291. return 1;
  292. }
  293.  
  294. return 1;
  295. }
  296.  
  297. stock Contas(playerid)
  298. {
  299. new arquivo[40], name[MAX_PLAYER_NAME];
  300. GetPlayerName(playerid, name, 32);
  301. format(arquivo, 40, "Registrados/%s.ini", name);
  302. return arquivo;
  303. }
  304.  
  305. stock Exmail(playerid)
  306. {
  307. new endereco[40], Nome[MAX_PLAYER_NAME];
  308. GetPlayerName(playerid, Nome, 32);
  309. format(endereco, 40, "Emails/%s.ini", Nome);
  310. return endereco;
  311. }
  312.  
  313. stock ArmazenarEmails(const string[])
  314. {
  315. new File:HF = fopen("EmailsCadastrado.ini",io_append);
  316. fwrite(HF, string);
  317. fclose(HF);
  318. }
  319.  
  320. strtok(const string[], &index)
  321. {
  322.     new length = strlen(string);
  323.     while ((index < length) && (string[index] <= ' '))
  324.     {
  325.         index++;
  326.     }
  327.  
  328.     new offset = index;
  329.     new result[20];
  330.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  331.     {
  332.         result[index - offset] = string[index];
  333.         index++;
  334.     }
  335.     result[index - offset] = EOS;
  336.     return result;
  337. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement