private void WatchCameraFootage() { CCTVShowing = true; Game.LocalPlayer.HasControl = false; Game.FadeScreenOut(1500, true); NativeFunction.Natives.SET_TIMECYCLE_MODIFIER("CAMERA_BW"); if (Game.LocalPlayer.Character.LastVehicle.Exists()) { OldLastVehiclePos = Game.LocalPlayer.Character.LastVehicle.Position; Game.LocalPlayer.Character.LastVehicle.IsVisible = false; Game.LocalPlayer.Character.LastVehicle.SetPositionZ(Game.LocalPlayer.Character.LastVehicle.Position.Z + 8f); Game.LocalPlayer.Character.LastVehicle.IsPositionFrozen = true; } bool DateTimeChanged = false; try { OldDateTime = World.DateTime; World.DateTime = DateTime.Now; //World.IsTimeOfDayFrozen = true; DateTimeChanged = true; } catch (Exception e) { } Game.LocalPlayer.Character.IsVisible = false; Shopkeeper.IsVisible = false; Vector3 suspectOldPosition = SuspectCar.Position; Rotator suspectOldRotator = SuspectCar.Rotation; Vector3 PlayerOldPos = Game.LocalPlayer.Character.Position; Vector3 ShopkeeperOldPos = Shopkeeper.Position; Game.LocalPlayer.Character.SetPositionZ(Game.LocalPlayer.Character.Position.Z + 8f); Game.LocalPlayer.Character.IsPositionFrozen = true; Shopkeeper.SetPositionZ(Shopkeeper.Position.Z + 8f); Shopkeeper.IsPositionFrozen = true; SuspectCar.Position = SpawnPoint; Camera cam = new Camera(true); cam.Position = SuspectCar.GetOffsetPosition(Vector3.RelativeFront * 4.4f); cam.SetPositionZ(cam.Position.Z + 3.6f); Vector3 directionFromShopkeeperToCar = (SuspectCar.Position - cam.Position); directionFromShopkeeperToCar.Normalize(); cam.Rotation = directionFromShopkeeperToCar.ToRotator(); Suspect.Tasks.PerformDrivingManeuver(VehicleManeuver.Wait); GameFiber.Wait(100); SuspectCar.IsPositionFrozen = true; GameFiber.Sleep(2000); Game.FadeScreenIn(1500, true); CCTVCamNumber = AssortedCalloutsHandler.rnd.Next(1, 20); Game.FrameRender += DrawCCTVText; Game.DisplaySubtitle("~b~Shopkeeper~s~: There they are! Bastard!", 6600); GameFiber.Sleep(6500); Game.FadeScreenOut(1500, true); CCTVShowing = false; Game.LocalPlayer.Character.IsVisible = true; if (Game.LocalPlayer.Character.LastVehicle.Exists()) { Game.LocalPlayer.Character.LastVehicle.Position = OldLastVehiclePos; Game.LocalPlayer.Character.LastVehicle.IsPositionFrozen = false; Game.LocalPlayer.Character.LastVehicle.IsVisible = true; } //World.IsTimeOfDayFrozen = false; if (DateTimeChanged) { World.DateTime = OldDateTime; } Shopkeeper.IsVisible = true; Game.LocalPlayer.Character.IsPositionFrozen = false; Shopkeeper.IsPositionFrozen = false; Game.LocalPlayer.Character.Position = PlayerOldPos; Shopkeeper.Position = ShopkeeperOldPos; SuspectCar.Position = suspectOldPosition; SuspectCar.Rotation = suspectOldRotator; SuspectCar.IsPositionFrozen = false; Game.LocalPlayer.HasControl = true; cam.Delete(); Suspect.Tasks.CruiseWithVehicle(SuspectCar, 17f, VehicleDrivingFlags.DriveAroundVehicles | VehicleDrivingFlags.DriveAroundObjects | VehicleDrivingFlags.DriveAroundPeds); Rage.Native.NativeFunction.Natives.SET_DRIVE_TASK_DRIVING_STYLE(Suspect, 786603); GameFiber.Sleep(2000); NativeFunction.CallByName <uint>("CLEAR_TIMECYCLE_MODIFIER"); Game.FadeScreenIn(1500, true); }
public override void End() { CalloutRunning = false; Rage.Native.NativeFunction.Natives.RESET_AI_MELEE_WEAPON_DAMAGE_MODIFIER(); if (Game.LocalPlayer.Character.Exists()) { if (Game.LocalPlayer.Character.IsDead) { GameFiber.Wait(1500); Functions.PlayScannerAudio("OFFICER HAS_BEEN_FATALLY_SHOT NOISE_SHORT OFFICER_NEEDS_IMMEDIATE_ASSISTANCE"); GameFiber.Wait(3000); } } else { GameFiber.Wait(1500); Functions.PlayScannerAudio("OFFICER HAS_BEEN_FATALLY_SHOT NOISE_SHORT OFFICER_NEEDS_IMMEDIATE_ASSISTANCE"); GameFiber.Wait(3000); } base.End(); if (PoliceOfficerBlip.Exists()) { PoliceOfficerBlip.Delete(); } if (CalloutFinished) { if (PoliceOfficer.Exists()) { PoliceOfficer.Dismiss(); } if (PoliceCar.Exists()) { PoliceCar.Dismiss(); } if (Suspect.Exists()) { if (!Suspect.IsInAnyVehicle(false)) { Suspect.Dismiss(); } else { if (Suspect.CurrentVehicle.Driver == Suspect) { Suspect.Dismiss(); } else { Suspect.Delete(); } } } if (SuspectCar.Exists()) { SuspectCar.Dismiss(); } } else { if (PoliceCar.Exists()) { PoliceCar.Delete(); } if (PoliceOfficer.Exists()) { PoliceOfficer.Delete(); } if (Suspect.Exists()) { Suspect.Delete(); } if (SuspectCar.Exists()) { SuspectCar.Delete(); } } }