use average player count for potential winnings and show map icon
This commit is contained in:
parent
f406fb5139
commit
810af12771
@ -38,3 +38,7 @@
|
|||||||
- Called when a gang is loaded
|
- Called when a gang is loaded
|
||||||
- `OnGangUnload( gangid, bool: deleted )`
|
- `OnGangUnload( gangid, bool: deleted )`
|
||||||
- Called when a gang is unloaded (or deleted)
|
- Called when a gang is unloaded (or deleted)
|
||||||
|
- `OnPlayerJoinGang( playerid, gangid )`
|
||||||
|
- Called when a player joins a gang
|
||||||
|
- `OnPlayerLeaveGang( playerid, gangid, reason )`
|
||||||
|
- Called when a player leaves a gang
|
||||||
|
@ -442,7 +442,7 @@ hook OnPlayerDriveVehicle( playerid, vehicleid )
|
|||||||
g_businessData[ businessid ] [ E_EXPORT_INDEX ] [ x ] = drop_off_index;
|
g_businessData[ businessid ] [ E_EXPORT_INDEX ] [ x ] = drop_off_index;
|
||||||
|
|
||||||
// map icons, cp, areas
|
// map icons, cp, areas
|
||||||
g_businessData[ businessid ] [ E_EXPORT_ICON ] [ x ] = CreateDynamicMapIcon( g_airBusinessExportData[ city ] [ drop_off_index ] [ 0 ], g_airBusinessExportData[ city ] [ drop_off_index ] [ 1 ], g_airBusinessExportData[ city ] [ drop_off_index ] [ 2 ], 19, -1, -1, -1, 0, 6000.0, MAPICON_GLOBAL );
|
g_businessData[ businessid ] [ E_EXPORT_ICON ] [ x ] = CreateDynamicMapIcon( g_airBusinessExportData[ city ] [ drop_off_index ] [ 0 ], g_airBusinessExportData[ city ] [ drop_off_index ] [ 1 ], g_airBusinessExportData[ city ] [ drop_off_index ] [ 2 ], 53, -1, -1, -1, 0, 6000.0, MAPICON_GLOBAL );
|
||||||
g_businessData[ businessid ] [ E_EXPORT_CP ] [ x ] = CreateDynamicRaceCP( 1, g_airBusinessExportData[ city ] [ drop_off_index ] [ 0 ], g_airBusinessExportData[ city ] [ drop_off_index ] [ 1 ], g_airBusinessExportData[ city ] [ drop_off_index ] [ 2 ], 0, 0, 0, 5.0, -1, -1, 0 );
|
g_businessData[ businessid ] [ E_EXPORT_CP ] [ x ] = CreateDynamicRaceCP( 1, g_airBusinessExportData[ city ] [ drop_off_index ] [ 0 ], g_airBusinessExportData[ city ] [ drop_off_index ] [ 1 ], g_airBusinessExportData[ city ] [ drop_off_index ] [ 2 ], 0, 0, 0, 5.0, -1, -1, 0 );
|
||||||
g_businessData[ businessid ] [ E_EXPORT_CIRCLE ] [ x ] = CreateDynamicCircle( g_airBusinessExportData[ city ] [ drop_off_index ] [ 0 ], g_airBusinessExportData[ city ] [ drop_off_index ] [ 1 ], 15.0 );
|
g_businessData[ businessid ] [ E_EXPORT_CIRCLE ] [ x ] = CreateDynamicCircle( g_airBusinessExportData[ city ] [ drop_off_index ] [ 0 ], g_airBusinessExportData[ city ] [ drop_off_index ] [ 1 ], 15.0 );
|
||||||
|
|
||||||
@ -1787,7 +1787,7 @@ stock SetRandomDropoffLocation( playerid, businessid, bool: heli = false )
|
|||||||
g_businessData[ businessid ] [ E_EXPORT_INDEX ] [ x ] = drop_off_index;
|
g_businessData[ businessid ] [ E_EXPORT_INDEX ] [ x ] = drop_off_index;
|
||||||
|
|
||||||
// map icons, cp, areas
|
// map icons, cp, areas
|
||||||
g_businessData[ businessid ] [ E_EXPORT_ICON ] [ x ] = CreateDynamicMapIcon( g_roadBusinessExportData[ city_id ] [ drop_off_index ] [ 0 ], g_roadBusinessExportData[ city_id ] [ drop_off_index ] [ 1 ], g_roadBusinessExportData[ city_id ] [ drop_off_index ] [ 2 ], 19, -1, -1, -1, 0, 6000.0, MAPICON_GLOBAL );
|
g_businessData[ businessid ] [ E_EXPORT_ICON ] [ x ] = CreateDynamicMapIcon( g_roadBusinessExportData[ city_id ] [ drop_off_index ] [ 0 ], g_roadBusinessExportData[ city_id ] [ drop_off_index ] [ 1 ], g_roadBusinessExportData[ city_id ] [ drop_off_index ] [ 2 ], 53, -1, -1, -1, 0, 6000.0, MAPICON_GLOBAL );
|
||||||
g_businessData[ businessid ] [ E_EXPORT_CP ] [ x ] = CreateDynamicRaceCP( 1, g_roadBusinessExportData[ city_id ] [ drop_off_index ] [ 0 ], g_roadBusinessExportData[ city_id ] [ drop_off_index ] [ 1 ], g_roadBusinessExportData[ city_id ] [ drop_off_index ] [ 2 ], 0, 0, 0, 5.0, -1, -1, 0 );
|
g_businessData[ businessid ] [ E_EXPORT_CP ] [ x ] = CreateDynamicRaceCP( 1, g_roadBusinessExportData[ city_id ] [ drop_off_index ] [ 0 ], g_roadBusinessExportData[ city_id ] [ drop_off_index ] [ 1 ], g_roadBusinessExportData[ city_id ] [ drop_off_index ] [ 2 ], 0, 0, 0, 5.0, -1, -1, 0 );
|
||||||
|
|
||||||
// reset players in map icon/cp
|
// reset players in map icon/cp
|
||||||
|
@ -985,6 +985,7 @@ stock SetPlayerGang( playerid, joining_gang )
|
|||||||
if ( GetPlayerWantedLevel( playerid ) < 1 ) SetPlayerColor( playerid, g_gangData[ joining_gang ] [ E_COLOR ] );
|
if ( GetPlayerWantedLevel( playerid ) < 1 ) SetPlayerColor( playerid, g_gangData[ joining_gang ] [ E_COLOR ] );
|
||||||
mysql_single_query( sprintf( "UPDATE `USERS` SET `GANG_ID`=%d WHERE `ID`=%d", g_gangData[ joining_gang ] [ E_SQL_ID ], GetPlayerAccountID( playerid ) ) );
|
mysql_single_query( sprintf( "UPDATE `USERS` SET `GANG_ID`=%d WHERE `ID`=%d", g_gangData[ joining_gang ] [ E_SQL_ID ], GetPlayerAccountID( playerid ) ) );
|
||||||
SendClientMessageToGang( joining_gang, g_gangData[ joining_gang ] [ E_COLOR ], "[GANG]{FFFFFF} %s(%d) has joined the gang.", ReturnPlayerName( playerid ), playerid );
|
SendClientMessageToGang( joining_gang, g_gangData[ joining_gang ] [ E_COLOR ], "[GANG]{FFFFFF} %s(%d) has joined the gang.", ReturnPlayerName( playerid ), playerid );
|
||||||
|
CallLocalFunction( "OnPlayerJoinGang", "dd", playerid, joining_gang );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,13 @@
|
|||||||
#define COLOR_GANGZONE 0x00000080
|
#define COLOR_GANGZONE 0x00000080
|
||||||
#define COLOR_HARDPOINT 0xFF000080
|
#define COLOR_HARDPOINT 0xFF000080
|
||||||
|
|
||||||
|
/* ** Macros ** */
|
||||||
|
#define ShowHardpointIconForPlayer(%0) \
|
||||||
|
Streamer_AppendArrayData( STREAMER_TYPE_MAP_ICON, g_gangHardpointMapIcon, E_STREAMER_PLAYER_ID, %0 )
|
||||||
|
|
||||||
|
#define HideHardpointIconForPlayer(%0) \
|
||||||
|
Streamer_RemoveArrayData( STREAMER_TYPE_MAP_ICON, g_gangHardpointMapIcon, E_STREAMER_PLAYER_ID, %0 )
|
||||||
|
|
||||||
/* ** Variables ** */
|
/* ** Variables ** */
|
||||||
enum e_GANG_ZONE_DATA
|
enum e_GANG_ZONE_DATA
|
||||||
{
|
{
|
||||||
@ -68,9 +75,14 @@ new
|
|||||||
g_gangTurfData [ MAX_TURFS ] [ E_TURF_ZONE_DATA ],
|
g_gangTurfData [ MAX_TURFS ] [ E_TURF_ZONE_DATA ],
|
||||||
Iterator: turfs < MAX_TURFS >,
|
Iterator: turfs < MAX_TURFS >,
|
||||||
|
|
||||||
|
Float: g_weekAveragePlayers = 0.0,
|
||||||
|
Float: g_weekSecondsElapsed = 0.0,
|
||||||
|
|
||||||
g_gangHardpointTurf = INVALID_GANG_TURF,
|
g_gangHardpointTurf = INVALID_GANG_TURF,
|
||||||
g_gangHardpointPreviousTurf = INVALID_GANG_TURF,
|
g_gangHardpointPreviousTurf = INVALID_GANG_TURF,
|
||||||
g_gangHardpointAttacker = INVALID_GANG_ID,
|
g_gangHardpointAttacker = INVALID_GANG_ID,
|
||||||
|
g_gangHardpointMapIcon = -1,
|
||||||
|
|
||||||
g_gangHardpointCaptureTime [ MAX_GANGS ]
|
g_gangHardpointCaptureTime [ MAX_GANGS ]
|
||||||
|
|
||||||
;
|
;
|
||||||
@ -81,7 +93,7 @@ forward OnPlayerUpdateGangZone( playerid, zoneid );
|
|||||||
stock Float: Turf_GetHardpointPrizePool( Float: max_payout = 500000.0 )
|
stock Float: Turf_GetHardpointPrizePool( Float: max_payout = 500000.0 )
|
||||||
{
|
{
|
||||||
new
|
new
|
||||||
Float: total_payout = float( Iter_Count( Player ) ) * 10000.0;
|
Float: total_payout = ( g_weekAveragePlayers / g_weekSecondsElapsed ) * 10000.0;
|
||||||
|
|
||||||
return total_payout < max_payout ? total_payout : max_payout;
|
return total_payout < max_payout ? total_payout : max_payout;
|
||||||
}
|
}
|
||||||
@ -105,6 +117,11 @@ hook OnServerTickSecond( )
|
|||||||
return Turf_CreateHardpoint( );
|
return Turf_CreateHardpoint( );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// accumulate average player count
|
||||||
|
g_weekAveragePlayers += float( Iter_Count( Player ) );
|
||||||
|
g_weekSecondsElapsed ++;
|
||||||
|
|
||||||
|
// begin auto turf takeover etc
|
||||||
if ( g_gangHardpointAttacker != INVALID_GANG_ID )
|
if ( g_gangHardpointAttacker != INVALID_GANG_ID )
|
||||||
{
|
{
|
||||||
new total_in_turf = Turf_GetPlayersInTurf( hardpoint_turf );
|
new total_in_turf = Turf_GetPlayersInTurf( hardpoint_turf );
|
||||||
@ -137,7 +154,7 @@ hook OnServerTickSecond( )
|
|||||||
// add seconds
|
// add seconds
|
||||||
g_gangHardpointCaptureTime[ current_attacker ] ++;
|
g_gangHardpointCaptureTime[ current_attacker ] ++;
|
||||||
|
|
||||||
// get potential earnings
|
// get capture time
|
||||||
new total_capture_seconds = Turf_GetTotalCaptureSeconds( );
|
new total_capture_seconds = Turf_GetTotalCaptureSeconds( );
|
||||||
|
|
||||||
// alert gang members
|
// alert gang members
|
||||||
@ -155,15 +172,15 @@ hook OnServerTickSecond( )
|
|||||||
rivals_members = total_in_turf - attacking_members;
|
rivals_members = total_in_turf - attacking_members;
|
||||||
|
|
||||||
if ( rivals_members ) {
|
if ( rivals_members ) {
|
||||||
ShowPlayerHelpDialog( playerid, 1500, "~b~Defend~w~ from %d enemy gang member%s!~n~~n~Earning potential is ~g~%s", rivals_members, rivals_members == 1 ? ( "" ) : ( "s" ), cash_format( potential_earnings ) );
|
ShowPlayerHelpDialog( playerid, 2500, "~b~Defend~w~ from %d enemy gang member%s!~n~~n~Earning potential is ~g~%s", rivals_members, rivals_members == 1 ? ( "" ) : ( "s" ), cash_format( potential_earnings ) );
|
||||||
} else {
|
} else {
|
||||||
ShowPlayerHelpDialog( playerid, 1500, "~g~%s~w~ is in control now %d seconds!~n~~n~Earning potential is ~g~%s", ReturnGangName( current_attacker ), g_gangHardpointCaptureTime[ current_attacker ], cash_format( potential_earnings ) );
|
ShowPlayerHelpDialog( playerid, 2500, "~g~%s~w~ is in control now %d seconds!~n~~n~Earning potential is ~g~%s", ReturnGangName( current_attacker ), g_gangHardpointCaptureTime[ current_attacker ], cash_format( potential_earnings ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// message the defender
|
// message the defender
|
||||||
else if ( player_gang != current_attacker ) {
|
else if ( player_gang != current_attacker ) {
|
||||||
ShowPlayerHelpDialog( playerid, 1500, "~r~Kill~w~ %d %s member%s!~n~~n~Earning potential is ~r~%s", attacking_members, ReturnGangName( current_attacker ), attacking_members == 1 ? ( "" ) : ( "s" ), cash_format( potential_earnings ) );
|
ShowPlayerHelpDialog( playerid, 2500, "~r~Kill~w~ %d %s member%s!~n~~n~Earning potential is ~r~%s", attacking_members, ReturnGangName( current_attacker ), attacking_members == 1 ? ( "" ) : ( "s" ), cash_format( potential_earnings ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -213,6 +230,7 @@ stock Turf_CreateHardpoint( )
|
|||||||
// allocate new hardpoint
|
// allocate new hardpoint
|
||||||
g_gangHardpointTurf = random_turf;
|
g_gangHardpointTurf = random_turf;
|
||||||
g_gangHardpointAttacker = INVALID_GANG_ID;
|
g_gangHardpointAttacker = INVALID_GANG_ID;
|
||||||
|
DestroyDynamicMapIcon( g_gangHardpointMapIcon );
|
||||||
|
|
||||||
// update hardpoint textdraw
|
// update hardpoint textdraw
|
||||||
foreach ( new playerid : Player )
|
foreach ( new playerid : Player )
|
||||||
@ -225,6 +243,15 @@ stock Turf_CreateHardpoint( )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// create map icon
|
||||||
|
new
|
||||||
|
Float: middle_x, Float: 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 );
|
||||||
|
Streamer_RemoveArrayData( STREAMER_TYPE_MAP_ICON, g_gangHardpointMapIcon, E_STREAMER_PLAYER_ID, 0 );
|
||||||
|
|
||||||
// redraw gangzones
|
// redraw gangzones
|
||||||
Turf_RedrawGangZonesForAll( );
|
Turf_RedrawGangZonesForAll( );
|
||||||
printf("New Hardpoint" );
|
printf("New Hardpoint" );
|
||||||
@ -237,6 +264,18 @@ hook OnGangUnload( gangid, bool: deleted )
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hook OnPlayerLeaveGang( playerid, gangid, reason )
|
||||||
|
{
|
||||||
|
HideHardpointIconForPlayer( playerid );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
hook OnPlayerJoinGang( playerid, gangid )
|
||||||
|
{
|
||||||
|
ShowHardpointIconForPlayer( playerid );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
hook OnServerGameDayEnd( )
|
hook OnServerGameDayEnd( )
|
||||||
{
|
{
|
||||||
new
|
new
|
||||||
@ -266,6 +305,8 @@ hook OnServerGameDayEnd( )
|
|||||||
// reset hardpoint
|
// reset hardpoint
|
||||||
g_gangHardpointPreviousTurf = g_gangHardpointTurf;
|
g_gangHardpointPreviousTurf = g_gangHardpointTurf;
|
||||||
g_gangHardpointTurf = INVALID_GANG_TURF;
|
g_gangHardpointTurf = INVALID_GANG_TURF;
|
||||||
|
g_weekAveragePlayers = 0.0;
|
||||||
|
g_weekSecondsElapsed = 0.0;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -497,6 +538,12 @@ stock Turf_RedrawPlayerGangZones( playerid )
|
|||||||
GangZoneShowForPlayer( playerid, g_gangTurfData[ x ] [ E_ID ], g_gangTurfData[ x ] [ E_COLOR ] );
|
GangZoneShowForPlayer( playerid, g_gangTurfData[ x ] [ E_ID ], g_gangTurfData[ x ] [ E_COLOR ] );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( GetPlayerClass( playerid ) == CLASS_CIVILIAN && GetPlayerGang( playerid ) != INVALID_GANG_ID ) {
|
||||||
|
ShowHardpointIconForPlayer( playerid );
|
||||||
|
} else {
|
||||||
|
HideHardpointIconForPlayer( playerid );
|
||||||
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -517,6 +564,14 @@ stock Turf_RedrawGangZonesForAll( )
|
|||||||
GangZoneShowForAll( g_gangTurfData[ x ] [ E_ID ], g_gangTurfData[ x ] [ E_COLOR ] );
|
GangZoneShowForAll( g_gangTurfData[ x ] [ E_ID ], g_gangTurfData[ x ] [ E_COLOR ] );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach ( new playerid : Player ) {
|
||||||
|
if ( GetPlayerClass( playerid ) == CLASS_CIVILIAN && GetPlayerGang( playerid ) != INVALID_GANG_ID ) {
|
||||||
|
ShowHardpointIconForPlayer( playerid );
|
||||||
|
} else {
|
||||||
|
HideHardpointIconForPlayer( playerid );
|
||||||
|
}
|
||||||
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -530,3 +585,17 @@ stock Turf_GetTotalCaptureSeconds( ) {
|
|||||||
}
|
}
|
||||||
return accum_seconds;
|
return accum_seconds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stock Turf_GetMiddlePos( zoneid, &Float: middle_x, &Float: middle_y )
|
||||||
|
{
|
||||||
|
new
|
||||||
|
Float: min_x, Float: min_y, Float: max_x, Float: max_y;
|
||||||
|
|
||||||
|
Streamer_GetFloatData( STREAMER_TYPE_AREA, g_gangTurfData[ zoneid ] [ E_AREA ], E_STREAMER_MIN_X, min_x );
|
||||||
|
Streamer_GetFloatData( STREAMER_TYPE_AREA, g_gangTurfData[ zoneid ] [ E_AREA ], E_STREAMER_MIN_Y, min_y );
|
||||||
|
Streamer_GetFloatData( STREAMER_TYPE_AREA, g_gangTurfData[ zoneid ] [ E_AREA ], E_STREAMER_MAX_X, max_x );
|
||||||
|
Streamer_GetFloatData( STREAMER_TYPE_AREA, g_gangTurfData[ zoneid ] [ E_AREA ], E_STREAMER_MAX_Y, max_y );
|
||||||
|
|
||||||
|
middle_x = ( min_x + max_x ) / 2.0;
|
||||||
|
middle_y = ( min_y + max_y ) / 2.0;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user