adds awarding nearest leo whenever quit to avoid or afk wanted, adds checkpoint checks to ensure no-one goes into an interior to q to avoid
This commit is contained in:
parent
0291b7ddec
commit
8e7e3ce2b8
@ -23,6 +23,9 @@ hook OnPlayerDisconnect( playerid, reason )
|
|||||||
p_AwaitingBCAttempt{ playerid } = false;
|
p_AwaitingBCAttempt{ playerid } = false;
|
||||||
KillTimer( p_AwaitingBCAttemptTimer[ playerid ] );
|
KillTimer( p_AwaitingBCAttemptTimer[ playerid ] );
|
||||||
p_AwaitingBCAttemptTimer[ playerid ] = -1;
|
p_AwaitingBCAttemptTimer[ playerid ] = -1;
|
||||||
|
|
||||||
|
// Quit to Avoid - Award Handling
|
||||||
|
AwardNearestLEO( playerid, 0 );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -317,6 +320,24 @@ stock ArrestPlayer( victimid, playerid )
|
|||||||
else return SendError( playerid, "There are no players around to arrest." );
|
else return SendError( playerid, "There are no players around to arrest." );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stock AwardArrest( victimid, playerid )
|
||||||
|
{
|
||||||
|
p_QuitToAvoidTimestamp[ playerid ] = 0;
|
||||||
|
new totalCash = ( p_WantedLevel[ victimid ] < MAX_WANTED_LVL ? p_WantedLevel[ victimid ] : MAX_WANTED_LVL ) * ( 300 );
|
||||||
|
new totalSeconds = p_WantedLevel[ victimid ] * ( JAIL_SECONDS_MULTIPLIER );
|
||||||
|
GivePlayerScore( playerid, 2 );
|
||||||
|
GivePlayerExperience( playerid, E_POLICE );
|
||||||
|
GivePlayerCash( playerid, totalCash );
|
||||||
|
StockMarket_UpdateEarnings( E_STOCK_GOVERNMENT, totalCash, 0.1 );
|
||||||
|
if ( totalCash > 20000 ) printf("[police arrest] %s -> %s - %s", ReturnPlayerName( playerid ), ReturnPlayerName( victimid ), cash_format( totalCash ) ); // 8hska7082bmahu
|
||||||
|
SendClientMessageFormatted( playerid, -1, ""COL_GREEN"[ACHIEVE]{FFFFFF} You have earned "COL_GOLD"%s{FFFFFF} dollars and 2 score for arresting %s(%d)!", cash_format( totalCash ), ReturnPlayerName( victimid ), victimid );
|
||||||
|
GameTextForPlayer( victimid, "~r~Busted!", 4000, 0 );
|
||||||
|
CallLocalFunction( "OnPlayerArrested", "dddd", playerid, victimid, p_Arrests[ playerid ], 1 );
|
||||||
|
GivePlayerSeasonalXP( victimid, -20.0 );
|
||||||
|
JailPlayer( victimid, totalSeconds );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
stock CuffPlayer( victimid, playerid )
|
stock CuffPlayer( victimid, playerid )
|
||||||
{
|
{
|
||||||
if ( p_Class[ playerid ] != CLASS_POLICE ) return SendError( playerid, "This is restricted to police only." );
|
if ( p_Class[ playerid ] != CLASS_POLICE ) return SendError( playerid, "This is restricted to police only." );
|
||||||
@ -468,3 +489,64 @@ stock BreakPlayerCuffs( playerid )
|
|||||||
}
|
}
|
||||||
|
|
||||||
function BreakPlayerCuffsAttempt( playerid ) return BreakPlayerCuffs( playerid ), 1;
|
function BreakPlayerCuffsAttempt( playerid ) return BreakPlayerCuffs( playerid ), 1;
|
||||||
|
|
||||||
|
stock AwardNearestLEO( playerid, reason )
|
||||||
|
{
|
||||||
|
new
|
||||||
|
Float: x, Float: y, Float: z,
|
||||||
|
closestLEO = INVALID_PLAYER_ID,
|
||||||
|
radius = ( IsPlayerInAnyVehicle( playerid ) ? 150 : 75 ); // If player is in a vehicle, increase radius due to ability to get farther quicker.
|
||||||
|
|
||||||
|
GetPlayerPos( playerid, x, y, z );
|
||||||
|
|
||||||
|
foreach( new pID : Player )
|
||||||
|
{
|
||||||
|
if ( p_Class[ pID ] != CLASS_POLICE ) continue;
|
||||||
|
|
||||||
|
new Float: distance = GetDistanceBetweenPlayers( playerid, pID );
|
||||||
|
|
||||||
|
if ( distance < radius && distance < closestLEO )
|
||||||
|
closestLEO = pID;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( closestLEO != INVALID_PLAYER_ID )
|
||||||
|
{
|
||||||
|
new reasonText[ 24 ];
|
||||||
|
|
||||||
|
switch ( reason )
|
||||||
|
{
|
||||||
|
case 0: reasonText = "Q'ing to Avoid";
|
||||||
|
case 1: reasonText = "being AFK while wanted";
|
||||||
|
}
|
||||||
|
|
||||||
|
AwardArrest( playerid, closestLEO );
|
||||||
|
SendGlobalMessage( -1, ""COL_GOLD"[JAIL]{FFFFFF} %s(%d) has been awarded for the arrest on %s(%d) due to them "COL_LRED"%s.", ReturnPlayerName( closestLEO ), closestLEO, ReturnPlayerName( playerid ), playerid, reasonText );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
hook OnPlayerEnterDynamicCP( playerid, checkpointid )
|
||||||
|
{
|
||||||
|
if ( !p_InHouse[ playerid ] && GetPlayerWantedLevel( playerid ) > 2 )
|
||||||
|
{
|
||||||
|
new Float: x, Float: y, Float: z;
|
||||||
|
|
||||||
|
GetEntrancePos( checkpointid, x, y, z );
|
||||||
|
|
||||||
|
foreach ( new pID : Player )
|
||||||
|
{
|
||||||
|
if ( p_Class[ pID ] != CLASS_POLICE ) continue;
|
||||||
|
|
||||||
|
new Float: distance = GetPlayerDistanceFromPoint( pID, x, y, z );
|
||||||
|
|
||||||
|
if ( distance < 50 )
|
||||||
|
{
|
||||||
|
p_QuitToAvoidTimestamp[ playerid ] = g_iTime + 30;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
@ -265,9 +265,13 @@ public OnServerUpdateTimer( )
|
|||||||
{
|
{
|
||||||
// AFK Jail
|
// AFK Jail
|
||||||
if ( p_WantedLevel[ playerid ] >= 6 && p_InHouse[ playerid ] == -1 && !IsPlayerAdminOnDuty( playerid ) && !IsPlayerInEntrance( playerid, g_VIPLounge[ CITY_SF ] ) && !IsPlayerInEntrance( playerid, g_VIPLounge[ CITY_LV ] ) && !IsPlayerInEntrance( playerid, g_VIPLounge[ CITY_LS ] ) && !IsPlayerTied( playerid ) && !IsPlayerKidnapped( playerid ) && !IsPlayerCuffed( playerid ) && !IsPlayerTazed( playerid ) && IsPlayerSpawned( playerid ) ) { // && !IsPlayerDetained( playerid )
|
if ( p_WantedLevel[ playerid ] >= 6 && p_InHouse[ playerid ] == -1 && !IsPlayerAdminOnDuty( playerid ) && !IsPlayerInEntrance( playerid, g_VIPLounge[ CITY_SF ] ) && !IsPlayerInEntrance( playerid, g_VIPLounge[ CITY_LV ] ) && !IsPlayerInEntrance( playerid, g_VIPLounge[ CITY_LS ] ) && !IsPlayerTied( playerid ) && !IsPlayerKidnapped( playerid ) && !IsPlayerCuffed( playerid ) && !IsPlayerTazed( playerid ) && IsPlayerSpawned( playerid ) ) { // && !IsPlayerDetained( playerid )
|
||||||
|
|
||||||
|
if ( !AwardNearestLEO( playerid, 1 ) )
|
||||||
|
{
|
||||||
JailPlayer( playerid, 60, 1 );
|
JailPlayer( playerid, 60, 1 );
|
||||||
SendGlobalMessage( -1, ""COL_GOLD"[JAIL]{FFFFFF} %s(%d) has been sent to jail for 60 seconds by the server "COL_LRED"[AFK Wanted]", ReturnPlayerName( playerid ), playerid );
|
SendGlobalMessage( -1, ""COL_GOLD"[JAIL]{FFFFFF} %s(%d) has been sent to jail for 60 seconds by the server "COL_LRED"[AFK Wanted]", ReturnPlayerName( playerid ), playerid );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// AFK Admins
|
// AFK Admins
|
||||||
if ( IsPlayerAdminOnDuty( playerid ) )
|
if ( IsPlayerAdminOnDuty( playerid ) )
|
||||||
|
Loading…
Reference in New Issue
Block a user