コード例 #1
0
        public override void ProcessServer()
        {
            ScanSettingsEntity scanSettings = ScanDataManager.GetPlayerScanData(SenderSteamId);
            TrackDetailEntity  detail       = null;

            if (!string.IsNullOrEmpty(ShipName))
            {
                int index;
                if (ShipName.Substring(0, 1) == "#" && int.TryParse(ShipName.Substring(1), out index) && index > 0 && index <= scanSettings.ScanHostList.Count)
                {
                    detail = scanSettings.ScanHostList[index - 1];
                }

                if (detail == null)
                {
                    MyAPIGateway.Utilities.SendMessage(SenderSteamId, "Track failed", "Object '{0}' not found.", ShipName);
                    return;
                }
            }

            // send an empty TrackEntity if no shipname is provided. This Action should clear any current tracking.
            ConnectionHelper.SendMessageToPlayer(SenderSteamId, new PushSetTrack {
                TrackEntity = detail
            });
        }
コード例 #2
0
        public override void ProcessServer()
        {
            ScanSettingsEntity scanSettings = ScanDataManager.GetPlayerScanData(SenderSteamId);
            var player = MyAPIGateway.Players.FindPlayerBySteamId(SenderSteamId);

            switch (DisplayType)
            {
            case ScanType.GpsCoordinates:
                if (scanSettings.ScanListGpsEntities == null || player == null)
                {
                    return;
                }

                foreach (var trackEntity in scanSettings.ScanListGpsEntities)
                {
                    MyAPIGateway.Session.GPS.RemoveGps(player.IdentityId, trackEntity.GpsHash);
                }

                scanSettings.ScanListGpsEntities.Clear();
                break;

            case ScanType.ChatConsole:
            case ScanType.MissionScreen:
                scanSettings.ScanHostList.Clear();
                break;
            }
        }
        public override void Help(ulong steamId, bool brief)
        {
            // needs to be called server side to fetch settings. We aren't storing any of this client side.
            ScanSettingsEntity scanSettings = ScanDataManager.GetPlayerScanData(steamId);

            var ignoreList = new List <string>();

            if (scanSettings.IgnoreJunk)
            {
                ignoreList.Add(MassCategory.Junk.ToString());
            }
            if (scanSettings.IgnoreTiny)
            {
                ignoreList.Add(MassCategory.Tiny.ToString());
            }
            if (scanSettings.IgnoreSmall)
            {
                ignoreList.Add(MassCategory.Small.ToString());
            }
            if (scanSettings.IgnoreLarge)
            {
                ignoreList.Add(MassCategory.Large.ToString());
            }
            if (scanSettings.IgnoreHuge)
            {
                ignoreList.Add(MassCategory.Huge.ToString());
            }
            if (scanSettings.IgnoreEnormous)
            {
                ignoreList.Add(MassCategory.Enormous.ToString());
            }
            if (scanSettings.IgnoreRidiculous)
            {
                ignoreList.Add(MassCategory.Ridiculous.ToString());
            }

            var description = $@"/ignore <type> <state>
            Function: Ignores the specified mass type by allowing you switch it on or off.
              <type> must be one of ""Junk, Tiny, Small, Large, Huge, Enormous, Ridiculous"".
              <state> must be ""On"" or ""Off"".

            ie.
              /ignore Junk On
              /ignore Enormous Off
            Abbreviations can be used.
              /ignore ju 1
              /ignore en 0

            Currently Ignoring: {string.Join(", ", ignoreList)}

            ";

            MyAPIGateway.Utilities.SendMissionScreen(steamId, "/Ignore Help", null, " ", description, null, "OK");
        }
        public override void ProcessServer()
        {
            ScanSettingsEntity scanSettings = ScanDataManager.GetPlayerScanData(SenderSteamId);

            ScanShips(SenderSteamId, (double)MinRange, DisplayType, scanSettings);
        }
        public override bool Invoke(ulong steamId, long playerId, string messageText)
        {
            var commands = messageText.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

            if (commands.Length < 3)
            {
                Help(steamId, false);
                return(true);
            }

            MassCategory[] categories = (MassCategory[])Enum.GetValues(typeof(MassCategory));
            string         massclass  = null;

            foreach (var category in categories)
            {
                if (category.ToString().Equals(commands[1], StringComparison.InvariantCultureIgnoreCase))
                {
                    massclass = category.ToString();
                    break;
                }
            }

            if (massclass == null)
            {
                var matches = categories.Where(s => s.ToString().StartsWith(commands[1], StringComparison.InvariantCultureIgnoreCase)).Distinct().ToArray();
                if (matches.Length == 1)
                {
                    massclass = matches.FirstOrDefault().ToString();
                }
            }

            if (massclass == null)
            {
                Help(steamId, false);
                return(true);
            }

            bool setIgnore;

            if (commands[2].TryWordParseBool(out setIgnore))
            {
                ScanSettingsEntity scanSettings = ScanDataManager.GetPlayerScanData(steamId);

                if (massclass == MassCategory.Junk.ToString())
                {
                    scanSettings.IgnoreJunk = setIgnore;
                }
                if (massclass == MassCategory.Tiny.ToString())
                {
                    scanSettings.IgnoreTiny = setIgnore;
                }
                if (massclass == MassCategory.Small.ToString())
                {
                    scanSettings.IgnoreSmall = setIgnore;
                }
                if (massclass == MassCategory.Large.ToString())
                {
                    scanSettings.IgnoreLarge = setIgnore;
                }
                if (massclass == MassCategory.Huge.ToString())
                {
                    scanSettings.IgnoreHuge = setIgnore;
                }
                if (massclass == MassCategory.Enormous.ToString())
                {
                    scanSettings.IgnoreEnormous = setIgnore;
                }
                if (massclass == MassCategory.Ridiculous.ToString())
                {
                    scanSettings.IgnoreRidiculous = setIgnore;
                }

                MyAPIGateway.Utilities.SendMessage(steamId, $"Ignore {massclass}", setIgnore ? "On" : "Off");

                return(true);
            }

            Help(steamId, false);
            return(true);
        }