Advertisement
RaFaeLs

[RaFaeL] ATM's system

Jan 11th, 2013
936
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.71 KB | None | 0 0
  1. #define FILTERSCRIPT
  2. #include <a_samp>
  3.  
  4. #define DIALOG_ATM         (984)
  5. #define DIALOG_WITHDRAW    (985)
  6. #define DIALOG_DEPOSIT     (986)
  7. #define DIALOG_STATS       (987)
  8.  
  9. #define OBJECT_TYPE        2942
  10. #define PICKUP_TYPE        1274
  11. #define START_MONEY        1500
  12. #define PICKUP_DISTANCE    1.0
  13. #define ATM_DIRECTORY      "ATM"
  14.  
  15. enum atmEnum {
  16.         ObjectID,
  17.         PickupID,
  18.         Text3D:TextID,
  19.  
  20.         Float:atmX,
  21.         Float:atmY,
  22.         Float:atmZ,
  23.         Float:atmRX,
  24.         Float:atmRY,
  25.         Float:atmRZ
  26.     };
  27.  
  28. new
  29.     Float:atmInfo[][atmEnum] = {
  30. //      {0, 0, (Text3D:1024), X,Y,Z,RX,RY,RZ},
  31.         {0, 0, (Text3D:1024), 2433.6999512,-1741.9000244,13.3000002,0.0000000,0.0000000,180.0000000},  //Object number 0
  32.         {0, 0, (Text3D:1024), 2312.3994141,-1644.6992188,14.5000000,0.0000000,0.0000000,0.0000000},  //Object number 1
  33.         {0, 0, (Text3D:1024), 2482.1000977,-1958.6999512,13.3000002,0.0000000,0.0000000,180.0000000},  //Object number 2
  34.         {0, 0, (Text3D:1024), 2518.2998047,-1724.5996094,13.1999998,0.0000000,0.0000000,0.0000000},  //Object number 3
  35.         {0, 0, (Text3D:1024), 2400.0000000,-1914.8994141,13.1999998,0.0000000,0.0000000,0.0000000},  //Object number 4
  36.         {0, 0, (Text3D:1024), 1940.0000000,-2124.6999512,13.1999998,0.0000000,0.0000000,90.0000000},  //Object number 5
  37.         {0, 0, (Text3D:1024), 1001.2999878,-926.0000000,42.0000000,0.0000000,0.0000000,277.7500000},  //Object number 6
  38.         {0, 0, (Text3D:1024), 1195.1999512,-917.9000244,42.7999992,0.0000000,0.0000000,277.7453613},  //Object number 7
  39.         {0, 0, (Text3D:1024), 995.4000244,-1131.0000000,23.5000000,0.0000000,0.0000000,0.0000000},  //Object number 8
  40.         {0, 0, (Text3D:1024), 2198.3000488,1446.5000000,10.6999998,0.0000000,0.0000000,270.0000000},  //Object number 9
  41.         {0, 0, (Text3D:1024), 332.2998047,-1336.7998047,14.3000002,0.0000000,0.0000000,27.2460938},  //Object number 10
  42.         {0, 0, (Text3D:1024), 1887.7998047,2425.6992188,10.8000002,0.0000000,0.0000000,90.0000000},  //Object number 11
  43.         {0, 0, (Text3D:1024), 2187.6992188,2478.7998047,10.8999996,0.0000000,0.0000000,90.0000000},  //Object number 12
  44.         {0, 0, (Text3D:1024), 2465.5000000,2123.5996094,10.5000000,0.0000000,0.0000000,179.9945068},  //Object number 13
  45.         {0, 0, (Text3D:1024), 1601.5996094,2226.5996094,10.6999998,0.0000000,0.0000000,90.0000000},  //Object number 14
  46.         {0, 0, (Text3D:1024), 2437.0000000,1723.8000488,10.5000000,0.0000000,0.0000000,269.9945068},  //Object number 15
  47.         {0, 0, (Text3D:1024), 2632.0000000,1129.6999512,10.8000002,0.0000000,0.0000000,0.0000000},  //Object number 16
  48.         {0, 0, (Text3D:1024), 2252.5000000,962.0000000,10.5000000,0.0000000,0.0000000,180.0000000},  //Object number 17
  49.         {0, 0, (Text3D:1024), 1865.8000488,2072.3000488,10.6999998,0.0000000,0.0000000,0.0000000},  //Object number 18
  50.         {0, 0, (Text3D:1024), -2481.5000000,758.5999756,34.7999992,0.0000000,0.0000000,0.0000000},  //Object number 19
  51.         {0, 0, (Text3D:1024), -2677.3999023,260.0000000,4.3000002,0.0000000,0.0000000,179.7500000},  //Object number 20
  52.         {0, 0, (Text3D:1024), 2720.8000488,-1825.0999756,11.5000000,0.0000000,0.0000000,348.2445068},  //Object number 21
  53.         {0, 0, (Text3D:1024), -2420.1000977,987.4000244,45.0000000,0.0000000,0.0000000,90.0000000},  //Object number 22
  54.         {0, 0, (Text3D:1024), -2637.8994141,-21.2998047,6.1999998,0.0000000,0.0000000,0.0000000},  //Object number 23
  55.         {0, 0, (Text3D:1024), -1806.6999512,953.0999756,24.5000000,0.0000000,0.0000000,90.0000000},  //Object number 24
  56.         {0, 0, (Text3D:1024), -2032.9000244,164.5000000,28.5000000,0.0000000,0.0000000,90.0000000},  //Object number 25
  57.         {0, 0, (Text3D:1024), -1966.0000000,308.1000061,35.0999985,0.0000000,0.0000000,0.0000000},  //Object number 26
  58.         {0, 0, (Text3D:1024), -2329.8999023,-164.0000000,35.2000008,0.0000000,0.0000000,0.0000000},  //Object number 27
  59.         {0, 0, (Text3D:1024), -2626.8999023,1412.0000000,6.6999998,0.0000000,0.0000000,14.5000000},  //Object number 28
  60.         {0, 0, (Text3D:1024), 652.2000122,1708.1999512,6.8000002,0.0000000,0.0000000,222.2500000}  //Object number 29
  61.     },
  62.     tCoints[] = {200, 50, 20, 10, 5, 1},
  63.     pMoney[MAX_PLAYERS] = {START_MONEY, ...};
  64.  
  65.  
  66. public OnFilterScriptInit()
  67. {
  68.     print("\n *** ATM system by RaFaeL loaded successful! (v0.1 RC1) *** \n");
  69.    
  70.     for(new i, j = sizeof(atmInfo); i < j; i++) {
  71.         atmInfo[i][ObjectID] = CreateObject(OBJECT_TYPE, atmInfo[i][atmX], atmInfo[i][atmY], atmInfo[i][atmZ], atmInfo[i][atmRX], atmInfo[i][atmRY], atmInfo[i][atmRZ], 300.0);
  72.  
  73.         atmInfo[i][atmX] -= (PICKUP_DISTANCE * floatsin(-atmInfo[i][atmRZ], degrees));
  74.         atmInfo[i][atmY] -= (PICKUP_DISTANCE * floatcos(-atmInfo[i][atmRZ], degrees));
  75.         atmInfo[i][PickupID] = CreatePickup(PICKUP_TYPE, 1, atmInfo[i][atmX], atmInfo[i][atmY], atmInfo[i][atmZ], -1);
  76.  
  77.         atmInfo[i][TextID] = Create3DTextLabel("Automated {FFFFFF}teller{00FF00} machine", 0x00FF00FF, atmInfo[i][atmX], atmInfo[i][atmY], atmInfo[i][atmZ], 40.0, 0, 0);
  78.     }
  79.    
  80.     return 1;
  81. }
  82.  
  83. public OnFilterScriptExit()
  84. {
  85.     for(new i, j = sizeof(atmInfo); i < j; i++) {
  86.         DestroyObject(atmInfo[i][ObjectID]);
  87.         DestroyPickup(atmInfo[i][PickupID]);
  88.         Delete3DTextLabel(atmInfo[i][TextID]);
  89.     }
  90.     return 1;
  91. }
  92.  
  93. public OnPlayerConnect(playerid)
  94. {
  95.     new
  96.         file[64], name[MAX_PLAYER_NAME];
  97.     GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  98.     format(file, 64,"%s/%s.ini", ATM_DIRECTORY, name);
  99.    
  100.     new
  101.         bool:isNew  = !fexist(file), File:player = fopen(file, (fexist(file))? (io_read):(io_write));
  102.     if(player) {
  103.         new
  104.             money[24];
  105.         if(isNew) {
  106.             format(money, 24, "%d", START_MONEY);
  107.             fwrite(player, money);
  108.         } else {
  109.             fread(player, money);
  110.         }
  111.         fclose(player);
  112.         pMoney[playerid] = (fexist(file))? (strval(money)):(START_MONEY);
  113.     }
  114.     return 1;
  115. }
  116.  
  117. public OnPlayerDisconnect(playerid, reason) {
  118.     new
  119.         file[64], name[MAX_PLAYER_NAME];
  120.     GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  121.     format(file, 64,"%s/%s.ini", ATM_DIRECTORY, name);
  122.    
  123.     new
  124.         File:player = fopen(file, io_write);
  125.     if(player) {
  126.         new
  127.             money[24];
  128.         format(money, 24, "%d", pMoney[playerid]);
  129.         fwrite(player, money);
  130.         fclose(player);
  131.         pMoney[playerid] = 0;
  132.     }
  133. }
  134.  
  135. public OnPlayerCommandText(playerid, cmdtext[])
  136. {
  137.     if(!strcmp("/mystats", cmdtext, true))
  138.     {
  139.         return ShowPlayerStats(playerid, playerid);
  140.     }
  141.     return 0;
  142. }
  143.  
  144. public OnPlayerPickUpPickup(playerid, pickupid)
  145. {
  146.     if(pickupid >= atmInfo[0][PickupID] || pickupid <= atmInfo[sizeof(atmInfo)-1][PickupID]) {
  147.         return ShowPlayerDialog(playerid, DIALOG_ATM, DIALOG_STYLE_LIST, "{FFFFFF}## {00FF00}Automated teller machine {FFFFFF}##", "{FFFFFF}Withdraw\nDeposit\nBalance", "Submit", "Cancel");
  148.     }
  149.     return 1;
  150. }
  151.  
  152. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  153. {
  154.     if(dialogid == DIALOG_ATM && response && listitem != 2) {
  155.             return ShowPlayerDialog(playerid, (listitem == 0)? (DIALOG_WITHDRAW):(DIALOG_DEPOSIT), DIALOG_STYLE_INPUT, "{FFFFFF}## {00FF00}Automated teller machine {FFFFFF}##", (listitem == 0)? ("{FFFFFF}Enter how much money you want to withdraw:"):("{FFFFFF}Enter how much money you want to deposit:"), "Submit", "Cancel");
  156.     }
  157.     if(dialogid == DIALOG_ATM && response && listitem == 2) {
  158.         return ShowPlayerStats(playerid, playerid);
  159.     }
  160.  
  161.     if(dialogid == DIALOG_WITHDRAW && response) {
  162.         new
  163.             money = strval(inputtext);
  164.         if(pMoney[playerid] < money || money < 0) return SendClientMessage(playerid, 0xFF0000FF, "You don't have the money you entered!");
  165.        
  166.         pMoney[playerid] -= money;
  167.         GivePlayerMoney(playerid, money);
  168.        
  169.         return ShowPlayerStats(playerid, playerid);
  170.     }
  171.     if(dialogid == DIALOG_DEPOSIT && response) {
  172.         new
  173.             money = strval(inputtext);
  174.         if(GetPlayerMoney(playerid) < money || money < 0) return SendClientMessage(playerid, 0xFF0000FF, "You don't have the money you entered!");
  175.        
  176.         pMoney[playerid] += money;
  177.         GivePlayerMoney(playerid, -money);
  178.        
  179.         return ShowPlayerStats(playerid, playerid);
  180.     }
  181.  
  182.     return 1;
  183. }
  184.  
  185. stock MoneyManager(money, ret[sizeof(tCoints)]) {
  186.     for(new i = 0, j = sizeof(tCoints); i < j && money > 0; i++) if(money >= tCoints[i]) {
  187.         ret[i] += money / tCoints[i];
  188.         money = money % tCoints[i];
  189.     }
  190.     return 1;
  191. }
  192.  
  193. stock ShowPlayerStats(playerid, reciveid) {
  194.     new
  195.         dialog[256], money[sizeof(tCoints)];
  196.     MoneyManager(pMoney[playerid], money);
  197.        
  198.     format(dialog, 256, "{FFFFFF}Total:     {FF0000}%d{FFFFFF}\n", pMoney[playerid]);
  199.     for(new i = 0, j = sizeof(tCoints); i < j; i++) {
  200.         format(dialog, 256, "%s%s [%d]:     {FF0000}%d{FFFFFF}\n", dialog, (i < 3)? ("Bill"):("Coints"), tCoints[i], money[i]);
  201.     }
  202.     return ShowPlayerDialog(reciveid, DIALOG_STATS, DIALOG_STYLE_MSGBOX, "{FFFFFF}## {00FF00}Automated teller machine {FFFFFF}##", dialog, "Close", "");
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement