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

topgunsss

Members

it looks like a nice mod but you will need to somehow slow down that chopper as it is moving way to fast when spining around you its almost like it thinks its on a race track so you will need to slow it down some how dude but looks nice so far

LtFlufflez

Members

I agree with the above comment. Everything about the mod  is phenomenal except for the heli orbiting at way too fast of a speed. If able to figure it out, you should patch it up for sure. I also don't know if this has been tested more around mountain regions and freeways so the heli will actually maneuver around obstacles in its path and not fly straight into everything like how normal LSPDFR would be or if possible to somehow change the altitude of the heli as well. Other than that, it's a fantastic mod. Great scripting work here.

germinus

Members

Agree with the last 2 folks, is it me or does this not work when in a pursuit? Which I thought was the object go the mod in the first place? But a great starting point for what could be a must have mod!

OJdoesIt

Members Author

(edited)

9 hours ago, topgunsss said:

it looks like a nice mod but you will need to somehow slow down that chopper as it is moving way to fast when spining around you its almost like it thinks its on a race track so you will need to slow it down some how dude but looks nice so far

 

2 hours ago, LtFlufflez said:

I agree with the above comment. Everything about the mod  is phenomenal except for the heli orbiting at way too fast of a speed. If able to figure it out, you should patch it up for sure. I also don't know if this has been tested more around mountain regions and freeways so the heli will actually maneuver around obstacles in its path and not fly straight into everything like how normal LSPDFR would be or if possible to somehow change the altitude of the heli as well. Other than that, it's a fantastic mod. Great scripting work here.

This mod is to simulate primarily LAPD air support. And honestly, this is how fast it actually orbits in real life. The only time they move so slow is if they are surveying an area. During an active call, they make quick orbits over the area. I'll just add an option in the INI for users to edit the speed.

As of now, I have no way of detecting high buildings/mountains. I can probably find a workaround where the "orbit" task will be disabled in certain cities that contain high buildings/mountains.

 

19 minutes ago, germinus said:

Agree with the last 2 folks, is it me or does this not work when in a pursuit? Which I thought was the object go the mod in the first place? But a great starting point for what could be a must have mod!

It should work in pursuits, as its be heavily tested with it. Get in a pursuit and call for the LSPDFR heli. This mod will take control of that heli, instead of creating its own heli.

Edited by OJdoesIt

HolyOrangeJuice

Members

I'm going to try it. I can't stand the default. I'm wondering if this will change any behavior of them crashing into stuff at low altitudes. From the vids it seems they stay high and in orbit. Instead of low and stupid.

Break

Members

Works really nicely, one bug i've found however:

 

- if you rejoin a pursuit the script won't take control of the helicopters.

i love the mod but where can i get the FPIS you used in the first video

 

OJdoesIt

Members Author

1 hour ago, Officer Perkins284 said:

i love the mod but where can i get the FPIS you used in the first video

 

Ask @lttrbmb

lttrbmb

Members

17 minutes ago, OJdoesIt said:

Ask @lttrbmb

 

That's the 2016 fpis from Gump

 

1 hour ago, lttrbmb said:

 

That's the 2016 fpis from Gump

 

thanks guys!!!

 

Darkskullex

Members

I notice that this doesn't seem compatible with other helicopters like hwaymav, sheriffmav, etc that come with Realism Dispatch Enhanced. Are you able to add that in or an option that defines the helicopters we would want orbitting?

zslfrank

Members

(edited)

I love watching pursuit from the sky! Very interesting! Great mod!

Somehow it caused LSPDFR crashed a lot, when I switched from car to  pilot view.

Hope to see zoom in/out feature in the update!

Edited by zslfrank

OJdoesIt

Members Author

2 hours ago, Darkskullex said:

I notice that this doesn't seem compatible with other helicopters like hwaymav, sheriffmav, etc that come with Realism Dispatch Enhanced. Are you able to add that in or an option that defines the helicopters we would want orbitting?

It uses the model polmav. I'll note those down for future update.

 

1 hour ago, zslfrank said:

I love watching pursuit from the sky! Very interesting! Great mod!

Somehow it caused LSPDFR crashed a lot, when I switched from car to  pilot view.

Hope to see zoom in/out feature in the update!

PM me your RagePluginHook.log

greasemonkey98

Members

On 8/25/2017 at 1:16 PM, OJdoesIt said:

As of now, I have no way of detecting high buildings/mountains. I can probably find a workaround where the "orbit" task will be disabled in certain cities that contain high buildings/mountains.

 

 

I don't know if this is possible but adding an altitude attribute would do it.  Of course the spotlight would have to be changed so it wouldn't flood the entire area.  Again, don't know if it's possible, just spitballing.

 

There seems to be an issue with the latest GTA update.  Whenever I call the helicopter it crashes LSPDFR.  It might need updating.

OJdoesIt

Members Author

17 hours ago, greasemonkey98 said:

 

I don't know if this is possible but adding an altitude attribute would do it.  Of course the spotlight would have to be changed so it wouldn't flood the entire area.  Again, don't know if it's possible, just spitballing.

 

There seems to be an issue with the latest GTA update.  Whenever I call the helicopter it crashes LSPDFR.  It might need updating.

Log?

R. Linn

Members

[9/5/2017 9:33:10 PM.537] LSPD First Response: HeliOrbitPlugin: Attempting to find new suspect for heli
[9/5/2017 9:33:11 PM.142] LSPD First Response:
[9/5/2017 9:33:11 PM.144] LSPD First Response: ==============================
[9/5/2017 9:33:11 PM.144] LSPD First Response: UNHANDLED EXCEPTION DURING GAME FIBER TICK
[9/5/2017 9:33:11 PM.145] LSPD First Response: ------------------------------
[9/5/2017 9:33:11 PM.146] LSPD First Response: Origin: Game fiber "Spotlight API Manager".
[9/5/2017 9:33:11 PM.147] LSPD First Response: ------------------------------
[9/5/2017 9:33:11 PM.147] LSPD First Response: Exception type: System.NullReferenceException
[9/5/2017 9:33:11 PM.148] LSPD First Response: Exception message: Object reference not set to an instance of an object.
[9/5/2017 9:33:11 PM.149] LSPD First Response: ------------------------------
[9/5/2017 9:33:11 PM.149] LSPD First Response: Inner exceptions:
[9/5/2017 9:33:11 PM.150] LSPD First Response: ------------------------------
[9/5/2017 9:33:11 PM.151] LSPD First Response: Stack trace:
[9/5/2017 9:33:11 PM.151] LSPD First Response: at Spotlight.Core.Memory.CLightDrawData.New(eLightType type, eLightFlags flags, Vector3 position, RGB color, Single intensity)
[9/5/2017 9:33:11 PM.153] at Spotlight.BaseSpotlight.DrawLight()
[9/5/2017 9:33:11 PM.155] at Spotlight.API.APISpotlight.Update()
[9/5/2017 9:33:11 PM.155] at Spotlight.API.APISpotlightMgr.UpdateSpotlights()
[9/5/2017 9:33:11 PM.156] at Rage.GameFiber.Main()
[9/5/2017 9:33:11 PM.157] LSPD First Response: ==============================
[9/5/2017 9:33:11 PM.158] LSPD First Response:
[9/5/2017 9:33:12 PM.613] LSPD First Response: All signs removed

 

That's the specific issue caused by the plugin that causes the crash with the new game update and ragehook update.

 

OJdoesIt

Members Author

1 hour ago, Akira5008 said:

[9/5/2017 9:33:10 PM.537] LSPD First Response: HeliOrbitPlugin: Attempting to find new suspect for heli
[9/5/2017 9:33:11 PM.142] LSPD First Response:
[9/5/2017 9:33:11 PM.144] LSPD First Response: ==============================
[9/5/2017 9:33:11 PM.144] LSPD First Response: UNHANDLED EXCEPTION DURING GAME FIBER TICK
[9/5/2017 9:33:11 PM.145] LSPD First Response: ------------------------------
[9/5/2017 9:33:11 PM.146] LSPD First Response: Origin: Game fiber "Spotlight API Manager".
[9/5/2017 9:33:11 PM.147] LSPD First Response: ------------------------------
[9/5/2017 9:33:11 PM.147] LSPD First Response: Exception type: System.NullReferenceException
[9/5/2017 9:33:11 PM.148] LSPD First Response: Exception message: Object reference not set to an instance of an object.
[9/5/2017 9:33:11 PM.149] LSPD First Response: ------------------------------
[9/5/2017 9:33:11 PM.149] LSPD First Response: Inner exceptions:
[9/5/2017 9:33:11 PM.150] LSPD First Response: ------------------------------
[9/5/2017 9:33:11 PM.151] LSPD First Response: Stack trace:
[9/5/2017 9:33:11 PM.151] LSPD First Response: at Spotlight.Core.Memory.CLightDrawData.New(eLightType type, eLightFlags flags, Vector3 position, RGB color, Single intensity)
[9/5/2017 9:33:11 PM.153] at Spotlight.BaseSpotlight.DrawLight()
[9/5/2017 9:33:11 PM.155] at Spotlight.API.APISpotlight.Update()
[9/5/2017 9:33:11 PM.155] at Spotlight.API.APISpotlightMgr.UpdateSpotlights()
[9/5/2017 9:33:11 PM.156] at Rage.GameFiber.Main()
[9/5/2017 9:33:11 PM.157] LSPD First Response: ==============================
[9/5/2017 9:33:11 PM.158] LSPD First Response:
[9/5/2017 9:33:12 PM.613] LSPD First Response: All signs removed

 

That's the specific issue caused by the plugin that causes the crash with the new game update and ragehook update.

 

Will be resolved in new update. Hopefully will be approved on Wednesday.

R. Linn

Members

Hey my man!  That was a quick update thank you for all your work and also your quick response.  I love this addition.

BigBlackGlock

Members

Awesome plugin, however you should add a feature where you can call it code four, or code 3 etc.. this in LA signals to pilots and co pilots either your code 4 and don't currently need any units, and code 3 is send units.

This is done with a simple 3 fingers or four, but I wouldn't actually call them codes, just signals.

OJdoesIt

Members Author

Just now, LAPDOfficerBraddock said:

Awesome plugin, however you should add a feature where you can call it code four, or code 3 etc.. this in LA signals to pilots and co pilots either your code 4 and don't currently need any units, and code 3 is send units.

Wouldn't you just use LSPDFR menu to request additional units? 

BigBlackGlock

Members

1 minute ago, OJdoesIt said:

Wouldn't you just use LSPDFR menu to request additional units? 

Yes, but I thought that would be a cool feature...

OJdoesIt

Members Author

5 minutes ago, LAPDOfficerBraddock said:

Yes, but I thought that would be a cool feature...

If we had a code 4 animation, then I would use this suggestion. As of now, I just think it would be somewhat redundant to put into this mod.

taxi44

Members

Is it possible to set this up to where calling heli support via Police Smart Radio calls the chopper with your plugin?  So that we don't need an extra control binding to call the chopper when we call all other backup through the radio.

OJdoesIt

Members Author

30 minutes ago, Asahammer said:

Is it possible to set this up to where calling heli support via Police Smart Radio calls the chopper with your plugin?  So that we don't need an extra control binding to call the chopper when we call all other backup through the radio.

Yea, I'll try to incorporate Police Radio in next version.

LtRob

Members

It works but in some situations the heli just ignores the buildings or objects around it and it crashes against them, I didn't see that with the usual pursuit heli. 

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.