Add VehicleShop, SaveManager, Edit LoadManager amm...
This commit is contained in:
@@ -60,5 +60,6 @@ namespace reallife_gamemode.Model
|
|||||||
public DbSet<Server.Saves.SavedPickup> Pickups { get; set; }
|
public DbSet<Server.Saves.SavedPickup> Pickups { get; set; }
|
||||||
public DbSet<Server.Saves.SavedTextLabel> TextLabels { get; set; }
|
public DbSet<Server.Saves.SavedTextLabel> TextLabels { get; set; }
|
||||||
public DbSet<Server.Saves.SavedVehicle> Vehicles { get; set; }
|
public DbSet<Server.Saves.SavedVehicle> Vehicles { get; set; }
|
||||||
|
public DbSet<Server.Entities.ShopVehicle> ShopVehicles { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -587,7 +587,7 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
target.GetUser().BanPlayer(admin, reason, mins);
|
target.GetUser().BanPlayer(admin, reason, mins);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("save", "~m~Benutzung: ~s~/save [Typ = ~g~Blip, ~r~Marker, Ped, Pickup, TextLabel, ~g~Vehicle, FVehicle")]
|
[Command("save", "~m~Benutzung: ~s~/save [Typ = ~g~Blip, ~r~Marker, Ped, Pickup, TextLabel, ~g~Vehicle, FVehicle, SVehicle")]
|
||||||
public void CmdAdminSave(Client player, string typ)
|
public void CmdAdminSave(Client player, string typ)
|
||||||
{
|
{
|
||||||
switch (typ)
|
switch (typ)
|
||||||
@@ -595,6 +595,15 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
case "Blip":
|
case "Blip":
|
||||||
player.TriggerEvent("saveBlip");
|
player.TriggerEvent("saveBlip");
|
||||||
break;
|
break;
|
||||||
|
case "Vehicle":
|
||||||
|
if (player.IsInVehicle)
|
||||||
|
{
|
||||||
|
Vehicle vehicle = player.Vehicle;
|
||||||
|
SaveManager.SaveVehicleData((VehicleHash)vehicle.Model, vehicle.Position, vehicle.Heading, vehicle.NumberPlate,
|
||||||
|
Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), vehicle.Locked, vehicle.EngineStatus, Convert.ToByte(vehicle.Dimension));
|
||||||
|
}
|
||||||
|
else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
|
||||||
|
break;
|
||||||
case "FVehicle":
|
case "FVehicle":
|
||||||
if (player.IsInVehicle)
|
if (player.IsInVehicle)
|
||||||
{
|
{
|
||||||
@@ -606,18 +615,21 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
Vehicle vehicle = player.Vehicle;
|
Vehicle vehicle = player.Vehicle;
|
||||||
SaveData.SaveFactionVehicleData((VehicleHash)vehicle.Model, vehicle.Position, vehicle.Heading, vehicle.NumberPlate,
|
SaveManager.SaveFactionVehicleData((VehicleHash)vehicle.Model, vehicle.Position, vehicle.Heading, vehicle.NumberPlate,
|
||||||
Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), vehicle.Locked, vehicle.EngineStatus, Convert.ToByte(vehicle.Dimension), player.GetUser().FactionId);
|
Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), vehicle.Locked, vehicle.EngineStatus, Convert.ToByte(vehicle.Dimension), player.GetUser().FactionId);
|
||||||
|
vehicle.SetData("factionId", player.GetUser().FactionId);
|
||||||
|
LoadManager.FactionVehicleList.Add(vehicle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
|
else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
|
||||||
break;
|
break;
|
||||||
case "Vehicle":
|
case "SVehicle":
|
||||||
if (player.IsInVehicle)
|
if (player.IsInVehicle)
|
||||||
{
|
{
|
||||||
Vehicle vehicle = player.Vehicle;
|
Vehicle vehicle = player.Vehicle;
|
||||||
SaveData.SaveVehicleData((VehicleHash)vehicle.Model, vehicle.Position, vehicle.Heading, vehicle.NumberPlate,
|
SaveManager.SaveShopVehicleData((VehicleHash)vehicle.Model, vehicle.DisplayName, vehicle.Position, vehicle.Heading, vehicle.NumberPlate,
|
||||||
Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), vehicle.Locked, vehicle.EngineStatus, Convert.ToByte(vehicle.Dimension));
|
Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), Convert.ToByte(vehicle.Dimension), player.GetUser().FactionId);
|
||||||
|
LoadManager.ShopVehicleList.Add(vehicle);
|
||||||
}
|
}
|
||||||
else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
|
else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
|
||||||
break;
|
break;
|
||||||
@@ -734,6 +746,7 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
if (player.IsInVehicle)
|
if (player.IsInVehicle)
|
||||||
{
|
{
|
||||||
Vehicle playerVehicle = player.Vehicle;
|
Vehicle playerVehicle = player.Vehicle;
|
||||||
|
LoadManager.UserVehicleList.Add(playerVehicle);
|
||||||
using (var saveVehicle = new DatabaseContext())
|
using (var saveVehicle = new DatabaseContext())
|
||||||
{
|
{
|
||||||
var dataSet = new UserVehicle
|
var dataSet = new UserVehicle
|
||||||
@@ -751,10 +764,10 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
Engine = playerVehicle.EngineStatus,
|
Engine = playerVehicle.EngineStatus,
|
||||||
Dimension = Convert.ToByte(playerVehicle.Dimension),
|
Dimension = Convert.ToByte(playerVehicle.Dimension),
|
||||||
};
|
};
|
||||||
|
playerVehicle.SetData("ownerId",player.GetUser().Id);
|
||||||
saveVehicle.UserVehicles.Add(dataSet);
|
saveVehicle.UserVehicles.Add(dataSet);
|
||||||
saveVehicle.SaveChanges();
|
saveVehicle.SaveChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
|
else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
|
||||||
}
|
}
|
||||||
@@ -1075,7 +1088,7 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
player.SendChatMessage("IP von " + NAPI.Player.GetPlayerName(target) + ": " + target.Address);
|
player.SendChatMessage("IP von " + NAPI.Player.GetPlayerName(target) + ": " + target.Address);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TEST COMMAND
|
//TODO TEST COMMAND
|
||||||
[Command("myvehicles")]
|
[Command("myvehicles")]
|
||||||
public void CmdAdminMyVehicles(Client player)
|
public void CmdAdminMyVehicles(Client player)
|
||||||
{
|
{
|
||||||
@@ -1113,6 +1126,40 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
BankManager.TransferUserMoneyToFaction(player.GetUser(), receiverUser, amount, "/FPAY");
|
BankManager.TransferUserMoneyToFaction(player.GetUser(), receiverUser, amount, "/FPAY");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//TODO Ausführen bei Tastendruck wenn in Fahrzeug.
|
||||||
|
[Command("buyv")]
|
||||||
|
public void BuyShopVehicle(Client player)
|
||||||
|
{
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (player.IsInVehicle)
|
||||||
|
{
|
||||||
|
if (player.Vehicle.HasData("shopVehicleId"))
|
||||||
|
{
|
||||||
|
int shopVehicleId = player.Vehicle.GetData("shopVehicleId");
|
||||||
|
using (var getShopVehicle = new DatabaseContext())
|
||||||
|
{
|
||||||
|
ShopVehicle sVehicle = getShopVehicle.ShopVehicles.FirstOrDefault(u => u.Id == shopVehicleId);
|
||||||
|
Entities.Faction receiverUser = getShopVehicle.Factions.FirstOrDefault(u => u.Name == "LSPD");
|
||||||
|
BankManager.TransferUserMoneyToFaction(player.GetUser(), receiverUser, sVehicle.Price, "Fahrzeug gekauft: " + sVehicle.ModelName);
|
||||||
|
//TODO Anpassen
|
||||||
|
Vehicle boughtVehicle = NAPI.Vehicle.CreateVehicle(sVehicle.Model, new Vector3(sVehicle.PositionX, sVehicle.PositionY + 10, sVehicle.PositionZ + 0.5), sVehicle.Heading,
|
||||||
|
sVehicle.PrimaryColor, sVehicle.SecondaryColor, "LoG", sVehicle.Alpha, false, true, 0);
|
||||||
|
player.SetIntoVehicle(boughtVehicle, 0);
|
||||||
|
//TODO fügt das Fahrzeug als Userfahrzeug hinzu
|
||||||
|
CmdAdminOwn(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[Command("saveall")]
|
||||||
|
public void SaveAll(Client player)
|
||||||
|
{
|
||||||
|
SaveManager.SaveAllOnSave();
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
[Command("restart")]
|
[Command("restart")]
|
||||||
|
|||||||
39
Server/Entities/ShopVehicles.cs
Normal file
39
Server/Entities/ShopVehicles.cs
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
using GTANetworkAPI;
|
||||||
|
using reallife_gamemode.Server.Util;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @overview Life of German Reallife - Entities ShopVehicles (ShopVehicles.cs)
|
||||||
|
* @author VegaZ
|
||||||
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Entities
|
||||||
|
{
|
||||||
|
public class ShopVehicle
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public VehicleHash Model { get; set; }
|
||||||
|
[StringLength(32)]
|
||||||
|
public string ModelName { get; set; }
|
||||||
|
public float Price { get; set; }
|
||||||
|
public float PositionX { get; set; }
|
||||||
|
public float PositionY { get; set; }
|
||||||
|
public float PositionZ { get; set; }
|
||||||
|
public float Heading { get; set; }
|
||||||
|
[StringLength(8)]
|
||||||
|
public string NumberPlate { get; set; }
|
||||||
|
public byte Alpha { get; set; }
|
||||||
|
public byte PrimaryColor { get; set; }
|
||||||
|
public byte SecondaryColor { get; set; }
|
||||||
|
public byte Dimension { get; set; }
|
||||||
|
public bool Active { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
29
Server/Events/EnterVehicleAttempt.cs
Normal file
29
Server/Events/EnterVehicleAttempt.cs
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using GTANetworkAPI;
|
||||||
|
using reallife_gamemode.Server.Entities;
|
||||||
|
using reallife_gamemode.Server.Extensions;
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Events
|
||||||
|
{
|
||||||
|
|
||||||
|
public class EnterVehicleAttempt : Script
|
||||||
|
{
|
||||||
|
[ServerEvent(Event.PlayerEnterVehicleAttempt)]
|
||||||
|
public void OnPlayerEnterVehicleAttempt(Client player, Vehicle vehicle, sbyte seat)
|
||||||
|
{
|
||||||
|
if (vehicle.HasData("factionId"))
|
||||||
|
{
|
||||||
|
if((vehicle.GetData("factionId") != player.GetUser().FactionId) && seat == 0)
|
||||||
|
{
|
||||||
|
//TODO REWORK
|
||||||
|
player.SetIntoVehicle(vehicle, 1);
|
||||||
|
player.WarpOutOfVehicle();
|
||||||
|
player.SendChatMessage("Du hast kein Recht in dieses Fahrzeug als Fahrer einzusteigen.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
27
Server/Extensions/VehicleExtension.cs
Normal file
27
Server/Extensions/VehicleExtension.cs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
using GTANetworkAPI;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using reallife_gamemode.Model;
|
||||||
|
using reallife_gamemode.Server.Entities;
|
||||||
|
using reallife_gamemode.Server.Managers;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @overview Life of German Reallife - Vehicle Extension (VehicleExtension.cs)
|
||||||
|
* @author hydrant
|
||||||
|
* @copyright (c) 2008 - 2018 Life of German
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Extensions
|
||||||
|
{
|
||||||
|
public static class VehicleExtension
|
||||||
|
{
|
||||||
|
public static bool IsFactionVehicle(Vehicle vehicle)
|
||||||
|
{
|
||||||
|
bool containsVehicle = LoadManager.FactionVehicleList.Contains(vehicle);
|
||||||
|
return containsVehicle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,6 +15,10 @@ namespace reallife_gamemode.Server.Managers
|
|||||||
{
|
{
|
||||||
public class LoadManager : Script
|
public class LoadManager : Script
|
||||||
{
|
{
|
||||||
|
public static List<Vehicle> FactionVehicleList = new List<Vehicle>();
|
||||||
|
public static List<Vehicle> ShopVehicleList = new List<Vehicle>();
|
||||||
|
public static List<Vehicle> UserVehicleList = new List<Vehicle>();
|
||||||
|
|
||||||
[ServerEvent(Event.ResourceStart)]
|
[ServerEvent(Event.ResourceStart)]
|
||||||
public void OnResourceStart()
|
public void OnResourceStart()
|
||||||
{
|
{
|
||||||
@@ -40,10 +44,31 @@ namespace reallife_gamemode.Server.Managers
|
|||||||
{
|
{
|
||||||
if (v.Active == true)
|
if (v.Active == true)
|
||||||
{
|
{
|
||||||
NAPI.Vehicle.CreateVehicle((uint)v.Model, new Vector3(v.PositionX, v.PositionY, v.PositionZ), v.Heading, (v.PrimaryColor),
|
Vehicle current = NAPI.Vehicle.CreateVehicle((uint)v.Model, new Vector3(v.PositionX, v.PositionY, v.PositionZ), v.Heading, (v.PrimaryColor),
|
||||||
v.SecondaryColor, v.NumberPlate, v.Alpha, v.Locked, v.Engine = false, v.Dimension);
|
v.SecondaryColor, v.NumberPlate, v.Alpha, v.Locked, v.Engine = false, v.Dimension);
|
||||||
|
current.SetData("factionId", v.FactionId);
|
||||||
|
FactionVehicleList.Add(current);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
foreach (ShopVehicle v in loadData.ShopVehicles)
|
||||||
|
{
|
||||||
|
if (v.Active == true)
|
||||||
|
{
|
||||||
|
Vehicle current = NAPI.Vehicle.CreateVehicle((uint)v.Model, new Vector3(v.PositionX, v.PositionY, v.PositionZ), v.Heading, (v.PrimaryColor),
|
||||||
|
v.SecondaryColor, v.NumberPlate, v.Alpha, false, false, v.Dimension);
|
||||||
|
ShopVehicleList.Add(current);
|
||||||
|
current.Health = -4000;
|
||||||
|
var tLabel = NAPI.TextLabel.CreateTextLabel(v.ModelName + " | " + v.Price + "~g~$", new Vector3(v.PositionX, v.PositionY, v.PositionZ + 1.5), 10, 1, 0, new Color(255, 255, 255), false, v.Dimension);
|
||||||
|
current.SetData("shopVehicleId", v.Id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach (UserVehicle v in loadData.UserVehicles)
|
||||||
|
{
|
||||||
|
Vehicle current = NAPI.Vehicle.CreateVehicle((uint)v.Model, new Vector3(v.PositionX, v.PositionY, v.PositionZ), v.Heading, (v.PrimaryColor),
|
||||||
|
v.SecondaryColor, v.NumberPlate, v.Alpha, false, false, v.Dimension);
|
||||||
|
current.SetData("ownerId", v.UserId);
|
||||||
|
UserVehicleList.Add(current);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
using GTANetworkAPI;
|
using GTANetworkAPI;
|
||||||
|
using reallife_gamemode.Server.Extensions;
|
||||||
|
using reallife_gamemode.Server.Managers;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace reallife_gamemode.Server.Events
|
namespace reallife_gamemode.Server.Events
|
||||||
{
|
{
|
||||||
public class SaveData : Script
|
public class SaveManager : Script
|
||||||
{
|
{
|
||||||
[RemoteEvent("OnSaveBlipData")]
|
[RemoteEvent("OnSaveBlipData")]
|
||||||
public void OnSaveBlipData(Client player, string blipSprite, string blipName, string blipScale, string blipColor,
|
public void OnSaveBlipData(Client player, string blipSprite, string blipName, string blipScale, string blipColor,
|
||||||
@@ -98,5 +101,56 @@ namespace reallife_gamemode.Server.Events
|
|||||||
saveData.SaveChanges();
|
saveData.SaveChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public static void SaveShopVehicleData(VehicleHash vehicleModel, string vehicleModelName, Vector3 vehiclePosition, float vehicleHeading,
|
||||||
|
string vehicleNumberPlate, byte vehiclePrimaryColor, byte vehicleSecondaryColor, byte vehicleDimension, int? factionId)
|
||||||
|
{
|
||||||
|
using (var saveData = new Model.DatabaseContext())
|
||||||
|
{
|
||||||
|
var dataSet = new Entities.ShopVehicle
|
||||||
|
{
|
||||||
|
Model = vehicleModel,
|
||||||
|
ModelName = vehicleModelName,
|
||||||
|
PositionX = vehiclePosition.X,
|
||||||
|
PositionY = vehiclePosition.Y,
|
||||||
|
PositionZ = vehiclePosition.Z,
|
||||||
|
Heading = vehicleHeading,
|
||||||
|
NumberPlate = vehicleNumberPlate,
|
||||||
|
PrimaryColor = vehiclePrimaryColor,
|
||||||
|
SecondaryColor = vehicleSecondaryColor,
|
||||||
|
Dimension = vehicleDimension,
|
||||||
|
Active = true
|
||||||
|
};
|
||||||
|
saveData.ShopVehicles.Add(dataSet);
|
||||||
|
saveData.SaveChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void SaveAllOnSave()
|
||||||
|
{
|
||||||
|
using (var saveAll = new Model.DatabaseContext())
|
||||||
|
{
|
||||||
|
//Alle User Vehicle
|
||||||
|
foreach (Vehicle v in LoadManager.UserVehicleList)
|
||||||
|
{
|
||||||
|
int ownerId = v.GetData("ownerId");
|
||||||
|
Entities.UserVehicle userVehicle = saveAll.UserVehicles.FirstOrDefault(u => u.UserId == ownerId);
|
||||||
|
userVehicle.PositionX = v.Position.X;
|
||||||
|
userVehicle.PositionY = v.Position.Y;
|
||||||
|
userVehicle.PositionZ = v.Position.Z;
|
||||||
|
userVehicle.Heading = v.Heading;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Alle Spieler
|
||||||
|
foreach (Client player in NAPI.Pools.GetAllPlayers())
|
||||||
|
{
|
||||||
|
int userId = player.GetUser().Id;
|
||||||
|
Entities.User user = saveAll.Users.FirstOrDefault(u => u.Id == userId);
|
||||||
|
user.PositionX = player.Position.X;
|
||||||
|
user.PositionY = player.Position.Y;
|
||||||
|
user.PositionZ = player.Position.Z;
|
||||||
|
}
|
||||||
|
|
||||||
|
saveAll.SaveChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user