public void Initialize(Scene scene, IConfigSource config) { m_scene = scene; m_scene.RegisterModuleInterface<IRegionModule>(this); m_scene.AddCommand( this, "tree plant", "tree plant", "Start populating trees", HandleTreeConsoleCommand); m_scene.AddCommand( this, "tree active", "tree active <boolean>", "Change activity state for trees module", HandleTreeConsoleCommand); try { m_tree_density = config.Configs["Trees"].GetDouble("tree_density", m_tree_density); m_active_trees = config.Configs["Trees"].GetBoolean("active_trees", m_active_trees); } catch (Exception) { } m_trees = new List<UUID>(); if (m_active_trees) activeizeTreeze(true); m_log.Debug("[TREES]: Initialized tree module"); }
public void Initialize(Scene scene, IConfigSource source) { m_scene = scene; m_scene.RegisterModuleInterface<IDialogModule>(this); m_scene.AddCommand( this, "alert", "alert <first> <last> <message>", "Send an alert to a user", HandleAlertConsoleCommand); m_scene.AddCommand( this, "alert general", "alert general <message>", "Send an alert to everyone", HandleAlertConsoleCommand); }
public void Initialise(Scene scene, Nini.Config.IConfigSource source) { m_scene = scene; if (source.Configs["realXtend"] != null) { m_bypassPermissions = !(source.Configs["realXtend"].GetBoolean("UploadPermissionsEnabled", false)); m_disableFromAll = source.Configs["realXtend"].GetBoolean("DisableUploads", false); } m_scene.AddCommand(this, "uploadpermissions", "uploadpermissions true|false", "this enables or disables upload permissions", SetUploadPermissionsCommand); m_scene.AddCommand(this, "disableupload", "disableupload true|false", "this enables or disables upload", DisableUploadCommand); }
public void AddRegion(Scene scene) { if (!m_enabled) return; m_scene = scene; m_scene.RegisterModuleInterface<IDialogModule>(this); m_scene.EventManager.OnPermissionError += SendAlertToUser; m_scene.AddCommand( this, "alert", "alert <first> <last> <message>", "Send an alert to a user", HandleAlertConsoleCommand); m_scene.AddCommand( this, "alert general", "alert general <message>", "Send an alert to everyone", HandleAlertConsoleCommand); }
public void AddRegion(Scene scene) { if (!m_enabled) return; RegionConnector = DataManager.DataManager.RequestPlugin<IRegionConnector>(); m_scene = scene; scene.EventManager.OnNewClient += OnNewClient; scene.Permissions.OnTeleport += AllowTeleport; scene.EventManager.OnClosingClient += OnClosingClient; scene.AddCommand(this, "set regionsetting", "set regionsetting", "Sets a region setting for the given region. Valid params: Maturity - 0(PG),1(Mature),2(Adult); AddEstateBan,RemoveEstateBan,AddEstateManager,RemoveEstateManager - First name, Last name", SetRegionInfoOption); scene.AddCommand(this, "ban user", "ban user", "Bans a user from the current estate", BanUser); }
public void Initialise(Scene scene, IConfigSource source) { m_scene = scene; m_scene.RegisterModuleInterface<IDialogModule>(this); m_scene.AddCommand( this, "alert", "alert <first> <last> <message>", "Send an alert to a user", HandleAlertConsoleCommand); m_scene.AddCommand( this, "alert general", "alert [general] <message>", "Send an alert to everyone", "If keyword 'general' is omitted, then <message> must be surrounded by quotation marks.", HandleAlertConsoleCommand); }
public void AddRegion(Scene scene) { if (!m_enabled) return; m_scene = scene; m_scene.RegisterModuleInterface<IDialogModule>(this); m_scene.AddCommand( this, "alert", "alert <first> <last> <message>", "Send an alert to a user", HandleAlertConsoleCommand); m_scene.AddCommand( this, "alert general", "alert [general] <message>", "Send an alert to everyone", "If keyword 'general' is omitted, then <message> must be surrounded by quotation marks.", HandleAlertConsoleCommand); }
public void Initialise(Scene scene, Nini.Config.IConfigSource source) { m_scene = scene; if (source.Configs["realXtend"] != null) { m_maxHeight = source.Configs["realXtend"].GetFloat("FlightCeilingHeight", 0); } m_scene.AddCommand(this, "flightceiling", "flightceiling <float>", "Set maximum movement height. Zero is disabled", SetFlightCeilingHeight); }
public void Initialise(Scene scene, IConfigSource source) { m_scene = scene; m_scene.AddCommand(this, "monitor report", "monitor report", "Returns a variety of statistics about the current region and/or simulator", DebugMonitors); MainServer.Instance.AddHTTPHandler("/monitorstats/" + m_scene.RegionInfo.RegionID + "/", StatsPage); }
public void AddRegion(Scene scene) { if(!enabled) return; log("Adding region to MGM"); npc = (NPCModule)scene.RequestModuleInterface<INPCModule>(); if(npc == null || !npc.Enabled) { enabled = false; log("ERROR: NPC module must be enabled for MGM"); return; } scene.AddCommand("mgm",this,"mgm status","status","Print the status of the MGM module", consoleStatus); scene.AddCommand("mgm",this,"mgm addUser","addUser","Test adding a user", addUser); mgmLink = new MGMLink(new IPEndPoint(mgmAddress, mgmPort), log); mgmLink.start(); registerEvents(scene.EventManager); string regMsg = MGMJson.Register(scene.Name, scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY, scene.RegionInfo.RegionSizeX); mgmLink.send(regMsg); this.scene = scene; mgr = new MGMClientManager(scene,log); }
public void RegionLoaded(Scene scene) { if (!m_Enabled) return; if (m_autoOAREnabled) { m_autoOARTimer = new Timer(m_autoOARTime * (TimeSpan.TicksPerDay / TimeSpan.TicksPerMillisecond));//Time in days m_autoOARTimer.Elapsed += SaveOAR; m_autoOARTimer.Enabled = true; } scene.AddCommand(this, "save version", "save version <description>", "Saves the current region as the next incremented version in the version control module.", SaveVersion); }
public void Initialise(Scene scene, IConfigSource source) { IConfig cnfg = source.Configs["Monitoring"]; if (cnfg != null) Enabled = cnfg.GetBoolean("Enabled", true); if (!Enabled) return; m_scene = scene; m_scene.AddCommand(this, "monitor report", "monitor report", "Returns a variety of statistics about the current region and/or simulator", DebugMonitors); MainServer.Instance.AddHTTPHandler("/monitorstats/" + m_scene.RegionInfo.RegionID, StatsPage); MainServer.Instance.AddHTTPHandler( "/monitorstats/" + Uri.EscapeDataString(m_scene.RegionInfo.RegionName), StatsPage); }
public void Initialise(Scene scene, IConfigSource source) { if (m_scenes.Count == 0) { scene.RegisterModuleInterface<IInventoryArchiverModule>(this); CommsManager = scene.CommsManager; OnInventoryArchiveSaved += SaveInvConsoleCommandCompleted; scene.AddCommand( this, "load iar", "load iar <first> <last> <inventory path> [<archive path>]", "Load user inventory archive. EXPERIMENTAL, PLEASE DO NOT USE YET", HandleLoadInvConsoleCommand); scene.AddCommand( this, "save iar", "save iar <first> <last> <inventory path> [<archive path>]", "Save user inventory archive. EXPERIMENTAL, PLEASE DO NOT USE YET", HandleSaveInvConsoleCommand); } m_scenes[scene.RegionInfo.RegionID] = scene; }
public void AddRegion(Scene scene) { if (!Enabled) return; m_scene = scene; m_scene.AddCommand("General", this, "monitor report", "monitor report", "Returns a variety of statistics about the current region and/or simulator", DebugMonitors); MainServer.Instance.AddHTTPHandler("/monitorstats/" + m_scene.RegionInfo.RegionID, StatsPage); MainServer.Instance.AddHTTPHandler( "/monitorstats/" + Uri.EscapeDataString(m_scene.RegionInfo.RegionName), StatsPage); AddMonitors(); }
public void AddRegion(Scene scene) { if (!m_Enabled) return; m_scene = scene; scene.RegisterModuleInterface<IPermissionsModule>(this); //Register functions with Scene External Checks! m_scene.Permissions.OnBypassPermissions += BypassPermissions; m_scene.Permissions.OnSetBypassPermissions += SetBypassPermissions; m_scene.Permissions.OnPropagatePermissions += PropagatePermissions; m_scene.Permissions.OnGenerateClientFlags += GenerateClientFlags; m_scene.Permissions.OnAbandonParcel += CanAbandonParcel; m_scene.Permissions.OnReclaimParcel += CanReclaimParcel; m_scene.Permissions.OnDeedParcel += CanDeedParcel; m_scene.Permissions.OnDeedObject += CanDeedObject; m_scene.Permissions.OnIsGod += IsGod; m_scene.Permissions.OnIsGridGod += IsGridGod; m_scene.Permissions.OnIsAdministrator += IsAdministrator; m_scene.Permissions.OnDuplicateObject += CanDuplicateObject; m_scene.Permissions.OnDeleteObject += CanDeleteObject; m_scene.Permissions.OnEditObject += CanEditObject; m_scene.Permissions.OnEditParcelProperties += CanEditParcelProperties; m_scene.Permissions.OnInstantMessage += CanInstantMessage; m_scene.Permissions.OnInventoryTransfer += CanInventoryTransfer; m_scene.Permissions.OnIssueEstateCommand += CanIssueEstateCommand; m_scene.Permissions.OnMoveObject += CanMoveObject; m_scene.Permissions.OnObjectEntry += CanObjectEntry; m_scene.Permissions.OnReturnObjects += CanReturnObjects; m_scene.Permissions.OnRezObject += CanRezObject; m_scene.Permissions.OnRunConsoleCommand += CanRunConsoleCommand; m_scene.Permissions.OnRunScript += CanRunScript; m_scene.Permissions.OnCompileScript += CanCompileScript; m_scene.Permissions.OnSellParcel += CanSellParcel; m_scene.Permissions.OnTakeObject += CanTakeObject; m_scene.Permissions.OnTakeCopyObject += CanTakeCopyObject; m_scene.Permissions.OnTerraformLand += CanTerraformLand; m_scene.Permissions.OnLinkObject += CanLinkObject; m_scene.Permissions.OnDelinkObject += CanDelinkObject; m_scene.Permissions.OnBuyLand += CanBuyLand; m_scene.Permissions.OnViewNotecard += CanViewNotecard; m_scene.Permissions.OnViewScript += CanViewScript; m_scene.Permissions.OnEditNotecard += CanEditNotecard; m_scene.Permissions.OnEditScript += CanEditScript; m_scene.Permissions.OnCreateObjectInventory += CanCreateObjectInventory; m_scene.Permissions.OnEditObjectInventory += CanEditObjectInventory; m_scene.Permissions.OnCopyObjectInventory += CanCopyObjectInventory; m_scene.Permissions.OnDeleteObjectInventory += CanDeleteObjectInventory; m_scene.Permissions.OnResetScript += CanResetScript; m_scene.Permissions.OnCreateUserInventory += CanCreateUserInventory; m_scene.Permissions.OnCopyUserInventory += CanCopyUserInventory; m_scene.Permissions.OnEditUserInventory += CanEditUserInventory; m_scene.Permissions.OnDeleteUserInventory += CanDeleteUserInventory; m_scene.Permissions.OnTeleport += CanTeleport; m_scene.Permissions.OnControlPrimMedia += CanControlPrimMedia; m_scene.Permissions.OnInteractWithPrimMedia += CanInteractWithPrimMedia; m_scene.AddCommand("Users", this, "bypass permissions", "bypass permissions <true / false>", "Bypass permission checks", HandleBypassPermissions); m_scene.AddCommand("Users", this, "force permissions", "force permissions <true / false>", "Force permissions on or off", HandleForcePermissions); m_scene.AddCommand("Debug", this, "debug permissions", "debug permissions <true / false>", "Turn on permissions debugging", HandleDebugPermissions); }
public void Initialize(Scene scene, IConfigSource config) { m_scene = scene; IConfig myConfig = config.Configs["Startup"]; string permissionModules = myConfig.GetString("permissionmodules", "DefaultPermissionsModule"); List<string> modules=new List<string>(permissionModules.Split(',')); if (!modules.Contains("DefaultPermissionsModule")) { m_log.Debug("[PERMISSIONS]: DefaultPermissionsModule is not configured. Disabling..."); return; } m_allowGridGods = myConfig.GetBoolean("allow_grid_gods", false); m_bypassPermissions = !myConfig.GetBoolean("serverside_object_permissions", false); m_propagatePermissions = myConfig.GetBoolean("propagate_permissions", true); if (m_bypassPermissions) m_log.Info("[PERMISSIONS]: serviceside_object_permissions = false in ini file so disabling all region service permission checks"); else m_log.Debug("[PERMISSIONS]: Enabling all region service permission checks"); //Register functions with Scene External Checks! m_scene.Permissions.OnBypassPermissions += BypassPermissions; m_scene.Permissions.OnSetBypassPermissions += SetBypassPermissions; m_scene.Permissions.OnPropagatePermissions += PropagatePermissions; m_scene.Permissions.OnGenerateClientFlags += GenerateClientFlags; m_scene.Permissions.OnAbandonParcel += CanAbandonParcel; m_scene.Permissions.OnReclaimParcel += CanReclaimParcel; m_scene.Permissions.OnDeedParcel += CanDeedParcel; m_scene.Permissions.OnDeedObject += CanDeedObject; m_scene.Permissions.OnIsGod += IsGod; m_scene.Permissions.OnDuplicateObject += CanDuplicateObject; m_scene.Permissions.OnDeleteObject += CanDeleteObject; m_scene.Permissions.OnEditObject += CanEditObject; m_scene.Permissions.OnEditParcel += CanEditParcel; m_scene.Permissions.OnInstantMessage += CanInstantMessage; m_scene.Permissions.OnInventoryTransfer += CanInventoryTransfer; //NOT YET IMPLEMENTED m_scene.Permissions.OnIssueEstateCommand += CanIssueEstateCommand; //FULLY IMPLEMENTED m_scene.Permissions.OnMoveObject += CanMoveObject; m_scene.Permissions.OnObjectEntry += CanObjectEntry; m_scene.Permissions.OnReturnObject += CanReturnObject; m_scene.Permissions.OnRezObject += CanRezObject; m_scene.Permissions.OnRunConsoleCommand += CanRunConsoleCommand; m_scene.Permissions.OnRunScript += CanRunScript; //NOT YET IMPLEMENTED m_scene.Permissions.OnTakeObject += CanTakeObject; m_scene.Permissions.OnTakeCopyObject += CanTakeCopyObject; m_scene.Permissions.OnTerraformLand += CanTerraformLand; m_scene.Permissions.OnLinkObject += CanLinkObject; //NOT YET IMPLEMENTED m_scene.Permissions.OnDelinkObject += CanDelinkObject; //NOT YET IMPLEMENTED m_scene.Permissions.OnBuyLand += CanBuyLand; //NOT YET IMPLEMENTED m_scene.Permissions.OnViewNotecard += CanViewNotecard; //NOT YET IMPLEMENTED m_scene.Permissions.OnViewScript += CanViewScript; //NOT YET IMPLEMENTED m_scene.Permissions.OnEditNotecard += CanEditNotecard; //NOT YET IMPLEMENTED m_scene.Permissions.OnEditScript += CanEditScript; //NOT YET IMPLEMENTED m_scene.Permissions.OnCreateObjectInventory += CanCreateObjectInventory; //NOT IMPLEMENTED HERE m_scene.Permissions.OnEditObjectInventory += CanEditObjectInventory;//MAYBE FULLY IMPLEMENTED m_scene.Permissions.OnCopyObjectInventory += CanCopyObjectInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnDeleteObjectInventory += CanDeleteObjectInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnResetScript += CanResetScript; m_scene.Permissions.OnCreateUserInventory += CanCreateUserInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnCopyUserInventory += CanCopyUserInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnEditUserInventory += CanEditUserInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnDeleteUserInventory += CanDeleteUserInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnTeleport += CanTeleport; //NOT YET IMPLEMENTED m_scene.Permissions.OnUseObjectReturn += CanUseObjectReturn; //NOT YET IMPLEMENTED m_scene.Permissions.OnStartScript += CanStartScript; m_scene.Permissions.OnStopScript += CanStopScript; m_scene.AddCommand(this, "bypass permissions", "bypass permissions <true / false>", "Bypass permission checks", HandleBypassPermissions); m_scene.AddCommand(this, "force permissions", "force permissions <true / false>", "Force permissions on or off", HandleForcePermissions); m_scene.AddCommand(this, "debug permissions", "debug permissions <true / false>", "Enable permissions debugging", HandleDebugPermissions); }
public void AddRegion(Scene scene) { // m_log.DebugFormat("[USER COMMANDS MODULE]: REGION {0} ADDED", scene.RegionInfo.RegionName); lock (m_scenes) m_scenes[scene.RegionInfo.RegionID] = scene; scene.AddCommand( "Users", this, "teleport user", TeleportUserCommandSyntax, "Teleport a user in this simulator to the given destination", "<destination> is in format [<region-name>]/<x>/<y>/<z>, e.g. regionone/20/30/40 or just 20/30/40 to teleport within same region." + "\nIf the region contains a space then the whole destination must be in quotes, e.g. \"region one/20/30/40\"", HandleTeleportUser); }
// Called immediately after the module is loaded for a given region // i.e. Immediately after instance creation. public void Initialize(Scene scene, IConfigSource config) { m_scene = scene; m_frame = 0; // This one puts an entry in the main help screen m_scene.AddCommand(this, String.Empty, "sun", "Usage: sun [param] [value] - Get or Update Sun module paramater", null); // This one enables the ability to type just "sun" without any parameters m_scene.AddCommand(this, "sun", "", "", HandleSunConsoleCommand); foreach (KeyValuePair<string, string> kvp in GetParamList()) { m_scene.AddCommand(this, String.Format("sun {0}", kvp.Key), String.Format("{0} - {1}", kvp.Key, kvp.Value), "", HandleSunConsoleCommand); } TimeZone local = TimeZone.CurrentTimeZone; TicksUTCOffset = local.GetUtcOffset(local.ToLocalTime(DateTime.Now)).Ticks; m_log.Debug("[SUN]: localtime offset is " + TicksUTCOffset); // Align ticks with Second Life TicksToEpoch = new DateTime(1970, 1, 1).Ticks; // Just in case they don't have the stanzas try { IConfig sunConfig = config.Configs["Sun"]; if (sunConfig == null) { m_log.Debug("[SUN]: Configuration access missing, using defaults."); m_RegionMode = d_mode; m_YearLengthDays = d_year_length; m_DayLengthHours = d_day_length; m_HorizonShift = d_day_night; m_UpdateInterval = d_frame_mod; m_DayTimeSunHourScale = d_DayTimeSunHourScale; // m_latitude = d_latitude; // m_longitude = d_longitude; } else { // Mode: determines how the sun is handled m_RegionMode = config.Configs["Sun"].GetString("mode", d_mode); // Mode: determines how the sun is handled // m_latitude = config.Configs["Sun"].GetDouble("latitude", d_latitude); // Mode: determines how the sun is handled // m_longitude = config.Configs["Sun"].GetDouble("longitude", d_longitude); // Year length in days m_YearLengthDays = config.Configs["Sun"].GetInt("year_length", d_year_length); // Day length in decimal hours m_DayLengthHours = config.Configs["Sun"].GetDouble("day_length", d_day_length); // Horizon shift, this is used to shift the sun's orbit, this affects the day / night ratio // must hard code to ~.5 to match sun position in LL based viewers m_HorizonShift = config.Configs["Sun"].GetDouble("day_night_offset", d_day_night); // Scales the sun hours 0...12 vs 12...24, essentially makes daylight hours longer/shorter vs nighttime hours m_DayTimeSunHourScale = config.Configs["Sun"].GetDouble("day_time_sun_hour_scale", d_DayTimeSunHourScale); // Update frequency in frames m_UpdateInterval = config.Configs["Sun"].GetInt("update_interval", d_frame_mod); } } catch (Exception e) { m_log.Debug("[SUN]: Configuration access failed, using defaults. Reason: " + e.Message); m_RegionMode = d_mode; m_YearLengthDays = d_year_length; m_DayLengthHours = d_day_length; m_HorizonShift = d_day_night; m_UpdateInterval = d_frame_mod; m_DayTimeSunHourScale = d_DayTimeSunHourScale; // m_latitude = d_latitude; // m_longitude = d_longitude; } switch (m_RegionMode) { case "T1": default: case "SL": // Time taken to complete a cycle (day and season) SecondsPerSunCycle = (uint) (m_DayLengthHours * 60 * 60); SecondsPerYear = (uint) (SecondsPerSunCycle*m_YearLengthDays); // Ration of real-to-virtual time // VWTimeRatio = 24/m_day_length; // Speed of rotation needed to complete a cycle in the // designated period (day and season) SunSpeed = m_SunCycle/SecondsPerSunCycle; SeasonSpeed = m_SeasonalCycle/SecondsPerYear; // Horizon translation HorizonShift = m_HorizonShift; // Z axis translation // HoursToRadians = (SunCycle/24)*VWTimeRatio; // Insert our event handling hooks scene.EventManager.OnFrame += SunUpdate; scene.EventManager.OnAvatarEnteringNewParcel += AvatarEnteringParcel; scene.EventManager.OnEstateToolsSunUpdate += EstateToolsSunUpdate; scene.EventManager.OnGetCurrentTimeAsLindenSunHour += GetCurrentTimeAsLindenSunHour; ready = true; m_log.Debug("[SUN]: Mode is " + m_RegionMode); m_log.Debug("[SUN]: Initialization completed. Day is " + SecondsPerSunCycle + " seconds, and year is " + m_YearLengthDays + " days"); m_log.Debug("[SUN]: Axis offset is " + m_HorizonShift); m_log.Debug("[SUN]: Percentage of time for daylight " + m_DayTimeSunHourScale); m_log.Debug("[SUN]: Positional data updated every " + m_UpdateInterval + " frames"); break; } scene.RegisterModuleInterface<ISunModule>(this); }
public void Initialise(Scene scene, IConfigSource config) { m_scene = scene; IConfig myConfig = config.Configs["Startup"]; string permissionModules = myConfig.GetString("permissionmodules", "DefaultPermissionsModule"); List<string> modules=new List<string>(permissionModules.Split(',')); if (!modules.Contains("DefaultPermissionsModule")) return; m_allowGridGods = myConfig.GetBoolean("allow_grid_gods", false); m_bypassPermissions = !myConfig.GetBoolean("serverside_object_permissions", false); m_propagatePermissions = myConfig.GetBoolean("propagate_permissions", true); m_RegionOwnerIsGod = myConfig.GetBoolean("region_owner_is_god", true); m_RegionManagerIsGod = myConfig.GetBoolean("region_manager_is_god", false); m_ParcelOwnerIsGod = myConfig.GetBoolean("parcel_owner_is_god", true); m_allowedScriptCreators = ParseUserSetConfigSetting(myConfig, "allowed_script_creators", m_allowedScriptCreators); m_allowedScriptEditors = ParseUserSetConfigSetting(myConfig, "allowed_script_editors", m_allowedScriptEditors); if (m_bypassPermissions) m_log.Info("[PERMISSIONS]: serviceside_object_permissions = false in ini file so disabling all region service permission checks"); else m_log.Debug("[PERMISSIONS]: Enabling all region service permission checks"); //Register functions with Scene External Checks! m_scene.Permissions.OnBypassPermissions += BypassPermissions; m_scene.Permissions.OnSetBypassPermissions += SetBypassPermissions; m_scene.Permissions.OnPropagatePermissions += PropagatePermissions; m_scene.Permissions.OnGenerateClientFlags += GenerateClientFlags; m_scene.Permissions.OnAbandonParcel += CanAbandonParcel; m_scene.Permissions.OnReclaimParcel += CanReclaimParcel; m_scene.Permissions.OnDeedParcel += CanDeedParcel; m_scene.Permissions.OnDeedObject += CanDeedObject; m_scene.Permissions.OnIsGod += IsGod; m_scene.Permissions.OnDuplicateObject += CanDuplicateObject; m_scene.Permissions.OnDeleteObject += CanDeleteObject; //MAYBE FULLY IMPLEMENTED m_scene.Permissions.OnEditObject += CanEditObject; //MAYBE FULLY IMPLEMENTED m_scene.Permissions.OnEditParcel += CanEditParcel; //MAYBE FULLY IMPLEMENTED m_scene.Permissions.OnInstantMessage += CanInstantMessage; m_scene.Permissions.OnInventoryTransfer += CanInventoryTransfer; //NOT YET IMPLEMENTED m_scene.Permissions.OnIssueEstateCommand += CanIssueEstateCommand; //FULLY IMPLEMENTED m_scene.Permissions.OnMoveObject += CanMoveObject; //MAYBE FULLY IMPLEMENTED m_scene.Permissions.OnObjectEntry += CanObjectEntry; m_scene.Permissions.OnReturnObjects += CanReturnObjects; //NOT YET IMPLEMENTED m_scene.Permissions.OnRezObject += CanRezObject; //MAYBE FULLY IMPLEMENTED m_scene.Permissions.OnRunConsoleCommand += CanRunConsoleCommand; m_scene.Permissions.OnRunScript += CanRunScript; //NOT YET IMPLEMENTED m_scene.Permissions.OnCompileScript += CanCompileScript; m_scene.Permissions.OnSellParcel += CanSellParcel; m_scene.Permissions.OnTakeObject += CanTakeObject; m_scene.Permissions.OnTakeCopyObject += CanTakeCopyObject; m_scene.Permissions.OnTerraformLand += CanTerraformLand; m_scene.Permissions.OnLinkObject += CanLinkObject; //NOT YET IMPLEMENTED m_scene.Permissions.OnDelinkObject += CanDelinkObject; //NOT YET IMPLEMENTED m_scene.Permissions.OnBuyLand += CanBuyLand; //NOT YET IMPLEMENTED m_scene.Permissions.OnViewNotecard += CanViewNotecard; //NOT YET IMPLEMENTED m_scene.Permissions.OnViewScript += CanViewScript; //NOT YET IMPLEMENTED m_scene.Permissions.OnEditNotecard += CanEditNotecard; //NOT YET IMPLEMENTED m_scene.Permissions.OnEditScript += CanEditScript; //NOT YET IMPLEMENTED m_scene.Permissions.OnCreateObjectInventory += CanCreateObjectInventory; //NOT IMPLEMENTED HERE m_scene.Permissions.OnEditObjectInventory += CanEditObjectInventory;//MAYBE FULLY IMPLEMENTED m_scene.Permissions.OnCopyObjectInventory += CanCopyObjectInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnDeleteObjectInventory += CanDeleteObjectInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnResetScript += CanResetScript; m_scene.Permissions.OnCreateUserInventory += CanCreateUserInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnCopyUserInventory += CanCopyUserInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnEditUserInventory += CanEditUserInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnDeleteUserInventory += CanDeleteUserInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnTeleport += CanTeleport; //NOT YET IMPLEMENTED m_scene.AddCommand(this, "bypass permissions", "bypass permissions <true / false>", "Bypass permission checks", HandleBypassPermissions); m_scene.AddCommand(this, "force permissions", "force permissions <true / false>", "Force permissions on or off", HandleForcePermissions); m_scene.AddCommand(this, "debug permissions", "debug permissions <true / false>", "Enable permissions debugging", HandleDebugPermissions); string grant = myConfig.GetString("GrantLSL",""); if (grant.Length > 0) { foreach (string uuidl in grant.Split(',')) { string uuid = uuidl.Trim(" \t".ToCharArray()); GrantLSL.Add(uuid, true); } } grant = myConfig.GetString("GrantCS",""); if (grant.Length > 0) { foreach (string uuidl in grant.Split(',')) { string uuid = uuidl.Trim(" \t".ToCharArray()); GrantCS.Add(uuid, true); } } grant = myConfig.GetString("GrantVB",""); if (grant.Length > 0) { foreach (string uuidl in grant.Split(',')) { string uuid = uuidl.Trim(" \t".ToCharArray()); GrantVB.Add(uuid, true); } } grant = myConfig.GetString("GrantJS", ""); if (grant.Length > 0) { foreach (string uuidl in grant.Split(',')) { string uuid = uuidl.Trim(" \t".ToCharArray()); GrantJS.Add(uuid, true); } } grant = myConfig.GetString("GrantYP", ""); if (grant.Length > 0) { foreach (string uuidl in grant.Split(',')) { string uuid = uuidl.Trim(" \t".ToCharArray()); GrantYP.Add(uuid, true); } } }
public void RegionLoaded(Scene scene) { // m_log.DebugFormat("[ATTACHMENTS COMMAND MODULE]: REGION {0} LOADED", scene.RegionInfo.RegionName); m_scenes.Add(scene); scene.AddCommand( "Users", this, "attachments show", "attachments show [<first-name> <last-name>]", "Show attachment information for avatars in this simulator.", "If no name is supplied then information for all avatars is shown.", HandleShowAttachmentsCommand); }
public void AddRegion(Scene scene) { if (m_scenes.Count == 0) { scene.RegisterModuleInterface<IInventoryArchiverModule>(this); OnInventoryArchiveSaved += SaveInvConsoleCommandCompleted; scene.AddCommand( this, "load iar", "load iar <first> <last> <inventory path> <password> [<IAR path>]", //"load iar [--merge] <first> <last> <inventory path> <password> [<IAR path>]", "Load user inventory archive (IAR).", //"--merge is an option which merges the loaded IAR with existing inventory folders where possible, rather than always creating new ones" //+ "<first> is user's first name." + Environment.NewLine "<first> is user's first name." + Environment.NewLine + "<last> is user's last name." + Environment.NewLine + "<inventory path> is the path inside the user's inventory where the IAR should be loaded." + Environment.NewLine + "<password> is the user's password." + Environment.NewLine + "<IAR path> is the filesystem path or URI from which to load the IAR." + string.Format(" If this is not given then the filename {0} in the current directory is used", DEFAULT_INV_BACKUP_FILENAME), HandleLoadInvConsoleCommand); scene.AddCommand( this, "save iar", "save iar <first> <last> <inventory path> <password> [<IAR path>]", "Save user inventory archive (IAR).", "<first> is the user's first name." + Environment.NewLine + "<last> is the user's last name." + Environment.NewLine + "<inventory path> is the path inside the user's inventory for the folder/item to be saved." + Environment.NewLine + "<IAR path> is the filesystem path at which to save the IAR." + string.Format(" If this is not given then the filename {0} in the current directory is used", DEFAULT_INV_BACKUP_FILENAME), HandleSaveInvConsoleCommand); scene.AddCommand( this, "save iar withoutassets", "save iar withoutassets <first> <last> <inventory path> <password> [<IAR path>]", "Save user inventory archive (IAR) withOUT assets. This version will NOT load on another grid/standalone other than the current grid/standalone!", "<first> is the user's first name." + Environment.NewLine + "<last> is the user's last name." + Environment.NewLine + "<inventory path> is the path inside the user's inventory for the folder/item to be saved." + Environment.NewLine + "<IAR path> is the filesystem path at which to save the IAR." + string.Format(" If this is not given then the filename {0} in the current directory is used", DEFAULT_INV_BACKUP_FILENAME), HandleSaveInvWOAssetsConsoleCommand); m_aScene = scene; } m_scenes[scene.RegionInfo.RegionID] = scene; }
public void AddRegion(Scene scene) { m_scene = scene; //if (m_bypassPermissions) //m_log.Info("[PERMISSIONS]: serviceside_object_permissions = false in ini file so disabling all region service permission checks"); //else //m_log.Debug("[PERMISSIONS]: Enabling all region service permission checks"); //Register functions with Scene External Checks! m_scene.Permissions.OnBypassPermissions += BypassPermissions; m_scene.Permissions.OnSetBypassPermissions += SetBypassPermissions; m_scene.Permissions.OnPropagatePermissions += PropagatePermissions; m_scene.Permissions.OnGenerateClientFlags += GenerateClientFlags; m_scene.Permissions.OnAbandonParcel += CanAbandonParcel; m_scene.Permissions.OnReclaimParcel += CanReclaimParcel; m_scene.Permissions.OnDeedParcel += CanDeedParcel; m_scene.Permissions.OnDeedObject += CanDeedObject; m_scene.Permissions.OnIsGod += IsGod; m_scene.Permissions.OnIsAdministrator += IsAdministrator; m_scene.Permissions.OnDuplicateObject += CanDuplicateObject; m_scene.Permissions.OnDeleteObject += CanDeleteObject; m_scene.Permissions.OnEditObject += CanEditObject; //MAYBE FULLY IMPLEMENTED m_scene.Permissions.OnEditParcel += CanEditParcel; m_scene.Permissions.OnInstantMessage += CanInstantMessage; m_scene.Permissions.OnInventoryTransfer += CanInventoryTransfer; //NOT YET IMPLEMENTED m_scene.Permissions.OnIssueEstateCommand += CanIssueEstateCommand; m_scene.Permissions.OnMoveObject += CanMoveObject; m_scene.Permissions.OnObjectEntry += CanObjectEntry; m_scene.Permissions.OnReturnObjects += CanReturnObjects; m_scene.Permissions.OnRezObject += CanRezObject; m_scene.Permissions.OnRunConsoleCommand += CanRunConsoleCommand; m_scene.Permissions.OnRunScript += CanRunScript; m_scene.Permissions.OnCompileScript += CanCompileScript; m_scene.Permissions.OnSellParcel += CanSellParcel; m_scene.Permissions.OnTakeObject += CanTakeObject; m_scene.Permissions.OnTakeCopyObject += CanTakeCopyObject; m_scene.Permissions.OnTerraformLand += CanTerraformLand; m_scene.Permissions.OnLinkObject += CanLinkObject; //MAYBE FULLY IMPLEMENTED m_scene.Permissions.OnDelinkObject += CanDelinkObject; //MAYBE FULLY IMPLEMENTED m_scene.Permissions.OnBuyLand += CanBuyLand; //NOT YET IMPLEMENTED m_scene.Permissions.OnViewNotecard += CanViewNotecard; m_scene.Permissions.OnViewScript += CanViewScript; m_scene.Permissions.OnEditNotecard += CanEditNotecard; m_scene.Permissions.OnEditScript += CanEditScript; m_scene.Permissions.OnCreateObjectInventory += CanCreateObjectInventory; m_scene.Permissions.OnEditObjectInventory += CanEditObjectInventory; m_scene.Permissions.OnCopyObjectInventory += CanCopyObjectInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnDeleteObjectInventory += CanDeleteObjectInventory; m_scene.Permissions.OnResetScript += CanResetScript; m_scene.Permissions.OnCreateUserInventory += CanCreateUserInventory; m_scene.Permissions.OnCopyUserInventory += CanCopyUserInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnEditUserInventory += CanEditUserInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnDeleteUserInventory += CanDeleteUserInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnControlPrimMedia += CanControlPrimMedia; m_scene.Permissions.OnInteractWithPrimMedia += CanInteractWithPrimMedia; m_scene.Permissions.OnTeleport += CanTeleport; m_scene.Permissions.OnPushObject += CanPushObject; m_scene.Permissions.OnViewObjectOwners += CanViewObjectOwners; m_scene.Permissions.OnEditParcelAccessList += CanEditParcelAccessList; m_scene.Permissions.OnGenericParcelHandler += GenericParcelPermission; m_scene.Permissions.OnTakeLandmark += TakeLandmark; m_scene.Permissions.OnSetHomePoint += SetHomePoint; m_scene.AddCommand(this, "bypass permissions", "bypass permissions <true / false>", "Bypass permission checks", HandleBypassPermissions); m_scene.AddCommand(this, "force permissions", "force permissions <true / false>", "Force permissions on or off", HandleForcePermissions); m_scene.AddCommand(this, "debug permissions", "debug permissions <true / false>", "Enable permissions debugging", HandleDebugPermissions); string grant = PermissionsConfig.GetString("GrantLSL", ""); if (grant.Length > 0) { foreach (string uuidl in grant.Split(',')) { string uuid = uuidl.Trim(" \t".ToCharArray()); GrantLSL.Add(uuid, true); } } grant = PermissionsConfig.GetString("GrantCS", ""); if (grant.Length > 0) { foreach (string uuidl in grant.Split(',')) { string uuid = uuidl.Trim(" \t".ToCharArray()); GrantCS.Add(uuid, true); } } grant = PermissionsConfig.GetString("GrantVB", ""); if (grant.Length > 0) { foreach (string uuidl in grant.Split(',')) { string uuid = uuidl.Trim(" \t".ToCharArray()); GrantVB.Add(uuid, true); } } grant = PermissionsConfig.GetString("GrantJS", ""); if (grant.Length > 0) { foreach (string uuidl in grant.Split(',')) { string uuid = uuidl.Trim(" \t".ToCharArray()); GrantJS.Add(uuid, true); } } grant = PermissionsConfig.GetString("GrantYP", ""); if (grant.Length > 0) { foreach (string uuidl in grant.Split(',')) { string uuid = uuidl.Trim(" \t".ToCharArray()); GrantYP.Add(uuid, true); } } }
public void AddRegion(Scene scene) { if (!m_enabled) return; m_scene = scene; m_frame = 0; // Register all the Wind Model Plug-ins foreach (IWindModelPlugin windPlugin in AddinManager.GetExtensionObjects("/OpenSim/WindModule", false)) { m_log.InfoFormat("[WIND] Found Plugin: {0}", windPlugin.Name); m_availableWindPlugins.Add(windPlugin.Name, windPlugin); } // Check for desired plugin if (m_availableWindPlugins.ContainsKey(m_dWindPluginName)) { m_activeWindPlugin = m_availableWindPlugins[m_dWindPluginName]; m_log.InfoFormat("[WIND] {0} plugin found, initializing.", m_dWindPluginName); if (m_windConfig != null) { m_activeWindPlugin.Initialise(); m_activeWindPlugin.WindConfig(m_scene, m_windConfig); } } // if the plug-in wasn't found, default to no wind. if (m_activeWindPlugin == null) { m_log.ErrorFormat("[WIND] Could not find specified wind plug-in: {0}", m_dWindPluginName); m_log.ErrorFormat("[WIND] Defaulting to no wind."); } // This one puts an entry in the main help screen // m_scene.AddCommand("Regions", this, "wind", "wind", "Usage: wind <plugin> <param> [value] - Get or Update Wind paramaters", null); // This one enables the ability to type just the base command without any parameters // m_scene.AddCommand("Regions", this, "wind", "", "", HandleConsoleCommand); // Get a list of the parameters for each plugin foreach (IWindModelPlugin windPlugin in m_availableWindPlugins.Values) { // m_scene.AddCommand("Regions", this, String.Format("wind base wind_plugin {0}", windPlugin.Name), String.Format("{0} - {1}", windPlugin.Name, windPlugin.Description), "", HandleConsoleBaseCommand); m_scene.AddCommand( "Regions", this, "wind base wind_update_rate", "wind base wind_update_rate [<value>]", "Get or set the wind update rate.", "", HandleConsoleBaseCommand); foreach (KeyValuePair<string, string> kvp in windPlugin.WindParams()) { string windCommand = String.Format("wind {0} {1}", windPlugin.Name, kvp.Key); m_scene.AddCommand("Regions", this, windCommand, string.Format("{0} [<value>]", windCommand), kvp.Value, "", HandleConsoleParamCommand); } } // Register event handlers for when Avatars enter the region, and frame ticks m_scene.EventManager.OnFrame += WindUpdate; m_scene.EventManager.OnMakeRootAgent += OnAgentEnteredRegion; // Register the wind module m_scene.RegisterModuleInterface<IWindModule>(this); // Generate initial wind values GenWindPos(); // Mark Module Ready for duty m_ready = true; }
public void AddRegion(Scene scene) { if (m_scenes.Count == 0) { scene.RegisterModuleInterface<IInventoryArchiverModule>(this); OnInventoryArchiveSaved += SaveInvConsoleCommandCompleted; scene.AddCommand( "Archiving", this, "load iar", "load iar [-m|--merge] <first> <last> <inventory path> <password> [<IAR path>]", "Load user inventory archive (IAR).", "-m|--merge is an option which merges the loaded IAR with existing inventory folders where possible, rather than always creating new ones" + "<first> is user's first name." + Environment.NewLine + "<last> is user's last name." + Environment.NewLine + "<inventory path> is the path inside the user's inventory where the IAR should be loaded." + Environment.NewLine + "<password> is the user's password." + Environment.NewLine + "<IAR path> is the filesystem path or URI from which to load the IAR." + string.Format(" If this is not given then the filename {0} in the current directory is used", DEFAULT_INV_BACKUP_FILENAME), HandleLoadInvConsoleCommand); scene.AddCommand( "Archiving", this, "save iar", "save iar [-h|--home=<url>] [--noassets] <first> <last> <inventory path> <password> [<IAR path>] [-c|--creators] [-e|--exclude=<name/uuid>] [-f|--excludefolder=<foldername/uuid>] [-v|--verbose]", "Save user inventory archive (IAR).", "<first> is the user's first name.\n" + "<last> is the user's last name.\n" + "<inventory path> is the path inside the user's inventory for the folder/item to be saved.\n" + "<IAR path> is the filesystem path at which to save the IAR." + string.Format(" If this is not given then the filename {0} in the current directory is used.\n", DEFAULT_INV_BACKUP_FILENAME) + "-h|--home=<url> adds the url of the profile service to the saved user information.\n" + "-c|--creators preserves information about foreign creators.\n" + "-e|--exclude=<name/uuid> don't save the inventory item in archive" + Environment.NewLine + "-f|--excludefolder=<folder/uuid> don't save contents of the folder in archive" + Environment.NewLine + "-v|--verbose extra debug messages.\n" + "--noassets stops assets being saved to the IAR.", HandleSaveInvConsoleCommand); m_aScene = scene; } m_scenes[scene.RegionInfo.RegionID] = scene; }
public void Initialise(Scene scene, IConfigSource config) { IConfig windConfig = config.Configs["Wind"]; string desiredWindPlugin = m_dWindPluginName; if (windConfig != null) { m_enabled = windConfig.GetBoolean("enabled", true); m_frameUpdateRate = windConfig.GetInt("wind_update_rate", 150); // Determine which wind model plugin is desired if (windConfig.Contains("wind_plugin")) { desiredWindPlugin = windConfig.GetString("wind_plugin"); } } if (m_enabled) { m_log.InfoFormat("[WIND] Enabled with an update rate of {0} frames.", m_frameUpdateRate); m_scene = scene; m_frame = 0; // Register all the Wind Model Plug-ins foreach (IWindModelPlugin windPlugin in AddinManager.GetExtensionObjects("/OpenSim/WindModule", false)) { m_log.InfoFormat("[WIND] Found Plugin: {0}", windPlugin.Name); m_availableWindPlugins.Add(windPlugin.Name, windPlugin); } // Check for desired plugin if (m_availableWindPlugins.ContainsKey(desiredWindPlugin)) { m_activeWindPlugin = m_availableWindPlugins[desiredWindPlugin]; m_log.InfoFormat("[WIND] {0} plugin found, initializing.", desiredWindPlugin); if (windConfig != null) { m_activeWindPlugin.Initialise(); m_activeWindPlugin.WindConfig(m_scene, windConfig); } } // if the plug-in wasn't found, default to no wind. if (m_activeWindPlugin == null) { m_log.ErrorFormat("[WIND] Could not find specified wind plug-in: {0}", desiredWindPlugin); m_log.ErrorFormat("[WIND] Defaulting to no wind."); } // This one puts an entry in the main help screen m_scene.AddCommand(this, String.Empty, "wind", "Usage: wind <plugin> <param> [value] - Get or Update Wind paramaters", null); // This one enables the ability to type just the base command without any parameters m_scene.AddCommand(this, "wind", "", "", HandleConsoleCommand); // Get a list of the parameters for each plugin foreach (IWindModelPlugin windPlugin in m_availableWindPlugins.Values) { m_scene.AddCommand(this, String.Format("wind base wind_plugin {0}", windPlugin.Name), String.Format("{0} - {1}", windPlugin.Name, windPlugin.Description), "", HandleConsoleBaseCommand); m_scene.AddCommand(this, String.Format("wind base wind_update_rate"), "Change the wind update rate.", "", HandleConsoleBaseCommand); foreach (KeyValuePair<string, string> kvp in windPlugin.WindParams()) { m_scene.AddCommand(this, String.Format("wind {0} {1}", windPlugin.Name, kvp.Key), String.Format("{0} : {1} - {2}", windPlugin.Name, kvp.Key, kvp.Value), "", HandleConsoleParamCommand); } } // Register event handlers for when Avatars enter the region, and frame ticks m_scene.EventManager.OnFrame += WindUpdate; m_scene.EventManager.OnMakeRootAgent += OnAgentEnteredRegion; // Register the wind module m_scene.RegisterModuleInterface<IWindModule>(this); // Generate initial wind values GenWindPos(); // Mark Module Ready for duty m_ready = true; } }
public void AddRegion(Scene scene) { // m_log.DebugFormat("[LINDEN UDP INFO MODULE]: REGION {0} ADDED", scene.RegionInfo.RegionName); lock (m_scenes) m_scenes[scene.RegionInfo.RegionID] = scene; scene.AddCommand( this, "show pqueues", "show pqueues [full]", "Show priority queue data for each client", "Without the 'full' option, only root agents are shown." + " With the 'full' option child agents are also shown.", (mod, cmd) => MainConsole.Instance.Output(GetPQueuesReport(cmd))); scene.AddCommand( this, "show queues", "show queues [full]", "Show queue data for each client", "Without the 'full' option, only root agents are shown." + " With the 'full' option child agents are also shown.", (mod, cmd) => MainConsole.Instance.Output(GetQueuesReport(cmd))); scene.AddCommand( this, "show image queues", "show image queues <first-name> <last-name>", "Show the image queues (textures downloaded via UDP) for a particular client.", (mod, cmd) => MainConsole.Instance.Output(GetImageQueuesReport(cmd))); scene.AddCommand( this, "show throttles", "show throttles [full]", "Show throttle settings for each client and for the server overall", "Without the 'full' option, only root agents are shown." + " With the 'full' option child agents are also shown.", (mod, cmd) => MainConsole.Instance.Output(GetThrottlesReport(cmd))); scene.AddCommand( this, "emergency-monitoring", "emergency-monitoring", "Go on/off emergency monitoring mode", "Go on/off emergency monitoring mode", EmergencyMonitoring); }
public virtual void AddRegion (Scene scene) { if (!m_Enabled) return; lock (scene) { m_scene = scene; m_scene.RegisterModuleInterface<IWorldMapModule>(this); m_scene.AddCommand( this, "export-map", "export-map [<path>]", "Save an image of the world map", HandleExportWorldMapConsoleCommand); AddHandlers(); } }
public void AddRegion(Scene scene) { if (!m_groupMessagingEnabled) return; scene.RegisterModuleInterface<IGroupsMessagingModule>(this); scene.AddCommand( "Debug", this, "debug groups messaging verbose", "debug groups messaging verbose <true|false>", "This setting turns on very verbose groups messaging debugging", HandleDebugGroupsMessagingVerbose); }
public void AddRegion(Scene scene) { if (m_groupsEnabled) { scene.RegisterModuleInterface<IGroupsModule>(this); scene.AddCommand( "Debug", this, "debug groups verbose", "debug groups verbose <true|false>", "This setting turns on very verbose groups debugging", HandleDebugGroupsVerbose); } }
public void AddRegion(Scene scene) { // m_log.DebugFormat("[LINDEN UDP INFO MODULE]: REGION {0} ADDED", scene.RegionInfo.RegionName); lock (m_scenes) m_scenes[scene.RegionInfo.RegionID] = scene; scene.AddCommand( "Comms", this, "show pqueues", "show pqueues [full]", "Show priority queue data for each client", "Without the 'full' option, only root agents are shown." + " With the 'full' option child agents are also shown.", (mod, cmd) => MainConsole.Instance.Output(GetPQueuesReport(cmd))); scene.AddCommand( "Comms", this, "show queues", "show queues [full]", "Show queue data for each client", "Without the 'full' option, only root agents are shown.\n" + "With the 'full' option child agents are also shown.\n\n" + "Type - Rt is a root (avatar) client whilst cd is a child (neighbour interacting) client.\n" + "Since Last In - Time in milliseconds since last packet received.\n" + "Pkts In - Number of packets processed from the client.\n" + "Pkts Out - Number of packets sent to the client.\n" + "Pkts Resent - Number of packets resent to the client.\n" + "Bytes Unacked - Number of bytes transferred to the client that are awaiting acknowledgement.\n" + "Q Pkts * - Number of packets of various types (land, wind, etc.) to be sent to the client that are waiting for available bandwidth.\n", (mod, cmd) => MainConsole.Instance.Output(GetQueuesReport(cmd))); scene.AddCommand( "Comms", this, "show image queues", "show image queues <first-name> <last-name>", "Show the image queues (textures downloaded via UDP) for a particular client.", (mod, cmd) => MainConsole.Instance.Output(GetImageQueuesReport(cmd))); scene.AddCommand( "Comms", this, "clear image queues", "clear image queues <first-name> <last-name>", "Clear the image queues (textures downloaded via UDP) for a particular client.", (mod, cmd) => MainConsole.Instance.Output(HandleImageQueuesClear(cmd))); scene.AddCommand( "Comms", this, "show throttles", "show throttles [full]", "Show throttle settings for each client and for the server overall", "Without the 'full' option, only root agents are shown." + " With the 'full' option child agents are also shown.", (mod, cmd) => MainConsole.Instance.Output(GetThrottlesReport(cmd))); scene.AddCommand( "Comms", this, "emergency-monitoring", "emergency-monitoring", "Go on/off emergency monitoring mode", "Go on/off emergency monitoring mode", HandleEmergencyMonitoring); scene.AddCommand( "Comms", this, "show client stats", "show client stats [first_name last_name]", "Show client request stats", "Without the 'first_name last_name' option, all clients are shown." + " With the 'first_name last_name' option only a specific client is shown.", (mod, cmd) => MainConsole.Instance.Output(HandleClientStatsReport(cmd))); }