Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define FILTERSCRIPT
- #include <a_samp>
- #define DIALOG_ATM (984)
- #define DIALOG_WITHDRAW (985)
- #define DIALOG_DEPOSIT (986)
- #define DIALOG_STATS (987)
- #define OBJECT_TYPE 2942
- #define PICKUP_TYPE 1274
- #define START_MONEY 1500
- #define PICKUP_DISTANCE 1.0
- #define ATM_DIRECTORY "ATM"
- enum atmEnum {
- ObjectID,
- PickupID,
- Text3D:TextID,
- Float:atmX,
- Float:atmY,
- Float:atmZ,
- Float:atmRX,
- Float:atmRY,
- Float:atmRZ
- };
- new
- Float:atmInfo[][atmEnum] = {
- // {0, 0, (Text3D:1024), X,Y,Z,RX,RY,RZ},
- {0, 0, (Text3D:1024), 2433.6999512,-1741.9000244,13.3000002,0.0000000,0.0000000,180.0000000}, //Object number 0
- {0, 0, (Text3D:1024), 2312.3994141,-1644.6992188,14.5000000,0.0000000,0.0000000,0.0000000}, //Object number 1
- {0, 0, (Text3D:1024), 2482.1000977,-1958.6999512,13.3000002,0.0000000,0.0000000,180.0000000}, //Object number 2
- {0, 0, (Text3D:1024), 2518.2998047,-1724.5996094,13.1999998,0.0000000,0.0000000,0.0000000}, //Object number 3
- {0, 0, (Text3D:1024), 2400.0000000,-1914.8994141,13.1999998,0.0000000,0.0000000,0.0000000}, //Object number 4
- {0, 0, (Text3D:1024), 1940.0000000,-2124.6999512,13.1999998,0.0000000,0.0000000,90.0000000}, //Object number 5
- {0, 0, (Text3D:1024), 1001.2999878,-926.0000000,42.0000000,0.0000000,0.0000000,277.7500000}, //Object number 6
- {0, 0, (Text3D:1024), 1195.1999512,-917.9000244,42.7999992,0.0000000,0.0000000,277.7453613}, //Object number 7
- {0, 0, (Text3D:1024), 995.4000244,-1131.0000000,23.5000000,0.0000000,0.0000000,0.0000000}, //Object number 8
- {0, 0, (Text3D:1024), 2198.3000488,1446.5000000,10.6999998,0.0000000,0.0000000,270.0000000}, //Object number 9
- {0, 0, (Text3D:1024), 332.2998047,-1336.7998047,14.3000002,0.0000000,0.0000000,27.2460938}, //Object number 10
- {0, 0, (Text3D:1024), 1887.7998047,2425.6992188,10.8000002,0.0000000,0.0000000,90.0000000}, //Object number 11
- {0, 0, (Text3D:1024), 2187.6992188,2478.7998047,10.8999996,0.0000000,0.0000000,90.0000000}, //Object number 12
- {0, 0, (Text3D:1024), 2465.5000000,2123.5996094,10.5000000,0.0000000,0.0000000,179.9945068}, //Object number 13
- {0, 0, (Text3D:1024), 1601.5996094,2226.5996094,10.6999998,0.0000000,0.0000000,90.0000000}, //Object number 14
- {0, 0, (Text3D:1024), 2437.0000000,1723.8000488,10.5000000,0.0000000,0.0000000,269.9945068}, //Object number 15
- {0, 0, (Text3D:1024), 2632.0000000,1129.6999512,10.8000002,0.0000000,0.0000000,0.0000000}, //Object number 16
- {0, 0, (Text3D:1024), 2252.5000000,962.0000000,10.5000000,0.0000000,0.0000000,180.0000000}, //Object number 17
- {0, 0, (Text3D:1024), 1865.8000488,2072.3000488,10.6999998,0.0000000,0.0000000,0.0000000}, //Object number 18
- {0, 0, (Text3D:1024), -2481.5000000,758.5999756,34.7999992,0.0000000,0.0000000,0.0000000}, //Object number 19
- {0, 0, (Text3D:1024), -2677.3999023,260.0000000,4.3000002,0.0000000,0.0000000,179.7500000}, //Object number 20
- {0, 0, (Text3D:1024), 2720.8000488,-1825.0999756,11.5000000,0.0000000,0.0000000,348.2445068}, //Object number 21
- {0, 0, (Text3D:1024), -2420.1000977,987.4000244,45.0000000,0.0000000,0.0000000,90.0000000}, //Object number 22
- {0, 0, (Text3D:1024), -2637.8994141,-21.2998047,6.1999998,0.0000000,0.0000000,0.0000000}, //Object number 23
- {0, 0, (Text3D:1024), -1806.6999512,953.0999756,24.5000000,0.0000000,0.0000000,90.0000000}, //Object number 24
- {0, 0, (Text3D:1024), -2032.9000244,164.5000000,28.5000000,0.0000000,0.0000000,90.0000000}, //Object number 25
- {0, 0, (Text3D:1024), -1966.0000000,308.1000061,35.0999985,0.0000000,0.0000000,0.0000000}, //Object number 26
- {0, 0, (Text3D:1024), -2329.8999023,-164.0000000,35.2000008,0.0000000,0.0000000,0.0000000}, //Object number 27
- {0, 0, (Text3D:1024), -2626.8999023,1412.0000000,6.6999998,0.0000000,0.0000000,14.5000000}, //Object number 28
- {0, 0, (Text3D:1024), 652.2000122,1708.1999512,6.8000002,0.0000000,0.0000000,222.2500000} //Object number 29
- },
- tCoints[] = {200, 50, 20, 10, 5, 1},
- pMoney[MAX_PLAYERS] = {START_MONEY, ...};
- public OnFilterScriptInit()
- {
- print("\n *** ATM system by RaFaeL loaded successful! (v0.1 RC1) *** \n");
- for(new i, j = sizeof(atmInfo); i < j; i++) {
- 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);
- atmInfo[i][atmX] -= (PICKUP_DISTANCE * floatsin(-atmInfo[i][atmRZ], degrees));
- atmInfo[i][atmY] -= (PICKUP_DISTANCE * floatcos(-atmInfo[i][atmRZ], degrees));
- atmInfo[i][PickupID] = CreatePickup(PICKUP_TYPE, 1, atmInfo[i][atmX], atmInfo[i][atmY], atmInfo[i][atmZ], -1);
- atmInfo[i][TextID] = Create3DTextLabel("Automated {FFFFFF}teller{00FF00} machine", 0x00FF00FF, atmInfo[i][atmX], atmInfo[i][atmY], atmInfo[i][atmZ], 40.0, 0, 0);
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new i, j = sizeof(atmInfo); i < j; i++) {
- DestroyObject(atmInfo[i][ObjectID]);
- DestroyPickup(atmInfo[i][PickupID]);
- Delete3DTextLabel(atmInfo[i][TextID]);
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- new
- file[64], name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- format(file, 64,"%s/%s.ini", ATM_DIRECTORY, name);
- new
- bool:isNew = !fexist(file), File:player = fopen(file, (fexist(file))? (io_read):(io_write));
- if(player) {
- new
- money[24];
- if(isNew) {
- format(money, 24, "%d", START_MONEY);
- fwrite(player, money);
- } else {
- fread(player, money);
- }
- fclose(player);
- pMoney[playerid] = (fexist(file))? (strval(money)):(START_MONEY);
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason) {
- new
- file[64], name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- format(file, 64,"%s/%s.ini", ATM_DIRECTORY, name);
- new
- File:player = fopen(file, io_write);
- if(player) {
- new
- money[24];
- format(money, 24, "%d", pMoney[playerid]);
- fwrite(player, money);
- fclose(player);
- pMoney[playerid] = 0;
- }
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(!strcmp("/mystats", cmdtext, true))
- {
- return ShowPlayerStats(playerid, playerid);
- }
- return 0;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- if(pickupid >= atmInfo[0][PickupID] || pickupid <= atmInfo[sizeof(atmInfo)-1][PickupID]) {
- return ShowPlayerDialog(playerid, DIALOG_ATM, DIALOG_STYLE_LIST, "{FFFFFF}## {00FF00}Automated teller machine {FFFFFF}##", "{FFFFFF}Withdraw\nDeposit\nBalance", "Submit", "Cancel");
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == DIALOG_ATM && response && listitem != 2) {
- 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");
- }
- if(dialogid == DIALOG_ATM && response && listitem == 2) {
- return ShowPlayerStats(playerid, playerid);
- }
- if(dialogid == DIALOG_WITHDRAW && response) {
- new
- money = strval(inputtext);
- if(pMoney[playerid] < money || money < 0) return SendClientMessage(playerid, 0xFF0000FF, "You don't have the money you entered!");
- pMoney[playerid] -= money;
- GivePlayerMoney(playerid, money);
- return ShowPlayerStats(playerid, playerid);
- }
- if(dialogid == DIALOG_DEPOSIT && response) {
- new
- money = strval(inputtext);
- if(GetPlayerMoney(playerid) < money || money < 0) return SendClientMessage(playerid, 0xFF0000FF, "You don't have the money you entered!");
- pMoney[playerid] += money;
- GivePlayerMoney(playerid, -money);
- return ShowPlayerStats(playerid, playerid);
- }
- return 1;
- }
- stock MoneyManager(money, ret[sizeof(tCoints)]) {
- for(new i = 0, j = sizeof(tCoints); i < j && money > 0; i++) if(money >= tCoints[i]) {
- ret[i] += money / tCoints[i];
- money = money % tCoints[i];
- }
- return 1;
- }
- stock ShowPlayerStats(playerid, reciveid) {
- new
- dialog[256], money[sizeof(tCoints)];
- MoneyManager(pMoney[playerid], money);
- format(dialog, 256, "{FFFFFF}Total: {FF0000}%d{FFFFFF}\n", pMoney[playerid]);
- for(new i = 0, j = sizeof(tCoints); i < j; i++) {
- format(dialog, 256, "%s%s [%d]: {FF0000}%d{FFFFFF}\n", dialog, (i < 3)? ("Bill"):("Coints"), tCoints[i], money[i]);
- }
- return ShowPlayerDialog(reciveid, DIALOG_STATS, DIALOG_STYLE_MSGBOX, "{FFFFFF}## {00FF00}Automated teller machine {FFFFFF}##", dialog, "Close", "");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement