adjust height / hide cps/labels/stuff
This commit is contained in:
parent
c6449359e5
commit
dcfcc35d63
@ -5,24 +5,14 @@
|
|||||||
* Purpose: Battle Royale minigame implementation for SA-MP
|
* Purpose: Battle Royale minigame implementation for SA-MP
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
[ ] https://github.com/RIDE-2DAY/GZ_Shapes/blob/master/GZ_ShapesALS.inc
|
TODO:
|
||||||
[ ] Player creates lobby
|
[ ] Make pickups work
|
||||||
[X] Lobby can be CAC only
|
[ ] Messages fix
|
||||||
[X] Player can select area
|
[ ] Prize pool deposit
|
||||||
[ ] Player can select speed in which the circle shrinks
|
[ ] Invisible walls
|
||||||
[X] Player can select between running weapons, walking weapons or both (as drops)
|
[ ] Make areas
|
||||||
[X] Player can make an entry fee, this entry fee gets added to a prize pool
|
[ ] Hide player name tags / checkpoints
|
||||||
|
|
||||||
[X] Players join the lobby, you teleport to an island
|
|
||||||
[X] After the maximum slots are achieved, the game will start
|
|
||||||
[X] Host can start the match forcefully
|
|
||||||
|
|
||||||
[X] Randomly bomb region
|
|
||||||
|
|
||||||
[X] Plane in the middle, you have a parachute, jump out
|
|
||||||
[ ] Stay within red zone, if you leave it you get killed
|
|
||||||
[ ] Last man standing wins ...
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* ** Includes ** */
|
/* ** Includes ** */
|
||||||
@ -69,9 +59,9 @@ static const
|
|||||||
BR_VEHICLE_MODELS[ ] = {
|
BR_VEHICLE_MODELS[ ] = {
|
||||||
404, 422, 471, 478, 505, 543, 566, 552, 554
|
404, 422, 471, 478, 505, 543, 566, 552, 554
|
||||||
},
|
},
|
||||||
Float: BR_MIN_HEIGHT = 300.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 = 25.0,
|
Float: BR_PLANE_RADIUS_FROM_BORDER = 50.0,
|
||||||
Float: BR_UNITS_PER_SECOND_SHRINK = 1.0
|
Float: BR_UNITS_PER_SECOND_SHRINK = 1.0
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -110,8 +100,9 @@ enum E_BR_AREA_DATA
|
|||||||
|
|
||||||
static const
|
static const
|
||||||
// where all the area data is stored
|
// where all the area data is stored
|
||||||
br_areaData [ 1 ] [ E_BR_AREA_DATA ] =
|
br_areaData [ 2 ] [ E_BR_AREA_DATA ] =
|
||||||
{
|
{
|
||||||
|
{ "San Fierro", -2799.0, -358.0, -1400.0, 1513.0 },
|
||||||
{ "Fort Carson", -394.0, 956.0, 164.0, 1254.0 }
|
{ "Fort Carson", -394.0, 956.0, 164.0, 1254.0 }
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
@ -590,7 +581,7 @@ static stock BattleRoyale_JoinLobby( playerid, lobbyid )
|
|||||||
static stock BattleRoyale_ShowLobbies( playerid )
|
static stock BattleRoyale_ShowLobbies( playerid )
|
||||||
{
|
{
|
||||||
// set the headers
|
// set the headers
|
||||||
szLargeString = ""COL_WHITE"Lobby Name\tHost\tPlayers\tEntry Fee\n";
|
szLargeString = ""COL_WHITE"Lobby Name\t"COL_WHITE"Host\t"COL_WHITE"Players\t"COL_WHITE"Entry Fee\n";
|
||||||
|
|
||||||
// format dialog
|
// format dialog
|
||||||
foreach ( new l : battleroyale )
|
foreach ( new l : battleroyale )
|
||||||
@ -634,6 +625,12 @@ 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
|
||||||
|
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_3D_TEXT_LABEL, true );
|
||||||
|
|
||||||
// perform neccessary operations/checks on the lobby
|
// perform neccessary operations/checks on the lobby
|
||||||
if ( remove_from_iterator )
|
if ( remove_from_iterator )
|
||||||
{
|
{
|
||||||
@ -722,12 +719,24 @@ static stock BattleRoyale_StartGame( lobbyid )
|
|||||||
// load the player into the area
|
// load the player into the area
|
||||||
foreach ( new playerid : battleroyaleplayers[ lobbyid ] )
|
foreach ( new playerid : battleroyaleplayers[ lobbyid ] )
|
||||||
{
|
{
|
||||||
|
p_battleRoyaleStatus[ playerid ] = E_STATUS_WAITING;
|
||||||
|
TogglePlayerSpectating( playerid, true );
|
||||||
|
|
||||||
|
// hide default cnr things
|
||||||
|
Turf_HideAllGangZones( playerid );
|
||||||
|
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_3D_TEXT_LABEL, false );
|
||||||
|
Streamer_Update( playerid );
|
||||||
|
|
||||||
|
// show the battle royal playable zone
|
||||||
for ( new g = 0; g < 4; g ++ ) {
|
for ( new g = 0; g < 4; g ++ ) {
|
||||||
GangZoneShowForPlayer( playerid, br_lobbyData[ areaid ] [ E_BORDER_ZONE ] [ g ], 0x000000FF );
|
GangZoneShowForPlayer( playerid, br_lobbyData[ areaid ] [ E_BORDER_ZONE ] [ g ], 0x000000FF );
|
||||||
}
|
}
|
||||||
p_battleRoyaleStatus[ playerid ] = E_STATUS_WAITING;
|
|
||||||
TogglePlayerSpectating( playerid, true );
|
// show controls
|
||||||
Streamer_Update( playerid );
|
ShowPlayerHelpDialog( playerid, 0, "~y~~h~~k~~PED_JUMPING~~w~ - Jump Out Of Plane" );
|
||||||
}
|
}
|
||||||
print("Started game");
|
print("Started game");
|
||||||
return 1;
|
return 1;
|
||||||
@ -771,7 +780,21 @@ function BattleRoyale_GameUpdate( lobbyid )
|
|||||||
|
|
||||||
// ensure a minimum zone area
|
// ensure a minimum zone area
|
||||||
if ( br_lobbyData[ lobbyid ] [ E_B_MAX_X ] - br_lobbyData[ lobbyid ] [ E_B_MIN_X ] < 5.0 || br_lobbyData[ lobbyid ] [ E_B_MAX_Y ] - br_lobbyData[ lobbyid ] [ E_B_MIN_Y ] < 5.0 ) {
|
if ( br_lobbyData[ lobbyid ] [ E_B_MAX_X ] - br_lobbyData[ lobbyid ] [ E_B_MIN_X ] < 5.0 || br_lobbyData[ lobbyid ] [ E_B_MAX_Y ] - br_lobbyData[ lobbyid ] [ E_B_MIN_Y ] < 5.0 ) {
|
||||||
return 1;
|
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
|
||||||
@ -828,17 +851,25 @@ function BattleRoyale_PlaneMove( lobbyid )
|
|||||||
// if the plane completes a full rotation, throw everyone out
|
// if the plane completes a full rotation, throw everyone out
|
||||||
if ( ( br_lobbyData[ lobbyid ] [ E_PLANE_ROTATION ] += 0.006 * float( BR_PLANE_UPDATE_RATE ) ) >= 360.0 ) // 360.00 / 60000.0 * rate
|
if ( ( br_lobbyData[ lobbyid ] [ E_PLANE_ROTATION ] += 0.006 * float( BR_PLANE_UPDATE_RATE ) ) >= 360.0 ) // 360.00 / 60000.0 * rate
|
||||||
{
|
{
|
||||||
|
new
|
||||||
|
unready_players = 0;
|
||||||
|
|
||||||
foreach ( new playerid : battleroyaleplayers[ lobbyid ] ) if ( p_battleRoyaleStatus[ playerid ] != E_STATUS_STARTED )
|
foreach ( new playerid : battleroyaleplayers[ lobbyid ] ) if ( p_battleRoyaleStatus[ playerid ] != E_STATUS_STARTED )
|
||||||
{
|
{
|
||||||
|
unready_players ++;
|
||||||
BattleRoyale_ThrowFromPlane( playerid );
|
BattleRoyale_ThrowFromPlane( playerid );
|
||||||
SendServerMessage( playerid, "You have been thrown out of your plane due to a lack of decision." );
|
SendServerMessage( playerid, "You have been thrown out of your plane due to a lack of decision." );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ensures that the plane object is kept while players are thrown out
|
||||||
|
if ( ! unready_players )
|
||||||
|
{
|
||||||
KillTimer( br_lobbyData[ lobbyid ] [ E_PLANE_TIMER ] );
|
KillTimer( br_lobbyData[ lobbyid ] [ E_PLANE_TIMER ] );
|
||||||
br_lobbyData[ lobbyid ] [ E_PLANE_TIMER ] = -1;
|
br_lobbyData[ lobbyid ] [ E_PLANE_TIMER ] = -1;
|
||||||
|
|
||||||
DestroyDynamicObject( br_lobbyData[ lobbyid ] [ E_PLANE ] );
|
DestroyDynamicObject( br_lobbyData[ lobbyid ] [ E_PLANE ] );
|
||||||
br_lobbyData[ lobbyid ] [ E_PLANE ] = -1;
|
br_lobbyData[ lobbyid ] [ E_PLANE ] = -1;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -878,6 +909,7 @@ static stock BattleRoyale_ThrowFromPlane( playerid )
|
|||||||
{
|
{
|
||||||
p_battleRoyaleStatus[ playerid ] = E_STATUS_STARTED;
|
p_battleRoyaleStatus[ playerid ] = E_STATUS_STARTED;
|
||||||
TogglePlayerSpectating( playerid, false );
|
TogglePlayerSpectating( playerid, false );
|
||||||
|
HidePlayerHelpDialog( playerid );
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -253,7 +253,7 @@ stock Turf_CreateHardpoint( )
|
|||||||
|
|
||||||
Turf_GetMiddlePos( g_gangHardpointTurf, middle_x, middle_y );
|
Turf_GetMiddlePos( g_gangHardpointTurf, middle_x, middle_y );
|
||||||
|
|
||||||
g_gangHardpointMapIcon = CreateDynamicMapIcon( middle_x, middle_y, 0.0, 19, -1, -1, -1, 0, 3000.0, MAPICON_GLOBAL );
|
g_gangHardpointMapIcon = CreateDynamicMapIcon( middle_x, middle_y, 0.0, 19, -1, .worldid = 0, .interiorid = 0, .playerid = 0, .streamdistance = 3000.0, .style = MAPICON_GLOBAL );
|
||||||
Streamer_RemoveArrayData( STREAMER_TYPE_MAP_ICON, g_gangHardpointMapIcon, E_STREAMER_PLAYER_ID, 0 );
|
Streamer_RemoveArrayData( STREAMER_TYPE_MAP_ICON, g_gangHardpointMapIcon, E_STREAMER_PLAYER_ID, 0 );
|
||||||
|
|
||||||
// redraw gangzones
|
// redraw gangzones
|
||||||
@ -529,6 +529,15 @@ stock Turf_IsAbleToTakeover( i ) {
|
|||||||
return p_Class[ i ] == CLASS_CIVILIAN && ! IsPlayerSpawnProtected( i ) && ! IsPlayerPassive( i ) && ! IsPlayerAdminOnDuty( i ) && GetPlayerState( i ) != PLAYER_STATE_SPECTATING && ! IsPlayerAFK( i ) && Z <= 250.0;
|
return p_Class[ i ] == CLASS_CIVILIAN && ! IsPlayerSpawnProtected( i ) && ! IsPlayerPassive( i ) && ! IsPlayerAdminOnDuty( i ) && GetPlayerState( i ) != PLAYER_STATE_SPECTATING && ! IsPlayerAFK( i ) && Z <= 250.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stock Turf_HideAllGangZones( playerid )
|
||||||
|
{
|
||||||
|
foreach ( new x : turfs )
|
||||||
|
{
|
||||||
|
GangZoneHideForPlayer( playerid, g_gangTurfData[ x ] [ E_ID ] );
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
stock Turf_RedrawPlayerGangZones( playerid )
|
stock Turf_RedrawPlayerGangZones( playerid )
|
||||||
{
|
{
|
||||||
foreach ( new x : turfs )
|
foreach ( new x : turfs )
|
||||||
|
Loading…
Reference in New Issue
Block a user