From 7501235cd46b2b8371d9142d11669ca097641ea4 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 7 Oct 2018 20:17:06 +0200 Subject: [PATCH 1/6] Feature/save system --- Client/Login/login.html | 1 + Client/Save/main.js | 4 +- Client/Save/save.html | 1 + Client/index.js | 6 +++ Model/DatabaseContext.cs | 4 ++ Server/Commands/Admin.cs | 63 ++++++++++++++++----------- Server/Entities/FactionVehicles.cs | 41 +++++++++++++++++ Server/Events/Disconnect.cs | 15 +++++-- Server/Events/Login.cs | 2 +- Server/Events/SaveData.cs | 26 ++++++++++- Server/Extensions/VehicleExtension.cs | 34 +++++++++++++++ Server/Managers/LoadManager.cs | 20 +++++++-- build.csproj | 23 ---------- 13 files changed, 179 insertions(+), 61 deletions(-) create mode 100644 Server/Entities/FactionVehicles.cs create mode 100644 Server/Extensions/VehicleExtension.cs delete mode 100644 build.csproj diff --git a/Client/Login/login.html b/Client/Login/login.html index 5306cfdd..9b848994 100644 --- a/Client/Login/login.html +++ b/Client/Login/login.html @@ -7,6 +7,7 @@ + diff --git a/Client/Save/main.js b/Client/Save/main.js index ab26a4b6..b40e649f 100644 --- a/Client/Save/main.js +++ b/Client/Save/main.js @@ -9,9 +9,7 @@ mp.events.add('saveBlip', () => { saveBrowser = mp.browsers.new('package://Save/save.html'); mp.gui.chat.activate(false); - setTimeout(() => { - mp.gui.cursor.visible = true - }, 500); + mp.gui.cursor.show(true, true); }); mp.events.add('saveData', (blipSprite, blipName, blipScale, blipColor, blipAlpha, blipDrawDistance, blipShortRange, blipRotation, blipDimension) => { diff --git a/Client/Save/save.html b/Client/Save/save.html index 7f0538b7..b6122bcb 100644 --- a/Client/Save/save.html +++ b/Client/Save/save.html @@ -7,6 +7,7 @@ + diff --git a/Client/index.js b/Client/index.js index a0b043e1..7a6e6771 100644 --- a/Client/index.js +++ b/Client/index.js @@ -4,8 +4,14 @@ * @copyright (c) 2008 - 2018 Life of German */ + +require('./Login/main.js'); +require('./Save/main.js'); +require('./Save/save.js'); + require('./Gui/infobox.js'); require('./Login/main.js'); require('./Save/main.js'); require('./FactionManagement/main.js'); + diff --git a/Model/DatabaseContext.cs b/Model/DatabaseContext.cs index f3f1e4d9..f4b77eb8 100644 --- a/Model/DatabaseContext.cs +++ b/Model/DatabaseContext.cs @@ -36,12 +36,16 @@ namespace reallife_gamemode.Model base.OnModelCreating(modelBuilder); } + //User public DbSet Users { get; set; } public DbSet UserVehicles { get; set; } public DbSet BankAccounts { get; set; } public DbSet Bans { get; set; } + + //Faction public DbSet Factions { get; set; } public DbSet FactionRanks { get; set; } + public DbSet FactionVehicles { get; set; } //Logs //public DbSet BanLogs { get; set; } diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index d7e80d55..c5d418e9 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -567,31 +567,6 @@ namespace reallife_gamemode.Server.Commands } } - [Command("save", "~m~Benutzung: ~s~/save [Typ = ~g~Blip, ~r~Marker, Ped, Pickup, TextLabel, ~g~Vehicle")] - public void CmdAdminSave(Client player, string typ) - { - if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) - { - ChatService.NotAuthorized(player); - return; - } - switch (typ.ToLower()) - { - case "blip": - player.TriggerEvent("saveBlip"); - break; - case "vehicle": - if (player.IsInVehicle) - { - Vehicle vehicle = player.Vehicle; - SaveData.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; - } - } - [Command("ban", "~m~Benutzung: ~s~/ban [User] [Zeit in Minuten(0 für Permanent)] [Grund] ", GreedyArg = true)] public void CmdAdminBan(Client admin, string user, int mins, string reason) { @@ -612,6 +587,44 @@ namespace reallife_gamemode.Server.Commands target.GetUser().BanPlayer(admin, reason, mins); } + [Command("save", "~m~Benutzung: ~s~/save [Typ = ~g~Blip, ~r~Marker, Ped, Pickup, TextLabel, ~g~Vehicle, FVehicle")] + public void CmdAdminSave(Client player, string typ) + { + switch (typ) + { + case "Blip": + player.TriggerEvent("saveBlip"); + break; + case "FVehicle": + if (player.IsInVehicle) + { + if(player.GetUser().FactionId == null) + { + player.SendChatMessage("~m~Du bist in keiner Fraktion! Invite dich erst mit ~y~/ainvite"); + return; + } + else + { + Vehicle vehicle = player.Vehicle; + SaveData.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); + } + } + else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!"); + break; + case "Vehicle": + if (player.IsInVehicle) + { + Vehicle vehicle = player.Vehicle; + SaveData.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; + + } + } + [Command("unban", "~m~Benutzung: ~s~/unban [Name] ", GreedyArg = true)] public void CmdAdminUnban(Client admin, string userName) { diff --git a/Server/Entities/FactionVehicles.cs b/Server/Entities/FactionVehicles.cs new file mode 100644 index 00000000..3e67d3cc --- /dev/null +++ b/Server/Entities/FactionVehicles.cs @@ -0,0 +1,41 @@ +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 FactionVehicles (FactionVehicle.cs) +* @author VegaZ +* @copyright (c) 2008 - 2018 Life of German +*/ + +namespace reallife_gamemode.Server.Entities +{ + public class FactionVehicle + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + [ForeignKey("Faction")] + public int? FactionId { get; set; } + public Faction Faction { get; set; } + + public VehicleHash Model { 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 bool Locked { get; set; } + public bool Engine { get; set; } + public byte Dimension { get; set; } + public bool Active { get; set; } + } +} diff --git a/Server/Events/Disconnect.cs b/Server/Events/Disconnect.cs index bbcd959f..e740aec5 100644 --- a/Server/Events/Disconnect.cs +++ b/Server/Events/Disconnect.cs @@ -37,10 +37,17 @@ namespace reallife_gamemode.Server.Events { var user = saveUser.Users.SingleOrDefault(u => u.Name == player.Name); - user.PositionX = player.Position.X; - user.PositionY = player.Position.Y; - user.PositionZ = player.Position.Z; - saveUser.SaveChanges(); + if(user == null) + { + return; + } + else + { + user.PositionX = player.Position.X; + user.PositionY = player.Position.Y; + user.PositionZ = player.Position.Z; + saveUser.SaveChanges(); + } } player.SetData("isLoggedIn", false); } diff --git a/Server/Events/Login.cs b/Server/Events/Login.cs index 032b9b55..55aedcbb 100644 --- a/Server/Events/Login.cs +++ b/Server/Events/Login.cs @@ -47,7 +47,7 @@ namespace reallife_gamemode.Server.Events player.SetData("isLoggedIn", true); player.SetData("spec", true); player.TriggerEvent("draw", player.Name, player.Handle.Value); - player.Position = new Vector3(user.PositionX, user.PositionY, user.PositionZ); + //player.Position = new Vector3(user.PositionX, user.PositionY, user.PositionZ); } } } diff --git a/Server/Events/SaveData.cs b/Server/Events/SaveData.cs index 01d32054..667dc6b9 100644 --- a/Server/Events/SaveData.cs +++ b/Server/Events/SaveData.cs @@ -73,6 +73,30 @@ namespace reallife_gamemode.Server.Events saveData.SaveChanges(); } } - + public static void SaveFactionVehicleData(VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, + string vehicleNumberPlate, byte vehiclePrimaryColor, byte vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, byte vehicleDimension, int? factionId) + { + using (var saveData = new Model.DatabaseContext()) + { + var dataSet = new Entities.FactionVehicle + { + Model = vehicleModel, + FactionId = factionId, + PositionX = vehiclePosition.X, + PositionY = vehiclePosition.Y, + PositionZ = vehiclePosition.Z, + Heading = vehicleHeading, + NumberPlate = vehicleNumberPlate, + PrimaryColor = vehiclePrimaryColor, + SecondaryColor = vehicleSecondaryColor, + Locked = vehicleLocked, + Engine = vehicleEngine, + Dimension = vehicleDimension, + Active = true + }; + saveData.FactionVehicles.Add(dataSet); + saveData.SaveChanges(); + } + } } } diff --git a/Server/Extensions/VehicleExtension.cs b/Server/Extensions/VehicleExtension.cs new file mode 100644 index 00000000..1901eecb --- /dev/null +++ b/Server/Extensions/VehicleExtension.cs @@ -0,0 +1,34 @@ +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 VegaZ +* @copyright (c) 2008 - 2018 Life of German +*/ + +namespace reallife_gamemode.Server.Extensions +{ + public class VehicleExtension : Script + { + public static bool IsFactionVehicle(Vehicle vehicle) + { + if (LoadManager.FactionVehiclesList.Contains(vehicle) == true) + { + return true; + } + else return false; + } + public static int GetFaction(Vehicle vehicle) + { + return (FactionVehicle)vehicle.FactionId; + } + } +} diff --git a/Server/Managers/LoadManager.cs b/Server/Managers/LoadManager.cs index 0ca49ad9..83e05330 100644 --- a/Server/Managers/LoadManager.cs +++ b/Server/Managers/LoadManager.cs @@ -17,10 +17,9 @@ namespace reallife_gamemode.Server.Managers { [ServerEvent(Event.ResourceStart)] public void OnResourceStart() - { + { using (var loadData = new DatabaseContext()) { - //LOAD ALL BLIPS foreach (Saves.SavedBlip b in loadData.Blips) { if(b.Active == true) @@ -29,8 +28,10 @@ namespace reallife_gamemode.Server.Managers b.Color, b.Name, b.Alpha, b.DrawDistance, b.ShortRange, (short) b.Rotation, b.Dimension); } } - //LOAD ALL VEHICLES - foreach (Saves.SavedVehicle v in loadData.Vehicles) + } + using (var loadVehicles = new DatabaseContext()) + { + foreach (Saves.SavedVehicle v in loadVehicles.Vehicles) { if (v.Active == true) { @@ -39,6 +40,17 @@ namespace reallife_gamemode.Server.Managers } } } + using (var loadFVehicles = new DatabaseContext()) + { + foreach (FactionVehicle v in loadFVehicles.FactionVehicles) + { + if (v.Active == true) + { + 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); + } + } + } } } } diff --git a/build.csproj b/build.csproj deleted file mode 100644 index 3d263cde..00000000 --- a/build.csproj +++ /dev/null @@ -1,23 +0,0 @@ - - - netcoreapp2.0 - reallife_gamemode - true - true - true - - - - Always - - - - - - - - - - - - \ No newline at end of file From 9cda996082392527c8b6f1c88db8d6dbbe8df05b Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 7 Oct 2018 20:18:16 +0200 Subject: [PATCH 2/6] Upload New File --- build.csproj | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 build.csproj diff --git a/build.csproj b/build.csproj new file mode 100644 index 00000000..3d263cde --- /dev/null +++ b/build.csproj @@ -0,0 +1,23 @@ + + + netcoreapp2.0 + reallife_gamemode + true + true + true + + + + Always + + + + + + + + + + + + \ No newline at end of file From 69c9a3183a730030f3f559d8069c932e80b0f160 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 7 Oct 2018 20:40:56 +0200 Subject: [PATCH 3/6] Delete VehicleExtension.cs --- Server/Extensions/VehicleExtension.cs | 34 --------------------------- 1 file changed, 34 deletions(-) delete mode 100644 Server/Extensions/VehicleExtension.cs diff --git a/Server/Extensions/VehicleExtension.cs b/Server/Extensions/VehicleExtension.cs deleted file mode 100644 index 1901eecb..00000000 --- a/Server/Extensions/VehicleExtension.cs +++ /dev/null @@ -1,34 +0,0 @@ -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 VegaZ -* @copyright (c) 2008 - 2018 Life of German -*/ - -namespace reallife_gamemode.Server.Extensions -{ - public class VehicleExtension : Script - { - public static bool IsFactionVehicle(Vehicle vehicle) - { - if (LoadManager.FactionVehiclesList.Contains(vehicle) == true) - { - return true; - } - else return false; - } - public static int GetFaction(Vehicle vehicle) - { - return (FactionVehicle)vehicle.FactionId; - } - } -} From 223dff559e21d5a2be177ad4d66f98625f3d6258 Mon Sep 17 00:00:00 2001 From: Lennart Kampshoff Date: Sun, 7 Oct 2018 20:43:51 +0200 Subject: [PATCH 4/6] Removed unneccessary debug message --- Server/Commands/Admin.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index c5d418e9..25a3005f 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -56,7 +56,6 @@ namespace reallife_gamemode.Server.Commands if (!uint.TryParse(hash, out uint vehHash)) { - Debug.WriteLine("couldnt parse"); if (!Enum.TryParse(hash, true, out VehicleHash realHash)) { player.SendChatMessage("~r~[FEHLER]~s~ Dieses Fahrzeug existiert nicht."); From 52138ff8321c428b75f3d7f3461060f7a736a4d1 Mon Sep 17 00:00:00 2001 From: Lennart Kampshoff Date: Mon, 8 Oct 2018 12:04:13 +0200 Subject: [PATCH 5/6] Fixed login position --- Server/Events/Disconnect.cs | 2 +- Server/Events/Login.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Server/Events/Disconnect.cs b/Server/Events/Disconnect.cs index e740aec5..d923476f 100644 --- a/Server/Events/Disconnect.cs +++ b/Server/Events/Disconnect.cs @@ -35,7 +35,7 @@ namespace reallife_gamemode.Server.Events using (var saveUser = new Model.DatabaseContext()) { - var user = saveUser.Users.SingleOrDefault(u => u.Name == player.Name); + var user = player.GetUser(saveUser); if(user == null) { diff --git a/Server/Events/Login.cs b/Server/Events/Login.cs index 55aedcbb..293d598f 100644 --- a/Server/Events/Login.cs +++ b/Server/Events/Login.cs @@ -42,7 +42,7 @@ namespace reallife_gamemode.Server.Events else { player.TriggerEvent("loginSuccess"); - NAPI.Player.SpawnPlayer(player, Main.DEFAULT_SPAWN_POSITION, Main.DEFAULT_SPAWN_HEADING); + NAPI.Player.SpawnPlayer(player, new Vector3(user.PositionX, user.PositionY, user.PositionZ), 0); player.SetData("isLoggedIn", true); player.SetData("spec", true); From 25a37f03f91878bfa60340199cadedd35066bab1 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Mon, 8 Oct 2018 19:01:29 +0200 Subject: [PATCH 6/6] Cleanup LoadManager --- Server/Managers/LoadManager.cs | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/Server/Managers/LoadManager.cs b/Server/Managers/LoadManager.cs index 83e05330..1686b3d9 100644 --- a/Server/Managers/LoadManager.cs +++ b/Server/Managers/LoadManager.cs @@ -28,10 +28,7 @@ namespace reallife_gamemode.Server.Managers b.Color, b.Name, b.Alpha, b.DrawDistance, b.ShortRange, (short) b.Rotation, b.Dimension); } } - } - using (var loadVehicles = new DatabaseContext()) - { - foreach (Saves.SavedVehicle v in loadVehicles.Vehicles) + foreach (Saves.SavedVehicle v in loadData.Vehicles) { if (v.Active == true) { @@ -39,15 +36,12 @@ namespace reallife_gamemode.Server.Managers v.SecondaryColor, v.NumberPlate, v.Alpha, v.Locked, v.Engine = false, v.Dimension); } } - } - using (var loadFVehicles = new DatabaseContext()) - { - foreach (FactionVehicle v in loadFVehicles.FactionVehicles) + foreach (FactionVehicle v in loadData.FactionVehicles) { if (v.Active == true) - { - 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); + { + 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); } } }