public override void ProcessServer()
        {
            if (ConquestScript.Instance.DataLock.TryAcquireExclusive())
            {
                string Title   = "Conquest Faction Leaderboard";
                string Prefix  = "Points last updated " + (MyAPIGateway.Session.GameDateTime - ConquestScript.Instance.Data.LastRun).Minutes.ToString() + " minutes ago.";
                string Content = " Tag   Faction Name  Points  Base type count";


                foreach (ConquestFaction Faction in ConquestScript.Instance.Data.ConquestFactions)
                {
                    Content += string.Format("\n {0}   {1}  {2}     ", Faction.FactionTag, Faction.FactionName, Faction.VictoryPoints.ToString());
                    if (ConquestScript.Instance.Config.PlanetPoints > 0)
                    {
                        Content += string.Format("P:{0} ", Faction.PlanetBases.ToString());
                    }
                    if (ConquestScript.Instance.Config.MoonPoints > 0)
                    {
                        Content += string.Format("M:{0} ", Faction.MoonBases.ToString());
                    }
                    if (ConquestScript.Instance.Config.AsteroidPoints > 0)
                    {
                        Content += string.Format("A:{0} ", Faction.AsteroidBases.ToString());
                    }
                }
                ConquestScript.Instance.DataLock.ReleaseExclusive();
                MessageClientDialogMessage.SendMessage(SenderSteamId, Title, Prefix, Content);
            }
            else
            {
                MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Base", "Server busy, try again later.");
            }
        }
        public override void ProcessServer()
        {
            if (ConquestScript.Instance.DataLock.TryAcquireExclusive())
            {
                ConqDataStruct TempData = ConquestScript.Instance.Data;
                ConquestScript.Instance.DataLock.ReleaseExclusive();
                MyAPIGateway.Parallel.Start(delegate()
                {
                    try
                    {
                        bool IsValid   = true;
                        string Reasons = "";
                        if (TempData.ConquestExclusions.Count > 0)
                        {
                            foreach (ConquestExclusionZone Zone in TempData.ConquestExclusions)
                            {
                                if ((Vector3D.Distance(TempPosition, Zone.Position) < Zone.Radius))
                                {
                                    Reasons += string.Format("\nwithin exclusion zone: {0}", Zone.DisplayName);
                                    IsValid  = false;
                                }
                            }
                        }
                        bool boAR = false;
                        if ((ConquestScript.Instance.Config.AreaReq) && (TempData.ConquestAreas.Count > 0))
                        {
                            foreach (ConquestAreaZone Zone in TempData.ConquestAreas)
                            {
                                if ((Vector3D.Distance(TempPosition, Zone.Position) < Zone.Radius))
                                {
                                    boAR = true;
                                    break;
                                }
                            }

                            if (!boAR)
                            {
                                Reasons += "\n is not within a Conquest Area";
                            }
                        }
                        if (TempData.ConquestBases.Count > 0)
                        {
                            foreach (ConquestBase ConqBase in TempData.ConquestBases)
                            {
                                if (Vector3D.Distance(TempPosition, ConqBase.Position) < ConqBase.Radius)
                                {
                                    Reasons += string.Format("\nwithin broadcast range of Conquest Base: {0}", ConqBase.DisplayName);
                                    IsValid  = false;
                                }
                            }
                        }
                        if (IsValid)
                        {
                            MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Base", "This is a valid position for a conquest base");
                        }
                        else
                        {
                            MessageClientDialogMessage.SendMessage(SenderSteamId, "Conquest Base", "This is NOT a valid position for a conquest base", Reasons);
                        }
                    }
                    catch (Exception ex)
                    {
                        ConquestScript.Instance.ServerLogger.WriteException(ex);
                        MyAPIGateway.Utilities.ShowMessage("Error", "An exception has been logged in the file:" + ConquestScript.Instance.ServerLogger.LogFileName);
                    }
                });
            }
            else
            {
                MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Base", "Server busy, try again later.");
            }
        }
        public override void ProcessServer()
        {
            var player = MyAPIGateway.Players.FindPlayerBySteamId(SenderSteamId);

            // Only Admin can change config.
            if (!player.IsAdmin())
            {
                ShowConfig();
                return;
            }


            // These will match with names defined in the RegEx pattern <ConquestScript.Conquest ConfigPattern>
            switch (ConfigName)
            {
                #region planetpoints

            case "planetpoints":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Points for planet bases: {0}", ConquestScript.Instance.Config.PlanetPoints.ToString());
                }
                else
                {
                    int intTest;
                    if (int.TryParse(Value, out intTest))
                    {
                        ConquestScript.Instance.Config.PlanetPoints = intTest;
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Points for planet bases updated to: {0}", ConquestScript.Instance.Config.PlanetPoints.ToString());
                        return;
                    }
                }
                break;

                #endregion

                #region moonpoints

            case "moonpoints":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Points for moon bases: {0}", ConquestScript.Instance.Config.MoonPoints.ToString());
                }
                else
                {
                    int intTest;
                    if (int.TryParse(Value, out intTest))
                    {
                        ConquestScript.Instance.Config.MoonPoints = intTest;
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Points for moon bases updated to: {0}", ConquestScript.Instance.Config.MoonPoints.ToString());
                        return;
                    }
                }
                break;

                #endregion

                #region asteroidpoints

            case "asteroidpoints":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Points for asteroid bases: {0}", ConquestScript.Instance.Config.AsteroidPoints.ToString());
                }
                else
                {
                    int intTest;
                    if (int.TryParse(Value, out intTest))
                    {
                        ConquestScript.Instance.Config.AsteroidPoints = intTest;
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Points for asteroid bases updated to: {0}", ConquestScript.Instance.Config.AsteroidPoints.ToString());
                        return;
                    }
                }
                break;

                #endregion

                #region planetsize

            case "planetsize":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Planet size: {0} (if it is smaller then it is a moon)", ConquestScript.Instance.Config.PlanetSize.ToString());
                }
                else
                {
                    int intTest;
                    if (int.TryParse(Value, out intTest))
                    {
                        if ((intTest > 120000) || (intTest < 19000))
                        {
                            MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Planet size must be between 19000 and 120000");
                            return;
                        }
                        else
                        {
                            ConquestScript.Instance.Config.PlanetSize = intTest;
                            MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Planet size updated to: {0}", ConquestScript.Instance.Config.PlanetSize.ToString());
                            return;
                        }
                    }
                }
                break;

                #endregion

                #region beacondistance

            case "beacondistance":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Required beacon/antenna broadcast distance: {0}", ConquestScript.Instance.Config.BeaconDistance.ToString());
                }
                else
                {
                    int intTest;
                    if (int.TryParse(Value, out intTest))
                    {
                        if (intTest > 50000)
                        {
                            MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Maximum broadcast radius for beacons/antennas is 50000m");
                            return;
                        }
                        else
                        {
                            ConquestScript.Instance.Config.BeaconDistance = intTest;
                            MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Required beacon/antenna broadcast distance updated to: {0}", ConquestScript.Instance.Config.BeaconDistance.ToString());
                            return;
                        }
                    }
                }
                break;

                #endregion

                #region updatefrequency

            case "updatefrequency":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Conquest bases are checked and points are talled every {0} minutes.", ConquestScript.Instance.Config.UpdateFrequency.ToString());
                }
                else
                {
                    int intTest;
                    if (int.TryParse(Value, out intTest))
                    {
                        ConquestScript.Instance.Config.UpdateFrequency = intTest;
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Update frequency updated to: {0} minutes. Server restart required.", intTest.ToString());
                        return;
                    }
                }
                break;

                #endregion

                #region assemblerreq

            case "assemblerreq":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Assembler required: {0}", ConquestScript.Instance.Config.AssemblerReq ? "On" : "Off");
                }
                else
                {
                    bool?boolTest = GetBool(Value);
                    if (boolTest.HasValue)
                    {
                        ConquestScript.Instance.Config.AssemblerReq = boolTest.Value;
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Assembler required updated to: {0}", ConquestScript.Instance.Config.AssemblerReq ? "On" : "Off");
                        return;
                    }

                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Assembler required: {0}", ConquestScript.Instance.Config.AssemblerReq ? "On" : "Off");
                }
                break;

                #endregion

                #region refineryreq

            case "refineryreq":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Refinery required: {0}", ConquestScript.Instance.Config.RefineryReq ? "On" : "Off");
                }
                else
                {
                    bool?boolTest = GetBool(Value);
                    if (boolTest.HasValue)
                    {
                        ConquestScript.Instance.Config.RefineryReq = boolTest.Value;
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Refinery required updated to: {0}", ConquestScript.Instance.Config.RefineryReq ? "On" : "Off");
                        return;
                    }

                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Refinery required: {0}", ConquestScript.Instance.Config.RefineryReq ? "On" : "Off");
                }
                break;

                #endregion

                #region cargoreq

            case "cargoreq":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Cargo required: {0}", ConquestScript.Instance.Config.CargoReq ? "On" : "Off");
                }
                else
                {
                    bool?boolTest = GetBool(Value);
                    if (boolTest.HasValue)
                    {
                        ConquestScript.Instance.Config.CargoReq = boolTest.Value;
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Cargo required updated to: {0}", ConquestScript.Instance.Config.CargoReq ? "On" : "Off");
                        return;
                    }

                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Cargo required: {0}", ConquestScript.Instance.Config.CargoReq ? "On" : "Off");
                }
                break;

                #endregion

                #region staticreq

            case "staticreq":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Conquests bases are required to be static grids: {0}", ConquestScript.Instance.Config.StaticReq ? "On" : "Off");
                }
                else
                {
                    bool?boolTest = GetBool(Value);
                    if (boolTest.HasValue)
                    {
                        ConquestScript.Instance.Config.StaticReq = boolTest.Value;
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Static required updated to: {0}", ConquestScript.Instance.Config.StaticReq ? "On" : "Off");
                        return;
                    }

                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Conquests bases are required to be static grids: {0}", ConquestScript.Instance.Config.StaticReq ? "On" : "Off");
                }
                break;

                #endregion

                #region areareq

            case "areareq":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Conquests bases are required to be inside a designated conquest area: {0}", ConquestScript.Instance.Config.AreaReq ? "On" : "Off");
                }
                else
                {
                    bool?boolTest = GetBool(Value);
                    if (boolTest.HasValue)
                    {
                        ConquestScript.Instance.Config.AreaReq = boolTest.Value;
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Designated Conquest area required updated to: {0}", ConquestScript.Instance.Config.AreaReq ? "On" : "Off");
                        return;
                    }

                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Designated Conquests area required: {0}", ConquestScript.Instance.Config.AreaReq ? "On" : "Off");
                }
                break;

                #endregion

                #region lcds

            case "lcds":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "LCD updating is: {0}", ConquestScript.Instance.Config.EnableLcds ? "On" : "Off");
                }
                else
                {
                    bool?boolTest = GetBool(Value);
                    if (boolTest.HasValue)
                    {
                        var clearRefresh = ConquestScript.Instance.Config.EnableLcds && !boolTest.Value;
                        ConquestScript.Instance.Config.EnableLcds = boolTest.Value;
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "LCD updates changed to: {0}", ConquestScript.Instance.Config.EnableLcds ? "On" : "Off");
                        if (clearRefresh)
                        {
                            LcdManager.BlankLcds();
                        }
                        return;
                    }



                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "LCD updating is: {0}", ConquestScript.Instance.Config.EnableLcds ? "On" : "Off");
                }
                break;

                #endregion

                #region antenna

            case "antenna":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Antenna usage is: {0}", ConquestScript.Instance.Config.Antenna ? "On" : "Off");
                }
                else
                {
                    bool?boolTest = GetBool(Value);
                    if (boolTest.HasValue)
                    {
                        var clearRefresh = ConquestScript.Instance.Config.Antenna && !boolTest.Value;
                        ConquestScript.Instance.Config.Antenna = boolTest.Value;
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Antenna usage changed to: {0}", ConquestScript.Instance.Config.Antenna ? "On" : "Off");

                        return;
                    }
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Antenna usage is: {0}", ConquestScript.Instance.Config.Antenna ? "On" : "Off");
                }
                break;

                #endregion

                #region persistent

            case "persistent":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "persistence is: {0}", ConquestScript.Instance.Config.Persistent ? "On" : "Off");
                }
                else
                {
                    bool?boolTest = GetBool(Value);
                    if (boolTest.HasValue)
                    {
                        var clearRefresh = ConquestScript.Instance.Config.Persistent && !boolTest.Value;
                        ConquestScript.Instance.Config.Persistent = boolTest.Value;
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "persistence changed to: {0}", ConquestScript.Instance.Config.Persistent ? "On" : "Off");

                        return;
                    }
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "persistence iss: {0}", ConquestScript.Instance.Config.Persistent ? "On" : "Off");
                }
                break;

                #endregion

                #region upgrades

            case "upgrades":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "conquest upgrade modules are: {0}", ConquestScript.Instance.Config.Upgrades ? "On" : "Off");
                }
                else
                {
                    bool?boolTest = GetBool(Value);
                    if (boolTest.HasValue)
                    {
                        var clearRefresh = ConquestScript.Instance.Config.Upgrades && !boolTest.Value;
                        ConquestScript.Instance.Config.Upgrades = boolTest.Value;
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "conquest upgrade modules are now: {0}", ConquestScript.Instance.Config.Upgrades ? "On" : "Off");

                        return;
                    }
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "conquest upgrade modules are: {0}", ConquestScript.Instance.Config.Upgrades ? "On" : "Off");
                }
                break;

                #endregion

                #region Reward

            case "reward":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "conquest rewards are: {0}", ConquestScript.Instance.Config.Reward ? "On" : "Off");
                }
                else
                {
                    bool?boolTest = GetBool(Value);
                    if (boolTest.HasValue)
                    {
                        var clearRefresh = ConquestScript.Instance.Config.Reward && !boolTest.Value;
                        ConquestScript.Instance.Config.Reward = boolTest.Value;
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "conquest rewards are now: {0}", ConquestScript.Instance.Config.Reward ? "On" : "Off");

                        return;
                    }
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "conquest rewards are: {0}", ConquestScript.Instance.Config.Reward ? "On" : "Off");
                }
                break;

                #endregion

                #region MaxBonusTime

            case "maxbonustime":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Maximum Bonus Time is {0} minutes", ConquestScript.Instance.Config.MaxBonusTime.ToString());
                }
                else
                {
                    int intTest;
                    if (int.TryParse(Value, out intTest))
                    {
                        ConquestScript.Instance.Config.MaxBonusTime = intTest;
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Maximum Bonus Time updated to: {0} minutes", ConquestScript.Instance.Config.MaxBonusTime.ToString());
                        return;
                    }
                }
                break;

                #endregion

                #region maxbonusmod

            case "maxbonusmod":
                if (string.IsNullOrEmpty(Value))
                {
                    if (ConquestScript.Instance.Config.MaxBonusMod > 1)
                    {
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Maximum Bonus Modifier is {0} (Time modifier is enabled)", ConquestScript.Instance.Config.MaxBonusMod.ToString());
                    }
                    else
                    {
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Maximum Bonus Modifier is {0} (Time modifier is disabled)", ConquestScript.Instance.Config.MaxBonusMod.ToString());
                    }
                }
                else
                {
                    int intTest;
                    if (int.TryParse(Value, out intTest))
                    {
                        ConquestScript.Instance.Config.MaxBonusMod = intTest;
                        if (intTest > 1)
                        {
                            MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Maximum Bonus Modifier updated to: {0} (Time modifier is enabled)", ConquestScript.Instance.Config.MaxBonusMod.ToString());
                        }
                        else
                        {
                            MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "Maximum Bonus Modifier updated to: {0} (Time modifier is disabled)", ConquestScript.Instance.Config.MaxBonusMod.ToString());
                        }
                        return;
                    }
                }
                break;

                #endregion

                #region Debug

            case "debug":
                if (string.IsNullOrEmpty(Value))
                {
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "conquest debug is: {0}", ConquestScript.Instance.Config.Debug ? "On" : "Off");
                }
                else
                {
                    bool?boolTest = GetBool(Value);
                    if (boolTest.HasValue)
                    {
                        var clearRefresh = ConquestScript.Instance.Config.Debug && !boolTest.Value;
                        ConquestScript.Instance.Config.Debug = boolTest.Value;
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "conquest debug is now: {0}", ConquestScript.Instance.Config.Debug ? "On" : "Off");

                        return;
                    }
                    MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Config", "conquest debug is: {0}", ConquestScript.Instance.Config.Debug ? "On" : "Off");
                }
                break;

                #endregion

            default:
                // No Cases matched!
                ShowConfig();
                break;
            }
        }
        public override void ProcessServer()
        {
            if (ConquestScript.Instance.DataLock.TryAcquireExclusive())
            {
                ConqDataStruct TempData = ConquestScript.Instance.Data;
                ConquestScript.Instance.DataLock.ReleaseExclusive();
                MyAPIGateway.Parallel.Start(delegate()
                {
                    try
                    {
                        bool IsValid             = true;
                        string Reasons           = "";
                        IMyCubeGrid SelectedGrid = MyAPIGateway.Entities.GetEntityById(SelectedGridId) as IMyCubeGrid;
                        if (SelectedGrid == null)
                        {
                            MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Base", "Error: Could not retrieve IMyCubeGrid, are you looking at a block with a terminal?");
                            return;
                        }
                        if (TempData.ConquestExclusions.Count > 0)
                        {
                            foreach (ConquestExclusionZone Zone in TempData.ConquestExclusions)
                            {
                                if ((Vector3D.Distance(SelectedGrid.GetPosition(), Zone.Position) < Zone.Radius))
                                {
                                    Reasons += string.Format("\n {0} is within exclusion zone: {1}", SelectedGrid.DisplayName, Zone.DisplayName);
                                    IsValid  = false;
                                }
                            }
                        }
                        bool boAR = false;
                        if ((ConquestScript.Instance.Config.AreaReq) && (TempData.ConquestAreas.Count > 0))
                        {
                            foreach (ConquestAreaZone Zone in TempData.ConquestAreas)
                            {
                                if ((Vector3D.Distance(TempPosition, Zone.Position) < Zone.Radius))
                                {
                                    boAR = true;
                                    break;
                                }
                            }

                            if (!boAR)
                            {
                                Reasons += string.Format("\n {0} is not within a Conquest Area", SelectedGrid.DisplayName);
                            }
                        }
                        ConquestGrid ConqGrid = new ConquestGrid(SelectedGrid);
                        if (TempData.ConquestBases.Count > 0)
                        {
                            foreach (ConquestBase ConqBase in TempData.ConquestBases)
                            {
                                // If this isn't the same grid...
                                if (SelectedGrid.EntityId != ConqBase.EntityId)
                                {
                                    if (Vector3D.Distance(SelectedGrid.GetPosition(), ConqBase.Position) < ConqBase.Radius)
                                    {
                                        Reasons += string.Format("\n {0} is within broadcast range of Conquest Base: {1}", SelectedGrid.DisplayName, ConqBase.DisplayName);
                                        IsValid  = false;
                                    }
                                    if (Vector3D.Distance(ConqGrid.Position, ConqBase.Position) < ConqGrid.Radius)
                                    {
                                        Reasons += string.Format("\n Conquest Base {0} is within broadcast range", ConqBase.DisplayName);
                                        IsValid  = false;
                                    }
                                }
                            }
                        }
                        if (ConqGrid.IsValid && IsValid)
                        {
                            //MyAPIGateway.Utilities.ShowMessage("ConquestBase", SelectedBlock.CubeGrid.DisplayName + " Is a valid Conquest Base!");
                            if (ConquestScript.Instance.Config.Reward)
                            {
                                MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Base",
                                                                     string.Format(" {0} Is a valid Conquest Base broadcasting at {1}m for {2}% of possible reward.", SelectedGrid.DisplayName, ConqGrid.Radius, Math.Round(ConqGrid.Radius / 500)));
                            }
                            else
                            {
                                MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Base",
                                                                     string.Format(" {0} Is a valid Conquest Base.", SelectedGrid.DisplayName));
                            }
                        }
                        else
                        {
                            foreach (string reason in ConqGrid.Reasons)
                            {
                                Reasons += reason;
                            }
                            MessageClientDialogMessage.SendMessage(SenderSteamId, "Conquest Base", string.Format(" {0} Is NOT a valid Conquest Base", SelectedGrid.DisplayName), Reasons);
                        }
                    }
                    catch (Exception ex)
                    {
                        ConquestScript.Instance.ServerLogger.WriteException(ex);
                        MyAPIGateway.Utilities.ShowMessage("Error", "An exception has been logged in the file: " + ConquestScript.Instance.ServerLogger.LogFileName);
                    }
                });
            }
            else
            {
                MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Base", "Server busy, try again later.");
            }
        }
Beispiel #5
0
        public override void ProcessServer()
        {
            if (ConquestScript.Instance.DataLock.TryAcquireExclusive())
            {
                try
                {
                    var player = MyAPIGateway.Players.FindPlayerBySteamId(SenderSteamId);
                    if (player == null || !player.IsAdmin()) // hold on there, are we an admin first?
                    {
                        return;
                    }
                    switch (CommandType)
                    {
                    case AreaManage.Add:
                    {
                        if (string.IsNullOrWhiteSpace(ZoneName) || ZoneName == "*")
                        {
                            MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Area Add", "Invalid name supplied for the zone name.");
                            ConquestScript.Instance.DataLock.ReleaseExclusive();
                            return;
                        }

                        var checkZone = ConquestScript.Instance.Data.ConquestAreas.FirstOrDefault(m => m.DisplayName.Equals(ZoneName, StringComparison.InvariantCultureIgnoreCase));
                        if (checkZone != null)
                        {
                            MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Area Add", "A conquest Area zone of name '{0}' already exists.", checkZone.DisplayName);
                            ConquestScript.Instance.DataLock.ReleaseExclusive();
                            return;
                        }

                        ConquestAreaZone NewZone = new ConquestAreaZone();
                        NewZone.DisplayName = ZoneName;
                        NewZone.Position    = new Vector3D(X, Y, Z);
                        NewZone.Radius      = Size;
                        ConquestScript.Instance.Data.ConquestAreas.Add(NewZone);
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Area Add", "A new conquest Area zone called '{0}' has been created.", ZoneName);
                    }
                    break;

                    case AreaManage.Remove:
                    {
                        var zone = ConquestScript.Instance.Data.ConquestAreas.FirstOrDefault(m => m.DisplayName.Equals(ZoneName, StringComparison.InvariantCultureIgnoreCase));
                        if (zone == null)
                        {
                            var zones = ConquestScript.Instance.Data.ConquestAreas.Where(m => m.DisplayName.IndexOf(ZoneName, StringComparison.InvariantCultureIgnoreCase) >= 0).ToArray();
                            if (zones.Length == 0)
                            {
                                MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Area Remove", "The specified zone name could not be found.");
                                ConquestScript.Instance.DataLock.ReleaseExclusive();
                                return;
                            }
                            if (zones.Length > 1)
                            {
                                var str = new StringBuilder();
                                str.Append("The specified zone name could not be found.\r\n    Which did you mean?\r\n");
                                foreach (var m in zones)
                                {
                                    str.AppendLine(m.DisplayName);
                                }
                                MessageClientDialogMessage.SendMessage(SenderSteamId, "Conquest Area Remove", " ", str.ToString());
                                ConquestScript.Instance.DataLock.ReleaseExclusive();
                                return;
                            }
                            zone = zones[0];
                        }

                        ConquestScript.Instance.Data.ConquestAreas.Remove(zone);
                        MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Area Remove", "The zone '{0}' has been removed.", zone.DisplayName);
                    }
                    break;

                    case AreaManage.List:
                    {
                        var str = new StringBuilder();

                        if (ConquestScript.Instance.Data.ConquestAreas.Count > 0)
                        {
                            foreach (var zone in ConquestScript.Instance.Data.ConquestAreas)
                            {
                                str.AppendFormat("Zone: {0}\r\n", zone.DisplayName);
                                str.AppendFormat("  Center Position=X:{0:N} | Y:{1:N} | Z:{2:N} Radius={3:N}m\r\n\r\n", zone.Position.X.ToString(), zone.Position.Y.ToString(), zone.Position.Z.ToString(), zone.Radius.ToString());
                            }
                            MessageClientDialogMessage.SendMessage(SenderSteamId, "Conquest Area Zone List", " ", str.ToString());
                        }
                        else
                        {
                            MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Area List", "List is currently empty.");
                        }
                    }
                    break;
                    }
                    ConquestScript.Instance.DataLock.ReleaseExclusive();
                }
                catch (Exception ex)
                {
                    ConquestScript.Instance.ServerLogger.WriteException(ex);
                    MyAPIGateway.Utilities.ShowMessage("Error", "An exception has been logged in the file:" + ConquestScript.Instance.ServerLogger.LogFileName);
                    ConquestScript.Instance.DataLock.ReleaseExclusive();
                }
            }
            else
            {
                MessageClientTextMessage.SendMessage(SenderSteamId, "Conquest Area", "Server busy, try again later.");
            }
        }