// ----------------------------------------------------------------------------- // Example Filterscript for the new Safe with Door // ----------------------------------------------- // By Matite in January 2015 // // v1.0.1 // * Inital release in RC1 // // v1.0.2 // * Changed the Z offset in the MoveObject parameters to fix an issue with // movement caused by rounding on some PCs // // This script removes the existing safe in Madd Dogg's Mansion then creates the // new safe and door object in its place. You can then use commands to open and // close the safe door. // // You can use the following commands: // * /safe = Teleports the player to the safe in Madd Dogg's Mansion // * /openopen = Makes the safe door open // * /closesafe = Makes the safe door close // // Warning... // This script uses a total of 2 objects // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- // Includes // -------- // SA-MP include #include // ------------------------------------------------------------------------------ // Defines // ------- // Safe door status #define SAFE_DOOR_OPEN (1) #define SAFE_DOOR_CLOSED (0) // ------------------------------------------------------------------------------ // Variables // --------- // Stores the created object number of the safe new SafeObject; // Stores the created object number of the safe door new SafeDoorObject; // Tracks the status of the safe door (ie whether it is open or closed) new SafeDoorStatus = SAFE_DOOR_CLOSED; // ------------------------------------------------------------------------------ // Callbacks // --------- public OnPlayerCommandText(playerid, cmdtext[]) { // Check command text if (strcmp("/safe", cmdtext, true, 5) == 0) { // Set the interior SetPlayerInterior(playerid, 5); // Set player position and facing angle SetPlayerPos(playerid, 1230.61, -808.15, 1084.1); SetPlayerFacingAngle(playerid, 0); // Fix camera position after teleporting SetCameraBehindPlayer(playerid); // Send a gametext message to the player GameTextForPlayer(playerid, "~b~~h~Safe And Door!", 3000, 3); // Exit here return 1; } else if (strcmp("/opensafe", cmdtext, true, 9) == 0) { // Check if the safe door is already open if (SafeDoorStatus == SAFE_DOOR_OPEN) { // Send a gametext message to the player and exit here GameTextForPlayer(playerid, "~r~~h~Safe Door~n~~r~~h~Already Open!", 3000, 3); return 1; } // Animate the safe door opening (the small Z offset is required) MoveObject(SafeDoorObject, 1230.225708, -806.648803, 1083.5 + 0.01, 0.005, 0, 0, 280); // Set the safe door status SafeDoorStatus = SAFE_DOOR_OPEN; // Send a gametext message to the player GameTextForPlayer(playerid, "~b~~h~Safe Door Opened!", 3000, 3); // Exit here return 1; } else if (strcmp("/closesafe", cmdtext, true, 10) == 0) { // Check if the safe door is already open if (SafeDoorStatus == SAFE_DOOR_CLOSED) { // Send a gametext message to the player and exit here GameTextForPlayer(playerid, "~r~~h~Safe Door~n~~r~~h~Already Closed!", 3000, 3); return 1; } // Animate the safe door closing (the small Z offset is required) MoveObject(SafeDoorObject, 1230.225708, -806.648803, 1083.5 - 0.01, 0.005, 0, 0, 0); // Set the safe door status SafeDoorStatus = SAFE_DOOR_CLOSED; // Send a gametext message to the player GameTextForPlayer(playerid, "~b~~h~Safe Door Closed!", 3000, 3); // Exit here return 1; } // Exit here (return 0 as the command was not handled in this filterscript) return 0; } public OnFilterScriptInit() { // Display information in the Server Console print("\n"); print(" |---------------------------------------------------"); print(" |--- Safe and Door Filterscript by Matite"); print(" |-- Script v1.02"); print(" |-- 13th February 2015"); print(" |---------------------------------------------------"); // Create the safe object SafeObject = CreateObject(19618, 1230.646118, -806.418823, 1083.5, 0, 0, 0); // Display information in the Server Console print(" |-- Safe object created"); // Create the safe door object SafeDoorObject = CreateObject(19619, 1230.225708, -806.648803, 1083.5 - 0.01, 0, 0, 0); // Display information in the Server Console print(" |-- Safe door object created"); print(" |---------------------------------------------------"); // Loop for (new i = 0; i < MAX_PLAYERS; i++) { // Check if the player is connected and is not a NPC if (IsPlayerConnected(i) && !IsPlayerNPC(i)) { // Remove default GTASA safe object in Madd Dogg's Mansion office // (we do this now incase the filterscipt was loaded after the player joined) RemoveBuildingForPlayer(i, 2332, 1230.646118, -806.418823, 1083.5, 10.0); } } // Exit here return 1; } public OnFilterScriptExit() { // Check for valid object if (IsValidObject(SafeObject)) { // Destroy the safe object DestroyObject(SafeObject); // Display information in the Server Console print(" |---------------------------------------------------"); print(" |-- Safe object destroyed"); } // Check for valid object if (IsValidObject(SafeDoorObject)) { // Destroy the safe door object DestroyObject(SafeDoorObject); // Display information in the Server Console print(" |-- Safe door object destroyed"); } // Display information in the Server Console print(" |---------------------------------------------------"); print(" |-- Safe and Door Filterscript Unloaded"); print(" |---------------------------------------------------"); // Exit here return 1; } public OnPlayerConnect(playerid) { // Remove default GTASA safe object in Madd Dogg's Mansion office RemoveBuildingForPlayer(playerid, 2332, 1230.646118, -806.418823, 1083.5, 10.0); // Exit here return 1; }