Beispiel #1
0
        public override bool HandleCommand(ulong userId, string[] words)
        {
            if (!PluginSettings.Instance.GreetingItem.Enabled)
            {
                Communication.SendPrivateInformation(userId, string.Format("No MOTD dialog defined on server."));
                return(true);
            }

            List <IMyPlayer> players = new List <IMyPlayer>();

            Wrapper.GameAction(() =>
            {
                MyAPIGateway.Players.GetPlayers(players);
            });

            IMyPlayer player = players.FirstOrDefault(x => x.SteamUserId == userId);

            if (player == null)
            {
                Communication.SendPrivateInformation(userId, "Unable to find player id");
                return(true);
            }

            SettingsGreetingDialogItem gItem = PluginSettings.Instance.GreetingItem;

            Communication.SendClientMessage(userId, string.Format("/dialog \"{0}\" \"{1}\" \"{2}\" \"{3}\" \"{4}\"", gItem.Title.Replace("%name%", player.DisplayName), gItem.Header.Replace("%name%", player.DisplayName), " ", gItem.Contents.Replace("%name%", player.DisplayName).Replace("\r", "").Replace("\n", "|").Replace("\"", "'"), gItem.ButtonText));
            return(true);
        }
        public PluginSettings()
        {
            // Default is 12 hours
            _start = DateTime.Now;
            _newUserTransportDistance = 500;
            _backupAsteroids          = true;

            _greetingItem = new SettingsGreetingDialogItem();
            _greetingItem.PropertyChanged        += OnPropertyChanged;
            _greetingNewUserItem                  = new SettingsGreetingDialogItem();
            _greetingNewUserItem.PropertyChanged += OnPropertyChanged;

            _informationItems         = new MTObservableCollection <InformationItem>();
            _restartNotificationItems = new MTObservableCollection <RestartNotificationItem>();
            _restartTimeItems         = new MTObservableCollection <RestartTimeItem>();
            _backupItems    = new MTObservableCollection <BackupItem>();
            _protectedItems = new MTObservableCollection <ProtectedItem>();
            _informationItems.CollectionChanged         += ItemsCollectionChanged;
            _restartNotificationItems.CollectionChanged += ItemsCollectionChanged;
            _restartTimeItems.CollectionChanged         += ItemsCollectionChanged;
            _backupItems.CollectionChanged    += ItemsCollectionChanged;
            _protectedItems.CollectionChanged += ItemsCollectionChanged;

            _stopShipsOnStart = false;

            _backupDateFormat             = "MM-dd-yyyy_HH-mm";
            _backupDateFormatSubDirectory = "MM-dd-yyyy";

            _greetingMessage = "";

            _dynamicConcealDistance         = 8000;
            _dynamicShowMessages            = false;
            _dynamicTurretTargetDistance    = 2000;
            _dynamicTurretManagementEnabled = false;
            _dynamicVoxelManagementEnabled  = false;
            _dynamicVoxelDistance           = 20000;

            _dockingShipsPerZone = 1;

            _newUserTransportAsteroidDistance = 0;

            _waypointServerItems = new MTObservableCollection <ServerWaypointItem>();
            _waypointServerItems.CollectionChanged += ItemsCollectionChanged;
            _waypointDefaultItems = new MTObservableCollection <ServerWaypointItem>();
            _waypointDefaultItems.CollectionChanged += ItemsCollectionChanged;

            _cleanupTriggerItems = new MTObservableCollection <SettingsCleanupTriggerItem>();
            _cleanupTriggerItems.CollectionChanged += ItemsCollectionChanged;
            _cleanupTimedItems = new MTObservableCollection <SettingsCleanupTimedItem>();
            _cleanupTimedItems.CollectionChanged        += ItemsCollectionChanged;
            _cleanupNotificationItems                    = new MTObservableCollection <SettingsCleanupNotificationItem>();
            _cleanupNotificationItems.CollectionChanged += ItemsCollectionChanged;

            _blockEnforcementItems = new MTObservableCollection <SettingsBlockEnforcementItem>();
            _blockEnforcementItems.CollectionChanged += ItemsCollectionChanged;
        }
