142 lines
6.2 KiB
Plaintext
142 lines
6.2 KiB
Plaintext
/*
|
|
* Irresistible Gaming (c) 2018
|
|
* Developed by Lorenc
|
|
* Module: cnr\features\robbery\vaults.pwn
|
|
* Purpose: vault opening system (corrolated to robberies)
|
|
*/
|
|
|
|
/* ** Includes ** */
|
|
#include < YSI\y_hooks >
|
|
|
|
/* ** Definitions ** */
|
|
#define VAULT_BOAT ( 3 )
|
|
|
|
/* ** Variables ** */
|
|
enum E_BANKDOOR_DATA
|
|
{
|
|
E_NAME[ 18 ],
|
|
E_OBJECT, bool: E_DISABLED,
|
|
E_TIMESTAMP, E_TIMESTAMP_CLOSE, E_WORLD,
|
|
Float: E_EXPLODE_POS[ 3 ], Float: E_OPEN_POS[ 3 ], Float: E_OPEN_ROT[ 3 ]
|
|
}
|
|
|
|
new
|
|
g_bankvaultData [ ] [ E_BANKDOOR_DATA ] =
|
|
{
|
|
{ "San Fierro Bank", INVALID_OBJECT_ID, false, 0, 0, 23, { -1413.956, 859.16560, 984.71260 }, { -1412.56506, 859.2745360, 978.6328730 }, { -1000.000, -1000.00, -1000.0000 } },
|
|
{ "Las Venturas Bank", INVALID_OBJECT_ID, false, 0, 0, 52, { 2116.3513, 1233.0250, 1017.1369 }, { 2113.391357, 1233.155273, 1016.122619 }, { 90.000000, 0.000000, -90.000000 } },
|
|
{ "Los Santos Bank", INVALID_OBJECT_ID, false, 0, 0, 56, { 2116.3513, 1233.0250, 1017.1369 }, { 2113.391357, 1233.155273, 1016.122619 }, { 90.000000, 0.000000, -90.000000 } },
|
|
{ "Militia Ship", INVALID_OBJECT_ID, false, 0, 0, 0, { -2372.6223, 1551.3984, 2.1172000 }, { -2371.41699, 1552.027709, -0.75281000 }, { 0.0000000, 0.000000, 28.0000000 } }
|
|
}
|
|
;
|
|
|
|
/* ** Hooks ** */
|
|
hook OnScriptInit( )
|
|
{
|
|
// Boat Hiest
|
|
g_bankvaultData[ VAULT_BOAT ] [ E_OBJECT ] = CreateDynamicObject( 19435, -2371.416992, 1552.027709, 1.907187, 0.000000, 0.000000, 28.0000, g_bankvaultData[ VAULT_BOAT ] [ E_WORLD ] );
|
|
SetDynamicObjectMaterial( g_bankvaultData[ VAULT_BOAT ] [ E_OBJECT ], 0, 18268, "mtbtrackcs_t", "mp_carter_cage", -1 );
|
|
return 1;
|
|
}
|
|
|
|
hook OnServerUpdate( )
|
|
{
|
|
// Replenish Vaults
|
|
for( new i = 0; i < sizeof( g_bankvaultData ); i++ ) if ( g_bankvaultData[ i ] [ E_DISABLED ] && g_iTime > g_bankvaultData[ i ] [ E_TIMESTAMP_CLOSE ] )
|
|
{
|
|
StopDynamicObject ( g_bankvaultData[ i ] [ E_OBJECT ] );
|
|
DestroyDynamicObject( g_bankvaultData[ i ] [ E_OBJECT ] );
|
|
|
|
g_bankvaultData[ i ] [ E_TIMESTAMP_CLOSE ] = 0;
|
|
g_bankvaultData[ i ] [ E_DISABLED ] = false;
|
|
|
|
switch ( i )
|
|
{
|
|
case CITY_SF: SetDynamicObjectMaterial( ( g_bankvaultData[ i ] [ E_OBJECT ] = CreateDynamicObject( 18766, -1412.565063, 859.274536, 983.132873, 0.000000, 90.000000, 90.000000 ) ), 0, 18268, "mtbtrackcs_t", "mp_carter_cage", -1 );
|
|
case CITY_LV: g_bankvaultData[ i ] [ E_OBJECT ] = CreateDynamicObject( 2634, 2114.742431, 1233.155273, 1017.616821, 0.000000, 0.000000, -90.000000, g_bankvaultData[ i ] [ E_WORLD ] );
|
|
case CITY_LS: g_bankvaultData[ i ] [ E_OBJECT ] = CreateDynamicObject( 2634, 2114.742431, 1233.155273, 1017.616821, 0.000000, 0.000000, -90.000000, g_bankvaultData[ i ] [ E_WORLD ] );
|
|
case VAULT_BOAT: SetDynamicObjectMaterial( ( g_bankvaultData[ VAULT_BOAT ] [ E_OBJECT ] = CreateDynamicObject( 19435, -2371.416992, 1552.027709, 1.907187, 0.000000, 0.000000, 28.0000, g_bankvaultData[ VAULT_BOAT ] [ E_WORLD ] ) ), 0, 18268, "mtbtrackcs_t", "mp_carter_cage", -1 );
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
hook OnPlayerUpdateEx( playerid )
|
|
{
|
|
// Anti Camping In Vault
|
|
if ( IsPlayerInBank( playerid ) )
|
|
{
|
|
if ( IsPlayerInArea( playerid, -1412.215209, -1400.443237, 853.086669, 865.716735 ) && !g_bankvaultData[ CITY_SF ] [ E_DISABLED ] )
|
|
{
|
|
SendServerMessage( playerid, "You've been moved as you've entered the vault whilst it's closed." );
|
|
SetPlayerPos( playerid, -1416.3499, 859.2744, 984.7126 );
|
|
}
|
|
|
|
if ( IsPlayerInArea( playerid, 2102.2590, 2113.5295, 1229.8595, 1246.2588 ) )
|
|
{
|
|
new
|
|
world = GetPlayerVirtualWorld( playerid );
|
|
|
|
if ( ( world == g_bankvaultData[ CITY_LV ] [ E_WORLD ] && !g_bankvaultData[ CITY_LV ] [ E_DISABLED ] ) || ( world == g_bankvaultData[ CITY_LS ] [ E_WORLD ] && !g_bankvaultData[ CITY_LS ] [ E_DISABLED ] ) )
|
|
{
|
|
SendServerMessage( playerid, "You've been moved as you've entered the vault whilst it's closed." );
|
|
SetPlayerPos( playerid, 2121.7827, 1233.3225, 1017.1369 );
|
|
}
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
hook OnPlayerC4Blown( playerid, Float: X, Float: Y, Float: Z, worldid )
|
|
{
|
|
// check if blown up various vaults
|
|
for( new j = 0; j < sizeof( g_bankvaultData ); j++ )
|
|
{
|
|
// Blow Bank Vault
|
|
if ( IsPointToPoint( 5.0, X, Y, Z, g_bankvaultData[ j ] [ E_EXPLODE_POS ] [ 0 ], g_bankvaultData[ j ] [ E_EXPLODE_POS ] [ 1 ], g_bankvaultData[ j ] [ E_EXPLODE_POS ] [ 2 ] ) && !g_bankvaultData[ j ] [ E_DISABLED ] && worldid == g_bankvaultData[ j ] [ E_WORLD ] )
|
|
{
|
|
if ( g_iTime > g_bankvaultData[ j ] [ E_TIMESTAMP ] )
|
|
{
|
|
g_bankvaultData[ j ] [ E_TIMESTAMP_CLOSE ] = g_iTime + 240; // time to close
|
|
g_bankvaultData[ j ] [ E_TIMESTAMP ] = g_iTime + 600; // time to restore
|
|
g_bankvaultData[ j ] [ E_DISABLED ] = true;
|
|
|
|
MoveDynamicObject( g_bankvaultData[ j ] [ E_OBJECT ], g_bankvaultData[ j ] [ E_OPEN_POS ] [ 0 ], g_bankvaultData[ j ] [ E_OPEN_POS ] [ 1 ], g_bankvaultData[ j ] [ E_OPEN_POS ] [ 2 ], 2.0, g_bankvaultData[ j ] [ E_OPEN_ROT ] [ 0 ], g_bankvaultData[ j ] [ E_OPEN_ROT ] [ 1 ], g_bankvaultData[ j ] [ E_OPEN_ROT ] [ 2 ] );
|
|
|
|
//GivePlayerExperience( playerid, E_TERRORIST );
|
|
GivePlayerScore( playerid, 3 );
|
|
GivePlayerWantedLevel( playerid, 24 );
|
|
ach_HandleBankBlown( playerid );
|
|
|
|
if ( j == VAULT_BOAT ) {
|
|
TriggerClosestCivilians( playerid, GetClosestRobberyNPC( getClosestRobberySafe( playerid ) ) );
|
|
}
|
|
|
|
SendGlobalMessage( -1, ""COL_GREY"[SERVER]"COL_WHITE" %s(%d) has destroyed the "COL_GREY"%s Vault{FFFFFF}!", ReturnPlayerName( playerid ), playerid, g_bankvaultData[ j ] [ E_NAME ] );
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
/* ** Commands ** */
|
|
CMD:banks( playerid, params[ ] )
|
|
{
|
|
erase( szBigString );
|
|
|
|
for( new i = 0, time = g_iTime; i < sizeof( g_bankvaultData ); i++ ) {
|
|
if ( g_bankvaultData[ i ] [ E_TIMESTAMP ] < time )
|
|
format( szBigString, sizeof( szBigString ), "%s"COL_GREY"%s"COL_WHITE"\t"COL_GREEN"Available To Rob!\n", szBigString, g_bankvaultData[ i ] [ E_NAME ] );
|
|
else
|
|
format( szBigString, sizeof( szBigString ), "%s"COL_GREY"%s"COL_WHITE"\t%s\n", szBigString, g_bankvaultData[ i ] [ E_NAME ], secondstotime( g_bankvaultData[ i ] [ E_TIMESTAMP ] - time ) );
|
|
}
|
|
ShowPlayerDialog( playerid, DIALOG_NULL, DIALOG_STYLE_TABLIST, "{FFFFFF}Banks", szBigString, "Okay", "" );
|
|
return 1;
|
|
}
|
|
|
|
/* ** Functions ** */
|
|
stock GetBankVaultWorld( city ) {
|
|
return g_bankvaultData[ city ] [ E_WORLD ];
|
|
}
|