Jump to content

Heli Assistance - Observer Mode, Customizable Searchlight, More Features 2.4.2

helicopter helicopter helicopter helicopter
   (33 reviews)

7 Screenshots

This mod simulates the flight patterns of Southern California (more specifically, Los Angeles area) law enforcement air support helicopters. That is, they will orbit around a target entity or position instead of just hovering above. A spotlight will track the subject when night-time. You may also call for a backup heli anytime while on-duty.

 

 

 

A Must-Have For Realistic Gameplay!

 

 

 

 

Make sure to put HeliAssistance.dll and HeliAssistance.ini and HeliAssistance.pdb into \Plugins\LSPDFR folder.

Make sure you have the latest RageNativeUI installed. And make sure you have Spotlight installed.

 

API for Developers (for usage with v2.4.2)

Spoiler
namespace HeliAssistanceAPI
{
	using LSPD_First_Response.Mod.API;
	using Rage;
    using Functions = HeliAssistance.API.Functions;

    internal static class HeliAssistanceWrapper
	{
		private const string DllPath = @"Plugins\LSPDFR\HeliAssistance.dll";
		private static readonly bool DllExists = System.IO.File.Exists(DllPath);

		/// <summary>
		/// One more wrapper to prevent <see cref="CanBeUsed"/> from trying to load the HeliAssistance assembly.
		/// </summary>
		private static class IsLoadedWrapper
		{
			public static bool IsLoaded => Functions.IsLoaded;
		}

		/// <summary>
		/// Checks if the plugin is loaded within LSPDFR (i.e. LSPDFR is loaded and the player is on duty).
		/// </summary>
		public static bool CanBeUsed => DllExists ? IsLoadedWrapper.IsLoaded : false;

		/// <summary>
		/// Determines whether the menu can be toggled by the player. If set to false, the menu will be closed if it is visible.
		/// </summary>
		public static bool CanPlayerUseMenu
        {
			get => Functions.CanPlayerUseMenu;
			set => Functions.CanPlayerUseMenu = value;
        }

		/// <summary>
		/// Requests the air unit to be created and respond to the <see cref="Entity"/> target. If the air unit is already active and/or alive, then it will merely have the air unit respond to the target.
		/// </summary>
		public static void RequestAirUnit(Entity target) => Functions.RequestAirUnit(target);

		/// <summary>
		/// Requests the air unit to be created and respond to the <see cref="Vector3"/> target. If the air unit is already active and/or alive, then it will merely have the air unit respond to the target.
		/// </summary>
		public static void RequestAirUnit(Vector3 target) => Functions.RequestAirUnit(target);

		/// <summary>
		/// Dismisses the air unit from any active player-requested task.
		/// </summary>
		public static void DismissAirUnit() => Functions.DismissAirUnit();

		/// <summary>
		/// Attaches the active air unit to the <see cref="LHandle"/> pursuit.
		/// </summary>
		public static void AssignAirUnitToPursuit(LHandle pursuit) => Functions.AssignAirUnitToPursuit(pursuit);
		
		/// <summary>
		/// Removes the air unit from the <see cref="LHandle"/> pursuit.
		/// </summary>
		public static void RemoveAirUnitFromPursuit() => Functions.RemoveAirUnitFromPursuit();

		/// <summary>
		/// Checks if the air unit exists, regardless of its current assigned task.
		/// </summary>
		public static bool IsAirUnitAlive() => Functions.IsAirUnitAlive();

		[System.Obsolete("Use IsAirUnitInService()")]
		public static bool IsAirUnitActive() => Functions.IsAirUnitActive();

		/// <summary>
		/// Checks if the air unit exists and is currently assigned to a player-assigned task.
		/// </summary>
		public static bool IsAirUnitInService() => Functions.IsAirUnitInService();

		/// <summary>
		/// Assigns a new <see cref="Entity"/> target to the air unit, if it is active in service.
		/// </summary>
		public static void UpdateTarget(Entity target) => Functions.UpdateTarget(target);

		/// <summary>
		/// Assigns a new <see cref="Vector3"/> target to the air unit, if it is active in service.
		/// </summary>
		public static void UpdateTarget(Vector3 target) => Functions.UpdateTarget(target);

		/// <summary>
		/// Updates the air unit's flight characteristics. Pass a value <= 0 to a parameter to restore the default value of the respective flight behavior.
		/// </summary>
		/// <param name="flightAltitude">The altitude the air unit will fly when responding or following a target.</param>
		/// <param name="flightSpeed">The speed the air unit fly when responding or following a target. Value should be in GTA's default measurement, m/s.</param>
		/// <param name="orbitRadius">The radius the air unit will orbit.</param>
		/// <param name="orbitSpeed">The speed the air unit will orbit. Value should be in GTA's default measurement, m/s.</param>
		public static void UpdateFlightCharacteristics(float flightAltitude = -1f, float flightSpeed = -1f, float orbitRadius = -1f, float orbitSpeed = -1f) => Functions.UpdateFlightCharacteristics(flightAltitude, flightSpeed, orbitRadius, orbitSpeed);

		/// <summary>
		/// Sets the on-scene duration to the given <paramref name="duration"/>. If the air unit is already in the on-scene task, then it will extend the duration to the given <paramref name="duration"/>.
		/// </summary>
		/// <param name="duration">In milliseconds</param>
		public static void UpdateOnsceneDuration(int duration) => Functions.UpdateOnsceneDuration(duration);

		/// <summary>
		/// Checks if the target of the air unit is the given <see cref="Entity"/>. <br/>Note: Make sure to call <see cref="IsAirUnitInService"/> to verify the air unit is active before calling this.
		/// </summary>
		public static bool IsCurrentTarget(Entity pedToCheck) => Functions.IsCurrentTarget(pedToCheck);

		/// <summary>
		/// Checks if the target of the air unit is the given <see cref="Vector3"/>. <br/>Note: Make sure to call <see cref="IsAirUnitInService"/> to verify the air unit is active before calling this.
		/// </summary>
		public static bool IsCurrentTarget(Vector3 posToCheck) => Functions.IsCurrentTarget(posToCheck);

		/// <summary>
		/// Retrieves the <see cref="Entity"/> the air unit is targeting. <br/>Note: Make sure to call <see cref="IsAirUnitInService"/> to verify the air unit is active before calling this.
		/// </summary>
		public static Entity GetCurrentTarget() => Functions.GetCurrentTarget();

		/// <summary>
		/// Retrieves the <see cref="Vector3"/> the air unit is targeting. <br/>Note: Make sure to call <see cref="IsAirUnitInService"/> to verify the air unit is active before calling this.
		/// </summary>
		public static Vector3 GetCurrentTargetPosition() => Functions.GetCurrentTargetPosition();

		/// <summary>
		/// Checks if the air unit is active, but not assigned to the player's request. In other words, is the air unit currently roaming around.
		/// </summary>
		/// <returns></returns>
		public static bool IsCurrentlyRoaming() => Functions.IsCurrentlyRoaming();
	}
}

 

Take a look at the INI at least once to make sure you are satisfied with the settings. 

 

Special Thanks:

@alexguirre

@DiamondTKG

@NorthKing

@Echooo

LSPDFR Developer Discord

Edited by OJdoesIt
Update


What's New in Version 2.4.2

Released

- Added feature to modify the jerk rate and distance (shakiness) of the searchlight
- Improved the accuracy of ETA
- Updated API to allow an Entity object to be targeted instead of just a Ped object
- Made minor updates to the API methods

OJdoesIt