Beispiel #3
0
        public override bool HandleCommand(ulong userId, string[] words)
        {
            string enabled = words[0].ToLower();
            string message = words[1];
            string title   = words[2];
            string header  = words[3];
            string button  = words[4];


            //var _greetingItem = new SettingsGreetingDialogItem( );
            SettingsGreetingDialogItem _greetingItem = PluginSettings.Instance.GreetingItem;

            if (words.Length < 1)
            {
                Communication.SendPrivateInformation(userId, GetHelp());
                return(true);
            }

            if (words.Length > 5)
            {
                //check if we have too many words, in case user doesn't wrap a multi-word phrase in quotes
                Communication.SendPrivateInformation(userId, "Too many arguments detected. Did you forget to put quotations around something?");
                return(true);
            }

            _greetingItem.Enabled = string.Equals(enabled, "true");
            //enabled is the only required argument

            //evaluate each argument; if it's null, exit so we don't overwrite existing data
            if (message != null)
            {
                _greetingItem.Contents = message;
            }

            if (title != null)
            {
                _greetingItem.Title = title;
            }

            if (header != null)
            {
                _greetingItem.Header = header;
            }

            if (button != null)
            {
                _greetingItem.ButtonText = button;
            }

            Communication.SendPrivateInformation(userId, "MOTD set.");
            return(true);
        }
        public override void Handle()
        {
            if (PluginSettings.Instance.GreetingMessage != "")
            {
                if (MyAPIGateway.Players == null)
                {
                    return;
                }

                int pos = 0;
                try
                {
                    List <IMyPlayer> players = new List <IMyPlayer>();
                    pos = 1;
                    bool result = false;
                    Wrapper.GameAction(() =>
                    {
                        try
                        {
                            MyAPIGateway.Players.GetPlayers(players, null);
                            result = true;
                        }
                        catch (Exception ex)
                        {
                            Logging.WriteLineAndConsole(string.Format("Failed to get player list: {0}", ex.ToString()));
                        }
                    });

                    if (!result)
                    {
                        return;
                    }

                    pos = 2;
                    lock (m_greetingList)
                    {
                        for (int r = m_greetingList.Count - 1; r >= 0; r--)
                        {
                            pos = 3;
                            GreetingItem item = m_greetingList[r];
                            if (DateTime.Now - item.Start > item.Timeout)
                            {
                                m_greetingList.RemoveAt(r);
                                continue;
                            }
                            pos = 4;
                            IMyPlayer player = players.FirstOrDefault(x => x.SteamUserId == item.SteamId && x.Controller != null && x.Controller.ControlledEntity != null);
                            pos = 5;
                            if (player != null)
                            {
                                pos = 6;
                                m_greetingList.RemoveAt(r);

                                string message = "";

                                if (item.IsNewUser)
                                {
                                    message = PluginSettings.Instance.GreetingNewUserMessage.Replace("%name%", player.DisplayName);
                                }
                                else
                                {
                                    message = PluginSettings.Instance.GreetingMessage.Replace("%name%", player.DisplayName);
                                }

                                string finalMessage = message;

                                if (PluginSettings.Instance.GreetingPublic)
                                {
                                    Communication.SendPublicInformation(finalMessage);
                                }
                                else
                                {
                                    Communication.SendPrivateInformation(item.SteamId, finalMessage);
                                }

                                if (item.IsNewUser)
                                {
                                    if (PluginSettings.Instance.GreetingNewUserItem.Enabled)
                                    {
                                        SettingsGreetingDialogItem gItem = PluginSettings.Instance.GreetingNewUserItem;
                                        Communication.SendClientMessage(item.SteamId, string.Format("/dialog \"{0}\" \"{1}\" \"{2}\" \"{3}\" \"{4}\"", gItem.Title.Replace("%name%", player.DisplayName), gItem.Header.Replace("%name%", player.DisplayName), " ", gItem.Contents.Replace("%name%", player.DisplayName).Replace("\r", "").Replace("\n", "|").Replace("\"", "'"), gItem.ButtonText));
                                    }
                                }
                                else
                                {
                                    if (PluginSettings.Instance.GreetingItem.Enabled)
                                    {
                                        SettingsGreetingDialogItem gItem = PluginSettings.Instance.GreetingItem;
                                        Communication.SendClientMessage(item.SteamId, string.Format("/dialog \"{0}\" \"{1}\" \"{2}\" \"{3}\" \"{4}\"", gItem.Title.Replace("%name%", player.DisplayName), gItem.Header.Replace("%name%", player.DisplayName), " ", gItem.Contents.Replace("%name%", player.DisplayName).Replace("\r", "").Replace("\n", "|").Replace("\"", "'"), gItem.ButtonText));
                                    }
                                }
                            }
                        }

                        pos = 7;
                    }
                }
                catch (Exception ex)
                {
                    Logging.WriteLineAndConsole(string.Format("Handle(): Error at pos - {0}: {1}", pos, ex.ToString()));
                }
            }

            base.Handle();
        }
Beispiel #5
0
        public PluginSettings()
        {
            // Default is 12 hours
            Start            = DateTime.Now;
            _backupAsteroids = true;

            _greetingItem = new SettingsGreetingDialogItem();
            _greetingItem.PropertyChanged        += OnPropertyChanged;
            _greetingNewUserItem                  = new SettingsGreetingDialogItem();
            _greetingNewUserItem.PropertyChanged += OnPropertyChanged;

            _informationItems         = new MTObservableCollection <InformationItem>();
            _restartNotificationItems = new MTObservableCollection <RestartNotificationItem>();
            _restartTimeItems         = new MTObservableCollection <RestartTimeItem>();
            _backupItems    = new MTObservableCollection <BackupItem>();
            _protectedItems = new List <ProtectedItem>();
            _informationItems.CollectionChanged         += ItemsCollectionChanged;
            _restartNotificationItems.CollectionChanged += ItemsCollectionChanged;
            _restartTimeItems.CollectionChanged         += ItemsCollectionChanged;
            _backupItems.CollectionChanged += ItemsCollectionChanged;

            _reservedSlotsEnabled = false;
            _reservedSlotsCount   = 5;
            _reservedSlotsGroup   = 0;
            _reservedSlotsAdmins  = false;

            _stopShipsOnStart      = false;
            _promotedAdminCommands = false;

            _loginEnabled = true;

            _serverChatName    = "Server";
            _factionChatPrefix = true;
            _whisperChatPrefix = true;

            _backupDateFormat             = "MM-dd-yyyy_HH-mm";
            _backupDateFormatSubDirectory = "MM-dd-yyyy";

            _greetingMessage = "";

            _dynamicConcealDistance         = 8000;
            _dynamicConcealPirates          = false;
            _dynamicConcealPhysics          = false;
            _dynamicConcealProduction       = true;
            _dynamicShowMessages            = false;
            _dynamicTurretTargetDistance    = 2000;
            _dynamicTurretManagementEnabled = false;

            _dockingShipsPerZone = 1;

            _waypointServerItems = new MTObservableCollection <ServerWaypointItem>();
            _waypointServerItems.CollectionChanged += ItemsCollectionChanged;
            _waypointDefaultItems = new MTObservableCollection <ServerWaypointItem>();
            _waypointDefaultItems.CollectionChanged += ItemsCollectionChanged;

            _cleanupTriggerItems = new MTObservableCollection <SettingsCleanupTriggerItem>();
            _cleanupTriggerItems.CollectionChanged += ItemsCollectionChanged;
            _cleanupTimedItems = new MTObservableCollection <SettingsCleanupTimedItem>();
            _cleanupTimedItems.CollectionChanged        += ItemsCollectionChanged;
            _cleanupNotificationItems                    = new MTObservableCollection <SettingsCleanupNotificationItem>();
            _cleanupNotificationItems.CollectionChanged += ItemsCollectionChanged;

            _blockEnforcementItems = new MTObservableCollection <SettingsBlockEnforcementItem>();
            _blockEnforcementItems.CollectionChanged += ItemsCollectionChanged;

            _playerBlockEnforcementItems = new MTObservableCollection <SettingsBlockEnforcementItem>();
            _playerBlockEnforcementItems.CollectionChanged += ItemsCollectionChanged;

            _timedCommandsEnabled = false;
            _timedCommandsItem    = new MTObservableCollection <TimedCommandItem>(  );
            _timedCommandsItem.CollectionChanged += ItemsCollectionChanged;

            _blacklistItems = new MTObservableCollection <BlacklistItem>();
            _blacklistItems.CollectionChanged += ItemsCollectionChanged;
            _blacklistItems.CollectionChanged += BlacklistManager.Instance._blacklistItems_CollectionChanged;

            _atmosphericCargoShipsEnabled  = false;
            _atmosphericCargoShipSpawnTime = 10.0f;

            _ticketPlayers = new List <TicketPlayerItem>();
        }
