public void Save() { DbModel.Health = GameVehicle.Health; DbModel.Door1Damage = GameVehicle.IsDoorBroken(1); DbModel.Door2Damage = GameVehicle.IsDoorBroken(2); DbModel.Door3Damage = GameVehicle.IsDoorBroken(3); DbModel.Door4Damage = GameVehicle.IsDoorBroken(4); DbModel.Window1Damage = GameVehicle.IsWindowBroken(1); DbModel.Window2Damage = GameVehicle.IsWindowBroken(2); DbModel.Window3Damage = GameVehicle.IsWindowBroken(3); DbModel.Window4Damage = GameVehicle.IsWindowBroken(4); DbModel.PrimaryColor = GameVehicle.CustomPrimaryColor.ToHex(); DbModel.SecondaryColor = GameVehicle.CustomSecondaryColor.ToHex(); DbModel.EnginePowerMultiplier = GameVehicle.EnginePowerMultiplier; DbModel.NumberPlateStyle = GameVehicle.NumberPlateStyle; DbModel.NumberPlate = GameVehicle.NumberPlate; DbModel.Fuel = GameVehicle.GetSharedData("fuel"); DbModel.FuelConsumption = GameVehicle.GetSharedData("fuelConsumption"); DbModel.Milage = GameVehicle.GetSharedData("milage"); if (_nonDbVehicle) { return; } RoleplayContext ctx = Singletons.RoleplayContextFactory.Create(); using (VehiclesRepository repository = new VehiclesRepository(ctx)) { repository.Update(DbModel); repository.Save(); } }
public void Dispose() { if (!_nonDbVehicle) { Save(); } GameVehicle.Remove(); }
public static void ClearVehicleMods(GameVehicle veh) { foreach (var type in ModTypes.Keys) { API.Shared.RemoveVehicleMod(veh.Entity, type); } API.Shared.SetVehicleCustomPrimaryColor(veh.Entity, 0, 0, 0); API.Shared.SetVehicleCustomSecondaryColor(veh.Entity, 0, 0, 0); API.Shared.SetVehicleTyreSmokeColor(veh.Entity, new GTANetworkAPI.Color(0, 0, 0)); API.Shared.SetVehicleNeonColor(veh.Entity, 0, 0, 0); API.Shared.SetVehicleWindowTint(veh.Entity, 0); }
public void VehicleEditRespawn(Player player, params object[] arguments) { GameVehicle veh = NAPI.Data.GetEntityData(player, "EDIT_VEH"); if (veh == null) { NAPI.Chat.SendChatMessageToPlayer(player, "~r~Vehicle editor error. Null vehicle."); return; } VehicleManager.respawn_vehicle(veh); NAPI.Data.ResetEntityData(player, "EDIT_VEH"); NAPI.Chat.SendChatMessageToPlayer(player, "~g~Vehicle respawned!"); NAPI.ClientEvent.TriggerClientEvent(player, "finish_veh_edit"); }
void AddVehicleMod(GameVehicle veh, int type, string mod) { if (veh.VehMods == null) { veh.VehMods = new Dictionary <string, string>(); } if (veh.VehMods.ContainsKey(type.ToString())) { veh.VehMods[type.ToString()] = mod; } else { veh.VehMods.Add(type.ToString(), mod); } }
public void EditVehDelete(Player player, params object[] arguments) { GameVehicle veh = NAPI.Data.GetEntityData(player, "EDIT_VEH"); if (veh == null) { NAPI.Chat.SendChatMessageToPlayer(player, "~r~Vehicle editor error. Null vehicle."); return; } VehicleManager.despawn_vehicle(veh); veh.Delete(); NAPI.Chat.SendChatMessageToPlayer(player, "Vehicle deleted successfully!"); NAPI.ClientEvent.TriggerClientEvent(player, "finish_veh_edit"); NAPI.Data.ResetEntityData(player, "EDIT_VEH"); }
public void VehicleEditChangeSpawn(Player player, params object[] arguments) { GameVehicle veh = NAPI.Data.GetEntityData(player, "EDIT_VEH"); if (veh == null) { NAPI.Chat.SendChatMessageToPlayer(player, "~r~Vehicle editor error. Null vehicle."); return; } veh.SpawnPos = NAPI.Entity.GetEntityPosition(veh.Entity); veh.SpawnRot = NAPI.Entity.GetEntityRotation(veh.Entity); veh.SpawnDimension = (int)NAPI.Entity.GetEntityDimension(veh.Entity); veh.Save(); NAPI.Chat.SendChatMessageToPlayer(player, "Vehicle position spawn saved to current location."); }
public void Repair() { GameVehicle.Repair(); if (_nonDbVehicle) { return; } DbModel.Door1Damage = false; DbModel.Door2Damage = false; DbModel.Door3Damage = false; DbModel.Door4Damage = false; DbModel.Window1Damage = false; DbModel.Window2Damage = false; DbModel.Window3Damage = false; DbModel.Window4Damage = false; DbModel.Health = 1000f; Save(); }
public void Spawn() { GameVehicle = Alt.CreateVehicle(DbModel.Model.ToString(), new Position(DbModel.PosX, DbModel.PosY, DbModel.PosZ), new Rotation(DbModel.RotPitch, DbModel.RotPitch, DbModel.RotYaw)); GameVehicle.EngineOn = false; GameVehicle.ManualEngineControl = true; GameVehicle.ModKit = 1; GameVehicle.PrimaryColorRgb = new Rgba((byte)DbModel.R, (byte)DbModel.G, (byte)DbModel.B, 1); GameVehicle.NumberplateText = $"LS {DbModel.Id}"; GameVehicle.SetData("vehicle:data", this); GameVehicle.SetData("vehicle:id", DbModel.Id); GameVehicle.SetSyncedMetaData("vehicle:syncedData", DbModel); if (_nonDbVehicle) { return; } foreach (ItemModel upgrade in DbModel.VehicleUpgrades) { if ((TuningType)upgrade.FirstParameter == TuningType.Wheels) { GameVehicle.SetWheels((byte)upgrade.SecondParameter, (byte)upgrade.ThirdParameter); } else { GameVehicle.SetMod((VehicleModType)upgrade.SecondParameter, (byte)upgrade.ThirdParameter); } } //Save(); }
public override void Spawn() { GameVehicle = NAPI.Vehicle.CreateVehicle(NAPI.Util.VehicleNameToModel(DbModel.VehicleHash), new Vector3(DbModel.SpawnPositionX, DbModel.SpawnPositionY, DbModel.SpawnPositionZ), DbModel.SpawnPositionX, DbModel.PrimaryColor.ToColor(), DbModel.SecondaryColor.ToColor(), DbModel.NumberPlate, 255, true); GameVehicle.Rotation = new Vector3(DbModel.SpawnRotationX, DbModel.SpawnRotationY, DbModel.SpawnRotationZ); GameVehicle.NumberPlateStyle = DbModel.NumberPlateStyle; GameVehicle.EnginePowerMultiplier = DbModel.EnginePowerMultiplier; GameVehicle.EngineTorqueMultiplier = DbModel.EngineTorqueMultiplier; GameVehicle.WheelType = DbModel.WheelType; GameVehicle.WheelColor = DbModel.WheelColor; GameVehicle.EngineStatus = false; DbModel.IsSpawned = true; NAPI.Vehicle.BreakVehicleDoor(GameVehicle, 1, DbModel.Door1Damage); NAPI.Vehicle.BreakVehicleDoor(GameVehicle, 2, DbModel.Door2Damage); NAPI.Vehicle.BreakVehicleDoor(GameVehicle, 3, DbModel.Door3Damage); NAPI.Vehicle.BreakVehicleDoor(GameVehicle, 4, DbModel.Door4Damage); NAPI.Vehicle.BreakVehicleWindow(GameVehicle, 1, DbModel.Window1Damage); NAPI.Vehicle.BreakVehicleWindow(GameVehicle, 2, DbModel.Window2Damage); NAPI.Vehicle.BreakVehicleWindow(GameVehicle, 3, DbModel.Window3Damage); NAPI.Vehicle.BreakVehicleWindow(GameVehicle, 4, DbModel.Window4Damage); //Dodajemy tuning do pojazdu float engineMultipier = 0f; float torqueMultipier = 0f; foreach (ItemModel tuning in DbModel.ItemsInVehicle) { if (tuning.ItemEntityType == ItemEntityType.Tuning && tuning.FourthParameter.HasValue) { if (tuning.FirstParameter != null && (TuningType)tuning.FirstParameter == TuningType.Speed) { if (tuning.SecondParameter != null) { engineMultipier += (float)tuning.SecondParameter; } if (tuning.ThirdParameter != null) { torqueMultipier += (float)tuning.ThirdParameter; } } } } //Te metody działają tak, że ujemny mnożnik zmniejsza | 0 to normalnie | a dodatni poprawia //Pola są potrzebne, ponieważ w salonie będą dostępne 3 wersje pojazdu //TODO: tańsza o 10% zmniejszone osiągi o -5f //TODO: normalna //TODO: droższa o 25% zwiększone osiągi o 5f NAPI.Vehicle.SetVehicleEnginePowerMultiplier(GameVehicle, engineMultipier); NAPI.Vehicle.SetVehicleEngineTorqueMultiplier(GameVehicle, torqueMultipier); //NAPI.Data.SetEntitySharedData(GameVehicle.Handle, "_maxfuel", DbModel.Fuel); //NAPI.Data.SetEntitySharedData(GameVehicle.Handle, "_fuel", DbModel.Fuel); //NAPI.Data.SetEntitySharedData(GameVehicle.Handle, "_fuelConsumption", DbModel.FuelConsumption); //NAPI.Data.SetEntitySharedData(GameVehicle.Handle, "_milage", DbModel.Milage); GameVehicle.SetData("VehicleEntity", this); GameVehicle.SetSharedData("Id", DbModel.Id); GameVehicle.SetSharedData("milage", DbModel.Milage); GameVehicle.SetSharedData("fuel", DbModel.Fuel); GameVehicle.SetSharedData("fuelConsumption", DbModel.FuelConsumption); GameVehicle.SetSharedData("maxFuel", DbModel.FuelTank); EntityHelper.Add(this); Save(); }
public static void ApplyVehicleMods(GameVehicle veh) { foreach (var mod in veh.VehMods ?? new Dictionary <string, string>()) { var modid = Convert.ToInt32(mod.Key); if (modid == PrimaryColorId) { var clrs = ((string)mod.Value).Split('|'); if (clrs.Length == 1) { API.Shared.SetVehiclePrimaryColor(veh.Entity, Convert.ToInt32(clrs[0])); } else { API.Shared.SetVehicleCustomPrimaryColor(veh.Entity, Convert.ToInt32(clrs[0]), Convert.ToInt32(clrs[1]), Convert.ToInt32(clrs[2])); } } else if (modid == SecondryColorId) { var clrs = ((string)mod.Value).Split('|'); if (clrs.Length == 1) { API.Shared.SetVehicleSecondaryColor(veh.Entity, Convert.ToInt32(clrs[0])); } else { API.Shared.SetVehicleCustomSecondaryColor(veh.Entity, Convert.ToInt32(clrs[0]), Convert.ToInt32(clrs[1]), Convert.ToInt32(clrs[2])); } } else if (modid == TyresSmokeColorId) { var clrs = ((string)mod.Value).Split('|'); API.Shared.SetVehicleTyreSmokeColor(veh.Entity, new GTANetworkAPI.Color(Convert.ToInt32(clrs[0]), Convert.ToInt32(clrs[1]), Convert.ToInt32(clrs[2]))); foreach (var p in API.Shared.GetAllPlayers()) { if (p == null) { continue; } if (API.Shared.GetEntityPosition(veh.Entity) .DistanceTo(p.Position) <= 500) { if (Convert.ToInt32(clrs[1]) == 0 && Convert.ToInt32(clrs[1]) == 0 && Convert.ToInt32(clrs[1]) == 0) { API.Shared.SendNativeToPlayer(p, Hash.TOGGLE_VEHICLE_MOD, veh.Entity, 20, false); } else { API.Shared.SendNativeToPlayer(p, Hash.TOGGLE_VEHICLE_MOD, veh.Entity, 20, true); } } } } else if (modid == NeonColorId) { var clrs = ((string)mod.Value).Split('|'); API.Shared.SetVehicleNeonColor(veh.Entity, Convert.ToInt32(clrs[0]), Convert.ToInt32(clrs[1]), Convert.ToInt32(clrs[2])); } else if (modid == WindowTintId) { API.Shared.SetVehicleWindowTint(veh.Entity, Convert.ToInt32(mod.Value)); } else { API.Shared.SetVehicleMod(veh.Entity, modid, Convert.ToInt32(mod.Value)); if (modid == 14) //Horns { foreach (var p in API.Shared.GetAllPlayers()) { if (p == null) { continue; } if (API.Shared.GetEntityPosition(veh.Entity) .DistanceTo(p.Position) <= 500) { API.Shared.SendNativeToPlayer(p, Hash.SET_VEHICLE_MOD, veh.Entity, 14, Convert.ToInt32(mod.Value)); } } } } } }
public void VehicleEditSave(Player player, params object[] arguments) { GameVehicle veh = NAPI.Data.GetEntityData(player, "EDIT_VEH"); if (veh == null) { NAPI.Chat.SendChatMessageToPlayer(player, "~r~Vehicle editor error. Null vehicle."); return; } var vehId = Convert.ToInt32(arguments[0]); var model = Convert.ToString(arguments[1]); var owner = Convert.ToString(arguments[2]); var licensePlate = Convert.ToString(arguments[3]); var color1 = (string)arguments[4]; var color2 = (string)arguments[5]; var respawnDelay = Convert.ToInt32(arguments[6]); var jobId = Convert.ToInt32(arguments[7]); var groupId = Convert.ToInt32(arguments[8]); if (veh.Id != vehId) { NAPI.Chat.SendChatMessageToPlayer(player, "~r~Vehicle editor error. Vehicle edit IDs are not equal."); return; } var modelHash = NAPI.Util.VehicleNameToModel(model); if (modelHash == 0) { NAPI.ClientEvent.TriggerClientEvent(player, "send_veh_edit_error", "Invalid vehicle model entered!"); return; } if (!Character.IsCharacterRegistered(owner) && owner != "NONE") { NAPI.ClientEvent.TriggerClientEvent(player, "send_veh_edit_error", "Invalid owner entered. (Character name does not exist.)"); return; } if (JobManager.GetJobById(jobId) == null && jobId != 0) { NAPI.ClientEvent.TriggerClientEvent(player, "send_veh_edit_error", "Invalid job ID entered!"); return; } if (GroupManager.GetGroupById(groupId) == null && groupId != 0) { NAPI.ClientEvent.TriggerClientEvent(player, "send_veh_edit_error", "Invalid group ID entered!"); return; } if (owner == "NONE") { veh.OwnerId = 0; } else { veh.OwnerId = PlayerManager.Players.Single(x => x.CharacterName == owner).Id; } veh.VehModel = modelHash; veh.LicensePlate = licensePlate; veh.VehMods[ModdingManager.PrimaryColorId.ToString()] = color1; veh.VehMods[ModdingManager.SecondryColorId.ToString()] = color2; veh.RespawnDelay = TimeSpan.FromMinutes(respawnDelay); veh.JobId = jobId; veh.Job = JobManager.GetJobById(veh.JobId); veh.Group = GroupManager.GetGroupById(veh.GroupId); veh.GroupId = groupId; VehicleManager.respawn_vehicle(veh, NAPI.Entity.GetEntityPosition(veh.Entity)); NAPI.Player.SetPlayerIntoVehicle(player, veh.Entity, -1); veh.Save(); NAPI.Chat.SendChatMessageToPlayer(player, "Vehicle editor changes saved!"); NAPI.ClientEvent.TriggerClientEvent(player, "finish_veh_edit"); }