SAMP Gitlab CI Test
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

212 lines
6.0 KiB

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