DiogoB

[Pawn] Register/Login System (SII)

Mar 19th, 2012
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.97 KB | None | 0 0
  1. /*------------------------------------------------------------------------------
  2.                                  [INCLUDES]                                
  3. ------------------------------------------------------------------------------*/
  4. #include a_samp
  5. #include SII
  6. /*------------------------------------------------------------------------------
  7.                                  [DINHEIRO]                                
  8. ------------------------------------------------------------------------------*/
  9. #define DarDinheiro(%0,%1)                              Info[%0][Dinheiro] += %1
  10. #define RetirarDinheiro(%0,%1)                          Info[%0][Dinheiro] -= %1
  11. #define SetarDinheiro(%0,%1)                             Info[%0][Dinheiro] = %1
  12. #define GetarDinheiro(%0)                                     Info[%0][Dinheiro]
  13. #define ResetarDinheiro(%0)                              Info[%0][Dinheiro] = 0;
  14. /*------------------------------------------------------------------------------
  15.                                  [C & AB]                                
  16. ------------------------------------------------------------------------------*/
  17. #define Contas                                                   "Contas/%s.ini"
  18. #define AdminBot                                                      "Diogo B."
  19. /*------------------------------------------------------------------------------
  20.                                  [DIALOGS]                                
  21. ------------------------------------------------------------------------------*/
  22. #define DialogRegistar                                                     (100)
  23. #define DialogLogar                                                        (101)
  24. #define DialogSexo                                                         (102)
  25. #define DialogKickado                                                      (104)
  26. /*------------------------------------------------------------------------------
  27.                                  [CORES]                                
  28. ------------------------------------------------------------------------------*/
  29. #define Esverdeado                                                  (0x808000AA)
  30. #define Vermelho                                                    (0xE60000FF)
  31. #define Amarelo                                                     (0xFFFF00FF)
  32. #define Branco                                                      (0xFFFFFFAA)
  33. #define Verde                                                       (0x21DD00FF)
  34. #define aCor                                                        (0x0080C0AA)
  35.  
  36. /*------------------------------------------------------------------------------
  37.                                [CORES VIP]                                
  38. ------------------------------------------------------------------------------*/
  39. #define cVip1                                                       (0xFFF000AA) //Alterar
  40. #define cVip2                                                       (0xFFF000AA) //Alterar
  41. #define cVip3                                                       (0xFFF000AA) //Alterar
  42.  
  43. /*------------------------------------------------------------------------------
  44.                                    [CS]                                
  45. ------------------------------------------------------------------------------*/
  46. #define CASE_SENSITIVE                                                     false
  47.  
  48. /*------------------------------------------------------------------------------
  49.                                  [ARRAYS]                                
  50. ------------------------------------------------------------------------------*/
  51. enum Informacoes
  52. {
  53.     Administrador,
  54.     Jogador[24],
  55.     SenhaErrada,
  56.     Outro[24],    
  57.     Dinheiro,    
  58.     Logado,    
  59.     Banco,    
  60.     Senha,
  61.     Sexo,
  62.     Vip,
  63. };
  64.  
  65. static
  66.     Info[MAX_PLAYERS][Informacoes],    
  67.     sStringFrm[128],    
  68.     sStringArq[128],
  69.     Data[3],
  70.     Time[3];
  71.  
  72. forward CallSalvar(playerid);
  73. forward CallCarregar(playerid);
  74.  
  75. /*------------------------------------------------------------------------------
  76.                                  [CALBACKS]                                
  77. ------------------------------------------------------------------------------*/
  78. public OnPlayerDisconnect(playerid, reason)
  79.     return CallSalvar(playerid);
  80.  
  81. public OnPlayerConnect(playerid)
  82. {
  83.     CallCarregar(playerid);
  84.     GetPlayerName(playerid, Info[playerid][Jogador], 23);
  85.     format(sStringArq, sizeof(sStringArq), Contas, Info[playerid][Jogador]);
  86.     if(INI_Exist(sStringArq))
  87.     {
  88.         format(sStringFrm, sizeof(sStringFrm), "{5CACEE}Nome: {FFFFFF}%s\n{5CACEE}Tipo de conta: {FFFFFF}Registada!\n\nColoque a sua senha para se poder logar no servidor (:", Info[playerid][Jogador]);
  89.         ShowPlayerDialog(playerid, DialogLogar, DIALOG_STYLE_INPUT, "{5CACEE}Sistema de Login:", sStringFrm, "Logar", "Cancelar" );
  90.     }
  91.     else
  92.     {
  93.         format(sStringFrm, sizeof(sStringFrm), "{5CACEE}Nome: {FFFFFF}%s\n{5CACEE}Tipo de conta: {FFFFFF}Não registada!\n\nColoque a sua senha para se registar no servidor (:", Info[playerid][Jogador]);
  94.         ShowPlayerDialog( playerid, DialogRegistar, DIALOG_STYLE_INPUT, "{5CACEE}Sistema de Registo:", sStringFrm, "Registar", "Cancelar" );
  95.     }
  96.  
  97.     return true;
  98. }
  99.  
  100.  
  101. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  102. {
  103.     GetPlayerName(playerid, Info[playerid][Jogador], 23);
  104.     format(sStringArq, sizeof(sStringArq), Contas, Info[playerid][Jogador]);
  105.     if(dialogid == DialogLogar)
  106.     {
  107.         if(response)
  108.         {
  109.             if(strlen(inputtext) == 0)
  110.             {
  111.                 format(sStringFrm, sizeof(sStringFrm), "{5CACEE}Nome: {FFFFFF}%s\n{5CACEE}Tipo de conta: {FFFFFF}Registada!\n\nColoque a sua senha para se poder logar no servidor (:", Info[playerid][Jogador]);
  112.                 ShowPlayerDialog(playerid, DialogLogar, DIALOG_STYLE_INPUT, "{5CACEE}Sistema de Login:", sStringFrm, "Logar", "Cancelar");
  113.                 SendClientMessage(playerid, Verde, "A senha deve ter mais do que 0 digitos!");
  114.             }
  115.             static Input[20];
  116.             INI_Open(sStringArq);
  117.             INI_ReadString(Input, "Senha");
  118.             INI_Close();
  119.             if(!strcmp(inputtext, Input, CASE_SENSITIVE))
  120.             {
  121.                 SpawnPlayer(playerid);
  122.                 format(sStringFrm, sizeof(sStringFrm), "%s, seja bem-vindo ao servidor (:", Info[playerid][Jogador]);
  123.                 SendClientMessage(playerid, Amarelo, sStringFrm);
  124.                 if(Info[playerid][Administrador] >= 1)
  125.                 {
  126.                     format(sStringFrm, sizeof(sStringFrm), "Logado com nível %d de administrador (:", Info[playerid][Administrador]);
  127.                     SendClientMessage(playerid, aCor, sStringFrm);
  128.                 }
  129.  
  130.                 if(Info[playerid][Vip] == 1)
  131.                     return SendClientMessage(playerid, cVip1, "Logado com Vip Gold (:");
  132.  
  133.                 if(Info[playerid][Vip] == 2)
  134.                     return SendClientMessage(playerid, cVip2, "Logado com Vip Prata (:");
  135.  
  136.                 if(Info[playerid][Vip] == 3)
  137.                     return SendClientMessage(playerid, cVip3, "Logado com Vip Bronze (:");
  138.             }
  139.             else
  140.             {
  141.                 format(sStringFrm, sizeof(sStringFrm), "{5CACEE}Nome: {FFFFFF}%s\n{5CACEE}Tipo de conta: {FFFFFF}Registada!\n\nColoque a sua senha para se poder logar no servidor (:", Info[playerid][Jogador]);
  142.                 ShowPlayerDialog(playerid, DialogLogar, DIALOG_STYLE_INPUT, "{5CACEE}Sistema de Login:", sStringFrm, "Logar", "Cancelar");
  143.                 SendClientMessage(playerid, Vermelho, "Senha errada! Se errar 3 vezes, é kickado!");
  144.                 Info[playerid][SenhaErrada] += 1;
  145.                 if(Info[playerid][SenhaErrada] == 3)
  146.                 {
  147.                     SendClientMessage(playerid, Branco, "Você foi kickado do servidor por errar a senha 3 vezes!");
  148.                     Kickar(playerid, "Errou a senha 3 vezes");
  149.                 }
  150.             }
  151.         }
  152.         else if(!response)
  153.         {
  154.             SendClientMessage(playerid, Branco, "Você foi kickado por não querer-se logar!");
  155.             Kickar(playerid, "Não quis logar");
  156.         }
  157.     }
  158.  
  159.     else if(dialogid == DialogRegistar)
  160.     {
  161.         if(response)
  162.         {
  163.             if(!strlen(inputtext))
  164.             {
  165.                 format(sStringFrm, sizeof(sStringFrm), "{5CACEE}Nome: {FFFFFF}%s\n{5CACEE}Tipo de conta: {FFFFFF}Não registada!\n\nColoque a sua senha para se registar no servidor (:", Info[playerid][Jogador]);
  166.                 ShowPlayerDialog( playerid, DialogRegistar, DIALOG_STYLE_INPUT, "{5CACEE}Sistema de Registo:", sStringFrm, "Registar", "Cancelar" );
  167.                 SendClientMessage(playerid, Verde, "A senha não pode conter 0 digitos!");
  168.             }
  169.             strmid(Info[playerid][Senha], inputtext, 0, strlen(inputtext), 128);
  170.             INI_Create(sStringArq);
  171.             INI_Open(sStringArq);
  172.             INI_WriteString("Senha", Info[playerid][Senha]);
  173.             ShowPlayerDialog(playerid, DialogSexo, DIALOG_STYLE_MSGBOX, "{5CACEE}A que sexo pertence?", "Para acabarmos de fazer o seu registo, precisamos de saber o seu sexo.\nEscolha o sexo abaixo", "Masculino", "Feminino");
  174.         }
  175.         else
  176.         {
  177.             SendClientMessage(playerid, Branco, "Você foi kickado por não querer-se registar!");
  178.             Kickar(playerid, "Não quis registar");
  179.         }
  180.     }
  181.  
  182.     else if(dialogid == DialogSexo)
  183.     {
  184.         if(response)
  185.         {
  186.             Info[playerid][Sexo] = 1;
  187.             SendClientMessage(playerid, Esverdeado, "Agora que você acabou seu registo... logue-se (:");
  188.             Info[playerid][Logado] = true;
  189.             SetTimerEx("CallInicioPlayer", 2000, false, "i", playerid);
  190.             INI_WriteInt("Sexo", Info[playerid][Sexo]);
  191.         }
  192.         else if(!response)
  193.         {
  194.             Info[playerid][Sexo] = 2;
  195.             SendClientMessage(playerid, Esverdeado, "Agora que você acabou seu registo... logue-se (:");
  196.             Info[playerid][Logado] = true;
  197.             INI_WriteInt("Sexo", Info[playerid][Sexo]);
  198.         }
  199.     }  
  200.     return true;
  201. }
  202. /*------------------------------------------------------------------------------
  203.                         [SISTEMA DE REGISTO E LOGIN]
  204. ------------------------------------------------------------------------------*/
  205. public CallSalvar(playerid)
  206. {
  207.     GetPlayerName(playerid, Info[playerid][Jogador], 23);
  208.     format(sStringArq, sizeof(sStringArq), Contas, Info[playerid][Jogador]);
  209.     if(INI_Exist(sStringArq))
  210.     {
  211.         INI_Open(sStringArq);
  212.         INI_WriteInt("Dinheiro", GetarDinheiro(playerid));
  213.         INI_WriteInt("Banco", Info[playerid][Banco]);
  214.         INI_WriteInt("Sexo", Info[playerid][Sexo]);
  215.         INI_WriteInt("Vip", Info[playerid][Vip]);      
  216.         INI_WriteInt("Administrador", Info[playerid][Administrador]);        
  217.         INI_Save();
  218.         INI_Close();
  219.     }
  220.     else INI_Create(sStringArq);
  221.     return true;
  222. }
  223.  
  224. public CallCarregar( playerid )
  225. {
  226.     GetPlayerName(playerid, Info[playerid][Jogador], 23);
  227.     format(sStringArq, sizeof(sStringArq), Contas, Info[playerid][Jogador]);
  228.     if(INI_Exist(sStringArq))
  229.     {
  230.         INI_Open(sStringArq);
  231.         DarDinheiro(playerid, INI_ReadInt("Dinheiro"));
  232.         Info[playerid][Dinheiro] = INI_ReadInt("Dinheiro");
  233.         Info[playerid][Banco] = INI_ReadInt("Banco");
  234.         Info[playerid][Sexo] = INI_ReadInt("Sexo");
  235.         Info[playerid][Vip] = INI_ReadInt("Vip");        
  236.         Info[playerid][Administrador] = INI_ReadInt("Administrador");        
  237.     }
  238.     return true;
  239. }
  240. /*------------------------------------------------------------------------------
  241.                                  [KICKAR]                                
  242. ------------------------------------------------------------------------------*/
  243. stock Kickar(playerid, motivo[])
  244. {
  245.     getdate(Data[0], Data[1], Data[2]);
  246.     gettime(Time[0], Time[1], Time[2]);
  247.     GetPlayerName(playerid, Info[playerid][Jogador], 23);
  248.     format(sStringFrm, sizeof(sStringFrm), "{E60000}[Kickado] {FFFFFF}%s foi kickado do servidor. [{E60000}Motivo: {FFFFFF}%s]", Info[playerid][Jogador], motivo);
  249.     SendClientMessageToAll(Branco, sStringFrm);
  250.     format(sStringArq, sizeof(sStringArq), "%s, você foi kickado do servidor!\n{5CACEE}Administrador: {FFFFFF}%s\n{5CACEE}Motivo: {FFFFFF}%s\n{5CACEE}Data: {FFFFFF}%d/%d/%d\n{5CACEE}Hora: {FFFFFF}%d:%d:%d ", Info[playerid][Jogador], AdminBot, motivo, Data[2], Data[1], Data[0], Time[0], Time[1], Time[2]);
  251.     ShowPlayerDialog(playerid, DialogKickado, DIALOG_STYLE_MSGBOX, "{5CACEE}Sistema de Kick", sStringArq, "Concluir", "");
  252.     return true;
  253. }
Advertisement
Add Comment
Please, Sign In to add comment