BR fixes
This commit is contained in:
parent
9e9c4e16c3
commit
f1adc8e80d
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
/* ** Definitions ** */
|
/* ** Definitions ** */
|
||||||
#define BR_MAX_LOBBIES ( 5 )
|
#define BR_MAX_LOBBIES ( 5 )
|
||||||
#define BR_MAX_PLAYERS ( 32 )
|
#define BR_MAX_PLAYERS ( 33 )
|
||||||
|
|
||||||
#define BR_MAX_PICKUPS ( 250 )
|
#define BR_MAX_PICKUPS ( 250 )
|
||||||
#define BR_MAX_VEHICLES ( 25 )
|
#define BR_MAX_VEHICLES ( 25 )
|
||||||
@ -51,8 +51,7 @@ static const
|
|||||||
},
|
},
|
||||||
Float: BR_MIN_HEIGHT = 750.0,
|
Float: BR_MIN_HEIGHT = 750.0,
|
||||||
Float: BR_MIN_CAMERA_HEIGHT = 50.0,
|
Float: BR_MIN_CAMERA_HEIGHT = 50.0,
|
||||||
Float: BR_PLANE_RADIUS_FROM_BORDER = 50.0,
|
Float: BR_PLANE_RADIUS_FROM_BORDER = 50.0
|
||||||
Float: BR_UNITS_PER_SECOND_SHRINK = 2.0
|
|
||||||
;
|
;
|
||||||
|
|
||||||
/* ** Variables ** */
|
/* ** Variables ** */
|
||||||
@ -91,21 +90,21 @@ enum E_BR_AREA_DATA
|
|||||||
{
|
{
|
||||||
E_NAME[ 24 ], Float: E_MIN_X, Float: E_MIN_Y,
|
E_NAME[ 24 ], Float: E_MIN_X, Float: E_MIN_Y,
|
||||||
Float: E_MAX_X, Float: E_MAX_Y, E_MAX_PICKUPS,
|
Float: E_MAX_X, Float: E_MAX_Y, E_MAX_PICKUPS,
|
||||||
E_MAX_VEHICLES
|
E_MAX_VEHICLES, Float: E_SHRINK_SPEED
|
||||||
};
|
};
|
||||||
|
|
||||||
static const
|
static const
|
||||||
// where all the area data is stored
|
// where all the area data is stored
|
||||||
br_areaData [ ] [ E_BR_AREA_DATA ] =
|
br_areaData [ ] [ E_BR_AREA_DATA ] =
|
||||||
{
|
{
|
||||||
{ "Fort Carson", -465.9, 751.0, 277.0, 1361.0, 50, 5 },
|
{ "Fort Carson", -465.9, 751.0, 277.0, 1361.0, 50, 5, 2.0 },
|
||||||
{ "Blueberry", -294.5, -451.5, 479.5, 272.5, 50, 5 },
|
{ "Blueberry", -294.5, -451.5, 479.5, 272.5, 50, 5, 2.0 },
|
||||||
{ "Polomino Creek", 2082.5, -326.5, 2952.5, 496.5, 75, 5 },
|
{ "Polomino Creek", 2082.5, -326.5, 2952.5, 496.5, 75, 5, 2.0 },
|
||||||
{ "Angel Pine", -2913.5, -2963.0, -1459.5, -1953.0, 100, 10 },
|
{ "Angel Pine", -2913.5, -2963.0, -1459.5, -1953.0, 100, 10, 3.0 },
|
||||||
{ "Tierra Robada", -2989.5, 2074.5, -1144.5, 2990.5, 150, 10 },
|
{ "Tierra Robada", -2989.5, 2074.5, -1144.5, 2990.5, 150, 10, 4.0 },
|
||||||
{ "Red County", -276.0, -1024.0, 2997.0, 694.0, 150, 20 },
|
{ "Red County", -276.0, -1024.0, 2997.0, 694.0, 150, 20, 4.0 },
|
||||||
{ "Bone County", -1848.0, 565.0, 1061.0, 2956.0, BR_MAX_PICKUPS, BR_MAX_VEHICLES },
|
{ "Bone County", -1848.0, 565.0, 1061.0, 2956.0, BR_MAX_PICKUPS, BR_MAX_VEHICLES, 6.0 },
|
||||||
{ "Flint County", -2988.0, -2988.5, 170.0, -634.5, BR_MAX_PICKUPS, BR_MAX_VEHICLES }
|
{ "Flint County", -2988.0, -2988.5, 170.0, -634.5, BR_MAX_PICKUPS, BR_MAX_VEHICLES, 6.0 }
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -231,6 +230,7 @@ hook SetPlayerRandomSpawn( playerid )
|
|||||||
SetPlayerArmour( playerid, br_lobbyData[ lobbyid ] [ E_ARMOUR ] );
|
SetPlayerArmour( playerid, br_lobbyData[ lobbyid ] [ E_ARMOUR ] );
|
||||||
|
|
||||||
BattleRoyale_ShowGangZone( playerid, lobbyid );
|
BattleRoyale_ShowGangZone( playerid, lobbyid );
|
||||||
|
ResetPlayerPassiveMode( playerid );
|
||||||
return Y_HOOKS_BREAK_RETURN_1;
|
return Y_HOOKS_BREAK_RETURN_1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -329,6 +329,7 @@ hook OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
|||||||
// join the player to the lobby
|
// join the player to the lobby
|
||||||
return BattleRoyale_JoinLobby( playerid, l ), 1;
|
return BattleRoyale_JoinLobby( playerid, l ), 1;
|
||||||
}
|
}
|
||||||
|
x ++;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -420,7 +421,7 @@ hook OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
|||||||
name[ 24 ];
|
name[ 24 ];
|
||||||
|
|
||||||
if ( sscanf( inputtext, "s[24]", name ) ) SendError( playerid, "You must enter a valid name." );
|
if ( sscanf( inputtext, "s[24]", name ) ) SendError( playerid, "You must enter a valid name." );
|
||||||
else if ( 3 <= strlen( name ) < 24 ) SendError( playerid, "You must enter a name between 3 and 24 characters." );
|
else if ( ! ( 3 <= strlen( name ) < 24 ) ) SendError( playerid, "You must enter a name between 3 and 24 characters." );
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BattleRoyale_SendMessage( lobbyid, "%s has set the lobby name to %s.", ReturnPlayerName( playerid ), br_lobbyData[ lobbyid ] [ E_NAME ] );
|
BattleRoyale_SendMessage( lobbyid, "%s has set the lobby name to %s.", ReturnPlayerName( playerid ), br_lobbyData[ lobbyid ] [ E_NAME ] );
|
||||||
@ -457,10 +458,10 @@ hook OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
|||||||
limit;
|
limit;
|
||||||
|
|
||||||
if ( sscanf( inputtext, "d", limit ) ) SendError( playerid, "You must enter a valid limit." );
|
if ( sscanf( inputtext, "d", limit ) ) SendError( playerid, "You must enter a valid limit." );
|
||||||
else if ( ! ( 1 <= limit < BR_MAX_PLAYERS ) ) SendError( playerid, "You must enter a limit between 1 and %d", BR_MAX_PLAYERS );
|
else if ( ! ( 2 <= limit < BR_MAX_PLAYERS ) ) SendError( playerid, "You must enter a limit between 2 and %d players.", BR_MAX_PLAYERS );
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BattleRoyale_SendMessage( lobbyid, "%s has set a lobby player limit to %d.", ReturnPlayerName( playerid ), limit );
|
BattleRoyale_SendMessage( lobbyid, "%s has set the lobby player limit to %d.", ReturnPlayerName( playerid ), limit );
|
||||||
br_lobbyData[ lobbyid ] [ E_LIMIT ] = limit;
|
br_lobbyData[ lobbyid ] [ E_LIMIT ] = limit;
|
||||||
return BattleRoyale_EditLobby( playerid, lobbyid );
|
return BattleRoyale_EditLobby( playerid, lobbyid );
|
||||||
}
|
}
|
||||||
@ -551,6 +552,7 @@ CMD:battleroyale( playerid, params[ ] )
|
|||||||
{
|
{
|
||||||
BattleRoyale_SendMessage( lobbyid, "%s(%d) has disconnected from the match!", ReturnPlayerName( playerid ), playerid );
|
BattleRoyale_SendMessage( lobbyid, "%s(%d) has disconnected from the match!", ReturnPlayerName( playerid ), playerid );
|
||||||
BattleRoyale_RemovePlayer( playerid, true );
|
BattleRoyale_RemovePlayer( playerid, true );
|
||||||
|
SpawnPlayer( playerid );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if ( ! strcmp( params, "donate", false, 6 ) )
|
else if ( ! strcmp( params, "donate", false, 6 ) )
|
||||||
@ -682,12 +684,16 @@ static stock BattleRoyale_ShowLobbies( playerid )
|
|||||||
{
|
{
|
||||||
format(
|
format(
|
||||||
szLargeString, sizeof( szLargeString ),
|
szLargeString, sizeof( szLargeString ),
|
||||||
"%s%s\t%s\t%d / %d\t%s\n",
|
"%s%s%s\t%s%s\t%s%d / %d\t%s%s\n",
|
||||||
szLargeString,
|
szLargeString,
|
||||||
|
br_lobbyData[ l ] [ E_STATUS ] == E_STATUS_STARTED ? ( COL_RED ) : ( COL_WHITE ),
|
||||||
br_lobbyData[ l ] [ E_NAME ],
|
br_lobbyData[ l ] [ E_NAME ],
|
||||||
|
br_lobbyData[ l ] [ E_STATUS ] == E_STATUS_STARTED ? ( COL_RED ) : ( COL_WHITE ),
|
||||||
IsPlayerConnected( br_lobbyData[ l ] [ E_HOST ] ) ? ( ReturnPlayerName( br_lobbyData[ l ] [ E_HOST ] ) ) : ( "N/A" ),
|
IsPlayerConnected( br_lobbyData[ l ] [ E_HOST ] ) ? ( ReturnPlayerName( br_lobbyData[ l ] [ E_HOST ] ) ) : ( "N/A" ),
|
||||||
|
br_lobbyData[ l ] [ E_STATUS ] == E_STATUS_STARTED ? ( COL_RED ) : ( COL_WHITE ),
|
||||||
Iter_Count( battleroyaleplayers[ l ] ),
|
Iter_Count( battleroyaleplayers[ l ] ),
|
||||||
br_lobbyData[ l ] [ E_LIMIT ],
|
br_lobbyData[ l ] [ E_LIMIT ],
|
||||||
|
br_lobbyData[ l ] [ E_STATUS ] == E_STATUS_STARTED ? ( COL_RED ) : ( COL_WHITE ),
|
||||||
cash_format( br_lobbyData[ l ] [ E_ENTRY_FEE ] )
|
cash_format( br_lobbyData[ l ] [ E_ENTRY_FEE ] )
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -701,6 +707,7 @@ static stock BattleRoyale_RespawnPlayer( playerid )
|
|||||||
SetPlayerPos( playerid, BR_CHECKPOINT_POS[ 0 ], BR_CHECKPOINT_POS[ 1 ], BR_CHECKPOINT_POS[ 2 ] );
|
SetPlayerPos( playerid, BR_CHECKPOINT_POS[ 0 ], BR_CHECKPOINT_POS[ 1 ], BR_CHECKPOINT_POS[ 2 ] );
|
||||||
SetPlayerVirtualWorld( playerid, 0 );
|
SetPlayerVirtualWorld( playerid, 0 );
|
||||||
SetPlayerInterior( playerid, 0 );
|
SetPlayerInterior( playerid, 0 );
|
||||||
|
SetPlayerPassiveMode( playerid );
|
||||||
|
|
||||||
// reset the respawn variable
|
// reset the respawn variable
|
||||||
p_waitingForRespawn{ playerid } = false;
|
p_waitingForRespawn{ playerid } = false;
|
||||||
@ -717,12 +724,13 @@ static stock BattleRoyale_RemovePlayer( playerid, bool: respawn, bool: remove_fr
|
|||||||
p_battleRoyaleLobby[ playerid ] = BR_INVALID_LOBBY;
|
p_battleRoyaleLobby[ playerid ] = BR_INVALID_LOBBY;
|
||||||
p_waitingForRespawn{ playerid } = respawn;
|
p_waitingForRespawn{ playerid } = respawn;
|
||||||
|
|
||||||
// toggle checkpoints etc
|
// toggle checkpoints etc if connected
|
||||||
|
if ( IsPlayerConnected( playerid ) ) {
|
||||||
Streamer_ToggleAllItems( playerid, STREAMER_TYPE_CP, true );
|
Streamer_ToggleAllItems( playerid, STREAMER_TYPE_CP, true );
|
||||||
//Streamer_ToggleAllItems( playerid, STREAMER_TYPE_RACE_CP, true );
|
|
||||||
Streamer_ToggleAllItems( playerid, STREAMER_TYPE_MAP_ICON, true );
|
Streamer_ToggleAllItems( playerid, STREAMER_TYPE_MAP_ICON, true );
|
||||||
Streamer_ToggleAllItems( playerid, STREAMER_TYPE_3D_TEXT_LABEL, true );
|
Streamer_ToggleAllItems( playerid, STREAMER_TYPE_3D_TEXT_LABEL, true );
|
||||||
BattleRoyale_PlayerTags( playerid, lobbyid, true );
|
BattleRoyale_PlayerTags( playerid, lobbyid, true );
|
||||||
|
}
|
||||||
|
|
||||||
// perform neccessary operations/checks on the lobby
|
// perform neccessary operations/checks on the lobby
|
||||||
if ( remove_from_iterator )
|
if ( remove_from_iterator )
|
||||||
@ -836,7 +844,6 @@ static stock BattleRoyale_StartGame( lobbyid )
|
|||||||
|
|
||||||
// hide default cnr things
|
// hide default cnr things
|
||||||
Streamer_ToggleAllItems( playerid, STREAMER_TYPE_CP, false );
|
Streamer_ToggleAllItems( playerid, STREAMER_TYPE_CP, false );
|
||||||
//Streamer_ToggleAllItems( playerid, STREAMER_TYPE_RACE_CP, false );
|
|
||||||
Streamer_ToggleAllItems( playerid, STREAMER_TYPE_MAP_ICON, false );
|
Streamer_ToggleAllItems( playerid, STREAMER_TYPE_MAP_ICON, false );
|
||||||
Streamer_ToggleAllItems( playerid, STREAMER_TYPE_3D_TEXT_LABEL, false );
|
Streamer_ToggleAllItems( playerid, STREAMER_TYPE_3D_TEXT_LABEL, false );
|
||||||
BattleRoyale_PlayerTags( playerid, lobbyid, false );
|
BattleRoyale_PlayerTags( playerid, lobbyid, false );
|
||||||
@ -862,6 +869,20 @@ function BattleRoyale_GameUpdate( lobbyid )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// hurt players outside the zone
|
||||||
|
foreach ( new playerid : battleroyaleplayers[ lobbyid ] )
|
||||||
|
{
|
||||||
|
if ( ! IsPlayerInArea( playerid, br_lobbyData[ lobbyid ] [ E_B_MIN_X ], br_lobbyData[ lobbyid ] [ E_B_MAX_X ], br_lobbyData[ lobbyid ] [ E_B_MIN_Y ], br_lobbyData[ lobbyid ] [ E_B_MAX_Y ] ) )
|
||||||
|
{
|
||||||
|
new
|
||||||
|
Float: health;
|
||||||
|
|
||||||
|
GetPlayerHealth( playerid, health );
|
||||||
|
GameTextForPlayer( playerid, "~r~STAY IN THE AREA!", 3500, 3 );
|
||||||
|
SetPlayerHealth( playerid, health - 5.0 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// prevent zone shrinking and bombing while the plane is rotating
|
// prevent zone shrinking and bombing while the plane is rotating
|
||||||
if ( br_lobbyData[ lobbyid ] [ E_PLANE ] != -1 ) {
|
if ( br_lobbyData[ lobbyid ] [ E_PLANE ] != -1 ) {
|
||||||
return 1;
|
return 1;
|
||||||
@ -871,6 +892,8 @@ function BattleRoyale_GameUpdate( lobbyid )
|
|||||||
new Float: radius_x = ( VectorSize( br_lobbyData[ lobbyid ] [ E_B_MIN_X ] - br_lobbyData[ lobbyid ] [ E_B_MAX_X ], 0.0, 0.0 ) ) / 2.0;
|
new Float: radius_x = ( VectorSize( br_lobbyData[ lobbyid ] [ E_B_MIN_X ] - br_lobbyData[ lobbyid ] [ E_B_MAX_X ], 0.0, 0.0 ) ) / 2.0;
|
||||||
new Float: radius_y = ( VectorSize( 0.0, br_lobbyData[ lobbyid ] [ E_B_MIN_Y ] - br_lobbyData[ lobbyid ] [ E_B_MAX_Y ], 0.0 ) ) / 2.0;
|
new Float: radius_y = ( VectorSize( 0.0, br_lobbyData[ lobbyid ] [ E_B_MIN_Y ] - br_lobbyData[ lobbyid ] [ E_B_MAX_Y ], 0.0 ) ) / 2.0;
|
||||||
|
|
||||||
|
new Float: BR_UNITS_PER_SECOND_SHRINK = br_areaData[ br_lobbyData[ lobbyid ] [ E_AREA_ID ] ] [ E_SHRINK_SPEED ];
|
||||||
|
|
||||||
if ( radius_x > radius_y )
|
if ( radius_x > radius_y )
|
||||||
{
|
{
|
||||||
new Float: rate_of_change = 1.0 / ( radius_y / radius_x );
|
new Float: rate_of_change = 1.0 / ( radius_y / radius_x );
|
||||||
@ -901,20 +924,6 @@ function BattleRoyale_GameUpdate( lobbyid )
|
|||||||
return BattleRoyale_EndGame( lobbyid );
|
return BattleRoyale_EndGame( lobbyid );
|
||||||
}
|
}
|
||||||
|
|
||||||
// hurt players outside the zone
|
|
||||||
foreach ( new playerid : battleroyaleplayers[ lobbyid ] )
|
|
||||||
{
|
|
||||||
if ( ! IsPlayerInArea( playerid, br_lobbyData[ lobbyid ] [ E_B_MIN_X ], br_lobbyData[ lobbyid ] [ E_B_MAX_X ], br_lobbyData[ lobbyid ] [ E_B_MIN_Y ], br_lobbyData[ lobbyid ] [ E_B_MAX_Y ] ) )
|
|
||||||
{
|
|
||||||
new
|
|
||||||
Float: health;
|
|
||||||
|
|
||||||
GetPlayerHealth( playerid, health );
|
|
||||||
GameTextForPlayer( playerid, "~r~STAY IN THE AREA!", 3500, 3 );
|
|
||||||
SetPlayerHealth( playerid, health - 5.0 );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// rocket
|
// rocket
|
||||||
new
|
new
|
||||||
tick_count = GetServerTime( );
|
tick_count = GetServerTime( );
|
||||||
|
Loading…
Reference in New Issue
Block a user