using GTANetworkAPI; using Newtonsoft.Json; using reallife_gamemode.Model; using reallife_gamemode.Server.Entities; using reallife_gamemode.Server.Extensions; using reallife_gamemode.Server.Services; using reallife_gamemode.Server.Util; using System; using System.Collections.Generic; using System.Linq; using System.Text; /** * @overview Life of German Reallife - Faction Commands (Faction.cs) * @author VegaZ, hydrant * @copyright (c) 2008 - 2018 Life of German */ namespace reallife_gamemode.Server.Commands { class Faction : Script { #region Chat Commands [Command("f", "~m~Benutzung: ~s~/f [Nachricht]", GreedyArg = true)] public void CmdFactionF(Client player, string message) { Entities.Faction f = player.GetUser()?.GetFaction(); if (f == null || f.StateOwned) { ChatService.NotAuthorized(player); return; } string broadcastMessage = "!{02FCFF}** " + player.GetUser().GetFactionRank().RankName + " " + player.Name + ": " + message + " )) **"; ChatService.BroadcastFaction(broadcastMessage, f); } [Command("r", "~m~Benutzung: ~s~/r [Nachricht]", GreedyArg = true)] public void CmdFactionR(Client player, string message) { Entities.Faction f = player.GetUser()?.GetFaction(); if (f == null || !f.StateOwned) { ChatService.NotAuthorized(player); return; } string broadcastMessage = "!{33AA33}** " + player.GetUser().GetFactionRank().RankName + " " + player.Name + ": " + message + ", over **"; ChatService.BroadcastFaction(broadcastMessage, f); } [Command("d", "~m~Benutzung: ~s~/d [Nachricht]", GreedyArg = true)] public void CmdFactionD(Client player, string message) { Entities.Faction f = player.GetUser()?.GetFaction(); if (f == null || !f.StateOwned) { ChatService.NotAuthorized(player); return; } string broadcastMessage = "!{CC3333}** " + player.GetUser().GetFactionRank().RankName + " " + player.Name + ": " + message + ", over **"; using (var context = new DatabaseContext()) { ChatService.BroadcastFaction(broadcastMessage, context.Factions.ToList().FindAll(c => c.StateOwned)); } } #endregion #region Leader Commands [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; } [Command("giverank", "~m~Benutzung: ~s~/giverank [Name] [Rang]", GreedyArg = true)] public void CmdFactionGiverank(Client player, string name, string rank) { 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 != player.GetUser()?.FactionId) { player.SendChatMessage("~r~[FEHLER]~s~ Dieser Spieler ist nicht in deiner Fraktion."); return; } using (var dbContext = new DatabaseContext()) { FactionRank fr = dbContext.FactionRanks.FirstOrDefault(r => r.RankName == rank && r.FactionId == player.GetUser(dbContext).FactionId); if (fr == null) { player.SendChatMessage("~r~[FEHLER]~s~ Dieser Rang existiert nicht."); return; } target.GetUser(dbContext).FactionRankId = fr.Id; player.SendChatMessage("!{02FCFF}Du hast " + target.Name + " den Rang '" + fr.RankName + "' gegeben."); target.SendChatMessage("!{02FCFF}Du hast von " + player.Name + " den Rang '" + fr.RankName + "' erhalten."); dbContext.SaveChanges(); } } [Command("uninvite", "~m~Benutzung: ~s~/uninvite [Name]")] public void CmdFactionUninvite(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 != player.GetUser()?.FactionId) { player.SendChatMessage("~r~[FEHLER]~s~ Dieser Spieler ist nicht in deiner Fraktion."); return; } if (player.Handle == target.Handle) { player.SendChatMessage("~r~[FEHLER]~s~ Du kannst dich nicht selber uninviten."); return; } if (target.GetUser()?.FactionLeader ?? false) { player.SendChatMessage("~r~[FEHLER]~s~ Du kannst keinen Leader uninviten."); return; } using (var dbContext = new DatabaseContext()) { target.GetUser(dbContext).FactionRankId = null; target.GetUser(dbContext).FactionId = null; player.SendChatMessage("!{02FCFF}Du hast " + target.Name + " aus der Fraktion geworfen."); target.SendChatMessage("!{02FCFF}Du wurdest von " + player.Name + " aus der Fraktion geworfen."); dbContext.SaveChanges(); } } [Command("lc", "~m~Benutzung: ~s~/lc [Nachricht]", GreedyArg = true)] public void CmdFactionLc(Client player, string message) { if (player.GetUser()?.FactionId == null || player.GetUser().FactionLeader == false) { ChatService.NotAuthorized(player); return; } string broadcastMsg = "~y~[" + player.GetUser().GetFaction().Name + "] " + player.Name + ": " + message; NAPI.Pools.GetAllPlayers().ForEach(p => { if (p.GetUser()?.FactionLeader ?? false) p.SendChatMessage(broadcastMsg); }); } #endregion #region Sanitäter Commands [Command("revive", "~m~Benutzung: ~s~/revive")] public void CmdFactionMedicRevive(Client player) { if (player.GetUser()?.FactionId == null || player.GetUser().FactionId != 2) { ChatService.NotAuthorized(player); return; } if (player.IsInVehicle) { player.SendChatMessage("~r~[FEHLER]~s~ Du kannst in einem Auto nicht wiederbeleben!"); return; } var nearPlayers = NAPI.Player.GetPlayersInRadiusOfPlayer(2, player); var deadPlayer = nearPlayers.Where(i => i.GetData("isDead") == true).FirstOrDefault(); if (player == deadPlayer) { player.SendChatMessage("~r~[FEHLER]~s~ Du kannst dich nicht selbst wiederbeleben!"); return; } deadPlayer.TriggerEvent("onPlayerRevived"); deadPlayer.SendNotification("Du wurdest von ~r~" + player.Name + "~s~ wiederbelebt."); deadPlayer.SetData("isDead", false); NAPI.Player.SpawnPlayer(deadPlayer, deadPlayer.Position); deadPlayer.Health = 50; } #endregion #region Global Fraktions Commands [Command("duty", "~m~Benutzung: ~s~/duty")] public void CmdFactionDuty(Client player) { if (player.GetUser()?.FactionId == null) { ChatService.NotAuthorized(player); return; } if(player.GetData("duty") != true) { player.SetData("duty", true); player.SendNotification("Du bist nun ~g~im Dienst."); if(player.GetUser().FactionId == 2) { NAPI.ClientEvent.TriggerClientEventForAll("updateDutyMedics", true); } } else { player.SetData("duty", false); player.SendNotification("Du bist nun ~r~außer Dienst."); NAPI.ClientEvent.TriggerClientEventForAll("updateDutyMedics", false); } } #endregion } }