private void SendItemUpdateCreate(SimClient remoteClient, InventoryItem Item) { UpdateCreateInventoryItemPacket InventoryReply = new UpdateCreateInventoryItemPacket(); InventoryReply.AgentData.AgentID = remoteClient.AgentID; InventoryReply.AgentData.SimApproved = true; InventoryReply.InventoryData = new UpdateCreateInventoryItemPacket.InventoryDataBlock[1]; InventoryReply.InventoryData[0] = new UpdateCreateInventoryItemPacket.InventoryDataBlock(); InventoryReply.InventoryData[0].ItemID = Item.ItemID; InventoryReply.InventoryData[0].AssetID = Item.AssetID; InventoryReply.InventoryData[0].CreatorID = Item.CreatorID; InventoryReply.InventoryData[0].BaseMask = FULL_MASK_PERMISSIONS; InventoryReply.InventoryData[0].CreationDate = 1000; InventoryReply.InventoryData[0].Description = _enc.GetBytes(Item.Description + "\0"); InventoryReply.InventoryData[0].EveryoneMask = FULL_MASK_PERMISSIONS; InventoryReply.InventoryData[0].Flags = 0; InventoryReply.InventoryData[0].FolderID = Item.FolderID; InventoryReply.InventoryData[0].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000"); InventoryReply.InventoryData[0].GroupMask = FULL_MASK_PERMISSIONS; InventoryReply.InventoryData[0].InvType = Item.InvType; InventoryReply.InventoryData[0].Name = _enc.GetBytes(Item.Name + "\0"); InventoryReply.InventoryData[0].NextOwnerMask = FULL_MASK_PERMISSIONS; InventoryReply.InventoryData[0].OwnerID = Item.OwnerID; InventoryReply.InventoryData[0].OwnerMask = FULL_MASK_PERMISSIONS; InventoryReply.InventoryData[0].SalePrice = 100; InventoryReply.InventoryData[0].SaleType = 0; InventoryReply.InventoryData[0].Type = Item.Type; InventoryReply.InventoryData[0].CRC = libsecondlife.Helpers.InventoryCRC(1000, 0, InventoryReply.InventoryData[0].InvType, InventoryReply.InventoryData[0].Type, InventoryReply.InventoryData[0].AssetID, InventoryReply.InventoryData[0].GroupID, 100, InventoryReply.InventoryData[0].OwnerID, InventoryReply.InventoryData[0].CreatorID, InventoryReply.InventoryData[0].ItemID, InventoryReply.InventoryData[0].FolderID, FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS); remoteClient.OutPacket(InventoryReply); }
private void SendItemCreatedPacket(LLAgent agent, LLInventoryItem item, UUID transactionID, uint callbackID) { UpdateCreateInventoryItemPacket update = new UpdateCreateInventoryItemPacket(); update.AgentData.AgentID = agent.ID; update.AgentData.SimApproved = true; if (transactionID != UUID.Zero) { update.AgentData.TransactionID = transactionID; } else { update.AgentData.TransactionID = UUID.Random(); } Permissions perms = item.Permissions; UpdateCreateInventoryItemPacket.InventoryDataBlock invData = new UpdateCreateInventoryItemPacket.InventoryDataBlock(); invData.AssetID = item.AssetID; invData.BaseMask = (uint)perms.BaseMask; invData.CallbackID = callbackID; invData.CreationDate = (int)Utils.DateTimeToUnixTime(item.CreationDate); invData.CRC = item.CRC(); invData.CreatorID = item.CreatorID; invData.Description = Utils.StringToBytes(item.Description); invData.EveryoneMask = (uint)perms.EveryoneMask; invData.Flags = item.Flags; invData.FolderID = item.ParentID; invData.GroupID = item.GroupID; invData.GroupMask = (uint)perms.GroupMask; invData.GroupOwned = item.GroupOwned; invData.InvType = (sbyte)item.InventoryType; invData.ItemID = item.ID; invData.Name = Utils.StringToBytes(item.Name); invData.NextOwnerMask = (uint)perms.NextOwnerMask; invData.OwnerID = item.OwnerID; invData.OwnerMask = (uint)perms.OwnerMask; invData.SalePrice = item.SalePrice; invData.SaleType = (byte)item.SaleType; invData.Type = (sbyte)item.AssetType; update.InventoryData = new UpdateCreateInventoryItemPacket.InventoryDataBlock[1]; update.InventoryData[0] = invData; m_log.DebugFormat("Created inventory item {0}. ItemID: {1}, AssetID: {2}, ParentID: {3}, TransactionID: {4}, CallbackID: {5}", item.Name, item.ID, item.AssetID, item.ParentID, transactionID, callbackID); m_udp.SendPacket(agent, update, ThrottleCategory.Task, false); }
public void UpdateCreateInventoryItemHandler(Packet packet, Simulator simulator) { #if DEBUG_PACKETS Console.WriteLine(packet); #endif if (iiCreationInProgress != null) { UpdateCreateInventoryItemPacket reply = (UpdateCreateInventoryItemPacket)packet; // Use internal variable references, so we don't fire off any update code by using the public accessors iiCreationInProgress._ItemID = reply.InventoryData[0].ItemID; iiCreationInProgress._GroupOwned = reply.InventoryData[0].GroupOwned; iiCreationInProgress._SaleType = reply.InventoryData[0].SaleType; iiCreationInProgress._CreationDate = reply.InventoryData[0].CreationDate; iiCreationInProgress._BaseMask = reply.InventoryData[0].BaseMask; iiCreationInProgress._Name = Helpers.FieldToString(reply.InventoryData[0].Name); iiCreationInProgress._InvType = reply.InventoryData[0].InvType; iiCreationInProgress._Type = reply.InventoryData[0].Type; iiCreationInProgress._AssetID = reply.InventoryData[0].AssetID; iiCreationInProgress._GroupID = reply.InventoryData[0].GroupID; iiCreationInProgress._SalePrice = reply.InventoryData[0].SalePrice; iiCreationInProgress._OwnerID = reply.InventoryData[0].OwnerID; iiCreationInProgress._CreatorID = reply.InventoryData[0].CreatorID; iiCreationInProgress._ItemID = reply.InventoryData[0].ItemID; iiCreationInProgress._FolderID = reply.InventoryData[0].FolderID; iiCreationInProgress._EveryoneMask = reply.InventoryData[0].EveryoneMask; iiCreationInProgress._Description = Helpers.FieldToString(reply.InventoryData[0].Description); iiCreationInProgress._NextOwnerMask = reply.InventoryData[0].NextOwnerMask; iiCreationInProgress._GroupMask = reply.InventoryData[0].GroupMask; iiCreationInProgress._OwnerMask = reply.InventoryData[0].OwnerMask; // NOT USED YET: iiCreationInProgress._CallbackID = reply.InventoryData[0].CallbackID; ItemCreationCompleted.Set(); } else { Console.WriteLine(packet); throw new Exception("Received a packet for item creation, but no such response was expected. This is probably a bad thing..."); } }
private void SendItemCreatedPacket(LLAgent agent, LLInventoryItem item, UUID transactionID, uint callbackID) { UpdateCreateInventoryItemPacket update = new UpdateCreateInventoryItemPacket(); update.AgentData.AgentID = agent.ID; update.AgentData.SimApproved = true; if (transactionID != UUID.Zero) update.AgentData.TransactionID = transactionID; else update.AgentData.TransactionID = UUID.Random(); Permissions perms = item.Permissions; UpdateCreateInventoryItemPacket.InventoryDataBlock invData = new UpdateCreateInventoryItemPacket.InventoryDataBlock(); invData.AssetID = item.AssetID; invData.BaseMask = (uint)perms.BaseMask; invData.CallbackID = callbackID; invData.CreationDate = (int)Utils.DateTimeToUnixTime(item.CreationDate); invData.CRC = item.CRC(); invData.CreatorID = item.CreatorID; invData.Description = Utils.StringToBytes(item.Description); invData.EveryoneMask = (uint)perms.EveryoneMask; invData.Flags = item.Flags; invData.FolderID = item.ParentID; invData.GroupID = item.GroupID; invData.GroupMask = (uint)perms.GroupMask; invData.GroupOwned = item.GroupOwned; invData.InvType = (sbyte)item.InventoryType; invData.ItemID = item.ID; invData.Name = Utils.StringToBytes(item.Name); invData.NextOwnerMask = (uint)perms.NextOwnerMask; invData.OwnerID = item.OwnerID; invData.OwnerMask = (uint)perms.OwnerMask; invData.SalePrice = item.SalePrice; invData.SaleType = (byte)item.SaleType; invData.Type = (sbyte)item.AssetType; update.InventoryData = new UpdateCreateInventoryItemPacket.InventoryDataBlock[1]; update.InventoryData[0] = invData; m_log.DebugFormat("Created inventory item {0}. ItemID: {1}, AssetID: {2}, ParentID: {3}, TransactionID: {4}, CallbackID: {5}", item.Name, item.ID, item.AssetID, item.ParentID, transactionID, callbackID); m_udp.SendPacket(agent, update, ThrottleCategory.Task, false); }