diff --git a/gamemodes/sf-cnr.pwn b/gamemodes/sf-cnr.pwn index 7ae4203..94b0e43 100644 --- a/gamemodes/sf-cnr.pwn +++ b/gamemodes/sf-cnr.pwn @@ -13,7 +13,7 @@ */ #pragma compat 1 -// #pragma option -d3 +#pragma option -d3 #pragma dynamic 7200000 // #define DEBUG_MODE @@ -191,18 +191,6 @@ new stock Float: a_vipCoinRequirements[ ] = { 0.0, 500.0, 1500.0, 2500.0, 5000.0, 10000.0 } ; -/* ** Cities ** */ -#define ENABLE_CITY_LV true -#define ENABLE_CITY_LS true - -#define MAX_CITIES 3 - -#define CITY_SF 0 -#define CITY_LV 1 -#define CITY_LS 2 -#define CITY_DESERTS 3 -#define CITY_COUNTRY 4 - /* ** Progress Bars ** */ #define PROGRESS_CRACKING 0 #define PROGRESS_BRUTEFORCE 1 @@ -228,6 +216,17 @@ new stock #define JOB_BURGLAR ( 8 ) /* ** Class ID's ** */ +static const CLASS_NAMES [ ] [ ] = { "Civilian", "Police", "FBI", "Army", "CIA", "Paramedic", "Fireman" }; +static const CLASS_COLORS [ ] = { 0xC0C0C0FF, 0x3E7EFFFF, 0x0035FFFF, 0x954BFFFF, 0x191970FF, 0x4DFF4DFF, 0xA83434FF }; + +static CLASS_CIVILIAN_RANGE [ 2 ]; +static CLASS_POLICE_RANGE [ 2 ]; +static CLASS_FBI_RANGE [ 2 ]; +static CLASS_CIA_RANGE [ 2 ]; +static CLASS_FIRE_RANGE [ 2 ]; +static CLASS_MEDIC_RANGE [ 2 ]; +static CLASS_ARMY_RANGE; + #define CLASS_CIVILIAN ( 0 ) #define CLASS_POLICE ( 1 ) #define CLASS_FIREMAN ( 2 ) @@ -381,12 +380,13 @@ stock const ; /* ** Textdraw Data ** */ +new Text: g_classTextdrawBox[ sizeof( CLASS_NAMES ) ] = { Text: INVALID_TEXT_DRAW, ... }; +new Text: g_classTextdrawDescription[ sizeof( CLASS_NAMES ) ] = { Text: INVALID_TEXT_DRAW, ... }; +new Text: g_classTextdrawName[ sizeof( CLASS_NAMES ) ] = { Text: INVALID_TEXT_DRAW, ... }; + new Text: g_ClassBoxTD = Text: INVALID_TEXT_DRAW, - Text: g_ClassBoxTD1 = Text: INVALID_TEXT_DRAW, Text: g_ObjectLoadTD = Text: INVALID_TEXT_DRAW, - Text: p_ClassTitleTD [ MAX_PLAYERS ] = { Text: INVALID_TEXT_DRAW, ... }, - Text: p_ClassInfoTD [ MAX_PLAYERS ] = { Text: INVALID_TEXT_DRAW, ... }, Text: p_JailTimeTD [ MAX_PLAYERS ] = { Text: INVALID_TEXT_DRAW, ... }, Text: p_TrackPlayerTD [ MAX_PLAYERS ] = { Text: INVALID_TEXT_DRAW, ... }, Text: g_WebsiteTD = Text: INVALID_TEXT_DRAW, @@ -421,6 +421,7 @@ new Text: g_SlotMachineBoxTD [ 2 ] = { Text: INVALID_TEXT_DRAW, ... }, Text: g_TopDonorTD = Text: INVALID_TEXT_DRAW, Text: g_NotManyPlayersTD = Text: INVALID_TEXT_DRAW, + Text: g_ZoneOwnerTD [ MAX_PLAYERS ] = { Text: INVALID_TEXT_DRAW, ... }, // Player Textdraws PlayerText: p_LocationTD [ MAX_PLAYERS ] = { PlayerText: INVALID_TEXT_DRAW, ... }, @@ -527,13 +528,6 @@ stock const { 2295.62960, 2468.796, 10.8203, 90.000, 0, 0 }, { 1528.58340, -1677.49, 5.89060, 270.00, 0, 0 } } - - /*g_MayorSpawns[ MAX_CITIES ] [ E_RANDOM_SPAWNS ] = - { - { 354.7187, 172.4094, 1025.7964, 180.000, 3, 1 }, - { 354.7187, 172.4094, 1025.7964, 180.000, 3, 2 }, - { 354.7187, 172.4094, 1025.7964, 180.000, 3, 5 } - }*/ ; /* ** House System ** */ @@ -1168,23 +1162,6 @@ new ; /* ** Gang System ** */ -#define MAX_GANGS ( MAX_PLAYERS ) -#define TURF_TAKEOVER_TIME ( 60 ) -#define TAKEOVER_NEEDED_PEOPLE ( 3 ) -#define TURF_PAYOUT ( 1250 ) -#define INVALID_GANG_ID ( -1 ) -#define MAX_COLEADERS ( 3 ) - -enum E_ZONE_DATA -{ - Float: E_MIN_X, - Float: E_MIN_Y, - Float: E_MAX_X, - Float: E_MAX_Y, - E_GANG_OWNER, - E_COLOR -}; - enum e_gang_data { E_SQL_ID, @@ -1210,57 +1187,10 @@ enum E_GANG_LEAVE_REASON }; new - g_gangzoneData[ ] [ E_ZONE_DATA ] = - { - #if ENABLE_CITY_LV == true - // Las Venturas - { 2071.2890, 1201.171, 2217.773, 1368.16, INVALID_GANG_ID, COLOR_GANGZONE }, - { 2071.2890, 1646.484, 2129.882, 1719.72, INVALID_GANG_ID, COLOR_GANGZONE }, - { 1297.8515, 2100.585, 1394.531, 2197.26, INVALID_GANG_ID, COLOR_GANGZONE }, - { 2293.9453, 2238.281, 2416.992, 2402.34, INVALID_GANG_ID, COLOR_GANGZONE }, - { 1989.2578, 1508.789, 2012.695, 1573.24, INVALID_GANG_ID, COLOR_GANGZONE }, - { 1376.9531, 2603.515, 1488.281, 2671.87, INVALID_GANG_ID, COLOR_GANGZONE }, - { 2433.5937, 1863.281, 2494.140, 1962.89, INVALID_GANG_ID, COLOR_GANGZONE }, - { 2437.5000, 1261.718, 2517.578, 1306.64, INVALID_GANG_ID, COLOR_GANGZONE }, - { 1101.5625, 1205.078, 1177.734, 1361.32, INVALID_GANG_ID, COLOR_GANGZONE }, - { 2798.8281, 1222.656, 2859.375, 1382.81, INVALID_GANG_ID, COLOR_GANGZONE }, - #endif - - #if ENABLE_CITY_LS == true - { 2433.593, -1730.468, 2546.875, -1632.812, INVALID_GANG_ID, COLOR_GANGZONE }, - { 1867.187, -1265.625, 2062.500, -1140.625, INVALID_GANG_ID, COLOR_GANGZONE }, - { 1066.406, -1570.312, 1183.593, -1414.062, INVALID_GANG_ID, COLOR_GANGZONE }, - { 148.4375, -1902.343, 355.4687, -1777.343, INVALID_GANG_ID, COLOR_GANGZONE }, - { 664.0625, -1320.312, 789.0625, -1230.468, INVALID_GANG_ID, COLOR_GANGZONE }, - { 640.6250, -1582.031, 765.6250, -1421.875, INVALID_GANG_ID, COLOR_GANGZONE }, - { 2218.750, -1480.468, 2269.531, -1398.437, INVALID_GANG_ID, COLOR_GANGZONE }, - { 1832.031, -2164.062, 1957.031, -2066.406, INVALID_GANG_ID, COLOR_GANGZONE }, - { 1941.406, -1746.093, 2074.218, -1531.250, INVALID_GANG_ID, COLOR_GANGZONE }, - { 1675.781, -2003.906, 1843.750, -1871.093, INVALID_GANG_ID, COLOR_GANGZONE }, - #endif - - // San Fierro - { -2510.152, 576.531, -2392.935, 700.782, INVALID_GANG_ID, COLOR_GANGZONE }, - { -1476.562, 1481.25, -1345.315, 1516.40, INVALID_GANG_ID, COLOR_GANGZONE }, - { -2074.275, 578.905, -2010.937, 728.906, INVALID_GANG_ID, COLOR_GANGZONE }, - { -1495.312, 834.375, -1420.312, 1017.18, INVALID_GANG_ID, COLOR_GANGZONE }, - { -2756.252, 328.125, -2646.093, 431.251, INVALID_GANG_ID, COLOR_GANGZONE }, - { -2392.965, 75.1234, -2285.156, 236.718, INVALID_GANG_ID, COLOR_GANGZONE }, - { -1988.281, 859.375, -1906.250, 916.015, INVALID_GANG_ID, COLOR_GANGZONE }, - { -1988.281, 87.8906, -1931.640, 216.796, INVALID_GANG_ID, COLOR_GANGZONE }, - { -2528.320, 1529.29, -2285.156, 1584.96, INVALID_GANG_ID, COLOR_GANGZONE }, - { -1947.265, 1095.70, -1888.671, 1167.96, INVALID_GANG_ID, COLOR_GANGZONE } - }, - g_gangColors[ ] = - { + g_gangColors[ ] = { 0x99FF00FF, 0x00CC00FF, 0x009999FF, 0x0033CCFF, 0x330099FF, 0x660099FF, 0xCC0099FF }, - g_gangzoneID [ sizeof( g_gangzoneData ) ], - g_gangzoneAttacker [ sizeof( g_gangzoneData ) ] = { INVALID_GANG_ID, ... }, - g_gangzoneAttackCount [ sizeof( g_gangzoneData ) ], - g_gangzoneAttackTimeout [ sizeof( g_gangzoneData ) ], - Text: g_ZoneOwnerTD [ sizeof( g_gangzoneData ) ] = { Text: INVALID_TEXT_DRAW, ... }, g_gangData [ MAX_GANGS ] [ e_gang_data ], p_GangID [ MAX_PLAYERS ], @@ -3129,7 +3059,6 @@ new p_InfoLabelString [ MAX_PLAYERS ] [ 32 ], bool: p_inMovieMode [ MAX_PLAYERS char ], bool: p_inCIA [ MAX_PLAYERS char ], - // bool: p_inMayor [ MAX_PLAYERS char ], p_AntiEmpSpam [ MAX_PLAYERS ], bool: p_inPaintBall [ MAX_PLAYERS char ], p_Scissors [ MAX_PLAYERS ], @@ -3398,10 +3327,13 @@ public OnGameModeInit() AllowInteriorWeapons( 0 ); EnableStuntBonusForAll( 0 ); DisableInteriorEnterExits( ); + + #if defined DEBUG_MODE + mysql_log( LOG_ERROR | LOG_WARNING ); + #endif // Streamer_SetVisibleItems( STREAMER_TYPE_OBJECT, 950 ); // MapAndreas_Init( MAP_ANDREAS_MODE_MINIMAL ); - // mysql_log( LOG_ALL ); //SetBannedWeapons( 17, 35, 36, 37, 38, 39, 44, 45 ); //EnableVehicleFriendlyFire( ); @@ -3442,7 +3374,7 @@ public OnGameModeInit() AddServerVariable( "connectsong", "http://files.irresistiblegaming.com/game_sounds/Stevie%20Wonder%20-%20Skeletons.mp3", GLOBAL_VARTYPE_STRING ); /* ** CIVILIAN ** */ - AddPlayerClass( 119, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 0 + CLASS_CIVILIAN_RANGE[ 0 ] = AddPlayerClass( 119, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 0 AddPlayerClass( 289, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 1 AddPlayerClass( 273, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 2 AddPlayerClass( 271, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 3 @@ -3482,7 +3414,6 @@ public OnGameModeInit() AddPlayerClass( 48, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 37 AddPlayerClass( 59, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 38 AddPlayerClass( 60, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 39 - AddPlayerClass( 63, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 40 AddPlayerClass( 64, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 41 AddPlayerClass( 152, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 42 @@ -3492,45 +3423,41 @@ public OnGameModeInit() AddPlayerClass( 134, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 46 AddPlayerClass( 100, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 47 AddPlayerClass( 101, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 48 - AddPlayerClass( 137, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 49 + CLASS_CIVILIAN_RANGE[ 1 ] = AddPlayerClass( 137, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 49 /* ** FBI ** */ - AddPlayerClass( 286, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 50 + CLASS_FBI_RANGE[ 0 ] = AddPlayerClass( 286, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 50 AddPlayerClass( 71, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 51 - AddPlayerClass( 285, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 52 + CLASS_FBI_RANGE[ 1 ] = AddPlayerClass( 285, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 52 /* ** ARMY ** */ - AddPlayerClass( 287, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 53 + CLASS_ARMY_RANGE = AddPlayerClass( 287, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 53 /* ** CIA ** */ - AddPlayerClass( 303, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 54 + CLASS_CIA_RANGE[ 0 ] = AddPlayerClass( 303, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 54 AddPlayerClass( 304, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 55 - AddPlayerClass( 305, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 56 + CLASS_CIA_RANGE[ 1 ] = AddPlayerClass( 305, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 56 /* ** FIRE ** */ - AddPlayerClass( 277, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 57 + CLASS_FIRE_RANGE[ 0 ] = AddPlayerClass( 277, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 57 AddPlayerClass( 278, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 58 - AddPlayerClass( 279, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 59 + CLASS_FIRE_RANGE[ 1 ] = AddPlayerClass( 279, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 59 /* ** MEDIC ** */ - AddPlayerClass( 274, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 60 + CLASS_MEDIC_RANGE[ 0 ] = AddPlayerClass( 274, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 60 AddPlayerClass( 275, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 61 AddPlayerClass( 276, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 62 - AddPlayerClass( 308, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 63 - - /* ** MAYOR ** */ - // AddPlayerClass( 187, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 64 - // AddPlayerClass( 148, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 65 + CLASS_MEDIC_RANGE[ 1 ] = AddPlayerClass( 308, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 63 /* ** POLICE ** */ - AddPlayerClass( 265, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 66 + CLASS_POLICE_RANGE[ 0 ] = AddPlayerClass( 265, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 66 AddPlayerClass( 266, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 67 AddPlayerClass( 267, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 68 AddPlayerClass( 306, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 69 AddPlayerClass( 280, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 70 AddPlayerClass( 281, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 71 AddPlayerClass( 284, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 72 - AddPlayerClass( 307, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 73 + CLASS_POLICE_RANGE[ 1 ] = AddPlayerClass( 307, default_X, default_Y, default_Z, default_Angle, 0, 0, 0, 0, 0, 0 ); // 73 /* ** Discord configuration ** */ #if ENABLE_DISCORD == true @@ -5589,12 +5516,9 @@ stock GetGangCapturedTurfs( gangid ) z, c; - for( z = 0; z < sizeof( g_gangzoneData ); z++ ) - { - if ( g_gangzoneData[ z ] [ E_GANG_OWNER ] != INVALID_GANG_ID && g_gangzoneData[ z ] [ E_GANG_OWNER ] == gangid ) - c++; + for( z = 0; z < MAX_TURFS; z++ ) if ( g_gangTurfData[ z ] [ E_OWNER ] != INVALID_GANG_ID && g_gangTurfData[ z ] [ E_OWNER ] == gangid ) { + c++; } - return c; } @@ -5631,17 +5555,23 @@ public ZoneTimer( ) foreach(new g : gangs) { new - iPlayers = GetOnlineGangMembers( g ); + afk_members, online_members = GetOnlineGangMembers( g, .afk_members = afk_members ); - if ( iPlayers >= TAKEOVER_NEEDED_PEOPLE ) + if ( online_members >= TAKEOVER_NEEDED_PEOPLE ) { new - iCaptured = GetGangCapturedTurfs( g ) * TURF_PAYOUT; + profit = 0; - g_gangData[ g ] [ E_BANK ] += iCaptured; + for( new zoneid = 0; zoneid < MAX_TURFS; zoneid++ ) if ( g_gangTurfData[ zoneid ] [ E_OWNER ] != INVALID_GANG_ID && g_gangTurfData[ zoneid ] [ E_OWNER ] == g ) { + profit += Zone_GetProfitability( zoneid, online_members - afk_members ); + } - if ( iCaptured ) - SaveGangData( g ), SendClientMessageToGang( g, g_gangData[ g ] [ E_COLOR ], "[GANG] "COL_GOLD"%s"COL_WHITE" has been earned from territories and deposited in the gang bank account.", number_format( iCaptured ) ); + g_gangData[ g ] [ E_BANK ] += profit; + + if ( profit > 0 ) { + SaveGangData( g ); + SendClientMessageToGang( g, g_gangData[ g ] [ E_COLOR ], "[GANG] "COL_GOLD"%s"COL_WHITE" has been earned from territories and deposited in the gang bank account.", number_format( profit ) ); + } } } @@ -5661,32 +5591,40 @@ public ZoneTimer( ) } } } - - // Update All Map Tax Labels - // mysql_function_query( dbHandle, "SELECT `MAP_TAX`.`ID`,`MAP_TAX`.`USER_ID`,`USERS`.`NAME` as `USERNAME` FROM `MAP_TAX` INNER JOIN `USERS` ON `USERS`.`ID` = `MAP_TAX`.`USER_ID`", true, "UpdateMapTaxNames", "" ); } new oCount = 0; - for( new z; z < sizeof( g_gangzoneData ); z++ ) + for( new z; z < MAX_TURFS; z++ ) { if ( g_gangzoneAttacker[ z ] != INVALID_GANG_ID ) { - if ( GetPlayersInGangZone( z, g_gangzoneAttacker[ z ] ) >= TAKEOVER_NEEDED_PEOPLE ) + new + attacker_member_count = GetPlayersInGangZone( z, g_gangzoneAttacker[ z ] ); + + if ( attacker_member_count >= TAKEOVER_NEEDED_PEOPLE ) { - if ( g_gangzoneData[ z ] [ E_GANG_OWNER ] != INVALID_GANG_ID ) - { - oCount = GetPlayersInGangZone( z, g_gangzoneData[ z ] [ E_GANG_OWNER ] ); - } - if ( g_gangzoneAttackCount[ z ] < TURF_TAKEOVER_TIME && oCount == 0 ) + if ( g_gangTurfData[ z ] [ E_OWNER ] != INVALID_GANG_ID ) + oCount = GetPlayersInGangZone( z, g_gangTurfData[ z ] [ E_OWNER ] ); + + new + attacker_time_required = -5 * attacker_member_count + TURF_TAKEOVER_TIME; + + if ( attacker_time_required < TURF_TAKEOVER_TIME_MIN ) + attacker_time_required = TURF_TAKEOVER_TIME_MIN; + + if ( g_gangzoneAttackCount[ z ] < attacker_time_required && oCount == 0 ) { + foreach ( new i : Player ) if ( p_GangID[ i ] == g_gangzoneAttacker[ z ] && IsPlayerInDynamicArea( i, g_gangTurfData[ z ] [ E_AREA ] ) ) { + ShowPlayerHelpDialog( i, 1500, "~r~Control~w~ the area for %d seconds!", attacker_time_required - g_gangzoneAttackCount[ z ] ); + } g_gangzoneAttackCount[ z ] ++; g_gangzoneAttackTimeout[ z ] = 0; continue; } - else if ( g_gangzoneAttackCount[ z ] >= TURF_TAKEOVER_TIME ) + else if ( g_gangzoneAttackCount[ z ] >= attacker_time_required ) { static szLocation[ MAX_ZONE_NAME ], szCity[ MAX_ZONE_NAME ]; @@ -5694,131 +5632,134 @@ public ZoneTimer( ) Get2DCity ( szCity, g_gangzoneData[ z ] [ E_MIN_X ], g_gangzoneData[ z ] [ E_MIN_Y ] ); GetZoneFromCoordinates ( szLocation, g_gangzoneData[ z ] [ E_MIN_X ], g_gangzoneData[ z ] [ E_MIN_Y ] ); - GangZoneStopFlashForAll ( g_gangzoneID[ z ] ); - GangZoneShowForAll ( g_gangzoneID[ z ], setAlpha( g_gangData[ g_gangzoneAttacker[ z ] ] [ E_COLOR ], 0x80 ) ); + GangZoneStopFlashForAll ( g_gangTurfData[ z ] [ E_ID ] ); + GangZoneShowForAll ( g_gangTurfData[ z ] [ E_ID ], setAlpha( g_gangData[ g_gangzoneAttacker[ z ] ] [ E_COLOR ], 0x80 ) ); SendClientMessageToGang ( g_gangzoneAttacker[ z ], g_gangData[ g_gangzoneAttacker[ z ] ] [ E_COLOR ], "[GANG]{FFFFFF} We have captured a turf near %s in %s!", szLocation, szCity ); - // Give Gangmembers XP & Wanted - foreach(new d : Player) - { - if ( IsPlayerSpawned( d ) && p_Class[ d ] == CLASS_CIVILIAN && p_GangID[ d ] == g_gangzoneAttacker[ z ] && !p_inPaintBall{ d } ) - { - GivePlayerScore( d, 2, .multiplier = 0.5 ); - GivePlayerWantedLevel( d, 6 ); - } - } - - g_gangzoneData[ z ] [ E_COLOR ] = setAlpha( g_gangData[ g_gangzoneAttacker[ z ] ] [ E_COLOR ], 0x80 ); - g_gangzoneData[ z ] [ E_GANG_OWNER ] = g_gangzoneAttacker[ z ]; + g_gangTurfData[ z ] [ E_COLOR ] = setAlpha( g_gangData[ g_gangzoneAttacker[ z ] ] [ E_COLOR ], 0x80 ); + g_gangTurfData[ z ] [ E_OWNER ] = g_gangzoneAttacker[ z ]; g_gangzoneAttacker [ z ] = INVALID_GANG_ID; g_gangzoneAttackCount [ z ] = 0; g_gangzoneAttackTimeout [ z ] = 0; + + // Give Gangmembers XP & Wanted + foreach(new d : Player) + { + new in_area = IsPlayerInDynamicArea( d, g_gangTurfData[ z ] [ E_AREA ] ); + + if ( in_area ) + TextDrawSetString( g_ZoneOwnerTD[ d ], sprintf( "~r~~h~(TERRITORY)~n~~w~~h~%s", ReturnGangName( g_gangTurfData[ z ] [ E_OWNER ] ) ) ); + + if ( IsPlayerSpawned( d ) && p_Class[ d ] == CLASS_CIVILIAN && p_GangID[ d ] == g_gangTurfData[ z ] [ E_OWNER ] && ! p_inPaintBall{ d } ) + { + PlayerPlaySound( d, 36205, 0.0, 0.0, 0.0 ); + GivePlayerScore( d, in_area ? 2 : 1, .multiplier = 0.5 ); + GivePlayerWantedLevel( d, 6 ); + } + } } } else { if ( !g_gangzoneAttackTimeout[ z ] ) { g_gangzoneAttackTimeout[ z ] = g_iTime + 10; - SendClientMessageToGang( g_gangzoneAttacker[ z ], g_gangData[ g_gangzoneAttacker[ z ] ] [ E_COLOR ], "[GANG]{FFFFFF} Warning! You have 5 seconds to have three gang members in the area until the turf war is stopped!" ); + SendClientMessageToGang( g_gangzoneAttacker[ z ], g_gangData[ g_gangzoneAttacker[ z ] ] [ E_COLOR ], "[GANG]{FFFFFF} You have 10 seconds to get back in the area until the turf war is stopped!" ); } else if ( g_iTime > g_gangzoneAttackTimeout[ z ] ) { g_gangzoneAttackCount[ z ] = 0; g_gangzoneAttackTimeout[ z ] = 0; - GangZoneStopFlashForAll( g_gangzoneID[ z ] ); + GangZoneStopFlashForAll( g_gangTurfData[ z ] [ E_ID ] ); g_gangzoneAttacker[ z ] = INVALID_GANG_ID; } } } - foreach(new playerid : Player) + } + + // Looping every 1000 MS + foreach(new playerid : Player) + { + if ( ! p_PlayerLogged{ playerid } ) + continue; + + SetPlayerWeather( playerid, ( GetPlayerInterior( playerid ) || GetPlayerVirtualWorld( playerid ) ) ? 1 : g_WorldWeather ); + UpdatePlayerTime( playerid ); + + // Remove Anti-Spawn Kill + if ( p_AntiSpawnKillEnabled{ playerid } && g_iTime > p_AntiSpawnKill[ playerid ] ) { - if ( !p_PlayerLogged{ playerid } ) - continue; + DisableRemoteVehicleCollisions( playerid, p_AdminOnDuty{ playerid } ); + SetPlayerHealth( playerid, p_AdminOnDuty{ playerid } == true ? float( INVALID_PLAYER_ID ) : 100.0 ); + Delete3DTextLabel( p_SpawnKillLabel[ playerid ] ); + p_SpawnKillLabel[ playerid ] = Text3D: INVALID_3DTEXT_ID; + p_AntiSpawnKillEnabled{ playerid } = false; + } - if ( GetPlayerInterior( playerid ) == 0 && GetPlayerVirtualWorld( playerid ) == 0 && !p_inMovieMode{ playerid } ) - { - if ( IsPlayerInArea( playerid, g_gangzoneData[ z ] [ E_MIN_X ], g_gangzoneData[ z ] [ E_MAX_X ], g_gangzoneData[ z ] [ E_MIN_Y ], g_gangzoneData[ z ] [ E_MAX_Y ] ) ) - { - format( szNormalString, sizeof( szNormalString ), "~r~~h~(TERRITORY)~n~~w~~h~%s", ReturnGangName( g_gangzoneData[ z ] [ E_GANG_OWNER ] ) ); - TextDrawSetString( g_ZoneOwnerTD[ z ], szNormalString ); - TextDrawShowForPlayer( playerid, g_ZoneOwnerTD[ z ] ); - } - else - { - TextDrawHideForPlayer( playerid, g_ZoneOwnerTD[ z ] ); - } - } - else TextDrawHideForPlayer( playerid, g_ZoneOwnerTD[ z ] ); - - // OTHER CODE THAT DO NOT REQUIRE ZONE LOOP - if ( !z ) // I'm an efficient cunt. + // Increment Variables Whilst Not AFK + if ( !IsPlayerAFK( playerid ) ) // New addition + { + // Increase Time Online + switch( ++ p_Uptime[ playerid ] ) { - SetPlayerWeather( playerid, ( GetPlayerInterior( playerid ) || GetPlayerVirtualWorld( playerid ) ) ? 1 : g_WorldWeather ); - UpdatePlayerTime( playerid ); + //case 300: ShowAchievement( playerid, "You have been online for ~r~5~w~~h~ minutes!", 1 ); + case 1200: ShowAchievement( playerid, "You have been online for ~r~20~w~~h~ minutes!", 2 ); + case 3600: ShowAchievement( playerid, "You have been online for ~r~1~w~~h~ hour!", 4 ); + case 18000: ShowAchievement( playerid, "You have been online for ~r~5~w~~h~ hours!", 6 ); + case 36000: ShowAchievement( playerid, "You have been online for ~r~10~w~~h~ hours!", 8 ); + case 54000: ShowAchievement( playerid, "You have been online for ~r~15~w~~h~ hours!", 10 ); + case 72000: ShowAchievement( playerid, "You have been online for ~r~20~w~~h~ hours!", 12 ); + case 86400: ShowAchievement( playerid, "You have been online for ~r~1~w~~h~ day!", 15 ); + } - if ( g_iTime > p_AntiSpawnKill[ playerid ] && p_AntiSpawnKillEnabled{ playerid } ) - { - DisableRemoteVehicleCollisions( playerid, p_AdminOnDuty{ playerid } ); - SetPlayerHealth( playerid, p_AdminOnDuty{ playerid } == true ? float( INVALID_PLAYER_ID ) : 100.0 ); - Delete3DTextLabel( p_SpawnKillLabel[ playerid ] ); - p_SpawnKillLabel[ playerid ] = Text3D: INVALID_3DTEXT_ID; - p_AntiSpawnKillEnabled{ playerid } = false; - } + // Increase Irresistible Coins (1/20 = cred/min) + if ( GetPlayerKeys( playerid, iKeys, iUpDownKeys, iLeftRightKeys ) && ! IsPlayerOnRoulette( playerid ) && ! IsPlayerOnSlotMachine( playerid ) && GetPlayerVehicleSeat( playerid ) <= 0 ) + { + if ( iKeys != 0 || iUpDownKeys != 0 || iLeftRightKeys != 0 ) { // GetPlayerScore( playerid ) > 10 && - // Increment Variables Whilst Not AFK - if ( !IsPlayerAFK( playerid ) ) // New addition - { - // Increase Time Online - p_Uptime[ playerid ]++; + new + Float: iCoinGenRate = 35.0; - // Increase Irresistible Coins (1/20 = cred/min) - if ( GetPlayerKeys( playerid, iKeys, iUpDownKeys, iLeftRightKeys ) && ! IsPlayerOnRoulette( playerid ) && ! IsPlayerOnSlotMachine( playerid ) && GetPlayerVehicleSeat( playerid ) <= 0 ) - { - if ( iKeys != 0 || iUpDownKeys != 0 || iLeftRightKeys != 0 ) { // GetPlayerScore( playerid ) > 10 && + // VIP check + if ( p_VIPLevel[ playerid ] >= VIP_DIAMOND ) + iCoinGenRate *= 0.75; // Reduce by 25% if Diamond - new - Float: iCoinGenRate = 35.0; + else if ( p_VIPLevel[ playerid ] == VIP_PLATINUM ) + iCoinGenRate *= 0.90; // Reduce by 10% if Diamond - // VIP check - if ( p_VIPLevel[ playerid ] >= VIP_DIAMOND ) - iCoinGenRate *= 0.75; // Reduce by 25% if Diamond + // Happy Hour + if ( g_HappyHour && ( 0.0 <= g_HappyHourRate <= 0.25 ) ) + iCoinGenRate *= 1.0 - g_HappyHourRate; - else if ( p_VIPLevel[ playerid ] == VIP_PLATINUM ) - iCoinGenRate *= 0.90; // Reduce by 10% if Diamond - - // Happy Hour - if ( g_HappyHour && ( 0.0 <= g_HappyHourRate <= 0.25 ) ) - iCoinGenRate *= 1.0 - g_HappyHourRate; - - p_IrresistibleCoins[ playerid ] += ( 1.0 / iCoinGenRate ) / 60.0; // Prev 25.92 - } - } - } - - // CIA Visible On Radar after firing a shot - if ( p_VisibleOnRadar[ playerid ] != 0 && p_VisibleOnRadar[ playerid ] < g_iTime ) - SetPlayerColorToTeam( playerid ), p_VisibleOnRadar[ playerid ] = 0; - - // Player Online Achievemnt - switch( p_Uptime[ playerid ] ) - { - //case 300: ShowAchievement( playerid, "You have been online for ~r~5~w~~h~ minutes!", 1 ); - case 1200: ShowAchievement( playerid, "You have been online for ~r~20~w~~h~ minutes!", 2 ); - case 3600: ShowAchievement( playerid, "You have been online for ~r~1~w~~h~ hour!", 4 ); - case 18000: ShowAchievement( playerid, "You have been online for ~r~5~w~~h~ hours!", 6 ); - case 36000: ShowAchievement( playerid, "You have been online for ~r~10~w~~h~ hours!", 8 ); - case 54000: ShowAchievement( playerid, "You have been online for ~r~15~w~~h~ hours!", 10 ); - case 72000: ShowAchievement( playerid, "You have been online for ~r~20~w~~h~ hours!", 12 ); - case 86400: ShowAchievement( playerid, "You have been online for ~r~1~w~~h~ day!", 15 ); + p_IrresistibleCoins[ playerid ] += ( 1.0 / iCoinGenRate ) / 60.0; // Prev 25.92 } } } + + // CIA Visible On Radar after firing a shot + if ( p_VisibleOnRadar[ playerid ] != 0 && p_VisibleOnRadar[ playerid ] < g_iTime ) + SetPlayerColorToTeam( playerid ), p_VisibleOnRadar[ playerid ] = 0; } return 1; } +public OnPlayerEnterGangZone( playerid, zoneid ) +{ + if ( ! p_inMovieMode{ playerid } ) + { + // if ( p_GangID[ playerid ] != INVALID_GANG_ID && g_gangTurfData[ zoneid ] [ E_OWNER ] == INVALID_GANG_ID ) ShowPlayerHelpDialog( playerid, 2000, "You can take over this turf by typing ~g~/takeover" ); + TextDrawSetString( g_ZoneOwnerTD[ playerid ], sprintf( "~r~~h~(TERRITORY)~n~~w~~h~%s", ReturnGangName( g_gangTurfData[ zoneid ] [ E_OWNER ] ) ) ); + } + return 1; +} + +public OnPlayerExitGangZone( playerid, zoneid ) +{ + TextDrawSetString( g_ZoneOwnerTD[ playerid ], "_" ); + return 1; +} + public OnRulesHTTPResponse( index, response_code, data[ ] ) { if ( response_code == 200 ) @@ -5851,11 +5792,10 @@ public OnPlayerRequestClass( playerid, classid ) { TextDrawHideForPlayer( playerid, g_AdminLogTD ); TextDrawShowForPlayer( playerid, g_ClassBoxTD ); - TextDrawShowForPlayer( playerid, g_ClassBoxTD1 ); - TextDrawShowForPlayer( playerid, p_ClassTitleTD[ playerid ] ); TextDrawHideForPlayer( playerid, g_WebsiteTD ); PlayerTextDrawHide( playerid, p_WantedLevelTD[ playerid ] ); TextDrawHideForPlayer( playerid, g_MotdTD ); + TextDrawHideForPlayer( playerid, g_ZoneOwnerTD[ playerid ] ); TextDrawHideForPlayer( playerid, g_NotManyPlayersTD ); TextDrawHideForPlayer( playerid, p_FPSCounterTD[ playerid ] ); TextDrawHideForPlayer( playerid, g_AdminOnDutyTD ); @@ -5863,7 +5803,6 @@ public OnPlayerRequestClass( playerid, classid ) PlayerTextDrawHide( playerid, p_LocationTD[ playerid ] ); PlayerTextDrawHide( playerid, p_PlayerRankTD[ playerid ] ); PlayerTextDrawHide( playerid, p_PlayerRankTextTD[ playerid ] ); - TextDrawShowForPlayer( playerid, p_ClassInfoTD[ playerid ] ); KillTimer( p_TrackingTimer[ playerid ] ); p_TrackingTimer[ playerid ] = INVALID_TIMER_ID; TextDrawHideForPlayer( playerid, p_TrackPlayerTD[ playerid ] ); @@ -5879,137 +5818,127 @@ public OnPlayerRequestClass( playerid, classid ) p_MoneyBag{ playerid } = false; RemovePlayerAttachedObject( playerid, 1 ); - SetPlayerPos( playerid, -1971.1536, 129.4870, 27.6875 ); - SetPlayerInterior( playerid, 0); - SetPlayerFacingAngle( playerid, 90.0 ); + // SetPlayerPos( playerid, -1971.1536, 129.4870, 27.6875 ); + // SetPlayerFacingAngle( playerid, 90.0 ); + SetPlayerPos( playerid, 229.613998, 87.164001, 1005.039978 ); + SetPlayerFacingAngle( playerid, -90.000000 ); + SetPlayerInterior( playerid, 0 ); + SetPlayerVirtualWorld( playerid, 0 ); //SetPlayerCameraPos( playerid, -1974.1431, 133.3700, 29.7107 ); //SetPlayerCameraLookAt( playerid, -1970.6431, 129.3700, 28.2107 ); if ( p_ClassSelection{ playerid } == false ) { - InterpolateCameraPos( playerid, -1976.4252, 119.9899, 30.0, -1974.0302, 133.0427, 27.6940, 10000, CAMERA_MOVE ); - InterpolateCameraLookAt( playerid, -1974.0302,133.0427,27.6940, -1971.1536,129.4870,27.6875, 10000, CAMERA_MOVE ); + static const Float: START_POS[ 3 ] = { 243.5, 87.23, 1005.9 }; + static const Float: FINAL_POS[ 3 ] = { 231.9, 87.23, 1005.9 }; + + InterpolateCameraPos( playerid, START_POS[ 0 ], START_POS[ 1 ], START_POS[ 2 ], FINAL_POS[ 0 ], FINAL_POS[ 1 ], FINAL_POS[ 2 ], 17500, CAMERA_MOVE ); + InterpolateCameraLookAt( playerid, FINAL_POS[ 0 ], FINAL_POS[ 1 ], FINAL_POS[ 2 ], FINAL_POS[ 0 ] - 0.4, FINAL_POS[ 1 ], FINAL_POS[ 2 ] - 0.05, 15000, CAMERA_MOVE ); + + // InterpolateCameraPos( playerid, -1976.4252, 119.9899, 30.0, -1974.0302, 133.0427, 27.6940, 10000, CAMERA_MOVE ); + // InterpolateCameraLookAt( playerid, -1974.0302,133.0427,27.6940, -1971.1536,129.4870,27.6875, 10000, CAMERA_MOVE ); p_ClassSelection{ playerid } = true; } - //ApplyAnimation( playerid, "FOOD", "FF_Sit_Look", 4.0, 1, 0, 0, 0, 0 ); - ApplyAnimation( playerid, "MISC", "SEAT_TALK_02", 2.0, 1, 0, 0, 0, 0 ); + SetPlayerAttachedObject( playerid, 1, 19560, 6, 0.084999, 0.060998, -0.164999, 3.8, 81.6001, -19.3, .materialcolor1 = 0xFF000000 ); + Streamer_Update( playerid, STREAMER_TYPE_OBJECT ); + + // ApplyAnimation( playerid, "MISC", "SEAT_TALK_02", 2.0, 1, 0, 0, 0, 0 ); + if ( GetPlayerSpecialAction( playerid ) != SPECIAL_ACTION_CARRY ) { + TogglePlayerControllable( playerid, 0 ); + SetPlayerSpecialAction( playerid, SPECIAL_ACTION_CARRY ); + } p_Spawned { playerid } = false; p_InfectedHIV { playerid } = false; - switch( classid ) + if ( CLASS_CIVILIAN_RANGE[ 0 ] <= classid <= CLASS_CIVILIAN_RANGE[ 1 ] ) + { + p_Class[ playerid ] = ( CLASS_CIVILIAN ); + //SetPlayerTeam( playerid, NO_TEAM ); + SetPlayerColorToTeam( playerid ); + p_inFBI{ playerid } = false; + p_inArmy{ playerid } = false; + p_inCIA{ playerid } = false; + ShowPlayerClassTextdraw( playerid, 0 ); + } + else if ( CLASS_POLICE_RANGE[ 0 ] <= classid <= CLASS_POLICE_RANGE[ 1 ] ) + { + p_Class[ playerid ] = ( CLASS_POLICE ); + SetPlayerColor( playerid, COLOR_POLICE ); + //SetPlayerTeam( playerid, CLASS_POLICE ); + p_inFBI{ playerid } = false; + p_inArmy{ playerid } = false; + p_inCIA{ playerid } = false; + + ShowPlayerClassTextdraw( playerid, 1 ); + } + else if ( CLASS_FBI_RANGE[ 0 ] <= classid <= CLASS_FBI_RANGE[ 1 ] ) + { + p_Class[ playerid ] = ( CLASS_POLICE ); + //SetPlayerTeam( playerid, CLASS_POLICE ); + SetPlayerColor( playerid, COLOR_FBI ); + p_inFBI{ playerid } = true; + p_inArmy{ playerid } = false; + p_inCIA{ playerid } = false; + ShowPlayerClassTextdraw( playerid, 2 ); + } + else if ( classid == CLASS_ARMY_RANGE ) + { + p_Class[ playerid ] = ( CLASS_POLICE ); + SetPlayerColor( playerid, COLOR_ARMY ); + //SetPlayerTeam( playerid, CLASS_POLICE ); + p_inFBI{ playerid } = true; + p_inArmy{ playerid } = true; + p_inCIA{ playerid } = true; + ShowPlayerClassTextdraw( playerid, 3 ); + } + else if ( CLASS_CIA_RANGE[ 0 ] <= classid <= CLASS_CIA_RANGE[ 1 ] ) + { + p_Class[ playerid ] = ( CLASS_POLICE ); + SetPlayerColor( playerid, COLOR_CIA ); + //SetPlayerTeam( playerid, CLASS_POLICE ); + p_inFBI{ playerid } = true; + p_inArmy{ playerid } = false; + p_inCIA{ playerid } = true; + ShowPlayerClassTextdraw( playerid, 4 ); + } + else if ( CLASS_FIRE_RANGE[ 0 ] <= classid <= CLASS_FIRE_RANGE[ 1 ] ) { - case 0..49: - { - p_Class[ playerid ] = ( CLASS_CIVILIAN ); - //SetPlayerTeam( playerid, NO_TEAM ); - SetPlayerColorToTeam( playerid ); - p_inFBI{ playerid } = false; - p_inArmy{ playerid } = false; - p_inCIA{ playerid } = false; - // p_inMayor{ playerid } = false; - - TextDrawSetString( p_ClassInfoTD[ playerid ], "~g~~h~CLASS INFORMATION:~w~~n~> Select different types of Jobs~n~> Can rob places for score~n~> Can team up with players" ); - TextDrawSetString( p_ClassTitleTD[ playerid ], "~g~~h~CLASS NAME:~w~ Civilian" ); - } - case 50..52: - { - p_Class[ playerid ] = ( CLASS_POLICE ); - //SetPlayerTeam( playerid, CLASS_POLICE ); - SetPlayerColor( playerid, COLOR_FBI ); - p_inFBI{ playerid } = true; - p_inArmy{ playerid } = false; - p_inCIA{ playerid } = false; - // p_inMayor{ playerid } = false; - - TextDrawSetString( p_ClassInfoTD[ playerid ], "~g~~h~CLASS INFORMATION:~w~~n~> Protect the City from criminals~n~> Has access to many features~n~> Can call enforcements~n~> Can jail/arrest people~n~> Can set roadblocks on roads~n~> Can set spike traps~n~> Needs ~r~10000~w~ XP or more" ); - TextDrawSetString( p_ClassTitleTD[ playerid ], "~g~~h~CLASS NAME:~w~~n~Federal Bureau of Investigation" ); - } - case 53: - { - p_Class[ playerid ] = ( CLASS_POLICE ); - SetPlayerColor( playerid, COLOR_ARMY ); - //SetPlayerTeam( playerid, CLASS_POLICE ); - p_inFBI{ playerid } = true; - p_inArmy{ playerid } = true; - p_inCIA{ playerid } = true; - // p_inMayor{ playerid } = false; - - TextDrawSetString( p_ClassInfoTD[ playerid ], "~g~~h~CLASS INFORMATION:~w~~n~> Protect the City from criminals~n~> Has access to many features~n~> Can call enforcements~n~> Can jail/arrest people~n~> Can set roadblocks on roads~n~> Can set spike traps~n~> Can use strong air support~n~> Needs ~r~20000~w~ XP or more" ); - TextDrawSetString( p_ClassTitleTD[ playerid ], "~g~~h~CLASS NAME:~w~~n~San Fierro Army" ); - } - case 54..56: - { - p_Class[ playerid ] = ( CLASS_POLICE ); - SetPlayerColor( playerid, COLOR_CIA ); - //SetPlayerTeam( playerid, CLASS_POLICE ); - p_inFBI{ playerid } = true; - p_inArmy{ playerid } = false; - p_inCIA{ playerid } = true; - // p_inMayor{ playerid } = false; - - TextDrawSetString( p_ClassInfoTD[ playerid ], "~g~~h~CLASS INFORMATION:~w~~n~> Protect the City from criminals~n~> Has access to many features~n~> Can call enforcements~n~> Can jail/arrest people~n~> Can set roadblocks on roads~n~> Can set spike traps~n~> Can turn electronic devices off~n~> Needs ~r~15000~w~ XP or more" ); - TextDrawSetString( p_ClassTitleTD[ playerid ], "~g~~h~CLASS NAME:~w~~n~Central Intelligence Agency" ); - } - case 57..59: - { - p_Class[ playerid ] = ( CLASS_FIREMAN ); - SetPlayerColor( playerid, COLOR_FIREMAN ); - //SetPlayerTeam( playerid, NO_TEAM ); - p_inFBI{ playerid } = false; - p_inArmy{ playerid } = false; - p_inCIA{ playerid } = false; - // p_inMayor{ playerid } = false; - - TextDrawSetString( p_ClassInfoTD[ playerid ], "~g~~h~CLASS INFORMATION:~w~~n~> Protect the City from fires~n~> Can extinguish fires~n~> Needs ~r~1000~w~ XP or more" ); - TextDrawSetString( p_ClassTitleTD[ playerid ], "~g~~h~CLASS NAME:~w~ Fire Man" ); - } - case 60..63: - { - p_Class[ playerid ] = ( CLASS_MEDIC ); - SetPlayerColor( playerid, COLOR_MEDIC ); - //SetPlayerTeam( playerid, NO_TEAM ); - p_inFBI{ playerid } = false; - p_inArmy{ playerid } = false; - p_inCIA{ playerid } = false; - // p_inMayor{ playerid } = false; - - TextDrawSetString( p_ClassInfoTD[ playerid ], "~g~~h~CLASS INFORMATION:~w~~n~> Can cure diseases~n~> Can heal players~n~> Needs ~r~2000~w~ XP or more" ); - TextDrawSetString( p_ClassTitleTD[ playerid ], "~g~~h~CLASS NAME:~w~ Paramedic" ); - } - /*case 64..65: - { - p_Class[ playerid ] = ( CLASS_POLICE ); - SetPlayerColor( playerid, COLOR_MAYOR ); - //SetPlayerTeam( playerid, CLASS_POLICE ); - p_inFBI{ playerid } = false; - p_inArmy{ playerid } = false; - p_inCIA{ playerid } = false; - p_inMayor{ playerid } = true; - - TextDrawSetString( p_ClassInfoTD[ playerid ], "~g~~h~CLASS INFORMATION:~w~~n~> Enforces police agenda~n~> Dictates the law in the game~n~> Can issue warrants~n~> Can jail/arrest people~n~> Limited to 1 person every 60 min~n~> Needs ~r~5000~w~ XP or more" ); - TextDrawSetString( p_ClassTitleTD[ playerid ], "~g~~h~CLASS NAME:~r~~h~ The Mayor" ); - } - case 66..73:*/ - case 64..73: - { - p_Class[ playerid ] = ( CLASS_POLICE ); - SetPlayerColor( playerid, COLOR_POLICE ); - //SetPlayerTeam( playerid, CLASS_POLICE ); - p_inFBI{ playerid } = false; - p_inArmy{ playerid } = false; - p_inCIA{ playerid } = false; - // p_inMayor{ playerid } = false; - - TextDrawSetString( p_ClassInfoTD[ playerid ], "~g~~h~CLASS INFORMATION:~w~~n~> Protect the City from criminals~n~> Has access to many features~n~> Can call enforcements~n~> Can jail/arrest people" ); - TextDrawSetString( p_ClassTitleTD[ playerid ], "~g~~h~CLASS NAME:~w~ Police Officer" ); - } + p_Class[ playerid ] = ( CLASS_FIREMAN ); + SetPlayerColor( playerid, COLOR_FIREMAN ); + //SetPlayerTeam( playerid, NO_TEAM ); + p_inFBI{ playerid } = false; + p_inArmy{ playerid } = false; + p_inCIA{ playerid } = false; + ShowPlayerClassTextdraw( playerid, 6 ); + } + else if ( CLASS_MEDIC_RANGE[ 0 ] <= classid <= CLASS_MEDIC_RANGE[ 1 ] ) + { + p_Class[ playerid ] = ( CLASS_MEDIC ); + SetPlayerColor( playerid, COLOR_MEDIC ); + //SetPlayerTeam( playerid, NO_TEAM ); + p_inFBI{ playerid } = false; + p_inArmy{ playerid } = false; + p_inCIA{ playerid } = false; + ShowPlayerClassTextdraw( playerid, 5 ); } return 1; } +stock ShowPlayerClassTextdraw( playerid, classid ) { + for ( new i = 0; i < sizeof( CLASS_COLORS ); i ++ ) if ( i != classid ) { + TextDrawHideForPlayer( playerid, g_classTextdrawBox[ i ] ); + TextDrawHideForPlayer( playerid, g_classTextdrawDescription[ i ] ); + TextDrawHideForPlayer( playerid, g_classTextdrawName[ i ] ); + } + + TextDrawShowForPlayer( playerid, g_classTextdrawBox[ classid ] ); + TextDrawShowForPlayer( playerid, g_classTextdrawDescription[ classid ] ); + TextDrawShowForPlayer( playerid, g_classTextdrawName[ classid ] ); +} + public OnPlayerFloodControl( playerid, iCount, iTimeSpan ) { static szIP[ 16 ]; @@ -6568,11 +6497,8 @@ public OnPlayerSpawn( playerid ) return 1; UpdatePlayerTime( playerid ); + DeletePVar( playerid, "attached_mugshot" ); - TextDrawHideForPlayer( playerid, g_ClassBoxTD); - TextDrawHideForPlayer( playerid, g_ClassBoxTD1 ); - TextDrawHideForPlayer( playerid, p_ClassTitleTD[ playerid ] ); - TextDrawHideForPlayer( playerid, p_ClassInfoTD[ playerid ] ); PlayerTextDrawHide( playerid, p_ExperienceTD[ playerid ] ); HidePlayerTogglableTextdraws( playerid ); TextDrawHideForPlayer( playerid, g_CurrentRankTD ); @@ -6588,6 +6514,7 @@ public OnPlayerSpawn( playerid ) PlayerTextDrawShow( playerid, p_ExperienceTD[ playerid ] ); TextDrawShowForPlayer( playerid, g_WebsiteTD ); TextDrawShowForPlayer( playerid, g_MotdTD ); + TextDrawShowForPlayer( playerid, g_ZoneOwnerTD[ playerid ] ); if ( g_HappyHour ) TextDrawShowForPlayer( playerid, g_NotManyPlayersTD ); TextDrawShowForPlayer( playerid, g_WorldDayTD ); if ( p_AdminOnDuty{ playerid } ) TextDrawShowForPlayer( playerid, g_AdminOnDutyTD ); @@ -6619,8 +6546,9 @@ public OnPlayerSpawn( playerid ) RemovePlayerAttachedObject( playerid, 1 ), SetPlayerAttachedObject( playerid, 1, 1210, 7, 0.302650, -0.002469, -0.193321, 296.124053, 270.396881, 8.941717, 1.000000, 1.000000, 1.000000 ); // Gang Zones - for( new i = 0; i < sizeof( g_gangzoneData ); i++ ) - GangZoneShowForPlayer( playerid, g_gangzoneID[ i ], g_gangzoneData[ i ] [ E_COLOR ] ); + for( new i = 0; i < MAX_TURFS; i++ ) { + GangZoneShowForPlayer( playerid, g_gangTurfData[ i ] [ E_ID ], g_gangTurfData[ i ] [ E_COLOR ] ); + } // VIP Skin if ( p_PlayerSettings[ playerid ] { SETTING_VIPSKIN } && p_VIPLevel[ playerid ] ) @@ -7212,7 +7140,7 @@ public OnPlayerTakePlayerDamage( playerid, issuerid, &Float: amount, weaponid, b return 0; // Anti RDM and gang member damage - if ( !IsPlayerInEvent( playerid ) && !IsPlayerInPaintBall( playerid ) ) + if ( ! IsPlayerInEvent( playerid ) && ! IsPlayerInPaintBall( playerid ) && ! IsPlayerBoxing( playerid ) ) { if ( IsPlayerInPlayerGang( issuerid, playerid ) ) return ShowPlayerHelpDialog( issuerid, 2000, "You cannot damage your homies!" ), 0; @@ -7406,6 +7334,7 @@ public OnPlayerDeath( playerid, killerid, reason ) TextDrawHideForPlayer( playerid, g_WebsiteTD ); PlayerTextDrawHide( playerid, p_WantedLevelTD[ playerid ] ); TextDrawHideForPlayer( playerid, g_MotdTD ); + TextDrawHideForPlayer( playerid, g_ZoneOwnerTD[ playerid ] ); TextDrawHideForPlayer( playerid, g_NotManyPlayersTD ); TextDrawHideForPlayer( playerid, p_FPSCounterTD[ playerid ] ); TextDrawHideForPlayer( playerid, g_AdminOnDutyTD ); @@ -7433,14 +7362,23 @@ public OnPlayerDeath( playerid, killerid, reason ) format( szTaxable, sizeof( szTaxable ), "~w~You have paid ~r~%s~w~ in medical fees", number_format( iMoney ) ); GivePlayerCash( playerid, -( iMoney ) ); - if ( p_TaxTime{ playerid } == true ) + if ( p_TaxTime{ playerid } == true && p_inPaintBall{ playerid } != true ) { - new iTax = p_inPaintBall{ playerid } == true ? 0 : getPlayerTax( playerid ); - GivePlayerCash( playerid, -iTax ); - UpdateServerVariable( "eventbank", GetGVarInt( "eventbank" ) + floatround( iTax * 0.10 ), 0.0, "", GLOBAL_VARTYPE_INT ); - if ( strlen( szTaxable ) ) format( szTaxable, sizeof( szTaxable ), "%s and ~r~%s~w~ in tax", szTaxable, number_format( iTax ) ); - else format( szTaxable, sizeof( szTaxable ), "~w~You have paid ~r~%s~w~ in tax", number_format( iTax ) ); - p_TaxTime{ playerid } = false; + new + player_tax = getPlayerTax( playerid ); + + if ( player_tax > 0 ) + { + p_TaxTime{ playerid } = false; + GivePlayerCash( playerid, -player_tax ); + + // only add >10K to event bank, lessen queries + if ( player_tax > 10000 ) UpdateServerVariable( "eventbank", GetGVarInt( "eventbank" ) + floatround( float( player_tax ) * 0.10 ), 0.0, "", GLOBAL_VARTYPE_INT ); + + // format string + if ( strlen( szTaxable ) ) format( szTaxable, sizeof( szTaxable ), "%s and ~r~%s~w~ in tax", szTaxable, number_format( player_tax ) ); + else format( szTaxable, sizeof( szTaxable ), "~w~You have paid ~r~%s~w~ in tax", number_format( player_tax ) ); + } } ShowPlayerHelpDialog( playerid, 5000, szTaxable ); } @@ -8661,7 +8599,7 @@ stock randomArrayItem( const array[ ], exclude = 0xFFFF, arraysize = sizeof( arr public OnPlayerCommandPerformed( playerid, cmdtext[ ], success ) { if ( !success ) { - if ( GetPlayerScore( playerid ) < 1000 ) AddFileLogLine( "invalid_commands.txt", sprintf( "%s (score %d) : %s\r\n", ReturnPlayerName( playerid ), GetPlayerScore( playerid ), cmdtext ) ); + // if ( GetPlayerScore( playerid ) < 1000 ) AddFileLogLine( "invalid_commands.txt", sprintf( "%s (score %d) : %s\r\n", ReturnPlayerName( playerid ), GetPlayerScore( playerid ), cmdtext ) ); // crashes svr return SendError( playerid, "You have entered an invalid command. To display the command list type /commands or /cmds." ); } return 1; @@ -8686,6 +8624,13 @@ public OnPlayerCommandReceived(playerid, cmdtext[]) return 1; } + +CMD:changename( playerid, params[ ] ) { + SendServerMessage( playerid, "You can change your name using "COL_GREY"/ic market"COL_WHITE" for 50 IC." ); + // cmd_ic( playerid, "market" ); + return 1; +} + CMD:casino( playerid, params[ ] ) { if ( strmatch( params, "rewards" ) ) { @@ -10731,6 +10676,7 @@ CMD:admins( playerid, params[ ] ) return 1; } +CMD:donate( playerid, params[ ] ) return cmd_vip( playerid, params ); CMD:vip( playerid, params[ ] ) { szLargeString = "{FFFFFF}Help support our community by donating, in return you will receive Irresistible Coins!\n\n"; @@ -12012,12 +11958,14 @@ CMD:moviemode( playerid, params[ ] ) if ( p_AdminOnDuty{ playerid } ) TextDrawShowForPlayer( playerid, g_AdminOnDutyTD ); TextDrawShowForPlayer( playerid, g_WorldDayTD ); ShowPlayerIrresistibleRank( playerid ); + TextDrawShowForPlayer( playerid, g_ZoneOwnerTD[ playerid ] ); for( new i; i < sizeof( g_MovieModeTD ); i ++ ) TextDrawHideForPlayer( playerid, g_MovieModeTD[ i ] ); p_inMovieMode{ playerid } = false; SendServerMessage( playerid, "Movie mode has been un-toggled." ); } case false: { + TextDrawHideForPlayer( playerid, g_ZoneOwnerTD[ playerid ] ); HidePlayerTogglableTextdraws( playerid ); TextDrawHideForPlayer( playerid, g_CurrentRankTD ); TextDrawHideForPlayer( playerid, g_currentXPTD ); @@ -13219,7 +13167,7 @@ CMD:sendmoney( playerid, params[ ] ) if ( amount > 90000000 ) { printf("ISP banned %s for making a 75M transaction", ReturnPlayerName( playerid )); - BanEx( playerid, "75M Transaction" ); + AdvancedBan( playerid, "Server", "Suspicious Transaction", ReturnPlayerIP( playerid ) ); return 1; } @@ -14468,33 +14416,39 @@ CMD:takeover( playerid, params[ ] ) { if ( IsPlayerInArea( playerid, g_gangzoneData[ z ] [ E_MIN_X ], g_gangzoneData[ z ] [ E_MAX_X ], g_gangzoneData[ z ] [ E_MIN_Y ], g_gangzoneData[ z ] [ E_MAX_Y ] ) ) { + new gangid = p_GangID[ playerid ]; + count = 1; - if ( g_gangzoneData[ z ] [ E_GANG_OWNER ] == p_GangID[ playerid ] ) return SendError( playerid, "This turf is already captured by your gang." ); + if ( g_gangTurfData[ z ] [ E_OWNER ] == gangid ) return SendError( playerid, "This turf is already captured by your gang." ); if ( g_gangzoneAttacker[ z ] != INVALID_GANG_ID ) return SendError( playerid, "This turf is currently being attacked." ); - if ( g_gangzoneData[ z ] [ E_GANG_OWNER ] != INVALID_GANG_ID ) { - oCount = GetPlayersInGangZone( z, g_gangzoneData[ z ] [ E_GANG_OWNER ] ); // Opposing check + if ( g_gangTurfData[ z ] [ E_OWNER ] != INVALID_GANG_ID ) { + oCount = GetPlayersInGangZone( z, g_gangTurfData[ z ] [ E_OWNER ] ); // Opposing check } - new dCount = GetPlayersInGangZone( z, p_GangID[ playerid ], g_isAFK, g_inAir ); + new dCount = GetPlayersInGangZone( z, gangid, g_isAFK, g_inAir ); + if ( dCount < TAKEOVER_NEEDED_PEOPLE && ( dCount + g_isAFK + g_inAir ) >= TAKEOVER_NEEDED_PEOPLE ) - return SendError( playerid, "You cannot start a turf war if gangmembers are AFK or extremely high above ground." ); + return SendError( playerid, "You cannot start a turf war if gang members are AFK or extremely high above ground." ); + + //if ( g_gangTurfData[ z ] [ E_OWNER ] != INVALID_GANG_ID && dCount < TAKEOVER_NEEDED_PEOPLE + 1 && ( dCount + g_isAFK + g_inAir ) >= TAKEOVER_NEEDED_PEOPLE + 1 ) + // return SendError( playerid, "You need at least %d gang members to start a gang war with another gang.", TAKEOVER_NEEDED_PEOPLE + 1 ); if ( dCount >= TAKEOVER_NEEDED_PEOPLE && !oCount ) { gmCount = 1; - g_gangzoneAttacker[ z ] = p_GangID[ playerid ]; + g_gangzoneAttacker[ z ] = gangid; g_gangzoneAttackCount[ z ] = 0; - GangZoneFlashForAll( g_gangzoneID[ z ], 0xFF000080 ); - SendClientMessage( playerid, g_gangData[ p_GangID[ playerid ] ] [ E_COLOR ], "[TURF]{FFFFFF} You are now beginning to take over the turf. Stay inside the area with your crew for 60 seconds. Don't die." ); - if ( g_gangzoneData[ z ] [ E_GANG_OWNER ] != INVALID_GANG_ID ) SendClientMessageToGang( g_gangzoneData[ z ] [ E_GANG_OWNER ], g_gangData[ g_gangzoneData[ z ] [ E_GANG_OWNER ] ] [ E_COLOR ], "[GANG]{FFFFFF} Our territory is being attacked by "COL_GREY"%s"COL_WHITE", defend it!", g_gangData[ g_gangzoneAttacker[ z ] ] [ E_NAME ] ); + GangZoneFlashForAll( g_gangTurfData[ z ] [ E_ID ], setAlpha( g_gangData[ gangid ] [ E_COLOR ], 0x80 ) ); + SendClientMessage( playerid, g_gangData[ gangid ] [ E_COLOR ], "[TURF]{FFFFFF} You are now beginning to take over the turf. Stay inside the area with your gang for 60 seconds. Don't die." ); + if ( g_gangTurfData[ z ] [ E_OWNER ] != INVALID_GANG_ID ) SendClientMessageToGang( g_gangTurfData[ z ] [ E_OWNER ], g_gangData[ g_gangTurfData[ z ] [ E_OWNER ] ] [ E_COLOR ], "[GANG]{FFFFFF} Our territory is being attacked by "COL_GREY"%s"COL_WHITE", defend it!", g_gangData[ g_gangzoneAttacker[ z ] ] [ E_NAME ] ); break; } } } if ( oCount != 0 ) return SendError( playerid, "There are gang members within this turf, kill them!" ); if ( count == 0 ) return SendError( playerid, "You are not in any gangzone." ); - if ( gmCount == 0 ) return SendError( playerid, "You need at least 3 people to take over this turf." ); + if ( gmCount == 0 ) return SendError( playerid, "You need at least %d member(s) to take over this turf.", TAKEOVER_NEEDED_PEOPLE ); return 1; } @@ -14842,7 +14796,7 @@ CMD:acmds( playerid, params[ ] ) SendClientMessage( playerid, COLOR_WHITE, " LEVEL 3: /venter, /geolocate" ); SendClientMessage( playerid, COLOR_WHITE, " LEVEL 4: /circleall, /giveweaponall, /resetwepall, /motd, /uncopban, /unarmyban, /setworld, /destroyallav, /gotopos" ); SendClientMessage( playerid, COLOR_WHITE, " LEVEL 4: /addnote, /removenote" ); - SendClientMessage( playerid, COLOR_WHITE, " LEVEL 5: /createhouse, /destroyhouse, /respawnallv, /changename, /toggleviewpm, /unban(ip)" ); + SendClientMessage( playerid, COLOR_WHITE, " LEVEL 5: /createhouse, /destroyhouse, /respawnallv, /achangename, /toggleviewpm, /unban(ip)" ); SendClientMessage( playerid, COLOR_WHITE, " LEVEL 5: /createcar, /destroycar, /stripcarmods, /createbribe, /destroybribe, /doublexp, /(h/v)adminsell" ); SendClientMessage( playerid, COLOR_WHITE, " LEVEL 5: /autovehrespawn, /megaban, /acunban, /creategate, /editgate, /connectsong" ); SendClientMessage( playerid, COLOR_WHITE, " LEVEL 5: /creategarage, /destroygarage, /check" ); @@ -16968,7 +16922,7 @@ function autoVehicleSpawn( ) return 1; }*/ -CMD:changename( playerid, params[ ] ) +CMD:achangename( playerid, params[ ] ) { new pID, @@ -16976,7 +16930,7 @@ CMD:changename( playerid, params[ ] ) szQuery[ 100 ] ; if ( p_AdminLevel[ playerid ] < 5 ) return SendError( playerid, ADMIN_COMMAND_REJECT ); - else if ( sscanf( params, ""#sscanf_u"s[24]", pID, nName ) ) return SendUsage( playerid, "/changename [PLAYER_ID] [NEW_NAME]" ); + else if ( sscanf( params, ""#sscanf_u"s[24]", pID, nName ) ) return SendUsage( playerid, "/achangename [PLAYER_ID] [NEW_NAME]" ); else if ( !IsPlayerConnected( pID ) ) SendError( playerid, "Invalid Player ID." ); else if ( !isValidPlayerName( nName ) ) return SendError( playerid, "Invalid Name Character." ); else if ( p_OwnedHouses[ pID ] > 0 || GetPlayerOwnedApartments( pID ) > 0 ) return SendError( playerid, "This player has a house and/or apartment." ), SendError( pID, ""COL_ORANGE"In order to change your name, you must sell your houses and/or apartment."); @@ -19907,26 +19861,19 @@ stock approveClassSpawned( playerid ) { if ( IsPlayerMedic( playerid ) && p_XP[ playerid ] < 2000 ) return SendClientMessage( playerid, -1, ""COL_RED"[ERROR]"COL_WHITE" You need 2,000 XP to use this class." ), 0; - /* if ( IsPlayerMayor( playerid ) && p_XP[ playerid ] < 5000 ) - return SendClientMessage( playerid, -1, ""COL_RED"[ERROR]"COL_WHITE" You need 5,000 XP to use this class." ), 0; - - // restrict to one mayor - new - mayorAccountId = GetGVarInt( "mayor" ); - - if( mayorAccountId != 0 && mayorAccountId != p_AccountID[ playerid ] ) { - return SendClientMessage( playerid, -1, ""COL_RED"[ERROR]"COL_WHITE" The mayor class is currently full." ), 0; - } else { - UpdateServerVariable( "mayor_timeout", 0, 0.0, "", GLOBAL_VARTYPE_INT ); - UpdateServerVariable( "mayor_timestamp", g_iTime, 0.0, "", GLOBAL_VARTYPE_INT ); - UpdateServerVariable( "mayor", p_AccountID[ playerid ], 0.0, "", GLOBAL_VARTYPE_INT ); - }*/ - // job not set if ( !p_JobSet{ playerid } || !p_CitySet{ playerid } ) return SendClientMessage( playerid, -1, ""COL_RED"[ERROR]"COL_WHITE" You must ensure your job and city have been properly set." ), 0; - return 1; // pass it + // hide textdraws + for ( new i = 0; i < sizeof( CLASS_COLORS ); i ++ ) { + TextDrawHideForPlayer( playerid, g_classTextdrawBox[ i ] ); + TextDrawHideForPlayer( playerid, g_classTextdrawDescription[ i ] ); + TextDrawHideForPlayer( playerid, g_classTextdrawName[ i ] ); + } + TextDrawHideForPlayer( playerid, g_ClassBoxTD ); + RemovePlayerAttachedObject( playerid, 1 ); + return 1; } public OnObjectMoved(objectid) @@ -22635,12 +22582,13 @@ public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) if ( !strlen( inputtext ) || !isHex( inputtext ) ) return ShowPlayerDialog( playerid, DIALOG_GANG_COLOR_INPUT, DIALOG_STYLE_INPUT, "{FFFFFF}Gang Colors", "{FFFFFF}Write a hexidecimal color within the textbox\n\n{ff0000}Invalid HEX color.", "Submit", "Cancel" ); - new - iHex = HexToInt( inputtext ); + new gangid = p_GangID[ playerid ]; + new hex_to_int = HexToInt( inputtext ); - g_gangData[ p_GangID[ playerid ] ] [ E_COLOR ] = setAlpha( iHex, 0xFF ); - SendClientMessageToGang( p_GangID[ playerid ], g_gangData[ p_GangID[ playerid ] ] [ E_COLOR ], "[GANG]{FFFFFF} %s(%d) has changed the gang color to HEX(%d)", ReturnPlayerName( playerid ), playerid, iHex ); - SetGangColorsToGang( p_GangID[ playerid ] ); + g_gangData[ gangid ] [ E_COLOR ] = setAlpha( hex_to_int, 0xFF ); + + SendClientMessageToGang( gangid, g_gangData[ p_GangID[ playerid ] ] [ E_COLOR ], "[GANG]{FFFFFF} %s(%d) has changed the gang color to %06x", ReturnPlayerName( playerid ), playerid, hex_to_int >>> 8 ); + SetGangColorsToGang( gangid ); } if ( ( dialogid == DIALOG_GANG_LIST ) && response ) { @@ -27071,6 +27019,106 @@ stock SavePlayerData( playerid, bool: logout = false ) forward InitializeTextDraws( ); public InitializeTextDraws( ) { + g_ClassBoxTD = TextDrawCreate(40.000000, 170.000000, "_"); + TextDrawBackgroundColor(g_ClassBoxTD, 255); + TextDrawFont(g_ClassBoxTD, 1); + TextDrawLetterSize(g_ClassBoxTD, 0.500000, 16.000000); + TextDrawColor(g_ClassBoxTD, -1); + TextDrawSetOutline(g_ClassBoxTD, 0); + TextDrawSetProportional(g_ClassBoxTD, 1); + TextDrawSetShadow(g_ClassBoxTD, 1); + TextDrawUseBox(g_ClassBoxTD, 1); + TextDrawBoxColor(g_ClassBoxTD, 144); + TextDrawTextSize(g_ClassBoxTD, 170.000000, 10.000000); + + for ( new i = 0; i < sizeof( g_classTextdrawBox ); i ++ ) + { + g_classTextdrawBox[ i ] = TextDrawCreate(40.000000, 138.000000, "_"); + TextDrawBackgroundColor(g_classTextdrawBox[ i ], 255); + TextDrawFont(g_classTextdrawBox[ i ], 1); + TextDrawLetterSize(g_classTextdrawBox[ i ], 0.500000, 3.000000); + TextDrawColor(g_classTextdrawBox[ i ], -1); + TextDrawSetOutline(g_classTextdrawBox[ i ], 0); + TextDrawSetProportional(g_classTextdrawBox[ i ], 1); + TextDrawSetShadow(g_classTextdrawBox[ i ], 1); + TextDrawUseBox(g_classTextdrawBox[ i ], 1); + TextDrawBoxColor(g_classTextdrawBox[ i ], CLASS_COLORS[ i ]); + TextDrawTextSize(g_classTextdrawBox[ i ], 170.000000, 10.000000); + + szLargeString[ 0 ] = '\0'; + + switch ( i ) + { + case 0: { + strcat( szLargeString, "- Select different types of jobs~n~" \ + "- Able to rob stores and players~n~" \ + "- Can gang up with players~n~" \ + "~g~~h~- Accessible to everybody" ); + } + case 1: { + strcat( szLargeString, "- Protect the city from criminals~n~" \ + "- Access to police gun lockers~n~" \ + "- Can arrest/jail people~n~" \ + "~g~~h~- Accessible to everybody" ); + } + case 2: { + strcat( szLargeString, "- Protect the city from criminals~n~" \ + "- Access to police gun lockers~n~" \ + "- Can arrest/jail people~n~" \ + "- Can set roadblocks on roads~n~" \ + "- Can set spike traps on roads~n~" \ + "~r~~h~- Requires 10,000 XP or more" ); + } + case 3: { + strcat( szLargeString, "- Protect the city from criminals~n~" \ + "- Access to police gun lockers~n~" \ + "- Can arrest/jail people~n~" \ + "- Can set roadblocks on roads~n~" \ + "- Can set spike traps on roads~n~" \ + "- Can use combat vehicles~n~" \ + "~r~~h~- Requires 20,000 XP or more" ); + } + case 4: { + strcat( szLargeString, "- Protect the city from criminals~n~" \ + "- Access to police gun lockers~n~" \ + "- Can arrest/jail people~n~" \ + "- Can set roadblocks on roads~n~" \ + "- Can set spike traps on roads~n~" \ + "- Hidden from radar~n~" \ + "~r~~h~- Requires 15,000 XP or more" ); + } + case 5: { + strcat( szLargeString, "- Can heal and cure players~n~" \ + "- Ambulance passengers pay you~n~"\ + "- Able to rob stores and players~n~" \ + "~r~~h~- Requires 1,000 XP or more" ); + } + case 6: { + strcat( szLargeString, "- Protect the city from fires~n~" \ + "- Firetrucks able to extinguish fires~n~"\ + "- Able to rob stores and players~n~" \ + "~r~~h~- Requires 1,000 XP or more" ); + } + } + + g_classTextdrawDescription[ i ] = TextDrawCreate(43.000000, 171.000000, szLargeString); + TextDrawBackgroundColor(g_classTextdrawDescription[ i ], 0); + TextDrawFont(g_classTextdrawDescription[ i ], 1); + TextDrawLetterSize(g_classTextdrawDescription[ i ], 0.190000, 1.100000); + TextDrawColor(g_classTextdrawDescription[ i ], -1); + TextDrawSetOutline(g_classTextdrawDescription[ i ], 1); + TextDrawSetProportional(g_classTextdrawDescription[ i ], 1); + + g_classTextdrawName[ i ] = TextDrawCreate(46.000000, 141.000000, CLASS_NAMES[ i ] ); + TextDrawBackgroundColor(g_classTextdrawName[ i ], 0); + TextDrawFont(g_classTextdrawName[ i ], 3); + TextDrawLetterSize(g_classTextdrawName[ i ], 0.550000, 2.099999); + TextDrawColor(g_classTextdrawName[ i ], i == 0 ? 0x000000FF : 0xFFFFFFFF ); + TextDrawSetOutline(g_classTextdrawName[ i ], 1); + TextDrawSetProportional(g_classTextdrawName[ i ], 1); + TextDrawSetSelectable(g_classTextdrawName[ i ], 0); + } + g_NotManyPlayersTD = TextDrawCreate(322.000000, 12.000000, "Coin generation increased by 5x as there aren't many players online!"); TextDrawAlignment(g_NotManyPlayersTD, 2); TextDrawBackgroundColor(g_NotManyPlayersTD, 0); @@ -27252,30 +27300,6 @@ forward InitializeTextDraws( ); public InitializeTextDraws( ) TextDrawSetOutline(g_MotdTD, 1); TextDrawSetProportional(g_MotdTD, 1); - g_ClassBoxTD = TextDrawCreate(28.000000, 159.000000, "_"); - TextDrawBackgroundColor(g_ClassBoxTD, 255); - TextDrawFont(g_ClassBoxTD, 1); - TextDrawLetterSize(g_ClassBoxTD, 0.500000, 18.000000); - TextDrawColor(g_ClassBoxTD, -1); - TextDrawSetOutline(g_ClassBoxTD, 0); - TextDrawSetProportional(g_ClassBoxTD, 1); - TextDrawSetShadow(g_ClassBoxTD, 1); - TextDrawUseBox(g_ClassBoxTD, 1); - TextDrawBoxColor(g_ClassBoxTD, 149); - TextDrawTextSize(g_ClassBoxTD, 190.000000, 0.000000); - - g_ClassBoxTD1 = TextDrawCreate(22.000000, 151.000000, "_"); - TextDrawBackgroundColor(g_ClassBoxTD1, 255); - TextDrawFont(g_ClassBoxTD1, 1); - TextDrawLetterSize(g_ClassBoxTD1, 0.500000, 19.900003); - TextDrawColor(g_ClassBoxTD1, -1); - TextDrawSetOutline(g_ClassBoxTD1, 0); - TextDrawSetProportional(g_ClassBoxTD1, 1); - TextDrawSetShadow(g_ClassBoxTD1, 1); - TextDrawUseBox(g_ClassBoxTD1, 1); - TextDrawBoxColor(g_ClassBoxTD1, 149); - TextDrawTextSize(g_ClassBoxTD1, 197.000000, 0.000000); - g_ObjectLoadTD = TextDrawCreate(320.000000, 148.000000, "Loading Objects...~n~Please Wait..."); TextDrawAlignment(g_ObjectLoadTD, 2); TextDrawBackgroundColor(g_ObjectLoadTD, 80); @@ -27364,20 +27388,6 @@ forward InitializeTextDraws( ); public InitializeTextDraws( ) TextDrawSetOutline(g_AdminOnDutyTD, 1); TextDrawSetProportional(g_AdminOnDutyTD, 1); - /* ** Gangzone Allocation ** */ - for( new i; i < sizeof( g_gangzoneData ); i++ ) - { - g_gangzoneID[ i ] = GangZoneCreate( g_gangzoneData[ i ] [ E_MIN_X ], g_gangzoneData[ i ] [ E_MIN_Y ], g_gangzoneData[ i ] [ E_MAX_X ], g_gangzoneData[ i ] [ E_MAX_Y ] ); - - g_ZoneOwnerTD[ i ] = TextDrawCreate( 86.000000, 296.000000, "Loading!" ); - TextDrawAlignment ( g_ZoneOwnerTD[ i ], 2 ); - TextDrawBackgroundColor ( g_ZoneOwnerTD[ i ], 255 ); - TextDrawFont ( g_ZoneOwnerTD[ i ], 1 ); - TextDrawLetterSize ( g_ZoneOwnerTD[ i ], 0.250000, 1.200000 ); - TextDrawColor ( g_ZoneOwnerTD[ i ], -1 ); - TextDrawSetOutline ( g_ZoneOwnerTD[ i ], 1 ); - } - /* ** Player TextDraws ** */ for(new playerid; playerid != MAX_PLAYERS; playerid ++) { @@ -27428,6 +27438,14 @@ forward InitializeTextDraws( ); public InitializeTextDraws( ) TextDrawTextSize(g_SlotMachineThreeTD[ playerid ], 66.000000, 77.000000); } + g_ZoneOwnerTD[ playerid ] = TextDrawCreate( 86.000000, 296.000000, "_" ); + TextDrawAlignment( g_ZoneOwnerTD[ playerid ], 2 ); + TextDrawBackgroundColor( g_ZoneOwnerTD[ playerid ], 255 ); + TextDrawFont( g_ZoneOwnerTD[ playerid ], 1 ); + TextDrawLetterSize( g_ZoneOwnerTD[ playerid ], 0.250000, 1.200000 ); + TextDrawColor( g_ZoneOwnerTD[ playerid ], -1 ); + TextDrawSetOutline( g_ZoneOwnerTD[ playerid ], 1 ); + p_ProgressBoxOutsideTD[ playerid ] = TextDrawCreate(252.000000, 222.000000, "_"); TextDrawBackgroundColor(p_ProgressBoxOutsideTD[ playerid ], 255); TextDrawFont(p_ProgressBoxOutsideTD[ playerid ], 1); @@ -27504,24 +27522,6 @@ forward InitializeTextDraws( ); public InitializeTextDraws( ) TextDrawSetProportional(p_TruckingTD[ playerid ], 1); TextDrawSetSelectable(p_TruckingTD[ playerid ], 0); - p_ClassInfoTD[ playerid ] = TextDrawCreate(33.000000, 184.000000, "~g~~h~CLASS INFORMATION:"); - TextDrawBackgroundColor(p_ClassInfoTD[ playerid ], 255); - TextDrawFont(p_ClassInfoTD[ playerid ], 2); - TextDrawLetterSize(p_ClassInfoTD[ playerid ], 0.200000, 1.100000); - TextDrawColor(p_ClassInfoTD[ playerid ], -1); - TextDrawSetOutline(p_ClassInfoTD[ playerid ], 0); - TextDrawSetProportional(p_ClassInfoTD[ playerid ], 1); - TextDrawSetShadow(p_ClassInfoTD[ playerid ], 1); - - p_ClassTitleTD[ playerid ] = TextDrawCreate(33.000000, 163.000000, "~g~~h~CLASS NAME:"); - TextDrawBackgroundColor(p_ClassTitleTD[ playerid ], 255); - TextDrawFont(p_ClassTitleTD[ playerid ], 2); - TextDrawLetterSize(p_ClassTitleTD[ playerid ], 0.200000, 1.100000); - TextDrawColor(p_ClassTitleTD[ playerid ], -1); - TextDrawSetOutline(p_ClassTitleTD[ playerid ], 0); - TextDrawSetProportional(p_ClassTitleTD[ playerid ], 1); - TextDrawSetShadow(p_ClassTitleTD[ playerid ], 1); - p_JailTimeTD[ playerid ] = TextDrawCreate(328.000000, 24.000000, "Time Remaining:~n~250 seconds"); TextDrawAlignment(p_JailTimeTD[ playerid ], 2); TextDrawBackgroundColor(p_JailTimeTD[ playerid ], 85); @@ -27753,9 +27753,6 @@ function SetPlayerRandomSpawn( playerid ) if ( p_Class[ playerid ] == CLASS_MEDIC ) return SetPlayerPos( playerid, g_MedicSpawns[ city ] [ RANDOM_SPAWN_X ], g_MedicSpawns[ city ] [ RANDOM_SPAWN_Y ], g_MedicSpawns[ city ] [ RANDOM_SPAWN_Z ] ), SetPlayerInterior( playerid, g_MedicSpawns[ city ] [ RANDOM_SPAWN_INTERIOR ] ), SetPlayerVirtualWorld( playerid, g_MedicSpawns[ city ] [ RANDOM_SPAWN_WORLD ] ), SetPlayerFacingAngle( playerid, g_MedicSpawns[ city ] [ RANDOM_SPAWN_A ] ), 1; - // if ( p_inMayor{ playerid } == true ) - // return SetPlayerPos( playerid, g_MayorSpawns[ city ] [ RANDOM_SPAWN_X ], g_MayorSpawns[ city ] [ RANDOM_SPAWN_Y ], g_MayorSpawns[ city ] [ RANDOM_SPAWN_Z ] ), SetPlayerInterior( playerid, g_MayorSpawns[ city ] [ RANDOM_SPAWN_INTERIOR ] ), SetPlayerVirtualWorld( playerid, g_MayorSpawns[ city ] [ RANDOM_SPAWN_WORLD ] ), SetPlayerFacingAngle( playerid, g_MayorSpawns[ city ] [ RANDOM_SPAWN_A ] ), 1; - if ( p_inArmy{ playerid } == true ) return SetPlayerPos( playerid, g_ArmySpawns[ city ] [ RANDOM_SPAWN_X ], g_ArmySpawns[ city ] [ RANDOM_SPAWN_Y ], g_ArmySpawns[ city ] [ RANDOM_SPAWN_Z ] ), SetPlayerInterior( playerid, g_ArmySpawns[ city ] [ RANDOM_SPAWN_INTERIOR ] ), SetPlayerVirtualWorld( playerid, g_ArmySpawns[ city ] [ RANDOM_SPAWN_WORLD ] ), SetPlayerFacingAngle( playerid, g_ArmySpawns[ city ] [ RANDOM_SPAWN_A ] ), 1; @@ -28529,7 +28526,6 @@ stock SetPlayerColorToTeam( playerid ) if ( p_inFBI{ playerid } ) SetPlayerColor( playerid, COLOR_FBI ); if ( p_inCIA{ playerid } ) SetPlayerColor( playerid, COLOR_CIA ); if ( p_inArmy{ playerid } ) SetPlayerColor( playerid, COLOR_ARMY ); - // if ( p_inMayor{ playerid } ) SetPlayerColor( playerid, COLOR_MAYOR ); } case CLASS_FIREMAN: SetPlayerColor( playerid, COLOR_FIREMAN ); case CLASS_MEDIC: SetPlayerColor( playerid, COLOR_MEDIC ); @@ -28584,22 +28580,6 @@ stock IsPlayerFBI( playerid ) return false; } -/*stock IsPlayerMayor( playerid ) -{ - new - skinid = GetPlayerSkin( playerid ); - - switch( skinid ) { - case 187, 148: { - if ( IsPlayerSpawned( playerid ) && p_PlayerSettings[ playerid ] { SETTING_VIPSKIN } && p_VIPLevel[ playerid ] && p_LastSkin[ playerid ] == skinid ) { - return false; - } - return true; - } - } - return false; -}*/ - stock IsPlayerCIA( playerid ) { new @@ -30025,7 +30005,7 @@ stock GetPlayersInGangZone( z, g, &is_afk = 0, &in_air = 0 ) foreach(new i : Player) { - if ( p_Class[ i ] == CLASS_CIVILIAN && p_GangID[ i ] == g && IsPlayerInArea( i, g_gangzoneData[ z ] [ E_MIN_X ], g_gangzoneData[ z ] [ E_MAX_X ], g_gangzoneData[ z ] [ E_MIN_Y ], g_gangzoneData[ z ] [ E_MAX_Y ] ) && GetPlayerState( i ) != PLAYER_STATE_SPECTATING ) + if ( p_Class[ i ] == CLASS_CIVILIAN && p_GangID[ i ] == g && IsPlayerInDynamicArea( i, g_gangTurfData[ z ] [ E_AREA ] ) && GetPlayerState( i ) != PLAYER_STATE_SPECTATING ) { if ( IsPlayerAFK( i ) ) { @@ -30214,13 +30194,13 @@ stock DestroyGang( gangid ) Iter_Remove( gangs, gangid ); // Empty out the turfs - for( new z; z < sizeof( g_gangzoneData ); z++ ) + for( new z = 0; z < MAX_TURFS; z++ ) { - if ( g_gangzoneData[ z ] [ E_GANG_OWNER ] == gangid ) + if ( g_gangTurfData[ z ] [ E_OWNER ] == gangid ) { - g_gangzoneData[ z ] [ E_COLOR ] = COLOR_GANGZONE; - g_gangzoneData[ z ] [ E_GANG_OWNER ] = INVALID_GANG_ID; - GangZoneShowForAll( g_gangzoneID[ z ], COLOR_GANGZONE ); + g_gangTurfData[ z ] [ E_COLOR ] = COLOR_GANGZONE; + g_gangTurfData[ z ] [ E_OWNER ] = INVALID_GANG_ID; + GangZoneShowForAll( g_gangTurfData[ z ] [ E_ID ], COLOR_GANGZONE ); } } } @@ -30278,13 +30258,13 @@ stock DisconnectFromGang( playerid ) Iter_Remove( gangs, gangid ); // Empty out the turfs - for( new z; z < sizeof( g_gangzoneData ); z++ ) + for( new z = 0; z < MAX_TURFS; z++ ) { - if ( g_gangzoneData[ z ] [ E_GANG_OWNER ] == gangid ) + if ( g_gangTurfData[ z ] [ E_OWNER ] == gangid ) { - g_gangzoneData[ z ] [ E_COLOR ] = COLOR_GANGZONE; - g_gangzoneData[ z ] [ E_GANG_OWNER ] = INVALID_GANG_ID; - GangZoneShowForAll( g_gangzoneID[ z ], COLOR_GANGZONE ); + g_gangTurfData[ z ] [ E_COLOR ] = COLOR_GANGZONE; + g_gangTurfData[ z ] [ E_OWNER ] = INVALID_GANG_ID; + GangZoneShowForAll( g_gangTurfData[ z ] [ E_ID ], COLOR_GANGZONE ); } } } @@ -30436,10 +30416,13 @@ stock SetGangColorsToGang( gangid ) { foreach(new i : Player) { - for( new x; x < sizeof( g_gangzoneData ); x++ ) + for( new x = 0; x < MAX_TURFS; x++ ) { - GangZoneHideForPlayer( i, g_gangzoneID[ x ] ); - GangZoneShowForPlayer( i, g_gangzoneID[ x ], g_gangzoneData[ x ] [ E_COLOR ] ); + // reset color + if ( g_gangTurfData[ x ] [ E_OWNER ] == gangid ) g_gangTurfData[ x ] [ E_COLOR ] = setAlpha( g_gangData[ g_gangzoneAttacker[ x ] ] [ E_COLOR ], 0x80 ); + + GangZoneHideForPlayer( i, g_gangTurfData[ x ] [ E_ID ] ); + GangZoneShowForPlayer( i, g_gangTurfData[ x ] [ E_ID ], g_gangTurfData[ x ] [ E_COLOR ] ); } if ( p_GangID[ i ] == gangid && p_WantedLevel[ i ] <= 0 && p_Class[ i ] == CLASS_CIVILIAN ) @@ -34138,9 +34121,11 @@ stock IsRandomDeathmatch( issuerid, damagedid ) } stock IsPlayerInCasino( playerid ) { + new world = GetPlayerVirtualWorld( playerid ); if ( GetPlayerState( playerid ) != PLAYER_STATE_ONFOOT ) return 0; - if ( GetPlayerInterior( playerid ) == VISAGE_INTERIOR && GetPlayerVirtualWorld( playerid ) == VISAGE_WORLD ) return 1; // visage itself - if ( IsPlayerInRangeOfPoint( playerid, 100.0, 1993.0846, 1904.5693, 84.2848 ) && GetPlayerVirtualWorld( playerid ) != 0 ) return 1; // visage apartments + if ( GetPlayerInterior( playerid ) == VISAGE_INTERIOR && world == VISAGE_WORLD ) return 1; // visage itself + if ( IsPlayerInRangeOfPoint( playerid, 100.0, 1993.0846, 1904.5693, 84.2848 ) && world != 0 ) return 1; // visage apartments + if ( IsPlayerInRangeOfPoint( playerid, 10.0, -792.8680, 661.2518, 19.3380 ) && world == 0 ) return 1; // roycegate mansion return ( GetPlayerInterior( playerid ) == 10 && GetPlayerVirtualWorld( playerid ) == 23 ) || ( GetPlayerInterior( playerid ) == 1 && GetPlayerVirtualWorld( playerid ) == 82 ); } @@ -34214,14 +34199,17 @@ stock SetPlayerPosition( playerid, Float: x, Float: y, Float: z, interiorid = 0, return SetPlayerPos( playerid, x, y, z ); } -stock GetOnlineGangMembers( gangid, exceptid = INVALID_PLAYER_ID ) +stock GetOnlineGangMembers( gangid, exceptid = INVALID_PLAYER_ID, &afk_members = 0 ) { new iPlayers = 0; - foreach (new playerid : Player) - if ( playerid != exceptid && p_GangID[ playerid ] != INVALID_GANG_ID && p_GangID[ playerid ] == gangid ) + foreach (new playerid : Player) { + if ( playerid != exceptid && p_GangID[ playerid ] != INVALID_GANG_ID && p_GangID[ playerid ] == gangid ) { + if ( IsPlayerAFK( playerid ) ) afk_members ++; iPlayers ++; + } + } return iPlayers; } diff --git a/pawno/include/anticheat/weapon.inc b/pawno/include/anticheat/weapon.inc index de2d158..ef0e431 100644 --- a/pawno/include/anticheat/weapon.inc +++ b/pawno/include/anticheat/weapon.inc @@ -51,15 +51,12 @@ stock AC_GivePlayerWeapon( playerid, weaponid, ammo ) stock AC_ResetPlayerWeapons( playerid ) { - new - bReset = ResetPlayerWeapons( playerid ); - //p_PlayerWeaponUpdateTime[ playerid ] = GetTickCount( ) + 2000; for ( new i = 0; i < AC_MAX_WEAPONS; i++ ) p_PlayerHasWeapon[ playerid ] { i } = false; - return bReset; + return ResetPlayerWeapons( playerid ); } #if defined _ALS_ResetPlayerWeapons diff --git a/pawno/include/irresistible/_blank.inc b/pawno/include/irresistible/_blank.inc index 2bf3f74..9a59345 100644 --- a/pawno/include/irresistible/_blank.inc +++ b/pawno/include/irresistible/_blank.inc @@ -4,3 +4,14 @@ * Module: * Purpose: */ + +/* ** Includes ** */ +#include < YSI\y_hooks > + +/* ** Definitions ** */ + +/* ** Variables ** */ + +/* ** Hooks ** */ + +/* ** Functions ** */ diff --git a/pawno/include/irresistible/cnr/cities.inc b/pawno/include/irresistible/cnr/cities.inc new file mode 100644 index 0000000..774c759 --- /dev/null +++ b/pawno/include/irresistible/cnr/cities.inc @@ -0,0 +1,19 @@ +/* + * Irresistible Gaming (c) 2018 + * Developed by Lorenc Pekaj + * Module: cities.inc + * Purpose: definitions of cities + */ + +/* ** Configuration ** */ +#define ENABLE_CITY_LV true +#define ENABLE_CITY_LS true + +/* ** Definitions ** */ +#define MAX_CITIES 3 + +#define CITY_SF 0 +#define CITY_LV 1 +#define CITY_LS 2 +#define CITY_DESERTS 3 +#define CITY_COUNTRY 4 diff --git a/pawno/include/irresistible/cnr/static/actors.inc b/pawno/include/irresistible/cnr/static/actors.inc index 397bf5f..2aec999 100644 --- a/pawno/include/irresistible/cnr/static/actors.inc +++ b/pawno/include/irresistible/cnr/static/actors.inc @@ -15,6 +15,9 @@ enum E_ACTOR_DATA new g_actorData[ ] [ E_ACTOR_DATA ] = { + // Class selection + { 201, 236.283996, 86.777999, 1005.039978, 90.000000, "camera", "picstnd_take", 0 }, + // SF Bank // Guards { 71, -1440.9655, 835.5352, 984.7126, 269.2035, "COP_AMBIENT", "Coplook_loop", 23 }, diff --git a/pawno/include/irresistible/cnr/static/player_objects.inc b/pawno/include/irresistible/cnr/static/player_objects.inc index 9ea8eba..8e6c9f5 100644 --- a/pawno/include/irresistible/cnr/static/player_objects.inc +++ b/pawno/include/irresistible/cnr/static/player_objects.inc @@ -14845,7 +14845,7 @@ stock initializeObjects( ) CreateDynamicObject( 11714, 2151.546386, -2297.232666, 13.659720, -0.399999, 0.000000, 45.000000 ); CreateDynamicObject( 1279, 2147.966308, -2269.212402, 13.265235, 0.000000, 0.000000, 70.499992 ); CreateDynamicObject( 1279, 2148.932373, -2270.186767, 13.265235, 0.000000, 0.000000, 15.799990 ); - SetDynamicObjectMaterialText( CreateDynamicObject( 4731, 2150.383056, -2238.99, 15.793542, 0.000000, 0.000000, 75.300018 ), 0, "Zach's Drug Pound", 120, "Times New Roman", 64, 0, -1, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 4731, 2150.383056, -2238.99, 15.793542, 0.000000, 0.000000, 75.300018 ), 0, "The Drug Pound", 120, "Times New Roman", 64, 0, -1, 0, 1 ); CreateDynamicObject( 931, 2140.652832, -2290.355712, 14.757051, 0.000000, 0.000000, 45.000000 ); CreateDynamicObject( 931, 2139.003417, -2292.005126, 14.757051, 0.000000, 0.000000, 45.000000 ); CreateDynamicObject( 931, 2142.293701, -2288.714843, 14.757051, 0.000000, 0.000000, 45.000000 ); @@ -16365,7 +16365,348 @@ stock initializeObjects( ) SetDynamicObjectMaterial( CreateDynamicObject( 18762, -817.929992, 676.942016, 23.040000, 90.000000, 0.000000, 155.000000, -1, -1, -1 ), 0, 3924, "rc_warhoose", "white", -1124937 ); ApplyDynamicActorAnimation( CreateDynamicActor( 186, -790.101013, 668.494995, 24.556999, 53.500000, .worldid = -1, .interiorid = -1 ), "casino", "Slot_wait", 4.1, 1, 1, 1, 1, 0 ); ApplyDynamicActorAnimation( CreateDynamicActor( 187, -792.096008, 669.533996, 24.556999, -122.699996, .worldid = -1, .interiorid = -1 ), "casino", "Slot_wait", 4.1, 1, 1, 1, 1, 0 ); - CreateBlackjackTable( 50000, -790.151977, 662.466979, 19.318000, -25.000000, 0 ); - CreatePokerTable( 100000, 1000, -794.861022, 662.072021, 18.708000, 4, 0, 0 ); + CreateBlackjackTable( 1000000, -790.151977, 662.466979, 19.318000, -25.000000, 0 ); + CreatePokerTable( 5000000, 1000, -794.861022, 662.072021, 18.708000, 4, 0, 0 ); CreateRouletteTable( -783.210021, 656.974975, 19.337999, -25.000000, 0 ); + + // pornstar mansion nibble + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -724.064880, 1555.310668, 39.308643, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -730.755004, 1555.310668, 39.318626, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -730.755187, 1545.373046, 38.918636, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -721.415832, 1545.373046, 38.898670, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -727.326660, 1536.012695, 38.518653, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -729.341735, 1537.387329, 38.502651, 0.000000, 0.000000, 20.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -723.250854, 1559.820556, 33.918792, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -721.204040, 1559.359985, 33.879024, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -718.694213, 1544.676757, 33.928844, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -708.225036, 1547.355834, 33.928817, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -735.267211, 1552.836181, 41.318744, 90.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18980, -734.224975, 1550.827758, 29.860841, 0.000000, -26.600008, 0.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + CreateDynamicObject( 970, -737.939758, 1560.133789, 42.358791, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -723.250854, 1558.850585, 33.888858, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -713.193786, 1532.494628, 33.928844, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -724.064880, 1555.320678, 39.326637, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 14388, "dr_gsnew", "mp_gs_kitchfloor", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -730.745300, 1555.320678, 39.322639, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 14388, "dr_gsnew", "mp_gs_kitchfloor", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -714.657043, 1536.013061, 38.488662, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -721.415832, 1545.383056, 38.902671, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 14388, "dr_gsnew", "mp_gs_kitchfloor", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -730.745239, 1545.383056, 38.922668, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 14388, "dr_gsnew", "mp_gs_kitchfloor", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -727.336669, 1537.013671, 38.528644, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 14388, "dr_gsnew", "mp_gs_kitchfloor", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -714.645935, 1537.013671, 38.528644, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 14388, "dr_gsnew", "mp_gs_kitchfloor", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -729.335754, 1537.400146, 38.520648, 0.000000, 0.000000, 20.000000, -1, -1, -1 ), 0, 14388, "dr_gsnew", "mp_gs_kitchfloor", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -735.267211, 1557.829101, 41.318744, 90.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -733.261291, 1533.303466, 40.508747, 90.000000, 0.000000, 20.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -734.970275, 1538.003173, 40.506759, 90.000000, 0.000000, 20.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18980, -734.224975, 1559.818237, 29.860839, 0.000000, -26.600008, 0.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18980, -728.570617, 1532.879638, 31.605800, 0.000000, -45.500026, 20.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18980, -730.095214, 1537.071777, 31.605800, 0.000000, -45.500026, 20.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18980, -731.648254, 1541.337524, 31.605800, 0.000000, -45.500026, 20.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + CreateDynamicObject( 970, -740.140502, 1557.931640, 42.358791, 0.000000, 0.000000, -90.000000, -1, -1, -1 ); + CreateDynamicObject( 970, -740.140502, 1552.750610, 42.358791, 0.000000, 0.000000, -90.000000, -1, -1, -1 ); + CreateDynamicObject( 970, -737.939758, 1550.472290, 42.358791, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 970, -738.084350, 1539.330444, 41.538806, 0.000000, 0.000000, 20.000000, -1, -1, -1 ); + CreateDynamicObject( 970, -739.526672, 1536.390136, 41.538806, 0.000000, 0.000000, -70.000000, -1, -1, -1 ); + CreateDynamicObject( 970, -737.790100, 1531.615234, 41.538806, 0.000000, 0.000000, -70.000000, -1, -1, -1 ); + CreateDynamicObject( 970, -734.798095, 1530.297973, 41.538806, 0.000000, 0.000000, 20.000000, -1, -1, -1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -735.096862, 1540.078735, 43.482654, 0.000000, 0.000000, 20.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -735.236999, 1540.859497, 43.482654, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -735.247009, 1550.310791, 43.922615, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -735.247009, 1551.301757, 43.922615, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -732.022583, 1531.629394, 43.482654, 0.000000, 0.000000, 20.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -731.792663, 1531.519287, 43.482654, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -730.751403, 1557.822753, 45.925655, 90.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -730.751403, 1552.842285, 45.925682, 90.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -730.751403, 1547.842163, 45.925682, 90.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -730.751403, 1542.851562, 45.925682, 90.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -730.182983, 1539.723876, 45.923683, 90.000000, 0.000000, 20.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -728.476928, 1535.033691, 45.927680, 90.000000, 0.000000, 20.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -727.284118, 1534.487548, 45.929679, 90.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -717.354492, 1533.506591, 45.929679, 90.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -720.764587, 1538.504394, 45.929679, 90.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -720.764587, 1543.494628, 45.929679, 90.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -720.764587, 1548.474609, 45.929679, 90.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -720.764587, 1553.445922, 45.929679, 90.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -720.764587, 1557.833007, 45.929679, 90.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19466, -735.523437, 1542.455200, 42.378620, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3595, "dingbat01_la", "nt_bonav1", -268435456 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19466, -735.523437, 1548.686401, 42.378620, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3595, "dingbat01_la", "nt_bonav1", -268435456 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19466, -735.523437, 1545.505737, 42.378620, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3595, "dingbat01_la", "nt_bonav1", -268435456 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -735.247009, 1547.068969, 43.922615, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -735.247009, 1544.067382, 43.922615, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -735.247009, 1547.479370, 45.362586, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19466, -735.523437, 1548.686401, 44.268623, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3595, "dingbat01_la", "nt_bonav1", -268435456 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19466, -735.523437, 1545.504638, 44.268623, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3595, "dingbat01_la", "nt_bonav1", -268435456 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19466, -735.523437, 1542.455932, 44.268623, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3595, "dingbat01_la", "nt_bonav1", -268435456 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -735.247009, 1543.059326, 45.362586, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -730.792236, 1531.519287, 43.482654, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -729.811828, 1531.519287, 43.482654, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -734.755065, 1539.138793, 43.482654, 0.000000, 0.000000, 20.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -732.365112, 1532.569213, 43.482654, 0.000000, 0.000000, 20.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -734.416687, 1538.208251, 43.482654, 0.000000, 0.000000, 20.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -732.706726, 1533.509643, 43.482654, 0.000000, 0.000000, 20.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -733.554687, 1535.840698, 44.962642, 0.000000, 90.000000, -70.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -735.247009, 1557.863403, 43.922615, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -735.247009, 1556.872680, 43.922615, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -735.247009, 1552.282348, 43.922615, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -735.247009, 1554.762084, 44.952583, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -727.997009, 1532.491821, 44.952583, 0.000000, 90.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + CreateDynamicObject( 2600, -738.659606, 1534.006713, 41.788753, 0.000000, 0.000000, -70.000000, -1, -1, -1 ); + CreateDynamicObject( 2600, -740.140502, 1555.347534, 42.588726, 0.000000, 0.000000, -90.000000, -1, -1, -1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18980, -725.186767, 1530.518554, 28.538639, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 6056, "venice_law", "stonewall_la", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18980, -725.186767, 1529.518554, 28.538639, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 6056, "venice_law", "stonewall_la", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18980, -729.807067, 1530.518554, 28.538639, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 6056, "venice_law", "stonewall_la", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18980, -729.807067, 1529.518554, 28.538639, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 6056, "venice_law", "stonewall_la", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18980, -729.622741, 1528.839111, 28.540641, 0.000000, 0.000000, 30.000000, -1, -1, -1 ), 0, 6056, "venice_law", "stonewall_la", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18980, -729.127502, 1527.981079, 28.540641, 0.000000, 0.000000, 30.000000, -1, -1, -1 ), 0, 6056, "venice_law", "stonewall_la", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18980, -724.994628, 1528.895874, 28.536640, 0.000000, 0.000000, 35.000000, -1, -1, -1 ), 0, 6056, "venice_law", "stonewall_la", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18980, -724.426635, 1528.084960, 27.536642, 0.000000, 0.000000, 35.000000, -1, -1, -1 ), 0, 6056, "venice_law", "stonewall_la", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18980, -728.614257, 1527.177612, 28.536640, 0.000000, 0.000000, 35.000000, -1, -1, -1 ), 0, 6056, "venice_law", "stonewall_la", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 14407, -726.150085, 1527.938842, 37.824375, 0.000000, 0.000000, -145.300048, -1, -1, -1 ), 0, 896, "underwater", "greyrockbig", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18980, -727.661865, 1525.818725, 27.536640, 0.000000, 0.000000, 35.000000, -1, -1, -1 ), 0, 6056, "venice_law", "stonewall_la", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18980, -728.136047, 1526.500610, 28.538642, 0.000000, 0.000000, 35.000000, -1, -1, -1 ), 0, 6056, "venice_law", "stonewall_la", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 14407, -728.235168, 1532.929321, 37.822376, 0.000000, 0.000000, 14.499779, -1, -1, -1 ), 0, 896, "underwater", "greyrockbig", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 14407, -728.542968, 1534.120605, 37.812374, 0.000000, 0.000000, 14.499779, -1, -1, -1 ), 0, 896, "underwater", "greyrockbig", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -727.275024, 1533.516601, 45.929679, 90.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3922, "bistro", "marblekb_256128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -706.743347, 1531.513671, 33.928844, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + CreateDynamicObject( 638, -723.898193, 1531.488891, 41.588657, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + CreateDynamicObject( 638, -720.668090, 1531.488891, 41.588657, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -719.672607, 1547.881713, 39.806606, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 14388, "dr_gsnew", "AH_flroortile12", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -716.702514, 1546.360717, 39.810604, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 14388, "dr_gsnew", "AH_flroortile12", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -722.163085, 1548.372192, 36.816703, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 14388, "dr_gsnew", "AH_flroortile12", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -722.161071, 1549.825073, 39.806720, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 14388, "dr_gsnew", "AH_flroortile12", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -721.208129, 1548.371826, 41.800704, 0.000000, 90.000000, 89.800003, -1, -1, -1 ), 0, 14388, "dr_gsnew", "AH_flroortile12", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -720.520629, 1547.889892, 39.316631, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 14388, "dr_gsnew", "AH_flroortile12", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -717.670166, 1545.678833, 39.318630, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 14388, "dr_gsnew", "AH_flroortile12", -16 ); + CreateDynamicObject( 2011, -719.739501, 1542.356567, 41.356700, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 11731, -723.295776, 1555.159912, 41.792694, 0.000000, 0.000000, -90.000000, -1, -1, -1 ); + CreateDynamicObject( 2597, -722.675598, 1551.892211, 42.642646, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 3031, -729.930236, 1550.844238, 43.269870, -0.199999, 0.000000, 34.000003, -1, -1, -1 ); + CreateDynamicObject( 16780, -726.233032, 1555.145263, 45.422576, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 1763, -726.813537, 1551.755859, 41.812698, 0.000000, 0.000000, 161.699951, -1, -1, -1 ); + CreateDynamicObject( 1819, -727.381225, 1552.458862, 41.792728, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 1504, -728.334533, 1558.320434, 41.802669, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 10226, "sfeship1", "CJ_RED_LEATHER", 0 ); + CreateDynamicObject( 19611, -730.322631, 1555.079223, 41.812713, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 367, -730.423645, 1554.980712, 43.401981, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 14891, -724.457702, 1556.190185, 43.892620, 0.000000, 0.000000, 91.899978, -1, -1, -1 ); + CreateDynamicObject( 2115, -730.414672, 1556.167846, 41.812675, 0.000000, 0.000000, 77.599998, -1, -1, -1 ); + CreateDynamicObject( 2606, -730.204956, 1556.647460, 42.832653, 0.000000, 0.000000, -106.000000, -1, -1, -1 ); + CreateDynamicObject( 2776, -731.311523, 1556.844482, 42.312664, 0.000000, 0.000000, 44.199993, -1, -1, -1 ); + CreateDynamicObject( 367, -730.344787, 1552.495605, 43.391513, 0.000000, 0.000000, 22.999982, -1, -1, -1 ); + CreateDynamicObject( 19611, -730.322631, 1552.647949, 41.812713, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 2409, -734.672241, 1547.028930, 41.842704, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + CreateDynamicObject( 2409, -734.672241, 1544.077026, 41.842704, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + CreateDynamicObject( 2371, -733.918762, 1548.685058, 41.392757, 0.000000, 0.000000, -48.699993, -1, -1, -1 ); + CreateDynamicObject( 2381, -733.394226, 1549.059570, 42.202743, 0.000000, 0.000000, 41.200046, -1, -1, -1 ); + CreateDynamicObject( 2372, -733.762634, 1541.824584, 41.412700, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 2394, -733.972839, 1542.415649, 42.082649, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -717.486022, 1533.021728, 38.526645, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 14388, "dr_gsnew", "mp_gs_kitchfloor", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -722.386291, 1533.031494, 38.518653, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -717.854736, 1531.522094, 38.520652, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -717.486022, 1540.503295, 38.526645, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 14388, "dr_gsnew", "mp_gs_kitchfloor", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -722.386291, 1540.501953, 38.518653, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 16150, "ufo_bar", "GEwhite1_64", -16 ); + CreateDynamicObject( 19604, -720.516967, 1538.277587, 40.452701, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 19604, -720.516967, 1538.277587, 40.552700, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 2836, -723.182006, 1534.935791, 41.028736, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + CreateDynamicObject( 2836, -724.202148, 1537.496582, 41.028736, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 1808, -734.549560, 1551.802124, 41.792728, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + CreateDynamicObject( 321, -722.864929, 1535.649780, 41.138866, 0.000000, 111.000015, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 321, -722.771301, 1535.446533, 41.128227, 0.000000, 111.000015, -23.399999, -1, -1, -1 ); + CreateDynamicObject( 2579, -719.256164, 1543.838378, 43.692672, 0.000000, 0.000000, -90.000000, -1, -1, -1 ); + CreateDynamicObject( 2578, -719.256164, 1545.590087, 43.692672, 0.000000, 0.000000, -90.000000, -1, -1, -1 ); + CreateDynamicObject( 2588, -733.675048, 1558.291625, 43.342620, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 2587, -732.513977, 1558.291625, 43.342620, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -728.225585, 1545.797607, 43.120658, 0.000000, 0.000000, 89.800003, -1, -1, -1 ), 0, 14388, "dr_gsnew", "AH_flroortile12", -16 ); + CreateDynamicObject( 2011, -728.217895, 1544.797729, 41.362758, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 1622, -719.839965, 1531.363891, 45.363052, 0.000000, -12.699997, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 1886, -734.134399, 1557.825073, 45.511791, 17.100000, 0.000000, 52.200008, -1, -1, -1 ); + CreateDynamicObject( 1886, -719.953979, 1533.466918, 45.446277, 10.599995, 0.000000, -121.799972, -1, -1, -1 ); + CreateDynamicObject( 1622, -732.986022, 1531.063598, 45.844406, 0.000000, -12.699997, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 2011, -731.318420, 1532.505249, 41.002796, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + + // Hydrogen mansion + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -2629.320068, 351.585998, 1.332000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2644.336914, 352.466003, 6.272999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2648.837890, 354.485992, 3.773000, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2650.839111, 357.466003, 3.773000, 0.000000, 90.000000, 0.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2648.837890, 396.645996, 3.773000, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2650.839111, 393.645996, 3.773000, 0.000000, 90.000000, 0.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2644.336914, 398.654998, 6.272999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -2629.320068, 399.644989, 1.332000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -2617.310058, 363.595001, 1.332000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -2617.310058, 387.635986, 3.322000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 18981, "none", "none", 1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2650.839111, 384.596008, 3.773000, 0.000000, 90.000000, 0.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2650.839111, 366.514007, 3.773000, 0.000000, 90.000000, 0.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -2636.822021, 364.489990, 8.284000, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 17298, "weefarmcuntw", "sjmbigold1", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -2636.825927, 386.644989, 8.279999, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 17298, "weefarmcuntw", "sjmbigold1", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2650.825927, 389.115997, 8.277000, 90.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 17298, "weefarmcuntw", "sjmbigold1", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2650.825927, 361.984985, 8.286999, 90.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 17298, "weefarmcuntw", "sjmbigold1", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -2636.825927, 364.485992, 2.894000, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 17298, "weefarmcuntw", "sjmbigold1", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -2636.825927, 386.686004, 2.898000, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 17298, "weefarmcuntw", "sjmbigold1", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -2648.335937, 361.997985, 0.899999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 17298, "weefarmcuntw", "sjmbigold1", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -2648.335937, 389.138000, 0.908999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 17298, "weefarmcuntw", "sjmbigold1", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -2629.318115, 363.589996, 13.336000, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 3904, "libertyfar", "fishroof", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -2629.315917, 387.622009, 13.338000, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 3904, "libertyfar", "fishroof", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2644.024902, 398.643005, 9.310000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2646.104980, 398.643005, 9.310000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2648.768066, 396.203002, 9.310000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2651.149902, 366.532989, 9.310000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2651.149902, 357.463012, 9.310000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2644.336914, 398.654998, 1.273000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2644.336914, 352.466003, 1.273000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2648.826904, 379.105987, 0.915000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2648.834960, 371.947998, 0.916999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2652.841064, 389.096008, 1.215000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2652.841064, 362.015991, 1.215000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19325, -2653.297119, 362.014007, 5.763000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3595, "dingbat01_la", "nt_bonav1", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19325, -2653.297119, 389.144012, 5.763000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3595, "dingbat01_la", "nt_bonav1", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2650.836914, 385.347991, 3.775000, 0.000000, 90.000000, 0.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2650.836914, 392.967987, 3.775000, 0.000000, 90.000000, 0.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2650.836914, 365.828002, 3.775000, 0.000000, 90.000000, 0.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2650.836914, 358.238006, 3.775000, 0.000000, 90.000000, 0.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2650.840087, 389.145996, 8.243000, 90.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2650.840087, 361.966003, 8.243000, 90.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2639.843017, 357.085998, 10.392999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2639.843017, 394.186004, 10.392999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19325, -2639.927001, 363.295013, 10.815999, 0.000000, 0.000000, 180.000000, -1, -1, -1 ), 0, 3595, "dingbat01_la", "nt_bonav1", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19325, -2639.927001, 387.976013, 10.815999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3595, "dingbat01_la", "nt_bonav1", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -2639.843017, 384.154998, 10.392999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -2639.843017, 367.105010, 10.392999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19325, -2639.927001, 375.605010, 10.815999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3595, "dingbat01_la", "nt_bonav1", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -2639.843017, 379.364990, 10.392999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -2639.843017, 371.885009, 10.392999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2624.824951, 368.195007, 5.663000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2624.843017, 380.386993, 8.114999, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -2622.839111, 382.885009, 7.772999, 90.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18765, -2622.819091, 368.515014, 7.772999, 90.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2624.844970, 371.005004, 8.112999, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2624.844970, 366.024993, 8.112999, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2624.844970, 361.024993, 8.112999, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2624.844970, 356.024993, 8.112999, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2624.841064, 353.605987, 8.116999, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2624.844970, 385.385009, 8.112999, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2624.844970, 390.385009, 8.112999, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2624.844970, 395.385009, 8.112999, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2624.841064, 397.625000, 8.116999, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2620.632080, 375.545013, 8.112999, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2648.829101, 367.834014, 3.773000, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2648.829101, 383.334014, 3.773000, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -2648.829101, 372.834014, 8.279000, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -2648.829101, 378.343994, 8.279000, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -2648.826904, 378.036010, 5.730999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -2648.826904, 372.936004, 5.830999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -2648.826904, 375.885986, 8.274999, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19325, -2648.923095, 381.773986, 5.712999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3595, "dingbat01_la", "nt_bonav1", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2648.826904, 380.955993, -1.294999, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2648.826904, 370.425994, -1.294999, 0.000000, 90.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19325, -2648.923095, 369.164001, 5.712999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 3595, "dingbat01_la", "nt_bonav1", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2653.271972, 359.592987, 9.310000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2653.271972, 364.393005, 9.310000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2651.149902, 393.632995, 9.310000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2651.149902, 384.562988, 9.310000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2653.271972, 391.493011, 9.310000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2653.271972, 386.692993, 9.310000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2648.768066, 354.803009, 9.310000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2646.284912, 352.384002, 9.310000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2648.768066, 369.062988, 9.310000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2648.768066, 382.013000, 9.310000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2648.768066, 373.382995, 9.310000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2648.768066, 377.692993, 9.310000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19325, -2644.999023, 383.544006, 5.663000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 3595, "dingbat01_la", "nt_bonav1", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19325, -2645.009033, 367.433990, 5.663000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 3595, "dingbat01_la", "nt_bonav1", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -2641.232910, 367.406005, 5.830999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -2641.232910, 383.536010, 5.830999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2644.311035, 383.537994, 1.123000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2644.311035, 367.407989, 1.123000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + CreateDynamicObject( 3524, -2640.018066, 383.548004, 1.848000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + CreateDynamicObject( 3524, -2640.018066, 367.408996, 1.848000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + CreateDynamicObject( 1723, -2651.354980, 391.187988, 3.407999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 1723, -2649.333007, 387.238006, 3.407999, 0.000000, 0.000000, 180.000000, -1, -1, -1 ); + CreateDynamicObject( 2311, -2651.085937, 389.251007, 3.398999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 14651, -2634.831054, 356.332000, 5.504000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + CreateDynamicObject( 2184, -2648.553955, 360.933990, 3.400000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + CreateDynamicObject( 19999, -2650.260986, 362.058990, 3.390000, 0.000000, 0.000000, 70.400001, -1, -1, -1 ); + CreateDynamicObject( 1550, -2648.972900, 360.351989, 3.799999, 0.000000, 0.000000, -148.500000, -1, -1, -1 ); + CreateDynamicObject( 1550, -2649.049072, 363.562988, 3.799999, 0.000000, 0.000000, -148.500000, -1, -1, -1 ); + CreateDynamicObject( 1829, -2651.914062, 364.632995, 3.844000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 2332, -2651.072998, 364.973999, 3.844000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 355, -2650.404052, 364.838012, 3.664000, 160.899993, 89.500000, 79.300003, -1, -1, -1 ); + CreateDynamicObject( 964, -2651.479980, 359.666992, 3.400000, 0.000000, 0.000000, 109.099998, -1, -1, -1 ); + CreateDynamicObject( 1575, -2648.823974, 361.772003, 4.170000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 14600, -2644.179931, 353.506011, 4.400000, 0.000000, 0.000000, -96.800003, -1, -1, -1 ); + CreateDynamicObject( 2611, -2648.288085, 356.324005, 4.964000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + CreateDynamicObject( 2111, -2638.162109, 360.971008, 3.783999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 2189, -2638.162109, 360.971008, 4.214000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 2120, -2636.876953, 361.160003, 4.033999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 2120, -2637.656005, 359.644989, 4.033999, 0.000000, 0.000000, -50.000000, -1, -1, -1 ); + CreateDynamicObject( 2120, -2639.349121, 359.930999, 4.033999, 0.000000, 0.000000, -143.199996, -1, -1, -1 ); + CreateDynamicObject( 2120, -2638.824951, 361.977996, 4.033999, 0.000000, 0.000000, 111.599998, -1, -1, -1 ); + CreateDynamicObject( 1557, -2625.282958, 360.631011, 3.384000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + CreateDynamicObject( 1557, -2625.282958, 363.661010, 3.384000, 0.000000, 0.000000, -90.000000, -1, -1, -1 ); + CreateDynamicObject( 638, -2625.749023, 383.877014, 4.064000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 638, -2629.188964, 352.457000, 4.064000, 0.000000, 0.000000, -90.000000, -1, -1, -1 ); + CreateDynamicObject( 3660, -2638.563964, 396.993011, 4.803999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 3660, -2631.968994, 398.433990, 4.803999, 0.000000, 0.000000, 180.000000, -1, -1, -1 ); + CreateDynamicObject( 19799, -2625.266113, 391.463989, 4.868000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + CreateDynamicObject( 638, -2625.749023, 396.367004, 4.064000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 638, -2625.749023, 356.177001, 4.064000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 638, -2625.749023, 367.946990, 4.064000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -2633.232910, 369.406005, 5.830999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18762, -2633.232910, 381.536010, 5.830999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + CreateDynamicObject( 1824, -2638.612060, 389.881988, 3.868000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 18014, -2645.002929, 382.656005, 3.788000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + CreateDynamicObject( 18014, -2645.002929, 368.274993, 3.788000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + CreateDynamicObject( 3810, -2647.637939, 372.946990, 5.607999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 3810, -2647.637939, 378.106994, 5.607999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -2640.833984, 376.194000, 2.868999, 0.000000, 90.000000, 0.000000, -1, -1, -1 ), 0, 4601, "lan2_gm1", "grasstype10", -16 ); + CreateDynamicObject( 3660, -2635.689941, 396.994995, 4.806000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 1597, -2652.556884, 389.130004, 11.182999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 1597, -2652.556884, 362.089996, 11.182999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 970, -2644.202880, 352.384002, 9.310000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 1, 14626, "mafcassigns1", "ab_goldpipe", 0 ); + CreateDynamicObject( 14446, -2632.521972, 353.834991, 9.394000, 0.000000, 0.000000, 180.000000, -1, -1, -1 ); + CreateDynamicObject( 1828, -2632.444091, 357.550994, 8.763999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19174, -2632.528076, 352.076995, 11.423999, 0.000000, 0.000000, 180.000000, -1, -1, -1 ), 0, 2258, "picture_frame_clip", "CJ_PAINTING9", 0 ); + CreateDynamicObject( 19806, -2632.444091, 357.550994, 12.263999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 14867, -2638.899902, 357.028991, 10.303999, 0.000000, 0.000000, -90.000000, -1, -1, -1 ), 0, 12954, "sw_furniture", "CJ_WOOD5", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19174, -2625.347900, 360.127014, 11.423999, 0.000000, 0.000000, -90.000000, -1, -1, -1 ), 0, 2255, "picture_frame_clip", "CJ_PAINTING8", -16 ); + CreateDynamicObject( 2230, -2625.329101, 356.765991, 8.784000, 0.000000, 0.000000, -90.000000, -1, -1, -1 ); + CreateDynamicObject( 2230, -2625.329101, 354.055999, 8.784000, 0.000000, 0.000000, -90.000000, -1, -1, -1 ); + CreateDynamicObject( 2227, -2625.120117, 355.403991, 8.803999, 0.000000, 0.000000, -90.000000, -1, -1, -1 ); + CreateDynamicObject( 1762, -2628.129882, 354.048004, 8.793999, 0.000000, 0.000000, 106.300003, -1, -1, -1 ); + CreateDynamicObject( 1762, -2628.281982, 356.393005, 8.793999, 0.000000, 0.000000, 75.300003, -1, -1, -1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 3352, -2630.406005, 399.174987, 10.753999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 8396, "sphinx01", "black32", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 3352, -2634.385009, 399.177001, 10.755999, 0.000000, 0.000000, 90.000000, -1, -1, -1 ), 0, 8396, "sphinx01", "black32", -16 ); + CreateDynamicObject( 1726, -2628.978027, 393.726989, 8.770000, 0.000000, 0.000000, 180.000000, -1, -1, -1 ); + CreateDynamicObject( 1726, -2633.690917, 393.726989, 8.770000, 0.000000, 0.000000, 180.000000, -1, -1, -1 ); + CreateDynamicObject( 1726, -2628.978027, 390.726989, 8.770000, 0.000000, 0.000000, 180.000000, -1, -1, -1 ); + CreateDynamicObject( 1726, -2633.690917, 390.726989, 8.770000, 0.000000, 0.000000, 180.000000, -1, -1, -1 ); + CreateDynamicObject( 1726, -2633.690917, 387.726989, 8.770000, 0.000000, 0.000000, 180.000000, -1, -1, -1 ); + CreateDynamicObject( 1726, -2628.978027, 387.726989, 8.770000, 0.000000, 0.000000, 180.000000, -1, -1, -1 ); + CreateDynamicObject( 638, -2639.393066, 375.673004, 9.449999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 3352, -2634.695068, 390.796997, 8.736000, 0.000000, 90.000000, 0.000000, -1, -1, -1 ), 0, 10412, "hotel1", "carpet_red_256", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 3352, -2630.002929, 390.796997, 8.736000, 0.000000, 90.000000, 0.000000, -1, -1, -1 ), 0, 10412, "hotel1", "carpet_red_256", -16 ); + CreateDynamicObject( 2232, -2638.583007, 398.778015, 9.390000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 2232, -2638.583007, 398.778015, 10.579999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 2232, -2626.165039, 398.778015, 9.390000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 2232, -2626.165039, 398.778015, 10.569999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 1824, -2632.512939, 375.661010, 9.270000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19174, -2625.347900, 366.886993, 11.423999, 0.000000, 0.000000, -90.000000, -1, -1, -1 ), 0, 2255, "picture_frame_clip", "CJ_PAINTING4", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19174, -2625.347900, 383.027008, 11.423999, 0.000000, 0.000000, -90.000000, -1, -1, -1 ), 0, 2255, "picture_frame_clip", "CJ_PAINTING27", 0 ); + CreateDynamicObject( 1978, -2632.250000, 368.812011, 9.845000, 0.000000, 0.000000, 90.000000, -1, -1, -1 ); + CreateDynamicObject( 1255, -2648.751953, 362.981994, 9.343999, 0.000000, 0.000000, 135.000000, -1, -1, -1 ); + CreateDynamicObject( 1255, -2648.751953, 359.951995, 9.354000, 0.000000, 0.000000, 135.000000, -1, -1, -1 ); + CreateDynamicObject( 1255, -2648.751953, 387.122009, 9.354000, 0.000000, 0.000000, -135.000000, -1, -1, -1 ); + CreateDynamicObject( 1255, -2648.751953, 390.622009, 9.354000, 0.000000, 0.000000, -135.000000, -1, -1, -1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 13011, -2642.392089, 392.915008, 10.444000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 1, 12954, "sw_furniture", "CJ_WOOD5", 0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19700, -2627.788085, 386.330993, 13.715999, 0.000000, 0.000000, -90.000000, -1, -1, -1 ), 0, 16375, "des_boneyard", "roucghstone", -268435456 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19700, -2627.788085, 365.940002, 13.715999, 0.000000, 0.000000, -90.000000, -1, -1, -1 ), 0, 16375, "des_boneyard", "roucghstone", -268435456 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18766, -2621.829101, 399.618988, 14.248000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 18981, "none", "none", 1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 18981, -2617.310058, 387.635986, 1.322000, 0.000000, 0.000000, 0.000000, -1, -1, -1 ), 0, 12959, "sw_library", "sw_brick05", -4368 ); + CreateDynamicObject( 3505, -2651.179931, 382.703002, 3.355999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 3505, -2651.179931, 368.513000, 3.355999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + CreateDynamicObject( 3461, -2649.589111, 378.070007, 4.913000, 0.000000, 0.000000, -90.000000, -1, -1, -1 ); + CreateDynamicObject( 3461, -2649.589111, 372.910003, 4.913000, 0.000000, 0.000000, -90.000000, -1, -1, -1 ); + CreateDynamicObject( 869, -2651.215087, 379.765014, 3.759999, 0.000000, 0.000000, 180.000000, -1, -1, -1 ); + CreateDynamicObject( 869, -2651.215087, 371.304992, 3.759999, 0.000000, 0.000000, 0.000000, -1, -1, -1 ); + tmpVariable = CreateDynamicObject( 8330, -2648.656982, 375.415008, 10.782999, 0.000000, 0.000000, -90.000000, -1, -1, -1 ); + SetDynamicObjectMaterialText( tmpVariable, 0, "Hydro's Mansion", 130, "Times new roman", 70, 0, -16512, 0, 1 ); + SetDynamicObjectMaterialText( tmpVariable, 1, "Hydro's Mansion", 130, "Times new roman", 70, 0, 0, 0, 1 ); + CreateDynamicObject( 8948, -2628.886962, 400.118988, 5.085999, 0.000000, 0.000000, -90.000000, -1, -1, -1 ); } diff --git a/pawno/include/irresistible/cnr/static/removed_buildings.inc b/pawno/include/irresistible/cnr/static/removed_buildings.inc index 97f3c01..056aea3 100644 --- a/pawno/include/irresistible/cnr/static/removed_buildings.inc +++ b/pawno/include/irresistible/cnr/static/removed_buildings.inc @@ -400,4 +400,8 @@ stock removeExcessiveBuildings( playerid ) RemoveBuildingForPlayer(playerid, 5269, 2146.3750, -2248.7969, 14.6172, 0.25); RemoveBuildingForPlayer(playerid, 5132, 2163.2891, -2251.6094, 14.1406, 0.25); RemoveBuildingForPlayer(playerid, 5259, 2168.8438, -2246.7813, 13.9375, 0.25); + + // Hydrogen City Hall Map + RemoveBuildingForPlayer(playerid, 10522, -2637.4141, 376.0391, 15.8984, 0.25); + RemoveBuildingForPlayer(playerid, 10381, -2637.4141, 376.0391, 15.8984, 0.25); } diff --git a/pawno/include/irresistible/cnr/static/server_objects.inc b/pawno/include/irresistible/cnr/static/server_objects.inc index db48e1c..512f5fa 100644 --- a/pawno/include/irresistible/cnr/static/server_objects.inc +++ b/pawno/include/irresistible/cnr/static/server_objects.inc @@ -8,6 +8,47 @@ /* ** Functions ** */ stock initializeServerObjects( ) { + // Classes + CreateDynamicObject( 14846, 242.121002, 77.313003, 1005.078002, 0.000000, 0.000000, 0.000000, .priority = 9999, .streamdistance = -1.0 ); + CreateDynamicObject( 2605, 237.936004, 85.197998, 1004.431030, 0.000000, 0.000000, 80.000000, .priority = 9999, .streamdistance = -1.0 ); + CreateDynamicObject( 2356, 238.682006, 84.823997, 1004.057983, 0.000000, 0.000000, 61.299999, .priority = 9999, .streamdistance = -1.0 ); + CreateDynamicObject( 19623, 236.035995, 86.892997, 1005.669982, 0.000000, 0.000000, -90.000000, .priority = 9999, .streamdistance = -1.0 ); + CreateDynamicObject( 19611, 236.072998, 86.892997, 1004.038024, 0.000000, 0.000000, 0.000000, .priority = 9999, .streamdistance = -1.0 ); + SetDynamicObjectMaterial( CreateDynamicObject( 2960, 229.427993, 85.385002, 1006.333984, 0.000000, 90.000000, 0.000000, .priority = 9999, .streamdistance = -1.0 ), 0, 18217, "mtbfencecs_t", "Metal1_128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19328, 229.037002, 87.126998, 1005.215026, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, 8395, "pyramid", "white", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19328, 229.035003, 87.125000, 1005.713012, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, 8395, "pyramid", "white", -16 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.065002, 87.444999, 1006.453979, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, ". _________ .", 140, "aRIAL", 30, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.065002, 87.444999, 1006.104003, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, ". _________ .", 140, "aRIAL", 30, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.065002, 87.444999, 1005.754028, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, ". _________ .", 140, "aRIAL", 30, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.065002, 87.444999, 1005.403991, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, ". _________ .", 140, "aRIAL", 30, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.065002, 87.444999, 1005.054016, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, ". _________ .", 140, "aRIAL", 30, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.065002, 87.444999, 1006.223999, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, "_____", 140, "aRIAL", 30, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.065002, 87.444999, 1006.333984, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, "_____", 140, "aRIAL", 30, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.065002, 87.444999, 1005.883972, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, "_____", 140, "aRIAL", 30, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.065002, 87.444999, 1005.994018, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, "_____", 140, "aRIAL", 30, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.065002, 87.444999, 1005.523986, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, "_____", 140, "aRIAL", 30, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.065002, 87.444999, 1005.633972, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, "_____", 140, "aRIAL", 30, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 2960, 229.427993, 88.864997, 1006.333984, 0.000000, 90.000000, 0.000000, .priority = 9999, .streamdistance = -1.0 ), 0, 18217, "mtbfencecs_t", "Metal1_128", -16 ); + SetDynamicObjectMaterial( CreateDynamicObject( 2834, 230.143997, 86.521003, 1004.057983, 0.000000, 0.000000, 8.199999, .priority = 9999, .streamdistance = -1.0 ), 0, 6287, "pierc_law2", "bluemetal", -16 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.065002, 87.444999, 1005.283996, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, "_____", 140, "aRIAL", 30, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.065002, 87.444999, 1005.164001, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, "_____", 140, "aRIAL", 30, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterial( CreateDynamicObject( 19377, 228.938995, 87.805999, 1005.039001, 0.000000, 0.000000, 0.000000, .priority = 9999, .streamdistance = -1.0 ), 0, 19377, "none", "none", 1 ); + CreateDynamicObject( 927, 229.072006, 89.900001, 1005.299011, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ); + CreateDynamicObject( 927, 229.072006, 84.360000, 1005.698974, 0.000000, 180.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ); + CreateDynamicObject( 927, 229.072006, 82.709999, 1006.700012, 0.000000, -90.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.054992, 87.705001, 1006.414001, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, "7'", 140, "arial", 40, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.054992, 87.705001, 1006.064025, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, "6'", 140, "arial", 40, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.054992, 87.705001, 1005.713989, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, "5'", 140, "arial", 40, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.054992, 87.705001, 1005.364013, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, "4'", 140, "arial", 40, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19328, 229.054992, 87.705001, 1005.013977, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, "3'", 140, "arial", 40, 1, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19861, 235.143997, 86.369003, 1008.018981, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, "Irresistible Gaming", 130, "IMPACT", 40, 1, -1, 0, 1 ); + SetDynamicObjectMaterialText( CreateDynamicObject( 19861, 235.143997, 88.598999, 1008.018981, 0.000000, 0.000000, 90.000000, .priority = 9999, .streamdistance = -1.0 ), 0, "Presents", 130, "IMPACT", 40, 1, -15019521, 0, 1 ); + tmpVariable = CreateDynamicObject( 18066, 229.000000, 86.862998, 1006.598999, -8.199995, 0.000000, -90.000000, .priority = 9999, .streamdistance = -1.0 ); + SetDynamicObjectMaterialText( tmpVariable, 0, "SF-CNR", 130, "IMPACT", 70, 0, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( tmpVariable, 1, "SF-CNR", 130, "IMPACT", 70, 0, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( tmpVariable, 2, "SF-CNR", 130, "IMPACT", 70, 0, -16777216, 0, 1 ); + SetDynamicObjectMaterialText( tmpVariable, 3, "SF-CNR", 130, "IMPACT", 70, 0, -16777216, 0, 1 ); + // V.I.P Lounge CreateDynamicObject( 18981, -1936.689331, 860.416503, 1207.932006, 0.000000, 90.000000, 0.000000 ); CreateDynamicObject( 18981, -1936.689331, 835.437072, 1207.932006, 0.000000, 90.000000, 0.000000 ); diff --git a/pawno/include/irresistible/colors.inc b/pawno/include/irresistible/colors.inc index 5b32d4b..1864333 100644 --- a/pawno/include/irresistible/colors.inc +++ b/pawno/include/irresistible/colors.inc @@ -29,7 +29,6 @@ #define COLOR_YELLOW 0xFFFF00FF #define COLOR_ORANGE 0xEE9911FF #define COLOR_POLICE 0x3E7EFF70 -#define COLOR_MAYOR 0x99000070 #define COLOR_GREY 0xC0C0C0FF #define COLOR_WHITE 0xFFFFFFFF #define COLOR_PINK 0xFF0770FF @@ -42,7 +41,7 @@ #define COLOR_ARMY 0x954BFF70 #define COLOR_CIA 0x19197000 #define COLOR_FIREMAN 0xA8343470 -#define COLOR_MEDIC 0x00CC0070 +#define COLOR_MEDIC 0x00FF8070 #define COLOR_CONNECT 0x22BB22AA #define COLOR_DISCONNECT 0xC0C0C0AA #define COLOR_TIMEOUT 0x990099AA diff --git a/pawno/include/irresistible/features/gangs/gangs.inc b/pawno/include/irresistible/features/gangs/gangs.inc new file mode 100644 index 0000000..47274b9 --- /dev/null +++ b/pawno/include/irresistible/features/gangs/gangs.inc @@ -0,0 +1,15 @@ +/* + * Irresistible Gaming (c) 2018 + * Developed by Lorenc Pekaj + * Module: gangs.inc + * Purpose: gang system + */ + +/* ** Includes ** */ +// #include < YSI\y_hooks > + +/* ** Definitions ** */ +#define MAX_GANGS ( MAX_PLAYERS ) // safest is MAX_PLAYERS +#define INVALID_GANG_ID ( -1 ) + +#define MAX_COLEADERS ( 3 ) diff --git a/pawno/include/irresistible/features/gangs/turfs.inc b/pawno/include/irresistible/features/gangs/turfs.inc new file mode 100644 index 0000000..dfe54d9 --- /dev/null +++ b/pawno/include/irresistible/features/gangs/turfs.inc @@ -0,0 +1,447 @@ +/* + * Irresistible Gaming (c) 2018 + * Developed by Lorenc Pekaj + * Module: + * Purpose: + */ + +/* ** Includes ** */ +#include < YSI\y_hooks > + +/* ** Definitions ** */ +#define MAX_TURFS ( sizeof( g_gangzoneData ) ) + +#define TURF_TAKEOVER_TIME ( 65 ) // time = -5 * members + 70 <- [y-intercept] +#define TURF_TAKEOVER_TIME_MIN ( 20 ) // minimum of 20 seconds + +#define TAKEOVER_NEEDED_PEOPLE ( 1 ) + +/* + Mean (μ): 61551.012315113 + Median: 38190.51 + Modes: 36520.39 56000.00 + Lowest value: 1561.59 + Highest value: 663634.31 + Range: 662072.72 + Interquartile range: 54438.43 + First quartile: 19224.91 + Third quartile: 73663.34 + Variance (σ2): 5620059337.0135 + Standard deviation (σ): 74967.055010941 + Quartile deviation: 27219.215 + Mean absolute deviation (MAD): 47203.259159645 +*/ + +#define TURF_SIZE_SMALL 19224.91 +#define TURF_SIZE_LARGE 73663.34 + +/* ** Variables ** */ +enum e_GANG_ZONE_DATA +{ + E_NAME[ 16 ], + Float: E_MIN_X, + Float: E_MIN_Y, + Float: E_MAX_X, + Float: E_MAX_Y, + Float: E_SIZE, + E_CITY +}; + +new const + g_gangzoneData[ ] [ e_GANG_ZONE_DATA ] = + { + { "ELS3c", 2381.677, -1494.030, 2421.030, -1454.348, 1561.60, CITY_LS }, + { "LVA5", 1236.630, 1163.410, 1277.050, 1203.280, 1611.54, CITY_LV }, + { "BINT3", 1277.050, 1044.687, 1315.348, 1087.630, 1644.62, CITY_LV }, + { "SUN3c", 1252.328, -926.999, 1357.000, -910.169, 1761.63, CITY_LS }, + { "LVA4", 1315.348, 1044.687, 1375.598, 1087.630, 2587.31, CITY_LV }, + { "LFL1a", 2581.729, -1454.348, 2632.830, -1393.420, 3113.48, CITY_LS }, + { "LDT1a", 1370.848, -1170.869, 1463.900, -1130.848, 3724.03, CITY_LS }, + { "ESPE1", -1620.300, 1176.520, -1580.010, 1274.260, 3937.94, CITY_SF }, + { "JEF1a", 2185.330, -1210.739, 2281.447, -1154.588, 5397.06, CITY_LS }, + { "MUL7b", 1318.130, -910.169, 1357.000, -768.026, 5525.09, CITY_LS }, + { "JEF3a", 1996.910, -1449.670, 2056.860, -1350.718, 5932.18, CITY_LS }, + { "JTW2", 1236.630, 2142.860, 1297.468, 2243.229, 6106.24, CITY_LV }, + { "JEF3c", 2124.656, -1494.030, 2266.208, -1449.670, 6279.24, CITY_LS }, + { "JTN6", 1848.400, 2478.489, 1938.800, 2553.489, 6780.00, CITY_LV }, + { "ROD4c", 422.678, -1570.197, 466.221, -1406.050, 7147.45, CITY_LS }, + { "LDT1c", 1391.050, -1026.328, 1463.900, -926.999, 7236.11, CITY_LS }, + { "REDW4", 1704.588, 2243.229, 1777.390, 2342.830, 7251.15, CITY_LV }, + { "LMEX1b", 1758.900, -1722.260, 1812.619, -1577.588, 7771.63, CITY_LS }, + { "BINT4", 1375.598, 823.228, 1457.390, 919.447, 7869.94, CITY_LV }, + { "ROD1c", 334.502, -1501.947, 422.678, -1406.050, 8455.81, CITY_LS }, + { "RIH6a", 225.164, -1369.619, 334.502, -1292.067, 8479.38, CITY_LS }, + { "LDT6", 1724.760, -1250.900, 1812.619, -1150.869, 8788.62, CITY_LS }, + { "STRIP4", 2027.400, 1703.229, 2137.395, 1783.229, 8799.59, CITY_LV }, + { "LDT1b", 1378.328, -1130.848, 1463.900, -1026.328, 8943.98, CITY_LS }, + { "BINT2", 1197.390, 1044.687, 1277.050, 1163.390, 9455.88, CITY_LV }, + { "CONF1a", 1073.218, -1842.270, 1323.900, -1804.208, 9541.46, CITY_LS }, + { "SILLY3", -2270.040, -430.276, -2178.687, -324.114, 9698.21, CITY_SF }, + { "MUL5a", 1096.468, -910.169, 1169.130, -768.026, 10328.39, CITY_LS }, + { "YBELL2", 1457.458, 2723.229, 1534.560, 2863.229, 10794.28, CITY_LV }, + { "STRIP3", 2027.400, 1783.229, 2162.385, 1863.229, 10798.79, CITY_LV }, + { "JEF1b", 2056.860, -1210.739, 2185.330, -1126.317, 10845.69, CITY_LS }, + { "MUL5b", 952.604, -937.184, 1096.468, -860.619, 11014.94, CITY_LS }, + { "ALDEA", -1372.140, 2498.520, -1277.588, 2615.350, 11046.51, CITY_DESERTS }, + { "CHC2a", 2126.860, -1126.317, 2185.330, -934.489, 11216.17, CITY_LS }, + { "CHC1a", 1994.328, -1100.817, 2056.860, -920.815, 11255.90, CITY_LS }, + { "RIH5b", 647.557, -954.661, 768.692, -860.619, 11391.77, CITY_LS }, + { "LVA3", 1277.050, 1087.630, 1375.598, 1203.280, 11397.07, CITY_LV }, + { "JTN7", 1377.390, 2433.229, 1534.560, 2507.229, 11630.58, CITY_LV }, + { "LIND2b", 2201.820, -2095.000, 2324.000, -1989.900, 12841.10, CITY_LS }, + { "JTN8", 1704.588, 2342.830, 1848.400, 2433.229, 13000.45, CITY_LV }, + { "SUN3a", 1252.328, -1130.848, 1378.328, -1026.328, 13169.52, CITY_LS }, + { "LMEX1a", 1701.900, -1842.270, 1812.619, -1722.260, 13287.38, CITY_LS }, + { "WESTP3", -2411.218, 373.539, -2253.540, 458.411, 13382.44, CITY_SF }, + { "RIH6b", 225.164, -1292.067, 466.221, -1235.067, 13740.24, CITY_LS }, + { "SUN3b", 1252.328, -1026.328, 1391.050, -926.999, 13779.11, CITY_LS }, + { "ELS3b", 2266.260, -1494.030, 2381.677, -1372.040, 14079.71, CITY_LS }, + { "JTE2", 2623.177, 943.234, 2749.895, 1055.958, 14284.16, CITY_LV }, + { "LIND4c", 2541.697, -1941.400, 2703.580, -1852.869, 14331.66, CITY_LS }, + { "CHC1b", 2056.860, -1126.317, 2126.860, -920.815, 14385.14, CITY_LS }, + { "JTE3", 2625.156, 2202.760, 2685.156, 2442.550, 14387.40, CITY_LV }, + { "ROD1b", 225.164, -1501.947, 334.502, -1369.619, 14468.48, CITY_LS }, + { "JTE4", 2536.427, 2442.550, 2685.156, 2542.550, 14872.90, CITY_LV }, + { "ROD2a", 334.502, -1406.050, 466.221, -1292.067, 15013.73, CITY_LS }, + { "VIN1b", 647.557, -1227.280, 787.460, -1118.280, 15249.42, CITY_LS }, + { "ROD3b", 422.678, -1684.650, 558.098, -1570.197, 15499.22, CITY_LS }, + { "JTN1", 2498.208, 2542.550, 2685.156, 2626.550, 15703.63, CITY_LV }, + { "LDT7", 1724.760, -1430.869, 1812.619, -1250.900, 15811.89, CITY_LS }, + { "ROD1a", 225.164, -1684.650, 312.803, -1501.947, 16011.91, CITY_LS }, + { "JEF3b", 2056.860, -1449.670, 2266.208, -1372.040, 16251.67, CITY_LS }, + { "SUN4", 1096.468, -1130.838, 1252.328, -1026.328, 16288.92, CITY_LS }, + { "VERO2", 1046.150, -1722.260, 1161.520, -1577.588, 16690.80, CITY_LS }, + { "COM1a", 1323.900, -1722.260, 1440.900, -1577.588, 16926.62, CITY_LS }, + { "MUL7a", 1357.000, -926.999, 1463.900, -768.026, 16994.22, CITY_LS }, + { "ROD4b", 466.221, -1570.197, 558.098, -1385.067, 17009.19, CITY_LS }, + { "MUL5c", 911.802, -860.619, 1096.468, -768.026, 17098.78, CITY_LS }, + { "MUL4", 768.692, -954.661, 952.604, -860.619, 17295.44, CITY_LS }, + { "JTS2", 2377.385, 788.893, 2537.385, 897.901, 17441.27, CITY_LV }, + { "IWD3a", 1812.619, -1852.869, 1971.660, -1742.310, 17583.41, CITY_LS }, + { "LDOC1a", 2089.000, -2394.330, 2201.820, -2235.840, 17880.85, CITY_LS }, + { "COM1b", 1370.848, -1577.588, 1463.900, -1384.947, 17925.63, CITY_LS }, + { "JTN3", 2121.395, 2508.229, 2237.395, 2663.166, 17972.69, CITY_LV }, + { "SUN2", 1096.468, -1026.328, 1252.328, -910.169, 18104.53, CITY_LS }, + { "GLN2a", 1812.619, -1449.670, 1996.910, -1350.718, 18235.96, CITY_LS }, + { "SFAIR2", -1242.979, -50.096, -1213.910, 578.395, 18269.58, CITY_SF }, + { "STRIP2", 2106.697, 1863.229, 2162.385, 2202.760, 18907.79, CITY_LV }, + { "LIND4a", 2541.697, -2059.229, 2703.580, -1941.400, 19074.51, CITY_LS }, + { "MAR2", 807.921, -1577.588, 926.921, -1416.250, 19199.22, CITY_LS }, + { "VAIR3", 1457.369, 1143.208, 1777.400, 1203.280, 19224.91, CITY_LV }, + { "IWD3b", 1812.619, -1742.310, 1951.660, -1602.310, 19465.74, CITY_LS }, + { "ESPE2", -1580.010, 1025.979, -1499.890, 1274.260, 19892.27, CITY_SF }, + { "LDT3", 1370.848, -1384.947, 1463.900, -1170.869, 19920.38, CITY_LS }, + { "ROD3a", 312.803, -1684.650, 422.678, -1501.947, 20074.49, CITY_LS }, + { "PER1", 1440.900, -1722.260, 1583.500, -1577.588, 20630.22, CITY_LS }, + { "MUL1a", 687.802, -860.619, 911.802, -768.026, 20740.83, CITY_LS }, + { "GANTB1", -2741.070, 1490.468, -2616.395, 1659.680, 21096.51, CITY_SF }, + { "CHC2b", 2185.330, -1154.588, 2281.447, -934.489, 21155.24, CITY_LS }, + { "MUL6", 1169.130, -910.169, 1318.130, -768.026, 21179.30, CITY_LS }, + { "JTN4", 1938.800, 2508.229, 2121.395, 2624.229, 21181.01, CITY_LV }, + { "COM3", 1667.958, -1577.588, 1812.619, -1430.869, 21224.51, CITY_LS }, + { "ROD5a", 72.648, -1544.170, 225.164, -1404.968, 21230.53, CITY_LS }, + { "ROCE2", 2536.427, 2202.760, 2625.156, 2442.550, 21276.33, CITY_LV }, + { "ROD5b", 72.648, -1684.650, 225.164, -1544.170, 21425.44, CITY_LS }, + { "MKT4", 952.663, -1310.208, 1072.660, -1130.848, 21522.66, CITY_LS }, + { "CHC4b", 2632.739, -1135.040, 2747.739, -945.033, 21850.80, CITY_LS }, + { "MUL1c", 861.085, -674.885, 1156.550, -600.895, 21861.45, CITY_COUNTRY }, + { "THEA3", -2253.540, 373.539, -1993.280, 458.411, 22088.78, CITY_SF }, + { "REDE3", 1848.400, 2342.830, 2011.937, 2478.489, 22185.25, CITY_LV }, + { "SFDWT4", -1580.010, 744.267, -1499.890, 1025.979, 22570.76, CITY_SF }, + { "CONF1b", 1046.150, -1804.208, 1323.900, -1722.260, 22761.05, CITY_LS }, + { "RIH5a", 647.557, -1118.280, 787.460, -954.661, 22890.79, CITY_LS }, + { "OCEAF1", -2994.489, 277.411, -2867.850, 458.411, 22921.64, CITY_SF }, + { "GGC2", 964.390, 930.890, 1166.530, 1044.687, 23002.92, CITY_LV }, + { "GLN1b", 1812.619, -1100.817, 1994.328, -973.380, 23156.44, CITY_LS }, + { "LVA2", 1375.598, 919.447, 1457.369, 1203.280, 23209.30, CITY_LV }, + { "TOM", -405.769, 1712.859, -276.717, 1892.750, 23215.29, CITY_DESERTS }, + { "VERO3", 1161.520, -1722.260, 1323.900, -1577.588, 23491.83, CITY_LS }, + { "ELS1a", 2281.447, -1372.040, 2381.677, -1135.040, 23754.50, CITY_LS }, + { "CALI2", 2137.395, 1703.229, 2437.385, 1783.229, 23999.19, CITY_LV }, + { "IWD4", 1951.660, -1742.310, 2124.656, -1602.310, 24219.43, CITY_LS }, + { "PILL2", 2624.395, 1383.229, 2685.156, 1783.229, 24304.39, CITY_LV }, + { "IWD2", 2124.656, -1742.310, 2222.560, -1494.030, 24307.62, CITY_LS }, + { "WESTP1", -2533.040, 458.411, -2329.310, 578.395, 24444.33, CITY_SF }, + { "SFDWT2", -1871.718, 1176.420, -1620.300, 1274.260, 24598.72, CITY_SF }, + { "COM4", 1583.500, -1722.260, 1758.900, -1577.588, 25375.47, CITY_LS }, + { "ELS1b", 2381.677, -1454.348, 2462.125, -1135.040, 25687.68, CITY_LS }, + { "MAR1", 647.710, -1577.588, 807.921, -1416.250, 25848.12, CITY_LS }, + { "RIH3a", 72.648, -1404.968, 225.164, -1235.067, 25912.61, CITY_LS }, + { "VIN1a", 647.710, -1416.250, 787.460, -1227.280, 26408.55, CITY_LS }, + { "ELS3a", 2222.560, -1628.530, 2421.030, -1494.030, 26694.21, CITY_LS }, + { "ROD4a", 558.098, -1684.650, 647.520, -1384.930, 26801.55, CITY_LS }, + { "ROD2b", 466.221, -1385.067, 647.520, -1235.067, 27194.85, CITY_LS }, + { "REDE2", 1817.390, 2202.760, 2011.937, 2342.830, 27250.21, CITY_LV }, + { "RING", 2162.385, 1783.229, 2437.385, 1883.229, 27500.00, CITY_LV }, + { "IWD5", 1971.660, -1852.869, 2222.560, -1742.310, 27739.24, CITY_LS }, + { "LIND1b", 2089.000, -2235.840, 2201.820, -1989.900, 27746.97, CITY_LS }, + { "SUN1", 952.663, -1130.838, 1096.468, -937.184, 27848.41, CITY_LS }, + { "PRP3", 1848.400, 2553.489, 1938.800, 2863.229, 28000.50, CITY_LV }, + { "VERO4b", 930.221, -2006.780, 1073.218, -1804.208, 28967.19, CITY_LS }, + { "BLUF1b", 1073.218, -2006.780, 1249.619, -1842.270, 29019.73, CITY_LS }, + { "VIN2", 787.460, -1130.838, 952.604, -954.661, 29094.57, CITY_LS }, + { "VIN3", 787.460, -1310.208, 952.663, -1130.838, 29632.46, CITY_LS }, + { "COM2", 1463.900, -1577.588, 1667.958, -1430.869, 29939.18, CITY_LS }, + { "MKT3", 787.460, -1416.250, 1072.660, -1310.208, 30243.17, CITY_LS }, + { "RSW2", 2377.385, 596.348, 2537.385, 788.893, 30807.19, CITY_LV }, + { "JTN2", 2237.395, 2542.550, 2498.208, 2663.166, 31458.21, CITY_LV }, + { "EBE2a", 2632.830, -1668.130, 2747.739, -1393.420, 31566.62, CITY_LS }, + { "LIND2a", 2089.000, -1989.900, 2324.000, -1852.869, 32202.28, CITY_LS }, + { "CHINA", -2274.166, 578.395, -2078.666, 744.169, 32408.81, CITY_SF }, + { "LDOC2", 2324.000, -2145.100, 2703.580, -2059.229, 32594.95, CITY_LS }, + { "EBAY", -1132.817, -768.026, -956.476, -578.117, 33488.74, CITY_COUNTRY }, + { "VISA2", 1817.390, 1703.229, 2027.400, 1863.229, 33601.60, CITY_LV }, + { "OCEAF3", -2994.489, -430.276, -2831.885, -222.589, 33770.73, CITY_SF }, + { "RIH1a", 321.355, -860.619, 687.802, -768.026, 33930.43, CITY_LS }, + { "RIH1b", 321.355, -768.026, 700.794, -674.885, 35341.32, CITY_COUNTRY }, + { "STAR1", 2162.385, 1883.229, 2437.385, 2012.180, 35461.53, CITY_LV }, + { "EBE2b", 2747.739, -1668.130, 2959.350, -1498.619, 35870.40, CITY_LS }, + { "JEF2", 2056.860, -1372.040, 2281.447, -1210.739, 36226.09, CITY_LS }, + { "LDT4", 1463.900, -1290.869, 1724.760, -1150.869, 36520.39, CITY_LS }, + { "LDT5", 1463.900, -1430.869, 1724.760, -1290.869, 36520.39, CITY_LS }, + { "JTS1", 1457.390, 823.228, 2377.385, 863.229, 36800.69, CITY_LV }, + { "ELS4", 2421.030, -1628.530, 2632.830, -1454.348, 36891.75, CITY_LS }, + { "GGC1", 964.390, 1044.687, 1197.390, 1203.218, 36937.72, CITY_LV }, + { "CHC4a", 2747.739, -1120.040, 2959.350, -945.033, 37033.42, CITY_LS }, + { "MUL1b", 737.572, -768.026, 1142.290, -674.885, 37695.83, CITY_COUNTRY }, + { "LDOC3b", 2201.820, -2730.875, 2324.000, -2418.330, 38186.71, CITY_LS }, + { "ELS2", 2462.125, -1454.348, 2581.729, -1135.040, 38190.51, CITY_LS }, + { "GAN1", 2222.560, -1722.328, 2632.830, -1628.530, 38482.49, CITY_LS }, + { "CUNTC2", -2831.885, -430.276, -2646.395, -222.589, 38523.85, CITY_SF }, + { "LIND1a", 1970.619, -2179.250, 2089.000, -1852.869, 38637.30, CITY_LS }, + { "ESPN3", -1982.317, 1274.260, -1524.239, 1358.900, 38771.73, CITY_SF }, + { "HIGH", 1817.390, 1283.229, 2027.390, 1469.229, 39060.00, CITY_LV }, + { "LDOC1b", 2201.820, -2418.330, 2324.000, -2095.000, 39504.44, CITY_LS }, + { "LDM", 1823.078, 596.348, 1997.218, 823.228, 39508.88, CITY_LV }, + { "SUNMA", -2353.166, 2275.790, -2153.166, 2475.790, 40000.00, CITY_DESERTS }, + { "THEA1", -2329.310, 458.411, -1993.280, 578.395, 40318.23, CITY_SF }, + { "ELCO1", 1692.619, -2179.250, 1812.619, -1842.270, 40437.59, CITY_LS }, + { "BFC1", 1375.598, 596.348, 1558.088, 823.228, 41403.32, CITY_LV }, + { "PINK", 1817.390, 1083.229, 2027.390, 1283.229, 42000.00, CITY_LV }, + { "JTW1", 1197.390, 1163.390, 1236.630, 2243.229, 42372.87, CITY_LV }, + { "LFL1b", 2581.729, -1393.420, 2747.739, -1135.040, 42893.66, CITY_LS }, + { "VISA1", 1817.390, 1863.229, 2106.697, 2011.828, 42990.73, CITY_LV }, + { "PRP4", 1938.800, 2624.229, 2121.395, 2861.550, 43333.62, CITY_LV }, + { "VERO1", 851.447, -1804.208, 1046.150, -1577.588, 44123.59, CITY_LS }, + { "LDS", 2749.895, 943.234, 2923.385, 1198.989, 44370.93, CITY_LV }, + { "LDOC3c", 2703.580, -2302.330, 2959.350, -2126.895, 44871.02, CITY_LS }, + { "LIND3", 2324.000, -2059.229, 2541.697, -1852.869, 44923.95, CITY_LS }, + { "THEA2", -2411.218, 265.243, -1993.280, 373.539, 45261.00, CITY_SF }, + { "THALL1", 1323.900, -1842.270, 1701.900, -1722.260, 45363.78, CITY_LS }, + { "MUL2b", 1269.130, -768.026, 1414.067, -452.424, 45742.41, CITY_COUNTRY }, + { "MAR3", 647.710, -1804.208, 851.447, -1577.588, 46170.87, CITY_LS }, + { "BATTP", -2741.070, 1268.410, -2533.040, 1490.468, 46194.73, CITY_SF }, + { "DRAG", 1817.390, 863.231, 2027.390, 1083.229, 46199.57, CITY_LV }, + { "BFLD1", 964.390, 1203.218, 1197.390, 1403.218, 46600.00, CITY_LV }, + { "JTN5", 1534.560, 2433.229, 1848.400, 2583.229, 47075.99, CITY_LV }, + { "YBELL1", 1117.400, 2723.229, 1457.458, 2863.229, 47608.11, CITY_LV }, + { "IWD1", 1812.619, -1602.310, 2124.656, -1449.670, 47629.33, CITY_LS }, + { "REDW1", 1297.468, 2142.860, 1777.390, 2243.229, 48169.24, CITY_LV }, + { "DOH1", -2270.040, -324.114, -1794.920, -222.589, 48236.56, CITY_SF }, + { "TOPFA", 967.382, -450.390, 1176.780, -217.899, 48683.15, CITY_COUNTRY }, + { "BARRA", -926.130, 1398.729, -719.234, 1634.687, 48818.76, CITY_DESERTS }, + { "PIRA", 1817.390, 1469.229, 2027.400, 1703.229, 49142.34, CITY_LV }, + { "CITYS", -2867.850, 277.411, -2593.437, 458.411, 49668.76, CITY_SF }, + { "SFGLF4", -2646.395, -355.493, -2270.040, -222.589, 50019.08, CITY_SF }, + { "STRIP1", 2027.400, 863.229, 2087.385, 1703.229, 50387.38, CITY_LV }, + { "HASH", -2593.437, -222.589, -2411.218, 54.722, 50531.33, CITY_SF }, + { "LAIR2a", 1852.000, -2394.330, 2089.000, -2179.250, 50973.97, CITY_LS }, + { "WWE1", 1098.310, 1726.218, 1197.390, 2243.229, 51225.42, CITY_LV }, + { "SHERR", -789.736, 1659.680, -599.505, 1929.410, 51311.00, CITY_DESERTS }, + { "ELCO2", 1812.619, -2179.250, 1970.619, -1852.869, 51568.19, CITY_LS }, + { "SFDWT3", -1700.010, 744.267, -1580.010, 1176.520, 51870.35, CITY_SF }, + { "VALLE", -936.668, 2611.437, -715.960, 2847.895, 52188.17, CITY_DESERTS }, + { "PAYAS", -354.332, 2580.360, -133.625, 2816.820, 52188.36, CITY_DESERTS }, + { "BINT1", 1166.530, 795.010, 1375.598, 1044.687, 52199.46, CITY_LV }, + { "GAN2", 2222.560, -1852.869, 2632.830, -1722.328, 53557.06, CITY_LS }, + { "REDE1", 1817.390, 2011.828, 2106.697, 2202.760, 55237.96, CITY_LV }, + { "CALI1", 2087.385, 1543.229, 2437.385, 1703.229, 56000.00, CITY_LV }, + { "ROY", 2087.385, 1383.229, 2437.385, 1543.229, 56000.00, CITY_LV }, + { "RIH3b", 72.648, -1235.067, 321.355, -1008.150, 56435.84, CITY_LS }, + { "STAR2", 2437.385, 1783.229, 2685.156, 2012.180, 56727.42, CITY_LV }, + { "MUL2a", 1281.130, -452.424, 1641.130, -290.911, 58144.67, CITY_COUNTRY }, + { "SFDWT1", -1982.317, 744.169, -1871.718, 1274.260, 58627.53, CITY_SF }, + { "KACC", 2498.208, 2626.550, 2749.895, 2861.550, 59146.44, CITY_LV }, + { "HGP", 1777.390, 863.231, 1817.390, 2342.830, 59183.96, CITY_LV }, + { "LDOC3a", 2324.000, -2302.330, 2703.580, -2145.100, 59681.36, CITY_LS }, + { "RIH2", 321.355, -1044.067, 647.557, -860.619, 59841.10, CITY_LS }, + { "RIE", 1558.088, 596.348, 1823.078, 823.234, 60122.51, CITY_LV }, + { "EBE3c", 2632.830, -1852.869, 2959.350, -1668.130, 60320.98, CITY_LS }, + { "BLUEB", 19.607, -404.135, 349.605, -220.136, 60719.30, CITY_COUNTRY }, + { "LST", 2749.895, 1198.989, 2923.385, 1548.989, 60721.49, CITY_LV }, + { "GLN1", 1812.619, -1350.718, 2056.860, -1100.817, 61036.09, CITY_LS }, + { "SFDWT6", -1993.280, 265.243, -1794.920, 578.395, 62116.82, CITY_SF }, + { "REDW3", 1377.390, 2243.229, 1704.588, 2433.229, 62167.62, CITY_LV }, + { "RIH4", 321.355, -1235.067, 647.520, -1044.067, 62297.51, CITY_LS }, + { "GANTB", -2741.447, 1659.680, -2616.395, 2175.145, 64459.92, CITY_DESERTS }, + { "FLINTI", -187.699, -1596.760, 17.062, -1276.598, 65556.68, CITY_COUNTRY }, + { "CHC3", 2281.447, -1135.040, 2632.739, -945.033, 66747.94, CITY_LS }, + { "SRY", 2749.895, 1548.989, 2923.385, 1937.250, 67359.39, CITY_LV }, + { "ISLE", 2011.937, 2202.760, 2237.395, 2508.229, 68870.42, CITY_LV }, + { "CIVI", -2741.070, 458.411, -2533.040, 793.411, 69690.06, CITY_SF }, + { "PLS", 2703.580, -2126.895, 2959.350, -1852.869, 70087.63, CITY_LS }, + { "MKT2", 926.921, -1577.588, 1370.848, -1416.250, 71622.29, CITY_LS }, + { "WESTP2", -2593.437, 54.722, -2411.218, 458.411, 73559.80, CITY_SF }, + { "PINT", 1098.390, 2243.229, 1377.390, 2507.229, 73656.00, CITY_LV }, + { "FINA", -1871.718, 744.169, -1701.300, 1176.420, 73663.34, CITY_SF }, + { "SPIN", 2121.395, 2663.166, 2498.208, 2861.550, 74753.67, CITY_LV }, + { "PILL1", 2437.385, 1383.229, 2624.395, 1783.229, 74804.00, CITY_LV }, + { "BFLD2", 964.390, 1403.218, 1197.390, 1726.218, 75259.00, CITY_LV }, + { "BIGE", -410.019, 1403.338, -137.968, 1681.229, 75600.53, CITY_DESERTS }, + { "DILLI", 580.794, -674.885, 861.085, -404.790, 75705.20, CITY_COUNTRY }, + { "ELQUE", -1645.229, 2498.520, -1372.140, 2777.850, 76281.96, CITY_DESERTS }, + { "ESPN1", -2533.040, 1358.900, -1996.660, 1501.208, 76331.15, CITY_SF }, + { "SFAIR3", -1499.890, -50.096, -1242.979, 249.904, 77073.30, CITY_SF }, + { "MUL3", 1414.067, -768.026, 1667.609, -452.424, 80018.35, CITY_COUNTRY }, + { "EBE1", 2747.739, -1498.619, 2959.350, -1120.040, 80111.50, CITY_LS }, + { "MKT1", 1072.660, -1416.250, 1370.848, -1130.848, 85103.44, CITY_LS }, + { "RSW1", 1997.218, 596.348, 2377.385, 823.228, 86252.28, CITY_LV }, + { "PRP1", 1534.560, 2583.229, 1848.400, 2863.229, 87875.18, CITY_LV }, + { "EASB2", -1794.920, -50.096, -1499.890, 249.904, 88509.00, CITY_SF }, + { "LEAFY", -1166.968, -1856.030, -815.624, -1602.067, 89228.38, CITY_COUNTRY }, + { "LVA1", 1457.390, 863.229, 1777.400, 1143.208, 89596.08, CITY_LV }, + { "PRP2", 1117.400, 2507.229, 1534.560, 2723.229, 90106.57, CITY_LV }, + { "BLUEB1", 104.528, -220.136, 349.605, 152.235, 91259.20, CITY_COUNTRY }, + { "SFDWT5", -2078.666, 578.395, -1499.890, 744.267, 96002.73, CITY_SF }, + { "RSE", 2537.385, 676.549, 2902.350, 943.234, 97330.71, CITY_LV }, + { "SANB1", -2616.395, 1501.208, -1996.660, 1659.680, 98210.67, CITY_SF }, + { "PARA", -2741.070, 793.411, -2533.040, 1268.410, 98814.06, CITY_SF }, + { "CAM", 2087.385, 1203.229, 2640.395, 1383.229, 99541.80, CITY_LV }, + { "OVS", 2162.385, 2012.180, 2685.156, 2202.760, 99629.67, CITY_LV }, + { "JUNIHI", -2533.040, 578.395, -2274.166, 968.369, 100954.14, CITY_SF }, + { "JUNIHO", -2533.040, 968.369, -2274.166, 1358.900, 101098.33, CITY_SF }, + { "ROCE1", 2237.395, 2202.760, 2536.427, 2542.550, 101608.08, CITY_LV }, + { "JTE1", 2685.156, 1055.958, 2749.895, 2626.550, 101678.57, CITY_LV }, + { "VERO4a", 647.710, -2173.290, 930.221, -1804.208, 104269.72, CITY_LS }, + { "SILLY4", -2178.687, -599.882, -1794.920, -324.114, 105830.64, CITY_SF }, + { "ARCO", -901.129, 2221.860, -592.090, 2571.968, 108197.00, CITY_DESERTS }, + { "HAUL", -792.254, -698.554, -452.403, -380.040, 108247.30, CITY_COUNTRY }, + { "DAM", -968.770, 1929.410, -481.126, 2155.260, 110134.39, CITY_DESERTS }, + { "ESPN2", -1996.660, 1358.900, -1524.239, 1592.510, 110362.26, CITY_SF }, + { "ESPE3", -1499.890, 578.395, -1339.890, 1274.260, 111338.39, CITY_SF }, + { "GARC", -2411.218, -222.589, -2173.040, 265.243, 116190.84, CITY_SF }, + { "MONT", 1119.510, 119.526, 1451.400, 493.321, 124058.83, CITY_COUNTRY }, + { "CREE", 2749.895, 1937.250, 2921.620, 2669.790, 125795.50, CITY_LV }, + { "LAIR1", 1249.619, -2394.330, 1852.000, -2179.250, 129560.14, CITY_LS }, + { "SMB2", 72.648, -2173.290, 342.648, -1684.650, 131932.79, CITY_LS }, + { "MULINT", 1463.900, -1150.869, 1812.619, -768.026, 133504.62, CITY_LS }, + { "ANGPI", -2324.937, -2584.290, -1964.218, -2212.110, 134252.37, CITY_COUNTRY }, + { "MEAD", 37.032, 2337.177, 435.988, 2677.895, 135931.50, CITY_DESERTS }, + { "OCTAN", 338.657, 1228.510, 664.307, 1655.050, 138902.76, CITY_DESERTS }, + { "LOT", 2087.385, 943.234, 2623.177, 1203.229, 139303.23, CITY_LV }, + { "REDW2", 1236.630, 1883.109, 1777.390, 2142.860, 140463.00, CITY_LV }, + { "SMB1", 342.648, -2173.290, 647.710, -1684.650, 149065.50, CITY_LS }, + { "BLUF2", 1249.619, -2179.250, 1692.619, -1842.270, 149282.12, CITY_LS }, + { "VAIR1", 1236.630, 1203.280, 1457.369, 1883.109, 150064.78, CITY_LV }, + { "FLINTR", -594.190, -1648.550, -187.699, -1276.598, 151195.15, CITY_COUNTRY }, + { "BLUF1a", 930.221, -2488.416, 1249.619, -2006.780, 153833.57, CITY_LS }, + { "PALO", 2160.218, -149.003, 2576.916, 228.322, 157230.57, CITY_COUNTRY }, + { "LDOC4", 2373.770, -2697.090, 2809.218, -2330.458, 159649.20, CITY_LS }, + { "FARM", -1209.670, -1317.098, -908.161, -787.390, 159711.75, CITY_COUNTRY }, + { "SFAIR5", -1213.910, -50.096, -947.979, 578.395, 167135.26, CITY_COUNTRY }, + { "QUARY", 337.243, 710.840, 860.554, 1031.708, 167913.75, CITY_DESERTS }, + { "WWE", 883.307, 1726.218, 1098.310, 2507.229, 167919.75, CITY_LV }, + { "CALT", -2274.166, 744.169, -1982.317, 1358.900, 179408.62, CITY_SF }, + { "EASB1", -1794.920, 249.904, -1242.979, 578.395, 181307.67, CITY_SF }, + { "DOH2", -2173.040, -222.589, -1794.920, 265.243, 184459.04, CITY_SF }, + { "CARSO", -376.233, 826.325, 123.717, 1220.437, 197036.29, CITY_DESERTS }, + { "SILLY1", -2178.687, -1115.578, -1794.920, -599.882, 197907.07, CITY_SF }, + { "OCEAF2", -2994.489, -222.589, -2593.437, 277.411, 200526.00, CITY_SF }, + { "FERN", 508.187, -139.259, 1306.660, 119.526, 206632.84, CITY_COUNTRY }, + { "SUNNN", -2741.070, 2175.145, -2353.166, 2722.790, 212433.71, CITY_DESERTS }, + { "VAIR2", 1457.369, 1203.280, 1777.390, 1883.109, 217559.54, CITY_LV }, + { "BLUAC", -319.674, -220.136, 104.528, 293.324, 217811.28, CITY_COUNTRY }, + { "BAYV", -2994.489, 458.411, -2741.070, 1339.609, 223312.26, CITY_SF }, + { "REST", -91.583, 1655.050, 421.234, 2123.010, 239977.82, CITY_DESERTS }, + { "NROCK", 2285.370, -768.026, 2770.590, -269.739, 241778.79, CITY_COUNTRY }, + { "LAIR2b", 1382.729, -2730.875, 2201.820, -2394.330, 275660.93, CITY_LS }, + { "HILLP", -2994.489, -811.276, -2178.687, -430.276, 310820.56, CITY_SF }, + { "SANB2", -2616.395, 1659.680, -1996.660, 2175.145, 319451.68, CITY_DESERTS }, + { "SFAIR1", -1794.920, -730.117, -1213.910, -50.096, 395099.00, CITY_SF }, + { "PANOP", -947.979, -304.320, -319.674, 327.071, 396706.12, CITY_COUNTRY }, + { "CREEK", -1820.640, -2643.677, -1226.780, -1771.660, 517855.96, CITY_COUNTRY }, + { "BACKO", -1166.968, -2641.187, -321.743, -1856.030, 663634.31, CITY_COUNTRY } + } +; + +/* ** Variables ** */ +enum E_TURF_ZONE_DATA { + E_ID, + + E_OWNER, + E_COLOR, + + E_AREA +}; + +new + g_gangTurfData [ MAX_TURFS ] [ E_TURF_ZONE_DATA ], + g_gangzoneAttacker [ MAX_TURFS ] = { INVALID_GANG_ID, ... }, + g_gangzoneAttackCount [ MAX_TURFS ], + g_gangzoneAttackTimeout [ MAX_TURFS ] +; + +/* ** Forwards ** */ +forward OnPlayerEnterGangZone( playerid, zoneid ); +forward OnPlayerExitGangZone( playerid, zoneid ); + +/* ** Hooks ** */ +hook OnGameModeInit( ) +{ + /* ** Gangzone Allocation ** */ + for ( new i = 0; i < MAX_TURFS; i++ ) + { + g_gangTurfData[ i ] [ E_OWNER ] = INVALID_GANG_ID; + g_gangTurfData[ i ] [ E_COLOR ] = COLOR_GANGZONE; + + g_gangTurfData[ i ] [ E_ID ] = GangZoneCreate( g_gangzoneData[ i ] [ E_MIN_X ], g_gangzoneData[ i ] [ E_MIN_Y ], g_gangzoneData[ i ] [ E_MAX_X ], g_gangzoneData[ i ] [ E_MAX_Y ] ); + g_gangTurfData[ i ] [ E_AREA ] = CreateDynamicRectangle( g_gangzoneData[ i ] [ E_MIN_X ], g_gangzoneData[ i ] [ E_MIN_Y ], g_gangzoneData[ i ] [ E_MAX_X ], g_gangzoneData[ i ] [ E_MAX_Y ], 0, 0 ); + } + return 1; +} + +hook OnPlayerEnterDynArea( playerid, areaid ) +{ + if ( ! IsPlayerNPC( playerid ) ) { + for ( new i = 0; i < MAX_TURFS; i++ ) if ( areaid == g_gangTurfData[ i ] [ E_AREA ] ) { + CallLocalFunction( "OnPlayerEnterGangZone", "dd", playerid, i ); + break; + } + } + return Y_HOOKS_CONTINUE_RETURN_1; +} + +hook OnPlayerLeaveDynArea( playerid, areaid ) { + if ( ! IsPlayerNPC( playerid ) ) { + for ( new i = 0; i < MAX_TURFS; i++ ) if ( areaid == g_gangTurfData[ i ] [ E_AREA ] ) { + CallLocalFunction( "OnPlayerExitGangZone", "dd", playerid, i ); + break; + } + } + return Y_HOOKS_CONTINUE_RETURN_1; +} + +/* ** Functions ** */ +stock Zone_GetProfitability( zoneid, gang_members, Float: default_pay = 750.0 ) +{ + // size adjustments + if ( g_gangzoneData[ zoneid ] [ E_SIZE ] < TURF_SIZE_SMALL ) // lower than 1st quartile, decrease pay + default_pay *= 0.75; + + if ( g_gangzoneData[ zoneid ] [ E_SIZE ] > TURF_SIZE_LARGE ) // higher than 1st quartile, increase pay + default_pay *= 1.25; + + // city adjustments + if ( g_gangzoneData[ zoneid ] [ E_CITY ] == CITY_SF ) + default_pay *= 1.25; + + if ( g_gangzoneData[ zoneid ] [ E_CITY ] == CITY_COUNTRY || g_gangzoneData[ zoneid ] [ E_CITY ] == CITY_DESERTS ) + default_pay *= 1.1; + + // get online players + new Float: player_boost = 0.06 * float( gang_members ) + 0.75; + default_pay *= player_boost > 1.35 ? 1.35 : player_boost; + + // return rounded number + return floatround( default_pay ); +} diff --git a/pawno/include/irresistible/features/visage/blackjack.inc b/pawno/include/irresistible/features/visage/blackjack.inc index ed9d3e6..511f940 100644 --- a/pawno/include/irresistible/features/visage/blackjack.inc +++ b/pawno/include/irresistible/features/visage/blackjack.inc @@ -18,7 +18,7 @@ #endif*/ /* ** Definitions ** */ -#define MAX_BLACKJACK_TABLES ( 33 ) +#define MAX_BLACKJACK_TABLES ( 50 ) // 33 #define MAX_BLACKJACK_CARDS ( 5 ) #define MAX_BLACKJACK_PLAYERS ( 3 ) #define BLACKJACK_DEALER_WAIT ( 500 ) @@ -90,12 +90,14 @@ stock const g_cardTextdrawData[ 52 ] [ ] = { enum E_BLACKJACK_DATA { bool: E_GAME_STARTED, E_CARDS_DRAWN, E_GAME_TIMER, + E_PAYOUT, E_WORLD, - E_PAYOUT, + E_OBJECT, E_ACTOR, - E_OBJECT, E_ACTOR, E_WORLD, Float: E_X, Float: E_Y, Float: E_Z, - Float: E_ROTATION + Float: E_ROTATION, + + Text3D: E_DEALER_LABEL, Text3D: E_PLAYER_LABEL[ MAX_BLACKJACK_PLAYERS ] }; new @@ -255,6 +257,9 @@ hook OnPlayerKeyStateChange( playerid, newkeys, oldkeys ) for ( new c = 0; c < MAX_BLACKJACK_CARDS; c ++ ) g_blackjackPlayerCardIndex[ id ] [ c ] [ player_index ] = -1; + // set player card values + SetBlackjackPlayerLabelValue( id, player_index, 0 ); + // show cards to players for ( new player = 0; player < MAX_BLACKJACK_PLAYERS; player ++ ) { @@ -314,7 +319,11 @@ stock CreateBlackjackTable( payout, Float: X, Float: Y, Float: Z, Float: Angle, g_blackjackData[ id ] [ E_PAYOUT ] = payout; g_blackjackData[ id ] [ E_OBJECT ] = CreateDynamicObject( 2188, X, Y, Z, 0.00000, 0.00000, Angle, .worldid = world, .priority = 9999 ); g_blackjackData[ id ] [ E_ACTOR ] = CreateDynamicActor( 171, X - 0.4 * floatcos( Angle - 90.0, degrees ), Y - 0.4 * floatsin( Angle - 90.0, degrees ), Z, Angle + 180.0, .worldid = world ); - CreateDynamic3DTextLabel( sprintf( "Press ENTER To Play Blackjack\n"COL_WHITE"%s Minimum", number_format( payout ) ), COLOR_GREY, X, Y, Z + 0.25, 15.0, .testlos = 0, .worldid = world ); + g_blackjackData[ id ] [ E_DEALER_LABEL ] = CreateDynamic3DTextLabel( sprintf( "Press ENTER To Play Blackjack\n"COL_WHITE"%s Minimum", number_format( payout ) ), COLOR_GREY, X, Y, Z + 0.25, 15.0, .testlos = 0, .worldid = world ); + + g_blackjackData[ id ] [ E_PLAYER_LABEL ] [ 0 ] = CreateDynamic3DTextLabel( "Player 0", 0, X + 0.7 * floatcos( Angle - 90.0, degrees ), Y + 0.7 * floatsin( Angle - 90.0, degrees ), Z + 0.05, 15.0, .testlos = 0, .worldid = world ); + g_blackjackData[ id ] [ E_PLAYER_LABEL ] [ 1 ] = CreateDynamic3DTextLabel( "Player 1", 0, X + 0.7 * floatcos( Angle - 90.0 - 22.5, degrees ), Y + 0.7 * floatsin( Angle - 90.0 - 22.5, degrees ), Z + 0.05, 15.0, .testlos = 0, .worldid = world ); + g_blackjackData[ id ] [ E_PLAYER_LABEL ] [ 2 ] = CreateDynamic3DTextLabel( "Player 2", 0, X + 0.7 * floatcos( Angle - 90.0 + 22.5, degrees ), Y + 0.7 * floatsin( Angle - 90.0 + 22.5, degrees ), Z + 0.05, 15.0, .testlos = 0, .worldid = world ); SetDynamicActorInvulnerable( g_blackjackData[ id ] [ E_ACTOR ], true ); SetDynamicActorVirtualWorld( g_blackjackData[ id ] [ E_ACTOR ], world ); @@ -342,6 +351,7 @@ function DrawPlayerBlackjackCard( tableid, player_index ) PlayerPlaySound( gamerid, 1145, 0.0, 0.0, 0.0 ); } g_blackjackPlayerCardIndex[ tableid ] [ cardid ] [ player_index ] = randomCard; + SetBlackjackPlayerLabelValue( tableid, player_index, CalculatePlayerHand( tableid, player_index ) ); break; } return randomCard; @@ -365,6 +375,7 @@ function BeginBlackJackTurn( tableid ) ApplyDynamicActorAnimation( g_blackjackData[ tableid ] [ E_ACTOR ], "CASINO", "dealone", 4.1, 0, 0, 0, 0, 0 ); TextDrawSetString( g_blackjackDealerCards[ tableid ] [ cardid ], g_cardTextdrawData[ randomCard ] ); g_blackjackDealerCardIndex[ tableid ] [ cardid ] = randomCard; + SetBlackjackDealerLabelValue( tableid, CalculateDealerHand( tableid ) ); // noise foreach (new gamerid : Player) if ( p_blackjackTable[ gamerid ] != -1 ) { @@ -374,8 +385,8 @@ function BeginBlackJackTurn( tableid ) // deal player first card if ( cardid == 0 ) { - new - bet_amount = 0; + new blackjack_players = GetBlackjackPlayers( tableid ); + new bet_amount = 0; for ( new player_index = 0; player_index < MAX_BLACKJACK_PLAYERS; player_index ++ ) if ( g_blackjackSlotData[ tableid ] [ player_index ] != -1 ) { @@ -385,6 +396,7 @@ function BeginBlackJackTurn( tableid ) if ( GetPlayerCash( gamerid ) < g_blackjackData[ tableid ] [ E_PAYOUT ] ) { SendError( gamerid, "You don't have any money to wager." ); RemovePlayerFromBlackjack( gamerid, .reset_cam = 1 ); + if ( blackjack_players - 1 <= 0 ) return; // no point having an empty table continue; } @@ -392,7 +404,7 @@ function BeginBlackJackTurn( tableid ) GivePlayerCash( gamerid, -g_blackjackData[ tableid ] [ E_PAYOUT ] ); DrawPlayerBlackjackCard( tableid, player_index ); if ( cardid < 1 ) { // distribute first two cards to players - SetTimerEx( "DrawPlayerBlackjackCard", BLACKJACK_DEALER_WAIT, false, "dd", tableid, player_index ); + SetTimerEx( "DrawPlayerBlackjackCard", BLACKJACK_DEALER_WAIT, false, "dd", tableid, player_index ); } } @@ -480,6 +492,7 @@ function ResetBlackjackTable( tableid ) return; // variables + SetBlackjackDealerLabelValue( tableid, -1 ); KillTimer( g_blackjackData[ tableid ] [ E_GAME_TIMER ] ), g_blackjackData[ tableid ] [ E_GAME_TIMER ] = -1; g_blackjackData[ tableid ] [ E_CARDS_DRAWN ] = 0; @@ -497,68 +510,52 @@ function ResetBlackjackTable( tableid ) } // reshow textdraws to players - for ( new player_index = 0; player_index < MAX_BLACKJACK_PLAYERS; player_index ++ ) if ( g_blackjackSlotData[ tableid ] [ player_index ] != -1 ) + for ( new player_index = 0; player_index < MAX_BLACKJACK_PLAYERS; player_index ++ ) { - new - gamerid = g_blackjackSlotData[ tableid ] [ player_index ]; - - // deal only first two cards - for ( new c = 0; c < MAX_BLACKJACK_CARDS; c ++ ) + if ( g_blackjackSlotData[ tableid ] [ player_index ] != -1 ) { - TextDrawShowForPlayer( gamerid, g_blackjackDealerCards[ tableid ] [ c ] ); + new + gamerid = g_blackjackSlotData[ tableid ] [ player_index ]; - // show two player cards only - if ( c >= 2 ) - continue; + // reset label + SetBlackjackPlayerLabelValue( tableid, player_index, 0 ); - for ( new p = 0; p < GetBlackjackPlayers( tableid ); p ++ ) { - TextDrawShowForPlayer( gamerid, g_blackjackPlayerCards[ tableid ] [ c ] [ p ] ); + // deal only first two cards + for ( new c = 0; c < MAX_BLACKJACK_CARDS; c ++ ) + { + TextDrawShowForPlayer( gamerid, g_blackjackDealerCards[ tableid ] [ c ] ); + + // show two player cards only + if ( c >= 2 ) + continue; + + for ( new p = 0; p < GetBlackjackPlayers( tableid ); p ++ ) { + TextDrawShowForPlayer( gamerid, g_blackjackPlayerCards[ tableid ] [ c ] [ p ] ); + } } } + else SetBlackjackPlayerLabelValue( tableid, player_index, -1 ); } } stock CheckForBlackjack( tableid ) { new - dealer_score = 0; + dealer_score = CalculateDealerHand( tableid ); //if ( g_blackjackData[ tableid ] [ E_CARDS_DRAWN ] <= 1 ) // return dealer_score; - // calculate dealer score - for ( new c = 0; c < MAX_BLACKJACK_CARDS; c ++ ) if ( g_blackjackDealerCardIndex[ tableid ] [ c ] != -1 ) - { - new - card_value = GetBlackjackCardValue( g_blackjackDealerCardIndex[ tableid ] [ c ] ); - - // printf("%d Card = %d", c, card_value); - - if ( card_value == 1 ) { - if ( dealer_score >= 11 ) dealer_score += 1; - else dealer_score += 11; - } - else dealer_score += card_value; - } //printf("The Dealer score is %d", dealer_score ); + SetBlackjackDealerLabelValue( tableid, dealer_score ); // calculate player score for ( new player_index = 0; player_index < MAX_BLACKJACK_PLAYERS; player_index ++ ) if ( g_blackjackSlotData[ tableid ] [ player_index ] != -1 && g_blackjackPlayerCardIndex[ tableid ] [ 0 ] [ player_index ] != -1 ) { - new - playerid = g_blackjackSlotData[ tableid ] [ player_index ], player_score = 0; + new playerid = g_blackjackSlotData[ tableid ] [ player_index ]; + new player_score = CalculatePlayerHand( tableid, player_index ); - for ( new c = 0; c < MAX_BLACKJACK_CARDS; c ++ ) if ( g_blackjackPlayerCardIndex[ tableid ] [ c ] [ player_index ] != -1 ) - { - new - card_value = GetBlackjackCardValue( g_blackjackPlayerCardIndex[ tableid ] [ c ] [ player_index ] ); - - if ( card_value == 1 ) { - if ( player_score >= 11 ) player_score += 1; - else player_score += 11; - } - else player_score += card_value; - } + SetBlackjackPlayerLabelValue( tableid, player_index, player_score ); if ( g_blackjackPlayerState[ tableid ] [ player_index ] != BLACKJACK_STATE_BUST && g_blackjackPlayerState[ tableid ] [ player_index ] != BLACKJACK_STATE_WIN ) { @@ -665,6 +662,7 @@ stock RemovePlayerFromBlackjack( playerid, reset_cam = 0 ) } } g_blackjackSlotData[ blackjack_table ] [ player_index ] = -1; + SetBlackjackPlayerLabelValue( blackjack_table, player_index, -1 ); } // reset camera? @@ -798,3 +796,57 @@ stock GetBlackjackPlayers( tableid ) { return count; } + +stock SetBlackjackPlayerLabelValue( tableid, player_index, score ) { + if ( score != -1 ) { + new playerid = g_blackjackSlotData[ tableid ] [ player_index ]; + UpdateDynamic3DTextLabelText( g_blackjackData[ tableid ] [ E_PLAYER_LABEL ] [ player_index ], COLOR_GOLD, sprintf( "%s\n"COL_GREY"Score:"COL_WHITE" %d", ReturnPlayerName( playerid ), score ) ); + } else { + UpdateDynamic3DTextLabelText( g_blackjackData[ tableid ] [ E_PLAYER_LABEL ] [ player_index ], 0, sprintf( "Player %d", player_index ) ); + } +} + +stock SetBlackjackDealerLabelValue( tableid, score ) { + if ( score != -1 ) { + UpdateDynamic3DTextLabelText( g_blackjackData[ tableid ] [ E_DEALER_LABEL ], COLOR_GREY, sprintf( "Dealer\nScore:"COL_WHITE" %d", score ) ); + } else { + UpdateDynamic3DTextLabelText( g_blackjackData[ tableid ] [ E_DEALER_LABEL ], COLOR_WHITE, sprintf( "Press ENTER To Play Blackjack\n"COL_WHITE"%s Minimum", number_format( g_blackjackData[ tableid ] [ E_PAYOUT ] ) ) ); + } +} + +stock CalculatePlayerHand( tableid, player_index ) +{ + new + player_score = 0; + + // add player cards + for ( new c = 0; c < MAX_BLACKJACK_CARDS; c ++ ) if ( g_blackjackPlayerCardIndex[ tableid ] [ c ] [ player_index ] != -1 ) { + player_score += GetBlackjackCardValue( g_blackjackPlayerCardIndex[ tableid ] [ c ] [ player_index ] ); // aces will add as 1 anyway + } + + // double check aces + for ( new a = 0; a < MAX_BLACKJACK_CARDS; a ++ ) if ( GetBlackjackCardValue( g_blackjackPlayerCardIndex[ tableid ] [ a ] [ player_index ] ) == 1 ) { + if ( player_score + 10 <= 21 ) player_score += 10; // if there's aces, just use one as an 11. if count stays under 21 of course + break; + } + return player_score; +} + +stock CalculateDealerHand( tableid ) +{ + new + dealer_score = 0; + + // add dealer score + for ( new c = 0; c < MAX_BLACKJACK_CARDS; c ++ ) if ( g_blackjackDealerCardIndex[ tableid ] [ c ] != -1 ) { + dealer_score += GetBlackjackCardValue( g_blackjackDealerCardIndex[ tableid ] [ c ] ); // aces will add as 1 anyway + } + + // double check aces + for ( new a = 0; a < MAX_BLACKJACK_CARDS; a ++ ) if ( GetBlackjackCardValue( g_blackjackDealerCardIndex[ tableid ] [ a ] ) == 1 ) { + // if there's aces, just use one as an 11. if count stays under 21 of course + if ( dealer_score + 10 <= 21 ) dealer_score += 10; + break; + } + return dealer_score; +} diff --git a/pawno/include/irresistible/features/visage/boxing.inc b/pawno/include/irresistible/features/visage/boxing.inc index 89b04c8..ede9c5f 100644 --- a/pawno/include/irresistible/features/visage/boxing.inc +++ b/pawno/include/irresistible/features/visage/boxing.inc @@ -83,7 +83,10 @@ CMD:boxing( playerid, params[ ] ) { return SendError( playerid, "You must be within 25 meters of the arena to use this command." ); if ( g_boxingArenaData[ E_OCCUPIED ] == true ) - return SendError( playerid, "The arena is currently occupied. Please wait for the arena to clear." ); + return SendError( playerid, "The arena is currently occupied. Please wait for the arena to clear." ); + + if ( GetPlayerWantedLevel( playerid ) ) + return SendError( playerid, "You cannot box while you are currently wanted." ); if ( !strcmp( params, "fight", true, 5 ) ) { @@ -119,6 +122,9 @@ CMD:boxing( playerid, params[ ] ) { if ( g_boxingPlayerData[ targetID ] [ E_FIGHTING ] == true ) return SendError( playerid, "That player is currently fighting another opponent. Please wait until after their match to reinvite them." ); + if ( GetPlayerWantedLevel( targetID ) ) + return SendError( playerid, "You cannot box a wanted player." ); + if ( g_boxingPlayerData[ playerid ] [ E_INVITED ] == true ) { SendBoxing( playerid, "You have cancelled your invite to %s.", ReturnPlayerName( g_boxingPlayerData[ playerid ] [ E_OPPONENT ] ) ); SendBoxing( g_boxingPlayerData[ playerid ] [ E_OPPONENT ], "%s has cancelled the match invite.", ReturnPlayerName( playerid ) ); diff --git a/pawno/include/irresistible/main.inc b/pawno/include/irresistible/main.inc index d6a4259..9c8b69a 100644 --- a/pawno/include/irresistible/main.inc +++ b/pawno/include/irresistible/main.inc @@ -23,6 +23,7 @@ #include < irresistible\gta\weapon_data > // cnr configuration +#include < irresistible\cnr\cities > #include < irresistible\cnr\dialog_ids > #include < irresistible\cnr\vip > @@ -33,6 +34,10 @@ #include < irresistible\features\furniture > // #include < irresistible\features\vote > +// gangs and facilities +#include < irresistible\features\gangs\gangs > +#include < irresistible\features\gangs\turfs > + // visage casino #include < irresistible\features\visage\roulette > #include < irresistible\features\visage\blackjack > diff --git a/scriptfiles/updates.txt b/scriptfiles/updates.txt index 0114525..e38b3f9 100644 --- a/scriptfiles/updates.txt +++ b/scriptfiles/updates.txt @@ -1,9 +1,4 @@ -(+) Each business security level extends burglar crackpw cooldown. Low, 4h. Medium, 8h. High, 12h. None is 5 minutes default. -(+) Business safes will always pay out an amount to the player, regardless if there is no money in a safe. -(+) Houses will have some furniture when purchased to give opportunity to burglars. -(/) When you sell a house to somebody, the furniture will be transferred to the user. -(/) You need over $100K to be taxed. The more money you have, the more variable your tax will get (beta). -(/) Gang deposits removed. Gang withdrawal tax reduced from 10 percent to 2.5 percent. -(/) Slot machine wins will only be displayed if the individual makes a profit. -(*) Furniture system rebuilt and should no longer have issues when selecting furniture. -(-) You can no longer add furniture to your apartment. +(+) There are now more than 300 gang zones in the whole of San Andreas! Each turf pays variable amounts per 24 min. +(+) You need only one member to control a turf. The more members you have, the faster it takes. +(+) Blackjack player and dealer labels added. Each show the player's score. +(*) Blackjack aces now count properly like real blackjack. No bugs with ace.