mirror of
https://github.com/opensim/opensim.git
synced 2026-08-11 20:05:33 +08:00
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
This commit is contained in:
@@ -180,8 +180,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
|
||||
"[INVENTORY TRANSFER]: Inserting original folder {0} into agent {1}'s inventory",
|
||||
folderID, new UUID(im.toAgentID));
|
||||
|
||||
InventoryFolderBase folderCopy
|
||||
= scene.GiveInventoryFolder(receipientID, client.AgentId, folderID, UUID.Zero);
|
||||
InventoryFolderBase folderCopy
|
||||
= scene.GiveInventoryFolder(client, receipientID, client.AgentId, folderID, UUID.Zero);
|
||||
|
||||
if (folderCopy == null)
|
||||
{
|
||||
@@ -217,13 +217,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
|
||||
"into agent {1}'s inventory",
|
||||
itemID, new UUID(im.toAgentID));
|
||||
|
||||
InventoryItemBase itemCopy = scene.GiveInventoryItem(
|
||||
new UUID(im.toAgentID),
|
||||
client.AgentId, itemID);
|
||||
string message;
|
||||
InventoryItemBase itemCopy = scene.GiveInventoryItem(new UUID(im.toAgentID), client.AgentId, itemID, out message);
|
||||
|
||||
if (itemCopy == null)
|
||||
{
|
||||
client.SendAgentAlertMessage("Can't find item to give. Nothing given.", false);
|
||||
client.SendAgentAlertMessage(message, false);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -160,10 +160,22 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
private IAssetService m_assetService = null;
|
||||
|
||||
|
||||
private UUID m_defaultUser;
|
||||
|
||||
public ArchiveReadRequest(Scene scene, string loadPath, Guid requestId, Dictionary<string,object>options)
|
||||
{
|
||||
m_rootScene = scene;
|
||||
|
||||
if (options.ContainsKey("default-user"))
|
||||
{
|
||||
m_defaultUser = (UUID)options["default-user"];
|
||||
m_log.InfoFormat("Using User {0} as default user", m_defaultUser.ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
m_defaultUser = scene.RegionInfo.EstateSettings.EstateOwner;
|
||||
}
|
||||
|
||||
m_loadPath = loadPath;
|
||||
try
|
||||
{
|
||||
@@ -206,6 +218,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
m_merge = options.ContainsKey("merge");
|
||||
m_requestId = requestId;
|
||||
|
||||
m_defaultUser = scene.RegionInfo.EstateSettings.EstateOwner;
|
||||
|
||||
// Zero can never be a valid user id
|
||||
m_validUserUuids[UUID.Zero] = false;
|
||||
|
||||
@@ -562,16 +576,16 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
if (string.IsNullOrEmpty(part.CreatorData))
|
||||
{
|
||||
if (!ResolveUserUuid(scene, part.CreatorID))
|
||||
part.CreatorID = scene.RegionInfo.EstateSettings.EstateOwner;
|
||||
part.CreatorID = m_defaultUser;
|
||||
}
|
||||
if (UserManager != null)
|
||||
UserManager.AddUser(part.CreatorID, part.CreatorData);
|
||||
|
||||
if (!(ResolveUserUuid(scene, part.OwnerID) || ResolveGroupUuid(part.OwnerID)))
|
||||
part.OwnerID = scene.RegionInfo.EstateSettings.EstateOwner;
|
||||
part.OwnerID = m_defaultUser;
|
||||
|
||||
if (!(ResolveUserUuid(scene, part.LastOwnerID) || ResolveGroupUuid(part.LastOwnerID)))
|
||||
part.LastOwnerID = scene.RegionInfo.EstateSettings.EstateOwner;
|
||||
part.LastOwnerID = m_defaultUser;
|
||||
|
||||
if (!ResolveGroupUuid(part.GroupID))
|
||||
part.GroupID = UUID.Zero;
|
||||
@@ -590,13 +604,13 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
{
|
||||
if (!(ResolveUserUuid(scene, kvp.Value.OwnerID) || ResolveGroupUuid(kvp.Value.OwnerID)))
|
||||
{
|
||||
kvp.Value.OwnerID = scene.RegionInfo.EstateSettings.EstateOwner;
|
||||
kvp.Value.OwnerID = m_defaultUser;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(kvp.Value.CreatorData))
|
||||
{
|
||||
if (!ResolveUserUuid(scene, kvp.Value.CreatorID))
|
||||
kvp.Value.CreatorID = scene.RegionInfo.EstateSettings.EstateOwner;
|
||||
kvp.Value.CreatorID = m_defaultUser;
|
||||
}
|
||||
|
||||
if (UserManager != null)
|
||||
|
||||
@@ -108,6 +108,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
bool forceParcels = false;
|
||||
bool noObjects = false;
|
||||
Vector3 displacement = new Vector3(0f, 0f, 0f);
|
||||
String defaultUser = "";
|
||||
float rotation = 0f;
|
||||
Vector3 rotationCenter = new Vector3(Constants.RegionSize / 2f, Constants.RegionSize / 2f, 0);
|
||||
|
||||
@@ -119,6 +120,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
options.Add("force-parcels", delegate (string v) { forceParcels = (v != null); });
|
||||
options.Add("forceparcels", delegate (string v) { forceParcels = (v != null); }); // downward compatibility
|
||||
options.Add("no-objects", delegate (string v) { noObjects = (v != null); });
|
||||
options.Add("default-user=", delegate(string v) { defaultUser = (v == null) ? "" : v; });
|
||||
options.Add("displacement=", delegate (string v) {
|
||||
try
|
||||
{
|
||||
@@ -131,7 +133,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
return;
|
||||
}
|
||||
});
|
||||
options.Add("rotation=", delegate (string v) {
|
||||
options.Add("rotation=", delegate(string v)
|
||||
{
|
||||
try
|
||||
{
|
||||
rotation = v == null ? 0f : float.Parse(v);
|
||||
@@ -181,6 +184,27 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
if (forceTerrain) archiveOptions.Add("force-terrain", null);
|
||||
if (forceParcels) archiveOptions.Add("force-parcels", null);
|
||||
if (noObjects) archiveOptions.Add("no-objects", null);
|
||||
if (defaultUser != "")
|
||||
{
|
||||
UUID defaultUserUUID = UUID.Zero;
|
||||
try
|
||||
{
|
||||
defaultUserUUID = Scene.UserManagementModule.GetUserIdByName(defaultUser);
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_log.ErrorFormat("[ARCHIVER MODULE] default user must be in format \"First Last\"", defaultUser);
|
||||
}
|
||||
if (defaultUserUUID == UUID.Zero)
|
||||
{
|
||||
m_log.ErrorFormat("[ARCHIVER MODULE] cannot find specified default user {0}", defaultUser);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
archiveOptions.Add("default-user", defaultUserUUID);
|
||||
}
|
||||
}
|
||||
archiveOptions.Add("displacement", displacement);
|
||||
archiveOptions.Add("rotation", rotation);
|
||||
archiveOptions.Add("rotation-center", rotationCenter);
|
||||
|
||||
@@ -313,6 +313,69 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||
return response;
|
||||
}
|
||||
|
||||
public string SetRegionEstate(RegionInfo regionInfo, int estateID)
|
||||
{
|
||||
string response;
|
||||
|
||||
if (regionInfo.EstateSettings.EstateID == estateID)
|
||||
{
|
||||
response = String.Format("\"{0}\" is already part of estate {1}", regionInfo.RegionName, estateID);
|
||||
}
|
||||
else
|
||||
{
|
||||
// get the current settings from DB
|
||||
EstateSettings dbSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
|
||||
if (dbSettings.EstateID == 0)
|
||||
{
|
||||
response = String.Format("No estate found with ID {0}", estateID);
|
||||
}
|
||||
else if (Scene.EstateDataService.LinkRegion(regionInfo.RegionID, estateID))
|
||||
{
|
||||
// make sure there's a log entry to document the change
|
||||
m_log.InfoFormat("[ESTATE]: Region {0} ({1}) moved to Estate {2} ({3}).", regionInfo.RegionID, regionInfo.RegionName, estateID, dbSettings.EstateName);
|
||||
|
||||
// propagate the change
|
||||
ChangeDelegate change = OnEstateInfoChange;
|
||||
|
||||
if (change != null)
|
||||
change(regionInfo.RegionID);
|
||||
|
||||
response = String.Empty;
|
||||
}
|
||||
else
|
||||
{
|
||||
response = String.Format("Could not move \"{0}\" to estate {1}", regionInfo.RegionName, estateID);
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
public string CreateEstate(string estateName, UUID ownerID)
|
||||
{
|
||||
string response;
|
||||
if (string.IsNullOrEmpty(estateName))
|
||||
{
|
||||
response = "No estate name specified.";
|
||||
}
|
||||
else
|
||||
{
|
||||
List<int> estates = Scene.EstateDataService.GetEstates(estateName);
|
||||
if (estates.Count() > 0)
|
||||
{
|
||||
response = String.Format("An estate named \"{0}\" already exists.", estateName);
|
||||
}
|
||||
else
|
||||
{
|
||||
EstateSettings settings = Scene.EstateDataService.CreateNewEstate();
|
||||
settings.EstateOwner = ownerID;
|
||||
settings.EstateName = estateName;
|
||||
settings.Save();
|
||||
response = String.Empty;
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Packet Data Responders
|
||||
|
||||
Reference in New Issue
Block a user