Advertisement
AleeFerreira

aBanco - AleeFerreira

Apr 9th, 2012
832
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 10.13 KB | None | 0 0
  1. /*  aBanco - Sistema de banco
  2.  
  3.     Criador: AleeFerreira
  4.     Keypad.inc: Mike
  5.     Zcmd: Zeex
  6.     SII: Slick
  7.     cpstream: Matraka[IDG]
  8.     Não retire os créditos! Possuo licensa!
  9.    
  10.     OBS: SÓ FUNCIONA NA VERSÃO 0.3e RC6, versões anteriores ele não irá funcinar!
  11. */
  12.  
  13. #include <a_samp>
  14. #undef MAX_PLAYERS
  15. #define MAX_PLAYERS (250) //Altere para o número de slots do seu servidor. IMPORTANTE!!
  16. #include <keypad>
  17. #include <zcmd>
  18. #include <SII>
  19. #include <cpstream>
  20.  
  21. #define BankPasta "/Banco/%s.ini"
  22.  
  23. #define SCM SendClientMessage
  24.  
  25. #define Cor1 0xB5C595AA
  26. #define Cor2 0xB5C5DFAA
  27.  
  28. #define Criando (1)
  29. #define Entrando (2)
  30. #define Deposito (3)
  31. #define DSaldo (4)
  32. #define Saque (5)
  33. #define ASenha (6)
  34. #define Inicio (7)
  35. #define Inicio2 (8)
  36.  
  37. #define KeyNumber (1)
  38.  
  39. #define TextoBanco "------------------- Banco -------------------\n- Olá, seja bem vindo ao banco\n- Precisa de ajuda? digite '/ajudabanco'.\n- Para sair digite '/sairbanco'.\n------------------- Banco -------------------"
  40.  
  41. enum BancoInfo
  42. {
  43.     Senha,
  44.     Conta,
  45.     Saldo
  46. }
  47. new InfoBank[MAX_PLAYERS][BancoInfo], cell[128], CheckPoint, CBanco, InBanco[MAX_PLAYERS], pass[30]/*retirando um bug*/;
  48.  
  49.  
  50. CMD:banco(playerid)
  51. {
  52.     if(InfoBank[playerid][Conta] == 0)
  53.     {
  54.         ShowPlayerDialog(playerid, Inicio, DIALOG_STYLE_MSGBOX,"Margarete diz:","Olá, pelo que vejo você não possui uma conta bancária\nDeseja criar uma?","Sim","Fechar");
  55.     }
  56.     else if(InfoBank[playerid][Conta] == 1)
  57.     {
  58.         ShowPlayerDialog(playerid, Inicio2, DIALOG_STYLE_MSGBOX,"Margarete diz:","Olá, você deseja acessar sua conta bancária?","Sim","Fechar");
  59.     }
  60.     return true;
  61. }
  62.  
  63. CMD:sairbanco(playerid)
  64. {
  65.     if(InBanco[playerid] == 1)
  66.     {
  67.         SetPlayerInterior(playerid, 0);
  68.         SetPlayerPos(playerid, 1310.3229,-1379.6257,13.6969);
  69.         InBanco[playerid] = 0;
  70.     }
  71.     else SCM(playerid, Cor2,"* Você não está no banco Central.");
  72.     return true;
  73. }
  74.  
  75. CMD:irbanco(playerid)
  76. {
  77.     SetPlayerPos(playerid, 1310.3229,-1379.6257,13.6969);
  78.     return true;
  79. }
  80.  
  81. stock getName(playerid)
  82. {
  83.     new gName[MAX_PLAYER_NAME];
  84.     GetPlayerName(playerid, gName, MAX_PLAYER_NAME);
  85.     return gName;
  86. }
  87.  
  88. stock INI_Create(filename[])
  89. {
  90.     if(INI_Exist(filename)) return printf("Erro ao criar o arquivo '%s'. O arquivo já existe.");
  91.  
  92.     new File:MeuArquivo;
  93.     MeuArquivo = fopen(filename, io_write);
  94.     fclose(MeuArquivo);
  95.     return 0x1;
  96. }
  97.  
  98. stock Salvar(playerid)
  99. {
  100.     new Banco[35];
  101.     format(Banco, 35, BankPasta, getName(playerid));
  102.     if(!INI_Exist(Banco))
  103.     {
  104.         INI_Create(Banco);
  105.         INI_Open(Banco);
  106.         INI_WriteInt("Senha",InfoBank[playerid][Senha]);
  107.         INI_WriteInt("Saldo",InfoBank[playerid][Saldo]);
  108.         INI_WriteInt("Conta",InfoBank[playerid][Conta]);
  109.         INI_Save();
  110.         INI_Close();
  111.     }
  112.     else
  113.     {
  114.         INI_Open(Banco);
  115.         INI_WriteInt("Senha",InfoBank[playerid][Senha]);
  116.         INI_WriteInt("Saldo",InfoBank[playerid][Saldo]);
  117.         INI_WriteInt("Conta",InfoBank[playerid][Conta]);
  118.         INI_Save();
  119.         INI_Close();
  120.     }
  121.     return true;
  122. }
  123.  
  124. stock Carregar(playerid)
  125. {
  126.     InfoBank[playerid][Senha] = 0;//retirando bug( não mecha aqui! )
  127.     InfoBank[playerid][Saldo] = 0;//retirando bug( não mecha aqui! )
  128.     InfoBank[playerid][Conta] = 0;//retirando bug( não mecha aqui! )
  129.     new Banco[35];
  130.     format(Banco, 35, BankPasta, getName(playerid));
  131.     if(!INI_Exist(Banco)) return 0;
  132.     else
  133.     {
  134.         INI_Open(Banco);
  135.         InfoBank[playerid][Senha] = INI_ReadInt("Senha");
  136.         InfoBank[playerid][Saldo] = INI_ReadInt("Saldo");
  137.         InfoBank[playerid][Conta] = INI_ReadInt("Conta");
  138.         INI_Close();
  139.     }
  140.     return true;
  141. }
  142.  
  143. stock IsNumeric(const string[])
  144. {
  145.     for (new i = 0, j = strlen(string); i < j; i++)
  146.     {
  147.         if (string[i] > '9' || string[i] < '0') return 0;
  148.     }
  149.     return 1;
  150. }
  151.  
  152. public OnFilterScriptInit()
  153. {
  154.     print("* aBanco - Carregado.");
  155.     CheckPoint = CPS_AddCheckpoint(1310.2156,-1368.2852,13.5472, 2.0, 40);
  156.     CBanco = CPS_AddCheckpoint(823.0460,1.5860,1004.1797, 2.0, 40);
  157.     Create3DTextLabel(TextoBanco, Cor1, 1310.2156,-1368.2852,13.5472, 40.0, 0 , 0);
  158. }
  159.  
  160. public OnFilterScriptExit()
  161. {
  162.     print("* aBanco - Descarregado.");
  163. }
  164.  
  165. public OnPlayerKeypadInput(playerid, keypadID, type, key)
  166. {
  167.     if(keypadID == KeyNumber && type == KEYPAD_INPUT_GOOD)
  168.     {
  169.         ShowPlayerDialog(playerid, Entrando, DIALOG_STYLE_LIST,"{F60000}Menu bancário","Saldo\nDepositar\nSacar\n{F60000}Alterar Senha","Selecionar","Fechar");
  170.     }
  171.     else if(keypadID == KeyNumber && type == KEYPAD_INPUT_BAD)
  172.     {
  173.         GameTextForPlayer(playerid,"~r~Senha Incorreta!", 3000, 6);
  174.     }
  175.     return true;
  176. }
  177.  
  178. public OnPlayerConnect(playerid)
  179. {
  180.     Carregar(playerid);
  181.     SetPlayerMapIcon(playerid, 0, 1310.2156,-1368.2852,13.5472, 52, 0, MAPICON_LOCAL);
  182.     return true;
  183. }
  184.  
  185. public OnPlayerDisconnect(playerid, reason)
  186. {
  187.     Salvar(playerid);
  188.     return true;
  189. }
  190.  
  191. public OnPlayerEnterCheckpoint(playerid)
  192. {
  193.     new Check = CPS_GetPlayerCheckpoint(playerid);
  194.     if(Check == CheckPoint)
  195.     {
  196.         SetPlayerInterior(playerid, 3);
  197.         SetPlayerPos(playerid, 833.269775,10.588416,1004.179687);
  198.         InBanco[playerid] = 1;
  199.     }
  200.     if(Check == CBanco)
  201.     {
  202.         SCM(playerid, Cor1,"{F60000}Margarete diz: {FFFFFF}Olá posso ajudá-lo? digite {F60000}/banco.");
  203.     }
  204.     return true;
  205. }
  206.  
  207. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  208. {
  209.     if(dialogid == Criando)
  210.     {
  211.         if(response)
  212.         {
  213.             if(strlen(inputtext) < 5 || strlen(inputtext) > 24)
  214.             {
  215.                 SCM(playerid, Cor2,"* Número de caracteres inválido! MÍNIMO: 5 MÁXIMO: 24");
  216.                 ShowPlayerDialog(playerid, Criando, DIALOG_STYLE_INPUT,"Etapa 1: Criando uma senha.", "Digite abaixo uma senha.\na mesma será usada sempre que você for acessar sua conta.","Criar","Fechar");
  217.                 return true;
  218.             }
  219.             if(!IsNumeric(inputtext))
  220.             {
  221.                 SCM(playerid, Cor2,"* Digite apenas números!");
  222.                 ShowPlayerDialog(playerid, Criando, DIALOG_STYLE_INPUT,"Etapa 1: Criando uma senha.", "Digite abaixo uma senha.\na mesma será usada sempre que você for acessar sua conta.","Criar","Fechar");
  223.                 return true;
  224.             }
  225.             new Input = strval(inputtext);
  226.             InfoBank[playerid][Senha] = Input;
  227.             InfoBank[playerid][Conta] = 1;
  228.             InfoBank[playerid][Saldo] = 500;
  229.             SCM(playerid, Cor1,"* Parabéns você criou uma conta no bancária e como recompensa você acaba de ganhar R$500! O deposito já foi efetuado.");
  230.             Salvar(playerid);
  231.         }
  232.     }
  233.     if(dialogid == Entrando)
  234.     {
  235.         if(response)
  236.         {
  237.             if(listitem == 0)
  238.             {
  239.                 format(cell,128,"* Seu saldo bancário atual é:{6DC561}R$%d",InfoBank[playerid][Saldo]);
  240.                 ShowPlayerDialog(playerid, DSaldo, DIALOG_STYLE_MSGBOX,"Banco",cell,"Fechar","Voltar");
  241.             }
  242.             if(listitem == 1)
  243.             {
  244.                 ShowPlayerDialog(playerid, Deposito, DIALOG_STYLE_INPUT,"Banco","Digite o valor que você deseja depositar.","Depositar","Voltar");
  245.             }
  246.             if(listitem == 2)
  247.             {
  248.                 format(cell,128,"* Seu saldo atual é: R$%d\nQuanto você deseja sacar?",InfoBank[playerid][Saldo]);
  249.                 ShowPlayerDialog(playerid, Saque, DIALOG_STYLE_INPUT,"Banco",cell,"Sacar","Voltar");
  250.             }
  251.             if(listitem == 3)
  252.             {
  253.                 ShowPlayerDialog(playerid, ASenha, DIALOG_STYLE_INPUT,"Banco","Digite sua nova senha abaixo.","Alterar","Voltar");
  254.             }
  255.         }
  256.     }
  257.     if(dialogid == DSaldo)
  258.     {
  259.         if(response){}
  260.         else ShowPlayerDialog(playerid, Entrando, DIALOG_STYLE_LIST,"{F60000}Menu bancário","Saldo\nDepositar\nSacar\n{F60000}Alterar Senha","Selecionar","Fechar");
  261.     }
  262.     if(dialogid == Deposito)
  263.     {
  264.         new Input = strval(inputtext);
  265.         if(response)
  266.         {
  267.             if(GetPlayerMoney(playerid) < Input) return SCM(playerid, Cor2,"* Você não possui isso tudo.");
  268.             InfoBank[playerid][Saldo] += Input;
  269.             format(cell,128,"* Você depositou {6DC561}R$%d {FFFFFF}seu saldo atual é de {6DC561}R$%d",Input,InfoBank[playerid][Saldo]);
  270.             GivePlayerMoney(playerid, - Input);
  271.             SCM(playerid,0xFFFFFFAA, cell);
  272.         }
  273.         else ShowPlayerDialog(playerid, Entrando, DIALOG_STYLE_LIST,"{F60000}Menu bancário","Saldo\nDepositar\nSacar\n{F60000}Alterar Senha","Selecionar","Fechar");
  274.     }
  275.     if(dialogid == Saque)
  276.     {
  277.         new Input = strval(inputtext);
  278.         if(response)
  279.         {
  280.             if(Input > InfoBank[playerid][Saldo]) return SCM(playerid, Cor1,"* Você não tem isso tudo em sua conta bancária.");
  281.             InfoBank[playerid][Saldo] -= Input;
  282.             GivePlayerMoney(playerid, Input);
  283.             format(cell,128,"* Você sacou {6DC561}R$%d {FFFFFF}seu saldo atual é de {6DC561}R$%d",Input, InfoBank[playerid][Saldo]);
  284.             SCM(playerid, 0xFFFFFFAA, cell);
  285.         }
  286.         else ShowPlayerDialog(playerid, Entrando, DIALOG_STYLE_LIST,"{F60000}Menu bancário","Saldo\nDepositar\nSacar\n{F60000}Alterar Senha","Selecionar","Fechar");
  287.     }
  288.     if(dialogid == ASenha)
  289.     {
  290.         if(response)
  291.         {
  292.             if(strlen(inputtext) < 5 || strlen(inputtext) > 24)
  293.             {
  294.                 SCM(playerid, Cor2,"* Número de caracteres inválido! MÍNIMO: 5 MÁXIMO: 24");
  295.                 ShowPlayerDialog(playerid, ASenha, DIALOG_STYLE_INPUT,"Banco","Digite sua nova senha abaixo.","Alterar","Voltar");
  296.                 return true;
  297.             }
  298.             if(!IsNumeric(inputtext))
  299.             {
  300.                 SCM(playerid, Cor2,"* Digite apenas números!");
  301.                 ShowPlayerDialog(playerid, ASenha, DIALOG_STYLE_INPUT,"Banco","Digite sua nova senha abaixo.","Alterar","Voltar");
  302.                 return true;
  303.             }
  304.             new Input = strval(inputtext);
  305.             InfoBank[playerid][Senha] = Input;
  306.             format(cell, 128,"* Você alterou sua senha! Sua nova senha é: {F60000}%s. Guarde-a bem.",InfoBank[playerid][Senha]);
  307.             SCM(playerid, Cor2, cell);
  308.         }
  309.         else ShowPlayerDialog(playerid, Entrando, DIALOG_STYLE_LIST,"{F60000}Menu bancário","Saldo\nDepositar\nSacar\n{F60000}Alterar Senha","Selecionar","Fechar");
  310.     }
  311.     if(dialogid == Inicio2)
  312.     {
  313.         if(response)
  314.         {
  315.             SCM(playerid, 0xF60000AA,"* Insira sua senha bancária.");
  316.             format(pass,30,"%d",InfoBank[playerid][Senha]); //Tive que fazer dessa forma, se não o 'keypad' não iria aparecer.
  317.             ShowPlayerKeypad(playerid, KeyNumber, pass);
  318.         }
  319.     }
  320.     if(dialogid == Inicio)
  321.     {
  322.         if(response)
  323.         {
  324.             ShowPlayerDialog(playerid, Criando, DIALOG_STYLE_INPUT,"Etapa 1: Criando uma senha.", "Digite abaixo uma senha.\na mesma será usada sempre que você for acessar sua conta.","Criar","Fechar");
  325.         }
  326.     }
  327.     return true;
  328. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement