public override void Process()
 {
     if (!dead && officer.IsDead)
     {
         dead = true;
         ScannerHelper.DisplayDispatchDialogue("Dispatch", "Officer down. ~r~Respond with code 99~s~.");
         Functions.PlayScannerAudioUsingPosition("ATTENTION_ALL_UNITS WE_HAVE CRIME_OFFICER_DOWN IN_OR_ON_POSITION", officer.Position);
     }
     if (!suspect.Exists() || suspect.IsDeadOrDetained())
     {
         End();
     }
 }
示例#2
0
        public override void Process()
        {
            /* Archival
             * 2020/6/29 20:48 - Fix "InvalidHandleableException" causing whole LSPDFR to crash.
             *                   Add crash prevention system.
             */

            base.Process();
            try
            {
                if (!suspect.Exists() && !suspectCar.Exists())
                {
                    Game.LogTrivial("[Dangerous Driver/HotCallouts] Forced ending Dangerous Driver because suspect or suspect's car does not exist.");
                    ScannerHelper.ReportNormalCode4("Dangerous Driving");
                    End();
                    return;
                }

                if (!pursuited && Functions.IsPedInPursuit(suspect))
                {
                    pursuited = true;
                    Game.LogTrivial("[Dangerous Driver/HotCallouts] Fleeing > suspect");
                    ScannerHelper.DisplayDispatchDialogue("Dispatch", "suspect fleeing.");
                    currentPursuit = Functions.GetActivePursuit();
                }

                if (!(!pursuited || currentPursuit == null || !Functions.IsPursuitStillRunning(currentPursuit)))
                {
                    pursuited = false;
                    ScannerHelper.DisplayDispatchDialogue("Dispatch", "The pursuit has ~g~concluded~s~.");
                }

                if (Game.IsKeyDown(Keys.End))
                {
                    Game.LogTrivial("[Dangerous Driver/HotCallouts] End > Dangerous Driving");
                    ScannerHelper.ReportNormalCode4("Dangerous Driving");
                    End();
                }
            }
            catch (Exception ex)
            {
                End();
                Game.DisplayNotification("The callout <b>Dangerous Driver</b> was encountered error and must exit.");
                Game.DisplayNotification("Check log file for more details.");
                Game.LogTrivial("HotCallouts: exception: " + ex.GetType().Name);
                Game.LogTrivial("HotCallouts: message: " + ex.Message);
                Game.LogTrivial("HotCallouts: trace: \r\n" + ex.StackTrace);
            }
        }
示例#3
0
 public override void Process()
 {
     if (!approach && Game.LocalPlayer.Character.Position.DistanceTo2D(suspect.Position) <= 10f)
     {
         approach = true;
         Game.LogTrivialDebug("HotCallout Debug: DistanceTo2D cycle has <= 10f");
         Game.DisplaySubtitle("Pull the ~r~suspect~s~ over.");
         ScannerHelper.DisplayDispatchDialogue("You", "I have the suspect in sight.");
         ScannerHelper.DisplayDispatchDialogue("Dispatch", "10-4. Perform traffic stop.");
     }
     if (approach && Game.IsKeyDown(Keys.End))
     {
         Game.LogTrivialDebug("HotCallout Debug: User End");
         End();
     }
     base.Process();
 }
示例#4
0
        public override void Process()
        {
            base.Process();

            if (!approach && Game.LocalPlayer.Character.Position.DistanceTo(suspect) < 30f)
            {
                approach = true;
                Game.DisplayHelp("Perform a traffic stop to target " + suspectVehicle.Model.Name + ".");
            }

            /*
             * if(!pursuited && Game.LocalPlayer.Character.Position.DistanceTo(suspect) < 30f)
             * {
             *  pursuit = Functions.CreatePursuit();
             *  Functions.AddPedToPursuit(pursuit, suspect);
             *  Functions.SetPursuitIsActiveForPlayer(pursuit, true);
             *  pursuited = true;
             *  ScannerHelper.DisplayDispatchDialogue("You", "To dispatch, suspect fleeing.");
             *  ScannerHelper.DisplayDispatchDialogue("Dispatch", "Affirmtive, suspect plate " + suspectVehicle.LicensePlate.ToUpper() + ", vehicle " + suspectVehicle.Model.Name);
             *  Functions.RequestBackup(suspect.Position, LSPD_First_Response.EBackupResponseType.Pursuit, LSPD_First_Response.EBackupUnitType.LocalUnit);
             * }
             *
             * if(pursuited && !Functions.IsPursuitStillRunning(pursuit))
             * {
             *  PedHelper.DeclareSubjectStatus(suspect);
             *  End();
             * }
             */
            if (!inPursuit && Functions.IsPedInPursuit(suspect))
            {
                inPursuit = true;
                ScannerHelper.DisplayDispatchDialogue("You", "To dispatch, suspect fleeing.");
            }
            if (!suspect.Exists() || suspect.IsDead || Functions.IsPedArrested(suspect))
            {
                PedHelper.DeclareSubjectStatus(suspect);
                End();
            }
        }
示例#5
0
        public override void Process()
        {
            base.Process();
            if (!pursuited && Game.LocalPlayer.Character.Position.DistanceTo2D(suspect) <= 10f)
            {
                pursuited = true;
                blip.Delete();
                pursuit = Functions.CreatePursuit();
                Functions.AddPedToPursuit(pursuit, suspect);
                Functions.AddPedToPursuit(pursuit, prisoner);
                Functions.SetPursuitIsActiveForPlayer(pursuit, true);
                Functions.RequestBackup(suspect.Position, LSPD_First_Response.EBackupResponseType.Pursuit, LSPD_First_Response.EBackupUnitType.AirUnit);
                Functions.RequestBackup(suspect.Position, LSPD_First_Response.EBackupResponseType.Pursuit, LSPD_First_Response.EBackupUnitType.LocalUnit);
                ScannerHelper.DisplayDispatchDialogue("Dispatch", "Suspect fleeing. Sending backup and air unit.");
            }

            if (pursuited && pursuit != null && !Functions.IsPursuitStillRunning(pursuit))
            {
                ScannerHelper.DisplayDispatchDialogue("Dispatch", "We are code 4 on Escaping Prisoner.");
                End();
            }
        }
示例#6
0
        public override void End()
        {
            if (!approach && start)
            {
                Game.LogTrivial("HotCallout Warning: The End does not seems like user has opreated because user dident even approach the suspect.");
                Game.LogTrivial("HotCallout Warning: This normally triggered by LSPDFR becuase error on methods or ended by external plugin.");
                CommonHelper.DeclareUnexceptedEnd(CalloutMessage);
            }
            else if (start)
            {
                ScannerHelper.DisplayDispatchDialogue("Dispatch", $"Officer reporting, we're code 4 on <b>{CalloutMessage}</b>.");
            }

            if (suspect.Exists())
            {
                suspect.Dismiss();
            }
            if (suspectCar.Exists())
            {
                suspectCar.Dismiss();
            }
            base.End();
        }