Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <YSI\y_hooks>
- #define MAX_ATEME (30)
- #define USAGE_MESSAGE "Use: {FFFFFF}"
- // ATMS
- enum atmInfo
- {
- atmID, atmBroken, atmRepairTime,
- Float: fATMPos[3],
- Float: fATMPosRot[3],
- rObjectId, Text3D:atmLabel
- }
- new AtmInfo[MAX_ATEME][atmInfo];
- new Iterator: server_atms<MAX_ATEME>;
- new bomb_object, rob_pickup[3];
- new isplayerrobbing[MAX_PLAYERS];
- hook OnGameModeInit() {
- LoadAtm();
- }
- hook OnPlayerConnect(playerid) {
- isplayerrobbing[playerid] = 0;
- }
- stock LoadAtm()
- {
- defer LoadAtmsOnInit();
- }
- timer LoadAtmsOnInit[1500]()
- {
- mysql_tquery(handle, "SELECT * FROM `atms`", "LoadAtms", "");
- }
- function LoadAtms()
- {
- new string[256], broken_string[32];
- for(new i = 0; i < cache_num_rows(); i++)
- {
- if(i < MAX_ATEME)
- {
- new id = cache_get_field_content_int(i, "atmId");
- AtmInfo[id][atmID] = id;
- AtmInfo[id][fATMPos][0] = cache_get_field_content_float(i, "atmPosX");
- AtmInfo[id][fATMPos][1] = cache_get_field_content_float(i, "atmPosY");
- AtmInfo[id][fATMPos][2] = cache_get_field_content_float(i, "atmPosZ");
- AtmInfo[id][fATMPosRot][0] = cache_get_field_content_float(i, "atmPosRotX");
- AtmInfo[id][fATMPosRot][1] = cache_get_field_content_float(i, "atmPosRotY");
- AtmInfo[id][fATMPosRot][2] = cache_get_field_content_float(i, "atmPosRotZ");
- AtmInfo[id][rObjectId] = CreateDynamicObject(19526, AtmInfo[id][fATMPos][0], AtmInfo[id][fATMPos][1], AtmInfo[id][fATMPos][2], AtmInfo[id][fATMPosRot][0], AtmInfo[id][fATMPosRot][1], AtmInfo[id][fATMPosRot][2], -1, -1, -1, 500.0);
- if(AtmInfo[id][atmBroken] == 1) {
- format(broken_string, sizeof(broken_string), "{A90606}Yes");
- }
- else {
- format(broken_string, sizeof(broken_string), "{0E9000}No");
- }
- format(string, sizeof(string), "ATM ID: {A90606}%d\n{FFFFFF}Use {A90606}/withdraw {FFFFFF}to get money\nOr use {A90606}/rob {FFFFFF}to rob this ATM\nBroken: %s", AtmInfo[id][atmID], broken_string);
- AtmInfo[id][atmLabel] = CreateDynamic3DTextLabel(string, COLOR_WHITE, AtmInfo[id][fATMPos][0], AtmInfo[id][fATMPos][1], AtmInfo[id][fATMPos][2], 100, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 50.0);
- Iter_Add(server_atms, id);
- }
- }
- printf("Loaded %d atms.", Iter_Count(server_atms));
- }
- function UpdateAtmText(update, id)
- {
- if(update == 1)
- {
- DestroyDynamicObject(AtmInfo[id][rObjectId]);
- DestroyDynamic3DTextLabel(AtmInfo[id][atmLabel]);
- new broken_string[32], string[256];
- if(AtmInfo[id][atmBroken] == 1 && AtmInfo[id][atmRepairTime] > 0) {
- format(broken_string, sizeof(broken_string), "{A90606}Yes");
- AtmInfo[id][rObjectId] = CreateDynamicObject(3067, AtmInfo[id][fATMPos][0], AtmInfo[id][fATMPos][1], AtmInfo[id][fATMPos][2]+0.5, AtmInfo[id][fATMPosRot][0], AtmInfo[id][fATMPosRot][1], AtmInfo[id][fATMPosRot][2], -1, -1, -1, 500.0);
- format(string, sizeof(string), "ATM ID: {A90606}%d\n{FFFFFF}Use {A90606}/withdraw {FFFFFF}to get money\nOr use {A90606}/rob {FFFFFF}to rob this ATM\nBroken: %s\nRepair Time: {A90606}%d seconds", AtmInfo[id][atmID], broken_string, AtmInfo[id][atmRepairTime]);
- }
- else {
- format(broken_string, sizeof(broken_string), "{0E9000}No");
- AtmInfo[id][rObjectId] = CreateDynamicObject(19526, AtmInfo[id][fATMPos][0], AtmInfo[id][fATMPos][1], AtmInfo[id][fATMPos][2], AtmInfo[id][fATMPosRot][0], AtmInfo[id][fATMPosRot][1], AtmInfo[id][fATMPosRot][2], -1, -1, -1, 500.0);
- format(string, sizeof(string), "ATM ID: {A90606}%d\n{FFFFFF}Use {A90606}/withdraw {FFFFFF}to get money\nOr use {A90606}/rob {FFFFFF}to rob this ATM\nBroken: %s", AtmInfo[id][atmID], broken_string);
- }
- AtmInfo[id][atmLabel] = CreateDynamic3DTextLabel(string, COLOR_WHITE, AtmInfo[id][fATMPos][0], AtmInfo[id][fATMPos][1], AtmInfo[id][fATMPos][2], 100, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 50.0);
- }
- }
- function UpdateLabelAtmRob(update, id) {
- if(update == 1) {
- DestroyDynamic3DTextLabel(AtmInfo[id][atmLabel]);
- new broken_string[32], string[256];
- if(AtmInfo[id][atmBroken] == 1 && AtmInfo[id][atmRepairTime] > 0) {
- format(broken_string, sizeof(broken_string), "{A90606}Yes");
- format(string, sizeof(string), "ATM ID: {A90606}%d\n{FFFFFF}Use {A90606}/withdraw {FFFFFF}to get money\nOr use {A90606}/rob {FFFFFF}to rob this ATM\nBroken: %s\n{FFFFFF}Repair Time: {A90606}%d {FFFFFF}seconds", AtmInfo[id][atmID], broken_string, AtmInfo[id][atmRepairTime]);
- }
- else {
- format(broken_string, sizeof(broken_string), "{0E9000}No");
- format(string, sizeof(string), "ATM ID: {A90606}%d\n{FFFFFF}Use {A90606}/withdraw {FFFFFF}to get money\nOr use {A90606}/rob {FFFFFF}to rob this ATM\nBroken: %s", AtmInfo[id][atmID], broken_string);
- }
- AtmInfo[id][atmLabel] = CreateDynamic3DTextLabel(string, COLOR_WHITE, AtmInfo[id][fATMPos][0], AtmInfo[id][fATMPos][1], AtmInfo[id][fATMPos][2], 100, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 50.0);
- }
- }
- is_valid_atm(id)
- {
- return Iter_Contains(server_atms, id);
- }
- YCMD:gotoatm(playerid, params[], help)
- {
- check_owner
- new atm_id;
- if(sscanf(params, "d", atm_id)) return SCM(playerid, COLOR_DARKNICERED, USAGE_MESSAGE"/gotoatm [atm id]");
- if(!is_valid_atm(atm_id)) return SCM(playerid, COLOR_WHITE, "This id is invalid!");
- SetPlayerPos(playerid, AtmInfo[atm_id][fATMPos][0], AtmInfo[atm_id][fATMPos][1],AtmInfo[atm_id][fATMPos][2]);
- SCM(playerid, COLOR_WHITE, "You have been teleported.");
- return 1;
- }
- StartAnimation(playerid, animlib[], animname[], Float:Speed, looping, lockx, locky, lockz, lp)
- {
- ApplyAnimation(playerid, animlib, animname, Speed, looping, lockx, locky, lockz, lp);
- }
- YCMD:giveme(playerid, params[], help)
- {
- playerVariables[playerid][pRobPoints] = 10;
- return 1;
- }
- YCMD:rob(playerid, params[], help)
- {
- if(playerVariables[playerid][pWanted] != 0) return SCM(playerid, COLOR_WHITE, "Because you have wanted, you can't use this command!");
- if(playerVariables[playerid][pRobPoints] < 10) return SCM(playerid, COLOR_WHITE, "You don't have enough rob points! Minimum points: 10!");
- if(isplayerrobbing[playerid] == 1) return SCM(playerid, COLOR_WHITE, "You are already involved in a robbery.");
- foreach(new i : server_atms)
- {
- if(AtmInfo[i][atmBroken] == 1) return SCM(playerid, COLOR_WHITE, "This ATM is broken, you can't steal from this!");
- if(AtmInfo[i][atmRepairTime] > 0) return SCM(playerid, COLOR_WHITE, "This ATM is still repairing! You can't rob here!");
- if(IsPlayerInRangeOfPoint(playerid, 2.0, AtmInfo[i][fATMPos][0], AtmInfo[i][fATMPos][1],AtmInfo[i][fATMPos][2]))
- {
- SCM(playerid, COLOR_DARKNICERED, "(Rob): {FFFFFF}You started planting the bomb...");
- ClearAnimations(playerid);
- StartAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
- playerVariables[playerid][pRobPoints] -= 10;
- AtmInfo[i][atmBroken] = 1;
- isplayerrobbing[playerid] = 1;
- defer TimberBomb(playerid, i);
- }
- }
- return 1;
- }
- YCMD:clearme(playerid, params[], help)
- {
- check_owner
- playerVariables[playerid][pWanted] = 0;
- SetPlayerWantedLevel(playerid, 0);
- return 1;
- }
- timer TimberBomb[1300](playerid, atm_id)
- {
- new Float:X, Float:Y, Float:Z;
- GetPlayerPos(playerid, X, Y, Z);
- bomb_object = CreateDynamicObject(1654, X, Y, Z-1, 0.0, 1.0, 1.0, -1, -1, -1, 500.0);
- defer TimerExplode(playerid, atm_id);
- SCM(playerid, COLOR_DARKNICERED, "(Rob): {FFFFFF}Wait 10 seconds to detonate the bomb.");
- }
- timer TimerExplode[10000](playerid, atm_id)
- {
- new string[256], Float:X, Float:Y, Float:Z;
- GetDynamicObjectPos(bomb_object, X, Y, Z);
- CreateExplosionForPlayer(playerid, X, Y, Z, 1, 2);
- DestroyDynamicObject(bomb_object);
- SCM(playerid, COLOR_DARKNICERED, "Bomb has been exploded! Collect the cash!");
- AtmInfo[atm_id][atmRepairTime] = 120;
- UpdateAtmText(1, atm_id);
- rob_pickup[0] = CreateDynamicPickup(1212, 23, X, Y, Z+1);
- rob_pickup[1] = CreateDynamicPickup(1212, 23, X+1, Y, Z+1);
- rob_pickup[2] = CreateDynamicPickup(1212, 23, X+2, Y, Z+1);
- playerVariables[playerid][pWanted] = 6;
- SetPlayerWantedLevel(playerid, 6);
- sendDutyCops(COLOR_BLUE, "Dispatch: %s has comitted a crime: 'ATM Robbery'. Reporter: AdmBot. W: +%d, new wanted level: %d.", GetName(playerid), playerVariables[playerid][pWanted]);
- format(string, sizeof(string), "You have commited a crime: ATM Robbery. W: +6, new wanted level: %d. Reported by: AdmBot.", playerVariables[playerid][pWanted]);
- SCM(playerid, COLOR_WHITE, string);
- GivePlayerWeapon(playerid, 42, 2000);
- SCM(playerid, COLOR_WHITE, "Extinguish the flames caused by the explosion.");
- isplayerrobbing[playerid] = 0;
- }
- hook OnPlayerPickUpDynamicPickup(playerid, pickupid) {
- new money_collect = 45000 + random(30000), string[256];
- if(pickupid == rob_pickup[0]) {
- givePlayerMoney(playerid, money_collect);
- format(string, sizeof(string), "You collected %s$!", FormatNumber(money_collect));
- SCM(playerid, 0x0A8A07FF, string);
- DestroyDynamicPickup(rob_pickup[0]);
- }
- if(pickupid == rob_pickup[1]) {
- givePlayerMoney(playerid, money_collect);
- format(string, sizeof(string), "You collected %s$!", FormatNumber(money_collect));
- SCM(playerid, 0x0A8A07FF, string);
- DestroyDynamicPickup(rob_pickup[1]);
- }
- if(pickupid == rob_pickup[2]) {
- givePlayerMoney(playerid, money_collect);
- format(string, sizeof(string), "You collected %s$!", FormatNumber(money_collect));
- SCM(playerid, 0x0A8A07FF, string);
- DestroyDynamicPickup(rob_pickup[2]);
- }
- }
- task AtmRepairTime[1000]()
- {
- foreach(new i : server_atms)
- {
- new string[256], broken_string[32];
- if(AtmInfo[i][atmRepairTime] > 0 && AtmInfo[i][atmBroken] > 0) {
- AtmInfo[i][atmRepairTime] --;
- format(string, sizeof(string), "ATM ID: {A90606}%d\n{FFFFFF}Use {A90606}/withdraw {FFFFFF}to get money\nOr use {A90606}/rob {FFFFFF}to rob this ATM\nBroken: %s\nRepair Time: {A90606}%d seconds", AtmInfo[i][atmID], broken_string, AtmInfo[i][atmRepairTime]);
- UpdateLabelAtmRob(1, i);
- if(AtmInfo[i][atmRepairTime] == 0) {
- repair_atm(i);
- }
- }
- }
- }
- repair_atm(atm_id) {
- AtmInfo[atm_id][atmRepairTime] = 0;
- AtmInfo[atm_id][atmBroken] = 0;
- UpdateAtmText(1, atm_id);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement