Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- =============================================
- | CCTV SYSTEM |
- | (core) |
- =============================================
- */
- #define MAX_CCTV 100
- #define MAX_CCTV_NAME 50
- enum E_CCTV_INFO
- {
- ID,
- cctv_Name[MAX_CCTV_NAME],
- Float: cctv_X,
- Float: cctv_Y,
- Float: cctv_Z,
- Float: cctv_rotX,
- Float: cctv_rotY,
- Float: cctv_rotZ,
- cctv_VW,
- cctv_Interior,
- cctv_Faction,
- cctv_Object
- };
- new
- CCTVInfo[MAX_CCTV][E_CCTV_INFO],
- Iterator: CCTVIter<MAX_CCTV>;
- new
- Float: CCTV_oldX[MAX_PLAYERS],
- Float: CCTV_oldY[MAX_PLAYERS],
- Float: CCTV_oldZ[MAX_PLAYERS],
- Float: CCTV_oldAngle[MAX_PLAYERS],
- CCTV_oldSkin[MAX_PLAYERS],
- CCTV_oldVW[MAX_PLAYERS],
- CCTV_oldInterior[MAX_PLAYERS],
- inCCTV[MAX_PLAYERS],
- CCTV_ID[MAX_PLAYERS],
- CCTV_inEditing[MAX_PLAYERS];
- public OnGameModeInit()
- {
- LoadCCTVs();
- #if defined cctv_OnGameModeInit
- cctv_OnGameModeInit();
- #endif
- return 1;
- }
- #if defined _ALS_OnGameModeInit
- #undef OnGameModeInit
- #else
- #define _ALS_OnGameModeInit
- #endif
- #define OnGameModeInit cctv_OnGameModeInit
- #if defined cctv_OnGameModeInit
- forward cctv_OnGameModeInit();
- #endif
- public OnPlayerEditDynamicObject(playerid, objectid, response, Float: x, Float: y, Float: z, Float: rx, Float: ry, Float: rz)
- {
- if(response == EDIT_RESPONSE_CANCEL)
- {
- if(CCTV_inEditing[playerid]) CancelEditCCTV(playerid, CCTV_ID[playerid]);
- }
- else if(response == EDIT_RESPONSE_FINAL)
- {
- if(CCTV_inEditing[playerid])
- {
- new id = CCTV_ID[playerid];
- SetDynamicObjectPos(objectid, x, y, z);
- SetDynamicObjectRot(objectid, rx, ry, rz);
- CCTVInfo[id][cctv_X] = x;
- CCTVInfo[id][cctv_Y] = y;
- CCTVInfo[id][cctv_Z] = z;
- CCTVInfo[id][cctv_rotX] = rx;
- CCTVInfo[id][cctv_rotY] = ry;
- CCTVInfo[id][cctv_rotZ] = rz;
- SaveCCTV(id);
- CCTV_inEditing[playerid] = 0;
- CCTV_ID[playerid] = -1;
- }
- }
- #if defined cctv_OnPlayerEditDynamicObject
- cctv_OnPlayerEditDynamicObject(playerid, objectid, response, Float: x, Float: y, Float: z, Float: rx, Float: ry, Float: rz)
- #endif
- return 1;
- }
- #if defined _ALS_OnPlayerEditDynamicObject
- #undef OnPlayerEditDynamicObject
- #else
- #define _ALS_OnPlayerEditDynamicObject
- #endif
- #define OnPlayerEditDynamicObject cctv_OnPlayerEditDynamicObject
- #if defined cctv_OnPlayerEditDynamicObject
- forward cctv_OnPlayerEditDynamicObject(playerid, objectid, response, Float: x, Float: y, Float: z, Float: rx, Float: ry, Float: rz);
- #endif
- LoadCCTVs() return mysql_tquery(handle_mysql, "SELECT * FROM `cctv` ORDER BY `ID`", "OnLoadCCTVs", "");
- OnLoadCCTVs(); public OnLoadCCTVs()
- {
- new
- rows = cache_get_row_count(), id, cctvName[MAX_CCTV_NAME];
- if(rows)
- {
- for(new i; i < rows; i++)
- {
- id = Iter_Free(CCTVIter);
- if(id != -1)
- {
- CCTVInfo[id][ID] = cache_get_field_content_int(i, "ID");
- cache_get_field_content(i, "cctv_name", cctvName);
- strcpy(CCTVInfo[id][cctv_Name], cctvName, MAX_CCTV_NAME);
- CCTVInfo[id][cctv_X] = cache_get_field_content_float(i, "cctv_x");
- CCTVInfo[id][cctv_Y] = cache_get_field_content_float(i, "cctv_y");
- CCTVInfo[id][cctv_Z] = cache_get_field_content_float(i, "cctv_z");
- CCTVInfo[id][cctv_rotX] = cache_get_field_content_float(i, "cctv_rot_x");
- CCTVInfo[id][cctv_rotY] = cache_get_field_content_float(i, "cctv_rot_y");
- CCTVInfo[id][cctv_rotZ] = cache_get_field_content_float(i, "cctv_rot_z");
- CCTVInfo[id][cctv_VW] = cache_get_field_content_int(i, "cctv_vw");
- CCTVInfo[id][cctv_Interior] = cache_get_field_content_int(i, "cctv_interior");
- CCTVInfo[id][cctv_Faction] = cache_get_field_content_int(i, "cctv_faction");
- CCTVInfo[id][cctv_Object] = CreateDynamicObject(1886, CCTVInfo[id][cctv_X], CCTVInfo[id][cctv_Y], CCTVInfo[id][cctv_Z], CCTVInfo[id][cctv_rotX], CCTVInfo[id][cctv_rotY], CCTVInfo[id][cctv_rotZ], CCTVInfo[id][cctv_VW]);
- Iter_Add(CCTVIter, id);
- }
- }
- }
- printf("[OnLoadCCTVs] They were loaded %d CCTV.", Iter_Count(CCTVIter));
- return 1;
- }
- OnCCTVCreated(id); public OnCCTVCreated(id)
- {
- CCTVInfo[id][ID] = cache_insert_id();
- return SaveCCTV(id);
- }
- SaveCCTV(id)
- {
- new query[512];
- mysql_format(handle_mysql, query, sizeof query, "UPDATE `cctv` SET `cctv_name` = '%s', `cctv_faction` = '%d', `cctv_x` = '%f', `cctv_y` = '%f', `cctv_z` = '%f', `cctv_rot_x` = '%f', `cctv_rot_y` = '%f', `cctv_rot_z` = '%f', `cctv_vw` = '%d', `cctv_interior` = '%d' WHERE `ID` = '%d'",
- CCTVInfo[id][cctv_Name],
- CCTVInfo[id][cctv_Faction],
- CCTVInfo[id][cctv_X],
- CCTVInfo[id][cctv_Y],
- CCTVInfo[id][cctv_Z],
- CCTVInfo[id][cctv_rotX],
- CCTVInfo[id][cctv_rotY],
- CCTVInfo[id][cctv_rotZ],
- CCTVInfo[id][cctv_VW],
- CCTVInfo[id][cctv_Interior],
- CCTVInfo[id][ID]);
- mysql_query(handle_mysql, query);
- return 1;
- }
- CreateCCTV(playerid, name[], factionid)
- {
- new id = Iter_Free(CCTVIter);
- if(id != -1)
- {
- new
- Float: x, Float: y, Float: z;
- GetPlayerPos(playerid, x, y, z);
- CCTVInfo[id][cctv_X] = x;
- CCTVInfo[id][cctv_Y] = y;
- CCTVInfo[id][cctv_Z] = z;
- CCTVInfo[id][cctv_rotX] = 0.0;
- CCTVInfo[id][cctv_rotY] = 0.0;
- CCTVInfo[id][cctv_rotZ] = 0.0;
- CCTVInfo[id][cctv_Faction] = factionid;
- CCTVInfo[id][cctv_VW] = GetPlayerVirtualWorld(playerid);
- CCTVInfo[id][cctv_Interior] = GetPlayerInterior(playerid);
- strcpy(CCTVInfo[id][cctv_Name], name, MAX_CCTV_NAME);
- CCTVInfo[id][cctv_Object] = CreateDynamicObject(1886, CCTVInfo[id][cctv_X], CCTVInfo[id][cctv_Y], CCTVInfo[id][cctv_Z], CCTVInfo[id][cctv_rotX], CCTVInfo[id][cctv_rotY], CCTVInfo[id][cctv_rotZ], CCTVInfo[id][cctv_VW]);
- Iter_Add(CCTVIter, id);
- mysql_tquery(handle_mysql, "INSERT INTO `cctv` (`cctv_x`) VALUES (0)", "OnCCTVCreated", "d", id);
- }
- return id;
- }
- DeleteCCTV(playerid, id)
- {
- if(!Iter_Contains(CCTVIter, id)) return SendClientMessage(playerid, 0xFF6347FF, "The ID of the typed CCTV is nonexistent. (Use Server ID)");
- new
- query[128], str[128];
- mysql_format(handle_mysql, query, sizeof query, "DELETE FROM `cctv` WHERE `ID` = '%d'", CCTVInfo[id][ID]);
- mysql_query(handle_mysql, query);
- format(str, sizeof str, "AdmCmd: CCTV (ServerID: #%d - DatabaseID: #%d) successfully deleted.", id, CCTVInfo[id][ID]);
- SendClientMessage(playerid, 0xFF6347FF, str);
- CCTVInfo[id][cctv_X] = CCTVInfo[id][cctv_Y] = CCTVInfo[id][cctv_Z] =
- CCTVInfo[id][cctv_rotX] = CCTVInfo[id][cctv_rotY] = CCTVInfo[id][cctv_rotZ] = 0.0;
- CCTVInfo[id][cctv_VW] = CCTVInfo[id][cctv_Interior] =
- CCTVInfo[id][cctv_Faction] = CCTVInfo[id][ID] = -1;
- Iter_Remove(CCTVIter, id);
- return 1;
- }
- EditCCTV(playerid, id)
- {
- if(!Iter_Contains(CCTVIter, id)) return SendClientMessage(playerid, 0xFF6347FF, "The ID of the typed CCTV is nonexistent. (Use Server ID)");
- if(CCTV_inEditing[playerid]) return SendClientMessage(playerid, 0xFF6347FF, "You're already changing the position of a CCTV.");
- CCTV_inEditing[playerid] = 1;
- CCTV_ID[playerid] = id;
- EditDynamicObject(playerid, CCTVInfo[id][cctv_Object]);
- new str[128];
- format(str, sizeof str, "AdmCmd: You are editing the position of CCTV: Server ID (#%d) - Database ID: (#%d)", id, CCTVInfo[id][ID]);
- SendClientMessage(playerid, 0xFF6347FF, str);
- SendClientMessage(playerid, 0xFF6347FF, "[!] You can complete the editing by pressing the FLOPPY, or cancel by pressing ESC.");
- return 1;
- }
- CancelEditCCTV(playerid, id)
- {
- CCTV_inEditing[playerid] = 0;
- CCTV_ID[playerid] = -1;
- SetDynamicObjectPos(CCTVInfo[id][cctv_Object], CCTVInfo[id][cctv_X], CCTVInfo[id][cctv_Y], CCTVInfo[id][cctv_Z]);
- SetDynamicObjectRot(CCTVInfo[id][cctv_Object], CCTVInfo[id][cctv_rotX], CCTVInfo[id][cctv_rotY], CCTVInfo[id][cctv_rotZ]);
- return 1;
- }
- ChangeCCTVName(playerid, id, name[])
- {
- if(!Iter_Contains(CCTVIter, id)) return SendClientMessage(playerid, 0xFF6347FF, "The ID of the typed CCTV is nonexistent. (Use Server ID)");
- new str[128];
- strcpy(CCTVInfo[id][cctv_Name], name, MAX_CCTV_NAME);
- format(str, sizeof str, "AdmCmd: CCTV (#%d) renamed: %s.", id, name);
- SendClientMessage(playerid, 0xFF6347FF, str);
- return 1;
- }
- ChangeCCTVFaction(playerid, id, factionid)
- {
- if(!Iter_Contains(CCTVIter, id)) return SendClientMessage(playerid, 0xFF6347FF, "The ID of the typed CCTV is nonexistent. (Use Server ID)");
- new str[128];
- format(str, sizeof str, "AdmCmd: Faction of CCTV (#%d) modified faction ID #%d.", id, factionid);
- SendClientMessage(playerid, 0xFF6347FF, str);
- CCTVInfo[id][cctv_Faction] = factionid;
- return 1;
- }
- MoveCCTV(playerid, id)
- {
- if(!Iter_Contains(CCTVIter, id)) return SendClientMessage(playerid, 0xFF6347FF, "The ID of the typed CCTV is nonexistent. (Use Server ID)");
- new
- Float: x, Float: y, Float: z, str[128];
- GetPlayerPos(playerid, x, y, z);
- CCTVInfo[id][cctv_X] = x;
- CCTVInfo[id][cctv_Y] = y + 0.5;
- CCTVInfo[id][cctv_Z] = z;
- CCTVInfo[id][cctv_rotX] = 0.0;
- CCTVInfo[id][cctv_rotY] = 0.0;
- CCTVInfo[id][cctv_rotZ] = 0.0;
- CCTVInfo[id][cctv_VW] = GetPlayerVirtualWorld(playerid);
- CCTVInfo[id][cctv_Interior] = GetPlayerInterior(playerid);
- format(str, sizeof str, "AdmCmd: CCTV (#%d) moved to your current location.", id);
- SendClientMessage(playerid, 0xFF6347FF, str);
- SetDynamicObjectPos(CCTVInfo[id][cctv_Object], CCTVInfo[id][cctv_X], CCTVInfo[id][cctv_Y], CCTVInfo[id][cctv_Z]);
- SetDynamicObjectRot(CCTVInfo[id][cctv_Object], CCTVInfo[id][cctv_rotX], CCTVInfo[id][cctv_rotY], CCTVInfo[id][cctv_rotZ]);
- SaveCCTV(id);
- return 1;
- }
- ShowPlayerCCTVMenu(playerid)
- {
- new
- str_long[2048], str[MAX_CCTV_NAME];
- foreach(new i : CCTVIter)
- {
- //if(PLAYER FACTION ID == CCTVInfo[id][cctv_Faction])
- format(str, sizeof str, "%s\n", CCTVInfo[i][cctv_Name]);
- strcat(str_long, str);
- }
- Dialog_Show(playerid, DIALOG_SHOW_CCTV, DIALOG_STYLE_LIST, "CCTV", str_long, "Show", "<<");
- return 1;
- }
- PlayerViewCCTV(playerid, id)
- {
- new str[128],
- Float: x, Float: y, Float: z, Float: angle;
- inCCTV[playerid] = 1;
- GetPlayerPos(playerid, x, y, z);
- CCTV_oldSkin[playerid] = GetPlayerSkin(playerid);
- CCTV_oldX[playerid] = x;
- CCTV_oldY[playerid] = y;
- CCTV_oldZ[playerid] = z;
- CCTV_oldAngle[playerid] = angle;
- SetPlayerPos(playerid, CCTVInfo[id][cctv_X], CCTVInfo[id][cctv_Y], CCTVInfo[id][cctv_Z]);
- SetPlayerVirtualWorld(playerid, CCTVInfo[id][cctv_VW]);
- SetPlayerInterior(playerid, CCTVInfo[id][cctv_Interior]);
- TogglePlayerSpectating(playerid, 1);
- AttachCameraToDynamicObject(playerid, CCTVInfo[id][cctv_Object]);
- format(str, sizeof str, "You are viewing this CCTV %s.", CCTVInfo[id][cctv_Name]);
- SendClientMessage(playerid, 0xFF6347FF, str);
- SendClientMessage(playerid, 0xFF6347FF, "[!] To end the digital vision /cctvoff.");
- return 1;
- }
- PlayerCancelCCTV(playerid)
- {
- TogglePlayerSpectating(playerid, 0);
- SetPlayerPos(playerid, CCTV_oldX[playerid], CCTV_oldY[playerid], CCTV_oldZ[playerid]);
- SetPlayerFacingAngle(playerid, CCTV_oldAngle[playerid]);
- SetPlayerVirtualWorld(playerid, CCTV_oldVW[playerid]);
- SetPlayerInterior(playerid, CCTV_oldInterior[playerid]);
- SetPlayerSkin(playerid, CCTV_oldSkin[playerid]);
- CCTV_oldX[playerid] = CCTV_oldY[playerid] = CCTV_oldZ[playerid] = 0.0;
- CCTV_oldVW[playerid] = CCTV_oldInterior[playerid] = inCCTV[playerid] = 0;
- CCTV_oldSkin[playerid] = -1;
- return 1;
- }
- Dialog:DIALOG_SHOW_CCTV(playerid, response, lisitem, inputtext[])
- {
- if(!response) return 1;
- PlayerViewCCTV(playerid, lisitem);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement