Skip to content
View in the app

A better way to browse. Learn more.

LCPDFR.com

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

(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


Short Description

helicopter helicopter helicopter helicopter

User Feedback

Recommended Comments

X.Gona.Git.Ya

Members

Does it work outside LSPDFR? I ask because it would be nice to see it in my criminal videos against the police.

Irish1Brian

Members

any plans on updated this plugin to work with new LSPDFR .4?

Kairik

Members

what is the key to toggle the helicopter's POV?

Plundr

Members

On 9/1/2019 at 10:53 AM, Kairik said:

what is the key to toggle the helicopter's POV?

Num Pad 9 on Keyboard

 

or

 

D-Pad Right and Left Shoulder on Controller but you need to set controls to true in the INI

cristian304

Members

This mods work with the ultimate lspdfr?? 

ROSA SAVAGE

Members

WELCOME BACK REALLY MISS YOUR PLUGIN

 

Mem0ryEat3r

Members

Cant wait to install the new version! i love this plugin 

Deactivated Member

Deactivated

(edited)

OJ back at it again, loved your plugins on 0.3, thanks for updating them!

Edited by skyred50

.G.

Members

Cant wait to try these out! 

OJdoesIt

Members Author

5 hours ago, skyred50 said:

Will your callout packs get updated too?

I may do a small update to bring everything updated to 0.4.6 to prevent crashing.

The long term goal is to rewrite all the callouts like how I'm doing these plugins.

KnightHawkOne

Members

22 minutes ago, OJdoesIt said:

I may do a small update to bring everything updated to 0.4.6 to prevent crashing.

The long term goal is to rewrite all the callouts like how I'm doing these plugins.

Glad you are back!

xCashHerosx

Members

I fcking LOVE! that you updated this! The older versions still worked but damn! Keep up the great work!!

bcc4123

Members

22 hours ago, KnightHawkOne said:

Glad you are back!

OJ numer 9 does not work for me for POV  number lock on or off. any ideas??

OJdoesIt

Members Author

2 hours ago, bcc4123 said:

OJ numer 9 does not work for me for POV  number lock on or off. any ideas??

The latest update doesn't have a POV. 

GameOn3113

Members

Does this replace the HeliOrbit Plugin or adds to it?

OJdoesIt

Members Author

25 minutes ago, GameOn3113 said:

Does this replace the HeliOrbit Plugin or adds to it?

Replacement.

John Dartu

Members

Just a question. Do you kinda spawn an invisible Ped when the Heli should orbit the player and then the Heli it is actually fixed to this ped?.. I´m not sure if it comes from this plugin, but sometimes when I call the Heli on me, a Ped suddenly spwans out of nowhere on top of me.. 🤷‍♂️

 

Its a bit weird though 😄

OJdoesIt

Members Author

2 minutes ago, John Dartu said:

Just a question. Do you kinda spawn an invisible Ped when the Heli should orbit the player and then the Heli it is actually fixed to this ped?.. I´m not sure if it comes from this plugin, but sometimes when I call the Heli on me, a Ped suddenly spwans out of nowhere on top of me.. 🤷‍♂️

 

Its a bit weird though 😄

No, that's not from this mod. 

John Dartu

Members

Just now, OJdoesIt said:

No, that's not from this mod. 

Ok thx for the quick response as always 🙂 

bcc4123

Members

13 hours ago, bcc4123 said:

OJ numer 9 does not work for me for POV  number lock on or off. any ideas??

Oh that sucks loved that feature, maybe a future update??

OJdoesIt

Members Author

45 minutes ago, bcc4123 said:

Oh that sucks loved that feature, maybe a future update??

I'll think about it.

MisterM23

Members

Wäre cool wenn er auch noch laden würde, da wo ich es möchte. Damit ich dann weiter fliegen kann. 

bcc4123

Members

8 hours ago, OJdoesIt said:

I'll think about it.

thanks man, your the best!!

OJdoesIt

Members Author

4 hours ago, MisterM23 said:

Wäre cool wenn er auch noch laden würde, da wo ich es möchte. Damit ich dann weiter fliegen kann. 

Translated: Would be cool if he would also load where I want it. So that I can continue to fly.

What do you mean to load where you want it?

Create an account or sign in to comment

Latest Mods

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.