static private Task OnTick()
 {
     try
     {
         if (ControlHelper.IsControlJustPressed(Control.ReplayShowhotkey, true, ControlModifier.Alt) && Game.PlayerPed.IsInVehicle())
         {
             vehicle = Game.PlayerPed.CurrentVehicle;
             vehicle.Mods.InstallModKit();
             CivilianLights = CivilianCarSirenModeValues[(CivilianCarSirenModeValues.IndexOf(CivilianLights) + 1) % CivilianCarSirenModeValues.Count];
             BaseScript.TriggerEvent("Chat.Message", "", "#9999EE", $"Set civilian car lights mode to {CivilianLights.ToString().ToLower()}.");
             if (CivilianLights == CivilianCarSirenMode.None)
             {
                 vehicle.Mods.SetNeonLightsOn(VehicleNeonLight.Left, false);
                 vehicle.Mods.SetNeonLightsOn(VehicleNeonLight.Right, false);
                 vehicle.Mods.SetNeonLightsOn(VehicleNeonLight.Front, false);
                 vehicle.Mods.SetNeonLightsOn(VehicleNeonLight.Back, false);
             }
         }
     }
     catch (Exception ex)
     {
         Log.Error($"CivilianCarSirenLights OnTick error: {ex.Message}");
     }
     return(Task.FromResult(0));
 }
Пример #2
0
        private int getBasePriceForClass(CitizenFX.Core.Vehicle veh)
        {
            int basePrice = 300;

            switch (veh.ClassType)
            {
            case VehicleClass.Commercial:
            case VehicleClass.Sedans:
            case VehicleClass.Motorcycles:
                basePrice = 500;
                break;

            case VehicleClass.Sports:
            case VehicleClass.Super:
                basePrice = 650;
                break;

            case VehicleClass.SUVs:
            case VehicleClass.OffRoad:
            case VehicleClass.Coupes:
            case VehicleClass.Compacts:
            case VehicleClass.Vans:
            case VehicleClass.Utility:
            case VehicleClass.SportsClassics:
                basePrice = 550;
                break;
            }

            return(basePrice);
        }
Пример #3
0
        public static void DeleteVeh(int money, int vehicle)
        {
            var veh   = new CitizenFX.Core.Vehicle(NetToVeh(vehicle));
            var vehId = Managers.Vehicle.GetVehicleIdByNumber(GetVehicleNumberPlateText(veh.Handle));

            if (Main.GetDistanceToSquared(GetEntityCoords(GetPlayerPed(-1), true), GrSixMenuPos) > 50)
            {
                Notification.SendWithTime("~y~Транспорт можно сдать только на базе");
                User.SetWaypoint(-42, -664);
                return;
            }
            if (User.CanOpenVehicle(vehId, veh.Handle))
            {
                Notification.SendWithTime("~g~Вы сдали автомобиль ");
                Coffer.RemoveMoney(4500);

                Notification.SendWithTime($"~q~Вы окончили маршрут день и заработали: ${money}");

                User.AddMoney(money + 4500);

                Main.FindNearestVehicle().Delete();
                Characher.UpdateCloth(false);
                TriggerServerEvent("ARP:GrSix:ResetMoneyInCar", veh.NetworkId);
                MoneyInCar = 0;
            }
            else
            {
                Notification.SendWithTime("Не вы арендовали, не вам сдавать.");
                return;
            }
        }
Пример #4
0
        public static void GetGrabRandomVehicle()
        {
            if (Client.Sync.Data.HasLocally(User.GetServerId(), "sellCarTaskName"))
            {
                Notification.SendWithTime("~g~Вы уже получили задание, угнать: " + Client.Sync.Data.GetLocally(User.GetServerId(), "sellCarTaskName"));
                return;
            }

            var pos     = GetEntityCoords(GetPlayerPed(-1), true);
            var vehicle = GetRandomVehicleInSphere(pos.X, pos.Y, pos.Z, 300f, 0, 0);
            var v       = new CitizenFX.Core.Vehicle(vehicle);

            switch (VehInfo.GetClassName(v.Model.Hash))
            {
            case "Emergency":
            case "Boats":
            case "Helicopters":
            case "Planes":
                GetGrabRandomVehicle();
                return;
            }

            Notification.SendWithTime("~g~Вам нужно угнать: " + v.DisplayName);
            Client.Sync.Data.SetLocally(User.GetServerId(), "sellCarTaskHash", v.Model.Hash);
            Client.Sync.Data.SetLocally(User.GetServerId(), "sellCarTaskName", v.DisplayName);
        }
Пример #5
0
        public static string PackFromWorld(CitizenFX.Core.Vehicle vehicle)
        {
            try
            {
                var data = new VehicleMemoryModel();
                data.Livery           = (int)vehicle.Mods.Livery;
                data.PrimaryColor     = vehicle.Mods.PrimaryColor;
                data.SecondaryColor   = vehicle.Mods.SecondaryColor;
                data.PearlescentColor = vehicle.Mods.PearlescentColor;
                data.RimColor         = vehicle.Mods.RimColor;
                data.WheelType        = vehicle.Mods.WheelType;
                foreach (var mod in vehicle.Mods.GetAllMods())
                {
                    if (!data.Mods.ContainsKey(mod.ModType))
                    {
                        data.Mods.Add(mod.ModType, mod.Index);
                    }
                }
                data.CustomWheelVariation = API.IsVehicleExtraTurnedOn(vehicle.Handle, (int)VehicleModType.FrontWheel);
                Enumerable.Range(0, 50).ToList().ForEach(e => { if (API.IsVehicleExtraTurnedOn(vehicle.Handle, e))
                                                                {
                                                                    data.Extras[e] = true;
                                                                }
                                                         });

                return(Pack(data));
            }
            catch (Exception ex)
            {
                Log.Error($"VehiclePack PackVehicle Error: {ex.Message}");
                return(null);
            }
        }
Пример #6
0
        public static async Task <CitizenFX.Core.Vehicle> UnpackToWorld(VehicleMemoryModel vehicleModel, Vector3 Position, float Heading)
        {
            try
            {
                CitizenFX.Core.Vehicle vehicle = await World.CreateVehicle(vehicleModel.Model, Position, Heading);

                if (vehicleModel.Livery != null)
                {
                    vehicle.Mods.Livery = (int)vehicleModel.Livery;
                }
                if (vehicleModel.PrimaryColor != null)
                {
                    vehicle.Mods.PrimaryColor = (VehicleColor)vehicleModel.PrimaryColor;
                }
                if (vehicleModel.SecondaryColor != null)
                {
                    vehicle.Mods.SecondaryColor = (VehicleColor)vehicleModel.SecondaryColor;
                }
                if (vehicleModel.PearlescentColor != null)
                {
                    vehicle.Mods.PearlescentColor = (VehicleColor)vehicleModel.PearlescentColor;
                }
                if (vehicleModel.RimColor != null)
                {
                    vehicle.Mods.RimColor = (VehicleColor)vehicleModel.RimColor;
                }
                if (vehicleModel.WheelType != null)
                {
                    vehicle.Mods.WheelType = (VehicleWheelType)vehicleModel.WheelType;
                }
                if (vehicleModel.Mods != null)
                {
                    vehicleModel.Mods.ToList().ForEach(m =>
                    {
                        vehicle.Mods[m.Key].Index = m.Value;
                    });
                }
                if (vehicleModel.CustomWheelVariation != null)
                {
                    Function.Call(Hash.SET_VEHICLE_EXTRA, vehicle.Handle, VehicleModType.FrontWheel, (bool)(vehicleModel.CustomWheelVariation) ? 0 : -1);
                }
                if (vehicleModel.Extras != null)
                {
                    vehicleModel.Extras.ToList().ForEach(e =>
                    {
                        Function.Call(Hash.SET_VEHICLE_EXTRA, vehicle.Handle, e.Key, e.Value ? 0 : -1);
                    });
                }
                //if (vehicleModel.ToggleMods != null) // Only includes like 3 mods; Xenon etc
                //if (vehicleModel.UnderGlow != null) // Not currently used
                //if (vehicleModel.NumberPlateStyle != null) // Not currently used

                return(vehicle);
            }
            catch (Exception ex)
            {
                Log.Error($"VehicleMemoryModel UnpackToWorld error: {ex.Message}");
            }
            return(null);
        }
Пример #7
0
        public static void SendNotifTaxi(string phone, int id, string zone, string street, float x, float y, float z)
        {
            if (!IsPedInAnyVehicle(PlayerPedId(), true))
            {
                return;
            }
            var veh = GetVehiclePedIsUsing(PlayerPedId());

            if (GetPedInVehicleSeat(veh, -1) != PlayerPedId())
            {
                return;
            }
            var v = new CitizenFX.Core.Vehicle(veh);

            if (v.Model.Hash != -956048545 && v.Model.Hash != 1208856469 && v.Model.Hash != 1884962369 && v.Model.Hash != 2088999036)
            {
                return;
            }

            int count = TaskList.Count;

            ++count;

            TaskList.Add(count + ". " + phone, id);
            TaskList2.Add(count + ". " + phone, new Vector3(x, y, z));
            Notification.SendPicture($"~y~Район:~s~ {zone}\n~y~Улица:~s~ {street}", "Заказ", phone, "CHAR_TAXI", Notification.TypeChatbox);
        }
        private static void HandleInitialDuty(string serializedDutyDictionary)
        {
            try
            {
                Dictionary <int, Duty> initialDuty = Helpers.MsgPack.Deserialize <Dictionary <int, Duty> >(serializedDutyDictionary);
                initialDuty.ToList().ForEach(d =>
                {
                    try
                    {
                        var player = otherPlayerList.Where(p => p.CharID == d.Key).First().Player;
                        CitizenFX.Core.Vehicle dutyVehicle = null;
                        Blip blip = null;

                        if (player.Character.IsInVehicle())
                        {
                            dutyVehicle       = player.Character.CurrentVehicle;
                            blip              = dutyVehicle.AttachBlip();
                            blip.IsShortRange = true;
                            blip.Sprite       = DutyConstants[d.Value].Item1;
                            blip.Color        = DutyConstants[d.Value].Item2;
                        }
                        duty.Add(d.Key, new Tuple <CitizenFX.Core.Player, Duty, CitizenFX.Core.Vehicle, Blip>(player, d.Value, dutyVehicle, blip));
                    }
                    catch (Exception ex)
                    {
                        Log.Error($"HandleInitialDuty (inner) Error: {ex.Message}");
                    }
                });
            }
            catch (Exception ex)
            {
                Log.Error($"DutyManager HandleInitialDuty Error: {ex.Message}");
            }
        }
 private static void RefreshMenuItems()
 {
     try
     {
         _menuItems.Clear();
         CitizenFX.Core.Vehicle vehicle = Game.PlayerPed.CurrentVehicle;
         VehicleDoor[]          doors   = vehicle.Doors.GetAll();
         doors.ToList().ForEach(door =>
         {
             if (!door.IsBroken)
             {
                 _menuItems.Add(new MenuItemCheckbox {
                     Title = $"Open {door.Index.ToString().AddSpacesToCamelCase()}", state = door.IsOpen, OnActivate = (state, item) => { if (state)
                                                                                                                                          {
                                                                                                                                              door.Open();
                                                                                                                                          }
                                                                                                                                          else
                                                                                                                                          {
                                                                                                                                              door.Close();
                                                                                                                                          } }
                 });
             }
         });
         DoorMenu.menuItems     = _menuItems;
         DoorMenu.SelectedIndex = DoorMenu.SelectedIndex;
     }
     catch (Exception ex)
     {
         Log.Error($"DoorManager OnTick Error: {ex.Message}");
     }
 }
Пример #10
0
        public static async void UnloadTrash(CitizenFX.Core.Vehicle vehicle)
        {
            var unloadPos = new Vector3(1544.018f, -2132.836f, 77.20142f);

            if (Main.GetDistanceToSquared(unloadPos, GetEntityCoords(GetPlayerPed(-1), true)) > 20f)
            {
                Notification.SendWithTime("~r~Вы слишком далеко");

                Managers.Checkpoint.CreateWithMarker(unloadPos, 15f, 15f, Marker.Red.R, Marker.Red.G, Marker.Red.B, Marker.Red.A, "checkpoint:withdelete");
                User.SetWaypoint(unloadPos.X, unloadPos.Y);
                return;
            }

            int vId = GetHashKey(Managers.Vehicle.GetVehicleNumber(vehicle.Handle));

            if (!await Sync.Data.Has(vId, "Trash"))
            {
                Notification.SendWithTime("~r~Транспорт пуст");
                return;
            }

            int countTrash = (int)await Sync.Data.Get(vId, "Trash");

            User.GiveJobMoney(countTrash * 10);
            Notification.SendWithTime("~g~Вы разгрузили транспорт");
            Sync.Data.Reset(vId, "Trash");
        }
Пример #11
0
        private void Save()
        {
            foreach (Tuple <Type, int> trackedVehicle in this.Tracked)
            {
                int vehicleHandle = API.NetToVeh(trackedVehicle.Item2);
                var citVeh        = new CitizenFX.Core.Vehicle(vehicleHandle);
                int netId         = API.NetworkGetNetworkIdFromEntity(citVeh.Handle);

                //Debug.WriteLine($"Saving Vehicle: {trackedVehicle.Item2} - {citVeh.Position}");

                Core.Models.Objects.Vehicles.Vehicle vehicle = (Core.Models.Objects.Vehicles.Vehicle)citVeh;
                vehicle.TrackingUserId = Client.Instance.Controllers.First <UserController>().User.Id;
                vehicle.NetId          = netId;
                vehicle.Hash           = citVeh.Model.Hash;

                switch (trackedVehicle.Item1.VehicleType().Name)
                {
                case "Car":
                    //Car car = (Car)vehicle;
                    // Add car specific props...
                    //BaseScript.TriggerServerEvent($"igi:{trackedVehicle.Item1.VehicleType().Name}:save", JsonConvert.SerializeObject(car));
                    Server.Event($"igi:{trackedVehicle.Item1.VehicleType().Name}:save")
                    .Attach(vehicle)
                    .Trigger();
                    break;

                default:
                    //BaseScript.TriggerServerEvent($"igi:{trackedVehicle.Item1.VehicleType().Name}:save", JsonConvert.SerializeObject(vehicle, trackedVehicle.Item1, new JsonSerializerSettings()));
                    Server.Event($"igi:{trackedVehicle.Item1.VehicleType().Name}:save")
                    .Attach(vehicle)
                    .Trigger();
                    break;
                }
            }
        }
Пример #12
0
        public static void SetVehicleLocks(CitizenFX.Core.Vehicle vehicle, LockState lockState)
        {
            try {
                switch (lockState)
                {
                case LockState.Locked:
                    Function.Call(Hash.SET_VEHICLE_DOORS_LOCKED_FOR_ALL_PLAYERS, vehicle.Handle, true);
                    vehicle.LockStatus = VehicleLockStatus.Locked;
                    Function.Call(Hash.DECOR_SET_BOOL, vehicle.Handle, "Vehicle.Locked", true);
                    return;

                case LockState.Unlocked:
                    Function.Call(Hash.SET_VEHICLE_DOORS_LOCKED_FOR_ALL_PLAYERS, vehicle.Handle, false);
                    vehicle.LockStatus = VehicleLockStatus.Unlocked;
                    Function.Call(Hash.DECOR_SET_BOOL, vehicle.Handle, "Vehicle.Locked", false);
                    return;

                default:
                    return;
                }
            }
            catch (Exception ex) {
                Log.Error(ex);
            }
        }
        public EmergencyServicesVehicleMenu(Client client) : base(client)
        {
            serviceVehicle = null;

            VehicleHashValues              = VehicleLoadoutPresets.serviceVehicles.Select(v => (VehicleHash)Game.GenerateHash(v)).ToList();
            VehicleHashNames               = VehicleLoadoutPresets.serviceVehicles.Select(v => v.ToTitleCase().AddSpacesToCamelCase()).ToList();
            VehicleColorValues             = Enum.GetValues(typeof(VehicleColor)).OfType <VehicleColor>().ToList();
            VehicleColorNames              = Enum.GetNames(typeof(VehicleColor)).Select(c => c.AddSpacesToCamelCase()).ToList();
            VehicleWheelTypeValues         = Enum.GetValues(typeof(VehicleWheelType)).OfType <VehicleWheelType>().ToList();
            VehicleWheelTypeNames          = Enum.GetNames(typeof(VehicleWheelType)).Select(c => c.AddSpacesToCamelCase()).ToList();
            currentlySelectedVehicleOnFoot = 0;

            Menu = new EmergencyVehicleMenu {
                numVisibleItems = 7
            };
            Menu.headerTitle = "Vehicle Customization";
            Menu.statusTitle = "";
            //Menu.Refresh();
            //Menu.menuItems = new List<MenuItem>() { new MenuItemStandard { Title = "Populating menu..." } }; // Currently we need at least one item in a menu; could make it work differently, but eh.
            client.Get <InteractionUI>().RegisterInteractionMenuItem(new MenuItemSubMenu {
                Title = $"Spawn Service Vehicle", SubMenu = Menu
            }, () => Client.Instance.Get <JobHandler>().OnDutyAsJob(JobType.Police | JobType.EMS) && isInRangeOfDutyGarage(), 1000);

            client.RegisterTickHandler(OnTick);

            client.RegisterEventHandler("Job.SpawnServiceVehicle", new Action <int>(async index =>
            {
                if (isInRangeOfDutyGarage())
                {
                    await EmergencyVehicleMenu.ReplaceCurrentVehicleByIndex(index);
                }
            }));
        }
Пример #14
0
 private static void RefreshMenuItems()
 {
     try
     {
         if (vehicle != Game.PlayerPed.CurrentVehicle)
         {
             windowStates = VehicleWindowValues.ToDictionary(v => v, v => false);
             vehicle      = Game.PlayerPed.CurrentVehicle;
         }
         _menuItems.Clear();
         VehicleWindowValues.Select((window, index) => new { window, index }).ToList().ForEach(o =>
         {
             var window = vehicle.Windows[o.window];
             //if (window.IsIntact)
             _menuItems.Add(new MenuItemCheckbox {
                 Title = $"Roll Down {window.Index.ToString().AddSpacesToCamelCase()}", state = windowStates[window.Index], OnActivate = (state, item) => { if (state)
                                                                                                                                                            {
                                                                                                                                                                window.RollDown();
                                                                                                                                                            }
                                                                                                                                                            else
                                                                                                                                                            {
                                                                                                                                                                window.RollUp();
                                                                                                                                                            } windowStates[window.Index] = state; }
             });
         });
         WindowMenu.menuItems     = _menuItems;
         WindowMenu.SelectedIndex = WindowMenu.SelectedIndex;
     }
     catch (Exception ex)
     {
         Log.Error($"VehicleWindowManager OnTick Error: {ex.Message}");
     }
 }
Пример #15
0
        public static void Load()
        {
            if (!User.IsDriver())
            {
                Notification.SendWithTime("~r~Вы должны быть за рулём");
                return;
            }

            var veh = new CitizenFX.Core.Vehicle(User.GetVehicleIsDriver());

            if (veh.Model.Hash != -1700801569)
            {
                Notification.SendWithTime("~r~Нужно находиться в рабочем транспорте");
                return;
            }

            var playerPos = GetEntityCoords(GetPlayerPed(-1), true);

            if (Main.GetDistanceToSquared(LoadPos, playerPos) < 5f)
            {
                Sync.Data.SetLocally(VehToNet(veh.Handle), "veh:scrapLoad", true);
                Notification.SendWithTime("~g~Вы загрузили металлолом");
                Managers.Blip.Create(UnLoadPos);
                Managers.Checkpoint.CreateWithMarker(UnLoadPos, 5f, 5f, Marker.Red.R, Marker.Red.G, Marker.Red.B, Marker.Red.A, "checkpoint:withdelete");
                User.SetWaypoint(UnLoadPos.X, UnLoadPos.Y);
            }
            else
            {
                Notification.SendWithTime("~r~Вы слишком далеко");
                Managers.Checkpoint.CreateWithMarker(LoadPos, 5f, 5f, Marker.Red.R, Marker.Red.G, Marker.Red.B, Marker.Red.A, "checkpoint:withdelete");
                Managers.Blip.Create(LoadPos);
                User.SetWaypoint(LoadPos.X, LoadPos.Y);
            }
        }
Пример #16
0
        private async Task Save()
        {
            foreach (TrackedVehicle trackedVehicle in this.Tracked)
            {
                int vehicleHandle = API.NetToVeh(trackedVehicle.NetId);
                var citVeh        = new CitizenFX.Core.Vehicle(vehicleHandle);
                int netId         = API.NetworkGetNetworkIdFromEntity(citVeh.Handle);

                Core.Models.Objects.Vehicles.Vehicle vehicle = await citVeh.ToVehicle(trackedVehicle.Id);

                vehicle.TrackingUserId = Client.Instance.Controllers.First <UserController>().User.Id;
                vehicle.NetId          = netId;
                vehicle.Hash           = citVeh.Model.Hash;

                switch (trackedVehicle.Type.VehicleType().Name)
                {
                case "Car":
                    //Car car = (Car)vehicle;
                    // Add car specific props...
                    Server.Event($"igi:{trackedVehicle.Type.VehicleType().Name}:save")
                    .Attach(vehicle)
                    .Trigger();
                    break;

                default:
                    Server.Event($"igi:{trackedVehicle.Type.VehicleType().Name}:save")
                    .Attach(vehicle)
                    .Trigger();
                    break;
                }
            }
        }
 private static void refreshMenuItems()
 {
     try
     {
         if (vehicle != Game.PlayerPed.CurrentVehicle)
         {
             windowStates = VehicleWindowValues.ToDictionary(v => v, v => false);
             vehicle      = Game.PlayerPed.CurrentVehicle;
         }
         _menuItems.Clear();
         _menuItems.Add(new MenuItemCheckbox
         {
             Title      = "Open all windows",
             state      = AreAllWindowsOpen(VehicleWindowValues, windowStates, vehicle),
             OnActivate = (state, item) =>
             {
                 VehicleWindowValues.Select((window, index) => new { window, index }).ToList().ForEach(o =>
                 {
                     var window = vehicle.Windows[o.window];
                     if (state)
                     {
                         window.RollDown();
                     }
                     else
                     {
                         window.RollUp();
                     }
                     windowStates[window.Index] = state;
                 });
             }
         });
         VehicleWindowValues.Select((window, index) => new { window, index }).ToList().ForEach(o =>
         {
             var window = vehicle.Windows[o.window];
             _menuItems.Add(new MenuItemCheckbox
             {
                 Title      = $"Roll Down {window.Index.ToString().AddSpacesToCamelCase()}",
                 state      = windowStates[window.Index],
                 OnActivate = (state, item) =>
                 {
                     if (state)
                     {
                         window.RollDown();
                     }
                     else
                     {
                         window.RollUp();
                     }
                     windowStates[window.Index] = state;
                 }
             });
         });
         windowMenu.menuItems     = _menuItems;
         windowMenu.SelectedIndex = windowMenu.SelectedIndex;
     }
     catch (Exception ex)
     {
         Log.Error(ex);
     }
 }
