From 3a5a562b8e224cb7515e0f6b8d88ae5463e7ad60 Mon Sep 17 00:00:00 2001 From: Damen Date: Fri, 25 Jan 2019 01:04:20 -0500 Subject: [PATCH] adjusts passives with association to wanted players and vehicles, including some fixes --- .../cnr/features/passive_mode.pwn | 53 +++++++++++++++++++ gamemodes/irresistible/cnr/wanted_level.pwn | 25 ++++++++- 2 files changed, 77 insertions(+), 1 deletion(-) diff --git a/gamemodes/irresistible/cnr/features/passive_mode.pwn b/gamemodes/irresistible/cnr/features/passive_mode.pwn index 99a8ce7..4103024 100644 --- a/gamemodes/irresistible/cnr/features/passive_mode.pwn +++ b/gamemodes/irresistible/cnr/features/passive_mode.pwn @@ -22,6 +22,14 @@ hook OnPlayerUpdateEx( playerid ) if ( p_AntiSpawnKillEnabled{ playerid } && g_iTime > p_AntiSpawnKill[ playerid ] ) { DisablePlayerSpawnProtection( playerid ); } + if ( GetPlayerWantedLevel( playerid ) > 0 ) + { + if ( IsPassivePlayerInVehicle( GetPlayerVehicleID( playerid ) ) ) + { + RemovePlayerFromVehicle( playerid ); + SendError( playerid, "You cannot enter vehicles with passive players in it as a wanted criminal." ); + } + } return 1; } @@ -69,7 +77,52 @@ hook OnPlayerUnjailed( playerid, reasonid ) return 1; } +hook OnPlayerEnterVehicle( playerid, vehicleid, ispassenger ) +{ + + if ( IsPlayerPassive( playerid ) ) + { + if ( IsWantedPlayerInVehicle( vehicleid ) ) + { + SetPlayerWantedLevel( playerid, 6 ); + ShowPlayerHelpDialog( playerid, 3000, "You are now considered wanted for associating yourself with a wanted player." ); + return 1; + } + } + return 1; + +} + /* ** Functions ** */ +stock GivePassivePassengersWanted( vehicleid ) +{ + foreach( new pID : Player ) + { + if ( !IsPlayerPassive( pID ) || !IsPlayerInAnyVehicle( pID ) ) + continue; + + if ( GetPlayerVehicleID( pID ) == vehicleid ) + { + SetPlayerWantedLevel( pID, 6 ); + ShowPlayerHelpDialog( pID, 3000, "You are now considered wanted for associating yourself with a wanted player." ); + } + } + return true; +} + +stock IsPassivePlayerInVehicle( vehicleid ) +{ + foreach ( new pID : Player ) + { + if ( !IsPlayerPassive( pID ) || !IsPlayerInAnyVehicle( pID ) ) + continue; + + if ( GetPlayerVehicleID( pID ) == vehicleid ) + return true; + } + return false; +} + stock DisablePlayerSpawnProtection( playerid ) { if ( p_AntiSpawnKillEnabled{ playerid } ) diff --git a/gamemodes/irresistible/cnr/wanted_level.pwn b/gamemodes/irresistible/cnr/wanted_level.pwn index 3eebc49..3252e2e 100644 --- a/gamemodes/irresistible/cnr/wanted_level.pwn +++ b/gamemodes/irresistible/cnr/wanted_level.pwn @@ -50,6 +50,11 @@ stock CNR_SetPlayerWantedLevel( playerid, level ) ResetPlayerPassiveMode( playerid, .passive_disabled = true ); // remove passive mode if the player is wanted } } + else if ( IsPlayerInAnyVehicle( playerid ) ) + { + new vehicleID = GetPlayerVehicleID( playerid ); + GivePassivePassengersWanted( vehicleID ); + } else { PlayerTextDrawHide( playerid, p_WantedLevelTD[ playerid ] ); @@ -76,7 +81,12 @@ stock GivePlayerWantedLevel( playerid, level ) { if ( ! IsPlayerConnected( playerid ) || IsPlayerNPC( playerid ) || IsPlayerJailed( playerid ) || IsPlayerDueling( playerid ) || level == 0 ) return 0; - + else if ( IsPlayerInAnyVehicle( playerid ) ) + { + new vehicleID = GetPlayerVehicleID( playerid ); + GivePassivePassengersWanted( vehicleID ); + } + new current_wanted = GetPlayerWantedLevel( playerid ); @@ -91,4 +101,17 @@ stock ClearPlayerWantedLevel( playerid ) p_WantedLevel[ playerid ] = 0; SetPlayerWantedLevel( playerid, 0 ); SetPlayerColorToTeam( playerid ); +} + +stock IsWantedPlayerInVehicle( vehicleid ) +{ + foreach ( new pID : Player ) + { + if ( !IsPlayerInAnyVehicle( pID ) ) + continue; + + if ( GetPlayerVehicleID( pID ) == vehicleid && GetPlayerWantedLevel( pID ) > 1 ) + return true; + } + return false; } \ No newline at end of file