ylleron

yBank v2.0a

Jan 21st, 2012
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 13.97 KB | None | 0 0
  1. /*
  2. *               YLLERON'S BANK SYSTEM
  3. *                    2011-2012 (C)
  4. *   You can't present this script as your, or
  5. *   make version and public it without my perm.
  6. *
  7. *                                   Version: 2.0 ALPHA
  8. *
  9. */
  10.  
  11. #include <a_samp>
  12. #include <sscanf2>
  13. #tryinclude <dini>
  14.  
  15. // Defines ---------------------------------------------------------------------
  16. //------------------------------------------------------------------------------
  17. #define MAX_BANK            50
  18. //-----------------------------|
  19. #define ybank_path          "/ybank/%s.ini"
  20. //-----------------------------|
  21. #define yBankDialog         ShowPlayerDialog
  22. //-----------------------------|
  23. #define INPUT               DIALOG_STYLE_INPUT
  24. #define LIST                DIALOG_STYLE_LIST
  25. #define BOX                 DIALOG_STYLE_MSGBOX
  26.  
  27. #define fc%0(%1)       forward %0(%1);\
  28.                             public %0(%1)
  29.  
  30. //-----------------------------|
  31. #define yd_transactcash     100
  32. #define yd_transactid       101
  33. #define yd_changepass       102
  34. #define yd_makepass         103
  35. #define yd_dialogid         104
  36. #define yd_deposit          105
  37. #define yd_default          106
  38. #define yd_delete           107
  39. #define yd_login            108
  40. #define yd_draw             109
  41. #define yd_make             110
  42. #define yd_menu             111
  43. //-----------------------------|
  44. #define C_RED       0xFF0000AA
  45. #define CD_GREEN    "{00FF00}"
  46. #define C_DKGREEN           0x548B54AA
  47. //-----------------------------|
  48.  
  49. enum Y_ENUM_DATA
  50.     {
  51.         Float:Float_X,
  52.         Float:Float_Y,
  53.         Float:Float_Z,
  54.         IdDialog,
  55.         IdPickup,
  56.         Cash
  57.     };
  58.  
  59. enum YP_ENUM_DATA
  60.     {
  61.         TransactName[32],
  62.         TransactID,
  63.         bool:Log
  64.     };
  65.  
  66. new
  67.     yBank[MAX_BANK][Y_ENUM_DATA],
  68.     yBankPlayer[MAX_PLAYERS][YP_ENUM_DATA],
  69.     yBankCount = 0
  70.     ;
  71.  
  72. fc ydialog(playerid, dialogid, response, listitem, inputtext[])
  73. {
  74.     switch (dialogid)
  75.     {
  76.         case yd_menu:
  77.         {
  78.             if (response)
  79.             {
  80.                 switch (listitem)
  81.                 {
  82.                     case 0:
  83.                     {
  84.                         new s[200];
  85.                         format(s, sizeof(s), "{FFFFFF}System yBank (Your account info)\n\nInformations for account:\t"CD_GREEN"%s\n\
  86.                                                                                          {FFFFFF}For this account is cash:\t"CD_GREEN"$%d",
  87.                                                                                             getName(playerid), GetYBankMoney(playerid));
  88.  
  89.                         yBankDialog(playerid, yd_default, BOX, ""CD_GREEN"Powered by yBank (v2.0)", s, "Cancel", "");
  90.                     }
  91.                     case 1:
  92.                     {
  93.                         yBankDialog(playerid, yd_draw, INPUT, ""CD_GREEN"Powered by yBank (v2.0)", "{FFFFFF}yBank: Please type amout to draw", "Submit", "Cancel");
  94.                     }
  95.                     case 2:
  96.                     {
  97.                         yBankDialog(playerid, yd_deposit, INPUT, ""CD_GREEN"Powered by yBank (v2.0)", "{FFFFFF}yBank: Please type amout to deposit", "Submit", "Cancel");
  98.                     }
  99.                     case 3:
  100.                     {
  101.                         yBankDialog(playerid, yd_transactid, INPUT, ""CD_GREEN"Powered by yBank (v2.0)", "{FFFFFF}yBank: Please type ID of given player", "Submit", "Cancel");
  102.                     }
  103.                     case 4:
  104.                     {
  105.                         yBankDialog(playerid, yd_changepass, INPUT, ""CD_GREEN"Powered by yBank (v2.0)", "{FFFFFF}yBank: Please type your new password", "Submit", "Cancel");
  106.                     }
  107.                     case 5:
  108.                     {
  109.                         // DELETE ACCOUNT
  110.                         yBankDialog(playerid, yd_delete, BOX, ""CD_GREEN"Powered by yBank (v2.0)", "{FFFFFF}yBank: Do you want to delete you account? Are you sure?", "Yes", "No");
  111.                     }
  112.  
  113.                 }
  114.             }
  115.         }
  116.         case yd_default:
  117.         {
  118.             if (response) {
  119.                 yBankDialog(playerid, yd_menu, LIST, ""CD_GREEN"Powered by yBank (v2.0)", "{FF0000}Account status\n{FFFFFF}Withdraw\nDeposit\nTransact\nChange Pass\nDelete Account", "Choose", "Exit");
  120.             }
  121.         }
  122.         case yd_makepass:
  123.         {
  124.             if (response)
  125.             {
  126.                 yBankDialog(playerid, yd_make, INPUT, ""CD_GREEN"Powered by yBank (v2.0)", "{FFFFFF}yBank: Type password for login to your account", "Sign In", "Cancel");
  127.             }
  128.         }
  129.         case yd_make:
  130.         {
  131.             if (response)
  132.             {
  133.                 new Password[32];
  134.                 if (sscanf(inputtext, "s[32]", Password))   return yBankDialog(playerid, yd_makepass, INPUT, ""CD_GREEN"Powered by yBank (v2.0)", "{FF0000}Error\nYou must fill following field with your password! (1-16 chars)", "Submit", "");
  135.                 else
  136.                 {
  137.                     new fp[64];
  138.                     format(fp, sizeof(fp), ybank_path, getName(playerid));
  139.  
  140.                     dini_Create(fp);
  141.                     dini_IntSet(fp, "Pass", phash(Password));
  142.                     dini_IntSet(fp, "BankCash", 0);
  143.  
  144.                     SendClientMessage(playerid, C_DKGREEN, "* yBank: You've been successfully registered in bank");
  145.                     return yBankDialog(playerid, yd_login, INPUT, ""CD_GREEN"Powered by yBank (v2.0)", "{FFFFFF}yBank: Please, type your password for login", "Sign In", "Cancel");
  146.                 }
  147.             }
  148.         }
  149.         case yd_login:
  150.         {
  151.             if (response)
  152.             {
  153.                 new Password[32];
  154.                 if (sscanf(inputtext, "s[32]", Password))       return yBankDialog(playerid, yd_login, INPUT, ""CD_GREEN"Powered by yBank (v2.0)", "{FF0000}Error\nYou must fill following field with your password!", "Submit", "Cancel");
  155.                 else
  156.                 {
  157.                     new fp[64];
  158.                     format(fp, sizeof(fp), ybank_path, getName(playerid));
  159.                    
  160.                     if (dini_Int(fp, "Pass") == phash(Password))
  161.                     {
  162.                         yBankPlayer[playerid][Log] = true;
  163.                         SendClientMessage(playerid, C_DKGREEN, "* yBank: You've been successfully logged to your account");
  164.  
  165.                         return yBankDialog(playerid, yd_menu, LIST, ""CD_GREEN"Powered by yBank (v2.0)", "{FF0000}Account status\n{FFFFFF}Withdraw\nDeposit\nTransact\nChange Pass\nDelete Account", "Choose", "Exit");
  166.                     }
  167.                     else return yBankDialog(playerid, yd_login, INPUT, ""CD_GREEN"Powered by yBank (v2.0)", "{FF0000}Error\nYou typed bad password! Please, again!", "Submit", "Cancel");
  168.                 }
  169.             }
  170.         }
  171.         case yd_draw:
  172.         {
  173.             if (response)
  174.             {
  175.                 new DrawCash;
  176.                 if (sscanf(inputtext, "i", DrawCash))   return yBankDialog(playerid, yd_draw, INPUT, ""CD_GREEN"Powered by yBank (v2.0)" , "{FF0000}Error\nPlease type amout to draw", "Submit", "" );
  177.                 else
  178.                 {
  179.                     if (GetYBankMoney(playerid) < DrawCash) return SendClientMessage(playerid, C_RED, "Error: You don't have so much money on your account!");
  180.                     if (DrawCash == 0) return SendClientMessage (playerid, C_RED, "yBank: Invalid cash!");
  181.  
  182.                     GivePlayerMoney(playerid, DrawCash);
  183.                     TakeYBankMoney(playerid, DrawCash);
  184.  
  185.                     new s[200];
  186.                     format(s, sizeof(s), "{FFFFFF}System yBank (Your account info)\n\nInformations for account:\t"CD_GREEN"%s\n\
  187.                                                                               {FFFFFF}For this account is cash:\t"CD_GREEN"$%i\n\
  188.                                                                               {FFFFFF}Withdrawed:\t\t\t"CD_GREEN"$%d",
  189.                                                                                         getName(playerid), GetYBankMoney(playerid), DrawCash);
  190.  
  191.                     return yBankDialog(playerid, yd_default, BOX, ""CD_GREEN"Powered by yBank (v2.0)", s, "Cancel", "");
  192.                 }
  193.             }
  194.             else return yBankDialog(playerid, yd_menu, LIST, ""CD_GREEN"Powered by yBank (v2.0)", "{FF0000}Account status\n{FFFFFF}Withdraw\nDeposit\nTransact\nChange Pass\nDelete Account", "Choose", "Exit");
  195.         }
  196.         case yd_deposit:
  197.         {
  198.             if(response)
  199.             {
  200.                 new DepositCash;
  201.                 if (sscanf(inputtext, "i", DepositCash))    return yBankDialog(playerid, yd_deposit, INPUT, ""CD_GREEN"Powered by yBank (v2.0)", "{FF0000}Error\nPlease type amout to deposit", "OK", "" );
  202.                 else
  203.                 {
  204.                     if (GetPlayerMoney(playerid) < DepositCash)     return SendClientMessage (playerid, C_RED, "yBank: You don't have so much money to deposit!");
  205.                     if (DepositCash == 0) return SendClientMessage (playerid, C_RED, "yBank: Invalid cash!");
  206.  
  207.                     GivePlayerMoney(playerid, -DepositCash);
  208.                     GiveYBankMoney(playerid, DepositCash);
  209.  
  210.                     new s[200];
  211.                     format(s, sizeof(s), "{FFFFFF}System yBank (Your account info)\n\nInformations for account:\t"CD_GREEN"%s\n\
  212.                                                                                       {FFFFFF}For this account is cash:\t"CD_GREEN"$%i\n\
  213.                                                                                       {FFFFFF}Deposited:\t\t\t"CD_GREEN"$%d",
  214.                                                                                         getName(playerid), GetYBankMoney(playerid), DepositCash);
  215.  
  216.                     return yBankDialog(playerid, yd_default, BOX, ""CD_GREEN"Powered by yBank (v2.0)", s, "Cancel", "");
  217.                 }
  218.             }
  219.             else return yBankDialog(playerid, yd_menu, LIST, ""CD_GREEN"Powered by yBank (v2.0)", "{FF0000}Account status\n{FFFFFF}Withdraw\nDeposit\nTransact\nChange Pass\nDelete Account", "Choose", "Exit");
  220.         }
  221.         case yd_transactid:
  222.         {
  223.             if (response)
  224.             {
  225.                 new Player;
  226.                 if (sscanf(inputtext, "i", Player))     return yBankDialog(playerid, yd_transactid, INPUT, ""CD_GREEN"Powered by yBank (v2.0)", "{FF0000}Error\nPlease type id of given player", "OK", "Cancel" );
  227.                 else
  228.                 {
  229.                     if (!IsPlayerConnected(Player))     return SendClientMessage(playerid, C_RED, "Error: This player is not connected!");
  230.                     if (Player == (playerid))   return SendClientMessage(playerid, C_RED, "Error: This player is you!");
  231.  
  232.                     yBankPlayer[playerid][TransactID] = Player;
  233.                     return yBankDialog(playerid, yd_transactcash, INPUT, ""CD_GREEN"Powered by yBank (v2.0)", "yBank: Type amout cash to transact", "Continue", "Cancel");
  234.                 }
  235.             }
  236.             else return yBankDialog(playerid, yd_menu, LIST, ""CD_GREEN"Powered by yBank (v2.0)", "{FF0000}Account status\n{FFFFFF}Withdraw\nDeposit\nTransact\nChange Pass\nDelete Account", "Choose", "Exit");
  237.         }
  238.         case yd_transactcash:
  239.         {
  240.             if (response)
  241.             {
  242.                 new TransactCash;
  243.                 if (sscanf(inputtext, "d", TransactCash))   return yBankDialog(playerid, yd_transactcash, BOX, ""CD_GREEN"Powered by yBank (v2.0)", "Error\nType amout cash to transact", "Send", "Cancel");
  244.                 else
  245.                 {
  246.                     new Player = yBankPlayer[playerid][TransactID];
  247.  
  248.                     if (TransactCash == 0) return SendClientMessage (playerid, C_RED, "yBank: Invalid cash!");
  249.  
  250.                     GiveYBankMoney(Player, TransactCash);
  251.                     TakeYBankMoney(playerid, TransactCash);
  252.  
  253.                     new s[200];
  254.                     format(s, sizeof(s), "{FFFFFF}System yBank (Your account info)\n\nInformations for account:\t"CD_GREEN"%s\n\
  255.                                                                                       {FFFFFF}For this account is cash:\t"CD_GREEN"$%i\n\
  256.                                                                                       {FFFFFF}Transacted:\t\t\t"CD_GREEN"$%d",
  257.                                                                                         getName(playerid), GetYBankMoney(playerid), TransactCash);
  258.  
  259.                     return yBankDialog(playerid, yd_default, BOX, ""CD_GREEN"Powered by yBank (v2.0)", s, "Cancel", "");
  260.                 }
  261.             }
  262.             else return yBankDialog(playerid, yd_menu, LIST, ""CD_GREEN"Powered by yBank (v2.0)", "{FF0000}Account status\n{FFFFFF}Withdraw\nDeposit\nTransact\nChange Pass\nDelete Account", "Choose", "Exit");
  263.         }
  264.         case yd_delete:
  265.         {
  266.             if (response)
  267.             {
  268.                 DeleteYBank(playerid);
  269.                 SendClientMessage(playerid, C_DKGREEN, "* yBank: Your account has been deleted!");
  270.             }
  271.         }
  272.         case yd_changepass:
  273.         {
  274.             if (response)
  275.             {
  276.                 new fp[ 70 ];
  277.                 format(fp, sizeof(fp), ybank_path, getName(playerid));
  278.                
  279.                 if (fexist(fp))
  280.                 {
  281.                     dini_IntSet(fp, "Pass", phash(inputtext));
  282.                     yBankDialog(playerid, yd_menu, LIST, ""CD_GREEN"Powered by yBank (v2.0)", "{FF0000}Account status\n{FFFFFF}Withdraw\nDeposit\nTransact\nChange Pass\nDelete Account", "Choose", "Exit");
  283.                     SendClientMessage(playerid, C_DKGREEN, "* yBank: Your password has been success changed!");
  284.                 }
  285.             }
  286.             else return yBankDialog(playerid, yd_menu, LIST, ""CD_GREEN"Powered by yBank (v2.0)", "{FF0000}Account status\n{FFFFFF}Withdraw\nDeposit\nTransact\nChange Pass\nDelete Account", "Choose", "Exit");
  287.         }
  288.     }
  289.     return true;
  290. }
  291.  
  292. fc ypickup(playerid)
  293. {
  294.     //----------------------------------------
  295.     new fp[ 70 ];
  296.     format(fp, sizeof(fp), ybank_path, getName(playerid));
  297.     //-----------------------------------------
  298.     if (!fexist(fp))
  299.     {
  300.         return yBankDialog(playerid, yd_makepass, BOX, ""CD_GREEN"Powered by yBank (v2.0)", "{FFFF00}Do you want create account in our bank?", "Yes", "No, thanks");
  301.     }
  302.     else
  303.     {
  304.         if (!yBankPlayer[playerid][Log])
  305.         {
  306.             yBankDialog(playerid, yd_login, INPUT, ""CD_GREEN"Powered by yBank (v2.0)", "Welcome!\nPlease type your password below:", "Log In", "Cancel");
  307.         }
  308.         else
  309.         {
  310.             yBankDialog(playerid, yd_menu, LIST, ""CD_GREEN"Powered by yBank (v2.0)", "{FF0000}Account status\n{FFFFFF}Withdraw\nDeposit\nTransact\nChange Pass\nDelete Account", "Choose", "Exit");
  311.         }
  312.     }
  313.     return true;
  314. }
  315.  
  316. fc CreateYBank(Float:X, Float:Y, Float:Z)
  317. {
  318.     if (yBankCount <= MAX_BANK)
  319.     {
  320.         // increase number of banks
  321.         yBankCount++;
  322.  
  323.         new bankid; bankid = yBankCount;
  324.  
  325.         yBank[bankid][Float_X] = X;
  326.         yBank[bankid][Float_Y] = Y;
  327.         yBank[bankid][Float_Z] = Z;
  328.  
  329.         yBank[bankid][IdPickup] = CreatePickup(1318, 2, X, Y, Z, 0);
  330.         printf("yBank loaded ->> Package banks opened and loaded %i/"#MAX_BANK"", yBankCount);
  331.  
  332.     }
  333.     else
  334.     {
  335.    
  336.         printf ("yBank loaded ->> Package banks not opened! Limit Exceed: %i/"#MAX_BANK"", yBankCount);
  337.         return false;
  338.     }
  339.     return true;
  340. }
  341.  
  342.  
  343. SetYBankMoney(playerid, cash)
  344. {
  345.     new fp[ 70 ];
  346.     format(fp, sizeof(fp), ybank_path, getName(playerid));
  347.    
  348.     if (fexist(fp))
  349.     {
  350.         dini_IntSet(fp, "BankCash", cash);
  351.     }
  352.     return 1;
  353. }
  354.  
  355. TakeYBankMoney(playerid, cash)
  356. {
  357.     new fp[ 70 ];
  358.     format(fp, sizeof(fp), ybank_path, getName(playerid));
  359.  
  360.     if (fexist(fp))
  361.     {
  362.         dini_IntSet(fp, "BankCash", dini_Int(fp, "BankCash")-cash);
  363.     }
  364.     return 1;
  365. }
  366.  
  367. GetYBankMoney(playerid)
  368. {
  369.     new fp[ 70 ];
  370.     format(fp, sizeof(fp), ybank_path, getName(playerid));
  371.  
  372.     if (fexist(fp))
  373.     {
  374.         return dini_Int(fp, "BankCash");
  375.     }
  376.     return 1;
  377. }
  378.  
  379. GiveYBankMoney(playerid, cash)
  380. {
  381.     new fp[ 70 ];
  382.     format(fp, sizeof(fp), ybank_path, getName(playerid));
  383.  
  384.     if (fexist(fp))
  385.     {
  386.         dini_IntSet(fp, "BankCash", dini_Int(fp, "BankCash")+cash);
  387.     }
  388.     return 1;
  389. }
  390.  
  391. DeleteYBank(playerid)
  392. {
  393.     new fp[ 70 ];
  394.     format(fp, sizeof(fp), ybank_path, getName(playerid));
  395.  
  396.     fremove(fp);
  397.     return 0;
  398. }
  399.  
  400. getName(playerid)
  401. {
  402.     new n[25];
  403.     GetPlayerName(playerid, n, sizeof(n));
  404.     return n;
  405. }
  406.  
  407. phash(buf[])
  408. {
  409.     new length=strlen(buf);
  410.     new s1 = 1;
  411.     new s2 = 0;
  412.     new n;
  413.     for (n=0; n<length; n++)
  414.     {
  415.        s1 = (s1 + buf[n]) % 65521;
  416.        s2 = (s2 + s1)     % 65521;
  417.     }
  418.     return (s2 << 16) + s1;
  419. }
Add Comment
Please, Sign In to add comment