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; }
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(); }
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>(); }
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(); }