diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index 30c34f08..08e3be11 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -166,7 +166,7 @@ namespace reallife_gamemode.Server.Commands Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -187,6 +187,7 @@ namespace reallife_gamemode.Server.Commands player.SendChatMessage("Position: X Y Z: " + player.Position); } + [Command("goto", "~m~Benutzung: ~s~/goto [Ort]")] public void CmdAdminGotoPoint(Client player, string location) { @@ -225,7 +226,7 @@ namespace reallife_gamemode.Server.Commands Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -279,7 +280,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -308,7 +309,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -329,7 +330,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -350,7 +351,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -392,7 +393,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -417,7 +418,7 @@ namespace reallife_gamemode.Server.Commands return; } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -439,6 +440,7 @@ namespace reallife_gamemode.Server.Commands foreach (var managedClient in peopleInRange) { + if (!managedClient.IsLoggedIn()) return; managedClient.Health = hp; managedClient.SendChatMessage("~b~Admin " + player.Name + " hat im Radius von " + radius + " die HP auf " + hp + " gesetzt."); } @@ -457,6 +459,7 @@ namespace reallife_gamemode.Server.Commands foreach (var managedClient in peopleInRange) { + if (!managedClient.IsLoggedIn()) return; managedClient.Armor = Armor; managedClient.SendChatMessage("~b~Admin " + player.Name + " hat im Radius von " + radius + " die Rüstung auf " + Armor + " gesetzt."); } @@ -508,6 +511,7 @@ namespace reallife_gamemode.Server.Commands foreach (var managedClient in peopleInRange) { + if (!managedClient.IsLoggedIn()) return; managedClient.GiveWeapon(wHash, munition); managedClient.SendChatMessage("~b~Admin " + player.Name + " hat im Radius von " + radius + " eine/n " + weapon + " mit " + munition + " Munition vergeben."); } @@ -543,7 +547,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -558,7 +562,7 @@ namespace reallife_gamemode.Server.Commands return; } - User u = target.GetUser(dbContext); + Entities.User u = target.GetUser(dbContext); if (faction != 0) { @@ -594,7 +598,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -609,7 +613,7 @@ namespace reallife_gamemode.Server.Commands return; } - User u = target.GetUser(dbContext); + Entities.User u = target.GetUser(dbContext); u.FactionId = f.Id; u.FactionRankId = dbContext.FactionRanks. @@ -635,7 +639,7 @@ namespace reallife_gamemode.Server.Commands Client target = ClientService.GetClientByName(user); - if(target == null) + if(target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(admin); return; @@ -728,7 +732,7 @@ namespace reallife_gamemode.Server.Commands return; } - User user; + Entities.User user; using (var dbContext = new DatabaseContext()) { @@ -809,12 +813,10 @@ namespace reallife_gamemode.Server.Commands }; string json = JsonConvert.SerializeObject(helper, Formatting.None); - Console.WriteLine(json); player.TriggerEvent("manageFactionRanks", json); } } - //TEST COMMAND [Command("own")] public void CmdAdminOwn(Client player) @@ -863,17 +865,9 @@ namespace reallife_gamemode.Server.Commands return; } - List playerlist = NAPI.Pools.GetAllPlayers(); - foreach (Client currentPlayer in playerlist) - { - if (currentPlayer.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? false) - { - NAPI.Chat.SendChatMessageToPlayer(currentPlayer, "~r~Admin " + NAPI.Player.GetPlayerName(player) + "~w~: " + message); - } - } + ChatService.BroadcastAdmin("~r~Admin " + player.Name + "~w~: " + message, AdminLevel.ADMIN); } - [Command("team", "~m~Benutzung: ~s~/team")] public void CmdAdminTeam(Client player) { @@ -945,7 +939,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(targetname); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -964,7 +958,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(targetname); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -983,7 +977,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(targetname); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -1127,7 +1121,7 @@ namespace reallife_gamemode.Server.Commands return; } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -1163,7 +1157,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(targetname); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; diff --git a/Server/Commands/Faction.cs b/Server/Commands/Faction.cs index 6e7d6dd4..bb86d59a 100644 --- a/Server/Commands/Faction.cs +++ b/Server/Commands/Faction.cs @@ -64,5 +64,36 @@ namespace reallife_gamemode.Server.Commands ChatService.BroadcastFaction(broadcastMessage, context.Factions.ToList().FindAll(c => c.StateOwned)); } } + + [Command("invite", "~m~Benutzung: ~s~/invite [Name]")] + public void CmdFactionInvite(Client player, string name) + { + if(player.GetUser()?.FactionId == null || player.GetUser().FactionLeader == false) + { + ChatService.NotAuthorized(player); + return; + } + + Client target = ClientService.GetClientByName(name); + if (target == null || !target.IsLoggedIn()) + { + ChatService.PlayerNotFound(player); + return; + } + + if(target.GetUser()?.FactionId != null) + { + player.SendChatMessage("~r~[FEHLER]~s~ Dieser Spieler ist schon in einer Fraktion."); + return; + } + + target.SetData("accept_invite", player.Handle); + + player.SendChatMessage("!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Fraktion gesendet."); + target.SendChatMessage("!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Fraktion \"" + player.GetUser().GetFaction().Name + "\" erhalten."); + target.SendChatMessage("!{02FCFF}Benutze '/accept invite', um die Einladung anzunehmen"); + + return; + } } } diff --git a/Server/Commands/User.cs b/Server/Commands/User.cs new file mode 100644 index 00000000..9ca97415 --- /dev/null +++ b/Server/Commands/User.cs @@ -0,0 +1,52 @@ +using GTANetworkAPI; +using reallife_gamemode.Model; +using reallife_gamemode.Server.Extensions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace reallife_gamemode.Server.Commands +{ + class User : Script + { + [Command("accept", "~m~Benutzung: ~s~/accept [invite]")] + public void CmdUserAccept(Client player, string option) + { + if (!player.IsLoggedIn()) return; + + option = option.ToLower(); + + switch(option) + { + case "invite": + { + if(!player.HasData("accept_invite")) + { + player.SendChatMessage("~r~[FEHLER]~s~ Du hast keine Einladung in eine Fraktion erhalten."); + return; + } + + using(var dbContext = new DatabaseContext()) + { + Client leader = NAPI.Player.GetPlayerFromHandle((NetHandle)player.GetData("accept_invite")); + Entities.User u = leader.GetUser(dbContext); + Entities.User own = player.GetUser(dbContext); + + own.FactionId = u.FactionId; + own.FactionLeader = false; + own.FactionRankId = dbContext.FactionRanks. + OrderBy(x => x.Order) + .FirstOrDefault(r => r.FactionId == own.FactionId)?.Id ?? null; + + leader.SendChatMessage("!{02FCFF}" + player.Name + " hat die Einladung angenommen."); + player.SendChatMessage("!{02FCFF}Du hast die Einladung angenommen."); + + dbContext.SaveChanges(); + } + break; + } + } + } + } +} diff --git a/Server/Events/Faction.cs b/Server/Events/Faction.cs index 50eef648..00a01465 100644 --- a/Server/Events/Faction.cs +++ b/Server/Events/Faction.cs @@ -15,7 +15,6 @@ namespace reallife_gamemode.Server.Events [RemoteEvent("OnFactionRanksEdit")] public void OnFactionRanksEdit(Client player, string jsonData) { - Console.WriteLine(jsonData); FactionRankHelper helper = JsonConvert.DeserializeObject(jsonData); using(var context = new DatabaseContext()) { @@ -38,7 +37,6 @@ namespace reallife_gamemode.Server.Events Rank newRank = ranks[i]; if(newRank.Id == 0) { - Console.WriteLine("Neuer Rang: " + newRank.Name); context.FactionRanks.Add(new FactionRank { RankName = newRank.Name, @@ -49,7 +47,6 @@ namespace reallife_gamemode.Server.Events else { FactionRank factionRank = factionRanks.Find(r => r.Id == newRank.Id); - Console.WriteLine($"Edited Rang: {factionRank.RankName} -> {newRank.Name}"); factionRank.RankName = newRank.Name; factionRank.Order = length - i; found.Add(factionRank.Id); @@ -60,7 +57,6 @@ namespace reallife_gamemode.Server.Events { if(!found.Contains(factionRanks[i].Id)) { - Console.WriteLine("removed: " + factionRanks[i].RankName); context.FactionRanks.Remove(factionRanks[i]); } }