コード例 #1
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);
        }
コード例 #2
0
        public static void SellVehicle(CitizenFX.Core.Vehicle veh)
        {
            if (Weather.Hour < 22 && Weather.Hour > 4)
            {
                Notification.SendWithTime("~r~Доступно только с 22 до 4 утра");
                return;
            }

            if (User.Data.sell_car_time > 0)
            {
                Notification.SendWithTime("~r~Вы не можете сейчас сбыть транспорт");
                Debug.WriteLine("sell_car_time: " + User.Data.sell_car_time);
                return;
            }

            int money = 100;

            if (Client.Sync.Data.HasLocally(User.GetServerId(), "sellCarTaskName"))
            {
                if ((string)Client.Sync.Data.GetLocally(User.GetServerId(), "sellCarTaskName") == veh.DisplayName)
                {
                    Client.Sync.Data.ResetLocally(User.GetServerId(), "sellCarTaskHash");
                    Client.Sync.Data.ResetLocally(User.GetServerId(), "sellCarTaskName");

                    money += 250;

                    switch (VehInfo.GetClassName(veh.Model.Hash))
                    {
                    case "Sports Classics":
                        money += 450;
                        break;

                    case "Sports":
                        money += 320;
                        break;

                    case "Super":
                        money += 280;
                        break;

                    case "SUVs":
                    case "Muscle":
                    case "Off-Road":
                        money += 250;
                        break;
                    }

                    veh.Delete();

                    User.AddCashMoney(money);
                    Notification.SendWithTime("~g~Вы заработали: $" + money);

                    User.Data.sell_car_time = 15;
                    Client.Sync.Data.Set(User.GetServerId(), "sell_car_time", User.Data.sell_car_time);
                    return;
                }
            }

            switch (VehInfo.GetClassName(veh.Model.Hash))
            {
            case "Emergency":
            case "Boats":
            case "Helicopters":
            case "Planes":
                Notification.SendWithTime("~r~Мы такое не принимаем");
                return;

            case "Sports Classics":
                money += 250;
                break;

            case "Sports":
                money += 220;
                break;

            case "Super":
                money += 180;
                break;

            case "SUVs":
            case "Muscle":
            case "Off-Road":
                money += 150;
                break;
            }

            veh.Delete();

            User.AddCashMoney(money);
            Notification.SendWithTime("~g~Вы заработали: $" + money);

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

            Main.SaveLog("Grab", $"[GRAB_CAR] {User.Data.rp_name} | {pPos.X} {pPos.Y} {pPos.Z} | ${money} | {VehInfo.GetDisplayName(veh.Model.Hash)} | {VehInfo.GetClassName(veh.Model.Hash)}");

            User.Data.sell_car_time = 30;
            Client.Sync.Data.Set(User.GetServerId(), "sell_car_time", User.Data.sell_car_time);
        }
コード例 #3
0
        public static float GenerateVolume(Vector3 pos1, Vector3 pos2, Player p2)
        {
            int distance = 200;

            if (User.Voice == 0)
            {
                distance = 50;
            }
            if (User.Voice == 2)
            {
                distance = 400;
            }
            //int distance = 200;

            var s      = GetDistanceBetweenCoords(pos1.X, pos1.Y, pos1.Z, pos2.X, pos2.Y, pos2.Z, true);
            var volume = -(s * s - distance) / (s * s * s * s + distance);

            var plPed  = GetPlayerPed(-1);
            var plPed2 = GetPlayerPed(p2.Handle);

            if (volume < 0.0f)
            {
                volume = 0.0f;
            }
            else if (volume > User.Data.s_voice_vol)
            {
                volume = User.Data.s_voice_vol;
            }

            if (volume > 1)
            {
                volume = 1;
            }

            if (volume > 0)
            {
                if (!HasEntityClearLosToEntity(plPed, plPed2, 17))
                {
                    volume = volume / 6;
                }

                if (IsPedInAnyVehicle(plPed, true) && IsPedInAnyVehicle(plPed2, true))
                {
                    var v1 = new CitizenFX.Core.Vehicle(GetVehiclePedIsUsing(plPed));
                    var v2 = new CitizenFX.Core.Vehicle(GetVehiclePedIsUsing(plPed2));

                    bool isOpenVeh1 = VehInfo.GetClassName(v1.Model.Hash) != "Boats" &&
                                      VehInfo.GetClassName(v1.Model.Hash) != "Cycles" &&
                                      VehInfo.GetClassName(v1.Model.Hash) != "Motorcycles";
                    bool isOpenVeh2 = VehInfo.GetClassName(v2.Model.Hash) != "Boats" &&
                                      VehInfo.GetClassName(v2.Model.Hash) != "Cycles" &&
                                      VehInfo.GetClassName(v2.Model.Hash) != "Motorcycles";


                    bool v1Doors = true;
                    bool v2Doors = true;
                    foreach (var item in v1.Doors)
                    {
                        v1Doors = !item.IsBroken && !item.IsOpen && !item.IsFullyOpen;
                    }
                    foreach (var item in v2.Doors)
                    {
                        v2Doors = !item.IsBroken && !item.IsOpen && !item.IsFullyOpen;
                    }

                    bool isAllUp1 = IsVehicleWindowIntact(v1.Handle, 0) && IsVehicleWindowIntact(v1.Handle, 1) && v1.Windows.AreAllWindowsIntact && v1.RoofState == VehicleRoofState.Closed && v1Doors && isOpenVeh1;
                    bool isAllUp2 = IsVehicleWindowIntact(v2.Handle, 0) && IsVehicleWindowIntact(v2.Handle, 1) && v2.Windows.AreAllWindowsIntact && v2.RoofState == VehicleRoofState.Closed && v2Doors && isOpenVeh2;

                    if (v1.Handle != v2.Handle)
                    {
                        if (isAllUp1)
                        {
                            volume = volume / 5;
                        }
                        if (isAllUp2)
                        {
                            volume = volume / 5;
                        }
                    }
                }
                else if (IsPedInAnyVehicle(plPed, true))
                {
                    var  v1         = new CitizenFX.Core.Vehicle(GetVehiclePedIsUsing(plPed));
                    bool isOpenVeh1 = VehInfo.GetClassName(v1.Model.Hash) != "Boats" &&
                                      VehInfo.GetClassName(v1.Model.Hash) != "Cycles" &&
                                      VehInfo.GetClassName(v1.Model.Hash) != "Motorcycles";
                    bool v1Doors = true;
                    foreach (var item in v1.Doors)
                    {
                        v1Doors = !item.IsBroken && !item.IsOpen && !item.IsFullyOpen;
                    }
                    bool isAllUp1 = IsVehicleWindowIntact(v1.Handle, 0) && IsVehicleWindowIntact(v1.Handle, 1) && v1.Windows.AreAllWindowsIntact && v1.RoofState == VehicleRoofState.Closed && v1Doors && isOpenVeh1;
                    if (isAllUp1)
                    {
                        volume = volume / 6;
                    }
                }
                else if (IsPedInAnyVehicle(plPed2, true))
                {
                    var  v1         = new CitizenFX.Core.Vehicle(GetVehiclePedIsUsing(plPed2));
                    bool isOpenVeh1 = VehInfo.GetClassName(v1.Model.Hash) != "Boats" &&
                                      VehInfo.GetClassName(v1.Model.Hash) != "Cycles" &&
                                      VehInfo.GetClassName(v1.Model.Hash) != "Motorcycles";
                    bool v1Doors = true;
                    foreach (var item in v1.Doors)
                    {
                        v1Doors = !item.IsBroken && !item.IsOpen && !item.IsFullyOpen;
                    }
                    bool isAllUp1 = IsVehicleWindowIntact(v1.Handle, 0) && IsVehicleWindowIntact(v1.Handle, 1) && v1.Windows.AreAllWindowsIntact && v1.RoofState == VehicleRoofState.Closed && v1Doors && isOpenVeh1;
                    if (isAllUp1)
                    {
                        volume = volume / 6;
                    }
                }
            }
            if (volume > 1)
            {
                volume = 1;
            }
            return(volume);
        }