From a0787538c9a8cfdfa955f7be3cc7b03a922dd98b Mon Sep 17 00:00:00 2001 From: hydrant Date: Tue, 18 Sep 2018 22:38:43 +0200 Subject: [PATCH 1/9] Add some Admin Commands, set default 'Command not found'-message --- Main.cs | 1 + Server/Commands/Admin.cs | 98 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 95 insertions(+), 4 deletions(-) diff --git a/Main.cs b/Main.cs index 8d56a939..fb113113 100644 --- a/Main.cs +++ b/Main.cs @@ -8,6 +8,7 @@ namespace reallife_gamemode [ServerEvent(Event.ResourceStart)] public void OnResourceStart() { + NAPI.Server.SetCommandErrorMessage("~r~[FEHLER]~s~ Dieser Command existiert nicht."); NAPI.Util.ConsoleOutput("reallife-gamemode resource loaded!"); } } diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index b0af4954..733d24b9 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -2,15 +2,105 @@ using System.Collections.Generic; using System.Text; using GTANetworkAPI; +using reallife_gamemode.Server.Services; -namespace reallife_gamemode.Server.Command +namespace reallife_gamemode.Server.Commands { public class Admin : Script { - [Command("o")] - public void sendOChat(Client player, string message) + /** + * @overview Life of German Reallife - Admin.cs + * @author VegaZ, hydrant + * @copyright (c) 2008 - 2018 Life of German + */ + + [Command("o", "~m~Benutzung: ~s~/o [Nachricht]", GreedyArg = true)] + public void CmdAdminOChat(Client player, string message) { - NAPI.Chat.SendChatMessageToAll("~r~" + player.Name + " sagt:~w~ " + message); + /* + * Alternative: + * Account playerAccount = AccountManager.GetAccount(player); + * if(!playerAccount.IsAdmin(adminLevel)) + * { + * ChatService.NotAuthorized(player); + * return; + * } + */ + int playerAdminLevel = 1; + if(playerAdminLevel < /* Benötigtes Level */ 1) + { + ChatService.NotAuthorized(player); + return; + } + + string publicMessage = "~b~(( " + player.Name + ": " + message + " ))"; + NAPI.Chat.SendChatMessageToAll(publicMessage); + } + + [Command("veh", "~m~Benutzung:~s~ /veh [Fahrzeug] (Farbe 1) (Farbe 2)")] + public void CmdAdminVeh(Client player, VehicleHash hash, int color1 = 111, int color2 = 111) + { + // Alternative: siehe O Chat + int playerAdminLevel = 1; + if (playerAdminLevel < /* Benötigtes Level */ 1) + { + ChatService.NotAuthorized(player); + return; + } + + if(player.IsInVehicle) // Man darf keine Autos erstellen, wenn man selbst in einem sitzt (verhindert Bugs) + { + player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan schon in einem Fahrzeug."); + return; + } + + Vehicle v = NAPI.Vehicle.CreateVehicle(hash, player.Position, player.Rotation.Z, color1, color2); + + player.SetIntoVehicle(v.Handle, -1); + } + + [Command("fixveh")] + public void CmdAdminFixveh(Client player) + { + // Alternative: siehe O Chat + int playerAdminLevel = 1; + if (playerAdminLevel < /* Benötigtes Level */ 1) + { + ChatService.NotAuthorized(player); + return; + } + + if (!player.IsInVehicle) // Man darf keine Autos erstellen, wenn man selbst in einem sitzt (verhindert Bugs) + { + player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan nicht in einem Fahrzeug."); + return; + } + + player.Vehicle.Repair(); + } + + [Command("delveh")] + public void CmdAdminDelveh(Client player) + { + int playerAdminLevel = 1; + if (playerAdminLevel < /* Benötigtes Level */ 1) + { + ChatService.NotAuthorized(player); + return; + } + + if (!player.IsInVehicle) // Man darf keine Autos erstellen, wenn man selbst in einem sitzt (verhindert Bugs) + { + player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan nicht in einem Fahrzeug."); + return; + } + + /* + * TODO: Checken, ob das Fahrzeug in einem System genutzt wird (Fraktions-Autos / Spieler-Auto) + * Wenn Ja: Abbrechen und mitteilen, dass man den System-spezifischen Befehl zu nutzen hat + */ + + player.Vehicle.Delete(); } } } From 8299b6c9003b11e04296d3579c48c6f2ee989b04 Mon Sep 17 00:00:00 2001 From: hydrant Date: Tue, 18 Sep 2018 22:40:14 +0200 Subject: [PATCH 2/9] Add ChatService, Folder for Managers --- Server/Managers/.gitkeep | 10 ++++++++++ Server/Services/ChatService.cs | 15 +++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 Server/Managers/.gitkeep create mode 100644 Server/Services/ChatService.cs diff --git a/Server/Managers/.gitkeep b/Server/Managers/.gitkeep new file mode 100644 index 00000000..d66872d0 --- /dev/null +++ b/Server/Managers/.gitkeep @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace reallife_gamemode.Server.Managers +{ + class _ + { + } +} diff --git a/Server/Services/ChatService.cs b/Server/Services/ChatService.cs new file mode 100644 index 00000000..18fcdf2e --- /dev/null +++ b/Server/Services/ChatService.cs @@ -0,0 +1,15 @@ +using GTANetworkAPI; +using System; +using System.Collections.Generic; +using System.Text; + +namespace reallife_gamemode.Server.Services +{ + class ChatService + { + public static void NotAuthorized(Client player) + { + player.SendChatMessage("~r~[FEHLER]~s~ Du kannst diesen Befehl nicht ausführen."); + } + } +} From 26bfaacd67dcf65f8599b71f2e16db5e567a68b8 Mon Sep 17 00:00:00 2001 From: hydrant Date: Wed, 19 Sep 2018 12:25:49 +0200 Subject: [PATCH 3/9] Add Admin Check, Add AdminLevel Column in database --- Main.cs | 6 +++++ Server/Commands/Admin.cs | 46 ++++++++++++++++++-------------- Server/Entities/User.cs | 6 ++++- Server/Services/ChatService.cs | 5 ++++ Server/Services/ClientService.cs | 36 +++++++++++++++++++++++++ 5 files changed, 78 insertions(+), 21 deletions(-) create mode 100644 Server/Services/ClientService.cs diff --git a/Main.cs b/Main.cs index fb113113..ab154131 100644 --- a/Main.cs +++ b/Main.cs @@ -5,6 +5,12 @@ namespace reallife_gamemode { public class Main : Script { + /** + * @overview Life of German Reallife - Main Class (Main.cs) + * @author VegaZ, hydrant + * @copyright (c) 2008 - 2018 Life of German + */ + [ServerEvent(Event.ResourceStart)] public void OnResourceStart() { diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index 733d24b9..2ac3158c 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -2,32 +2,24 @@ using System.Collections.Generic; using System.Text; using GTANetworkAPI; +using reallife_gamemode.Server.Extensions; using reallife_gamemode.Server.Services; +using reallife_gamemode.Server.Util; namespace reallife_gamemode.Server.Commands { public class Admin : Script { /** - * @overview Life of German Reallife - Admin.cs + * @overview Life of German Reallife - Admin Commands (Admin.cs) * @author VegaZ, hydrant * @copyright (c) 2008 - 2018 Life of German */ [Command("o", "~m~Benutzung: ~s~/o [Nachricht]", GreedyArg = true)] - public void CmdAdminOChat(Client player, string message) + public void CmdAdminO(Client player, string message) { - /* - * Alternative: - * Account playerAccount = AccountManager.GetAccount(player); - * if(!playerAccount.IsAdmin(adminLevel)) - * { - * ChatService.NotAuthorized(player); - * return; - * } - */ - int playerAdminLevel = 1; - if(playerAdminLevel < /* Benötigtes Level */ 1) + if (!player.GetUser().IsAdmin(AdminLevel.SUPPORTER)) { ChatService.NotAuthorized(player); return; @@ -62,9 +54,7 @@ namespace reallife_gamemode.Server.Commands [Command("fixveh")] public void CmdAdminFixveh(Client player) { - // Alternative: siehe O Chat - int playerAdminLevel = 1; - if (playerAdminLevel < /* Benötigtes Level */ 1) + if (!player.GetUser().IsAdmin(AdminLevel.SUPPORTER)) { ChatService.NotAuthorized(player); return; @@ -95,12 +85,28 @@ namespace reallife_gamemode.Server.Commands return; } - /* - * TODO: Checken, ob das Fahrzeug in einem System genutzt wird (Fraktions-Autos / Spieler-Auto) - * Wenn Ja: Abbrechen und mitteilen, dass man den System-spezifischen Befehl zu nutzen hat - */ + /* TODO: Checken, ob das Fahrzeug in einem System genutzt wird (Fraktions-Autos / Spieler-Auto) + * Wenn Ja: Abbrechen und mitteilen, dass man den System-spezifischen Befehl zu nutzen hat */ player.Vehicle.Delete(); } + + [Command("goto", "~m~Benutzung:~s~ /goto [Name]")] + public void CmdAdminGoto(Client player, string name) + { + if (!player.GetUser().IsAdmin(AdminLevel.SUPPORTER)) + { + ChatService.NotAuthorized(player); + return; + } + + Client target = ClientService.GetClientByName(name); + + if(target == null) + { + ChatService.PlayerNotFound(player); + return; + } + } } } diff --git a/Server/Entities/User.cs b/Server/Entities/User.cs index 2cea4e39..133ab2d1 100644 --- a/Server/Entities/User.cs +++ b/Server/Entities/User.cs @@ -1,4 +1,5 @@ -using System; +using reallife_gamemode.Server.Util; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; @@ -22,5 +23,8 @@ namespace reallife_gamemode.Server.Entities [EmailAddress] [StringLength(64)] public string Email { get; set; } + public AdminLevel AdminLevel { get; set; } + + public bool IsAdmin(AdminLevel level) => AdminLevel >= level; } } diff --git a/Server/Services/ChatService.cs b/Server/Services/ChatService.cs index 18fcdf2e..9b22be73 100644 --- a/Server/Services/ChatService.cs +++ b/Server/Services/ChatService.cs @@ -11,5 +11,10 @@ namespace reallife_gamemode.Server.Services { player.SendChatMessage("~r~[FEHLER]~s~ Du kannst diesen Befehl nicht ausführen."); } + + internal static void PlayerNotFound(Client player) + { + player.SendChatMessage("~r~[FEHLER]~s~ Der Spieler wurde nicht gefunden."); + } } } diff --git a/Server/Services/ClientService.cs b/Server/Services/ClientService.cs new file mode 100644 index 00000000..d60500f6 --- /dev/null +++ b/Server/Services/ClientService.cs @@ -0,0 +1,36 @@ +using GTANetworkAPI; +using System; +using System.Collections.Generic; +using System.Text; + +namespace reallife_gamemode.Server.Services +{ + class ClientService + { + /** + * @overview Life of German Reallife - Client Service (ClientService.cs) + * @author hydrant + * @copyright (c) 2008 - 2018 Life of German + */ + + public static Client GetClientByName(string name) + { + /* Funktionsaufbau: Prüft erst, ob ein Spieler mit exakt diesem Namen online ist + * Wenn Ja: Wird dieser zurückgegeben + * Wenn Nein: Wird der erste Spieler zurückgegeben, dessen Namen mit dem eingegebenen Parameter übereinstimmt + * Gibt "null" zurück, falls kein Client gefunden wurde + */ + Client toReturn = null; + + List playerList = NAPI.Pools.GetAllPlayers(); + toReturn = playerList.Find(p => p.Name == name); + + if(toReturn == null) + { + toReturn = playerList.Find(p => p.Name.StartsWith(name)); + } + + return toReturn; + } + } +} From 91e2fbe4ecdd60de7cb9a5d32440b0175ede6ec9 Mon Sep 17 00:00:00 2001 From: hydrant Date: Wed, 19 Sep 2018 12:26:35 +0200 Subject: [PATCH 4/9] Add AdminLevel.cs, ClientExtention.cs --- Server/Extensions/ClientExtension.cs | 20 ++++++++++++++++++++ Server/Util/AdminLevel.cs | 13 +++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 Server/Extensions/ClientExtension.cs create mode 100644 Server/Util/AdminLevel.cs diff --git a/Server/Extensions/ClientExtension.cs b/Server/Extensions/ClientExtension.cs new file mode 100644 index 00000000..2670492e --- /dev/null +++ b/Server/Extensions/ClientExtension.cs @@ -0,0 +1,20 @@ +using GTANetworkAPI; +using reallife_gamemode.Model; +using reallife_gamemode.Server.Entities; +using System; +using System.Collections.Generic; +using System.Text; + +namespace reallife_gamemode.Server.Extensions +{ + public static class ClientExtension + { + public static User GetUser(this Client client) + { + using(DatabaseContext dbContext = new DatabaseContext()) + { + return dbContext.Users.Find(client.Name); + } + } + } +} diff --git a/Server/Util/AdminLevel.cs b/Server/Util/AdminLevel.cs new file mode 100644 index 00000000..e0e656d3 --- /dev/null +++ b/Server/Util/AdminLevel.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace reallife_gamemode.Server.Util +{ + public enum AdminLevel : int + { + PLAYER, + SUPPORTER, + ADMIN + } +} From e4efbc8ef62d2c0ba400f1cd79f90e2824d175e8 Mon Sep 17 00:00:00 2001 From: hydrant Date: Wed, 19 Sep 2018 12:50:43 +0200 Subject: [PATCH 5/9] Add Header Comments, Add 'null'-Checks on Commands --- Server/Commands/Admin.cs | 15 ++++++--------- Server/Extensions/ClientExtension.cs | 9 ++++++++- Server/Services/ChatService.cs | 6 ++++++ Server/Util/AdminLevel.cs | 6 ++++++ 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index 2ac3158c..51a3fd57 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -19,7 +19,7 @@ namespace reallife_gamemode.Server.Commands [Command("o", "~m~Benutzung: ~s~/o [Nachricht]", GreedyArg = true)] public void CmdAdminO(Client player, string message) { - if (!player.GetUser().IsAdmin(AdminLevel.SUPPORTER)) + if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) { ChatService.NotAuthorized(player); return; @@ -32,15 +32,13 @@ namespace reallife_gamemode.Server.Commands [Command("veh", "~m~Benutzung:~s~ /veh [Fahrzeug] (Farbe 1) (Farbe 2)")] public void CmdAdminVeh(Client player, VehicleHash hash, int color1 = 111, int color2 = 111) { - // Alternative: siehe O Chat - int playerAdminLevel = 1; - if (playerAdminLevel < /* Benötigtes Level */ 1) + if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } - if(player.IsInVehicle) // Man darf keine Autos erstellen, wenn man selbst in einem sitzt (verhindert Bugs) + if (player.IsInVehicle) // Man darf keine Autos erstellen, wenn man selbst in einem sitzt (verhindert Bugs) { player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan schon in einem Fahrzeug."); return; @@ -54,7 +52,7 @@ namespace reallife_gamemode.Server.Commands [Command("fixveh")] public void CmdAdminFixveh(Client player) { - if (!player.GetUser().IsAdmin(AdminLevel.SUPPORTER)) + if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; @@ -72,8 +70,7 @@ namespace reallife_gamemode.Server.Commands [Command("delveh")] public void CmdAdminDelveh(Client player) { - int playerAdminLevel = 1; - if (playerAdminLevel < /* Benötigtes Level */ 1) + if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; @@ -94,7 +91,7 @@ namespace reallife_gamemode.Server.Commands [Command("goto", "~m~Benutzung:~s~ /goto [Name]")] public void CmdAdminGoto(Client player, string name) { - if (!player.GetUser().IsAdmin(AdminLevel.SUPPORTER)) + if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) { ChatService.NotAuthorized(player); return; diff --git a/Server/Extensions/ClientExtension.cs b/Server/Extensions/ClientExtension.cs index 2670492e..e2ff0861 100644 --- a/Server/Extensions/ClientExtension.cs +++ b/Server/Extensions/ClientExtension.cs @@ -3,17 +3,24 @@ using reallife_gamemode.Model; using reallife_gamemode.Server.Entities; using System; using System.Collections.Generic; +using System.Linq; using System.Text; namespace reallife_gamemode.Server.Extensions { public static class ClientExtension { + /** + * @overview Life of German Reallife - Client Extension (ClientExtension.cs) + * @author VegaZ, hydrant + * @copyright (c) 2008 - 2018 Life of German + */ + public static User GetUser(this Client client) { using(DatabaseContext dbContext = new DatabaseContext()) { - return dbContext.Users.Find(client.Name); + return dbContext.Users.FirstOrDefault(u => u.Name == client.Name); } } } diff --git a/Server/Services/ChatService.cs b/Server/Services/ChatService.cs index 9b22be73..ad81edef 100644 --- a/Server/Services/ChatService.cs +++ b/Server/Services/ChatService.cs @@ -7,6 +7,12 @@ namespace reallife_gamemode.Server.Services { class ChatService { + /** + * @overview Life of German Reallife - Chat Service (ChatService.cs) + * @author hydrant + * @copyright (c) 2008 - 2018 Life of German + */ + public static void NotAuthorized(Client player) { player.SendChatMessage("~r~[FEHLER]~s~ Du kannst diesen Befehl nicht ausführen."); diff --git a/Server/Util/AdminLevel.cs b/Server/Util/AdminLevel.cs index e0e656d3..8a691fe6 100644 --- a/Server/Util/AdminLevel.cs +++ b/Server/Util/AdminLevel.cs @@ -6,6 +6,12 @@ namespace reallife_gamemode.Server.Util { public enum AdminLevel : int { + /** + * @overview Life of German Reallife - Admin Levels (AdminLevel.cs) + * @author VegaZ, hydrant + * @copyright (c) 2008 - 2018 Life of German + */ + PLAYER, SUPPORTER, ADMIN From d50a2e18cdeb0588e4d5a62f0c7b3c05964d00d5 Mon Sep 17 00:00:00 2001 From: hydrant Date: Wed, 19 Sep 2018 13:53:17 +0200 Subject: [PATCH 6/9] Add /gotoxyz Command, Add /ipl Command to manage IPLs --- Server/Commands/Admin.cs | 43 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index 51a3fd57..2f0dd635 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -29,7 +29,7 @@ namespace reallife_gamemode.Server.Commands NAPI.Chat.SendChatMessageToAll(publicMessage); } - [Command("veh", "~m~Benutzung:~s~ /veh [Fahrzeug] (Farbe 1) (Farbe 2)")] + [Command("veh", "~m~Benutzung: ~s~/veh [Fahrzeug] (Farbe 1) (Farbe 2)")] public void CmdAdminVeh(Client player, VehicleHash hash, int color1 = 111, int color2 = 111) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) @@ -88,7 +88,7 @@ namespace reallife_gamemode.Server.Commands player.Vehicle.Delete(); } - [Command("goto", "~m~Benutzung:~s~ /goto [Name]")] + [Command("goto", "~m~Benutzung: ~s~/goto [Name]")] public void CmdAdminGoto(Client player, string name) { if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) @@ -105,5 +105,44 @@ namespace reallife_gamemode.Server.Commands return; } } + + [Command("gotoxyz", "~m~Benutzung: ~s~/gotoxyz [X] [Y] [Z]")] + public void CmdAdminGotoxyz(Client player, float x, float y, float z) + { + if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) + { + ChatService.NotAuthorized(player); + return; + } + + player.Position = new Vector3(x, y, z); + } + + [Command("ipl", "~m~Benutzung: ~s~/ipl [Load / Remove] [Name]")] + public void CmdAdminIpl(Client player, string option, string name) + { + if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) + { + ChatService.NotAuthorized(player); + return; + } + + option = option.ToLower(); + + if(option == "load") + { + NAPI.World.RequestIpl(name); + player.SendChatMessage("~g~Das IPL ~s~" + name + " ~g~wurde erfolgreich geladen"); + } + else if(option == "remove") + { + NAPI.World.RemoveIpl(name); + player.SendChatMessage("~g~Das IPL ~s~" + name + " ~g~wurde erfolgreich entladen"); + } + else + { + player.SendChatMessage("~m~Benutzung: ~s~/ipl [Load / Remove] [Name]"); + } + } } } From 5a816c42012934dbd18110b2dce0e2c1d4814d0c Mon Sep 17 00:00:00 2001 From: hydrant Date: Wed, 19 Sep 2018 14:19:11 +0200 Subject: [PATCH 7/9] Add /giveweapon command --- Server/Commands/Admin.cs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index 2f0dd635..1a16b7b8 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -144,5 +144,38 @@ namespace reallife_gamemode.Server.Commands player.SendChatMessage("~m~Benutzung: ~s~/ipl [Load / Remove] [Name]"); } } + + [Command("giveweapon", "~m~Benutzung: ~s~/giveweapon [Spieler] [Waffe] [Munition]")] + public void CmdAdminGiveweapon(Client player, string name, string weapon, int ammo) + { + if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) + { + ChatService.NotAuthorized(player); + return; + } + + if (ammo <= 0) + { + player.SendChatMessage("~r~[FEHLER]~s~ Es muss mindestens 1 Munition vergeben werden."); + return; + } + + Client target = ClientService.GetClientByName(name); + if (target == null) + { + ChatService.PlayerNotFound(target); + return; + } + + WeaponHash wHash = NAPI.Util.WeaponNameToModel(weapon); + + if(wHash == default(WeaponHash)) + { + player.SendChatMessage("~r~[FEHLER]~s~ Diese Waffe existiert nicht."); + return; + } + + target.GiveWeapon(wHash, ammo); + } } } From b996bf3b4d50f73c1141a4f5963beb1725698fd8 Mon Sep 17 00:00:00 2001 From: hydrant Date: Wed, 19 Sep 2018 15:50:05 +0200 Subject: [PATCH 8/9] Fixed /goto and /gethere --- Server/Commands/Admin.cs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index 1a16b7b8..6c88e92b 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -104,6 +104,8 @@ namespace reallife_gamemode.Server.Commands ChatService.PlayerNotFound(player); return; } + + player.Position = target.Position; } [Command("gotoxyz", "~m~Benutzung: ~s~/gotoxyz [X] [Y] [Z]")] @@ -118,6 +120,26 @@ namespace reallife_gamemode.Server.Commands player.Position = new Vector3(x, y, z); } + [Command("gethere", "~m~Benutzung: ~s~/goto [Name]")] + public void CmdAdminGethere(Client player, string name) + { + if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) + { + ChatService.NotAuthorized(player); + return; + } + + Client target = ClientService.GetClientByName(name); + + if (target == null) + { + ChatService.PlayerNotFound(player); + return; + } + + target.Position = player.Position; + } + [Command("ipl", "~m~Benutzung: ~s~/ipl [Load / Remove] [Name]")] public void CmdAdminIpl(Client player, string option, string name) { From d548a612ff84cffd8be11a7ce8e7889f015c19bc Mon Sep 17 00:00:00 2001 From: VegaZ Date: Wed, 19 Sep 2018 15:57:10 +0200 Subject: [PATCH 9/9] Add File-Overview comments, move out of place comments --- Client/Login/login.html | 7 ++++++- Client/Login/login.js | 8 +++++++- Client/Login/main.js | 7 ++++++- Client/Login/style.css | 8 +++++++- Client/index.js | 6 ++++++ Main.cs | 12 +++++++----- Model/DatabaseContext.cs | 15 +++++++-------- Server/Commands/Admin.cs | 12 ++++++------ Server/Entities/Character.cs | 16 ---------------- Server/Entities/User.cs | 6 ++++++ Server/Events/Connect.cs | 6 ++++++ Server/Events/Login.cs | 6 ++++++ Server/Events/Spawn.cs | 6 ++++++ Server/Extensions/ClientExtension.cs | 12 ++++++------ Server/Services/ChatService.cs | 12 ++++++------ Server/Services/ClientService.cs | 12 ++++++------ Server/Util/AdminLevel.cs | 12 +++++++----- 17 files changed, 101 insertions(+), 62 deletions(-) delete mode 100644 Server/Entities/Character.cs diff --git a/Client/Login/login.html b/Client/Login/login.html index ac486575..0bfe5b52 100644 --- a/Client/Login/login.html +++ b/Client/Login/login.html @@ -1,4 +1,9 @@ - + + diff --git a/Client/Login/login.js b/Client/Login/login.js index 80ec311d..2e07b8fa 100644 --- a/Client/Login/login.js +++ b/Client/Login/login.js @@ -1,4 +1,10 @@ -$('#loginBtn').click(() => { +/** + * @overview Life of German Reallife - Login Login login.js + * @author VegaZ + * @copyright (c) 2008 - 2018 Life of German + */ + +$('#loginBtn').click(() => { $('.alert').remove(); //Remove any alerts when we attempt to login/register mp.trigger('loginInformationToServer', $('#usernameInputLogin').val(), $('#passwordInputLogin').val()); }); diff --git a/Client/Login/main.js b/Client/Login/main.js index 53e3b780..23f69481 100644 --- a/Client/Login/main.js +++ b/Client/Login/main.js @@ -1,4 +1,9 @@ -var loginBrowser = mp.browsers.new('package://Login/login.html'); +/** + * @overview Life of German Reallife - Login Main main.js + * @author VegaZ + * @copyright (c) 2008 - 2018 Life of German + */ +var loginBrowser = mp.browsers.new('package://Login/login.html'); mp.gui.cursor.show(true, true); mp.events.add('loginInformationToServer', (username, password) => { diff --git a/Client/Login/style.css b/Client/Login/style.css index 2916f236..2405799c 100644 --- a/Client/Login/style.css +++ b/Client/Login/style.css @@ -1,4 +1,10 @@ -.login-page { +/** + * @overview Life of German Reallife - Login CSS style.css + * @author Orangebox + * @copyright (c) 2008 - 2018 Life of German + */ + +.login-page { width: 360px; margin: auto; } diff --git a/Client/index.js b/Client/index.js index e7a9b22d..51689880 100644 --- a/Client/index.js +++ b/Client/index.js @@ -1 +1,7 @@ +/** + * @overview Life of German Reallife - Login index.js + * @author VegaZ + * @copyright (c) 2008 - 2018 Life of German + */ + require('./Login/main.js'); \ No newline at end of file diff --git a/Main.cs b/Main.cs index ab154131..f9e29611 100644 --- a/Main.cs +++ b/Main.cs @@ -1,15 +1,17 @@ using System; using GTANetworkAPI; +/** +* @overview Life of German Reallife - Main Class (Main.cs) +* @author VegaZ, hydrant +* @copyright (c) 2008 - 2018 Life of German +*/ + namespace reallife_gamemode { public class Main : Script { - /** - * @overview Life of German Reallife - Main Class (Main.cs) - * @author VegaZ, hydrant - * @copyright (c) 2008 - 2018 Life of German - */ + [ServerEvent(Event.ResourceStart)] public void OnResourceStart() diff --git a/Model/DatabaseContext.cs b/Model/DatabaseContext.cs index 07cc415e..296b503a 100644 --- a/Model/DatabaseContext.cs +++ b/Model/DatabaseContext.cs @@ -1,15 +1,15 @@ -/** - * @overview Life of German Reallife - DatabaseContext.cs - * @author VegaZ - * @copyright (c) 2008 - 2018 Life of German - */ - -using System; +using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata; +/** + * @overview Life of German Reallife - DatabaseContext.cs + * @author VegaZ + * @copyright (c) 2008 - 2018 Life of German + */ + namespace reallife_gamemode.Model { public partial class DatabaseContext : DbContext @@ -35,6 +35,5 @@ namespace reallife_gamemode.Model } public DbSet Users { get; set; } - public DbSet Characters { get; set; } } } diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index 1a16b7b8..fcf8c437 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -6,16 +6,16 @@ using reallife_gamemode.Server.Extensions; using reallife_gamemode.Server.Services; using reallife_gamemode.Server.Util; +/** +* @overview Life of German Reallife - Admin Commands (Admin.cs) +* @author VegaZ, hydrant +* @copyright (c) 2008 - 2018 Life of German +*/ + namespace reallife_gamemode.Server.Commands { public class Admin : Script { - /** - * @overview Life of German Reallife - Admin Commands (Admin.cs) - * @author VegaZ, hydrant - * @copyright (c) 2008 - 2018 Life of German - */ - [Command("o", "~m~Benutzung: ~s~/o [Nachricht]", GreedyArg = true)] public void CmdAdminO(Client player, string message) { diff --git a/Server/Entities/Character.cs b/Server/Entities/Character.cs deleted file mode 100644 index f5dd13f3..00000000 --- a/Server/Entities/Character.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Text; - -namespace reallife_gamemode.Server.Entities -{ - public class Character - { - [Key] - public int Id { get; set; } - public int UserId { get; set; } - public string Name { get; set; } - public byte Gender { get; set; } - } -} diff --git a/Server/Entities/User.cs b/Server/Entities/User.cs index 133ab2d1..1f0a934d 100644 --- a/Server/Entities/User.cs +++ b/Server/Entities/User.cs @@ -5,6 +5,12 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Text; +/** +* @overview Life of German Reallife - Entities User (User.cs) +* @author VegaZ, hydrant +* @copyright (c) 2008 - 2018 Life of German +*/ + namespace reallife_gamemode.Server.Entities { public class User diff --git a/Server/Events/Connect.cs b/Server/Events/Connect.cs index b1b581f1..caa7ea4b 100644 --- a/Server/Events/Connect.cs +++ b/Server/Events/Connect.cs @@ -7,6 +7,12 @@ using Microsoft.EntityFrameworkCore; using reallife_gamemode.Model; using reallife_gamemode.Server.Entities; +/** +* @overview Life of German Reallife - Event Login (Login.cs) +* @author VegaZ +* @copyright (c) 2008 - 2018 Life of German +*/ + namespace reallife_gamemode.Server.Events { class Connect : Script diff --git a/Server/Events/Login.cs b/Server/Events/Login.cs index 5072e393..04ebb9b0 100644 --- a/Server/Events/Login.cs +++ b/Server/Events/Login.cs @@ -3,6 +3,12 @@ using System.Collections.Generic; using System.Text; using GTANetworkAPI; +/** +* @overview Life of German Reallife - Event Login (Login.cs) +* @author VegaZ +* @copyright (c) 2008 - 2018 Life of German +*/ + namespace reallife_gamemode.Server.Events { public class Login : Script diff --git a/Server/Events/Spawn.cs b/Server/Events/Spawn.cs index 1dfb2817..a11c5da6 100644 --- a/Server/Events/Spawn.cs +++ b/Server/Events/Spawn.cs @@ -6,6 +6,12 @@ using GTANetworkAPI; using GTANetworkMethods; using reallife_gamemode.Model; +/** +* @overview Life of German Reallife - Event Spawn (Spawn.cs) +* @author VegaZ +* @copyright (c) 2008 - 2018 Life of German +*/ + namespace reallife_gamemode.Server.Event { public class Spawn : Script diff --git a/Server/Extensions/ClientExtension.cs b/Server/Extensions/ClientExtension.cs index e2ff0861..38aed1ac 100644 --- a/Server/Extensions/ClientExtension.cs +++ b/Server/Extensions/ClientExtension.cs @@ -6,16 +6,16 @@ using System.Collections.Generic; using System.Linq; using System.Text; +/** +* @overview Life of German Reallife - Client Extension (ClientExtension.cs) +* @author VegaZ, hydrant +* @copyright (c) 2008 - 2018 Life of German +*/ + namespace reallife_gamemode.Server.Extensions { public static class ClientExtension { - /** - * @overview Life of German Reallife - Client Extension (ClientExtension.cs) - * @author VegaZ, hydrant - * @copyright (c) 2008 - 2018 Life of German - */ - public static User GetUser(this Client client) { using(DatabaseContext dbContext = new DatabaseContext()) diff --git a/Server/Services/ChatService.cs b/Server/Services/ChatService.cs index ad81edef..0ccdfe1f 100644 --- a/Server/Services/ChatService.cs +++ b/Server/Services/ChatService.cs @@ -3,16 +3,16 @@ using System; using System.Collections.Generic; using System.Text; +/** +* @overview Life of German Reallife - Chat Service (ChatService.cs) +* @author hydrant +* @copyright (c) 2008 - 2018 Life of German +*/ + namespace reallife_gamemode.Server.Services { class ChatService { - /** - * @overview Life of German Reallife - Chat Service (ChatService.cs) - * @author hydrant - * @copyright (c) 2008 - 2018 Life of German - */ - public static void NotAuthorized(Client player) { player.SendChatMessage("~r~[FEHLER]~s~ Du kannst diesen Befehl nicht ausführen."); diff --git a/Server/Services/ClientService.cs b/Server/Services/ClientService.cs index d60500f6..6959b3fa 100644 --- a/Server/Services/ClientService.cs +++ b/Server/Services/ClientService.cs @@ -3,16 +3,16 @@ using System; using System.Collections.Generic; using System.Text; +/** +* @overview Life of German Reallife - Client Service (ClientService.cs) +* @author hydrant +* @copyright (c) 2008 - 2018 Life of German +*/ + namespace reallife_gamemode.Server.Services { class ClientService { - /** - * @overview Life of German Reallife - Client Service (ClientService.cs) - * @author hydrant - * @copyright (c) 2008 - 2018 Life of German - */ - public static Client GetClientByName(string name) { /* Funktionsaufbau: Prüft erst, ob ein Spieler mit exakt diesem Namen online ist diff --git a/Server/Util/AdminLevel.cs b/Server/Util/AdminLevel.cs index 8a691fe6..8e201b63 100644 --- a/Server/Util/AdminLevel.cs +++ b/Server/Util/AdminLevel.cs @@ -2,15 +2,17 @@ using System.Collections.Generic; using System.Text; +/** +* @overview Life of German Reallife - Admin Levels (AdminLevel.cs) +* @author VegaZ, hydrant +* @copyright (c) 2008 - 2018 Life of German +*/ + namespace reallife_gamemode.Server.Util { public enum AdminLevel : int { - /** - * @overview Life of German Reallife - Admin Levels (AdminLevel.cs) - * @author VegaZ, hydrant - * @copyright (c) 2008 - 2018 Life of German - */ + PLAYER, SUPPORTER,