Пример #18
0
        public static async void Wash(CitizenFX.Core.Vehicle veh)
        {
            DoScreenFadeOut(500);

            while (IsScreenFadingOut())
            {
                await Delay(1);
            }

            await Delay(500);

            veh.Wash();
            veh.DirtLevel = 0;
            User.RemoveCashMoney(21);
            Business.AddMoney(113, 21);

            await Delay(500);

            DoScreenFadeIn(500);

            while (IsScreenFadingIn())
            {
                await Delay(1);
            }

            Notification.SendWithTime(Lang.GetTextToPlayer("_lang_47"));
        }
Пример #19
0
        public static void DropInCar(CitizenFX.Core.Vehicle veh)
        {
            if (!Sync.Data.HasLocally(User.GetServerId(), "hlab"))
            {
                Notification.SendWithTime("~r~У Вас нет пробы на руках. Нужно её собрать.");
                return;
            }

            if (Sync.Data.HasLocally(VehToNet(veh.Handle), "veh:halbLoad"))
            {
                int count = (int)Sync.Data.GetLocally(VehToNet(veh.Handle), "veh:halbLoad");

                if (veh.Model.Hash == 121658888 && count >= 20)
                {
                    Notification.SendWithTime("~r~В машине нет места");
                    return;
                }
                if (veh.Model.Hash == 914654722 && count >= 5)
                {
                    Notification.SendWithTime("~r~В машине нет места");
                    return;
                }

                Sync.Data.SetLocally(VehToNet(veh.Handle), "veh:halbLoad", ++count);
                Notification.SendWithTime("~g~Вы положили пробу в транспорт.");
            }
            else
            {
                Sync.Data.SetLocally(VehToNet(veh.Handle), "veh:halbLoad", 1);
                Notification.SendWithTime("~g~Вы положили пробу в транспорт.");
            }

            Sync.Data.ResetLocally(User.GetServerId(), "hlab");
        }
        static async Task RegularUpdates()
        {
            bool  currentRed = true;
            Color color;

            while (true)
            {
                try
                {
                    if (vehicle != null)
                    {
                        if (!Game.PlayerPed.IsInVehicle())
                        {
                            CivilianLights = CivilianCarSirenMode.None;
                            vehicle.Mods.SetNeonLightsOn(VehicleNeonLight.Left, false);
                            vehicle.Mods.SetNeonLightsOn(VehicleNeonLight.Right, false);
                            vehicle.Mods.SetNeonLightsOn(VehicleNeonLight.Front, false);
                            vehicle.Mods.SetNeonLightsOn(VehicleNeonLight.Back, false);
                            vehicle = null;
                            continue;
                        }

                        if (CivilianLights != CivilianCarSirenMode.None)
                        {
                            if (vehicle != Game.PlayerPed.CurrentVehicle)
                            {
                                CivilianLights = CivilianCarSirenMode.None;
                                vehicle.Mods.SetNeonLightsOn(VehicleNeonLight.Left, false);
                                vehicle.Mods.SetNeonLightsOn(VehicleNeonLight.Right, false);
                                vehicle.Mods.SetNeonLightsOn(VehicleNeonLight.Front, false);
                                vehicle.Mods.SetNeonLightsOn(VehicleNeonLight.Back, false);
                                vehicle = Game.PlayerPed.CurrentVehicle;
                                vehicle.Mods.InstallModKit();
                            }
                            if (currentRed)
                            {
                                color      = Color.FromArgb(255, 255, 0, 0);
                                currentRed = false;
                            }
                            else
                            {
                                color      = Color.FromArgb(255, 0, 0, 255);
                                currentRed = true;
                            }
                            vehicle.Mods.NeonLightsColor = color;
                            vehicle.Mods.SetNeonLightsOn(VehicleNeonLight.Left, true);
                            vehicle.Mods.SetNeonLightsOn(VehicleNeonLight.Right, true);
                            vehicle.Mods.SetNeonLightsOn(VehicleNeonLight.Front, true);
                            vehicle.Mods.SetNeonLightsOn(VehicleNeonLight.Back, true);
                        }
                    }
                    await BaseScript.Delay((int)CivilianLights);
                }
                catch (Exception ex)
                {
                    Log.Error($"CivilianCarSirenLights error: {ex.Message}");
                }
            }
        }
Пример #21
0
        public async void StartJob()
        {
            currentTowTruck = await CreateJobVehicle(VehicleHash.Flatbed, towDropoffPoint, 0.0f);

            JobHandler.SetPlayerJob(JobType.Tow);
            JobHandler.SetDutyState(true);
            Client.Get <InteractionUI>().RegisterInteractionMenuItem(returnVehicleItem, inRangeOfTowPickup, 500);
        }
Пример #22
0
        public Train(Vector3 position, bool direction)
        {
            int spawnVersion = SpawnableVersions[new Random().Next(SpawnableVersions.Count)];

            TrainHandle = (CitizenFX.Core.Vehicle)Entity.FromHandle(Function.Call <int>(Hash.CREATE_MISSION_TRAIN, spawnVersion, position.X, position.Y, position.Z, direction));
            TrainHandle.IsPersistent = true;
            Speed = 0;
        }
Пример #23
0
        private void FinishDelivery(DeliveryType aDeliveryType, SafeDepositReturn aReturnType)
        {
            if (m_delivery_vehicle != null)
            {
                /* Remove all vehicle attatchments */
                for (int i = 0; i < m_vehicle_attatchments.Count; i++)
                {
                    m_vehicle_attatchments[i].Detach();
                    m_vehicle_attatchments[i].Delete();
                }

                m_vehicle_attatchments.Clear();

                /* Remove vehicle */
                m_delivery_vehicle.Delete();
            }

            m_delivery_state   = DELIVERY_STATE.DELIVERY_INACTIVE;
            m_delivery_vehicle = null;

            m_delivery_route.Clear();

            m_delivery_point_complete.Clear();

            if (m_active_blip != null)
            {
                m_active_blip.Delete();
            }
            m_active_blip           = null;
            m_active_delivery_point = null;
            m_active_delivery_type  = DeliveryType.NotSelected;

            if (aReturnType == SafeDepositReturn.YES)
            {
                int safe_deposit = DeliveryData.SAFE_DEPOSIT_SCOOTER;

                if (aDeliveryType == DeliveryType.Van)
                {
                    safe_deposit = DeliveryData.SAFE_DEPOSIT_VAN;
                }
                if (aDeliveryType == DeliveryType.Truck)
                {
                    safe_deposit = DeliveryData.SAFE_DEPOSIT_TRUCK;
                }

                TriggerServerEvent("esx_deliveries:AddBankMoney", safe_deposit);
                Screen.ShowNotification(DeliveryData._U["SAFE_DEPOSIT_RETURNED"]);
            }

            if (aReturnType == SafeDepositReturn.NO)
            {
                Screen.ShowNotification(DeliveryData._U["SAFE_DEPOSIT_WITHHELD"]);
            }

            LoadDefaultPlayerSkin();
            m_active_blip.Delete();
        }
Пример #24
0
        private async Task SpawnDeliveryVehicle(DeliveryType aDeliveryType)
        {
            try
            {
                var rnd = new Random(DateTime.Now.Millisecond);
                int rs  = rnd.Next(0, DeliveryData.ParkingSpawns.Count);

                Vector3 spawn_location = new Vector3(DeliveryData.ParkingSpawns[rs].X, DeliveryData.ParkingSpawns[rs].Y, DeliveryData.ParkingSpawns[rs].Y);

                if (aDeliveryType == DeliveryType.Scooter)
                {
                    m_delivery_vehicle = await World.CreateVehicle(DeliveryData.MODEL_SCOOTER, spawn_location, DeliveryData.ParkingSpawns[rs].W);
                }

                if (aDeliveryType == DeliveryType.Truck)
                {
                    TriggerServerEvent("esx_deliveries:start", "deliveries (Truck)");
                    m_delivery_vehicle = await World.CreateVehicle(DeliveryData.MODEL_TRUCK, spawn_location, DeliveryData.ParkingSpawns[rs].W);

                    SetVehicleLivery(m_delivery_vehicle.Handle, 2);
                }

                if (aDeliveryType == DeliveryType.Van)
                {
                    TriggerServerEvent("esx_deliveries:start", "deliveries (Van)");
                    m_delivery_vehicle = await World.CreateVehicle(DeliveryData.MODEL_VAN, spawn_location, DeliveryData.ParkingSpawns[rs].W);

                    SetVehicleExtra(m_delivery_vehicle.Handle, 2, false);
                }

                DecorSetInt(m_delivery_vehicle.Handle, "Delivery.Rental", DeliveryData.DecorCode);
                SetVehicleOnGroundProperly(m_delivery_vehicle.Handle);

                int rndNr = rnd.Next(1000, 9999);
                var plate = "DEL " + rndNr;
                SetVehicleNumberPlateText(m_delivery_vehicle.Handle, plate);
                TriggerServerEvent("ft_carKeys:createKey", "Jobs", plate);

                Exports["LegacyFuel"].SetFuel(m_delivery_vehicle.Handle, 100);

                if (aDeliveryType == DeliveryType.Scooter)
                {
                    TriggerServerEvent("esx_deliveries:start", "deliveries (Scooter)");
                    Vector3 spawn_location2 = new Vector3(DeliveryData.ParkingSpawns[rs].X, DeliveryData.ParkingSpawns[rs].Y, DeliveryData.ParkingSpawns[rs].Y);

                    Prop bag_ent = await World.CreateProp("prop_med_bag_01", spawn_location2, false, false);

                    AttachEntityToEntity(bag_ent.Handle, m_delivery_vehicle.Handle, GetEntityBoneIndexByName(Game.PlayerPed.Handle, "misc_a"), 0.0f, -0.55f, 0.45f, 0.0f, 0.0f, 0.0f, true, true, false, true, 0, true);

                    m_vehicle_attatchments.Add(bag_ent);
                }
            } catch (Exception e)
            {
                CitizenFX.Core.Debug.WriteLine($"{e.Message} : Exception thrown on SpawnDeliveryehicle()");
            }
        }
Пример #25
0
 private void deletePreviewVehicle()
 {
     if (previewVehicle != null)
     {
         previewVehicle.MarkAsNoLongerNeeded();
         previewVehicle.Position = new Vector3(5000, 5000, 5000);
         Game.PlayerPed.CurrentVehicle.Delete();
         previewVehicle = null;
     }
 }
Пример #26
0
 public void EndJob()
 {
     currentTowTruck?.Delete();
     currentTowTruck = null;
     currentJobVehicle?.AttachedBlips.ToList().ForEach(o => o.Delete());
     currentJobVehicle = null;
     JobHandler.SetDutyState(false);
     JobHandler.SetPlayerJob(JobType.Civillian);
     RemoveJobVehicle();
 }
Пример #27
0
        static public async Task Draw()
        {
            if (CinematicMode.DoHideHud)
            {
                return;
            }
            if (CitizenFX.Core.Game.PlayerPed.IsInVehicle())
            {
                if (ControlHelper.IsControlJustPressed(Control.MpTextChatTeam, true, ControlModifier.Ctrl))
                {
                    locked = !locked;
                    (menuItemLock as MenuItemCheckbox).state = locked;
                }
                System.Drawing.Color   textColor = System.Drawing.Color.FromArgb(160, 255, 255, 255);
                CitizenFX.Core.Vehicle vehicle   = WorldProbe.GetVehicleInFrontOfPlayer(60.0f);
                if (!ReferenceEquals(vehicle, null) && !locked)
                {
                    textColor           = System.Drawing.Color.FromArgb(255, 255, 255, 255);
                    modelName           = Game.GetGXTEntry(Function.Call <string>(Hash.GET_DISPLAY_NAME_FROM_VEHICLE_MODEL, vehicle.Model));
                    modelClassName      = Game.GetGXTEntry(CitizenFX.Core.Vehicle.GetClassDisplayName((VehicleClass)Function.Call <int>(Hash.GET_VEHICLE_CLASS, vehicle.Handle)));
                    vehiclePlate        = Function.Call <string>(Hash.GET_VEHICLE_NUMBER_PLATE_TEXT, vehicle.Handle);
                    vehicleColor        = Enum.GetName(typeof(VehicleColor), vehicle.Mods.PrimaryColor).AddSpacesToCamelCase();
                    vehicleNumOccupants = Function.Call <int>(Hash.GET_VEHICLE_NUMBER_OF_PASSENGERS, vehicle.Handle) + (Function.Call <bool>(Hash.IS_VEHICLE_SEAT_FREE, vehicle.Handle, -1) ? 0 : 1);
                    vehicleSpeed        = vehicle.Speed;
                    initialized         = true;
                }

                if (initialized)
                {
                    float x = 0.18f;
                    float y = 0.79f;
                    FamilyRP.Roleplay.Client.UI.DrawText($"Speed: {2.24 * vehicleSpeed:0.0} mph / {3.60 * vehicleSpeed:0.0} kph", new Vector2(x, y), textColor, 0.25f);
                    y += 0.02f;
                    FamilyRP.Roleplay.Client.UI.DrawText($"Model: {modelName} ({modelClassName})", new Vector2(x, y), textColor, 0.25f);
                    y += 0.02f;
                    FamilyRP.Roleplay.Client.UI.DrawText($"Color: {vehicleColor}", new Vector2(x, y), textColor, 0.25f);
                    y += 0.02f;
                    FamilyRP.Roleplay.Client.UI.DrawText($"Plate: {vehiclePlate}", new Vector2(x, y), textColor, 0.25f);
                    y += 0.02f;
                    FamilyRP.Roleplay.Client.UI.DrawText($"{unitsMap[vehicleNumOccupants].FirstLetterToUpper()} occupant{(vehicleNumOccupants != 1 ? "s" : "")}", new Vector2(x, y), textColor, 0.25f);
                    y += 0.02f;
                    if (locked)
                    {
                        FamilyRP.Roleplay.Client.UI.DrawText($"RADAR LOCK", new Vector2(x, y), Color.FromArgb(255, 180, 180, 0), 0.25f);
                    }
                }
                else
                {
                    float x = 0.18f;
                    float y = 0.79f;
                    FamilyRP.Roleplay.Client.UI.DrawText($"RADAR ACTIVE", new Vector2(x, y), textColor, 0.25f);
                }
            }
            await Task.FromResult(0);
        }
Пример #28
0
        static private async void ServiceVehicle(Command command)
        {
            try
            {
                CitizenFX.Core.Model vehicleModel = null;
                string vehicleName = "";

                int result;
                if (Int32.TryParse(command.Args.Get(0), out result)) // if the argument is an int
                {
                    if (result < 1 || result > (PoliceVehicles.Count))
                    {
                        return;
                    }
                    vehicleName  = PoliceVehicles[result - 1];
                    vehicleModel = new Model(PoliceVehicles[result - 1]);
                }
                else if (PoliceVehicles.Contains(command.Args.Get(0).ToLower()))
                {
                    vehicleName  = command.Args.Get(0);
                    vehicleModel = new Model(command.Args.Get(0));
                }
                else
                {
                    return;
                }

                float heading = Game.PlayerPed.Heading + 90;
                if (heading > 180f)
                {
                    heading -= 360f;
                }
                CitizenFX.Core.Vehicle vehicle = await World.CreateVehicle(vehicleModel, Game.PlayerPed.GetOffsetPosition(new Vector3(0, 2, 0)), heading);

                await BaseScript.Delay(50);

                vehicle.Mods.InstallModKit();
                ModSettings.ForEach(m => Function.Call(Hash.SET_VEHICLE_MOD, vehicle.Handle, (int)m.modType, m.modIndex, m.modStatus));
                if (VehicleSettings.ContainsKey(vehicleName))
                {
                    vehicle.Mods.Livery = VehicleSettings[vehicleName].Livery;
                    if (VehicleSettings[vehicleName].Extras?.Count > 0)
                    {
                        VehicleSettings[vehicleName].Extras.ToList().ForEach(e =>
                        {
                            Function.Call(Hash.SET_VEHICLE_EXTRA, vehicle.Handle, e.Key, e.Value);
                        });
                    }
                }
            }
            catch (Exception)
            {
            }
        }
Пример #29
0
 private async Task OnTick()
 {
     if (User.Data.job == "GrSix")
     {
         int vehicle = GetVehiclePedIsIn(PlayerPedId(), false);
         var veh     = new CitizenFX.Core.Vehicle(vehicle);
         if (veh.Model.Hash == 1747439474 && IsPedInVehicle(GetPlayerPed(-1), vehicle, true) && Sync.Data.HasLocally(User.GetServerId(), "GrSix:MoneyBag"))
         {
             PutMoneyInCar();
         }
     }
 }
Пример #30
0
        private static async Task SapdRadar()
        {
            if (User.IsLogin() && (IsHudPreferenceSwitchedOn() || Screen.Hud.IsVisible))
            {
                if (IsShowRadar)
                {
                    var veh = GetVehiclePedIsUsing(PlayerPedId());
                    var v   = new CitizenFX.Core.Vehicle(veh);

                    if (!_isFreezeRadar)
                    {
                        var coordA   = GetOffsetFromEntityInWorldCoords(veh, 0.0f, 1.0f, 1.0f);
                        var coordB   = GetOffsetFromEntityInWorldCoords(veh, 0.0f, 105.0f, 0.0f);
                        var frontcar = StartShapeTestCapsule(coordA.X, coordA.Y, coordA.Z, coordB.X, coordB.Y, coordB.Z, 3.0f, 10, veh, 7);
                        GetShapeTestResult(frontcar, ref _hit1, ref _endCoords1, ref _surfaceNormal1, ref _entityHit1);

                        if (IsEntityAVehicle(_entityHit1))
                        {
                            _radarInfoFront = $"{Vehicle.GetVehicleNumber(_entityHit1)} | {GetDisplayNameFromVehicleModel((uint) GetEntityModel(_entityHit1))} | {Math.Round(GetEntitySpeed(_entityHit1) * 2.23693629, 0)} MP/H";
                        }

                        var bcoordB = GetOffsetFromEntityInWorldCoords(veh, 0.0f, -105.0f, 0.0f);
                        var rearcar = StartShapeTestCapsule(coordA.X, coordA.Y, coordA.Z, bcoordB.X, bcoordB.Y, bcoordB.Z, 3.0f, 10, veh, 7);
                        GetShapeTestResult(rearcar, ref _hit2, ref _endCoords2, ref _surfaceNormal2, ref _entityHit2);

                        if (IsEntityAVehicle(_entityHit2))
                        {
                            _radarInfoBack = $"{Vehicle.GetVehicleNumber(_entityHit2)} | {GetDisplayNameFromVehicleModel((uint) GetEntityModel(_entityHit2))} | {Math.Round(GetEntitySpeed(_entityHit2) * 2.23693629, 0)} MP/H";
                        }
                    }

                    var tag = User.Data.tag != "" && User.IsGos() ? User.Data.tag.ToUpper() + " | " : "";
                    DrawRectangle(371, 317, 350, 200, 0, 0, 0, 150, 2, 2);
                    DrawText($"{tag}№{User.Data.id}", 363, 313, 0.6f, 255, 255, 255, 255, 4, 0, false, false, 0, 2, 2);
                    DrawRectangle(371, 317, 350, 50, 3, 169, 244, 150, 2, 2);
                    DrawText($"{VehInfo.GetDisplayName(v.Model.Hash).ToUpper()} | {Vehicle.GetVehicleNumber(veh)} | СИРЕНА: {(IsVehicleSirenOn(veh) ? "ВКЛ" : "ВЫКЛ")} | {_speed} MP/H", 363, 267, 0.4f, 3, 155, 229, 255, 4, 0, false, false, 0, 2, 2);
                    DrawRectangle(371, 267, 350, 30, 2, 119, 189, 150, 2, 2);
                    DrawText("ПЕРЕДНИЙ РАДАР", 363, 234, 0.3f, 255, 255, 255, 150, 4, 0, false, false, 0, 2, 2);
                    DrawText("ЗАДНИЙ РАДАР", 362, 175, 0.3f, 255, 255, 255, 150, 4, 0, false, false, 0, 2, 2);
                    DrawText(_radarInfoFront, 362, 217, 0.5f, 255, 255, 255, 255, 4, 0, false, false, 0, 2, 2);
                    DrawText(_radarInfoBack, 361, 158, 0.5f, 255, 255, 255, 255, 4, 0, false, false, 0, 2, 2);
                    DrawRectangle(361, 180, 330, 1, 255, 255, 255, 255, 2, 2);
                }

                if (!IsPedInAnyVehicle(GetPlayerPed(-1), true) && IsShowRadar)
                {
                    _radarInfoFront = "В ожидании...";
                    _radarInfoBack  = "В ожидании...";
                    IsShowRadar     = false;
                }
            }
        }