Ignore:
Timestamp:
Aug 18, 2014, 9:26:24 PM (10 years ago)
Author:
alloc
Message:

Fixes: Fixed #36, #37, #38

File:
1 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/7dtd-server-fixes/src/TelnetCommands/RemoveLandProtection.cs

    r113 r123  
    1818        }
    1919
    20         public override void Run (string[] _params)
     20        private void removeById (string _id)
    2121        {
    2222                try {
    23                         if (_params.Length != 3) {
    24                                 m_Console.SendResult ("Usage: removelandprotection <x> <y> <z>");
     23                        PersistentPlayerList ppl = CommonMappingFunctions.GetGameManager ().GetPersistentPlayerList ();
     24
     25                        if (_id.Length < 1 || !ppl.Players.ContainsKey(_id)) {
     26                                m_Console.SendResult ("Not a valid Steam ID or user has never logged on. Use \"listlandprotection\" to get a list of keystones.");
     27                                return;
     28                        }
     29                        if (ppl.Players[_id].LPBlocks == null || ppl.Players[_id].LPBlocks.Count == 0) {
     30                                m_Console.SendResult ("Player does not own any keystones. Use \"listlandprotection\" to get a list of keystones.");
    2531                                return;
    2632                        }
    2733
     34                        List<BlockChangeInfo> changes = new List<BlockChangeInfo> ();
     35                        foreach (Vector3i pos in ppl.Players[_id].LPBlocks) {
     36                                BlockChangeInfo bci = new BlockChangeInfo (pos, 0, true);
     37                                changes.Add (bci);
     38                        }
     39                        CommonMappingFunctions.GetGameManager ().SetBlocksRPC (changes);
     40
     41                        m_Console.SendResult ("#"+changes.Count + " Land protection blocks for player \"" + _id + "\" removed");
     42                } catch (Exception e) {
     43                        Log.Out ("Error in RemoveLandProtection.removeById: " + e);
     44                }
     45        }
     46
     47        private void removeByPosition (string[] _coords)
     48        {
     49                try {
    2850                        int x = int.MinValue;
    29                         int.TryParse (_params [0], out x);
     51                        int.TryParse (_coords [0], out x);
    3052                        int y = int.MinValue;
    31                         int.TryParse (_params [1], out y);
     53                        int.TryParse (_coords [1], out y);
    3254                        int z = int.MinValue;
    33                         int.TryParse (_params [2], out z);
     55                        int.TryParse (_coords [2], out z);
    3456
    3557                        if (x == int.MinValue || y == int.MinValue || z == int.MinValue) {
     
    4870                        }
    4971
    50                         ppl.RemoveLandProtectionBlock (v);
    51                         ppl.Write (StaticDirectories.GetSaveGameDir () + "/players.xml");
    52                         m_Console.SendResult ("Land protection block association at (" + v.ToString () + ") removed");
     72                        BlockChangeInfo bci = new BlockChangeInfo (v, 0, true);
     73
     74                        List<BlockChangeInfo> changes = new List<BlockChangeInfo> ();
     75                        changes.Add (bci);
     76
     77                        CommonMappingFunctions.GetGameManager ().SetBlocksRPC (changes);
     78
     79                        m_Console.SendResult ("Land protection block at (" + v.ToString () + ") removed");
     80                } catch (Exception e) {
     81                        Log.Out ("Error in RemoveLandProtection.removeByPosition: " + e);
     82                }
     83        }
     84
     85        public override void Run (string[] _params)
     86        {
     87                try {
     88                        if (_params.Length == 1) {
     89                                removeById (_params [0]);
     90                        } else if (_params.Length == 3) {
     91                                removeByPosition (_params);
     92                        } else {
     93                                m_Console.SendResult ("Usage: removelandprotection <x> <y> <z>  OR  removelandprotection <steamid>");
     94                        }
    5395                } catch (Exception e) {
    5496                        Log.Out ("Error in RemoveLandProtection.Run: " + e);
Note: See TracChangeset for help on using the changeset viewer.