using System; using GTANetworkAPI; using Newtonsoft.Json; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities.Saves; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Business; using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Managers { public class SaveManager : Script { [RemoteEvent("OnSaveBlipData")] public static void OnSaveBlipData(Player player, string blipSprite, string blipName, string blipScale, string blipColor, string blipAlpha, string blipDrawDistance, string blipShortRange, string blipRotation, string blipDimension) { float x = player.Position.X; float y = player.Position.Y; float z = player.Position.Z; short sprite = short.Parse(blipSprite); string name = blipName; float scale = float.Parse(blipScale); byte color = Convert.ToByte(blipColor); byte alpha = Convert.ToByte(blipAlpha); float drawDistance = float.Parse(blipDrawDistance); bool shortRange = bool.Parse(blipShortRange); float rotation = float.Parse(blipRotation); byte dimension = Convert.ToByte(blipDimension); NAPI.Blip.CreateBlip(uint.Parse(blipSprite), new Vector3(x, y, z), scale, color, name, alpha, drawDistance, shortRange, short.Parse(blipRotation), dimension); using (var saveData = new DatabaseContext()) { var dataSet = new SavedBlip { Sprite = sprite, PositionX = x, PositionY = y, PositionZ = z, Name = blipName, Scale = scale, Color = color, Alpha = alpha, DrawDistance = drawDistance, ShortRange = shortRange, Rotation = rotation, Dimension = dimension, Active = true }; saveData.Blips.Add(dataSet); saveData.SaveChanges(); } } public static Vehicle SaveVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked) { using (var saveData = new DatabaseContext()) { var dataSet = new SavedVehicle { Model = vehicleModel, PositionX = vehiclePosition.X, PositionY = vehiclePosition.Y, PositionZ = vehiclePosition.Z, Heading = vehicleHeading, NumberPlate = vehicleNumberPlate, PrimaryColor = vehiclePrimaryColor, SecondaryColor = vehicleSecondaryColor, Locked = vehicleLocked, Active = true }; saveData.Vehicles.Add(dataSet); saveData.SaveChanges(); return dataSet.Spawn(veh); } } public static Vehicle SaveJobVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int jobId) { using (var saveData = new DatabaseContext()) { var dataSet = new JobVehicle { Model = vehicleModel, JobId = jobId, PositionX = vehiclePosition.X, PositionY = vehiclePosition.Y, PositionZ = vehiclePosition.Z, Heading = vehicleHeading, NumberPlate = vehicleNumberPlate, PrimaryColor = vehiclePrimaryColor, SecondaryColor = vehicleSecondaryColor, Locked = vehicleLocked, Active = true }; saveData.JobVehicles.Add(dataSet); saveData.SaveChanges(); return dataSet.Spawn(veh); } } public static Vehicle SaveSchoolVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int schoolId) { using (var saveData = new DatabaseContext()) { var dataSet = new SchoolVehicle { Model = vehicleModel, SchoolId = schoolId, PositionX = vehiclePosition.X, PositionY = vehiclePosition.Y, PositionZ = vehiclePosition.Z, Heading = vehicleHeading, NumberPlate = vehicleNumberPlate, PrimaryColor = vehiclePrimaryColor, SecondaryColor = vehicleSecondaryColor, Locked = vehicleLocked, Active = true }; saveData.SchoolVehicles.Add(dataSet); saveData.SaveChanges(); return dataSet.Spawn(veh); } } public static Vehicle SaveNoobVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine) { using (var saveData = new DatabaseContext()) { var dataSet = new NoobVehicle { Model = vehicleModel, PositionX = vehiclePosition.X, PositionY = vehiclePosition.Y, PositionZ = vehiclePosition.Z, Heading = vehicleHeading, NumberPlate = vehicleNumberPlate, PrimaryColor = vehiclePrimaryColor, SecondaryColor = vehicleSecondaryColor, Locked = vehicleLocked, Active = true }; saveData.NoobVehicles.Add(dataSet); saveData.SaveChanges(); return dataSet.Spawn(veh); } } public static Vehicle SaveFactionVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int[] factionId, int livery, int buyPrice) { using (var saveData = new DatabaseContext()) { var dataSet = new FactionVehicle { Model = vehicleModel, Owners = JsonConvert.SerializeObject(factionId), PositionX = vehiclePosition.X, PositionY = vehiclePosition.Y, PositionZ = vehiclePosition.Z, Heading = vehicleHeading, NumberPlate = vehicleNumberPlate, PrimaryColor = vehiclePrimaryColor, SecondaryColor = vehicleSecondaryColor, Locked = vehicleLocked, Active = true, Livery = livery, BuyPrice = buyPrice }; saveData.FactionVehicles.Add(dataSet); saveData.SaveChanges(); return dataSet.Spawn(veh); } } public static Vehicle SaveShopVehicleData(Vehicle veh, VehicleHash vehicleModel, string vehicleModelName, Vector3 vehiclePosition, float vehicleHeading, string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, BusinessBase business, int price) { using (var saveData = new DatabaseContext()) { var dataSet = new ShopVehicle { Model = vehicleModel, PositionX = vehiclePosition.X, PositionY = vehiclePosition.Y, PositionZ = vehiclePosition.Z, Heading = vehicleHeading, NumberPlate = vehicleNumberPlate, PrimaryColor = vehiclePrimaryColor, SecondaryColor = vehicleSecondaryColor, Active = true, BusinessId = business.Id, Price = price }; saveData.ShopVehicles.Add(dataSet); saveData.SaveChanges(); return dataSet.Spawn(veh); } } public static void SaveGotoPoint(Player player, string description) { using (var saveData = new DatabaseContext()) { var dataSet = new GotoPoint { Description = description, X = player.Position.X, Y = player.Position.Y, Z = player.Position.Z, Active = true }; saveData.GotoPoints.Add(dataSet); saveData.SaveChanges(); } } public static void SaveAllOnSave() { using (var saveAll = new DatabaseContext()) { //Alle Spieler foreach (Player player in NAPI.Pools.GetAllPlayers()) { User user = player.GetUser(saveAll); if (user == null) { continue; } Vector3 pos = player.Position; user.PositionX = pos.X; user.PositionY = pos.Y; user.PositionZ = pos.Z; } saveAll.SaveChanges(); } } } }