227 lines
7.4 KiB
C#
227 lines
7.4 KiB
C#
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 SaveFactionVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading,
|
|
string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int[] factionId, int livery)
|
|
{
|
|
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
|
|
};
|
|
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();
|
|
}
|
|
}
|
|
}
|
|
}
|