Advertisement
Guest User

aft_Registro

a guest
Sep 24th, 2012
11
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 10.98 KB | None | 0 0
  1. /*
  2.         Olá, este FS foi criado por Adrian Fahrenheit Tepes
  3.  
  4.                         Se for usá-lo, ponha meu nome nos creditos, hoje é dia
  5.                     26/11/2011, nesse dia eu era muito noob no pawn, hoje eu
  6.                     ainda sou, mas é assim mesmo. Se não colocar meu nome nos
  7.                     créditos, eu vou aí te matar.
  8.  
  9.                                Att. Adrian Fahrenheit Tepes, filho de Drácula.
  10. */
  11.  
  12. #include <a_samp>
  13. #include <YSI\y_ini>
  14.  
  15. #define                 PASTACONTAS                 "/Contas/%s.ini"    // Aqui, obviamente, ficará o diretório/caminho onde as contas serão salvas.
  16. #define                 REGISTRO                    1
  17. #define                 LOGIN                       2
  18. #define                 SCM                         SendClientMessage
  19. #define                 COR_INFO                    0xA9C4E4AA
  20.  
  21. new gstring[1024];
  22.  
  23. enum a_Info
  24. {
  25.     a_Senha[30],
  26.     bool:a_Logado = false,
  27.     a_Reg,
  28.     a_Admin,
  29.     a_Dinheiro,
  30.     a_Skin
  31. };
  32.  
  33. new AFT_Info[MAX_PLAYERS][a_Info];
  34.  
  35. public OnFilterScriptInit()
  36. {
  37.     print("\n\n");
  38.     print(" Sistema de registro/login em dialog com Y_INI, criado por:\n\n");
  39.     print("         Adrian Fahrenheit Tepes\n\n\n");
  40.     return 1;
  41. }
  42.  
  43. public OnFilterScriptExit()
  44. {
  45.     return 1;
  46. }
  47.  
  48. public OnPlayerRequestClass(playerid, classid)
  49. {
  50.     LimparChat(playerid, 125);
  51.     SCM(playerid, COR_INFO, "{FFFF00}[INFO]{FFFFFF}: Este servidor usa sistema de salvamento por Y_INI. Sistema criado por:");
  52.     SCM(playerid, COR_INFO, "                                    {FF9999}Adrian Fahrenheit Tepes");
  53.     LimparChat(playerid, 2);
  54.     if(fexist(pPasta(playerid))) ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD,"{FFFF00}LOGIN", "Bem-vindo de volta ao ''NOMEDOSERVIDOR''.\n\nDigite sua senha para logar-se.", "Logar", "");
  55.     else ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_PASSWORD,"{FFFF00}REGISTRO", "Bem-vindo ao ''NOMEDOSERVIDOR''.\n\nDigite sua senha para registrar-se.", "Registrar", "");
  56.     return 1;
  57. }
  58.  
  59. public OnPlayerConnect(playerid)
  60. {
  61.     AFT_Info[playerid][a_Logado] = false;
  62.     AFT_Info[playerid][a_Reg] = 0;
  63.     AFT_Info[playerid][a_Admin] = 0;
  64.     AFT_Info[playerid][a_Dinheiro] = 0;
  65.     AFT_Info[playerid][a_Skin] = 0;
  66.     return 1;
  67. }
  68.  
  69. public OnPlayerDisconnect(playerid, reason)
  70. {
  71.     jAtualizar(playerid);
  72.     return 1;
  73. }
  74.  
  75. public OnPlayerSpawn(playerid)
  76. {
  77.     if(AFT_Info[playerid][a_Logado] == false) return SCM(playerid, COR_INFO, "{FFFF00}[INFO]{A9C4E4}: Você precisa estar logado."), Kick(playerid);
  78.     LimparChat(playerid, 1);
  79.     SCM(playerid, COR_INFO, "{FFFF00}+++++++++++++++++++++++++++++++");
  80.     SCM(playerid, COR_INFO, " Informações:");
  81.     format(gstring, sizeof(gstring), "{FFFFFF}Nível de administrador{A9C4E4}: %d", AFT_Info[playerid][a_Admin]);
  82.     SCM(playerid, COR_INFO, gstring);
  83.     format(gstring, sizeof(gstring), "{FFFFFF}Skin em uso{A9C4E4}: %d", AFT_Info[playerid][a_Skin]);
  84.     SCM(playerid, COR_INFO, gstring);
  85.     format(gstring, sizeof(gstring), "{FFFFFF}Dinheiro{A9C4E4}: %d", AFT_Info[playerid][a_Dinheiro]);
  86.     SCM(playerid, COR_INFO, gstring);
  87.     SCM(playerid, COR_INFO,"{FFFF00}++++++++++++++++++++++++++++++++");
  88.     jCarregar(playerid);
  89.     LimparChat(playerid, 1);
  90.     return 1;
  91. }
  92.  
  93. public OnPlayerCommandText(playerid, cmdtext[])
  94. {
  95.     new cmd[128], idx;
  96.     cmd = strtok(cmdtext, idx);
  97.     if(!strcmp(cmdtext, "/viraradmin", true))
  98.     {
  99.         AFT_Info[playerid][a_Admin] = 3;
  100.         format(gstring, sizeof(gstring), "{FFFF00}[INFO]{A9C4E4}: O jogador %s virou administrador. (/viraradmin)", Nome(playerid));
  101.         SendClientMessageToAll(COR_INFO, gstring);
  102.         jAtualizar(playerid);
  103.         return 1;
  104.     }
  105.     if(!strcmp(cmd, "/skin", true))
  106.     {
  107.         cmd = strtok(cmdtext, idx);
  108.         if(!strlen(cmd)) return SendClientMessage(playerid, COR_INFO, "{FFFF00}[Use]{A9C4E4}: /skin [ID]");
  109.         if(0 > strval(cmd) > 299) return SendClientMessage(playerid, COR_INFO, "{FF0000[ERRO]{A9C4E4}: Skin inválida.");
  110.         SetPlayerSkin(playerid, strval(cmd));
  111.         AFT_Info[playerid][a_Skin] = strval(cmd);
  112.         format(gstring, sizeof(gstring), "{FFFF00}[INFO]{A9C4E4}: Você mudou sua skin para a de número %d. Valor: 100 US$", strval(cmd));
  113.         SendClientMessage(playerid, COR_INFO, gstring);
  114.         GivePlayerMoney(playerid, -100);
  115.         AFT_Info[playerid][a_Dinheiro] -= 100;
  116.         jAtualizar(playerid);
  117.         return 1;
  118.     }
  119.     if(!strcmp(cmdtext, "/stats", true))
  120.     {
  121.         LimparChat(playerid, 1);
  122.         SCM(playerid, COR_INFO, "{FFFF00}+++++++++++++++++++++++++++++++");
  123.         SCM(playerid, COR_INFO, " Informações:");
  124.         format(gstring, sizeof(gstring), "{FFFFFF}Nível de administrador{A9C4E4}: %d", AFT_Info[playerid][a_Admin]);
  125.         SCM(playerid, COR_INFO, gstring);
  126.         format(gstring, sizeof(gstring), "{FFFFFF}Skin em uso{A9C4E4}: %d", AFT_Info[playerid][a_Skin]);
  127.         SCM(playerid, COR_INFO, gstring);
  128.         format(gstring, sizeof(gstring), "{FFFFFF}Dinheiro{A9C4E4}: %d", AFT_Info[playerid][a_Dinheiro]);
  129.         SCM(playerid, COR_INFO, gstring);
  130.         SCM(playerid, COR_INFO,"{FFFF00}++++++++++++++++++++++++++++++++");
  131.         LimparChat(playerid, 1);
  132.         return 1;
  133.     }
  134.     return 1;
  135. }
  136.  
  137. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  138. {
  139.     switch(dialogid)
  140.     {
  141.         case REGISTRO:
  142.         {
  143.             static confirmar[MAX_PLAYERS];
  144.             if(!response) return LimparChat(playerid, 125), SCM(playerid, COR_INFO, "{FFFF00}[INFO]{A9C4E4}: Você foi kickado automaticamente. Motivo: Recusou o registro."), Kick(playerid);
  145.             else
  146.             {
  147.                 if(strlen(inputtext) < 5 || strlen(inputtext) > 20) return confirmar[playerid] = 0, ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_PASSWORD,"{FFFF00}REGISTRO", "{FF0000}Você precisa digitar no mínimo 5 caractéres e no máximo 20.\n\n{A9C4E4}Digite sua senha para registrar-se.", "Registrar", "");
  148.                 if(confirmar[playerid] == 0)
  149.                 {
  150.                     confirmar[playerid] = 1;
  151.                     format(gstring, sizeof(gstring), "%s", inputtext);
  152.                     ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_PASSWORD,"{FFFF00}REGISTRO", "{FFFF00}Confirme sua senha para prosseguir.\n\n{A9C4E4}Digite sua senha para confirmar.", "Confirmar", "");
  153.                     return 1;
  154.                 }
  155.                 if(confirmar[playerid] == 1 && !strcmp(gstring, inputtext, true)) return confirmar[playerid] = 0, jRegistrar(playerid, inputtext);
  156.                 else return confirmar[playerid] = 0, ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_PASSWORD,"{FFFF00}REGISTRO", "{FF0000}As senhas não coincidiam. Vamos tentar novamente...\n\n{A9E4C4}Digite sua senha para registrar-se.", "Registrar", "");
  157.             }
  158.         }
  159.         case LOGIN:
  160.         {
  161.             if(!response) return LimparChat(playerid, 125), SCM(playerid, COR_INFO, "{FFFF00}[INFO]{A9C4E4}: Você foi kickado automaticamente. Motivo: Recusou o login."), Kick(playerid);
  162.             else
  163.             {
  164.                 if(strlen(inputtext) < 5 || strlen(inputtext) > 20) return ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD,"{FFFF00}LOGIN", "{FF0000}Você precisa digitar no mínimo 5 caractéres e no máximo 20.\n\n{A9C4E4}Digite sua senha para logar-se.", "Logar", "");
  165.                 INI_ParseFile(pPasta(playerid), "jSenha", false, true, playerid);
  166.                 GetPVarString(playerid, "a_jSenha", gstring, sizeof gstring);
  167.                 if(!strcmp(inputtext, gstring, true)) INI_ParseFile(pPasta(playerid), "Carregar_Stats", false, true, playerid), SCM(playerid, COR_INFO, "{FFFF00}[INFO]{A9C4E4}: Logado com sucesso."), SpawnPlayer(playerid), jCarregar(playerid);
  168.                 else ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD,"{FFFF00}LOGIN", "{FF0000}Senha incorreta.\n\n{A9C4E4}Digite sua senha para logar-se.", "Logar", "");
  169.             }
  170.         }
  171.     }
  172.     return 1;
  173. }
  174.  
  175. strtok(const string[], &index)
  176. {
  177.     new length = strlen(string);
  178.     while ((index < length) && (string[index] <= ' '))
  179.     {
  180.         index++;
  181.     }
  182.  
  183.     new offset = index;
  184.     new result[20];
  185.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  186.     {
  187.         result[index - offset] = string[index];
  188.         index++;
  189.     }
  190.     result[index - offset] = EOS;
  191.     return result;
  192. }
  193.  
  194. stock LimparChat(playerid, linhas)
  195. {
  196.     for(new i = 0; i < linhas; ++i) SCM(playerid, COR_INFO, "");
  197.     return 1;
  198. }
  199.  
  200. stock pPasta(playerid)
  201. {
  202.     new name[MAX_PLAYER_NAME];
  203.     GetPlayerName(playerid,name,sizeof(name));
  204.     format(gstring,sizeof(gstring),PASTACONTAS,name);
  205.     return gstring;
  206. }
  207.  
  208. stock Nome(playerid)
  209. {
  210.     new Name[MAX_PLAYER_NAME];
  211.     GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
  212.     return Name;
  213. }
  214.  
  215. forward jRegistrar(playerid, senha[]);
  216. public jRegistrar(playerid, senha[])
  217. {
  218.     new INI:Conta = INI_Open(pPasta(playerid));
  219.     INI_WriteString(Conta, "Senha", senha);                        
  220.     INI_WriteInt(Conta, "Reg", AFT_Info[playerid][a_Reg] = true);
  221.     INI_WriteInt(Conta, "Admin", AFT_Info[playerid][a_Admin]);
  222.     INI_WriteInt(Conta, "Dinheiro", AFT_Info[playerid][a_Dinheiro]);
  223.     INI_WriteInt(Conta, "Skin", AFT_Info[playerid][a_Dinheiro]);
  224.     INI_Close(Conta);
  225.     ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD,"{FFFF00}LOGIN", "{FFFF00}Conta criada com sucesso.\n\n{A9C4E4}Digite sua senha para logar-se.", "Logar", "");
  226.     LimparChat(playerid, 125);
  227.     return 1;
  228. }
  229.  
  230. forward jSenha(playerid, name[], value[]);
  231. public jSenha(playerid, name[], value[]) if(!strcmp(name, "Senha")) SetPVarString(playerid, "a_jSenha", value);
  232.  
  233.  
  234. forward Carregar_Stats(playerid, name[], value[]);
  235. public Carregar_Stats(playerid, name[], value[])
  236. {
  237.     INI_String("Senha", AFT_Info[playerid][a_Senha], 30);
  238.     INI_Int("Reg",AFT_Info[playerid][a_Reg]);
  239.     INI_Int("Admin", AFT_Info[playerid][a_Admin]);
  240.     INI_Int("Dinheiro",AFT_Info[playerid][a_Dinheiro]);
  241.     INI_Int("Skin",AFT_Info[playerid][a_Skin]);
  242.     return 1;
  243. }
  244.  
  245. forward jCarregar(playerid);
  246. public jCarregar(playerid)
  247. {
  248.     ResetPlayerMoney(playerid);
  249.     GivePlayerMoney(playerid, AFT_Info[playerid][a_Dinheiro]);
  250.     SetPlayerSkin(playerid, AFT_Info[playerid][a_Skin]);
  251.     return 1;
  252. }
  253.  
  254. forward jAtualizar(playerid);
  255. public jAtualizar(playerid)
  256. {
  257.     new INI:Conta = INI_Open(pPasta(playerid));
  258.     INI_WriteInt(Conta, "Admin", AFT_Info[playerid][a_Admin]);
  259.     INI_WriteInt(Conta, "Dinheiro", AFT_Info[playerid][a_Dinheiro]);
  260.     INI_WriteInt(Conta, "Skin", AFT_Info[playerid][a_Skin]);
  261.     INI_Close(Conta);
  262.     return 1;
  263. }
  264.  
  265. /*
  266.         Olá, este FS foi criado por Adrian Fahrenheit Tepes
  267.  
  268.                         Se for usá-lo, ponha meu nome no /creditos, hoje é dia
  269.                     26/11/2011, nesse dia eu era muito noob no pawn, hoje eu
  270.                     ainda sou, mas é assim mesmo. Se não colocar meu nome nos
  271.                     créditos, eu vou aí te matar.
  272.  
  273.                                Att. Adrian Fahrenheit Tepes, filho de Drácula.
  274. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement