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); }
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); }
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); }