|
|
- // -----------------------------------------------------------------------------
- // 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 <a_samp>
-
-
- // ------------------------------------------------------------------------------
- // 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;
- }
-
|