Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define FILTERSCRIPT
- #include <a_samp>
- #include <izcmd> // by Yashas - http://forum.sa-mp.com/showthread.php?t=576114
- #include <sqlitei> // by Slice - http://forum.sa-mp.com/showthread.php?t=303682
- #include <streamer> // by Incognito - http://forum.sa-mp.com/showthread.php?t=102865
- #define MAX_CREGISTER (50) // limit of cash registers
- #define CREG_MIN_MONEY (250) // min. amount of money stolen from a cash register (Default: 250)
- #define CREG_MAX_MONEY (1000) // max. amount of money stolen from a cash register (Default: 1000)
- #define CREG_RESPAWN (180) // time required for a cash register to become robbable again, in seconds (Default: 180)
- #define CREG_ROBTIME (5) // time required to rob a cash register, in seconds (Default: 5)
- enum E_CREGISTER
- {
- // saved
- Float: regX,
- Float: regY,
- Float: regZ,
- Float: regA,
- regInt,
- regVW,
- // temp
- regTimeLeft,
- regObj,
- regPickup,
- regTimer,
- Text3D: regLabel,
- bool: regExists
- }
- new
- CashRegData[MAX_CREGISTER][E_CREGISTER];
- new
- RobberyTimeLeft[MAX_PLAYERS],
- RobberyTimer[MAX_PLAYERS] = {-1, ...},
- EditingRegisterID[MAX_PLAYERS] = {-1, ...},
- PlayerText: CRegRobberyText[MAX_PLAYERS] = {PlayerText: -1, ...};
- new
- DB: CashRegDB,
- DBStatement: LoadRegisters,
- DBStatement: AddRegister,
- DBStatement: UpdateRegister,
- DBStatement: RemoveRegister;
- RandomEx(min, max) //Y_Less
- return random(max - min) + min;
- SetPlayerLookAt(playerid, Float:x, Float:y)
- {
- // somewhere on samp forums, couldn't find the source
- new Float:Px, Float:Py, Float: Pa;
- GetPlayerPos(playerid, Px, Py, Pa);
- Pa = floatabs(atan((y-Py)/(x-Px)));
- if (x <= Px && y >= Py) Pa = floatsub(180, Pa);
- else if (x < Px && y < Py) Pa = floatadd(Pa, 180);
- else if (x >= Px && y <= Py) Pa = floatsub(360.0, Pa);
- Pa = floatsub(Pa, 90.0);
- if (Pa >= 360.0) Pa = floatsub(Pa, 360.0);
- // nan check
- if(Pa == Pa) SetPlayerFacingAngle(playerid, Pa);
- }
- ConvertToMinutes(time)
- {
- // http://forum.sa-mp.com/showpost.php?p=3223897&postcount=11
- new string[15];//-2000000000:00 could happen, so make the string 15 chars to avoid any errors
- format(string, sizeof(string), "%02d:%02d", time / 60, time % 60);
- return string;
- }
- formatInt(intVariable, iThousandSeparator = ',', iCurrencyChar = '$')
- {
- /*
- By Kar
- https://gist.github.com/Kar2k/bfb0eafb2caf71a1237b349684e091b9/8849dad7baa863afb1048f40badd103567c005a5#file-formatint-function
- */
- static
- s_szReturn[ 32 ],
- s_szThousandSeparator[ 2 ] = { ' ', EOS },
- s_szCurrencyChar[ 2 ] = { ' ', EOS },
- s_iVariableLen,
- s_iChar,
- s_iSepPos,
- bool:s_isNegative
- ;
- format( s_szReturn, sizeof( s_szReturn ), "%d", intVariable );
- if(s_szReturn[0] == '-')
- s_isNegative = true;
- else
- s_isNegative = false;
- s_iVariableLen = strlen( s_szReturn );
- if ( s_iVariableLen >= 4 && iThousandSeparator)
- {
- s_szThousandSeparator[ 0 ] = iThousandSeparator;
- s_iChar = s_iVariableLen;
- s_iSepPos = 0;
- while ( --s_iChar > _:s_isNegative )
- {
- if ( ++s_iSepPos == 3 )
- {
- strins( s_szReturn, s_szThousandSeparator, s_iChar );
- s_iSepPos = 0;
- }
- }
- }
- if(iCurrencyChar) {
- s_szCurrencyChar[ 0 ] = iCurrencyChar;
- strins( s_szReturn, s_szCurrencyChar, _:s_isNegative );
- }
- return s_szReturn;
- }
- GetClosestRegister(playerid, Float: range = 1.5)
- {
- new id = -1, Float: dist = range, Float: tempdist;
- for(new i; i < MAX_CREGISTER; i++)
- {
- if(!CashRegData[i][regExists]) continue;
- if(CashRegData[i][regInt] != GetPlayerInterior(playerid) && CashRegData[i][regVW] != GetPlayerVirtualWorld(playerid)) continue;
- tempdist = GetPlayerDistanceFromPoint(playerid, CashRegData[i][regX], CashRegData[i][regY], CashRegData[i][regZ]);
- if(tempdist > range) continue;
- if(tempdist <= dist)
- {
- dist = tempdist;
- id = i;
- }
- }
- return id;
- }
- CashReg_FindFreeID()
- {
- for(new i; i < MAX_CREGISTER; i++) if(!CashRegData[i][regExists]) return i;
- return -1;
- }
- CashReg_BeingEdited(id)
- {
- if(!(0 <= id <= MAX_CREGISTER - 1)) return 0;
- if(!CashRegData[id][regExists]) return 0;
- for(new i, psize = GetPlayerPoolSize(); i <= psize; i++)
- {
- if(!IsPlayerConnected(i)) continue;
- if(EditingRegisterID[i] == id) return 1;
- }
- return 0;
- }
- CashReg_PlayerInit(playerid)
- {
- RobberyTimeLeft[playerid] = 0;
- RobberyTimer[playerid] = EditingRegisterID[playerid] = -1;
- CRegRobberyText[playerid] = CreatePlayerTextDraw(playerid, 40.000000, 295.000000, "_");
- PlayerTextDrawBackgroundColor(playerid, CRegRobberyText[playerid], 255);
- PlayerTextDrawFont(playerid, CRegRobberyText[playerid], 1);
- PlayerTextDrawLetterSize(playerid, CRegRobberyText[playerid], 0.240000, 1.100000);
- PlayerTextDrawColor(playerid, CRegRobberyText[playerid], -1);
- PlayerTextDrawSetOutline(playerid, CRegRobberyText[playerid], 1);
- PlayerTextDrawSetProportional(playerid, CRegRobberyText[playerid], 1);
- PlayerTextDrawSetSelectable(playerid, CRegRobberyText[playerid], 0);
- ApplyAnimation(playerid, "INT_SHOP", "null", 0.0, 0, 0, 0, 0, 0);
- return 1;
- }
- CashReg_ResetPlayer(playerid)
- {
- if(RobberyTimer[playerid] != -1)
- {
- KillTimer(RobberyTimer[playerid]);
- ClearAnimations(playerid);
- }
- PlayerTextDrawHide(playerid, CRegRobberyText[playerid]);
- RobberyTimeLeft[playerid] = 0;
- RobberyTimer[playerid] = -1;
- return 1;
- }
- public OnFilterScriptInit()
- {
- for(new i; i < MAX_CREGISTER; i++)
- {
- CashRegData[i][regObj] = CashRegData[i][regPickup] = CashRegData[i][regTimer] = -1;
- CashRegData[i][regLabel] = Text3D: -1;
- }
- for(new i, psize = GetPlayerPoolSize(); i <= psize; i++) if(IsPlayerConnected(i)) CashReg_PlayerInit(i);
- // database
- CashRegDB = db_open("cash_registers.db");
- db_query(CashRegDB, "CREATE TABLE IF NOT EXISTS cashregisters (ID INTEGER, RegX FLOAT, RegY FLOAT, RegZ FLOAT, RegA FLOAT, RegInt INTEGER, RegVW INTEGER)");
- // prepare queries
- LoadRegisters = db_prepare(CashRegDB, "SELECT * FROM cashregisters");
- AddRegister = db_prepare(CashRegDB, "INSERT INTO cashregisters (ID, RegX, RegY, RegZ, RegA, RegInt, RegVW) VALUES (?, ?, ?, ?, ?, ?, ?)");
- UpdateRegister = db_prepare(CashRegDB, "UPDATE cashregisters SET RegX=?, RegY=?, RegZ=?, RegA=? WHERE ID=?");
- RemoveRegister = db_prepare(CashRegDB, "DELETE FROM cashregisters WHERE ID=?");
- // load cash registers
- new id, worlddata[2], Float: pos[4];
- stmt_bind_result_field(LoadRegisters, 0, DB::TYPE_INTEGER, id);
- stmt_bind_result_field(LoadRegisters, 1, DB::TYPE_FLOAT, pos[0]);
- stmt_bind_result_field(LoadRegisters, 2, DB::TYPE_FLOAT, pos[1]);
- stmt_bind_result_field(LoadRegisters, 3, DB::TYPE_FLOAT, pos[2]);
- stmt_bind_result_field(LoadRegisters, 4, DB::TYPE_FLOAT, pos[3]);
- stmt_bind_result_field(LoadRegisters, 5, DB::TYPE_INTEGER, worlddata[0]);
- stmt_bind_result_field(LoadRegisters, 6, DB::TYPE_INTEGER, worlddata[1]);
- if(stmt_execute(LoadRegisters))
- {
- new label[128];
- while(stmt_fetch_row(LoadRegisters))
- {
- CashRegData[id][regX] = pos[0];
- CashRegData[id][regY] = pos[1];
- CashRegData[id][regZ] = pos[2];
- CashRegData[id][regA] = pos[3];
- CashRegData[id][regInt] = worlddata[0];
- CashRegData[id][regVW] = worlddata[1];
- CashRegData[id][regObj] = CreateDynamicObject(2941, CashRegData[id][regX], CashRegData[id][regY], CashRegData[id][regZ], 0.0, 0.0, CashRegData[id][regA], CashRegData[id][regVW], CashRegData[id][regInt]);
- format(label, sizeof(label), "Cash Register (%d)\n\n{FFFFFF}Press {F1C40F}~k~~CONVERSATION_NO~ {FFFFFF}to rob.\n{2ECC71}Robbable", id);
- CashRegData[id][regLabel] = CreateDynamic3DTextLabel(label, 0xF1C40FFF, CashRegData[id][regX], CashRegData[id][regY], CashRegData[id][regZ] + 0.25, 5.0, .testlos = 1);
- CashRegData[id][regExists] = true;
- }
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new i, psize = GetPlayerPoolSize(); i <= psize; i++)
- {
- if(!IsPlayerConnected(i)) continue;
- CashReg_ResetPlayer(i);
- PlayerTextDrawDestroy(i, CRegRobberyText[i]);
- }
- db_close(CashRegDB);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- CashReg_PlayerInit(playerid);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- CashReg_ResetPlayer(playerid);
- EditingRegisterID[playerid] = -1;
- CRegRobberyText[playerid] = PlayerText: -1;
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- CashReg_ResetPlayer(playerid);
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT && (newkeys & KEY_NO))
- {
- new id = GetClosestRegister(playerid);
- if(id != -1 && !CashReg_BeingEdited(id) && CashRegData[id][regTimer] == -1)
- {
- SetPlayerPos(playerid, CashRegData[id][regX] + (0.75 * floatsin(-CashRegData[id][regA], degrees)), CashRegData[id][regY] + (0.75 * floatcos(-CashRegData[id][regA], degrees)), CashRegData[id][regZ]);
- SetPlayerLookAt(playerid, CashRegData[id][regX], CashRegData[id][regY]);
- // disable cash register
- CashRegData[id][regTimeLeft] = CREG_RESPAWN;
- CashRegData[id][regTimer] = SetTimerEx("CashReg_Reset", 1000, true, "ii", id, -1);
- new string[128];
- format(string, sizeof(string), "Cash Register (%d)\n\n{FFFFFF}Press {F1C40F}~k~~CONVERSATION_NO~ {FFFFFF}to rob.\n{E74C3C}Robbable in %s", id, ConvertToMinutes(CREG_RESPAWN));
- UpdateDynamic3DTextLabelText(CashRegData[id][regLabel], 0xF1C40FFF, string);
- // start robbery
- ApplyAnimation(playerid, "INT_SHOP", "shop_cashier", 4.0, 1, 0, 0, 0, 0);
- format(string, sizeof(string), "~b~~h~Cash Register Robbery~n~~n~Complete in ~r~%s", ConvertToMinutes(CREG_ROBTIME));
- PlayerTextDrawSetString(playerid, CRegRobberyText[playerid], string);
- PlayerTextDrawShow(playerid, CRegRobberyText[playerid]);
- RobberyTimeLeft[playerid] = CREG_ROBTIME;
- RobberyTimer[playerid] = SetTimerEx("CashReg_Rob", 1000, true, "i", playerid);
- }
- }
- return 1;
- }
- public OnPlayerShootDynamicObject(playerid, weaponid, STREAMER_TAG_OBJECT objectid, Float:x, Float:y, Float:z)
- {
- if(Streamer_GetIntData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_MODEL_ID) == 2941)
- {
- new id = -1;
- for(new i; i < MAX_CREGISTER; i++)
- {
- if(!CashRegData[i][regExists]) continue;
- if(objectid == CashRegData[i][regObj])
- {
- id = i;
- break;
- }
- }
- if(id != -1 && !CashReg_BeingEdited(id) && CashRegData[id][regTimer] == -1)
- {
- new Float: a = CashRegData[id][regA] + 180.0;
- CashRegData[id][regPickup] = CreateDynamicPickup(1212, 1, CashRegData[id][regX] + (1.25 * floatsin(-a, degrees)), CashRegData[id][regY] + (1.25 * floatcos(-a, degrees)), CashRegData[id][regZ] - 0.5);
- PlayerPlaySound(playerid, 17802, 0.0, 0.0, 0.0);
- CashRegData[id][regTimeLeft] = CREG_RESPAWN;
- CashRegData[id][regTimer] = SetTimerEx("CashReg_Reset", 1000, true, "ii", id, CreateDynamicObject(18703, CashRegData[id][regX] - (0.15 * floatsin(-a, degrees)), CashRegData[id][regY] - (0.15 * floatcos(-a, degrees)), CashRegData[id][regZ] - 1.65, 0.0, 0.0, 0.0, CashRegData[id][regVW], CashRegData[id][regInt]));
- new string[128];
- format(string, sizeof(string), "Cash Register (%d)\n\n{FFFFFF}Press {F1C40F}~k~~CONVERSATION_NO~ {FFFFFF}to rob.\n{E74C3C}Robbable in %s", id, ConvertToMinutes(CREG_RESPAWN));
- UpdateDynamic3DTextLabelText(CashRegData[id][regLabel], 0xF1C40FFF, string);
- Streamer_Update(playerid);
- }
- }
- return 1;
- }
- public OnPlayerEditDynamicObject(playerid, STREAMER_TAG_OBJECT objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
- {
- if(EditingRegisterID[playerid] != -1 && CashRegData[ EditingRegisterID[playerid] ][regExists])
- {
- if(response == EDIT_RESPONSE_FINAL)
- {
- new id = EditingRegisterID[playerid];
- CashRegData[id][regX] = x;
- CashRegData[id][regY] = y;
- CashRegData[id][regZ] = z;
- CashRegData[id][regA] = rz;
- SetDynamicObjectPos(objectid, CashRegData[id][regX], CashRegData[id][regY], CashRegData[id][regZ]);
- SetDynamicObjectRot(objectid, 0.0, 0.0, CashRegData[id][regA]);
- Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, CashRegData[id][regLabel], E_STREAMER_X, CashRegData[id][regX]);
- Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, CashRegData[id][regLabel], E_STREAMER_Y, CashRegData[id][regY]);
- Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, CashRegData[id][regLabel], E_STREAMER_Z, CashRegData[id][regZ] + 0.25);
- stmt_bind_value(UpdateRegister, 0, DB::TYPE_FLOAT, CashRegData[id][regX]);
- stmt_bind_value(UpdateRegister, 1, DB::TYPE_FLOAT, CashRegData[id][regY]);
- stmt_bind_value(UpdateRegister, 2, DB::TYPE_FLOAT, CashRegData[id][regZ]);
- stmt_bind_value(UpdateRegister, 3, DB::TYPE_FLOAT, CashRegData[id][regA]);
- stmt_bind_value(UpdateRegister, 4, DB::TYPE_INTEGER, id);
- stmt_execute(UpdateRegister);
- EditingRegisterID[playerid] = -1;
- }
- if(response == EDIT_RESPONSE_CANCEL)
- {
- new id = EditingRegisterID[playerid];
- SetDynamicObjectPos(objectid, CashRegData[id][regX], CashRegData[id][regY], CashRegData[id][regZ]);
- SetDynamicObjectRot(objectid, 0.0, 0.0, CashRegData[id][regA]);
- EditingRegisterID[playerid] = -1;
- }
- }
- return 1;
- }
- public OnPlayerPickUpDynamicPickup(playerid, pickupid)
- {
- if(Streamer_GetIntData(STREAMER_TYPE_PICKUP, pickupid, E_STREAMER_MODEL_ID) == 1212)
- {
- new id = -1;
- for(new i; i < MAX_CREGISTER; i++)
- {
- if(!CashRegData[i][regExists]) continue;
- if(pickupid == CashRegData[i][regPickup])
- {
- id = i;
- break;
- }
- }
- if(id != -1)
- {
- new money = RandomEx(floatround(CREG_MIN_MONEY / 2), floatround(CREG_MAX_MONEY / 2)), string[128];
- format(string, sizeof(string), "CASH REGISTER: {FFFFFF}You stole {2ECC71}%s {FFFFFF}from the cash register.", formatInt(money));
- SendClientMessage(playerid, 0x3498DBFF, string);
- GivePlayerMoney(playerid, money);
- CashRegData[id][regPickup] = -1;
- DestroyDynamicPickup(pickupid);
- }
- }
- return 1;
- }
- forward CashReg_Reset(id, smokeid);
- public CashReg_Reset(id, smokeid)
- {
- new string[128];
- if(CashRegData[id][regTimeLeft] > 1) {
- CashRegData[id][regTimeLeft]--;
- format(string, sizeof(string), "Cash Register (%d)\n\n{FFFFFF}Press {F1C40F}~k~~CONVERSATION_NO~ {FFFFFF}to rob.\n{E74C3C}Robbable in %s", id, ConvertToMinutes(CashRegData[id][regTimeLeft]));
- UpdateDynamic3DTextLabelText(CashRegData[id][regLabel], 0xF1C40FFF, string);
- }else if(CashRegData[id][regTimeLeft] == 1) {
- if(smokeid != -1) DestroyDynamicObject(smokeid);
- DestroyDynamicPickup(CashRegData[id][regPickup]);
- KillTimer(CashRegData[id][regTimer]);
- CashRegData[id][regTimeLeft] = 0;
- CashRegData[id][regPickup] = CashRegData[id][regTimer] = -1;
- format(string, sizeof(string), "Cash Register (%d)\n\n{FFFFFF}Press {F1C40F}~k~~CONVERSATION_NO~ {FFFFFF}to rob.\n{2ECC71}Robbable", id);
- UpdateDynamic3DTextLabelText(CashRegData[id][regLabel], 0xF1C40FFF, string);
- }
- return 1;
- }
- forward CashReg_Rob(playerid);
- public CashReg_Rob(playerid)
- {
- new string[128];
- if(RobberyTimeLeft[playerid] > 1) {
- RobberyTimeLeft[playerid]--;
- format(string, sizeof(string), "~b~~h~Cash Register Robbery~n~~n~Complete in ~r~%s", ConvertToMinutes(RobberyTimeLeft[playerid]));
- PlayerTextDrawSetString(playerid, CRegRobberyText[playerid], string);
- }else if(RobberyTimeLeft[playerid] == 1) {
- new money = RandomEx(CREG_MIN_MONEY, CREG_MAX_MONEY);
- CashReg_ResetPlayer(playerid);
- format(string, sizeof(string), "CASH REGISTER: {FFFFFF}You stole {2ECC71}%s {FFFFFF}from the cash register.", formatInt(money));
- SendClientMessage(playerid, 0x3498DBFF, string);
- GivePlayerMoney(playerid, money);
- }
- return 1;
- }
- // Admin Commands
- CMD:createregister(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Only RCON admins can use this command.");
- new id = CashReg_FindFreeID();
- if(id == -1) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Server cash register limit reached.");
- GetPlayerPos(playerid, CashRegData[id][regX], CashRegData[id][regY], CashRegData[id][regZ]);
- GetPlayerFacingAngle(playerid, CashRegData[id][regA]);
- CashRegData[id][regX] += (1.25 * floatsin(-CashRegData[id][regA], degrees));
- CashRegData[id][regY] += (1.25 * floatcos(-CashRegData[id][regA], degrees));
- CashRegData[id][regInt] = GetPlayerInterior(playerid);
- CashRegData[id][regVW] = GetPlayerVirtualWorld(playerid);
- CashRegData[id][regA] += 180.0;
- CashRegData[id][regTimeLeft] = 0;
- CashRegData[id][regObj] = CreateDynamicObject(2941, CashRegData[id][regX], CashRegData[id][regY], CashRegData[id][regZ], 0.0, 0.0, CashRegData[id][regA], CashRegData[id][regVW], CashRegData[id][regInt]);
- new label[128];
- format(label, sizeof(label), "Cash Register (%d)\n\n{FFFFFF}Press {F1C40F}~k~~CONVERSATION_NO~ {FFFFFF}to rob.\n{2ECC71}Robbable", id);
- CashRegData[id][regLabel] = CreateDynamic3DTextLabel(label, 0xF1C40FFF, CashRegData[id][regX], CashRegData[id][regY], CashRegData[id][regZ] + 0.25, 5.0, .testlos = 1);
- CashRegData[id][regExists] = true;
- // save to db
- stmt_bind_value(AddRegister, 0, DB::TYPE_INTEGER, id);
- stmt_bind_value(AddRegister, 1, DB::TYPE_FLOAT, CashRegData[id][regX]);
- stmt_bind_value(AddRegister, 2, DB::TYPE_FLOAT, CashRegData[id][regY]);
- stmt_bind_value(AddRegister, 3, DB::TYPE_FLOAT, CashRegData[id][regZ]);
- stmt_bind_value(AddRegister, 4, DB::TYPE_FLOAT, CashRegData[id][regA]);
- stmt_bind_value(AddRegister, 5, DB::TYPE_INTEGER, CashRegData[id][regInt]);
- stmt_bind_value(AddRegister, 6, DB::TYPE_INTEGER, CashRegData[id][regVW]);
- if(stmt_execute(AddRegister))
- {
- EditingRegisterID[playerid] = id;
- EditDynamicObject(playerid, CashRegData[id][regObj]);
- SendClientMessage(playerid, 0x3498DBFF, "CASH REGISTER: {FFFFFF}Register created.");
- SendClientMessage(playerid, 0x3498DBFF, "CASH REGISTER: {FFFFFF}You can edit it right now, or cancel editing and edit it some other time.");
- }
- return 1;
- }
- CMD:editregister(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Only RCON admins can use this command.");
- if(isnull(params)) return SendClientMessage(playerid, 0xF39C12FF, "SYNTAX: {FFFFFF}/editregister [id]");
- new id = strval(params);
- if(!(0 <= id <= MAX_CREGISTER - 1)) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Invalid ID.");
- if(!CashRegData[id][regExists]) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Cash register doesn't exist.");
- if(!IsPlayerInRangeOfPoint(playerid, 20.0, CashRegData[id][regX], CashRegData[id][regY], CashRegData[id][regZ])) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}You're not near the cash register you want to edit.");
- if(CashReg_BeingEdited(id)) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Can't edit specified cash register because its being edited already.");
- EditingRegisterID[playerid] = id;
- EditDynamicObject(playerid, CashRegData[id][regObj]);
- return 1;
- }
- CMD:removeregister(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Only RCON admins can use this command.");
- if(isnull(params)) return SendClientMessage(playerid, 0xF39C12FF, "SYNTAX: {FFFFFF}/removeregister [id]");
- new id = strval(params);
- if(!(0 <= id <= MAX_CREGISTER - 1)) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Invalid ID.");
- if(!CashRegData[id][regExists]) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Cash register doesn't exist.");
- if(CashReg_BeingEdited(id)) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Can't remove specified cash register because its being edited.");
- DestroyDynamicObject(CashRegData[id][regObj]);
- DestroyDynamic3DTextLabel(CashRegData[id][regLabel]);
- DestroyDynamicPickup(CashRegData[id][regPickup]);
- if(CashRegData[id][regTimer] != -1) KillTimer(CashRegData[id][regTimer]);
- CashRegData[id][regObj] = CashRegData[id][regPickup] = CashRegData[id][regTimer] = -1;
- CashRegData[id][regLabel] = Text3D: -1;
- CashRegData[id][regExists] = false;
- stmt_bind_value(RemoveRegister, 0, DB::TYPE_INTEGER, id);
- if(stmt_execute(RemoveRegister)) SendClientMessage(playerid, 0x3498DBFF, "CASH REGISTER: {FFFFFF}Cash register removed.");
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement