add support for multiple attachments
This commit is contained in:
parent
49b0f10a8a
commit
3cb9b794a5
4 changed files with 1498 additions and 1493 deletions
|
|
@ -2155,6 +2155,10 @@ namespace OpenMetaverse
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
GetFolderWearables(COF.UUID, out List<InventoryWearable> wearables, out List<InventoryItem> attachments);
|
||||
Client.Appearance.AddAttachments(attachments, false, false);
|
||||
|
||||
return COF;
|
||||
}
|
||||
|
||||
|
|
@ -2396,40 +2400,29 @@ namespace OpenMetaverse
|
|||
{
|
||||
wearables = new List<InventoryWearable>();
|
||||
attachments = new List<InventoryItem>();
|
||||
var objects = Client.Inventory.FolderContents(folder, Client.Self.AgentID, false, true,
|
||||
InventorySortOrder.ByName, INVENTORY_TIMEOUT);
|
||||
|
||||
if (objects != null)
|
||||
KeyValuePair<string, List<InventoryBase>> reply = Client.Inventory.FolderContentsWithReply(folder, Client.Self.AgentID, true, true, InventorySortOrder.ByName, INVENTORY_TIMEOUT, false);
|
||||
foreach(InventoryBase entry in reply.Value)
|
||||
{
|
||||
foreach (var ib in objects)
|
||||
if(entry is InventoryWearable wearable)
|
||||
{
|
||||
if (ib is InventoryWearable wearable)
|
||||
{
|
||||
Logger.DebugLog("Adding wearable " + wearable.Name, Client);
|
||||
wearables.Add(wearable);
|
||||
}
|
||||
else if (ib is InventoryAttachment attachment)
|
||||
{
|
||||
Logger.DebugLog("Adding attachment (attachment) " + attachment.Name, Client);
|
||||
attachments.Add(attachment);
|
||||
}
|
||||
else if (ib is InventoryObject inventoryObject)
|
||||
{
|
||||
Logger.DebugLog("Adding attachment (object) " + inventoryObject.Name, Client);
|
||||
attachments.Add(inventoryObject);
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.DebugLog("Ignoring inventory item " + ib.Name, Client);
|
||||
}
|
||||
Logger.DebugLog("Adding wearable " + wearable.Name, Client);
|
||||
wearables.Add(wearable);
|
||||
}
|
||||
else if (entry is InventoryAttachment attachment)
|
||||
{
|
||||
Logger.DebugLog("Adding attachment (attachment) " + attachment.Name, Client);
|
||||
attachments.Add(attachment);
|
||||
}
|
||||
else if (entry is InventoryObject inventoryObject)
|
||||
{
|
||||
Logger.DebugLog("Adding attachment (object) " + inventoryObject.Name, Client);
|
||||
attachments.Add(inventoryObject);
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.DebugLog("Ignoring inventory item " + entry.Name, Client);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Log("Failed to download folder contents of + " + folder, Helpers.LogLevel.Error, Client);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -76676,6 +76676,7 @@ namespace OpenMetaverse.Packets
|
|||
public byte[] MediaURL;
|
||||
public byte[] PSBlock;
|
||||
public byte[] ExtraParams;
|
||||
public string A_TextDecoded;
|
||||
public UUID Sound;
|
||||
public UUID OwnerID;
|
||||
public float Gain;
|
||||
|
|
@ -76760,6 +76761,11 @@ namespace OpenMetaverse.Packets
|
|||
length = bytes[i++];
|
||||
Text = new byte[length];
|
||||
Buffer.BlockCopy(bytes, i, Text, 0, length); i += length;
|
||||
A_TextDecoded = "";
|
||||
if (Text.Length > 0)
|
||||
{
|
||||
A_TextDecoded = Utils.BytesToString(Text);
|
||||
}
|
||||
TextColor = new byte[4];
|
||||
Buffer.BlockCopy(bytes, i, TextColor, 0, 4); i += 4;
|
||||
length = bytes[i++];
|
||||
|
|
|
|||
|
|
@ -836,32 +836,39 @@ namespace SecondBotEvents.Services
|
|||
{
|
||||
return;
|
||||
}
|
||||
ITextChannel statusChannel = GetChannel("status", StatusPrefill(), "bot");
|
||||
if ((e.changed == false) && (LastStatusMessageId != 0))
|
||||
try
|
||||
{
|
||||
ITextChannel statusChannel = GetChannel("status", StatusPrefill(), "bot");
|
||||
if ((e.changed == false) && (LastStatusMessageId != 0))
|
||||
{
|
||||
if (dif < 15)
|
||||
{
|
||||
return;
|
||||
}
|
||||
LastUpdatedSystemStatus = SecondbotHelpers.UnixTimeNow();
|
||||
if (messageHasEndDot == false)
|
||||
{
|
||||
await statusChannel.
|
||||
ModifyMessageAsync(LastStatusMessageId, m => m.Content = LastMessageContent + ".");
|
||||
messageHasEndDot = true;
|
||||
return;
|
||||
}
|
||||
await statusChannel.
|
||||
ModifyMessageAsync(LastStatusMessageId, m => m.Content = LastMessageContent);
|
||||
messageHasEndDot = false;
|
||||
return;
|
||||
}
|
||||
if (dif < 15)
|
||||
{
|
||||
return;
|
||||
}
|
||||
LastUpdatedSystemStatus = SecondbotHelpers.UnixTimeNow();
|
||||
if (messageHasEndDot == false)
|
||||
{
|
||||
await statusChannel.
|
||||
ModifyMessageAsync(LastStatusMessageId, m => m.Content = LastMessageContent + ".");
|
||||
messageHasEndDot = true;
|
||||
return;
|
||||
}
|
||||
await statusChannel.
|
||||
ModifyMessageAsync(LastStatusMessageId, m => m.Content = LastMessageContent);
|
||||
messageHasEndDot = false;
|
||||
return;
|
||||
LastStatusMessageId = SendMessageToChannel(statusChannel, e.message);
|
||||
LastMessageContent = e.message;
|
||||
}
|
||||
if (dif < 15)
|
||||
catch
|
||||
{
|
||||
return;
|
||||
}
|
||||
LastStatusMessageId = SendMessageToChannel(statusChannel, e.message);
|
||||
LastMessageContent = e.message;
|
||||
}
|
||||
|
||||
protected async void CleanChannel(ITextChannel channel)
|
||||
|
|
|
|||
Loading…
Reference in a new issue