Beispiel #6
0
        public override void Handle()
        {
            if (PluginSettings.Instance.GreetingMessage != "")
            {
                if (MyAPIGateway.Players == null)
                {
                    return;
                }

                try
                {
                    List <IMyPlayer> players = new List <IMyPlayer>();
                    bool             result  = false;

                    //Wrapper.GameAction(() =>
                    //{
                    try
                    {
                        MyAPIGateway.Players.GetPlayers(players);
                        result = true;
                    }
                    catch (Exception ex)
                    {
                        Essentials.Log.Error(ex);
                    }
                    //});

                    if (!result)
                    {
                        return;
                    }

                    lock (m_greetingList)
                    {
                        for (int r = m_greetingList.Count - 1; r >= 0; r--)
                        {
                            GreetingItem item = m_greetingList[r];
                            if (DateTime.Now - item.Start > item.Timeout)
                            {
                                m_greetingList.RemoveAt(r);
                                continue;
                            }
                            IMyPlayer player = players.FirstOrDefault(x => x.SteamUserId == item.SteamId && x.Controller != null && x.Controller.ControlledEntity != null);
                            if (player != null)
                            {
                                m_greetingList.RemoveAt(r);

                                string message;

                                if (item.IsNewUser)
                                {
                                    message = PluginSettings.Instance.GreetingNewUserMessage.Replace("%name%", player.DisplayName);
                                }
                                else
                                {
                                    message = PluginSettings.Instance.GreetingMessage.Replace("%name%", player.DisplayName);
                                }

                                message = message.Replace("%name%", player.DisplayName);
                                message = message.Replace("%players%", players.Count.ToString());
                                message = message.Replace("%maxplayers%", MyAPIGateway.Session.SessionSettings.MaxPlayers.ToString());

                                string finalMessage = message;

                                if (PluginSettings.Instance.GreetingPublic)
                                {
                                    Communication.SendPublicInformation(finalMessage);
                                }
                                else
                                {
                                    Communication.SendPrivateInformation(item.SteamId, finalMessage);
                                }

                                if (item.IsNewUser)
                                {
                                    if (PluginSettings.Instance.GreetingNewUserItem.Enabled)
                                    {
                                        SettingsGreetingDialogItem gItem = PluginSettings.Instance.GreetingNewUserItem;
                                        Communication.DisplayDialog(item.SteamId, gItem.Title.Replace("%name%", player.DisplayName), gItem.Header.Replace("%name%", player.DisplayName), gItem.Contents.Replace("%name%", player.DisplayName).Replace("\r", "").Replace("\n", "|").Replace("\"", "'"), gItem.ButtonText);
                                    }
                                }
                                else
                                {
                                    if (PluginSettings.Instance.GreetingItem.Enabled)
                                    {
                                        SettingsGreetingDialogItem gItem = PluginSettings.Instance.GreetingItem;
                                        Communication.DisplayDialog(item.SteamId, gItem.Title.Replace("%name%", player.DisplayName), gItem.Header.Replace("%name%", player.DisplayName), gItem.Contents.Replace("%name%", player.DisplayName).Replace("\r", "").Replace("\n", "|").Replace("\"", "'"), gItem.ButtonText);
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Essentials.Log.Error(ex);
                }
            }

            base.Handle();
        }