diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index d1734a27..48c1e6c8 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) { @@ -243,7 +244,7 @@ namespace reallife_gamemode.Server.Commands Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -297,7 +298,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -326,7 +327,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -347,7 +348,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -368,7 +369,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -410,7 +411,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -435,7 +436,7 @@ namespace reallife_gamemode.Server.Commands return; } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -457,6 +458,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."); } @@ -475,6 +477,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."); } @@ -526,6 +529,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."); } @@ -561,7 +565,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -576,7 +580,7 @@ namespace reallife_gamemode.Server.Commands return; } - User u = target.GetUser(dbContext); + Entities.User u = target.GetUser(dbContext); if (faction != 0) { @@ -612,7 +616,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -627,7 +631,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. @@ -653,7 +657,7 @@ namespace reallife_gamemode.Server.Commands Client target = ClientService.GetClientByName(user); - if(target == null) + if(target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(admin); return; @@ -746,7 +750,7 @@ namespace reallife_gamemode.Server.Commands return; } - User user; + Entities.User user; using (var dbContext = new DatabaseContext()) { @@ -827,12 +831,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) @@ -881,17 +883,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) { @@ -963,7 +957,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(targetname); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -982,7 +976,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(targetname); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -1001,7 +995,7 @@ namespace reallife_gamemode.Server.Commands } Client target = ClientService.GetClientByName(targetname); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -1145,7 +1139,7 @@ namespace reallife_gamemode.Server.Commands return; } Client target = ClientService.GetClientByName(name); - if (target == null) + if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; @@ -1181,7 +1175,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]); } }