source: binary-improvements/7dtd-server-fixes/src/CustomCommands/ListLandProtection.cs @ 139

Last change on this file since 139 was 139, checked in by alloc, 7 years ago

Fixes: fixed #43

File size: 2.7 KB
Line 
1using System;
2using System.Collections.Generic;
3
4namespace AllocsFixes.CustomCommands
5{
6        public class ListLandProtection : ConsoleCommand
7        {
8                public ListLandProtection (ConsoleSdtd cons) : base(cons)
9                {
10                }
11
12                public override string Description ()
13                {
14                        return "lists all land protection blocks and owners";
15                }
16
17                public override string[] Names ()
18                {
19                        return new string[] { "listlandprotection", "llp" };
20                }
21
22                public override void Run (string[] _params)
23                {
24                        try {
25                                World w = CommonMappingFunctions.GetGameManager ().World;
26                                PersistentPlayerList ppl = CommonMappingFunctions.GetGameManager ().GetPersistentPlayerList ();
27
28                                bool summaryOnly = false;
29                                string steamIdFilter = string.Empty;
30
31                                if (_params.Length == 1) {
32                                        long tempLong;
33
34                                        if (_params [0].ToLower ().Equals ("summary")) {
35                                                summaryOnly = true;
36                                        } else if (_params [0].Length == 17 && long.TryParse (_params [0], out tempLong)) {
37                                                steamIdFilter = _params [0];
38                                        } else {
39                                                ClientInfo ci = CommonMappingFunctions.GetClientInfoFromNameOrID (_params [0], true);
40                                                if (ci != null) {
41                                                        steamIdFilter = CommonMappingFunctions.GetSteamID (ci);
42                                                } else {
43                                                        m_Console.SendResult ("Player name or entity id \"" + _params [0] + "\" not found.");
44                                                        return;
45                                                }
46                                        }
47                                }
48
49                                Dictionary<Vector3i, PersistentPlayerData> d = ppl.positionToLPBlockOwner;
50                                if (d != null) {
51                                        Dictionary<PersistentPlayerData, List<Vector3i>> owners = new Dictionary<PersistentPlayerData, List<Vector3i>> ();
52                                        foreach (KeyValuePair<Vector3i, PersistentPlayerData> kvp in d) {
53                                                if (!owners.ContainsKey (kvp.Value)) {
54                                                        owners.Add (kvp.Value, new List<Vector3i> ());
55                                                }
56                                                owners [kvp.Value].Add (kvp.Key);
57                                        }
58
59                                        foreach (KeyValuePair<PersistentPlayerData, List<Vector3i>> kvp in owners) {
60                                                if (steamIdFilter.Length == 0 || kvp.Key.PlayerId.Equals (steamIdFilter)) {
61                                                        ClientInfo ci = CommonMappingFunctions.GetClientInfoFromEntityID (kvp.Key.EntityId);
62                                                        string name = string.Empty;
63                                                        if (ci != null) {
64                                                                name = CommonMappingFunctions.GetPlayerName (ci);
65                                                        }
66                                                        name += " (" + kvp.Key.PlayerId + ")";
67
68                                                        m_Console.SendResult (String.Format ("Player \"{0}\" owns {3} keystones (protected: {1}, current hardness multiplier: {2})", name, w.LandClaimIsActive (kvp.Key), w.LandClaimPower (kvp.Key), kvp.Value.Count));
69                                                        if (!summaryOnly) {
70                                                                foreach (Vector3i v in kvp.Value) {
71                                                                        m_Console.SendResult ("   (" + v.ToString () + ")");
72                                                                }
73                                                        }
74                                                }
75                                        }
76                                }
77
78                                if (steamIdFilter.Length == 0)
79                                        m_Console.SendResult ("Total of " + d.Count + " keystones in the game");
80                        } catch (Exception e) {
81                                Log.Out ("Error in ListLandProtection.Run: " + e);
82                        }
83                }
84        }
85}
Note: See TracBrowser for help on using the repository browser.