diff --git a/libsecondlife/BitPack.cs b/libsecondlife/BitPack.cs index 404a37e1..a7934efb 100644 --- a/libsecondlife/BitPack.cs +++ b/libsecondlife/BitPack.cs @@ -93,6 +93,81 @@ namespace libsecondlife PackBitArray(input, totalCount); } + /// + /// Pack part or all of an unsigned integer in to the data + /// + /// Unsigned integer containing the data to pack + /// Number of bits of the integer to pack + public void PackBits(uint data, int totalCount) + { + byte[] input = BitConverter.GetBytes(data); + PackBitArray(input, totalCount); + } + + /// + /// + /// + /// + /// + /// + /// + public void PackFixed(float data, bool isSigned, int intBits, int fracBits) + { + int unsignedBits = intBits + fracBits; + int totalBits = unsignedBits; + int min, max; + + if (isSigned) + { + totalBits++; + min = 1 << intBits; + min *= -1; + } + else + { + min = 0; + } + + max = 1 << intBits; + + float fixedVal = Helpers.Clamp(data, (float)min, (float)max); + if (isSigned) fixedVal += max; + fixedVal *= 1 << fracBits; + + if (totalBits <= 8) + PackBits((uint)fixedVal, 8); + else if (totalBits <= 16) + PackBits((uint)fixedVal, 16); + else if (totalBits <= 31) + PackBits((uint)fixedVal, 32); + else + throw new Exception("Can't use fixed point packing for " + totalBits); + } + + /// + /// + /// + /// + public void PackUUID(LLUUID data) + { + byte[] bytes = data.GetBytes(); + + // Not sure if our PackBitArray function can handle 128-bit byte + //arrays, so using this for now + for (int i = 0; i < 16; i++) + PackBits(bytes[i], 8); + } + + /// + /// + /// + /// + public void PackColor(LLColor data) + { + byte[] bytes = data.GetBytes(); + PackBitArray(bytes, 32); + } + /// /// Unpacking a floating point value from the data /// diff --git a/libsecondlife/DirectoryManager.cs b/libsecondlife/DirectoryManager.cs index f053d924..5898ba1a 100644 --- a/libsecondlife/DirectoryManager.cs +++ b/libsecondlife/DirectoryManager.cs @@ -174,8 +174,6 @@ namespace libsecondlife public bool Auction; /// public bool ForSale; - /// - public bool ReservedNewbie; } public struct AgentSearchData { @@ -400,7 +398,6 @@ namespace libsecondlife dirParcel.SalePrice = block.SalePrice; dirParcel.Auction = block.Auction; dirParcel.ForSale = block.ForSale; - dirParcel.ReservedNewbie = block.ReservedNewbie; parcelsForSale.Add(dirParcel); } diff --git a/libsecondlife/LLObject.cs b/libsecondlife/LLObject.cs index e421eaf0..67bfaff5 100644 --- a/libsecondlife/LLObject.cs +++ b/libsecondlife/LLObject.cs @@ -422,7 +422,7 @@ namespace libsecondlife /// /// /// - public static float ProfileBeginFloat(byte profileBegin) + public static float ProfileBeginFloat(ushort profileBegin) { // Y = 0.005X return (float)Math.Round((double)profileBegin * 0.005d, 6); @@ -445,7 +445,7 @@ namespace libsecondlife /// /// /// - public static float ProfileEndFloat(byte profileEnd) + public static float ProfileEndFloat(ushort profileEnd) { // Y = 1 - 0.005X return (float)Math.Round(1.0d - ((double)profileEnd * 0.005d), 6); @@ -467,7 +467,7 @@ namespace libsecondlife /// /// /// - public static float PathBeginFloat(byte pathBegin) + public static float PathBeginFloat(ushort pathBegin) { // Y = X / 100 return (float)pathBegin / 100.0f; @@ -490,7 +490,7 @@ namespace libsecondlife /// /// /// - public static float PathEndFloat(byte pathEnd) + public static float PathEndFloat(ushort pathEnd) { // Y = 1 - X / 100 return 1.0f - (float)pathEnd / 100.0f; diff --git a/libsecondlife/ObjectManager.cs b/libsecondlife/ObjectManager.cs index b9c6d038..bcf1f7e9 100644 --- a/libsecondlife/ObjectManager.cs +++ b/libsecondlife/ObjectManager.cs @@ -682,7 +682,9 @@ namespace libsecondlife /// Due to the way client prim rezzing is done on the server, /// the requested position for an object is only close to where the prim /// actually ends up. If you desire exact placement you'll need to - /// follow up by moving the object after it has been created. + /// follow up by moving the object after it has been created. This + /// function will not set textures, light and flexible data, or other + /// extended primitive properties public void AddPrim(Simulator simulator, LLObject.ObjectData prim, LLUUID groupID, LLVector3 position, LLVector3 scale, LLQuaternion rotation) { @@ -726,8 +728,6 @@ namespace libsecondlife packet.ObjectData.RayTargetID = LLUUID.Zero; packet.ObjectData.BypassRaycast = 1; - // TODO: Automatically send another packet to set the TextureEntry? - Client.Network.SendPacket(packet, simulator); } diff --git a/libsecondlife/ParcelManager.cs b/libsecondlife/ParcelManager.cs index 246fa6c2..0fbd6080 100644 --- a/libsecondlife/ParcelManager.cs +++ b/libsecondlife/ParcelManager.cs @@ -227,8 +227,6 @@ namespace libsecondlife public bool IsGroupOwned; /// public uint AuctionID; - /// Reserved for the now defunct First Land program - public bool ReservedNewbie; /// Date land was claimed public DateTime ClaimDate; /// Appears to always be zero @@ -829,7 +827,6 @@ namespace libsecondlife parcel.RegionDenyTransacted = properties.ParcelData.RegionDenyTransacted; parcel.RegionPushOverride = properties.ParcelData.RegionPushOverride; parcel.RentPrice = properties.ParcelData.RentPrice; - parcel.ReservedNewbie = properties.ParcelData.ReservedNewbie; parcel.SalePrice = properties.ParcelData.SalePrice; parcel.SelectedPrims = properties.ParcelData.SelectedPrims; parcel.SelfCount = properties.ParcelData.SelfCount; diff --git a/libsecondlife/ParticleSystem.cs b/libsecondlife/ParticleSystem.cs index 3bd0c189..b4d56bec 100644 --- a/libsecondlife/ParticleSystem.cs +++ b/libsecondlife/ParticleSystem.cs @@ -33,25 +33,10 @@ namespace libsecondlife } /// - /// Flags for the particle system behavior + /// /// [Flags] - public enum ParticleSystemFlags : uint - { - /// - None = 0, - /// Acceleration and velocity for particles are - /// relative to the object rotation - ObjectRelative = 0x01, - /// Particles use new 'correct' angle parameters - UseNewAngle = 0x02 - } - - /// - /// Flags for the particles in this particle system - /// - [Flags] - public enum ParticleFlags : uint + public enum ParticleDataFlags : uint { /// None = 0, @@ -66,9 +51,9 @@ namespace libsecondlife /// FollowSrc = 0x010, /// - FollowVelocity = 0x20, + FollowVelocity = 0x020, /// - TargetPos = 0x40, + TargetPos = 0x040, /// TargetLinear = 0x080, /// @@ -77,10 +62,30 @@ namespace libsecondlife Beam = 0x200 } + /// + /// + /// + [Flags] + public enum ParticleFlags : uint + { + /// + None = 0, + /// Acceleration and velocity for particles are + /// relative to the object rotation + ObjectRelative = 0x01, + /// Particles use new 'correct' angle parameters + UseNewAngle = 0x02 + } + public uint CRC; - public SourcePattern Pattern = SourcePattern.None; - public ParticleSystemFlags Flags = ParticleSystemFlags.None; + /// + /// There appears to be more data packed in to this area + /// for many particle systems. It doesn't appear to be flag values + /// and serialization breaks unless there is a flag for every + /// possible bit so it is left as an unsigned integer + public uint PartFlags; + public SourcePattern Pattern; public float MaxAge; public float StartAge; public float InnerAngle; @@ -89,20 +94,21 @@ namespace libsecondlife public float BurstRadius; public float BurstSpeedMin; public float BurstSpeedMax; - public float BurstPartCount; + public byte BurstPartCount; public LLVector3 AngularVelocity; public LLVector3 PartAcceleration; public LLUUID Texture; public LLUUID Target; + // + public ParticleDataFlags PartDataFlags; + public float PartMaxAge; public LLColor PartStartColor; public LLColor PartEndColor; public float PartStartScaleX; public float PartStartScaleY; public float PartEndScaleX; public float PartEndScaleY; - public float PartMaxAge; - public ParticleFlags PartFlags = ParticleFlags.None; - + /// /// @@ -127,8 +133,39 @@ namespace libsecondlife /// public byte[] GetBytes() { - byte[] bytes = new byte[0]; - // FIXME: Finish ParticleSystem.GetBytes() + byte[] bytes = new byte[86]; + BitPack pack = new BitPack(bytes, 0); + + pack.PackBits(CRC, 32); + pack.PackBits((uint)PartFlags, 32); + pack.PackBits((uint)Pattern, 8); + pack.PackFixed(MaxAge, false, 8, 8); + pack.PackFixed(StartAge, false, 8, 8); + pack.PackFixed(InnerAngle, false, 3, 5); + pack.PackFixed(OuterAngle, false, 3, 5); + pack.PackFixed(BurstRate, false, 8, 8); + pack.PackFixed(BurstRadius, false, 8, 8); + pack.PackFixed(BurstSpeedMin, false, 8, 8); + pack.PackFixed(BurstSpeedMax, false, 8, 8); + pack.PackBits(BurstPartCount, 8); + pack.PackFixed(AngularVelocity.X, true, 8, 7); + pack.PackFixed(AngularVelocity.Y, true, 8, 7); + pack.PackFixed(AngularVelocity.Z, true, 8, 7); + pack.PackFixed(PartAcceleration.X, true, 8, 7); + pack.PackFixed(PartAcceleration.Y, true, 8, 7); + pack.PackFixed(PartAcceleration.Z, true, 8, 7); + pack.PackUUID(Texture); + pack.PackUUID(Target); + + pack.PackBits((uint)PartDataFlags, 32); + pack.PackFixed(MaxAge, false, 8, 8); + pack.PackColor(PartStartColor); + pack.PackColor(PartEndColor); + pack.PackFixed(PartStartScaleX, false, 3, 5); + pack.PackFixed(PartStartScaleY, false, 3, 5); + pack.PackFixed(PartEndScaleX, false, 3, 5); + pack.PackFixed(PartEndScaleY, false, 3, 5); + return bytes; } @@ -145,7 +182,7 @@ namespace libsecondlife BitPack pack = new BitPack(data, pos); CRC = pack.UnpackUBits(32); - Flags = (ParticleSystemFlags)pack.UnpackUBits(32); + PartFlags = pack.UnpackUBits(32); Pattern = (SourcePattern)pack.UnpackByte(); MaxAge = pack.UnpackFixed(false, 8, 8); StartAge = pack.UnpackFixed(false, 8, 8); @@ -155,7 +192,7 @@ namespace libsecondlife BurstRadius = pack.UnpackFixed(false, 8, 8); BurstSpeedMin = pack.UnpackFixed(false, 8, 8); BurstSpeedMax = pack.UnpackFixed(false, 8, 8); - BurstPartCount = (uint)pack.UnpackByte(); + BurstPartCount = pack.UnpackByte(); float x = pack.UnpackFixed(true, 8, 7); float y = pack.UnpackFixed(true, 8, 7); float z = pack.UnpackFixed(true, 8, 7); @@ -166,7 +203,8 @@ namespace libsecondlife PartAcceleration = new LLVector3(x, y, z); Texture = pack.UnpackUUID(); Target = pack.UnpackUUID(); - PartFlags = (ParticleFlags)pack.UnpackUBits(32); + + PartDataFlags = (ParticleDataFlags)pack.UnpackUBits(32); PartMaxAge = pack.UnpackFixed(false, 8, 8); byte r = pack.UnpackByte(); byte g = pack.UnpackByte(); diff --git a/libsecondlife/_Packets_.cs b/libsecondlife/_Packets_.cs index 149bc996..fe4c3737 100644 --- a/libsecondlife/_Packets_.cs +++ b/libsecondlife/_Packets_.cs @@ -578,7 +578,6 @@ namespace libsecondlife.Packets ParcelDwellRequest, ParcelDwellReply, ParcelGodMarkAsContent, - ParcelGodReserveForNewbie, ViewerStartAuction, UUIDNameRequest, UUIDNameReply, @@ -600,7 +599,6 @@ namespace libsecondlife.Packets LogoutDemand, ImprovedInstantMessage, RetrieveInstantMessages, - DequeueInstantMessages, FindAgent, RequestGodlikePowers, GrantGodlikePowers, @@ -667,7 +665,6 @@ namespace libsecondlife.Packets MoneyDetailsReply, MoneyTransactionsRequest, MoneyTransactionsReply, - GestureRequest, ActivateGestures, DeactivateGestures, MuteListUpdate, @@ -742,7 +739,6 @@ namespace libsecondlife.Packets UserInfoRequest, UserInfoReply, UpdateUserInfo, - GodExpungeUser, StartParcelRemoveAck, InitiateDownload, SystemMessage, @@ -775,7 +771,6 @@ namespace libsecondlife.Packets ObjectProperties, ObjectPropertiesFamily, ParcelPropertiesRequest, - GestureUpdate, AttachedSound, AttachedSoundGainChange, AttachedSoundCutoffRadius, @@ -1014,7 +1009,6 @@ namespace libsecondlife.Packets [XmlInclude(typeof(ParcelDwellRequestPacket))] [XmlInclude(typeof(ParcelDwellReplyPacket))] [XmlInclude(typeof(ParcelGodMarkAsContentPacket))] - [XmlInclude(typeof(ParcelGodReserveForNewbiePacket))] [XmlInclude(typeof(ViewerStartAuctionPacket))] [XmlInclude(typeof(UUIDNameRequestPacket))] [XmlInclude(typeof(UUIDNameReplyPacket))] @@ -1036,7 +1030,6 @@ namespace libsecondlife.Packets [XmlInclude(typeof(LogoutDemandPacket))] [XmlInclude(typeof(ImprovedInstantMessagePacket))] [XmlInclude(typeof(RetrieveInstantMessagesPacket))] - [XmlInclude(typeof(DequeueInstantMessagesPacket))] [XmlInclude(typeof(FindAgentPacket))] [XmlInclude(typeof(RequestGodlikePowersPacket))] [XmlInclude(typeof(GrantGodlikePowersPacket))] @@ -1103,7 +1096,6 @@ namespace libsecondlife.Packets [XmlInclude(typeof(MoneyDetailsReplyPacket))] [XmlInclude(typeof(MoneyTransactionsRequestPacket))] [XmlInclude(typeof(MoneyTransactionsReplyPacket))] - [XmlInclude(typeof(GestureRequestPacket))] [XmlInclude(typeof(ActivateGesturesPacket))] [XmlInclude(typeof(DeactivateGesturesPacket))] [XmlInclude(typeof(MuteListUpdatePacket))] @@ -1178,7 +1170,6 @@ namespace libsecondlife.Packets [XmlInclude(typeof(UserInfoRequestPacket))] [XmlInclude(typeof(UserInfoReplyPacket))] [XmlInclude(typeof(UpdateUserInfoPacket))] - [XmlInclude(typeof(GodExpungeUserPacket))] [XmlInclude(typeof(StartParcelRemoveAckPacket))] [XmlInclude(typeof(InitiateDownloadPacket))] [XmlInclude(typeof(SystemMessagePacket))] @@ -1211,7 +1202,6 @@ namespace libsecondlife.Packets [XmlInclude(typeof(ObjectPropertiesPacket))] [XmlInclude(typeof(ObjectPropertiesFamilyPacket))] [XmlInclude(typeof(ParcelPropertiesRequestPacket))] - [XmlInclude(typeof(GestureUpdatePacket))] [XmlInclude(typeof(AttachedSoundPacket))] [XmlInclude(typeof(AttachedSoundGainChangePacket))] [XmlInclude(typeof(AttachedSoundCutoffRadiusPacket))] @@ -1468,186 +1458,182 @@ namespace libsecondlife.Packets case 250: return PacketType.ParcelDwellRequest; case 251: return PacketType.ParcelDwellReply; case 259: return PacketType.ParcelGodMarkAsContent; - case 260: return PacketType.ParcelGodReserveForNewbie; - case 261: return PacketType.ViewerStartAuction; - case 268: return PacketType.UUIDNameRequest; - case 269: return PacketType.UUIDNameReply; - case 270: return PacketType.UUIDGroupNameRequest; - case 271: return PacketType.UUIDGroupNameReply; - case 273: return PacketType.ChildAgentDying; - case 274: return PacketType.ChildAgentUnknown; - case 276: return PacketType.GetScriptRunning; - case 277: return PacketType.ScriptRunningReply; - case 278: return PacketType.SetScriptRunning; - case 279: return PacketType.ScriptReset; - case 282: return PacketType.CompleteAgentMovement; - case 283: return PacketType.AgentMovementComplete; - case 285: return PacketType.ConnectAgentToUserserver; - case 286: return PacketType.ConnectToUserserver; - case 288: return PacketType.LogoutRequest; - case 289: return PacketType.FinalizeLogout; - case 290: return PacketType.LogoutReply; - case 291: return PacketType.LogoutDemand; - case 292: return PacketType.ImprovedInstantMessage; - case 293: return PacketType.RetrieveInstantMessages; - case 294: return PacketType.DequeueInstantMessages; - case 295: return PacketType.FindAgent; - case 296: return PacketType.RequestGodlikePowers; - case 297: return PacketType.GrantGodlikePowers; - case 298: return PacketType.GodlikeMessage; - case 299: return PacketType.EstateOwnerMessage; - case 300: return PacketType.GenericMessage; - case 301: return PacketType.MuteListRequest; - case 302: return PacketType.UpdateMuteListEntry; - case 303: return PacketType.RemoveMuteListEntry; - case 304: return PacketType.CopyInventoryFromNotecard; - case 305: return PacketType.UpdateInventoryItem; - case 306: return PacketType.UpdateCreateInventoryItem; - case 307: return PacketType.MoveInventoryItem; - case 308: return PacketType.CopyInventoryItem; - case 309: return PacketType.RemoveInventoryItem; - case 310: return PacketType.ChangeInventoryItemFlags; - case 311: return PacketType.SaveAssetIntoInventory; - case 312: return PacketType.CreateInventoryFolder; - case 313: return PacketType.UpdateInventoryFolder; - case 314: return PacketType.MoveInventoryFolder; - case 315: return PacketType.RemoveInventoryFolder; - case 316: return PacketType.FetchInventoryDescendents; - case 317: return PacketType.InventoryDescendents; - case 318: return PacketType.FetchInventory; - case 319: return PacketType.FetchInventoryReply; - case 320: return PacketType.BulkUpdateInventory; - case 321: return PacketType.RequestInventoryAsset; - case 322: return PacketType.InventoryAssetResponse; - case 323: return PacketType.RemoveInventoryObjects; - case 324: return PacketType.PurgeInventoryDescendents; - case 325: return PacketType.UpdateTaskInventory; - case 326: return PacketType.RemoveTaskInventory; - case 327: return PacketType.MoveTaskInventory; - case 328: return PacketType.RequestTaskInventory; - case 329: return PacketType.ReplyTaskInventory; - case 330: return PacketType.DeRezObject; - case 331: return PacketType.DeRezAck; - case 332: return PacketType.RezObject; - case 333: return PacketType.RezObjectFromNotecard; - case 334: return PacketType.DeclineInventory; - case 337: return PacketType.RequestFriendship; - case 338: return PacketType.AcceptFriendship; - case 339: return PacketType.DeclineFriendship; - case 340: return PacketType.FormFriendship; - case 341: return PacketType.TerminateFriendship; - case 342: return PacketType.OfferCallingCard; - case 343: return PacketType.AcceptCallingCard; - case 344: return PacketType.DeclineCallingCard; - case 345: return PacketType.RezScript; - case 346: return PacketType.CreateInventoryItem; - case 347: return PacketType.CreateLandmarkForEvent; - case 350: return PacketType.RegionHandleRequest; - case 351: return PacketType.RegionIDAndHandleReply; - case 352: return PacketType.MoneyTransferRequest; - case 355: return PacketType.AdjustBalance; - case 356: return PacketType.MoneyBalanceRequest; - case 357: return PacketType.MoneyBalanceReply; - case 358: return PacketType.RoutedMoneyBalanceReply; - case 359: return PacketType.MoneyHistoryRequest; - case 360: return PacketType.MoneyHistoryReply; - case 361: return PacketType.MoneySummaryRequest; - case 362: return PacketType.MoneySummaryReply; - case 363: return PacketType.MoneyDetailsRequest; - case 364: return PacketType.MoneyDetailsReply; - case 365: return PacketType.MoneyTransactionsRequest; - case 366: return PacketType.MoneyTransactionsReply; - case 367: return PacketType.GestureRequest; - case 368: return PacketType.ActivateGestures; - case 369: return PacketType.DeactivateGestures; - case 370: return PacketType.MuteListUpdate; - case 371: return PacketType.UseCachedMuteList; - case 372: return PacketType.GrantUserRights; - case 373: return PacketType.ChangeUserRights; - case 374: return PacketType.OnlineNotification; - case 375: return PacketType.OfflineNotification; - case 376: return PacketType.SetStartLocationRequest; - case 386: return PacketType.AssetUploadRequest; - case 387: return PacketType.AssetUploadComplete; - case 388: return PacketType.ReputationAgentAssign; - case 389: return PacketType.ReputationIndividualRequest; - case 390: return PacketType.ReputationIndividualReply; - case 395: return PacketType.CreateGroupRequest; - case 396: return PacketType.CreateGroupReply; - case 397: return PacketType.UpdateGroupInfo; - case 398: return PacketType.GroupRoleChanges; - case 399: return PacketType.JoinGroupRequest; - case 400: return PacketType.JoinGroupReply; - case 401: return PacketType.EjectGroupMemberRequest; - case 402: return PacketType.EjectGroupMemberReply; - case 403: return PacketType.LeaveGroupRequest; - case 404: return PacketType.LeaveGroupReply; - case 405: return PacketType.InviteGroupRequest; - case 407: return PacketType.GroupProfileRequest; - case 408: return PacketType.GroupProfileReply; - case 409: return PacketType.GroupAccountSummaryRequest; - case 410: return PacketType.GroupAccountSummaryReply; - case 411: return PacketType.GroupAccountDetailsRequest; - case 412: return PacketType.GroupAccountDetailsReply; - case 413: return PacketType.GroupAccountTransactionsRequest; - case 414: return PacketType.GroupAccountTransactionsReply; - case 415: return PacketType.GroupActiveProposalsRequest; - case 416: return PacketType.GroupActiveProposalItemReply; - case 417: return PacketType.GroupVoteHistoryRequest; - case 418: return PacketType.GroupVoteHistoryItemReply; - case 419: return PacketType.StartGroupProposal; - case 420: return PacketType.GroupProposalBallot; - case 422: return PacketType.GroupMembersRequest; - case 423: return PacketType.GroupMembersReply; - case 424: return PacketType.ActivateGroup; - case 425: return PacketType.SetGroupContribution; - case 426: return PacketType.SetGroupAcceptNotices; - case 427: return PacketType.GroupRoleDataRequest; - case 428: return PacketType.GroupRoleDataReply; - case 429: return PacketType.GroupRoleMembersRequest; - case 430: return PacketType.GroupRoleMembersReply; - case 431: return PacketType.GroupTitlesRequest; - case 432: return PacketType.GroupTitlesReply; - case 433: return PacketType.GroupTitleUpdate; - case 434: return PacketType.GroupRoleUpdate; - case 435: return PacketType.LiveHelpGroupRequest; - case 436: return PacketType.LiveHelpGroupReply; - case 437: return PacketType.AgentWearablesRequest; - case 438: return PacketType.AgentWearablesUpdate; - case 439: return PacketType.AgentIsNowWearing; - case 440: return PacketType.AgentCachedTexture; - case 441: return PacketType.AgentCachedTextureResponse; - case 442: return PacketType.AgentDataUpdateRequest; - case 443: return PacketType.AgentDataUpdate; - case 444: return PacketType.GroupDataUpdate; - case 445: return PacketType.AgentGroupDataUpdate; - case 446: return PacketType.AgentDropGroup; - case 448: return PacketType.CreateTrustedCircuit; - case 449: return PacketType.DenyTrustedCircuit; - case 450: return PacketType.RequestTrustedCircuit; - case 451: return PacketType.RezSingleAttachmentFromInv; - case 452: return PacketType.RezMultipleAttachmentsFromInv; - case 453: return PacketType.DetachAttachmentIntoInv; - case 454: return PacketType.CreateNewOutfitAttachments; - case 455: return PacketType.UserInfoRequest; - case 456: return PacketType.UserInfoReply; - case 457: return PacketType.UpdateUserInfo; - case 458: return PacketType.GodExpungeUser; - case 466: return PacketType.StartParcelRemoveAck; - case 468: return PacketType.InitiateDownload; - case 469: return PacketType.SystemMessage; - case 470: return PacketType.MapLayerRequest; - case 471: return PacketType.MapLayerReply; - case 472: return PacketType.MapBlockRequest; - case 473: return PacketType.MapNameRequest; - case 474: return PacketType.MapBlockReply; - case 475: return PacketType.MapItemRequest; - case 476: return PacketType.MapItemReply; - case 477: return PacketType.SendPostcard; - case 486: return PacketType.ParcelMediaCommandMessage; - case 487: return PacketType.ParcelMediaUpdate; - case 488: return PacketType.LandStatRequest; - case 489: return PacketType.LandStatReply; + case 260: return PacketType.ViewerStartAuction; + case 267: return PacketType.UUIDNameRequest; + case 268: return PacketType.UUIDNameReply; + case 269: return PacketType.UUIDGroupNameRequest; + case 270: return PacketType.UUIDGroupNameReply; + case 272: return PacketType.ChildAgentDying; + case 273: return PacketType.ChildAgentUnknown; + case 275: return PacketType.GetScriptRunning; + case 276: return PacketType.ScriptRunningReply; + case 277: return PacketType.SetScriptRunning; + case 278: return PacketType.ScriptReset; + case 281: return PacketType.CompleteAgentMovement; + case 282: return PacketType.AgentMovementComplete; + case 284: return PacketType.ConnectAgentToUserserver; + case 285: return PacketType.ConnectToUserserver; + case 287: return PacketType.LogoutRequest; + case 288: return PacketType.FinalizeLogout; + case 289: return PacketType.LogoutReply; + case 290: return PacketType.LogoutDemand; + case 291: return PacketType.ImprovedInstantMessage; + case 292: return PacketType.RetrieveInstantMessages; + case 293: return PacketType.FindAgent; + case 294: return PacketType.RequestGodlikePowers; + case 295: return PacketType.GrantGodlikePowers; + case 296: return PacketType.GodlikeMessage; + case 297: return PacketType.EstateOwnerMessage; + case 298: return PacketType.GenericMessage; + case 299: return PacketType.MuteListRequest; + case 300: return PacketType.UpdateMuteListEntry; + case 301: return PacketType.RemoveMuteListEntry; + case 302: return PacketType.CopyInventoryFromNotecard; + case 303: return PacketType.UpdateInventoryItem; + case 304: return PacketType.UpdateCreateInventoryItem; + case 305: return PacketType.MoveInventoryItem; + case 306: return PacketType.CopyInventoryItem; + case 307: return PacketType.RemoveInventoryItem; + case 308: return PacketType.ChangeInventoryItemFlags; + case 309: return PacketType.SaveAssetIntoInventory; + case 310: return PacketType.CreateInventoryFolder; + case 311: return PacketType.UpdateInventoryFolder; + case 312: return PacketType.MoveInventoryFolder; + case 313: return PacketType.RemoveInventoryFolder; + case 314: return PacketType.FetchInventoryDescendents; + case 315: return PacketType.InventoryDescendents; + case 316: return PacketType.FetchInventory; + case 317: return PacketType.FetchInventoryReply; + case 318: return PacketType.BulkUpdateInventory; + case 319: return PacketType.RequestInventoryAsset; + case 320: return PacketType.InventoryAssetResponse; + case 321: return PacketType.RemoveInventoryObjects; + case 322: return PacketType.PurgeInventoryDescendents; + case 323: return PacketType.UpdateTaskInventory; + case 324: return PacketType.RemoveTaskInventory; + case 325: return PacketType.MoveTaskInventory; + case 326: return PacketType.RequestTaskInventory; + case 327: return PacketType.ReplyTaskInventory; + case 328: return PacketType.DeRezObject; + case 329: return PacketType.DeRezAck; + case 330: return PacketType.RezObject; + case 331: return PacketType.RezObjectFromNotecard; + case 332: return PacketType.DeclineInventory; + case 335: return PacketType.RequestFriendship; + case 336: return PacketType.AcceptFriendship; + case 337: return PacketType.DeclineFriendship; + case 338: return PacketType.FormFriendship; + case 339: return PacketType.TerminateFriendship; + case 340: return PacketType.OfferCallingCard; + case 341: return PacketType.AcceptCallingCard; + case 342: return PacketType.DeclineCallingCard; + case 343: return PacketType.RezScript; + case 344: return PacketType.CreateInventoryItem; + case 345: return PacketType.CreateLandmarkForEvent; + case 348: return PacketType.RegionHandleRequest; + case 349: return PacketType.RegionIDAndHandleReply; + case 350: return PacketType.MoneyTransferRequest; + case 353: return PacketType.AdjustBalance; + case 354: return PacketType.MoneyBalanceRequest; + case 355: return PacketType.MoneyBalanceReply; + case 356: return PacketType.RoutedMoneyBalanceReply; + case 357: return PacketType.MoneyHistoryRequest; + case 358: return PacketType.MoneyHistoryReply; + case 359: return PacketType.MoneySummaryRequest; + case 360: return PacketType.MoneySummaryReply; + case 361: return PacketType.MoneyDetailsRequest; + case 362: return PacketType.MoneyDetailsReply; + case 363: return PacketType.MoneyTransactionsRequest; + case 364: return PacketType.MoneyTransactionsReply; + case 365: return PacketType.ActivateGestures; + case 366: return PacketType.DeactivateGestures; + case 367: return PacketType.MuteListUpdate; + case 368: return PacketType.UseCachedMuteList; + case 369: return PacketType.GrantUserRights; + case 370: return PacketType.ChangeUserRights; + case 371: return PacketType.OnlineNotification; + case 372: return PacketType.OfflineNotification; + case 373: return PacketType.SetStartLocationRequest; + case 383: return PacketType.AssetUploadRequest; + case 384: return PacketType.AssetUploadComplete; + case 385: return PacketType.ReputationAgentAssign; + case 386: return PacketType.ReputationIndividualRequest; + case 387: return PacketType.ReputationIndividualReply; + case 392: return PacketType.CreateGroupRequest; + case 393: return PacketType.CreateGroupReply; + case 394: return PacketType.UpdateGroupInfo; + case 395: return PacketType.GroupRoleChanges; + case 396: return PacketType.JoinGroupRequest; + case 397: return PacketType.JoinGroupReply; + case 398: return PacketType.EjectGroupMemberRequest; + case 399: return PacketType.EjectGroupMemberReply; + case 400: return PacketType.LeaveGroupRequest; + case 401: return PacketType.LeaveGroupReply; + case 402: return PacketType.InviteGroupRequest; + case 404: return PacketType.GroupProfileRequest; + case 405: return PacketType.GroupProfileReply; + case 406: return PacketType.GroupAccountSummaryRequest; + case 407: return PacketType.GroupAccountSummaryReply; + case 408: return PacketType.GroupAccountDetailsRequest; + case 409: return PacketType.GroupAccountDetailsReply; + case 410: return PacketType.GroupAccountTransactionsRequest; + case 411: return PacketType.GroupAccountTransactionsReply; + case 412: return PacketType.GroupActiveProposalsRequest; + case 413: return PacketType.GroupActiveProposalItemReply; + case 414: return PacketType.GroupVoteHistoryRequest; + case 415: return PacketType.GroupVoteHistoryItemReply; + case 416: return PacketType.StartGroupProposal; + case 417: return PacketType.GroupProposalBallot; + case 419: return PacketType.GroupMembersRequest; + case 420: return PacketType.GroupMembersReply; + case 421: return PacketType.ActivateGroup; + case 422: return PacketType.SetGroupContribution; + case 423: return PacketType.SetGroupAcceptNotices; + case 424: return PacketType.GroupRoleDataRequest; + case 425: return PacketType.GroupRoleDataReply; + case 426: return PacketType.GroupRoleMembersRequest; + case 427: return PacketType.GroupRoleMembersReply; + case 428: return PacketType.GroupTitlesRequest; + case 429: return PacketType.GroupTitlesReply; + case 430: return PacketType.GroupTitleUpdate; + case 431: return PacketType.GroupRoleUpdate; + case 432: return PacketType.LiveHelpGroupRequest; + case 433: return PacketType.LiveHelpGroupReply; + case 434: return PacketType.AgentWearablesRequest; + case 435: return PacketType.AgentWearablesUpdate; + case 436: return PacketType.AgentIsNowWearing; + case 437: return PacketType.AgentCachedTexture; + case 438: return PacketType.AgentCachedTextureResponse; + case 439: return PacketType.AgentDataUpdateRequest; + case 440: return PacketType.AgentDataUpdate; + case 441: return PacketType.GroupDataUpdate; + case 442: return PacketType.AgentGroupDataUpdate; + case 443: return PacketType.AgentDropGroup; + case 445: return PacketType.CreateTrustedCircuit; + case 446: return PacketType.DenyTrustedCircuit; + case 447: return PacketType.RequestTrustedCircuit; + case 448: return PacketType.RezSingleAttachmentFromInv; + case 449: return PacketType.RezMultipleAttachmentsFromInv; + case 450: return PacketType.DetachAttachmentIntoInv; + case 451: return PacketType.CreateNewOutfitAttachments; + case 452: return PacketType.UserInfoRequest; + case 453: return PacketType.UserInfoReply; + case 454: return PacketType.UpdateUserInfo; + case 460: return PacketType.StartParcelRemoveAck; + case 462: return PacketType.InitiateDownload; + case 463: return PacketType.SystemMessage; + case 464: return PacketType.MapLayerRequest; + case 465: return PacketType.MapLayerReply; + case 466: return PacketType.MapBlockRequest; + case 467: return PacketType.MapNameRequest; + case 468: return PacketType.MapBlockReply; + case 469: return PacketType.MapItemRequest; + case 470: return PacketType.MapItemReply; + case 471: return PacketType.SendPostcard; + case 480: return PacketType.ParcelMediaCommandMessage; + case 481: return PacketType.ParcelMediaUpdate; + case 482: return PacketType.LandStatRequest; + case 483: return PacketType.LandStatReply; case 65530: return PacketType.SecuredTemplateChecksumRequest; case 65531: return PacketType.PacketAck; case 65532: return PacketType.OpenCircuit; @@ -1670,13 +1656,12 @@ namespace libsecondlife.Packets case 10: return PacketType.ObjectProperties; case 11: return PacketType.ObjectPropertiesFamily; case 12: return PacketType.ParcelPropertiesRequest; - case 14: return PacketType.GestureUpdate; - case 15: return PacketType.AttachedSound; - case 16: return PacketType.AttachedSoundGainChange; - case 17: return PacketType.AttachedSoundCutoffRadius; - case 18: return PacketType.PreloadSound; - case 20: return PacketType.ViewerEffect; - case 21: return PacketType.SetSunPhase; + case 14: return PacketType.AttachedSound; + case 15: return PacketType.AttachedSoundGainChange; + case 16: return PacketType.AttachedSoundCutoffRadius; + case 17: return PacketType.PreloadSound; + case 19: return PacketType.ViewerEffect; + case 20: return PacketType.SetSunPhase; } break; case PacketFrequency.High: @@ -1936,186 +1921,182 @@ namespace libsecondlife.Packets case 250: return new ParcelDwellRequestPacket(header, bytes, ref i); case 251: return new ParcelDwellReplyPacket(header, bytes, ref i); case 259: return new ParcelGodMarkAsContentPacket(header, bytes, ref i); - case 260: return new ParcelGodReserveForNewbiePacket(header, bytes, ref i); - case 261: return new ViewerStartAuctionPacket(header, bytes, ref i); - case 268: return new UUIDNameRequestPacket(header, bytes, ref i); - case 269: return new UUIDNameReplyPacket(header, bytes, ref i); - case 270: return new UUIDGroupNameRequestPacket(header, bytes, ref i); - case 271: return new UUIDGroupNameReplyPacket(header, bytes, ref i); - case 273: return new ChildAgentDyingPacket(header, bytes, ref i); - case 274: return new ChildAgentUnknownPacket(header, bytes, ref i); - case 276: return new GetScriptRunningPacket(header, bytes, ref i); - case 277: return new ScriptRunningReplyPacket(header, bytes, ref i); - case 278: return new SetScriptRunningPacket(header, bytes, ref i); - case 279: return new ScriptResetPacket(header, bytes, ref i); - case 282: return new CompleteAgentMovementPacket(header, bytes, ref i); - case 283: return new AgentMovementCompletePacket(header, bytes, ref i); - case 285: return new ConnectAgentToUserserverPacket(header, bytes, ref i); - case 286: return new ConnectToUserserverPacket(header, bytes, ref i); - case 288: return new LogoutRequestPacket(header, bytes, ref i); - case 289: return new FinalizeLogoutPacket(header, bytes, ref i); - case 290: return new LogoutReplyPacket(header, bytes, ref i); - case 291: return new LogoutDemandPacket(header, bytes, ref i); - case 292: return new ImprovedInstantMessagePacket(header, bytes, ref i); - case 293: return new RetrieveInstantMessagesPacket(header, bytes, ref i); - case 294: return new DequeueInstantMessagesPacket(header, bytes, ref i); - case 295: return new FindAgentPacket(header, bytes, ref i); - case 296: return new RequestGodlikePowersPacket(header, bytes, ref i); - case 297: return new GrantGodlikePowersPacket(header, bytes, ref i); - case 298: return new GodlikeMessagePacket(header, bytes, ref i); - case 299: return new EstateOwnerMessagePacket(header, bytes, ref i); - case 300: return new GenericMessagePacket(header, bytes, ref i); - case 301: return new MuteListRequestPacket(header, bytes, ref i); - case 302: return new UpdateMuteListEntryPacket(header, bytes, ref i); - case 303: return new RemoveMuteListEntryPacket(header, bytes, ref i); - case 304: return new CopyInventoryFromNotecardPacket(header, bytes, ref i); - case 305: return new UpdateInventoryItemPacket(header, bytes, ref i); - case 306: return new UpdateCreateInventoryItemPacket(header, bytes, ref i); - case 307: return new MoveInventoryItemPacket(header, bytes, ref i); - case 308: return new CopyInventoryItemPacket(header, bytes, ref i); - case 309: return new RemoveInventoryItemPacket(header, bytes, ref i); - case 310: return new ChangeInventoryItemFlagsPacket(header, bytes, ref i); - case 311: return new SaveAssetIntoInventoryPacket(header, bytes, ref i); - case 312: return new CreateInventoryFolderPacket(header, bytes, ref i); - case 313: return new UpdateInventoryFolderPacket(header, bytes, ref i); - case 314: return new MoveInventoryFolderPacket(header, bytes, ref i); - case 315: return new RemoveInventoryFolderPacket(header, bytes, ref i); - case 316: return new FetchInventoryDescendentsPacket(header, bytes, ref i); - case 317: return new InventoryDescendentsPacket(header, bytes, ref i); - case 318: return new FetchInventoryPacket(header, bytes, ref i); - case 319: return new FetchInventoryReplyPacket(header, bytes, ref i); - case 320: return new BulkUpdateInventoryPacket(header, bytes, ref i); - case 321: return new RequestInventoryAssetPacket(header, bytes, ref i); - case 322: return new InventoryAssetResponsePacket(header, bytes, ref i); - case 323: return new RemoveInventoryObjectsPacket(header, bytes, ref i); - case 324: return new PurgeInventoryDescendentsPacket(header, bytes, ref i); - case 325: return new UpdateTaskInventoryPacket(header, bytes, ref i); - case 326: return new RemoveTaskInventoryPacket(header, bytes, ref i); - case 327: return new MoveTaskInventoryPacket(header, bytes, ref i); - case 328: return new RequestTaskInventoryPacket(header, bytes, ref i); - case 329: return new ReplyTaskInventoryPacket(header, bytes, ref i); - case 330: return new DeRezObjectPacket(header, bytes, ref i); - case 331: return new DeRezAckPacket(header, bytes, ref i); - case 332: return new RezObjectPacket(header, bytes, ref i); - case 333: return new RezObjectFromNotecardPacket(header, bytes, ref i); - case 334: return new DeclineInventoryPacket(header, bytes, ref i); - case 337: return new RequestFriendshipPacket(header, bytes, ref i); - case 338: return new AcceptFriendshipPacket(header, bytes, ref i); - case 339: return new DeclineFriendshipPacket(header, bytes, ref i); - case 340: return new FormFriendshipPacket(header, bytes, ref i); - case 341: return new TerminateFriendshipPacket(header, bytes, ref i); - case 342: return new OfferCallingCardPacket(header, bytes, ref i); - case 343: return new AcceptCallingCardPacket(header, bytes, ref i); - case 344: return new DeclineCallingCardPacket(header, bytes, ref i); - case 345: return new RezScriptPacket(header, bytes, ref i); - case 346: return new CreateInventoryItemPacket(header, bytes, ref i); - case 347: return new CreateLandmarkForEventPacket(header, bytes, ref i); - case 350: return new RegionHandleRequestPacket(header, bytes, ref i); - case 351: return new RegionIDAndHandleReplyPacket(header, bytes, ref i); - case 352: return new MoneyTransferRequestPacket(header, bytes, ref i); - case 355: return new AdjustBalancePacket(header, bytes, ref i); - case 356: return new MoneyBalanceRequestPacket(header, bytes, ref i); - case 357: return new MoneyBalanceReplyPacket(header, bytes, ref i); - case 358: return new RoutedMoneyBalanceReplyPacket(header, bytes, ref i); - case 359: return new MoneyHistoryRequestPacket(header, bytes, ref i); - case 360: return new MoneyHistoryReplyPacket(header, bytes, ref i); - case 361: return new MoneySummaryRequestPacket(header, bytes, ref i); - case 362: return new MoneySummaryReplyPacket(header, bytes, ref i); - case 363: return new MoneyDetailsRequestPacket(header, bytes, ref i); - case 364: return new MoneyDetailsReplyPacket(header, bytes, ref i); - case 365: return new MoneyTransactionsRequestPacket(header, bytes, ref i); - case 366: return new MoneyTransactionsReplyPacket(header, bytes, ref i); - case 367: return new GestureRequestPacket(header, bytes, ref i); - case 368: return new ActivateGesturesPacket(header, bytes, ref i); - case 369: return new DeactivateGesturesPacket(header, bytes, ref i); - case 370: return new MuteListUpdatePacket(header, bytes, ref i); - case 371: return new UseCachedMuteListPacket(header, bytes, ref i); - case 372: return new GrantUserRightsPacket(header, bytes, ref i); - case 373: return new ChangeUserRightsPacket(header, bytes, ref i); - case 374: return new OnlineNotificationPacket(header, bytes, ref i); - case 375: return new OfflineNotificationPacket(header, bytes, ref i); - case 376: return new SetStartLocationRequestPacket(header, bytes, ref i); - case 386: return new AssetUploadRequestPacket(header, bytes, ref i); - case 387: return new AssetUploadCompletePacket(header, bytes, ref i); - case 388: return new ReputationAgentAssignPacket(header, bytes, ref i); - case 389: return new ReputationIndividualRequestPacket(header, bytes, ref i); - case 390: return new ReputationIndividualReplyPacket(header, bytes, ref i); - case 395: return new CreateGroupRequestPacket(header, bytes, ref i); - case 396: return new CreateGroupReplyPacket(header, bytes, ref i); - case 397: return new UpdateGroupInfoPacket(header, bytes, ref i); - case 398: return new GroupRoleChangesPacket(header, bytes, ref i); - case 399: return new JoinGroupRequestPacket(header, bytes, ref i); - case 400: return new JoinGroupReplyPacket(header, bytes, ref i); - case 401: return new EjectGroupMemberRequestPacket(header, bytes, ref i); - case 402: return new EjectGroupMemberReplyPacket(header, bytes, ref i); - case 403: return new LeaveGroupRequestPacket(header, bytes, ref i); - case 404: return new LeaveGroupReplyPacket(header, bytes, ref i); - case 405: return new InviteGroupRequestPacket(header, bytes, ref i); - case 407: return new GroupProfileRequestPacket(header, bytes, ref i); - case 408: return new GroupProfileReplyPacket(header, bytes, ref i); - case 409: return new GroupAccountSummaryRequestPacket(header, bytes, ref i); - case 410: return new GroupAccountSummaryReplyPacket(header, bytes, ref i); - case 411: return new GroupAccountDetailsRequestPacket(header, bytes, ref i); - case 412: return new GroupAccountDetailsReplyPacket(header, bytes, ref i); - case 413: return new GroupAccountTransactionsRequestPacket(header, bytes, ref i); - case 414: return new GroupAccountTransactionsReplyPacket(header, bytes, ref i); - case 415: return new GroupActiveProposalsRequestPacket(header, bytes, ref i); - case 416: return new GroupActiveProposalItemReplyPacket(header, bytes, ref i); - case 417: return new GroupVoteHistoryRequestPacket(header, bytes, ref i); - case 418: return new GroupVoteHistoryItemReplyPacket(header, bytes, ref i); - case 419: return new StartGroupProposalPacket(header, bytes, ref i); - case 420: return new GroupProposalBallotPacket(header, bytes, ref i); - case 422: return new GroupMembersRequestPacket(header, bytes, ref i); - case 423: return new GroupMembersReplyPacket(header, bytes, ref i); - case 424: return new ActivateGroupPacket(header, bytes, ref i); - case 425: return new SetGroupContributionPacket(header, bytes, ref i); - case 426: return new SetGroupAcceptNoticesPacket(header, bytes, ref i); - case 427: return new GroupRoleDataRequestPacket(header, bytes, ref i); - case 428: return new GroupRoleDataReplyPacket(header, bytes, ref i); - case 429: return new GroupRoleMembersRequestPacket(header, bytes, ref i); - case 430: return new GroupRoleMembersReplyPacket(header, bytes, ref i); - case 431: return new GroupTitlesRequestPacket(header, bytes, ref i); - case 432: return new GroupTitlesReplyPacket(header, bytes, ref i); - case 433: return new GroupTitleUpdatePacket(header, bytes, ref i); - case 434: return new GroupRoleUpdatePacket(header, bytes, ref i); - case 435: return new LiveHelpGroupRequestPacket(header, bytes, ref i); - case 436: return new LiveHelpGroupReplyPacket(header, bytes, ref i); - case 437: return new AgentWearablesRequestPacket(header, bytes, ref i); - case 438: return new AgentWearablesUpdatePacket(header, bytes, ref i); - case 439: return new AgentIsNowWearingPacket(header, bytes, ref i); - case 440: return new AgentCachedTexturePacket(header, bytes, ref i); - case 441: return new AgentCachedTextureResponsePacket(header, bytes, ref i); - case 442: return new AgentDataUpdateRequestPacket(header, bytes, ref i); - case 443: return new AgentDataUpdatePacket(header, bytes, ref i); - case 444: return new GroupDataUpdatePacket(header, bytes, ref i); - case 445: return new AgentGroupDataUpdatePacket(header, bytes, ref i); - case 446: return new AgentDropGroupPacket(header, bytes, ref i); - case 448: return new CreateTrustedCircuitPacket(header, bytes, ref i); - case 449: return new DenyTrustedCircuitPacket(header, bytes, ref i); - case 450: return new RequestTrustedCircuitPacket(header, bytes, ref i); - case 451: return new RezSingleAttachmentFromInvPacket(header, bytes, ref i); - case 452: return new RezMultipleAttachmentsFromInvPacket(header, bytes, ref i); - case 453: return new DetachAttachmentIntoInvPacket(header, bytes, ref i); - case 454: return new CreateNewOutfitAttachmentsPacket(header, bytes, ref i); - case 455: return new UserInfoRequestPacket(header, bytes, ref i); - case 456: return new UserInfoReplyPacket(header, bytes, ref i); - case 457: return new UpdateUserInfoPacket(header, bytes, ref i); - case 458: return new GodExpungeUserPacket(header, bytes, ref i); - case 466: return new StartParcelRemoveAckPacket(header, bytes, ref i); - case 468: return new InitiateDownloadPacket(header, bytes, ref i); - case 469: return new SystemMessagePacket(header, bytes, ref i); - case 470: return new MapLayerRequestPacket(header, bytes, ref i); - case 471: return new MapLayerReplyPacket(header, bytes, ref i); - case 472: return new MapBlockRequestPacket(header, bytes, ref i); - case 473: return new MapNameRequestPacket(header, bytes, ref i); - case 474: return new MapBlockReplyPacket(header, bytes, ref i); - case 475: return new MapItemRequestPacket(header, bytes, ref i); - case 476: return new MapItemReplyPacket(header, bytes, ref i); - case 477: return new SendPostcardPacket(header, bytes, ref i); - case 486: return new ParcelMediaCommandMessagePacket(header, bytes, ref i); - case 487: return new ParcelMediaUpdatePacket(header, bytes, ref i); - case 488: return new LandStatRequestPacket(header, bytes, ref i); - case 489: return new LandStatReplyPacket(header, bytes, ref i); + case 260: return new ViewerStartAuctionPacket(header, bytes, ref i); + case 267: return new UUIDNameRequestPacket(header, bytes, ref i); + case 268: return new UUIDNameReplyPacket(header, bytes, ref i); + case 269: return new UUIDGroupNameRequestPacket(header, bytes, ref i); + case 270: return new UUIDGroupNameReplyPacket(header, bytes, ref i); + case 272: return new ChildAgentDyingPacket(header, bytes, ref i); + case 273: return new ChildAgentUnknownPacket(header, bytes, ref i); + case 275: return new GetScriptRunningPacket(header, bytes, ref i); + case 276: return new ScriptRunningReplyPacket(header, bytes, ref i); + case 277: return new SetScriptRunningPacket(header, bytes, ref i); + case 278: return new ScriptResetPacket(header, bytes, ref i); + case 281: return new CompleteAgentMovementPacket(header, bytes, ref i); + case 282: return new AgentMovementCompletePacket(header, bytes, ref i); + case 284: return new ConnectAgentToUserserverPacket(header, bytes, ref i); + case 285: return new ConnectToUserserverPacket(header, bytes, ref i); + case 287: return new LogoutRequestPacket(header, bytes, ref i); + case 288: return new FinalizeLogoutPacket(header, bytes, ref i); + case 289: return new LogoutReplyPacket(header, bytes, ref i); + case 290: return new LogoutDemandPacket(header, bytes, ref i); + case 291: return new ImprovedInstantMessagePacket(header, bytes, ref i); + case 292: return new RetrieveInstantMessagesPacket(header, bytes, ref i); + case 293: return new FindAgentPacket(header, bytes, ref i); + case 294: return new RequestGodlikePowersPacket(header, bytes, ref i); + case 295: return new GrantGodlikePowersPacket(header, bytes, ref i); + case 296: return new GodlikeMessagePacket(header, bytes, ref i); + case 297: return new EstateOwnerMessagePacket(header, bytes, ref i); + case 298: return new GenericMessagePacket(header, bytes, ref i); + case 299: return new MuteListRequestPacket(header, bytes, ref i); + case 300: return new UpdateMuteListEntryPacket(header, bytes, ref i); + case 301: return new RemoveMuteListEntryPacket(header, bytes, ref i); + case 302: return new CopyInventoryFromNotecardPacket(header, bytes, ref i); + case 303: return new UpdateInventoryItemPacket(header, bytes, ref i); + case 304: return new UpdateCreateInventoryItemPacket(header, bytes, ref i); + case 305: return new MoveInventoryItemPacket(header, bytes, ref i); + case 306: return new CopyInventoryItemPacket(header, bytes, ref i); + case 307: return new RemoveInventoryItemPacket(header, bytes, ref i); + case 308: return new ChangeInventoryItemFlagsPacket(header, bytes, ref i); + case 309: return new SaveAssetIntoInventoryPacket(header, bytes, ref i); + case 310: return new CreateInventoryFolderPacket(header, bytes, ref i); + case 311: return new UpdateInventoryFolderPacket(header, bytes, ref i); + case 312: return new MoveInventoryFolderPacket(header, bytes, ref i); + case 313: return new RemoveInventoryFolderPacket(header, bytes, ref i); + case 314: return new FetchInventoryDescendentsPacket(header, bytes, ref i); + case 315: return new InventoryDescendentsPacket(header, bytes, ref i); + case 316: return new FetchInventoryPacket(header, bytes, ref i); + case 317: return new FetchInventoryReplyPacket(header, bytes, ref i); + case 318: return new BulkUpdateInventoryPacket(header, bytes, ref i); + case 319: return new RequestInventoryAssetPacket(header, bytes, ref i); + case 320: return new InventoryAssetResponsePacket(header, bytes, ref i); + case 321: return new RemoveInventoryObjectsPacket(header, bytes, ref i); + case 322: return new PurgeInventoryDescendentsPacket(header, bytes, ref i); + case 323: return new UpdateTaskInventoryPacket(header, bytes, ref i); + case 324: return new RemoveTaskInventoryPacket(header, bytes, ref i); + case 325: return new MoveTaskInventoryPacket(header, bytes, ref i); + case 326: return new RequestTaskInventoryPacket(header, bytes, ref i); + case 327: return new ReplyTaskInventoryPacket(header, bytes, ref i); + case 328: return new DeRezObjectPacket(header, bytes, ref i); + case 329: return new DeRezAckPacket(header, bytes, ref i); + case 330: return new RezObjectPacket(header, bytes, ref i); + case 331: return new RezObjectFromNotecardPacket(header, bytes, ref i); + case 332: return new DeclineInventoryPacket(header, bytes, ref i); + case 335: return new RequestFriendshipPacket(header, bytes, ref i); + case 336: return new AcceptFriendshipPacket(header, bytes, ref i); + case 337: return new DeclineFriendshipPacket(header, bytes, ref i); + case 338: return new FormFriendshipPacket(header, bytes, ref i); + case 339: return new TerminateFriendshipPacket(header, bytes, ref i); + case 340: return new OfferCallingCardPacket(header, bytes, ref i); + case 341: return new AcceptCallingCardPacket(header, bytes, ref i); + case 342: return new DeclineCallingCardPacket(header, bytes, ref i); + case 343: return new RezScriptPacket(header, bytes, ref i); + case 344: return new CreateInventoryItemPacket(header, bytes, ref i); + case 345: return new CreateLandmarkForEventPacket(header, bytes, ref i); + case 348: return new RegionHandleRequestPacket(header, bytes, ref i); + case 349: return new RegionIDAndHandleReplyPacket(header, bytes, ref i); + case 350: return new MoneyTransferRequestPacket(header, bytes, ref i); + case 353: return new AdjustBalancePacket(header, bytes, ref i); + case 354: return new MoneyBalanceRequestPacket(header, bytes, ref i); + case 355: return new MoneyBalanceReplyPacket(header, bytes, ref i); + case 356: return new RoutedMoneyBalanceReplyPacket(header, bytes, ref i); + case 357: return new MoneyHistoryRequestPacket(header, bytes, ref i); + case 358: return new MoneyHistoryReplyPacket(header, bytes, ref i); + case 359: return new MoneySummaryRequestPacket(header, bytes, ref i); + case 360: return new MoneySummaryReplyPacket(header, bytes, ref i); + case 361: return new MoneyDetailsRequestPacket(header, bytes, ref i); + case 362: return new MoneyDetailsReplyPacket(header, bytes, ref i); + case 363: return new MoneyTransactionsRequestPacket(header, bytes, ref i); + case 364: return new MoneyTransactionsReplyPacket(header, bytes, ref i); + case 365: return new ActivateGesturesPacket(header, bytes, ref i); + case 366: return new DeactivateGesturesPacket(header, bytes, ref i); + case 367: return new MuteListUpdatePacket(header, bytes, ref i); + case 368: return new UseCachedMuteListPacket(header, bytes, ref i); + case 369: return new GrantUserRightsPacket(header, bytes, ref i); + case 370: return new ChangeUserRightsPacket(header, bytes, ref i); + case 371: return new OnlineNotificationPacket(header, bytes, ref i); + case 372: return new OfflineNotificationPacket(header, bytes, ref i); + case 373: return new SetStartLocationRequestPacket(header, bytes, ref i); + case 383: return new AssetUploadRequestPacket(header, bytes, ref i); + case 384: return new AssetUploadCompletePacket(header, bytes, ref i); + case 385: return new ReputationAgentAssignPacket(header, bytes, ref i); + case 386: return new ReputationIndividualRequestPacket(header, bytes, ref i); + case 387: return new ReputationIndividualReplyPacket(header, bytes, ref i); + case 392: return new CreateGroupRequestPacket(header, bytes, ref i); + case 393: return new CreateGroupReplyPacket(header, bytes, ref i); + case 394: return new UpdateGroupInfoPacket(header, bytes, ref i); + case 395: return new GroupRoleChangesPacket(header, bytes, ref i); + case 396: return new JoinGroupRequestPacket(header, bytes, ref i); + case 397: return new JoinGroupReplyPacket(header, bytes, ref i); + case 398: return new EjectGroupMemberRequestPacket(header, bytes, ref i); + case 399: return new EjectGroupMemberReplyPacket(header, bytes, ref i); + case 400: return new LeaveGroupRequestPacket(header, bytes, ref i); + case 401: return new LeaveGroupReplyPacket(header, bytes, ref i); + case 402: return new InviteGroupRequestPacket(header, bytes, ref i); + case 404: return new GroupProfileRequestPacket(header, bytes, ref i); + case 405: return new GroupProfileReplyPacket(header, bytes, ref i); + case 406: return new GroupAccountSummaryRequestPacket(header, bytes, ref i); + case 407: return new GroupAccountSummaryReplyPacket(header, bytes, ref i); + case 408: return new GroupAccountDetailsRequestPacket(header, bytes, ref i); + case 409: return new GroupAccountDetailsReplyPacket(header, bytes, ref i); + case 410: return new GroupAccountTransactionsRequestPacket(header, bytes, ref i); + case 411: return new GroupAccountTransactionsReplyPacket(header, bytes, ref i); + case 412: return new GroupActiveProposalsRequestPacket(header, bytes, ref i); + case 413: return new GroupActiveProposalItemReplyPacket(header, bytes, ref i); + case 414: return new GroupVoteHistoryRequestPacket(header, bytes, ref i); + case 415: return new GroupVoteHistoryItemReplyPacket(header, bytes, ref i); + case 416: return new StartGroupProposalPacket(header, bytes, ref i); + case 417: return new GroupProposalBallotPacket(header, bytes, ref i); + case 419: return new GroupMembersRequestPacket(header, bytes, ref i); + case 420: return new GroupMembersReplyPacket(header, bytes, ref i); + case 421: return new ActivateGroupPacket(header, bytes, ref i); + case 422: return new SetGroupContributionPacket(header, bytes, ref i); + case 423: return new SetGroupAcceptNoticesPacket(header, bytes, ref i); + case 424: return new GroupRoleDataRequestPacket(header, bytes, ref i); + case 425: return new GroupRoleDataReplyPacket(header, bytes, ref i); + case 426: return new GroupRoleMembersRequestPacket(header, bytes, ref i); + case 427: return new GroupRoleMembersReplyPacket(header, bytes, ref i); + case 428: return new GroupTitlesRequestPacket(header, bytes, ref i); + case 429: return new GroupTitlesReplyPacket(header, bytes, ref i); + case 430: return new GroupTitleUpdatePacket(header, bytes, ref i); + case 431: return new GroupRoleUpdatePacket(header, bytes, ref i); + case 432: return new LiveHelpGroupRequestPacket(header, bytes, ref i); + case 433: return new LiveHelpGroupReplyPacket(header, bytes, ref i); + case 434: return new AgentWearablesRequestPacket(header, bytes, ref i); + case 435: return new AgentWearablesUpdatePacket(header, bytes, ref i); + case 436: return new AgentIsNowWearingPacket(header, bytes, ref i); + case 437: return new AgentCachedTexturePacket(header, bytes, ref i); + case 438: return new AgentCachedTextureResponsePacket(header, bytes, ref i); + case 439: return new AgentDataUpdateRequestPacket(header, bytes, ref i); + case 440: return new AgentDataUpdatePacket(header, bytes, ref i); + case 441: return new GroupDataUpdatePacket(header, bytes, ref i); + case 442: return new AgentGroupDataUpdatePacket(header, bytes, ref i); + case 443: return new AgentDropGroupPacket(header, bytes, ref i); + case 445: return new CreateTrustedCircuitPacket(header, bytes, ref i); + case 446: return new DenyTrustedCircuitPacket(header, bytes, ref i); + case 447: return new RequestTrustedCircuitPacket(header, bytes, ref i); + case 448: return new RezSingleAttachmentFromInvPacket(header, bytes, ref i); + case 449: return new RezMultipleAttachmentsFromInvPacket(header, bytes, ref i); + case 450: return new DetachAttachmentIntoInvPacket(header, bytes, ref i); + case 451: return new CreateNewOutfitAttachmentsPacket(header, bytes, ref i); + case 452: return new UserInfoRequestPacket(header, bytes, ref i); + case 453: return new UserInfoReplyPacket(header, bytes, ref i); + case 454: return new UpdateUserInfoPacket(header, bytes, ref i); + case 460: return new StartParcelRemoveAckPacket(header, bytes, ref i); + case 462: return new InitiateDownloadPacket(header, bytes, ref i); + case 463: return new SystemMessagePacket(header, bytes, ref i); + case 464: return new MapLayerRequestPacket(header, bytes, ref i); + case 465: return new MapLayerReplyPacket(header, bytes, ref i); + case 466: return new MapBlockRequestPacket(header, bytes, ref i); + case 467: return new MapNameRequestPacket(header, bytes, ref i); + case 468: return new MapBlockReplyPacket(header, bytes, ref i); + case 469: return new MapItemRequestPacket(header, bytes, ref i); + case 470: return new MapItemReplyPacket(header, bytes, ref i); + case 471: return new SendPostcardPacket(header, bytes, ref i); + case 480: return new ParcelMediaCommandMessagePacket(header, bytes, ref i); + case 481: return new ParcelMediaUpdatePacket(header, bytes, ref i); + case 482: return new LandStatRequestPacket(header, bytes, ref i); + case 483: return new LandStatReplyPacket(header, bytes, ref i); case 65530: return new SecuredTemplateChecksumRequestPacket(header, bytes, ref i); case 65531: return new PacketAckPacket(header, bytes, ref i); case 65532: return new OpenCircuitPacket(header, bytes, ref i); @@ -2140,13 +2121,12 @@ namespace libsecondlife.Packets case 10: return new ObjectPropertiesPacket(header, bytes, ref i); case 11: return new ObjectPropertiesFamilyPacket(header, bytes, ref i); case 12: return new ParcelPropertiesRequestPacket(header, bytes, ref i); - case 14: return new GestureUpdatePacket(header, bytes, ref i); - case 15: return new AttachedSoundPacket(header, bytes, ref i); - case 16: return new AttachedSoundGainChangePacket(header, bytes, ref i); - case 17: return new AttachedSoundCutoffRadiusPacket(header, bytes, ref i); - case 18: return new PreloadSoundPacket(header, bytes, ref i); - case 20: return new ViewerEffectPacket(header, bytes, ref i); - case 21: return new SetSunPhasePacket(header, bytes, ref i); + case 14: return new AttachedSoundPacket(header, bytes, ref i); + case 15: return new AttachedSoundGainChangePacket(header, bytes, ref i); + case 16: return new AttachedSoundCutoffRadiusPacket(header, bytes, ref i); + case 17: return new PreloadSoundPacket(header, bytes, ref i); + case 19: return new ViewerEffectPacket(header, bytes, ref i); + case 20: return new SetSunPhasePacket(header, bytes, ref i); } } } @@ -4436,7 +4416,6 @@ namespace libsecondlife.Packets [XmlType("dirplacesreply_queryreplies")] public class QueryRepliesBlock { - public bool ReservedNewbie; public bool ForSale; public LLUUID ParcelID; private byte[] _name; @@ -4458,7 +4437,7 @@ namespace libsecondlife.Packets { get { - int length = 23; + int length = 22; if (Name != null) { length += 1 + Name.Length; } return length; } @@ -4470,7 +4449,6 @@ namespace libsecondlife.Packets int length; try { - ReservedNewbie = (bytes[i++] != 0) ? (bool)true : (bool)false; ForSale = (bytes[i++] != 0) ? (bool)true : (bool)false; ParcelID = new LLUUID(bytes, i); i += 16; length = (ushort)bytes[i++]; @@ -4489,7 +4467,6 @@ namespace libsecondlife.Packets public void ToBytes(byte[] bytes, ref int i) { byte[] ba; - bytes[i++] = (byte)((ReservedNewbie) ? 1 : 0); bytes[i++] = (byte)((ForSale) ? 1 : 0); Buffer.BlockCopy(ParcelID.GetBytes(), 0, bytes, i, 16); i += 16; if(Name == null) { Console.WriteLine("Warning: Name is null, in " + this.GetType()); } @@ -4505,7 +4482,6 @@ namespace libsecondlife.Packets { StringBuilder output = new StringBuilder(); output.AppendLine("-- QueryReplies --"); - output.AppendLine(String.Format("ReservedNewbie: {0}", ReservedNewbie)); output.AppendLine(String.Format("ForSale: {0}", ForSale)); output.AppendLine(String.Format("ParcelID: {0}", ParcelID)); Helpers.FieldToString(output, Name, "Name"); @@ -5233,8 +5209,7 @@ namespace libsecondlife.Packets { public int Members; public LLUUID GroupID; - public int MembershipFee; - public bool OpenEnrollment; + public float SearchOrder; private byte[] _groupname; public byte[] GroupName { @@ -5252,7 +5227,7 @@ namespace libsecondlife.Packets { get { - int length = 25; + int length = 24; if (GroupName != null) { length += 1 + GroupName.Length; } return length; } @@ -5266,8 +5241,8 @@ namespace libsecondlife.Packets { Members = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24)); GroupID = new LLUUID(bytes, i); i += 16; - MembershipFee = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24)); - OpenEnrollment = (bytes[i++] != 0) ? (bool)true : (bool)false; + if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4); + SearchOrder = BitConverter.ToSingle(bytes, i); i += 4; length = (ushort)bytes[i++]; _groupname = new byte[length]; Buffer.BlockCopy(bytes, i, _groupname, 0, length); i += length; @@ -5280,16 +5255,15 @@ namespace libsecondlife.Packets public void ToBytes(byte[] bytes, ref int i) { + byte[] ba; bytes[i++] = (byte)(Members % 256); bytes[i++] = (byte)((Members >> 8) % 256); bytes[i++] = (byte)((Members >> 16) % 256); bytes[i++] = (byte)((Members >> 24) % 256); Buffer.BlockCopy(GroupID.GetBytes(), 0, bytes, i, 16); i += 16; - bytes[i++] = (byte)(MembershipFee % 256); - bytes[i++] = (byte)((MembershipFee >> 8) % 256); - bytes[i++] = (byte)((MembershipFee >> 16) % 256); - bytes[i++] = (byte)((MembershipFee >> 24) % 256); - bytes[i++] = (byte)((OpenEnrollment) ? 1 : 0); + ba = BitConverter.GetBytes(SearchOrder); + if(!BitConverter.IsLittleEndian) { Array.Reverse(ba, 0, 4); } + Buffer.BlockCopy(ba, 0, bytes, i, 4); i += 4; if(GroupName == null) { Console.WriteLine("Warning: GroupName is null, in " + this.GetType()); } bytes[i++] = (byte)GroupName.Length; Buffer.BlockCopy(GroupName, 0, bytes, i, GroupName.Length); i += GroupName.Length; @@ -5301,8 +5275,7 @@ namespace libsecondlife.Packets output.AppendLine("-- QueryReplies --"); output.AppendLine(String.Format("Members: {0}", Members)); output.AppendLine(String.Format("GroupID: {0}", GroupID)); - output.AppendLine(String.Format("MembershipFee: {0}", MembershipFee)); - output.AppendLine(String.Format("OpenEnrollment: {0}", OpenEnrollment)); + output.AppendLine(String.Format("SearchOrder: {0}", SearchOrder)); Helpers.FieldToString(output, GroupName, "GroupName"); return output.ToString(); } @@ -7593,7 +7566,6 @@ namespace libsecondlife.Packets [XmlType("dirlandreply_queryreplies")] public class QueryRepliesBlock { - public bool ReservedNewbie; public int ActualArea; public bool ForSale; public LLUUID ParcelID; @@ -7616,7 +7588,7 @@ namespace libsecondlife.Packets { get { - int length = 27; + int length = 26; if (Name != null) { length += 1 + Name.Length; } return length; } @@ -7628,7 +7600,6 @@ namespace libsecondlife.Packets int length; try { - ReservedNewbie = (bytes[i++] != 0) ? (bool)true : (bool)false; ActualArea = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24)); ForSale = (bytes[i++] != 0) ? (bool)true : (bool)false; ParcelID = new LLUUID(bytes, i); i += 16; @@ -7646,7 +7617,6 @@ namespace libsecondlife.Packets public void ToBytes(byte[] bytes, ref int i) { - bytes[i++] = (byte)((ReservedNewbie) ? 1 : 0); bytes[i++] = (byte)(ActualArea % 256); bytes[i++] = (byte)((ActualArea >> 8) % 256); bytes[i++] = (byte)((ActualArea >> 16) % 256); @@ -7667,7 +7637,6 @@ namespace libsecondlife.Packets { StringBuilder output = new StringBuilder(); output.AppendLine("-- QueryReplies --"); - output.AppendLine(String.Format("ReservedNewbie: {0}", ReservedNewbie)); output.AppendLine(String.Format("ActualArea: {0}", ActualArea)); output.AppendLine(String.Format("ForSale: {0}", ForSale)); output.AppendLine(String.Format("ParcelID: {0}", ParcelID)); @@ -15243,8 +15212,8 @@ namespace libsecondlife.Packets public class ObjectDataBlock { public sbyte PathTwistBegin; - public byte PathEnd; - public byte ProfileBegin; + public ushort PathEnd; + public ushort ProfileBegin; public sbyte PathRadiusOffset; public sbyte PathSkew; public byte ProfileCurve; @@ -15255,11 +15224,11 @@ namespace libsecondlife.Packets public byte PathShearY; public sbyte PathTaperX; public sbyte PathTaperY; - public byte ProfileEnd; - public byte PathBegin; + public ushort ProfileEnd; + public ushort PathBegin; public byte PathCurve; public sbyte PathTwist; - public byte ProfileHollow; + public ushort ProfileHollow; public byte PathRevolutions; [XmlIgnore] @@ -15267,7 +15236,7 @@ namespace libsecondlife.Packets { get { - return 22; + return 27; } } @@ -15277,8 +15246,8 @@ namespace libsecondlife.Packets try { PathTwistBegin = (sbyte)bytes[i++]; - PathEnd = (byte)bytes[i++]; - ProfileBegin = (byte)bytes[i++]; + PathEnd = (ushort)(bytes[i++] + (bytes[i++] << 8)); + ProfileBegin = (ushort)(bytes[i++] + (bytes[i++] << 8)); PathRadiusOffset = (sbyte)bytes[i++]; PathSkew = (sbyte)bytes[i++]; ProfileCurve = (byte)bytes[i++]; @@ -15289,11 +15258,11 @@ namespace libsecondlife.Packets PathShearY = (byte)bytes[i++]; PathTaperX = (sbyte)bytes[i++]; PathTaperY = (sbyte)bytes[i++]; - ProfileEnd = (byte)bytes[i++]; - PathBegin = (byte)bytes[i++]; + ProfileEnd = (ushort)(bytes[i++] + (bytes[i++] << 8)); + PathBegin = (ushort)(bytes[i++] + (bytes[i++] << 8)); PathCurve = (byte)bytes[i++]; PathTwist = (sbyte)bytes[i++]; - ProfileHollow = (byte)bytes[i++]; + ProfileHollow = (ushort)(bytes[i++] + (bytes[i++] << 8)); PathRevolutions = (byte)bytes[i++]; } catch (Exception) @@ -15305,8 +15274,10 @@ namespace libsecondlife.Packets public void ToBytes(byte[] bytes, ref int i) { bytes[i++] = (byte)PathTwistBegin; - bytes[i++] = PathEnd; - bytes[i++] = ProfileBegin; + bytes[i++] = (byte)(PathEnd % 256); + bytes[i++] = (byte)((PathEnd >> 8) % 256); + bytes[i++] = (byte)(ProfileBegin % 256); + bytes[i++] = (byte)((ProfileBegin >> 8) % 256); bytes[i++] = (byte)PathRadiusOffset; bytes[i++] = (byte)PathSkew; bytes[i++] = ProfileCurve; @@ -15320,11 +15291,14 @@ namespace libsecondlife.Packets bytes[i++] = PathShearY; bytes[i++] = (byte)PathTaperX; bytes[i++] = (byte)PathTaperY; - bytes[i++] = ProfileEnd; - bytes[i++] = PathBegin; + bytes[i++] = (byte)(ProfileEnd % 256); + bytes[i++] = (byte)((ProfileEnd >> 8) % 256); + bytes[i++] = (byte)(PathBegin % 256); + bytes[i++] = (byte)((PathBegin >> 8) % 256); bytes[i++] = PathCurve; bytes[i++] = (byte)PathTwist; - bytes[i++] = ProfileHollow; + bytes[i++] = (byte)(ProfileHollow % 256); + bytes[i++] = (byte)((ProfileHollow >> 8) % 256); bytes[i++] = PathRevolutions; } @@ -36271,158 +36245,6 @@ namespace libsecondlife.Packets } - /// - public class ParcelGodReserveForNewbiePacket : Packet - { - /// - [XmlType("parcelgodreservefornewbie_parceldata")] - public class ParcelDataBlock - { - public int LocalID; - public LLUUID SnapshotID; - - [XmlIgnore] - public int Length - { - get - { - return 20; - } - } - - public ParcelDataBlock() { } - public ParcelDataBlock(byte[] bytes, ref int i) - { - try - { - LocalID = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24)); - SnapshotID = new LLUUID(bytes, i); i += 16; - } - catch (Exception) - { - throw new MalformedDataException(); - } - } - - public void ToBytes(byte[] bytes, ref int i) - { - bytes[i++] = (byte)(LocalID % 256); - bytes[i++] = (byte)((LocalID >> 8) % 256); - bytes[i++] = (byte)((LocalID >> 16) % 256); - bytes[i++] = (byte)((LocalID >> 24) % 256); - Buffer.BlockCopy(SnapshotID.GetBytes(), 0, bytes, i, 16); i += 16; - } - - public override string ToString() - { - StringBuilder output = new StringBuilder(); - output.AppendLine("-- ParcelData --"); - output.AppendLine(String.Format("LocalID: {0}", LocalID)); - output.Append(String.Format("SnapshotID: {0}", SnapshotID)); - return output.ToString(); - } - } - - /// - [XmlType("parcelgodreservefornewbie_agentdata")] - public class AgentDataBlock - { - public LLUUID AgentID; - public LLUUID SessionID; - - [XmlIgnore] - public int Length - { - get - { - return 32; - } - } - - public AgentDataBlock() { } - public AgentDataBlock(byte[] bytes, ref int i) - { - try - { - AgentID = new LLUUID(bytes, i); i += 16; - SessionID = new LLUUID(bytes, i); i += 16; - } - catch (Exception) - { - throw new MalformedDataException(); - } - } - - public void ToBytes(byte[] bytes, ref int i) - { - Buffer.BlockCopy(AgentID.GetBytes(), 0, bytes, i, 16); i += 16; - Buffer.BlockCopy(SessionID.GetBytes(), 0, bytes, i, 16); i += 16; - } - - public override string ToString() - { - StringBuilder output = new StringBuilder(); - output.AppendLine("-- AgentData --"); - output.AppendLine(String.Format("AgentID: {0}", AgentID)); - output.Append(String.Format("SessionID: {0}", SessionID)); - return output.ToString(); - } - } - - private Header header; - public override Header Header { get { return header; } set { header = value; } } - public override PacketType Type { get { return PacketType.ParcelGodReserveForNewbie; } } - public ParcelDataBlock ParcelData; - public AgentDataBlock AgentData; - - public ParcelGodReserveForNewbiePacket() - { - Header = new LowHeader(); - Header.ID = 260; - Header.Reliable = true; - ParcelData = new ParcelDataBlock(); - AgentData = new AgentDataBlock(); - } - - public ParcelGodReserveForNewbiePacket(byte[] bytes, ref int i) - { - int packetEnd = bytes.Length - 1; - Header = new LowHeader(bytes, ref i, ref packetEnd); - ParcelData = new ParcelDataBlock(bytes, ref i); - AgentData = new AgentDataBlock(bytes, ref i); - } - - public ParcelGodReserveForNewbiePacket(Header head, byte[] bytes, ref int i) - { - Header = head; - ParcelData = new ParcelDataBlock(bytes, ref i); - AgentData = new AgentDataBlock(bytes, ref i); - } - - public override byte[] ToBytes() - { - int length = 8; - length += ParcelData.Length; length += AgentData.Length;; - if (header.AckList.Length > 0) { length += header.AckList.Length * 4 + 1; } - byte[] bytes = new byte[length]; - int i = 0; - header.ToBytes(bytes, ref i); - ParcelData.ToBytes(bytes, ref i); - AgentData.ToBytes(bytes, ref i); - if (header.AckList.Length > 0) { header.AcksToBytes(bytes, ref i); } - return bytes; - } - - public override string ToString() - { - string output = "--- ParcelGodReserveForNewbie ---" + Environment.NewLine; - output += ParcelData.ToString() + Environment.NewLine; - output += AgentData.ToString() + Environment.NewLine; - return output; - } - - } - /// public class ViewerStartAuctionPacket : Packet { @@ -36530,7 +36352,7 @@ namespace libsecondlife.Packets public ViewerStartAuctionPacket() { Header = new LowHeader(); - Header.ID = 261; + Header.ID = 260; Header.Reliable = true; ParcelData = new ParcelDataBlock(); AgentData = new AgentDataBlock(); @@ -36628,7 +36450,7 @@ namespace libsecondlife.Packets public UUIDNameRequestPacket() { Header = new LowHeader(); - Header.ID = 268; + Header.ID = 267; Header.Reliable = true; UUIDNameBlock = new UUIDNameBlockBlock[0]; } @@ -36774,7 +36596,7 @@ namespace libsecondlife.Packets public UUIDNameReplyPacket() { Header = new LowHeader(); - Header.ID = 269; + Header.ID = 268; Header.Reliable = true; UUIDNameBlock = new UUIDNameBlockBlock[0]; } @@ -36879,7 +36701,7 @@ namespace libsecondlife.Packets public UUIDGroupNameRequestPacket() { Header = new LowHeader(); - Header.ID = 270; + Header.ID = 269; Header.Reliable = true; UUIDNameBlock = new UUIDNameBlockBlock[0]; } @@ -37005,7 +36827,7 @@ namespace libsecondlife.Packets public UUIDGroupNameReplyPacket() { Header = new LowHeader(); - Header.ID = 271; + Header.ID = 270; Header.Reliable = true; UUIDNameBlock = new UUIDNameBlockBlock[0]; } @@ -37114,7 +36936,7 @@ namespace libsecondlife.Packets public ChildAgentDyingPacket() { Header = new LowHeader(); - Header.ID = 273; + Header.ID = 272; Header.Reliable = true; Header.Zerocoded = true; AgentData = new AgentDataBlock(); @@ -37212,7 +37034,7 @@ namespace libsecondlife.Packets public ChildAgentUnknownPacket() { Header = new LowHeader(); - Header.ID = 274; + Header.ID = 273; Header.Reliable = true; AgentData = new AgentDataBlock(); } @@ -37309,7 +37131,7 @@ namespace libsecondlife.Packets public GetScriptRunningPacket() { Header = new LowHeader(); - Header.ID = 276; + Header.ID = 275; Header.Reliable = true; Script = new ScriptBlock(); } @@ -37410,7 +37232,7 @@ namespace libsecondlife.Packets public ScriptRunningReplyPacket() { Header = new LowHeader(); - Header.ID = 277; + Header.ID = 276; Header.Reliable = true; Script = new ScriptBlock(); } @@ -37558,7 +37380,7 @@ namespace libsecondlife.Packets public SetScriptRunningPacket() { Header = new LowHeader(); - Header.ID = 278; + Header.ID = 277; Header.Reliable = true; Script = new ScriptBlock(); AgentData = new AgentDataBlock(); @@ -37707,7 +37529,7 @@ namespace libsecondlife.Packets public ScriptResetPacket() { Header = new LowHeader(); - Header.ID = 279; + Header.ID = 278; Header.Reliable = true; Script = new ScriptBlock(); AgentData = new AgentDataBlock(); @@ -37816,7 +37638,7 @@ namespace libsecondlife.Packets public CompleteAgentMovementPacket() { Header = new LowHeader(); - Header.ID = 282; + Header.ID = 281; Header.Reliable = true; AgentData = new AgentDataBlock(); } @@ -37978,7 +37800,7 @@ namespace libsecondlife.Packets public AgentMovementCompletePacket() { Header = new LowHeader(); - Header.ID = 283; + Header.ID = 282; Header.Reliable = true; Data = new DataBlock(); AgentData = new AgentDataBlock(); @@ -38080,7 +37902,7 @@ namespace libsecondlife.Packets public ConnectAgentToUserserverPacket() { Header = new LowHeader(); - Header.ID = 285; + Header.ID = 284; Header.Reliable = true; AgentData = new AgentDataBlock(); } @@ -38130,7 +37952,7 @@ namespace libsecondlife.Packets public ConnectToUserserverPacket() { Header = new LowHeader(); - Header.ID = 286; + Header.ID = 285; Header.Reliable = true; } @@ -38222,7 +38044,7 @@ namespace libsecondlife.Packets public LogoutRequestPacket() { Header = new LowHeader(); - Header.ID = 288; + Header.ID = 287; Header.Reliable = true; AgentData = new AgentDataBlock(); } @@ -38319,7 +38141,7 @@ namespace libsecondlife.Packets public FinalizeLogoutPacket() { Header = new LowHeader(); - Header.ID = 289; + Header.ID = 288; Header.Reliable = true; AgentData = new AgentDataBlock(); } @@ -38459,7 +38281,7 @@ namespace libsecondlife.Packets public LogoutReplyPacket() { Header = new LowHeader(); - Header.ID = 290; + Header.ID = 289; Header.Reliable = true; Header.Zerocoded = true; InventoryData = new InventoryDataBlock[0]; @@ -38570,7 +38392,7 @@ namespace libsecondlife.Packets public LogoutDemandPacket() { Header = new LowHeader(); - Header.ID = 291; + Header.ID = 290; Header.Reliable = true; LogoutBlock = new LogoutBlockBlock(); } @@ -38812,7 +38634,7 @@ namespace libsecondlife.Packets public ImprovedInstantMessagePacket() { Header = new LowHeader(); - Header.ID = 292; + Header.ID = 291; Header.Reliable = true; Header.Zerocoded = true; MessageBlock = new MessageBlockBlock(); @@ -38915,7 +38737,7 @@ namespace libsecondlife.Packets public RetrieveInstantMessagesPacket() { Header = new LowHeader(); - Header.ID = 293; + Header.ID = 292; Header.Reliable = true; AgentData = new AgentDataBlock(); } @@ -38955,51 +38777,6 @@ namespace libsecondlife.Packets } - /// - public class DequeueInstantMessagesPacket : Packet - { - private Header header; - public override Header Header { get { return header; } set { header = value; } } - public override PacketType Type { get { return PacketType.DequeueInstantMessages; } } - - public DequeueInstantMessagesPacket() - { - Header = new LowHeader(); - Header.ID = 294; - Header.Reliable = true; - } - - public DequeueInstantMessagesPacket(byte[] bytes, ref int i) - { - int packetEnd = bytes.Length - 1; - Header = new LowHeader(bytes, ref i, ref packetEnd); - } - - public DequeueInstantMessagesPacket(Header head, byte[] bytes, ref int i) - { - Header = head; - } - - public override byte[] ToBytes() - { - int length = 8; -; - if (header.AckList.Length > 0) { length += header.AckList.Length * 4 + 1; } - byte[] bytes = new byte[length]; - int i = 0; - header.ToBytes(bytes, ref i); - if (header.AckList.Length > 0) { header.AcksToBytes(bytes, ref i); } - return bytes; - } - - public override string ToString() - { - string output = "--- DequeueInstantMessages ---" + Environment.NewLine; - return output; - } - - } - /// public class FindAgentPacket : Packet { @@ -39118,7 +38895,7 @@ namespace libsecondlife.Packets public FindAgentPacket() { Header = new LowHeader(); - Header.ID = 295; + Header.ID = 293; Header.Reliable = true; LocationBlock = new LocationBlockBlock[0]; AgentBlock = new AgentBlockBlock(); @@ -39279,7 +39056,7 @@ namespace libsecondlife.Packets public RequestGodlikePowersPacket() { Header = new LowHeader(); - Header.ID = 296; + Header.ID = 294; Header.Reliable = true; RequestBlock = new RequestBlockBlock(); AgentData = new AgentDataBlock(); @@ -39428,7 +39205,7 @@ namespace libsecondlife.Packets public GrantGodlikePowersPacket() { Header = new LowHeader(); - Header.ID = 297; + Header.ID = 295; Header.Reliable = true; GrantData = new GrantDataBlock(); AgentData = new AgentDataBlock(); @@ -39658,7 +39435,7 @@ namespace libsecondlife.Packets public GodlikeMessagePacket() { Header = new LowHeader(); - Header.ID = 298; + Header.ID = 296; Header.Reliable = true; Header.Zerocoded = true; MethodData = new MethodDataBlock(); @@ -39906,7 +39683,7 @@ namespace libsecondlife.Packets public EstateOwnerMessagePacket() { Header = new LowHeader(); - Header.ID = 299; + Header.ID = 297; Header.Reliable = true; Header.Zerocoded = true; MethodData = new MethodDataBlock(); @@ -40154,7 +39931,7 @@ namespace libsecondlife.Packets public GenericMessagePacket() { Header = new LowHeader(); - Header.ID = 300; + Header.ID = 298; Header.Reliable = true; Header.Zerocoded = true; MethodData = new MethodDataBlock(); @@ -40320,7 +40097,7 @@ namespace libsecondlife.Packets public MuteListRequestPacket() { Header = new LowHeader(); - Header.ID = 301; + Header.ID = 299; Header.Reliable = true; AgentData = new AgentDataBlock(); MuteData = new MuteDataBlock(); @@ -40501,7 +40278,7 @@ namespace libsecondlife.Packets public UpdateMuteListEntryPacket() { Header = new LowHeader(); - Header.ID = 302; + Header.ID = 300; Header.Reliable = true; AgentData = new AgentDataBlock(); MuteData = new MuteDataBlock(); @@ -40667,7 +40444,7 @@ namespace libsecondlife.Packets public RemoveMuteListEntryPacket() { Header = new LowHeader(); - Header.ID = 303; + Header.ID = 301; Header.Reliable = true; AgentData = new AgentDataBlock(); MuteData = new MuteDataBlock(); @@ -40863,7 +40640,7 @@ namespace libsecondlife.Packets public CopyInventoryFromNotecardPacket() { Header = new LowHeader(); - Header.ID = 304; + Header.ID = 302; Header.Reliable = true; Header.Zerocoded = true; InventoryData = new InventoryDataBlock[0]; @@ -41174,7 +40951,7 @@ namespace libsecondlife.Packets public UpdateInventoryItemPacket() { Header = new LowHeader(); - Header.ID = 305; + Header.ID = 303; Header.Reliable = true; Header.Zerocoded = true; InventoryData = new InventoryDataBlock[0]; @@ -41480,7 +41257,7 @@ namespace libsecondlife.Packets public UpdateCreateInventoryItemPacket() { Header = new LowHeader(); - Header.ID = 306; + Header.ID = 304; Header.Reliable = true; Header.Zerocoded = true; InventoryData = new InventoryDataBlock[0]; @@ -41668,7 +41445,7 @@ namespace libsecondlife.Packets public MoveInventoryItemPacket() { Header = new LowHeader(); - Header.ID = 307; + Header.ID = 305; Header.Reliable = true; Header.Zerocoded = true; InventoryData = new InventoryDataBlock[0]; @@ -41863,7 +41640,7 @@ namespace libsecondlife.Packets public CopyInventoryItemPacket() { Header = new LowHeader(); - Header.ID = 308; + Header.ID = 306; Header.Reliable = true; Header.Zerocoded = true; InventoryData = new InventoryDataBlock[0]; @@ -42021,7 +41798,7 @@ namespace libsecondlife.Packets public RemoveInventoryItemPacket() { Header = new LowHeader(); - Header.ID = 309; + Header.ID = 307; Header.Reliable = true; InventoryData = new InventoryDataBlock[0]; AgentData = new AgentDataBlock(); @@ -42185,7 +41962,7 @@ namespace libsecondlife.Packets public ChangeInventoryItemFlagsPacket() { Header = new LowHeader(); - Header.ID = 310; + Header.ID = 308; Header.Reliable = true; InventoryData = new InventoryDataBlock[0]; AgentData = new AgentDataBlock(); @@ -42342,7 +42119,7 @@ namespace libsecondlife.Packets public SaveAssetIntoInventoryPacket() { Header = new LowHeader(); - Header.ID = 311; + Header.ID = 309; Header.Reliable = true; InventoryData = new InventoryDataBlock(); AgentData = new AgentDataBlock(); @@ -42517,7 +42294,7 @@ namespace libsecondlife.Packets public CreateInventoryFolderPacket() { Header = new LowHeader(); - Header.ID = 312; + Header.ID = 310; Header.Reliable = true; AgentData = new AgentDataBlock(); FolderData = new FolderDataBlock(); @@ -42692,7 +42469,7 @@ namespace libsecondlife.Packets public UpdateInventoryFolderPacket() { Header = new LowHeader(); - Header.ID = 313; + Header.ID = 311; Header.Reliable = true; AgentData = new AgentDataBlock(); FolderData = new FolderDataBlock[0]; @@ -42857,7 +42634,7 @@ namespace libsecondlife.Packets public MoveInventoryFolderPacket() { Header = new LowHeader(); - Header.ID = 314; + Header.ID = 312; Header.Reliable = true; Header.Zerocoded = true; InventoryData = new InventoryDataBlock[0]; @@ -43015,7 +42792,7 @@ namespace libsecondlife.Packets public RemoveInventoryFolderPacket() { Header = new LowHeader(); - Header.ID = 315; + Header.ID = 313; Header.Reliable = true; AgentData = new AgentDataBlock(); FolderData = new FolderDataBlock[0]; @@ -43191,7 +42968,7 @@ namespace libsecondlife.Packets public FetchInventoryDescendentsPacket() { Header = new LowHeader(); - Header.ID = 316; + Header.ID = 314; Header.Reliable = true; Header.Zerocoded = true; InventoryData = new InventoryDataBlock(); @@ -43569,7 +43346,7 @@ namespace libsecondlife.Packets public InventoryDescendentsPacket() { Header = new LowHeader(); - Header.ID = 317; + Header.ID = 315; Header.Reliable = true; Header.Zerocoded = true; ItemData = new ItemDataBlock[0]; @@ -43748,7 +43525,7 @@ namespace libsecondlife.Packets public FetchInventoryPacket() { Header = new LowHeader(); - Header.ID = 318; + Header.ID = 316; Header.Reliable = true; Header.Zerocoded = true; InventoryData = new InventoryDataBlock[0]; @@ -44043,7 +43820,7 @@ namespace libsecondlife.Packets public FetchInventoryReplyPacket() { Header = new LowHeader(); - Header.ID = 319; + Header.ID = 317; Header.Reliable = true; Header.Zerocoded = true; InventoryData = new InventoryDataBlock[0]; @@ -44422,7 +44199,7 @@ namespace libsecondlife.Packets public BulkUpdateInventoryPacket() { Header = new LowHeader(); - Header.ID = 320; + Header.ID = 318; Header.Reliable = true; Header.Zerocoded = true; ItemData = new ItemDataBlock[0]; @@ -44562,7 +44339,7 @@ namespace libsecondlife.Packets public RequestInventoryAssetPacket() { Header = new LowHeader(); - Header.ID = 321; + Header.ID = 319; Header.Reliable = true; QueryData = new QueryDataBlock(); } @@ -44663,7 +44440,7 @@ namespace libsecondlife.Packets public InventoryAssetResponsePacket() { Header = new LowHeader(); - Header.ID = 322; + Header.ID = 320; Header.Reliable = true; QueryData = new QueryDataBlock(); } @@ -44846,7 +44623,7 @@ namespace libsecondlife.Packets public RemoveInventoryObjectsPacket() { Header = new LowHeader(); - Header.ID = 323; + Header.ID = 321; Header.Reliable = true; ItemData = new ItemDataBlock[0]; AgentData = new AgentDataBlock(); @@ -45020,7 +44797,7 @@ namespace libsecondlife.Packets public PurgeInventoryDescendentsPacket() { Header = new LowHeader(); - Header.ID = 324; + Header.ID = 322; Header.Reliable = true; Header.Zerocoded = true; InventoryData = new InventoryDataBlock(); @@ -45357,7 +45134,7 @@ namespace libsecondlife.Packets public UpdateTaskInventoryPacket() { Header = new LowHeader(); - Header.ID = 325; + Header.ID = 323; Header.Reliable = true; Header.Zerocoded = true; InventoryData = new InventoryDataBlock(); @@ -45515,7 +45292,7 @@ namespace libsecondlife.Packets public RemoveTaskInventoryPacket() { Header = new LowHeader(); - Header.ID = 326; + Header.ID = 324; Header.Reliable = true; Header.Zerocoded = true; InventoryData = new InventoryDataBlock(); @@ -45672,7 +45449,7 @@ namespace libsecondlife.Packets public MoveTaskInventoryPacket() { Header = new LowHeader(); - Header.ID = 327; + Header.ID = 325; Header.Reliable = true; InventoryData = new InventoryDataBlock(); AgentData = new AgentDataBlock(); @@ -45820,7 +45597,7 @@ namespace libsecondlife.Packets public RequestTaskInventoryPacket() { Header = new LowHeader(); - Header.ID = 328; + Header.ID = 326; Header.Reliable = true; InventoryData = new InventoryDataBlock(); AgentData = new AgentDataBlock(); @@ -45945,7 +45722,7 @@ namespace libsecondlife.Packets public ReplyTaskInventoryPacket() { Header = new LowHeader(); - Header.ID = 329; + Header.ID = 327; Header.Reliable = true; Header.Zerocoded = true; InventoryData = new InventoryDataBlock(); @@ -46152,7 +45929,7 @@ namespace libsecondlife.Packets public DeRezObjectPacket() { Header = new LowHeader(); - Header.ID = 330; + Header.ID = 328; Header.Reliable = true; Header.Zerocoded = true; ObjectData = new ObjectDataBlock[0]; @@ -46225,7 +46002,7 @@ namespace libsecondlife.Packets public DeRezAckPacket() { Header = new LowHeader(); - Header.ID = 331; + Header.ID = 329; Header.Reliable = true; } @@ -46604,7 +46381,7 @@ namespace libsecondlife.Packets public RezObjectPacket() { Header = new LowHeader(); - Header.ID = 332; + Header.ID = 330; Header.Reliable = true; Header.Zerocoded = true; InventoryData = new InventoryDataBlock(); @@ -46905,7 +46682,7 @@ namespace libsecondlife.Packets public RezObjectFromNotecardPacket() { Header = new LowHeader(); - Header.ID = 333; + Header.ID = 331; Header.Reliable = true; Header.Zerocoded = true; InventoryData = new InventoryDataBlock[0]; @@ -47026,7 +46803,7 @@ namespace libsecondlife.Packets public DeclineInventoryPacket() { Header = new LowHeader(); - Header.ID = 334; + Header.ID = 332; Header.Reliable = true; InfoBlock = new InfoBlockBlock(); } @@ -47174,7 +46951,7 @@ namespace libsecondlife.Packets public RequestFriendshipPacket() { Header = new LowHeader(); - Header.ID = 337; + Header.ID = 335; Header.Reliable = true; AgentBlock = new AgentBlockBlock(); AgentData = new AgentDataBlock(); @@ -47362,7 +47139,7 @@ namespace libsecondlife.Packets public AcceptFriendshipPacket() { Header = new LowHeader(); - Header.ID = 338; + Header.ID = 336; Header.Reliable = true; TransactionBlock = new TransactionBlockBlock(); AgentData = new AgentDataBlock(); @@ -47524,7 +47301,7 @@ namespace libsecondlife.Packets public DeclineFriendshipPacket() { Header = new LowHeader(); - Header.ID = 339; + Header.ID = 337; Header.Reliable = true; TransactionBlock = new TransactionBlockBlock(); AgentData = new AgentDataBlock(); @@ -47626,7 +47403,7 @@ namespace libsecondlife.Packets public FormFriendshipPacket() { Header = new LowHeader(); - Header.ID = 340; + Header.ID = 338; Header.Reliable = true; AgentBlock = new AgentBlockBlock(); } @@ -47766,7 +47543,7 @@ namespace libsecondlife.Packets public TerminateFriendshipPacket() { Header = new LowHeader(); - Header.ID = 341; + Header.ID = 339; Header.Reliable = true; ExBlock = new ExBlockBlock(); AgentData = new AgentDataBlock(); @@ -47915,7 +47692,7 @@ namespace libsecondlife.Packets public OfferCallingCardPacket() { Header = new LowHeader(); - Header.ID = 342; + Header.ID = 340; Header.Reliable = true; AgentBlock = new AgentBlockBlock(); AgentData = new AgentDataBlock(); @@ -48103,7 +47880,7 @@ namespace libsecondlife.Packets public AcceptCallingCardPacket() { Header = new LowHeader(); - Header.ID = 343; + Header.ID = 341; Header.Reliable = true; TransactionBlock = new TransactionBlockBlock(); AgentData = new AgentDataBlock(); @@ -48265,7 +48042,7 @@ namespace libsecondlife.Packets public DeclineCallingCardPacket() { Header = new LowHeader(); - Header.ID = 344; + Header.ID = 342; Header.Reliable = true; TransactionBlock = new TransactionBlockBlock(); AgentData = new AgentDataBlock(); @@ -48605,7 +48382,7 @@ namespace libsecondlife.Packets public RezScriptPacket() { Header = new LowHeader(); - Header.ID = 345; + Header.ID = 343; Header.Reliable = true; Header.Zerocoded = true; UpdateBlock = new UpdateBlockBlock(); @@ -48828,7 +48605,7 @@ namespace libsecondlife.Packets public CreateInventoryItemPacket() { Header = new LowHeader(); - Header.ID = 346; + Header.ID = 344; Header.Reliable = true; Header.Zerocoded = true; InventoryBlock = new InventoryBlockBlock(); @@ -49042,7 +48819,7 @@ namespace libsecondlife.Packets public CreateLandmarkForEventPacket() { Header = new LowHeader(); - Header.ID = 347; + Header.ID = 345; Header.Reliable = true; Header.Zerocoded = true; InventoryBlock = new InventoryBlockBlock(); @@ -49146,7 +48923,7 @@ namespace libsecondlife.Packets public RegionHandleRequestPacket() { Header = new LowHeader(); - Header.ID = 350; + Header.ID = 348; Header.Reliable = true; RequestBlock = new RequestBlockBlock(); } @@ -49250,7 +49027,7 @@ namespace libsecondlife.Packets public RegionIDAndHandleReplyPacket() { Header = new LowHeader(); - Header.ID = 351; + Header.ID = 349; Header.Reliable = true; ReplyBlock = new ReplyBlockBlock(); } @@ -49442,7 +49219,7 @@ namespace libsecondlife.Packets public MoneyTransferRequestPacket() { Header = new LowHeader(); - Header.ID = 352; + Header.ID = 350; Header.Reliable = true; Header.Zerocoded = true; MoneyData = new MoneyDataBlock(); @@ -49548,7 +49325,7 @@ namespace libsecondlife.Packets public AdjustBalancePacket() { Header = new LowHeader(); - Header.ID = 355; + Header.ID = 353; Header.Reliable = true; Header.Zerocoded = true; AgentData = new AgentDataBlock(); @@ -49689,7 +49466,7 @@ namespace libsecondlife.Packets public MoneyBalanceRequestPacket() { Header = new LowHeader(); - Header.ID = 356; + Header.ID = 354; Header.Reliable = true; Header.Zerocoded = true; MoneyData = new MoneyDataBlock(); @@ -49839,7 +49616,7 @@ namespace libsecondlife.Packets public MoneyBalanceReplyPacket() { Header = new LowHeader(); - Header.ID = 357; + Header.ID = 355; Header.Reliable = true; Header.Zerocoded = true; MoneyData = new MoneyDataBlock(); @@ -50035,7 +49812,7 @@ namespace libsecondlife.Packets public RoutedMoneyBalanceReplyPacket() { Header = new LowHeader(); - Header.ID = 358; + Header.ID = 356; Header.Reliable = true; Header.Zerocoded = true; TargetBlock = new TargetBlockBlock(); @@ -50148,7 +49925,7 @@ namespace libsecondlife.Packets public MoneyHistoryRequestPacket() { Header = new LowHeader(); - Header.ID = 359; + Header.ID = 357; Header.Reliable = true; MoneyData = new MoneyDataBlock(); } @@ -50411,7 +50188,7 @@ namespace libsecondlife.Packets public MoneyHistoryReplyPacket() { Header = new LowHeader(); - Header.ID = 360; + Header.ID = 358; Header.Reliable = true; Header.Zerocoded = true; MoneyData = new MoneyDataBlock(); @@ -50588,7 +50365,7 @@ namespace libsecondlife.Packets public MoneySummaryRequestPacket() { Header = new LowHeader(); - Header.ID = 361; + Header.ID = 359; Header.Reliable = true; MoneyData = new MoneyDataBlock(); AgentData = new AgentDataBlock(); @@ -50910,7 +50687,7 @@ namespace libsecondlife.Packets public MoneySummaryReplyPacket() { Header = new LowHeader(); - Header.ID = 362; + Header.ID = 360; Header.Reliable = true; Header.Zerocoded = true; MoneyData = new MoneyDataBlock(); @@ -51070,7 +50847,7 @@ namespace libsecondlife.Packets public MoneyDetailsRequestPacket() { Header = new LowHeader(); - Header.ID = 363; + Header.ID = 361; Header.Reliable = true; MoneyData = new MoneyDataBlock(); AgentData = new AgentDataBlock(); @@ -51314,7 +51091,7 @@ namespace libsecondlife.Packets public MoneyDetailsReplyPacket() { Header = new LowHeader(); - Header.ID = 364; + Header.ID = 362; Header.Reliable = true; Header.Zerocoded = true; MoneyData = new MoneyDataBlock(); @@ -51491,7 +51268,7 @@ namespace libsecondlife.Packets public MoneyTransactionsRequestPacket() { Header = new LowHeader(); - Header.ID = 365; + Header.ID = 363; Header.Reliable = true; MoneyData = new MoneyDataBlock(); AgentData = new AgentDataBlock(); @@ -51783,7 +51560,7 @@ namespace libsecondlife.Packets public MoneyTransactionsReplyPacket() { Header = new LowHeader(); - Header.ID = 366; + Header.ID = 364; Header.Reliable = true; Header.Zerocoded = true; MoneyData = new MoneyDataBlock(); @@ -51846,103 +51623,6 @@ namespace libsecondlife.Packets } - /// - public class GestureRequestPacket : Packet - { - /// - [XmlType("gesturerequest_agentblock")] - public class AgentBlockBlock - { - public LLUUID AgentID; - public bool Reset; - - [XmlIgnore] - public int Length - { - get - { - return 17; - } - } - - public AgentBlockBlock() { } - public AgentBlockBlock(byte[] bytes, ref int i) - { - try - { - AgentID = new LLUUID(bytes, i); i += 16; - Reset = (bytes[i++] != 0) ? (bool)true : (bool)false; - } - catch (Exception) - { - throw new MalformedDataException(); - } - } - - public void ToBytes(byte[] bytes, ref int i) - { - Buffer.BlockCopy(AgentID.GetBytes(), 0, bytes, i, 16); i += 16; - bytes[i++] = (byte)((Reset) ? 1 : 0); - } - - public override string ToString() - { - StringBuilder output = new StringBuilder(); - output.AppendLine("-- AgentBlock --"); - output.AppendLine(String.Format("AgentID: {0}", AgentID)); - output.Append(String.Format("Reset: {0}", Reset)); - return output.ToString(); - } - } - - private Header header; - public override Header Header { get { return header; } set { header = value; } } - public override PacketType Type { get { return PacketType.GestureRequest; } } - public AgentBlockBlock AgentBlock; - - public GestureRequestPacket() - { - Header = new LowHeader(); - Header.ID = 367; - Header.Reliable = true; - AgentBlock = new AgentBlockBlock(); - } - - public GestureRequestPacket(byte[] bytes, ref int i) - { - int packetEnd = bytes.Length - 1; - Header = new LowHeader(bytes, ref i, ref packetEnd); - AgentBlock = new AgentBlockBlock(bytes, ref i); - } - - public GestureRequestPacket(Header head, byte[] bytes, ref int i) - { - Header = head; - AgentBlock = new AgentBlockBlock(bytes, ref i); - } - - public override byte[] ToBytes() - { - int length = 8; - length += AgentBlock.Length;; - if (header.AckList.Length > 0) { length += header.AckList.Length * 4 + 1; } - byte[] bytes = new byte[length]; - int i = 0; - header.ToBytes(bytes, ref i); - AgentBlock.ToBytes(bytes, ref i); - if (header.AckList.Length > 0) { header.AcksToBytes(bytes, ref i); } - return bytes; - } - - public override string ToString() - { - string output = "--- GestureRequest ---" + Environment.NewLine; - output += AgentBlock.ToString() + Environment.NewLine; - return output; - } - - } - /// public class ActivateGesturesPacket : Packet { @@ -52061,7 +51741,7 @@ namespace libsecondlife.Packets public ActivateGesturesPacket() { Header = new LowHeader(); - Header.ID = 368; + Header.ID = 365; Header.Reliable = true; Data = new DataBlock[0]; AgentData = new AgentDataBlock(); @@ -52232,7 +51912,7 @@ namespace libsecondlife.Packets public DeactivateGesturesPacket() { Header = new LowHeader(); - Header.ID = 369; + Header.ID = 366; Header.Reliable = true; Data = new DataBlock[0]; AgentData = new AgentDataBlock(); @@ -52363,7 +52043,7 @@ namespace libsecondlife.Packets public MuteListUpdatePacket() { Header = new LowHeader(); - Header.ID = 370; + Header.ID = 367; Header.Reliable = true; MuteData = new MuteDataBlock(); } @@ -52456,7 +52136,7 @@ namespace libsecondlife.Packets public UseCachedMuteListPacket() { Header = new LowHeader(); - Header.ID = 371; + Header.ID = 368; Header.Reliable = true; AgentData = new AgentDataBlock(); } @@ -52603,7 +52283,7 @@ namespace libsecondlife.Packets public GrantUserRightsPacket() { Header = new LowHeader(); - Header.ID = 372; + Header.ID = 369; Header.Reliable = true; Rights = new RightsBlock[0]; AgentData = new AgentDataBlock(); @@ -52763,7 +52443,7 @@ namespace libsecondlife.Packets public ChangeUserRightsPacket() { Header = new LowHeader(); - Header.ID = 373; + Header.ID = 370; Header.Reliable = true; Rights = new RightsBlock[0]; AgentData = new AgentDataBlock(); @@ -52873,7 +52553,7 @@ namespace libsecondlife.Packets public OnlineNotificationPacket() { Header = new LowHeader(); - Header.ID = 374; + Header.ID = 371; Header.Reliable = true; AgentBlock = new AgentBlockBlock[0]; } @@ -52978,7 +52658,7 @@ namespace libsecondlife.Packets public OfflineNotificationPacket() { Header = new LowHeader(); - Header.ID = 375; + Header.ID = 372; Header.Reliable = true; AgentBlock = new AgentBlockBlock[0]; } @@ -53163,7 +52843,7 @@ namespace libsecondlife.Packets public SetStartLocationRequestPacket() { Header = new LowHeader(); - Header.ID = 376; + Header.ID = 373; Header.Reliable = true; Header.Zerocoded = true; StartLocationData = new StartLocationDataBlock(); @@ -53297,7 +52977,7 @@ namespace libsecondlife.Packets public AssetUploadRequestPacket() { Header = new LowHeader(); - Header.ID = 386; + Header.ID = 383; Header.Reliable = true; AssetBlock = new AssetBlockBlock(); } @@ -53398,7 +53078,7 @@ namespace libsecondlife.Packets public AssetUploadCompletePacket() { Header = new LowHeader(); - Header.ID = 387; + Header.ID = 384; Header.Reliable = true; AssetBlock = new AssetBlockBlock(); } @@ -53517,7 +53197,7 @@ namespace libsecondlife.Packets public ReputationAgentAssignPacket() { Header = new LowHeader(); - Header.ID = 388; + Header.ID = 385; Header.Reliable = true; DataBlock = new DataBlockBlock(); } @@ -53565,14 +53245,13 @@ namespace libsecondlife.Packets public class ReputationDataBlock { public LLUUID ToID; - public LLUUID FromID; [XmlIgnore] public int Length { get { - return 32; + return 16; } } @@ -53582,7 +53261,6 @@ namespace libsecondlife.Packets try { ToID = new LLUUID(bytes, i); i += 16; - FromID = new LLUUID(bytes, i); i += 16; } catch (Exception) { @@ -53593,15 +53271,59 @@ namespace libsecondlife.Packets public void ToBytes(byte[] bytes, ref int i) { Buffer.BlockCopy(ToID.GetBytes(), 0, bytes, i, 16); i += 16; - Buffer.BlockCopy(FromID.GetBytes(), 0, bytes, i, 16); i += 16; } public override string ToString() { StringBuilder output = new StringBuilder(); output.AppendLine("-- ReputationData --"); - output.AppendLine(String.Format("ToID: {0}", ToID)); - output.Append(String.Format("FromID: {0}", FromID)); + output.Append(String.Format("ToID: {0}", ToID)); + return output.ToString(); + } + } + + /// + [XmlType("reputationindividualrequest_agentdata")] + public class AgentDataBlock + { + public LLUUID AgentID; + public LLUUID SessionID; + + [XmlIgnore] + public int Length + { + get + { + return 32; + } + } + + public AgentDataBlock() { } + public AgentDataBlock(byte[] bytes, ref int i) + { + try + { + AgentID = new LLUUID(bytes, i); i += 16; + SessionID = new LLUUID(bytes, i); i += 16; + } + catch (Exception) + { + throw new MalformedDataException(); + } + } + + public void ToBytes(byte[] bytes, ref int i) + { + Buffer.BlockCopy(AgentID.GetBytes(), 0, bytes, i, 16); i += 16; + Buffer.BlockCopy(SessionID.GetBytes(), 0, bytes, i, 16); i += 16; + } + + public override string ToString() + { + StringBuilder output = new StringBuilder(); + output.AppendLine("-- AgentData --"); + output.AppendLine(String.Format("AgentID: {0}", AgentID)); + output.Append(String.Format("SessionID: {0}", SessionID)); return output.ToString(); } } @@ -53610,13 +53332,15 @@ namespace libsecondlife.Packets public override Header Header { get { return header; } set { header = value; } } public override PacketType Type { get { return PacketType.ReputationIndividualRequest; } } public ReputationDataBlock ReputationData; + public AgentDataBlock AgentData; public ReputationIndividualRequestPacket() { Header = new LowHeader(); - Header.ID = 389; + Header.ID = 386; Header.Reliable = true; ReputationData = new ReputationDataBlock(); + AgentData = new AgentDataBlock(); } public ReputationIndividualRequestPacket(byte[] bytes, ref int i) @@ -53624,23 +53348,26 @@ namespace libsecondlife.Packets int packetEnd = bytes.Length - 1; Header = new LowHeader(bytes, ref i, ref packetEnd); ReputationData = new ReputationDataBlock(bytes, ref i); + AgentData = new AgentDataBlock(bytes, ref i); } public ReputationIndividualRequestPacket(Header head, byte[] bytes, ref int i) { Header = head; ReputationData = new ReputationDataBlock(bytes, ref i); + AgentData = new AgentDataBlock(bytes, ref i); } public override byte[] ToBytes() { int length = 8; - length += ReputationData.Length;; + length += ReputationData.Length; length += AgentData.Length;; if (header.AckList.Length > 0) { length += header.AckList.Length * 4 + 1; } byte[] bytes = new byte[length]; int i = 0; header.ToBytes(bytes, ref i); ReputationData.ToBytes(bytes, ref i); + AgentData.ToBytes(bytes, ref i); if (header.AckList.Length > 0) { header.AcksToBytes(bytes, ref i); } return bytes; } @@ -53649,6 +53376,7 @@ namespace libsecondlife.Packets { string output = "--- ReputationIndividualRequest ---" + Environment.NewLine; output += ReputationData.ToString() + Environment.NewLine; + output += AgentData.ToString() + Environment.NewLine; return output; } @@ -53664,7 +53392,6 @@ namespace libsecondlife.Packets public float Appearance; public LLUUID ToID; public float Behavior; - public LLUUID FromID; public float Building; [XmlIgnore] @@ -53672,7 +53399,7 @@ namespace libsecondlife.Packets { get { - return 44; + return 28; } } @@ -53686,7 +53413,6 @@ namespace libsecondlife.Packets ToID = new LLUUID(bytes, i); i += 16; if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4); Behavior = BitConverter.ToSingle(bytes, i); i += 4; - FromID = new LLUUID(bytes, i); i += 16; if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4); Building = BitConverter.ToSingle(bytes, i); i += 4; } @@ -53706,7 +53432,6 @@ namespace libsecondlife.Packets ba = BitConverter.GetBytes(Behavior); if(!BitConverter.IsLittleEndian) { Array.Reverse(ba, 0, 4); } Buffer.BlockCopy(ba, 0, bytes, i, 4); i += 4; - Buffer.BlockCopy(FromID.GetBytes(), 0, bytes, i, 16); i += 16; ba = BitConverter.GetBytes(Building); if(!BitConverter.IsLittleEndian) { Array.Reverse(ba, 0, 4); } Buffer.BlockCopy(ba, 0, bytes, i, 4); i += 4; @@ -53719,23 +53444,66 @@ namespace libsecondlife.Packets output.AppendLine(String.Format("Appearance: {0}", Appearance)); output.AppendLine(String.Format("ToID: {0}", ToID)); output.AppendLine(String.Format("Behavior: {0}", Behavior)); - output.AppendLine(String.Format("FromID: {0}", FromID)); output.Append(String.Format("Building: {0}", Building)); return output.ToString(); } } + /// + [XmlType("reputationindividualreply_agentdata")] + public class AgentDataBlock + { + public LLUUID AgentID; + + [XmlIgnore] + public int Length + { + get + { + return 16; + } + } + + public AgentDataBlock() { } + public AgentDataBlock(byte[] bytes, ref int i) + { + try + { + AgentID = new LLUUID(bytes, i); i += 16; + } + catch (Exception) + { + throw new MalformedDataException(); + } + } + + public void ToBytes(byte[] bytes, ref int i) + { + Buffer.BlockCopy(AgentID.GetBytes(), 0, bytes, i, 16); i += 16; + } + + public override string ToString() + { + StringBuilder output = new StringBuilder(); + output.AppendLine("-- AgentData --"); + output.Append(String.Format("AgentID: {0}", AgentID)); + return output.ToString(); + } + } + private Header header; public override Header Header { get { return header; } set { header = value; } } public override PacketType Type { get { return PacketType.ReputationIndividualReply; } } public ReputationDataBlock ReputationData; + public AgentDataBlock AgentData; public ReputationIndividualReplyPacket() { Header = new LowHeader(); - Header.ID = 390; + Header.ID = 387; Header.Reliable = true; ReputationData = new ReputationDataBlock(); + AgentData = new AgentDataBlock(); } public ReputationIndividualReplyPacket(byte[] bytes, ref int i) @@ -53743,23 +53511,26 @@ namespace libsecondlife.Packets int packetEnd = bytes.Length - 1; Header = new LowHeader(bytes, ref i, ref packetEnd); ReputationData = new ReputationDataBlock(bytes, ref i); + AgentData = new AgentDataBlock(bytes, ref i); } public ReputationIndividualReplyPacket(Header head, byte[] bytes, ref int i) { Header = head; ReputationData = new ReputationDataBlock(bytes, ref i); + AgentData = new AgentDataBlock(bytes, ref i); } public override byte[] ToBytes() { int length = 8; - length += ReputationData.Length;; + length += ReputationData.Length; length += AgentData.Length;; if (header.AckList.Length > 0) { length += header.AckList.Length * 4 + 1; } byte[] bytes = new byte[length]; int i = 0; header.ToBytes(bytes, ref i); ReputationData.ToBytes(bytes, ref i); + AgentData.ToBytes(bytes, ref i); if (header.AckList.Length > 0) { header.AcksToBytes(bytes, ref i); } return bytes; } @@ -53768,6 +53539,7 @@ namespace libsecondlife.Packets { string output = "--- ReputationIndividualReply ---" + Environment.NewLine; output += ReputationData.ToString() + Environment.NewLine; + output += AgentData.ToString() + Environment.NewLine; return output; } @@ -53939,7 +53711,7 @@ namespace libsecondlife.Packets public CreateGroupRequestPacket() { Header = new LowHeader(); - Header.ID = 395; + Header.ID = 392; Header.Reliable = true; Header.Zerocoded = true; AgentData = new AgentDataBlock(); @@ -54107,7 +53879,7 @@ namespace libsecondlife.Packets public CreateGroupReplyPacket() { Header = new LowHeader(); - Header.ID = 396; + Header.ID = 393; Header.Reliable = true; ReplyData = new ReplyDataBlock(); AgentData = new AgentDataBlock(); @@ -54302,7 +54074,7 @@ namespace libsecondlife.Packets public UpdateGroupInfoPacket() { Header = new LowHeader(); - Header.ID = 397; + Header.ID = 394; Header.Reliable = true; Header.Zerocoded = true; AgentData = new AgentDataBlock(); @@ -54463,7 +54235,7 @@ namespace libsecondlife.Packets public GroupRoleChangesPacket() { Header = new LowHeader(); - Header.ID = 398; + Header.ID = 395; Header.Reliable = true; RoleChange = new RoleChangeBlock[0]; AgentData = new AgentDataBlock(); @@ -54620,7 +54392,7 @@ namespace libsecondlife.Packets public JoinGroupRequestPacket() { Header = new LowHeader(); - Header.ID = 399; + Header.ID = 396; Header.Reliable = true; Header.Zerocoded = true; AgentData = new AgentDataBlock(); @@ -54766,7 +54538,7 @@ namespace libsecondlife.Packets public JoinGroupReplyPacket() { Header = new LowHeader(); - Header.ID = 400; + Header.ID = 397; Header.Reliable = true; AgentData = new AgentDataBlock(); GroupData = new GroupDataBlock(); @@ -54954,7 +54726,7 @@ namespace libsecondlife.Packets public EjectGroupMemberRequestPacket() { Header = new LowHeader(); - Header.ID = 401; + Header.ID = 398; Header.Reliable = true; AgentData = new AgentDataBlock(); EjectData = new EjectDataBlock[0]; @@ -55155,7 +54927,7 @@ namespace libsecondlife.Packets public EjectGroupMemberReplyPacket() { Header = new LowHeader(); - Header.ID = 402; + Header.ID = 399; Header.Reliable = true; AgentData = new AgentDataBlock(); EjectData = new EjectDataBlock(); @@ -55305,7 +55077,7 @@ namespace libsecondlife.Packets public LeaveGroupRequestPacket() { Header = new LowHeader(); - Header.ID = 403; + Header.ID = 400; Header.Reliable = true; AgentData = new AgentDataBlock(); GroupData = new GroupDataBlock(); @@ -55450,7 +55222,7 @@ namespace libsecondlife.Packets public LeaveGroupReplyPacket() { Header = new LowHeader(); - Header.ID = 404; + Header.ID = 401; Header.Reliable = true; AgentData = new AgentDataBlock(); GroupData = new GroupDataBlock(); @@ -55642,7 +55414,7 @@ namespace libsecondlife.Packets public InviteGroupRequestPacket() { Header = new LowHeader(); - Header.ID = 405; + Header.ID = 402; Header.Reliable = true; InviteData = new InviteDataBlock[0]; AgentData = new AgentDataBlock(); @@ -55804,7 +55576,7 @@ namespace libsecondlife.Packets public GroupProfileRequestPacket() { Header = new LowHeader(); - Header.ID = 407; + Header.ID = 404; Header.Reliable = true; AgentData = new AgentDataBlock(); GroupData = new GroupDataBlock(); @@ -56075,7 +55847,7 @@ namespace libsecondlife.Packets public GroupProfileReplyPacket() { Header = new LowHeader(); - Header.ID = 408; + Header.ID = 405; Header.Reliable = true; Header.Zerocoded = true; AgentData = new AgentDataBlock(); @@ -56239,7 +56011,7 @@ namespace libsecondlife.Packets public GroupAccountSummaryRequestPacket() { Header = new LowHeader(); - Header.ID = 409; + Header.ID = 406; Header.Reliable = true; Header.Zerocoded = true; MoneyData = new MoneyDataBlock(); @@ -56559,7 +56331,7 @@ namespace libsecondlife.Packets public GroupAccountSummaryReplyPacket() { Header = new LowHeader(); - Header.ID = 410; + Header.ID = 407; Header.Reliable = true; Header.Zerocoded = true; MoneyData = new MoneyDataBlock(); @@ -56723,7 +56495,7 @@ namespace libsecondlife.Packets public GroupAccountDetailsRequestPacket() { Header = new LowHeader(); - Header.ID = 411; + Header.ID = 408; Header.Reliable = true; Header.Zerocoded = true; MoneyData = new MoneyDataBlock(); @@ -56972,7 +56744,7 @@ namespace libsecondlife.Packets public GroupAccountDetailsReplyPacket() { Header = new LowHeader(); - Header.ID = 412; + Header.ID = 409; Header.Reliable = true; Header.Zerocoded = true; MoneyData = new MoneyDataBlock(); @@ -57153,7 +56925,7 @@ namespace libsecondlife.Packets public GroupAccountTransactionsRequestPacket() { Header = new LowHeader(); - Header.ID = 413; + Header.ID = 410; Header.Reliable = true; Header.Zerocoded = true; MoneyData = new MoneyDataBlock(); @@ -57450,7 +57222,7 @@ namespace libsecondlife.Packets public GroupAccountTransactionsReplyPacket() { Header = new LowHeader(); - Header.ID = 414; + Header.ID = 411; Header.Reliable = true; Header.Zerocoded = true; MoneyData = new MoneyDataBlock(); @@ -57656,7 +57428,7 @@ namespace libsecondlife.Packets public GroupActiveProposalsRequestPacket() { Header = new LowHeader(); - Header.ID = 415; + Header.ID = 412; Header.Reliable = true; AgentData = new AgentDataBlock(); TransactionData = new TransactionDataBlock(); @@ -57981,7 +57753,7 @@ namespace libsecondlife.Packets public GroupActiveProposalItemReplyPacket() { Header = new LowHeader(); - Header.ID = 416; + Header.ID = 413; Header.Reliable = true; Header.Zerocoded = true; ProposalData = new ProposalDataBlock[0]; @@ -58187,7 +57959,7 @@ namespace libsecondlife.Packets public GroupVoteHistoryRequestPacket() { Header = new LowHeader(); - Header.ID = 417; + Header.ID = 414; Header.Reliable = true; AgentData = new AgentDataBlock(); TransactionData = new TransactionDataBlock(); @@ -58601,7 +58373,7 @@ namespace libsecondlife.Packets public GroupVoteHistoryItemReplyPacket() { Header = new LowHeader(); - Header.ID = 418; + Header.ID = 415; Header.Reliable = true; Header.Zerocoded = true; HistoryItemData = new HistoryItemDataBlock(); @@ -58813,7 +58585,7 @@ namespace libsecondlife.Packets public StartGroupProposalPacket() { Header = new LowHeader(); - Header.ID = 419; + Header.ID = 416; Header.Reliable = true; Header.Zerocoded = true; ProposalData = new ProposalDataBlock(); @@ -58984,7 +58756,7 @@ namespace libsecondlife.Packets public GroupProposalBallotPacket() { Header = new LowHeader(); - Header.ID = 420; + Header.ID = 417; Header.Reliable = true; ProposalData = new ProposalDataBlock(); AgentData = new AgentDataBlock(); @@ -59133,7 +58905,7 @@ namespace libsecondlife.Packets public GroupMembersRequestPacket() { Header = new LowHeader(); - Header.ID = 422; + Header.ID = 419; Header.Reliable = true; AgentData = new AgentDataBlock(); GroupData = new GroupDataBlock(); @@ -59392,7 +59164,7 @@ namespace libsecondlife.Packets public GroupMembersReplyPacket() { Header = new LowHeader(); - Header.ID = 423; + Header.ID = 420; Header.Reliable = true; Header.Zerocoded = true; MemberData = new MemberDataBlock[0]; @@ -59516,7 +59288,7 @@ namespace libsecondlife.Packets public ActivateGroupPacket() { Header = new LowHeader(); - Header.ID = 424; + Header.ID = 421; Header.Reliable = true; Header.Zerocoded = true; AgentData = new AgentDataBlock(); @@ -59664,7 +59436,7 @@ namespace libsecondlife.Packets public SetGroupContributionPacket() { Header = new LowHeader(); - Header.ID = 425; + Header.ID = 422; Header.Reliable = true; Data = new DataBlock(); AgentData = new AgentDataBlock(); @@ -59813,7 +59585,7 @@ namespace libsecondlife.Packets public SetGroupAcceptNoticesPacket() { Header = new LowHeader(); - Header.ID = 426; + Header.ID = 423; Header.Reliable = true; Data = new DataBlock(); AgentData = new AgentDataBlock(); @@ -59962,7 +59734,7 @@ namespace libsecondlife.Packets public GroupRoleDataRequestPacket() { Header = new LowHeader(); - Header.ID = 427; + Header.ID = 424; Header.Reliable = true; AgentData = new AgentDataBlock(); GroupData = new GroupDataBlock(); @@ -60236,7 +60008,7 @@ namespace libsecondlife.Packets public GroupRoleDataReplyPacket() { Header = new LowHeader(); - Header.ID = 428; + Header.ID = 425; Header.Reliable = true; RoleData = new RoleDataBlock[0]; AgentData = new AgentDataBlock(); @@ -60402,7 +60174,7 @@ namespace libsecondlife.Packets public GroupRoleMembersRequestPacket() { Header = new LowHeader(); - Header.ID = 429; + Header.ID = 426; Header.Reliable = true; AgentData = new AgentDataBlock(); GroupData = new GroupDataBlock(); @@ -60562,7 +60334,7 @@ namespace libsecondlife.Packets public GroupRoleMembersReplyPacket() { Header = new LowHeader(); - Header.ID = 430; + Header.ID = 427; Header.Reliable = true; MemberData = new MemberDataBlock[0]; AgentData = new AgentDataBlock(); @@ -60684,7 +60456,7 @@ namespace libsecondlife.Packets public GroupTitlesRequestPacket() { Header = new LowHeader(); - Header.ID = 431; + Header.ID = 428; Header.Reliable = true; AgentData = new AgentDataBlock(); } @@ -60853,7 +60625,7 @@ namespace libsecondlife.Packets public GroupTitlesReplyPacket() { Header = new LowHeader(); - Header.ID = 432; + Header.ID = 429; Header.Reliable = true; Header.Zerocoded = true; AgentData = new AgentDataBlock(); @@ -60976,7 +60748,7 @@ namespace libsecondlife.Packets public GroupTitleUpdatePacket() { Header = new LowHeader(); - Header.ID = 433; + Header.ID = 430; Header.Reliable = true; AgentData = new AgentDataBlock(); } @@ -61196,7 +60968,7 @@ namespace libsecondlife.Packets public GroupRoleUpdatePacket() { Header = new LowHeader(); - Header.ID = 434; + Header.ID = 431; Header.Reliable = true; RoleData = new RoleDataBlock[0]; AgentData = new AgentDataBlock(); @@ -61310,7 +61082,7 @@ namespace libsecondlife.Packets public LiveHelpGroupRequestPacket() { Header = new LowHeader(); - Header.ID = 435; + Header.ID = 432; Header.Reliable = true; RequestData = new RequestDataBlock(); } @@ -61428,7 +61200,7 @@ namespace libsecondlife.Packets public LiveHelpGroupReplyPacket() { Header = new LowHeader(); - Header.ID = 436; + Header.ID = 433; Header.Reliable = true; ReplyData = new ReplyDataBlock(); } @@ -61525,7 +61297,7 @@ namespace libsecondlife.Packets public AgentWearablesRequestPacket() { Header = new LowHeader(); - Header.ID = 437; + Header.ID = 434; Header.Reliable = true; AgentData = new AgentDataBlock(); } @@ -61680,7 +61452,7 @@ namespace libsecondlife.Packets public AgentWearablesUpdatePacket() { Header = new LowHeader(); - Header.ID = 438; + Header.ID = 435; Header.Reliable = true; Header.Zerocoded = true; WearableData = new WearableDataBlock[0]; @@ -61842,7 +61614,7 @@ namespace libsecondlife.Packets public AgentIsNowWearingPacket() { Header = new LowHeader(); - Header.ID = 439; + Header.ID = 436; Header.Reliable = true; Header.Zerocoded = true; WearableData = new WearableDataBlock[0]; @@ -62011,7 +61783,7 @@ namespace libsecondlife.Packets public AgentCachedTexturePacket() { Header = new LowHeader(); - Header.ID = 440; + Header.ID = 437; Header.Reliable = true; WearableData = new WearableDataBlock[0]; AgentData = new AgentDataBlock(); @@ -62200,7 +61972,7 @@ namespace libsecondlife.Packets public AgentCachedTextureResponsePacket() { Header = new LowHeader(); - Header.ID = 441; + Header.ID = 438; Header.Reliable = true; WearableData = new WearableDataBlock[0]; AgentData = new AgentDataBlock(); @@ -62314,7 +62086,7 @@ namespace libsecondlife.Packets public AgentDataUpdateRequestPacket() { Header = new LowHeader(); - Header.ID = 442; + Header.ID = 439; Header.Reliable = true; AgentData = new AgentDataBlock(); } @@ -62504,7 +62276,7 @@ namespace libsecondlife.Packets public AgentDataUpdatePacket() { Header = new LowHeader(); - Header.ID = 443; + Header.ID = 440; Header.Reliable = true; Header.Zerocoded = true; AgentData = new AgentDataBlock(); @@ -62635,7 +62407,7 @@ namespace libsecondlife.Packets public GroupDataUpdatePacket() { Header = new LowHeader(); - Header.ID = 444; + Header.ID = 441; Header.Reliable = true; Header.Zerocoded = true; AgentGroupData = new AgentGroupDataBlock[0]; @@ -62831,7 +62603,7 @@ namespace libsecondlife.Packets public AgentGroupDataUpdatePacket() { Header = new LowHeader(); - Header.ID = 445; + Header.ID = 442; Header.Reliable = true; Header.Zerocoded = true; AgentData = new AgentDataBlock(); @@ -62946,7 +62718,7 @@ namespace libsecondlife.Packets public AgentDropGroupPacket() { Header = new LowHeader(); - Header.ID = 446; + Header.ID = 443; Header.Reliable = true; Header.Zerocoded = true; AgentData = new AgentDataBlock(); @@ -63046,7 +62818,7 @@ namespace libsecondlife.Packets public CreateTrustedCircuitPacket() { Header = new LowHeader(); - Header.ID = 448; + Header.ID = 445; Header.Reliable = true; DataBlock = new DataBlockBlock(); } @@ -63139,7 +62911,7 @@ namespace libsecondlife.Packets public DenyTrustedCircuitPacket() { Header = new LowHeader(); - Header.ID = 449; + Header.ID = 446; Header.Reliable = true; DataBlock = new DataBlockBlock(); } @@ -63189,7 +62961,7 @@ namespace libsecondlife.Packets public RequestTrustedCircuitPacket() { Header = new LowHeader(); - Header.ID = 450; + Header.ID = 447; Header.Reliable = true; } @@ -63402,7 +63174,7 @@ namespace libsecondlife.Packets public RezSingleAttachmentFromInvPacket() { Header = new LowHeader(); - Header.ID = 451; + Header.ID = 448; Header.Reliable = true; Header.Zerocoded = true; ObjectData = new ObjectDataBlock(); @@ -63677,7 +63449,7 @@ namespace libsecondlife.Packets public RezMultipleAttachmentsFromInvPacket() { Header = new LowHeader(); - Header.ID = 452; + Header.ID = 449; Header.Reliable = true; Header.Zerocoded = true; ObjectData = new ObjectDataBlock[0]; @@ -63797,7 +63569,7 @@ namespace libsecondlife.Packets public DetachAttachmentIntoInvPacket() { Header = new LowHeader(); - Header.ID = 453; + Header.ID = 450; Header.Reliable = true; ObjectData = new ObjectDataBlock(); } @@ -63984,7 +63756,7 @@ namespace libsecondlife.Packets public CreateNewOutfitAttachmentsPacket() { Header = new LowHeader(); - Header.ID = 454; + Header.ID = 451; Header.Reliable = true; ObjectData = new ObjectDataBlock[0]; AgentData = new AgentDataBlock(); @@ -64103,7 +63875,7 @@ namespace libsecondlife.Packets public UserInfoRequestPacket() { Header = new LowHeader(); - Header.ID = 455; + Header.ID = 452; Header.Reliable = true; AgentData = new AgentDataBlock(); } @@ -64282,7 +64054,7 @@ namespace libsecondlife.Packets public UserInfoReplyPacket() { Header = new LowHeader(); - Header.ID = 456; + Header.ID = 453; Header.Reliable = true; UserData = new UserDataBlock(); AgentData = new AgentDataBlock(); @@ -64449,7 +64221,7 @@ namespace libsecondlife.Packets public UpdateUserInfoPacket() { Header = new LowHeader(); - Header.ID = 457; + Header.ID = 454; Header.Reliable = true; UserData = new UserDataBlock(); AgentData = new AgentDataBlock(); @@ -64494,164 +64266,6 @@ namespace libsecondlife.Packets } - /// - public class GodExpungeUserPacket : Packet - { - /// - [XmlType("godexpungeuser_expungedata")] - public class ExpungeDataBlock - { - public LLUUID AgentID; - - [XmlIgnore] - public int Length - { - get - { - return 16; - } - } - - public ExpungeDataBlock() { } - public ExpungeDataBlock(byte[] bytes, ref int i) - { - try - { - AgentID = new LLUUID(bytes, i); i += 16; - } - catch (Exception) - { - throw new MalformedDataException(); - } - } - - public void ToBytes(byte[] bytes, ref int i) - { - Buffer.BlockCopy(AgentID.GetBytes(), 0, bytes, i, 16); i += 16; - } - - public override string ToString() - { - StringBuilder output = new StringBuilder(); - output.AppendLine("-- ExpungeData --"); - output.Append(String.Format("AgentID: {0}", AgentID)); - return output.ToString(); - } - } - - /// - [XmlType("godexpungeuser_agentdata")] - public class AgentDataBlock - { - public LLUUID AgentID; - public LLUUID SessionID; - - [XmlIgnore] - public int Length - { - get - { - return 32; - } - } - - public AgentDataBlock() { } - public AgentDataBlock(byte[] bytes, ref int i) - { - try - { - AgentID = new LLUUID(bytes, i); i += 16; - SessionID = new LLUUID(bytes, i); i += 16; - } - catch (Exception) - { - throw new MalformedDataException(); - } - } - - public void ToBytes(byte[] bytes, ref int i) - { - Buffer.BlockCopy(AgentID.GetBytes(), 0, bytes, i, 16); i += 16; - Buffer.BlockCopy(SessionID.GetBytes(), 0, bytes, i, 16); i += 16; - } - - public override string ToString() - { - StringBuilder output = new StringBuilder(); - output.AppendLine("-- AgentData --"); - output.AppendLine(String.Format("AgentID: {0}", AgentID)); - output.Append(String.Format("SessionID: {0}", SessionID)); - return output.ToString(); - } - } - - private Header header; - public override Header Header { get { return header; } set { header = value; } } - public override PacketType Type { get { return PacketType.GodExpungeUser; } } - public ExpungeDataBlock[] ExpungeData; - public AgentDataBlock AgentData; - - public GodExpungeUserPacket() - { - Header = new LowHeader(); - Header.ID = 458; - Header.Reliable = true; - Header.Zerocoded = true; - ExpungeData = new ExpungeDataBlock[0]; - AgentData = new AgentDataBlock(); - } - - public GodExpungeUserPacket(byte[] bytes, ref int i) - { - int packetEnd = bytes.Length - 1; - Header = new LowHeader(bytes, ref i, ref packetEnd); - int count = (int)bytes[i++]; - ExpungeData = new ExpungeDataBlock[count]; - for (int j = 0; j < count; j++) - { ExpungeData[j] = new ExpungeDataBlock(bytes, ref i); } - AgentData = new AgentDataBlock(bytes, ref i); - } - - public GodExpungeUserPacket(Header head, byte[] bytes, ref int i) - { - Header = head; - int count = (int)bytes[i++]; - ExpungeData = new ExpungeDataBlock[count]; - for (int j = 0; j < count; j++) - { ExpungeData[j] = new ExpungeDataBlock(bytes, ref i); } - AgentData = new AgentDataBlock(bytes, ref i); - } - - public override byte[] ToBytes() - { - int length = 8; - length += AgentData.Length;; - length++; - for (int j = 0; j < ExpungeData.Length; j++) { length += ExpungeData[j].Length; } - if (header.AckList.Length > 0) { length += header.AckList.Length * 4 + 1; } - byte[] bytes = new byte[length]; - int i = 0; - header.ToBytes(bytes, ref i); - bytes[i++] = (byte)ExpungeData.Length; - for (int j = 0; j < ExpungeData.Length; j++) { ExpungeData[j].ToBytes(bytes, ref i); } - AgentData.ToBytes(bytes, ref i); - if (header.AckList.Length > 0) { header.AcksToBytes(bytes, ref i); } - return bytes; - } - - public override string ToString() - { - string output = "--- GodExpungeUser ---" + Environment.NewLine; - for (int j = 0; j < ExpungeData.Length; j++) - { - output += ExpungeData[j].ToString() + Environment.NewLine; - } - output += AgentData.ToString() + Environment.NewLine; - return output; - } - - } - /// public class StartParcelRemoveAckPacket : Packet { @@ -64662,7 +64276,7 @@ namespace libsecondlife.Packets public StartParcelRemoveAckPacket() { Header = new LowHeader(); - Header.ID = 466; + Header.ID = 460; Header.Reliable = true; } @@ -64830,7 +64444,7 @@ namespace libsecondlife.Packets public InitiateDownloadPacket() { Header = new LowHeader(); - Header.ID = 468; + Header.ID = 462; Header.Reliable = true; FileData = new FileDataBlock(); AgentData = new AgentDataBlock(); @@ -65015,7 +64629,7 @@ namespace libsecondlife.Packets public SystemMessagePacket() { Header = new LowHeader(); - Header.ID = 469; + Header.ID = 463; Header.Reliable = true; Header.Zerocoded = true; MethodData = new MethodDataBlock(); @@ -65148,7 +64762,7 @@ namespace libsecondlife.Packets public MapLayerRequestPacket() { Header = new LowHeader(); - Header.ID = 470; + Header.ID = 464; Header.Reliable = true; AgentData = new AgentDataBlock(); } @@ -65319,7 +64933,7 @@ namespace libsecondlife.Packets public MapLayerReplyPacket() { Header = new LowHeader(); - Header.ID = 471; + Header.ID = 465; Header.Reliable = true; AgentData = new AgentDataBlock(); LayerData = new LayerDataBlock[0]; @@ -65510,7 +65124,7 @@ namespace libsecondlife.Packets public MapBlockRequestPacket() { Header = new LowHeader(); - Header.ID = 472; + Header.ID = 466; Header.Reliable = true; PositionData = new PositionDataBlock(); AgentData = new AgentDataBlock(); @@ -65690,7 +65304,7 @@ namespace libsecondlife.Packets public MapNameRequestPacket() { Header = new LowHeader(); - Header.ID = 473; + Header.ID = 467; Header.Reliable = true; NameData = new NameDataBlock(); AgentData = new AgentDataBlock(); @@ -65889,7 +65503,7 @@ namespace libsecondlife.Packets public MapBlockReplyPacket() { Header = new LowHeader(); - Header.ID = 474; + Header.ID = 468; Header.Reliable = true; Data = new DataBlock[0]; AgentData = new AgentDataBlock(); @@ -66078,7 +65692,7 @@ namespace libsecondlife.Packets public MapItemRequestPacket() { Header = new LowHeader(); - Header.ID = 475; + Header.ID = 469; Header.Reliable = true; RequestData = new RequestDataBlock(); AgentData = new AgentDataBlock(); @@ -66322,7 +65936,7 @@ namespace libsecondlife.Packets public MapItemReplyPacket() { Header = new LowHeader(); - Header.ID = 476; + Header.ID = 470; Header.Reliable = true; RequestData = new RequestDataBlock(); Data = new DataBlock[0]; @@ -66560,7 +66174,7 @@ namespace libsecondlife.Packets public SendPostcardPacket() { Header = new LowHeader(); - Header.ID = 477; + Header.ID = 471; Header.Reliable = true; AgentData = new AgentDataBlock(); } @@ -66671,7 +66285,7 @@ namespace libsecondlife.Packets public ParcelMediaCommandMessagePacket() { Header = new LowHeader(); - Header.ID = 486; + Header.ID = 480; Header.Reliable = true; CommandBlock = new CommandBlockBlock(); } @@ -66790,7 +66404,7 @@ namespace libsecondlife.Packets public ParcelMediaUpdatePacket() { Header = new LowHeader(); - Header.ID = 487; + Header.ID = 481; Header.Reliable = true; DataBlock = new DataBlockBlock(); } @@ -66969,7 +66583,7 @@ namespace libsecondlife.Packets public LandStatRequestPacket() { Header = new LowHeader(); - Header.ID = 488; + Header.ID = 482; Header.Reliable = true; RequestData = new RequestDataBlock(); AgentData = new AgentDataBlock(); @@ -67204,7 +66818,7 @@ namespace libsecondlife.Packets public LandStatReplyPacket() { Header = new LowHeader(); - Header.ID = 489; + Header.ID = 483; Header.Reliable = true; RequestData = new RequestDataBlock(); ReportData = new ReportDataBlock[0]; @@ -67829,8 +67443,8 @@ namespace libsecondlife.Packets { public uint AddFlags; public sbyte PathTwistBegin; - public byte PathEnd; - public byte ProfileBegin; + public ushort PathEnd; + public ushort ProfileBegin; public sbyte PathRadiusOffset; public sbyte PathSkew; public LLVector3 RayStart; @@ -67844,15 +67458,15 @@ namespace libsecondlife.Packets public sbyte PathTaperY; public byte RayEndIsIntersection; public LLVector3 RayEnd; - public byte ProfileEnd; - public byte PathBegin; + public ushort ProfileEnd; + public ushort PathBegin; public byte BypassRaycast; public byte PCode; public byte PathCurve; public LLVector3 Scale; public byte State; public sbyte PathTwist; - public byte ProfileHollow; + public ushort ProfileHollow; public byte PathRevolutions; public LLQuaternion Rotation; public LLUUID RayTargetID; @@ -67862,7 +67476,7 @@ namespace libsecondlife.Packets { get { - return 91; + return 96; } } @@ -67873,8 +67487,8 @@ namespace libsecondlife.Packets { AddFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24)); PathTwistBegin = (sbyte)bytes[i++]; - PathEnd = (byte)bytes[i++]; - ProfileBegin = (byte)bytes[i++]; + PathEnd = (ushort)(bytes[i++] + (bytes[i++] << 8)); + ProfileBegin = (ushort)(bytes[i++] + (bytes[i++] << 8)); PathRadiusOffset = (sbyte)bytes[i++]; PathSkew = (sbyte)bytes[i++]; RayStart = new LLVector3(bytes, i); i += 12; @@ -67888,15 +67502,15 @@ namespace libsecondlife.Packets PathTaperY = (sbyte)bytes[i++]; RayEndIsIntersection = (byte)bytes[i++]; RayEnd = new LLVector3(bytes, i); i += 12; - ProfileEnd = (byte)bytes[i++]; - PathBegin = (byte)bytes[i++]; + ProfileEnd = (ushort)(bytes[i++] + (bytes[i++] << 8)); + PathBegin = (ushort)(bytes[i++] + (bytes[i++] << 8)); BypassRaycast = (byte)bytes[i++]; PCode = (byte)bytes[i++]; PathCurve = (byte)bytes[i++]; Scale = new LLVector3(bytes, i); i += 12; State = (byte)bytes[i++]; PathTwist = (sbyte)bytes[i++]; - ProfileHollow = (byte)bytes[i++]; + ProfileHollow = (ushort)(bytes[i++] + (bytes[i++] << 8)); PathRevolutions = (byte)bytes[i++]; Rotation = new LLQuaternion(bytes, i, true); i += 12; RayTargetID = new LLUUID(bytes, i); i += 16; @@ -67914,8 +67528,10 @@ namespace libsecondlife.Packets bytes[i++] = (byte)((AddFlags >> 16) % 256); bytes[i++] = (byte)((AddFlags >> 24) % 256); bytes[i++] = (byte)PathTwistBegin; - bytes[i++] = PathEnd; - bytes[i++] = ProfileBegin; + bytes[i++] = (byte)(PathEnd % 256); + bytes[i++] = (byte)((PathEnd >> 8) % 256); + bytes[i++] = (byte)(ProfileBegin % 256); + bytes[i++] = (byte)((ProfileBegin >> 8) % 256); bytes[i++] = (byte)PathRadiusOffset; bytes[i++] = (byte)PathSkew; Buffer.BlockCopy(RayStart.GetBytes(), 0, bytes, i, 12); i += 12; @@ -67929,15 +67545,18 @@ namespace libsecondlife.Packets bytes[i++] = (byte)PathTaperY; bytes[i++] = RayEndIsIntersection; Buffer.BlockCopy(RayEnd.GetBytes(), 0, bytes, i, 12); i += 12; - bytes[i++] = ProfileEnd; - bytes[i++] = PathBegin; + bytes[i++] = (byte)(ProfileEnd % 256); + bytes[i++] = (byte)((ProfileEnd >> 8) % 256); + bytes[i++] = (byte)(PathBegin % 256); + bytes[i++] = (byte)((PathBegin >> 8) % 256); bytes[i++] = BypassRaycast; bytes[i++] = PCode; bytes[i++] = PathCurve; Buffer.BlockCopy(Scale.GetBytes(), 0, bytes, i, 12); i += 12; bytes[i++] = State; bytes[i++] = (byte)PathTwist; - bytes[i++] = ProfileHollow; + bytes[i++] = (byte)(ProfileHollow % 256); + bytes[i++] = (byte)((ProfileHollow >> 8) % 256); bytes[i++] = PathRevolutions; Buffer.BlockCopy(Rotation.GetBytes(), 0, bytes, i, 12); i += 12; Buffer.BlockCopy(RayTargetID.GetBytes(), 0, bytes, i, 16); i += 16; @@ -69979,124 +69598,6 @@ namespace libsecondlife.Packets } - /// - public class GestureUpdatePacket : Packet - { - /// - [XmlType("gestureupdate_agentblock")] - public class AgentBlockBlock - { - public LLUUID AgentID; - public bool ToViewer; - private byte[] _filename; - public byte[] Filename - { - get { return _filename; } - set - { - if (value == null) { _filename = null; return; } - if (value.Length > 255) { throw new OverflowException("Value exceeds 255 characters"); } - else { _filename = new byte[value.Length]; Buffer.BlockCopy(value, 0, _filename, 0, value.Length); } - } - } - - [XmlIgnore] - public int Length - { - get - { - int length = 17; - if (Filename != null) { length += 1 + Filename.Length; } - return length; - } - } - - public AgentBlockBlock() { } - public AgentBlockBlock(byte[] bytes, ref int i) - { - int length; - try - { - AgentID = new LLUUID(bytes, i); i += 16; - ToViewer = (bytes[i++] != 0) ? (bool)true : (bool)false; - length = (ushort)bytes[i++]; - _filename = new byte[length]; - Buffer.BlockCopy(bytes, i, _filename, 0, length); i += length; - } - catch (Exception) - { - throw new MalformedDataException(); - } - } - - public void ToBytes(byte[] bytes, ref int i) - { - Buffer.BlockCopy(AgentID.GetBytes(), 0, bytes, i, 16); i += 16; - bytes[i++] = (byte)((ToViewer) ? 1 : 0); - if(Filename == null) { Console.WriteLine("Warning: Filename is null, in " + this.GetType()); } - bytes[i++] = (byte)Filename.Length; - Buffer.BlockCopy(Filename, 0, bytes, i, Filename.Length); i += Filename.Length; - } - - public override string ToString() - { - StringBuilder output = new StringBuilder(); - output.AppendLine("-- AgentBlock --"); - output.AppendLine(String.Format("AgentID: {0}", AgentID)); - output.AppendLine(String.Format("ToViewer: {0}", ToViewer)); - Helpers.FieldToString(output, Filename, "Filename"); - return output.ToString(); - } - } - - private Header header; - public override Header Header { get { return header; } set { header = value; } } - public override PacketType Type { get { return PacketType.GestureUpdate; } } - public AgentBlockBlock AgentBlock; - - public GestureUpdatePacket() - { - Header = new MediumHeader(); - Header.ID = 14; - Header.Reliable = true; - AgentBlock = new AgentBlockBlock(); - } - - public GestureUpdatePacket(byte[] bytes, ref int i) - { - int packetEnd = bytes.Length - 1; - Header = new MediumHeader(bytes, ref i, ref packetEnd); - AgentBlock = new AgentBlockBlock(bytes, ref i); - } - - public GestureUpdatePacket(Header head, byte[] bytes, ref int i) - { - Header = head; - AgentBlock = new AgentBlockBlock(bytes, ref i); - } - - public override byte[] ToBytes() - { - int length = 6; - length += AgentBlock.Length;; - if (header.AckList.Length > 0) { length += header.AckList.Length * 4 + 1; } - byte[] bytes = new byte[length]; - int i = 0; - header.ToBytes(bytes, ref i); - AgentBlock.ToBytes(bytes, ref i); - if (header.AckList.Length > 0) { header.AcksToBytes(bytes, ref i); } - return bytes; - } - - public override string ToString() - { - string output = "--- GestureUpdate ---" + Environment.NewLine; - output += AgentBlock.ToString() + Environment.NewLine; - return output; - } - - } - /// public class AttachedSoundPacket : Packet { @@ -70170,7 +69671,7 @@ namespace libsecondlife.Packets public AttachedSoundPacket() { Header = new MediumHeader(); - Header.ID = 15; + Header.ID = 14; Header.Reliable = true; DataBlock = new DataBlockBlock(); } @@ -70271,7 +69772,7 @@ namespace libsecondlife.Packets public AttachedSoundGainChangePacket() { Header = new MediumHeader(); - Header.ID = 16; + Header.ID = 15; Header.Reliable = true; DataBlock = new DataBlockBlock(); } @@ -70372,7 +69873,7 @@ namespace libsecondlife.Packets public AttachedSoundCutoffRadiusPacket() { Header = new MediumHeader(); - Header.ID = 17; + Header.ID = 16; Header.Reliable = true; DataBlock = new DataBlockBlock(); } @@ -70473,7 +69974,7 @@ namespace libsecondlife.Packets public PreloadSoundPacket() { Header = new MediumHeader(); - Header.ID = 18; + Header.ID = 17; Header.Reliable = true; DataBlock = new DataBlockBlock[0]; } @@ -70668,7 +70169,7 @@ namespace libsecondlife.Packets public ViewerEffectPacket() { Header = new MediumHeader(); - Header.ID = 20; + Header.ID = 19; Header.Reliable = true; Header.Zerocoded = true; Effect = new EffectBlock[0]; @@ -70830,7 +70331,7 @@ namespace libsecondlife.Packets public SetSunPhasePacket() { Header = new MediumHeader(); - Header.ID = 21; + Header.ID = 20; Header.Reliable = true; Data = new DataBlock(); AgentData = new AgentDataBlock(); @@ -72322,7 +71823,7 @@ namespace libsecondlife.Packets public sbyte PathTwistBegin; public uint CRC; public LLVector3 JointPivot; - public byte PathEnd; + public ushort PathEnd; private byte[] _mediaurl; public byte[] MediaURL { @@ -72336,7 +71837,7 @@ namespace libsecondlife.Packets } public byte[] TextColor; public byte ClickAction; - public byte ProfileBegin; + public ushort ProfileBegin; public sbyte PathRadiusOffset; public float Gain; public sbyte PathSkew; @@ -72406,9 +71907,9 @@ namespace libsecondlife.Packets public sbyte PathTaperX; public sbyte PathTaperY; public float Radius; - public byte ProfileEnd; + public ushort ProfileEnd; public byte JointType; - public byte PathBegin; + public ushort PathBegin; private byte[] _psblock; public byte[] PSBlock { @@ -72440,7 +71941,7 @@ namespace libsecondlife.Packets else { _textureentry = new byte[value.Length]; Buffer.BlockCopy(value, 0, _textureentry, 0, value.Length); } } } - public byte ProfileHollow; + public ushort ProfileHollow; public byte PathRevolutions; [XmlIgnore] @@ -72448,7 +71949,7 @@ namespace libsecondlife.Packets { get { - int length = 136; + int length = 141; if (ObjectData != null) { length += 1 + ObjectData.Length; } if (MediaURL != null) { length += 1 + MediaURL.Length; } if (Data != null) { length += 2 + Data.Length; } @@ -72476,14 +71977,14 @@ namespace libsecondlife.Packets PathTwistBegin = (sbyte)bytes[i++]; CRC = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24)); JointPivot = new LLVector3(bytes, i); i += 12; - PathEnd = (byte)bytes[i++]; + PathEnd = (ushort)(bytes[i++] + (bytes[i++] << 8)); length = (ushort)bytes[i++]; _mediaurl = new byte[length]; Buffer.BlockCopy(bytes, i, _mediaurl, 0, length); i += length; TextColor = new byte[4]; Buffer.BlockCopy(bytes, i, TextColor, 0, 4); i += 4; ClickAction = (byte)bytes[i++]; - ProfileBegin = (byte)bytes[i++]; + ProfileBegin = (ushort)(bytes[i++] + (bytes[i++] << 8)); PathRadiusOffset = (sbyte)bytes[i++]; if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4); Gain = BitConverter.ToSingle(bytes, i); i += 4; @@ -72515,9 +72016,9 @@ namespace libsecondlife.Packets PathTaperY = (sbyte)bytes[i++]; if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4); Radius = BitConverter.ToSingle(bytes, i); i += 4; - ProfileEnd = (byte)bytes[i++]; + ProfileEnd = (ushort)(bytes[i++] + (bytes[i++] << 8)); JointType = (byte)bytes[i++]; - PathBegin = (byte)bytes[i++]; + PathBegin = (ushort)(bytes[i++] + (bytes[i++] << 8)); length = (ushort)bytes[i++]; _psblock = new byte[length]; Buffer.BlockCopy(bytes, i, _psblock, 0, length); i += length; @@ -72533,7 +72034,7 @@ namespace libsecondlife.Packets length = (ushort)(bytes[i++] + (bytes[i++] << 8)); _textureentry = new byte[length]; Buffer.BlockCopy(bytes, i, _textureentry, 0, length); i += length; - ProfileHollow = (byte)bytes[i++]; + ProfileHollow = (ushort)(bytes[i++] + (bytes[i++] << 8)); PathRevolutions = (byte)bytes[i++]; } catch (Exception) @@ -72562,13 +72063,15 @@ namespace libsecondlife.Packets bytes[i++] = (byte)((CRC >> 16) % 256); bytes[i++] = (byte)((CRC >> 24) % 256); Buffer.BlockCopy(JointPivot.GetBytes(), 0, bytes, i, 12); i += 12; - bytes[i++] = PathEnd; + bytes[i++] = (byte)(PathEnd % 256); + bytes[i++] = (byte)((PathEnd >> 8) % 256); if(MediaURL == null) { Console.WriteLine("Warning: MediaURL is null, in " + this.GetType()); } bytes[i++] = (byte)MediaURL.Length; Buffer.BlockCopy(MediaURL, 0, bytes, i, MediaURL.Length); i += MediaURL.Length; Buffer.BlockCopy(TextColor, 0, bytes, i, 4);i += 4; bytes[i++] = ClickAction; - bytes[i++] = ProfileBegin; + bytes[i++] = (byte)(ProfileBegin % 256); + bytes[i++] = (byte)((ProfileBegin >> 8) % 256); bytes[i++] = (byte)PathRadiusOffset; ba = BitConverter.GetBytes(Gain); if(!BitConverter.IsLittleEndian) { Array.Reverse(ba, 0, 4); } @@ -72607,9 +72110,11 @@ namespace libsecondlife.Packets ba = BitConverter.GetBytes(Radius); if(!BitConverter.IsLittleEndian) { Array.Reverse(ba, 0, 4); } Buffer.BlockCopy(ba, 0, bytes, i, 4); i += 4; - bytes[i++] = ProfileEnd; + bytes[i++] = (byte)(ProfileEnd % 256); + bytes[i++] = (byte)((ProfileEnd >> 8) % 256); bytes[i++] = JointType; - bytes[i++] = PathBegin; + bytes[i++] = (byte)(PathBegin % 256); + bytes[i++] = (byte)((PathBegin >> 8) % 256); if(PSBlock == null) { Console.WriteLine("Warning: PSBlock is null, in " + this.GetType()); } bytes[i++] = (byte)PSBlock.Length; Buffer.BlockCopy(PSBlock, 0, bytes, i, PSBlock.Length); i += PSBlock.Length; @@ -72626,7 +72131,8 @@ namespace libsecondlife.Packets bytes[i++] = (byte)(TextureEntry.Length % 256); bytes[i++] = (byte)((TextureEntry.Length >> 8) % 256); Buffer.BlockCopy(TextureEntry, 0, bytes, i, TextureEntry.Length); i += TextureEntry.Length; - bytes[i++] = ProfileHollow; + bytes[i++] = (byte)(ProfileHollow % 256); + bytes[i++] = (byte)((ProfileHollow >> 8) % 256); bytes[i++] = PathRevolutions; } @@ -74514,7 +74020,6 @@ namespace libsecondlife.Packets [XmlType("parcelproperties_parceldata")] public class ParcelDataBlock { - public bool ReservedNewbie; public int GroupPrims; public int SelectedPrims; public LLUUID MediaID; @@ -74620,7 +74125,7 @@ namespace libsecondlife.Packets { get { - int length = 239; + int length = 238; if (MediaURL != null) { length += 1 + MediaURL.Length; } if (Name != null) { length += 1 + Name.Length; } if (Desc != null) { length += 1 + Desc.Length; } @@ -74636,7 +74141,6 @@ namespace libsecondlife.Packets int length; try { - ReservedNewbie = (bytes[i++] != 0) ? (bool)true : (bool)false; GroupPrims = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24)); SelectedPrims = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24)); MediaID = new LLUUID(bytes, i); i += 16; @@ -74708,7 +74212,6 @@ namespace libsecondlife.Packets public void ToBytes(byte[] bytes, ref int i) { byte[] ba; - bytes[i++] = (byte)((ReservedNewbie) ? 1 : 0); bytes[i++] = (byte)(GroupPrims % 256); bytes[i++] = (byte)((GroupPrims >> 8) % 256); bytes[i++] = (byte)((GroupPrims >> 16) % 256); @@ -74848,7 +74351,6 @@ namespace libsecondlife.Packets { StringBuilder output = new StringBuilder(); output.AppendLine("-- ParcelData --"); - output.AppendLine(String.Format("ReservedNewbie: {0}", ReservedNewbie)); output.AppendLine(String.Format("GroupPrims: {0}", GroupPrims)); output.AppendLine(String.Format("SelectedPrims: {0}", SelectedPrims)); output.AppendLine(String.Format("MediaID: {0}", MediaID)); diff --git a/libsecondlife/examples/TestClient/Commands/ExportParticlesCommand.cs b/libsecondlife/examples/TestClient/Commands/ExportParticlesCommand.cs index 4f33334b..8fced68c 100644 --- a/libsecondlife/examples/TestClient/Commands/ExportParticlesCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/ExportParticlesCommand.cs @@ -43,23 +43,23 @@ namespace libsecondlife.TestClient lsl.Append(" PSYS_PART_FLAGS, 0"); - if ((prim.ParticleSys.PartFlags & Primitive.ParticleSystem.ParticleFlags.InterpColor) != 0) + if ((prim.ParticleSys.PartDataFlags & Primitive.ParticleSystem.ParticleDataFlags.InterpColor) != 0) lsl.Append(" | PSYS_PART_INTERP_COLOR_MASK"); - if ((prim.ParticleSys.PartFlags & Primitive.ParticleSystem.ParticleFlags.InterpScale) != 0) + if ((prim.ParticleSys.PartDataFlags & Primitive.ParticleSystem.ParticleDataFlags.InterpScale) != 0) lsl.Append(" | PSYS_PART_INTERP_SCALE_MASK"); - if ((prim.ParticleSys.PartFlags & Primitive.ParticleSystem.ParticleFlags.Bounce) != 0) + if ((prim.ParticleSys.PartDataFlags & Primitive.ParticleSystem.ParticleDataFlags.Bounce) != 0) lsl.Append(" | PSYS_PART_BOUNCE_MASK"); - if ((prim.ParticleSys.PartFlags & Primitive.ParticleSystem.ParticleFlags.Wind) != 0) + if ((prim.ParticleSys.PartDataFlags & Primitive.ParticleSystem.ParticleDataFlags.Wind) != 0) lsl.Append(" | PSYS_PART_WIND_MASK"); - if ((prim.ParticleSys.PartFlags & Primitive.ParticleSystem.ParticleFlags.FollowSrc) != 0) + if ((prim.ParticleSys.PartDataFlags & Primitive.ParticleSystem.ParticleDataFlags.FollowSrc) != 0) lsl.Append(" | PSYS_PART_FOLLOW_SRC_MASK"); - if ((prim.ParticleSys.PartFlags & Primitive.ParticleSystem.ParticleFlags.FollowVelocity) != 0) + if ((prim.ParticleSys.PartDataFlags & Primitive.ParticleSystem.ParticleDataFlags.FollowVelocity) != 0) lsl.Append(" | PSYS_PART_FOLLOW_VELOCITY_MASK"); - if ((prim.ParticleSys.PartFlags & Primitive.ParticleSystem.ParticleFlags.TargetPos) != 0) + if ((prim.ParticleSys.PartDataFlags & Primitive.ParticleSystem.ParticleDataFlags.TargetPos) != 0) lsl.Append(" | PSYS_PART_TARGET_POS_MASK"); - if ((prim.ParticleSys.PartFlags & Primitive.ParticleSystem.ParticleFlags.TargetLinear) != 0) + if ((prim.ParticleSys.PartDataFlags & Primitive.ParticleSystem.ParticleDataFlags.TargetLinear) != 0) lsl.Append(" | PSYS_PART_TARGET_LINEAR_MASK"); - if ((prim.ParticleSys.PartFlags & Primitive.ParticleSystem.ParticleFlags.Emissive) != 0) + if ((prim.ParticleSys.PartDataFlags & Primitive.ParticleSystem.ParticleDataFlags.Emissive) != 0) lsl.Append(" | PSYS_PART_EMISSIVE_MASK"); lsl.Append(","); lsl.Append(Environment.NewLine);