You may also like

  • Emergency Lighting System

    Emergency Lighting System V brings one of the most popular modifications ever created for a GTA title (ELS-IV) to Grand Theft Auto V. ELS-V will add a whole new dimension to  your patrols. With a fresh look and many more features than its predecessor, it's also sure to brighten up your game and satisfy the emergency lighting enthusiast in anyone.   DESCRIPTION − ELS provides an alternate and incredibly in-depth way of controlling emergency vehicle lights and sounds. − ELS requires
    Lt.Caine

    By Lt.Caine

    Updated

    • 4.4m
  • BETTER ELS Reflections

    BETTER-ELS Reflections is an ELS lighting file remake, giving you the most realistic reflections!
    Matthew686

    By Matthew686

    Updated

    • 205k
  • SimpleHUD

    Seamlessly display your location, compass, and time in-game
    Venoxity

    By Venoxity

    Updated

    • 153.9k
  • LSPD First Response

    The LSPD First Response modification
    G17 Media

    By G17 Media

    Updated

    • 17.6m
  • Callout Interface

    Interface with callouts.
    opus49

    By opus49

    Updated

    • 383.1k
  • GrammarPolice

    Interact with the dispatcher.
    opus49

    By opus49

    Updated

    • 671.5k
  • User Feedback

    You may only provide a review once you have downloaded the file.


    DooVan

    · For current version

      

    Took an hour to understand why in game it doesn't work. I have spotlight installed and work perfectly but Heli assistance doesn't work at all...

    Link to review
    ziipzaaapM16A4

    · Edited by ziipzaaapM16A4

    · For old version 2.2.0

      

    Great plugin. 

    Add multiple Helicopters please.  At least 2 in persistence mode (air 1, air 2).

    Would be great if the API does not send any Notifications when calling request functions

     

     

    Link to review
    Foxlabs

    · For old version 2.1.0

      

    Amazing mod, it is a great duty tool. Should be native in lspdfr.

    Link to review
    SuperPyroManiac

    · For old version 2.0.0

      

    This is a must have, I loved it back when it was just HeliOrbit, now it has so much more control with the UI. Great work!

    Link to review
    thisridiculous

    · Edited by thisridiculous

    · For old version 2.1.0

       0 of 1 member found this review helpful 0 / 1 member

    When this mod works right, its amazing. However, sometimes u call it for a pursuit, its on its way and then "returns to base". I shouldn't have to call it like 3 times for it to follow the pursuit correctly and spotlight the chase. Also when I tried to request it on a traffic stop the request heli option was unselectable. Im using the new version obviously and I think small things need to be ironed out. 

    But, like I said, this is a really cool plugin when it works correctly

     

    With the new update, I no longer have these issues, thanks for getting around to it.

    Also, no I think a review discussing bugs is pretty legit. If I download a script or whatever from someone, and its nothing but bugs, im going to rate it accordingly. I understand what youre saying, but its pretty rare for a bug to be strictly one person lol.

    nonetheless, good plugin here 

    Response from the author:

    I think, with any plugin, you should report bugs and issues before writing reviews. Because it may be where you're the only one encountering the issue while it works fine for everyone else (just saying this could be a possibility). Nonetheless, do you have a Rage log of when these issues occur for you? Can you recreate the issue and send the log?

    Link to review
    CactusMan

    · For old version 2.2.1

       1 of 3 members found this review helpful 1 / 3 members

    what key is the pilot view???

    Link to review
    Sharkiey

    · For old version 1.3.8

       3 of 3 members found this review helpful 3 / 3 members

    Love this... 
    However, where is the INI file for this? it's not showing up in the latest two versions 
    Anyone else?

    Link to review
    Trevor S.

    · For old version 1.3.8

      

    Excellent plugin, makes the game more immersive and realistic!

    Link to review
    Kyano

    · For old version 1.3.8

      

    It adds some sence into those rodeo pilots, seen lesser crashes in cities than before!

    Absolutely wonderful!

    Link to review
    SilentEagle

    · For old version 1.3.8

       1 of 1 member found this review helpful 1 / 1 member

    WOW!!! Just absolutely amazing! 

    As it says in the description: "A Must-Have For Realistic, Los Angeles-Style Gameplay!"

    Thank you for amazing mod! 

    Link to review
    winglesschip209

    · Edited by winglesschip209

    · For old version 1.3.8

      

    Another great mod i had to leave a review on it  adds that much more realism to LSPDFR 

    Link to review
    vt1032

    · For old version 2.2.1

       1 of 3 members found this review helpful 1 / 3 members

    Awesome plugin, adds a great level of realism.  

     

    One suggestion I'd have is to have an option to tie it into custom backup and/or include a provision to allow different police helicopters based on area.  For instance, RDE has different police helicopters for Los Santos, Los Santos County, Blaine County, SAHP, and several federal helicopters.  Having an LSPD helicopter spawn in Blaine County doesn't look right.  

    Link to review
    neotyrant

    · Edited by neotyrant

    · For old version 1.3.8

      

    :thumbsup:

    there is no need for words

    Link to review
    scorponok

    · For old version 1.3.8

      

    Great mod really glad I downloaded this. Essential mod for LSPDFR with great potential. Well done! :thumbsup:

    Link to review
    ×
    ×
    • Create New...