// Linden Lab development message templates version 2.0 // The Version 2.0 template requires preservation of message // numbers. Each message must be numbered relative to the // other messages of that type. The current highest number // for each type is listed below: // Low: 423 // Medium: 18 // High: 29 // PLEASE UPDATE THIS WHEN YOU ADD A NEW MESSAGE! // ************************************************************************* // Test Message // ************************************************************************* // Test Message { TestMessage Low 1 NotTrusted Zerocoded { TestBlock1 Single { Test1 U32 } } { NeighborBlock Multiple 4 { Test0 U32 } { Test1 U32 } { Test2 U32 } } } // ************************************************************************* // Messaging Internal Data Management Message // ************************************************************************* // ************************* // List fixed messages first // ************************* // Packet Ack - Ack a list of packets sent reliable { PacketAck Fixed 0xFFFFFFFB NotTrusted Unencoded { Packets Variable { ID U32 } } } // OpenCircuit - Tells the recipient's messaging system to open the descibed circuit { OpenCircuit Fixed 0xFFFFFFFC NotTrusted Unencoded { CircuitInfo Single { IP IPADDR } { Port IPPORT } } } // CloseCircuit - Tells the recipient's messaging system to close the descibed circuit { CloseCircuit Fixed 0xFFFFFFFD NotTrusted Unencoded } // ****************** // End fixed messages // ****************** // StartPingCheck - used to measure circuit ping times // PingID is used to determine how backlogged the ping was that was // returned (or how hosed the other side is) { StartPingCheck High 1 NotTrusted Unencoded { PingID Single { PingID U8 } { OldestUnacked U32 } // Current oldest "unacked" packet on the sender side } } // CompletePingCheck - used to measure circuit ping times { CompletePingCheck High 2 NotTrusted Unencoded { PingID Single { PingID U8 } } } // space->sim // sim->sim // AddCircuitCode - Tells the recipient's messaging system that this code // is for a legal circuit { AddCircuitCode Low 2 Trusted Unencoded { CircuitCode Single { Code U32 } { SessionID LLUUID } { AgentID LLUUID } // WARNING - may be null in valid message } } // viewer->sim // UseCircuitCode - Attempts to provide the recipient with IP and Port // info. In the case of viewers, the id is the session id. For other // machines it may be null. The session id will always be the session // id of the process, which every server will generate on startup and // the viewer will be handed after login. { UseCircuitCode Low 3 NotTrusted Unencoded { CircuitCode Single { Code U32 } { SessionID LLUUID } { ID LLUUID } // agent id } } // ************************************************************************* // SpaceServer to Simulator Messages // ************************************************************************ // Neighbor List - Passed anytime neighbors change { NeighborList High 3 Trusted Unencoded { NeighborBlock Multiple 4 { IP IPADDR } { Port IPPORT } { PublicIP IPADDR } { PublicPort IPPORT } { RegionID LLUUID } { Name Variable 1 } // string { SimAccess U8 } } } // AvatarTextureUpdate // simulator -> dataserver // reliable { AvatarTextureUpdate Low 4 Trusted Zerocoded { AgentData Single { AgentID LLUUID } { TexturesChanged BOOL } } { WearableData Variable { CacheID LLUUID } { TextureIndex U8 } { HostName Variable 1 } } { TextureData Variable { TextureID LLUUID } } } // SimulatorMapUpdate // simulator -> dataserver // reliable { SimulatorMapUpdate Low 5 Trusted Unencoded { MapData Single { Flags U32 } } } // SimulatorSetMap // simulator -> dataserver // reliable // Used to upload a map image into the database (currently used only for Land For Sale) { SimulatorSetMap Low 6 Trusted Unencoded { MapData Single { RegionHandle U64 } { Type S32 } { MapImage LLUUID } } } // SubscribeLoad // spaceserver -> simulator // reliable { SubscribeLoad Low 7 Trusted Unencoded } // UnsubscribeLoad // spaceserver -> simulator // reliable { UnsubscribeLoad Low 8 Trusted Unencoded } // ************************************************************************ // Simulator to SpaceServer Messages // ************************************************************************ // SimulatorReady - indicates the sim has finished loading its state // and is ready to receive updates from others { SimulatorReady Low 9 Trusted Zerocoded { SimulatorBlock Single { SimName Variable 1 } { SimAccess U8 } { RegionFlags U32 } { RegionID LLUUID } { EstateID U32 } { ParentEstateID U32 } } { TelehubBlock Single { HasTelehub BOOL } { TelehubPos LLVector3 } } } // TelehubInfo - fill in the UI for telehub creation floater. // sim -> viewer // reliable { TelehubInfo Low 10 Trusted Unencoded { TelehubBlock Single { ObjectID LLUUID } // null if no telehub { ObjectName Variable 1 } // string { TelehubPos LLVector3 } // fallback if viewer can't find object { TelehubRot LLQuaternion } } { SpawnPointBlock Variable { SpawnPointPos LLVector3 } // relative to telehub position } } // SimulatorPresentAtLocation - indicates that the sim is present at a grid // location and passes what it believes its neighbors are { SimulatorPresentAtLocation Low 11 Trusted Unencoded { SimulatorPublicHostBlock Single { Port IPPORT } { SimulatorIP IPADDR } { GridX U32 } { GridY U32 } } { NeighborBlock Multiple 4 { IP IPADDR } { Port IPPORT } } { SimulatorBlock Single { SimName Variable 1 } { SimAccess U8 } { RegionFlags U32 } { RegionID LLUUID } { EstateID U32 } { ParentEstateID U32 } } { TelehubBlock Variable { HasTelehub BOOL } { TelehubPos LLVector3 } } } // SimulatorLoad // simulator -> spaceserver // reliable { SimulatorLoad Low 12 Trusted Unencoded { SimulatorLoad Single { TimeDilation F32 } { AgentCount S32 } { CanAcceptAgents BOOL } } { AgentList Variable { CircuitCode U32 } { X U8 } { Y U8 } } } // Simulator Shutdown Request - Tells spaceserver that a simulator is trying to shutdown { SimulatorShutdownRequest Low 13 Trusted Unencoded } // **************************************************************************** // Presense messages // **************************************************************************** // sim -> dataserver { RegionPresenceRequestByRegionID Low 14 Trusted Unencoded { RegionData Variable { RegionID LLUUID } } } // sim -> dataserver { RegionPresenceRequestByHandle Low 15 Trusted Unencoded { RegionData Variable { RegionHandle U64 } } } // dataserver -> sim { RegionPresenceResponse Low 16 Trusted Zerocoded { RegionData Variable { RegionID LLUUID } { RegionHandle U64 } { InternalRegionIP IPADDR } { ExternalRegionIP IPADDR } { RegionPort IPPORT } { ValidUntil F64 } { Message Variable 1 } } } // **************************************************************************** // Simulator to dataserver messages // **************************************************************************** // Updates SimName, EstateID and SimAccess using RegionID as a key { UpdateSimulator Low 17 Trusted Unencoded { SimulatorInfo Single { RegionID LLUUID } { SimName Variable 1 } { EstateID U32 } { SimAccess U8 } } } // record dwell time. { LogDwellTime Low 18 Trusted Unencoded { DwellInfo Single { AgentID LLUUID } { SessionID LLUUID } { Duration F32 } { SimName Variable 1 } { RegionX U32 } { RegionY U32 } { AvgAgentsInView U8 } { AvgViewerFPS U8 } } } // Disabled feature response message { FeatureDisabled Low 19 Trusted Unencoded { FailureInfo Single { ErrorMessage Variable 1 } { AgentID LLUUID } { TransactionID LLUUID } } } // record lost money transactions. This message could be generated // from either the simulator or the dataserver, depending on how // the transaction failed. { LogFailedMoneyTransaction Low 20 Trusted Unencoded { TransactionData Single { TransactionID LLUUID } { TransactionTime U32 } // utc seconds since epoch { TransactionType S32 } // see lltransactiontypes.h { SourceID LLUUID } { DestID LLUUID } // destination of the transfer { Flags U8 } { Amount S32 } { SimulatorIP IPADDR } // U32 encoded IP { GridX U32 } { GridY U32 } { FailureType U8 } } } // complaint/bug-report - sim -> dataserver. see UserReport for details. // reliable { UserReportInternal Low 21 Trusted Zerocoded { ReportData Single { ReportType U8 } { Category U8 } { ReporterID LLUUID } { ViewerPosition LLVector3 } { AgentPosition LLVector3 } { ScreenshotID LLUUID } { ObjectID LLUUID } { OwnerID LLUUID } { LastOwnerID LLUUID } { CreatorID LLUUID } { RegionID LLUUID } { AbuserID LLUUID } { AbuseRegionName Variable 1 } { AbuseRegionID LLUUID } { Summary Variable 1 } { Details Variable 2 } { VersionString Variable 1 } } } // SetSimStatusInDatabase // alters the "simulator" table in the database // sim -> dataserver // reliable { SetSimStatusInDatabase Low 22 Trusted Unencoded { Data Single { RegionID LLUUID } { HostName Variable 1 } { X S32 } { Y S32 } { PID S32 } { AgentCount S32 } { TimeToLive S32 } // in seconds { Status Variable 1 } } } // SetSimPresenceInDatabase // updates the "presence" table in the database to ensure // that a given simulator is present and valid for a set amount of // time { SetSimPresenceInDatabase Low 23 Trusted Unencoded { SimData Single { RegionID LLUUID } { HostName Variable 1 } { GridX U32 } { GridY U32 } { PID S32 } { AgentCount S32 } { TimeToLive S32 } // in seconds { Status Variable 1 } } } // *************************************************************************** // Economy messages // *************************************************************************** // once we use local stats, this will include a region handle { EconomyDataRequest Low 24 NotTrusted Unencoded } // dataserver to sim, response w/ econ data { EconomyData Low 25 Trusted Zerocoded { Info Single { ObjectCapacity S32 } { ObjectCount S32 } { PriceEnergyUnit S32 } { PriceObjectClaim S32 } { PricePublicObjectDecay S32 } { PricePublicObjectDelete S32 } { PriceParcelClaim S32 } { PriceParcelClaimFactor F32 } { PriceUpload S32 } { PriceRentLight S32 } { TeleportMinPrice S32 } { TeleportPriceExponent F32 } { EnergyEfficiency F32 } { PriceObjectRent F32 } { PriceObjectScaleFactor F32 } { PriceParcelRent S32 } { PriceGroupCreate S32 } } } // *************************************************************************** // Search messages // *************************************************************************** // AvatarPickerRequest // Get a list of names to select a person // viewer -> sim -> data // reliable { AvatarPickerRequest Low 26 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { QueryID LLUUID } } { Data Single { Name Variable 1 } } } // backend implementation which tracks if the user is a god. { AvatarPickerRequestBackend Low 27 Trusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { QueryID LLUUID } { GodLevel U8 } } { Data Single { Name Variable 1 } } } // AvatarPickerReply // List of names to select a person // reliable { AvatarPickerReply Low 28 Trusted Unencoded { AgentData Single { AgentID LLUUID } { QueryID LLUUID } } { Data Variable { AvatarID LLUUID } { FirstName Variable 1 } { LastName Variable 1 } } } // PlacesQuery // Used for getting a list of places for the group land panel // and the user land holdings panel. NOT for the directory. { PlacesQuery Low 29 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { QueryID LLUUID } } { TransactionData Single { TransactionID LLUUID } } { QueryData Single { QueryText Variable 1 } { QueryFlags U32 } { Category S8 } { SimName Variable 1 } } } // PlacesReply // dataserver -> simulator -> viewer // If the user has specified a location, use that to compute // global x,y,z. Otherwise, use center of the AABB. // reliable { PlacesReply Low 30 Trusted Zerocoded UDPDeprecated { AgentData Single { AgentID LLUUID } { QueryID LLUUID } } { TransactionData Single { TransactionID LLUUID } } { QueryData Variable { OwnerID LLUUID } { Name Variable 1 } { Desc Variable 1 } { ActualArea S32 } { BillableArea S32 } { Flags U8 } { GlobalX F32 } // meters { GlobalY F32 } // meters { GlobalZ F32 } // meters { SimName Variable 1 } { SnapshotID LLUUID } { Dwell F32 } { Price S32 } //{ ProductSKU Variable 1 } } } // DirFindQuery viewer->sim // Message to start asking questions for the directory { DirFindQuery Low 31 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryText Variable 1 } { QueryFlags U32 } { QueryStart S32 } // prev/next page support } } // DirFindQueryBackend sim->data // Trusted message generated by receipt of DirFindQuery to sim. { DirFindQueryBackend Low 32 Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryText Variable 1 } { QueryFlags U32 } { QueryStart S32 } // prev/next page support { EstateID U32 } { Godlike BOOL } } } // DirPlacesQuery viewer->sim // Used for the Find directory of places { DirPlacesQuery Low 33 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryText Variable 1 } { QueryFlags U32 } { Category S8 } { SimName Variable 1 } { QueryStart S32 } } } // DirPlacesQueryBackend sim->dataserver // Used for the Find directory of places. { DirPlacesQueryBackend Low 34 Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryText Variable 1 } { QueryFlags U32 } { Category S8 } { SimName Variable 1 } { EstateID U32 } { Godlike BOOL } { QueryStart S32 } } } // DirPlacesReply dataserver->sim->viewer // If the user has specified a location, use that to compute // global x,y,z. Otherwise, use center of the AABB. // reliable { DirPlacesReply Low 35 Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Variable { QueryID LLUUID } } { QueryReplies Variable { ParcelID LLUUID } { Name Variable 1 } { ForSale BOOL } { Auction BOOL } { Dwell F32 } } { StatusData Variable { Status U32 } } } // DirPeopleReply { DirPeopleReply Low 36 Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } } { QueryReplies Variable { AgentID LLUUID } { FirstName Variable 1 } { LastName Variable 1 } { Group Variable 1 } { Online BOOL } { Reputation S32 } } } // DirEventsReply { DirEventsReply Low 37 Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } } { QueryReplies Variable { OwnerID LLUUID } { Name Variable 1 } { EventID U32 } { Date Variable 1 } { UnixTime U32 } { EventFlags U32 } } { StatusData Variable { Status U32 } } } // DirGroupsReply // dataserver -> userserver -> viewer // reliable { DirGroupsReply Low 38 Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } } { QueryReplies Variable { GroupID LLUUID } { GroupName Variable 1 } // string { Members S32 } { SearchOrder F32 } } } // DirClassifiedQuery viewer->sim // reliable { DirClassifiedQuery Low 39 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryText Variable 1 } { QueryFlags U32 } { Category U32 } { QueryStart S32 } } } // DirClassifiedQueryBackend sim->dataserver // reliable { DirClassifiedQueryBackend Low 40 Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryText Variable 1 } { QueryFlags U32 } { Category U32 } { EstateID U32 } { Godlike BOOL } { QueryStart S32 } } } // DirClassifiedReply dataserver->sim->viewer // reliable { DirClassifiedReply Low 41 Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } } { QueryReplies Variable { ClassifiedID LLUUID } { Name Variable 1 } { ClassifiedFlags U8 } { CreationDate U32 } { ExpirationDate U32 } { PriceForListing S32 } } { StatusData Variable { Status U32 } } } // AvatarClassifiedReply // dataserver -> simulator -> viewer // Send the header information for this avatar's classifieds // This fills in the tabs of the Classifieds panel. // reliable { AvatarClassifiedReply Low 42 Trusted Unencoded { AgentData Single { AgentID LLUUID } { TargetID LLUUID } } { Data Variable { ClassifiedID LLUUID } { Name Variable 1 } } } // ClassifiedInfoRequest // viewer -> simulator // simulator -> dataserver // reliable { ClassifiedInfoRequest Low 43 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { ClassifiedID LLUUID } } } // ClassifiedInfoReply // dataserver -> simulator // simulator -> viewer // reliable { ClassifiedInfoReply Low 44 Trusted Unencoded { AgentData Single { AgentID LLUUID } } { Data Single { ClassifiedID LLUUID } { CreatorID LLUUID } { CreationDate U32 } { ExpirationDate U32 } { Category U32 } { Name Variable 1 } { Desc Variable 2 } { ParcelID LLUUID } { ParentEstate U32 } { SnapshotID LLUUID } { SimName Variable 1 } { PosGlobal LLVector3d } { ParcelName Variable 1 } { ClassifiedFlags U8 } { PriceForListing S32 } } } // ClassifiedInfoUpdate // Update a classified. ParcelID and EstateID are set // on the simulator as the message passes through. // viewer -> simulator -> dataserver // reliable { ClassifiedInfoUpdate Low 45 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { ClassifiedID LLUUID } { Category U32 } { Name Variable 1 } { Desc Variable 2 } { ParcelID LLUUID } { ParentEstate U32 } { SnapshotID LLUUID } { PosGlobal LLVector3d } { ClassifiedFlags U8 } { PriceForListing S32 } } } // ClassifiedDelete // Delete a classified from the database. // viewer -> simulator -> dataserver // reliable { ClassifiedDelete Low 46 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { ClassifiedID LLUUID } } } // ClassifiedGodDelete // Delete a classified from the database. // QueryID is needed so database can send a repeat list of // classified. // viewer -> simulator -> dataserver // reliable { ClassifiedGodDelete Low 47 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { ClassifiedID LLUUID } { QueryID LLUUID } } } // DirLandQuery viewer->sim // Special query for the land for sale/auction panel. // reliable { DirLandQuery Low 48 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryFlags U32 } { SearchType U32 } { Price S32 } { Area S32 } { QueryStart S32 } } } // DirLandQueryBackend sim->dataserver // Special query for the land for sale/auction panel. { DirLandQueryBackend Low 49 Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryFlags U32 } { SearchType U32 } { Price S32 } { Area S32 } { QueryStart S32 } { EstateID U32 } { Godlike BOOL } } } // DirLandReply // dataserver -> simulator -> viewer // reliable { DirLandReply Low 50 Trusted Zerocoded UDPDeprecated { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } } { QueryReplies Variable { ParcelID LLUUID } { Name Variable 1 } { Auction BOOL } { ForSale BOOL } { SalePrice S32 } { ActualArea S32 } //{ ProductSKU Variable 1 } } } // DEPRECATED: DirPopularQuery viewer->sim // Special query for the land for sale/auction panel. // reliable { DirPopularQuery Low 51 NotTrusted Zerocoded Deprecated { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryFlags U32 } } } // DEPRECATED: DirPopularQueryBackend sim->dataserver // Special query for the land for sale/auction panel. // reliable { DirPopularQueryBackend Low 52 Trusted Zerocoded Deprecated { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryFlags U32 } { EstateID U32 } { Godlike BOOL } } } // DEPRECATED: DirPopularReply // dataserver -> simulator -> viewer // reliable { DirPopularReply Low 53 Trusted Zerocoded Deprecated { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } } { QueryReplies Variable { ParcelID LLUUID } { Name Variable 1 } { Dwell F32 } } } // ParcelInfoRequest // viewer -> simulator -> dataserver // reliable { ParcelInfoRequest Low 54 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { ParcelID LLUUID } } } // ParcelInfoReply // dataserver -> simulator -> viewer // reliable { ParcelInfoReply Low 55 Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { Data Single { ParcelID LLUUID } { OwnerID LLUUID } { Name Variable 1 } { Desc Variable 1 } { ActualArea S32 } { BillableArea S32 } { Flags U8 } { GlobalX F32 } // meters { GlobalY F32 } // meters { GlobalZ F32 } // meters { SimName Variable 1 } { SnapshotID LLUUID } { Dwell F32 } { SalePrice S32 } { AuctionID S32 } } } // ParcelObjectOwnersRequest // viewer -> simulator // reliable { ParcelObjectOwnersRequest Low 56 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } } } // ParcelObjectOwnersReply // simulator -> viewer // reliable { ParcelObjectOwnersReply Low 57 Trusted Zerocoded UDPDeprecated { Data Variable { OwnerID LLUUID } { IsGroupOwned BOOL } { Count S32 } { OnlineStatus BOOL } } } // GroupNoticeListRequest // viewer -> simulator -> dataserver // reliable { GroupNoticesListRequest Low 58 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { GroupID LLUUID } } } // GroupNoticesListReply // dataserver -> simulator -> viewer // reliable { GroupNoticesListReply Low 59 Trusted Unencoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } { Data Variable { NoticeID LLUUID } { Timestamp U32 } { FromName Variable 2 } { Subject Variable 2 } { HasAttachment BOOL } { AssetType U8 } } } // GroupNoticeRequest // viewer -> simulator // simulator -> dataserver // reliable { GroupNoticeRequest Low 60 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { GroupNoticeID LLUUID } } } // GroupNoticeAdd // Add a group notice. // simulator -> dataserver // reliable { GroupNoticeAdd Low 61 Trusted Unencoded { AgentData Single { AgentID LLUUID } } { MessageBlock Single { ToGroupID LLUUID } { ID LLUUID } { Dialog U8 } { FromAgentName Variable 1 } { Message Variable 2 } { BinaryBucket Variable 2 } } } // **************************************************************************** // Teleport messages // // The teleport messages are numerous, so I have attempted to give them a // consistent naming convention. Since there is a bit of glob pattern // aliasing, the rules are applied in order. // // Teleport* - viewer->sim or sim->viewer message which announces a // teleportation request, progrees, start, or end. // Data* - sim->data or data->sim trusted message. // Space* - sim->space or space->sim trusted messaging // *Lure - A lure message to pass around information. // // All actual viewer teleports will begin with a Teleport* message and // end in a TeleportStart, TeleportLocal or TeleportFailed message. The TeleportFailed // message may be returned by any process and must be routed through the // teleporting agent's simulator and back to the viewer. // **************************************************************************** // TeleportRequest // viewer -> sim specifying exact teleport destination { TeleportRequest Low 62 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Info Single { RegionID LLUUID } { Position LLVector3 } { LookAt LLVector3 } } } // TeleportLocationRequest // viewer -> sim specifying exact teleport destination { TeleportLocationRequest Low 63 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Info Single { RegionHandle U64 } { Position LLVector3 } { LookAt LLVector3 } } } // TeleportLocal // sim -> viewer reply telling the viewer that we've successfully TP'd // to somewhere else within the sim { TeleportLocal Low 64 Trusted Unencoded { Info Single { AgentID LLUUID } { LocationID U32 } { Position LLVector3 } // region { LookAt LLVector3 } { TeleportFlags U32 } } } // TeleportLandmarkRequest viewer->sim // teleport to landmark asset ID destination. use LLUUD::null for home. { TeleportLandmarkRequest Low 65 NotTrusted Zerocoded { Info Single { AgentID LLUUID } { SessionID LLUUID } { LandmarkID LLUUID } } } // TeleportProgress sim->viewer // Tell the agent how the teleport is going. { TeleportProgress Low 66 Trusted Unencoded { AgentData Single { AgentID LLUUID } } { Info Single { TeleportFlags U32 } { Message Variable 1 } // string } } // DataHomeLocationRequest sim->data // Request { DataHomeLocationRequest Low 67 Trusted Zerocoded { Info Single { AgentID LLUUID } { KickedFromEstateID U32 } } } // DataHomeLocationReply data->sim // response is the location of agent home. { DataHomeLocationReply Low 68 Trusted Unencoded { Info Single { AgentID LLUUID } { RegionHandle U64 } { Position LLVector3 } // region coords { LookAt LLVector3 } } } // TeleportFinish sim->viewer // called when all of the information has been collected and readied for // the agent. { TeleportFinish Low 69 Trusted Unencoded UDPBlackListed { Info Single { AgentID LLUUID } { LocationID U32 } { SimIP IPADDR } { SimPort IPPORT } { RegionHandle U64 } { SeedCapability Variable 2 } // URL { SimAccess U8 } { TeleportFlags U32 } } } // StartLure viewer->sim // Sent from viewer to the local simulator to lure target id to near // agent id. This will generate an instant message that will be routed // through the space server and out to the userserver. When that IM // goes through the userserver and the TargetID is online, the // userserver will send an InitializeLure to the spaceserver. When that // packet is acked, the original instant message is finally forwarded to // TargetID. { StartLure Low 70 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Info Single { LureType U8 } { Message Variable 1 } } { TargetData Variable { TargetID LLUUID } } } // TeleportLureRequest viewer->sim // Message from target of lure to begin the teleport process on the // local simulator. { TeleportLureRequest Low 71 NotTrusted Unencoded { Info Single { AgentID LLUUID } { SessionID LLUUID } { LureID LLUUID } { TeleportFlags U32 } } } // TeleportCancel viewer->sim // reliable { TeleportCancel Low 72 NotTrusted Unencoded { Info Single { AgentID LLUUID } { SessionID LLUUID } } } // TeleportStart sim->viewer // announce a successful teleport request to the viewer. { TeleportStart Low 73 Trusted Unencoded { Info Single { TeleportFlags U32 } } } // TeleportFailed somewhere->sim->viewer // announce failure of teleport request { TeleportFailed Low 74 Trusted Unencoded { Info Single { AgentID LLUUID } { Reason Variable 1 } // string } { AlertInfo Variable { Message Variable 1 } // string id { ExtraParams Variable 1 } // llsd extra parameters } } // *************************************************************************** // Viewer to Simulator Messages // *************************************************************************** // Undo { Undo Low 75 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } } { ObjectData Variable { ObjectID LLUUID } } } // Redo { Redo Low 76 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } } { ObjectData Variable { ObjectID LLUUID } } } // UndoLand { UndoLand Low 77 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } // AgentPause - viewer occasionally will block, inform simulator of this fact { AgentPause Low 78 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { SerialNum U32 } // U32, used by both pause and resume. Non-increasing numbers are ignored. } } // AgentResume - unblock the agent { AgentResume Low 79 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { SerialNum U32 } // U32, used by both pause and resume. Non-increasing numbers are ignored. } } // AgentUpdate - Camera info sent from viewer to simulator // or, more simply, two axes and compute cross product // State data is temporary, indicates current behavior state: // 0 = walking // 1 = mouselook // 2 = typing // // Center is region local (JNC 8.16.2001) // Camera center is region local (JNC 8.29.2001) { AgentUpdate High 4 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { BodyRotation LLQuaternion } { HeadRotation LLQuaternion } { State U8 } { CameraCenter LLVector3 } { CameraAtAxis LLVector3 } { CameraLeftAxis LLVector3 } { CameraUpAxis LLVector3 } { Far F32 } { ControlFlags U32 } { Flags U8 } } } // ChatFromViewer // Specifies the text to be said and the "type", // normal speech, shout, whisper. // with the specified radius { ChatFromViewer Low 80 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ChatData Single { Message Variable 2 } { Type U8 } { Channel S32 } } } // AgentThrottle { AgentThrottle Low 81 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { CircuitCode U32 } } { Throttle Single { GenCounter U32 } { Throttles Variable 1 } } } // AgentFOV - Update to agent's field of view, angle is vertical, single F32 float in radians { AgentFOV Low 82 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { CircuitCode U32 } } { FOVBlock Single { GenCounter U32 } { VerticalAngle F32 } } } // AgentHeightWidth - Update to height and aspect, sent as height/width to save space // Usually sent when window resized or created { AgentHeightWidth Low 83 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { CircuitCode U32 } } { HeightWidthBlock Single { GenCounter U32 } { Height U16 } { Width U16 } } } // AgentSetAppearance - Update to agent appearance { AgentSetAppearance Low 84 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { SerialNum U32 } // U32, Increases every time the appearance changes. A value of 0 resets. { Size LLVector3 } } { WearableData Variable { CacheID LLUUID } { TextureIndex U8 } } { ObjectData Single { TextureEntry Variable 2 } } { VisualParam Variable { ParamValue U8 } } } // AgentAnimation - Update animation state // viewer --> simulator { AgentAnimation High 5 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { AnimationList Variable { AnimID LLUUID } { StartAnim BOOL } } { PhysicalAvatarEventList Variable { TypeData Variable 1 } } } // AgentRequestSit - Try to sit on an object { AgentRequestSit High 6 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { TargetObject Single { TargetID LLUUID } { Offset LLVector3 } } } // AgentSit - Actually sit on object { AgentSit High 7 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } // quit message sent between simulators { AgentQuitCopy Low 85 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { FuseBlock Single { ViewerCircuitCode U32 } } } // Request Image - Sent by the viewer to request a specified image at a specified resolution { RequestImage High 8 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { RequestImage Variable { Image LLUUID } { DiscardLevel S8 } { DownloadPriority F32 } { Packet U32 } { Type U8 } } } // ImageNotInDatabase // Simulator informs viewer that a requsted image definitely does not exist in the asset database { ImageNotInDatabase Low 86 Trusted Unencoded { ImageID Single { ID LLUUID } } } // RebakeAvatarTextures // simulator -> viewer request when a temporary baked avatar texture is not found { RebakeAvatarTextures Low 87 Trusted Unencoded { TextureData Single { TextureID LLUUID } } } // SetAlwaysRun // Lets the viewer choose between running and walking { SetAlwaysRun Low 88 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { AlwaysRun BOOL } } } // ObjectAdd - create new object in the world // Simulator will assign ID and send message back to signal // object actually created. // // AddFlags (see also ObjectUpdate) // 0x01 - use physics // 0x02 - create selected // // If only one ImageID is sent for an object type that has more than // one face, the same image is repeated on each subsequent face. // // Data field is opaque type-specific data for this object { ObjectAdd Medium 1 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } } { ObjectData Single { PCode U8 } { Material U8 } { AddFlags U32 } // see object_flags.h { PathCurve U8 } { ProfileCurve U8 } { PathBegin U16 } // 0 to 1, quanta = 0.01 { PathEnd U16 } // 0 to 1, quanta = 0.01 { PathScaleX U8 } // 0 to 1, quanta = 0.01 { PathScaleY U8 } // 0 to 1, quanta = 0.01 { PathShearX U8 } // -.5 to .5, quanta = 0.01 { PathShearY U8 } // -.5 to .5, quanta = 0.01 { PathTwist S8 } // -1 to 1, quanta = 0.01 { PathTwistBegin S8 } // -1 to 1, quanta = 0.01 { PathRadiusOffset S8 } // -1 to 1, quanta = 0.01 { PathTaperX S8 } // -1 to 1, quanta = 0.01 { PathTaperY S8 } // -1 to 1, quanta = 0.01 { PathRevolutions U8 } // 0 to 3, quanta = 0.015 { PathSkew S8 } // -1 to 1, quanta = 0.01 { ProfileBegin U16 } // 0 to 1, quanta = 0.01 { ProfileEnd U16 } // 0 to 1, quanta = 0.01 { ProfileHollow U16 } // 0 to 1, quanta = 0.01 { BypassRaycast U8 } { RayStart LLVector3 } { RayEnd LLVector3 } { RayTargetID LLUUID } { RayEndIsIntersection U8 } { Scale LLVector3 } { Rotation LLQuaternion } { State U8 } } } // ObjectDelete // viewer -> simulator { ObjectDelete Low 89 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { Force BOOL } // BOOL, god trying to force delete } { ObjectData Variable { ObjectLocalID U32 } } } // ObjectDuplicate // viewer -> simulator // Makes a copy of a set of objects, offset by a given amount { ObjectDuplicate Low 90 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } } { SharedData Single { Offset LLVector3 } { DuplicateFlags U32 } // see object_flags.h } { ObjectData Variable { ObjectLocalID U32 } } } // ObjectDuplicateOnRay // viewer -> simulator // Makes a copy of an object, using the add object raycast // code to abut it to other objects. { ObjectDuplicateOnRay Low 91 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } { RayStart LLVector3 } // region local { RayEnd LLVector3 } // region local { BypassRaycast BOOL } { RayEndIsIntersection BOOL } { CopyCenters BOOL } { CopyRotates BOOL } { RayTargetID LLUUID } { DuplicateFlags U32 } // see object_flags.h } { ObjectData Variable { ObjectLocalID U32 } } } // MultipleObjectUpdate // viewer -> simulator // updates position, rotation and scale in one message // positions sent as region-local floats { MultipleObjectUpdate Medium 2 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { Type U8 } { Data Variable 1 } // custom type } } // RequestMultipleObjects // viewer -> simulator // reliable // // When the viewer gets a local_id/crc for an object that // it either doesn't have, or doesn't have the current version // of, it sends this upstream get get an update. // // CacheMissType 0 => full object (viewer doesn't have it) // CacheMissType 1 => CRC mismatch only { RequestMultipleObjects Medium 3 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { CacheMissType U8 } { ID U32 } } } // DEPRECATED: ObjectPosition // == Old Behavior == // Set the position on objects // // == Reason for deprecation == // Unused code path was removed in the move to Havok4 // Object position, scale and rotation messages were already unified // to MultipleObjectUpdate and this message was unused cruft. // // == New Location == // MultipleObjectUpdate can be used instead. { ObjectPosition Medium 4 NotTrusted Zerocoded Deprecated { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { Position LLVector3 } // region } } // DEPRECATED: ObjectScale // == Old Behavior == // Set the scale on objects // // == Reason for deprecation == // Unused code path was removed in the move to Havok4 // Object position, scale and rotation messages were already unified // to MultipleObjectUpdate and this message was unused cruft. // // == New Location == // MultipleObjectUpdate can be used instead. { ObjectScale Low 92 NotTrusted Zerocoded Deprecated { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { Scale LLVector3 } } } // ObjectRotation // viewer -> simulator { ObjectRotation Low 93 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { Rotation LLQuaternion } } } // ObjectFlagUpdate // viewer -> simulator { ObjectFlagUpdate Low 94 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { ObjectLocalID U32 } { UsePhysics BOOL } { IsTemporary BOOL } { IsPhantom BOOL } { CastsShadows BOOL } } } // ObjectClickAction // viewer -> simulator { ObjectClickAction Low 95 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { ClickAction U8 } } } // ObjectImage // viewer -> simulator { ObjectImage Low 96 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { MediaURL Variable 1 } { TextureEntry Variable 2 } } } { ObjectMaterial Low 97 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { Material U8 } } } { ObjectShape Low 98 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { PathCurve U8 } { ProfileCurve U8 } { PathBegin U16 } // 0 to 1, quanta = 0.01 { PathEnd U16 } // 0 to 1, quanta = 0.01 { PathScaleX U8 } // 0 to 1, quanta = 0.01 { PathScaleY U8 } // 0 to 1, quanta = 0.01 { PathShearX U8 } // -.5 to .5, quanta = 0.01 { PathShearY U8 } // -.5 to .5, quanta = 0.01 { PathTwist S8 } // -1 to 1, quanta = 0.01 { PathTwistBegin S8 } // -1 to 1, quanta = 0.01 { PathRadiusOffset S8 } // -1 to 1, quanta = 0.01 { PathTaperX S8 } // -1 to 1, quanta = 0.01 { PathTaperY S8 } // -1 to 1, quanta = 0.01 { PathRevolutions U8 } // 0 to 3, quanta = 0.015 { PathSkew S8 } // -1 to 1, quanta = 0.01 { ProfileBegin U16 } // 0 to 1, quanta = 0.01 { ProfileEnd U16 } // 0 to 1, quanta = 0.01 { ProfileHollow U16 } // 0 to 1, quanta = 0.01 } } { ObjectExtraParams Low 99 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { ParamType U16 } { ParamInUse BOOL } { ParamSize U32 } { ParamData Variable 1 } } } // ObjectOwner // To make public, set OwnerID to LLUUID::null. // TODO: Eliminate god-bit. Maybe not. God-bit is ok, because it's // known on the server. { ObjectOwner Low 100 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { HeaderData Single { Override BOOL } // BOOL, God-bit. { OwnerID LLUUID } { GroupID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } // ObjectGroup // To make the object part of no group, set GroupID = LLUUID::null. // This call only works if objectid.ownerid == agentid. { ObjectGroup Low 101 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } // Attempt to buy an object. This will only pack root objects. { ObjectBuy Low 102 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } { CategoryID LLUUID } // folder where it goes (if derezed) } { ObjectData Variable { ObjectLocalID U32 } { SaleType U8 } // U8 -> EForSale { SalePrice S32 } } } // viewer -> simulator // buy object inventory. If the transaction succeeds, it will add // inventory to the agent, and potentially remove the original. { BuyObjectInventory Low 103 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { ObjectID LLUUID } { ItemID LLUUID } { FolderID LLUUID } } } // sim -> viewer // Used to propperly handle buying asset containers { DerezContainer Low 104 Trusted Zerocoded { Data Single { ObjectID LLUUID } { Delete BOOL } // BOOL } } // ObjectPermissions // Field - see llpermissionsflags.h // If Set is true, tries to turn on bits in mask. // If set is false, tries to turn off bits in mask. // BUG: This just forces the permissions field. { ObjectPermissions Low 105 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { HeaderData Single { Override BOOL } // BOOL, God-bit. } { ObjectData Variable { ObjectLocalID U32 } { Field U8 } { Set U8 } { Mask U32 } } } // set object sale information { ObjectSaleInfo Low 106 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { LocalID U32 } { SaleType U8 } // U8 -> EForSale { SalePrice S32 } } } // set object names { ObjectName Low 107 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { LocalID U32 } { Name Variable 1 } } } // set object descriptions { ObjectDescription Low 108 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { LocalID U32 } { Description Variable 1 } } } // set object category { ObjectCategory Low 109 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { LocalID U32 } { Category U32 } } } // ObjectSelect // Variable object data because rectangular selection can // generate a large list very quickly. { ObjectSelect Low 110 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } // ObjectDeselect { ObjectDeselect Low 111 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } // ObjectAttach { ObjectAttach Low 112 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { AttachmentPoint U8 } } { ObjectData Variable { ObjectLocalID U32 } { Rotation LLQuaternion } } } // ObjectDetach -- derezzes an attachment, marking its item in your inventory as not "(worn)" { ObjectDetach Low 113 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } // ObjectDrop -- drops an attachment from your avatar onto the ground { ObjectDrop Low 114 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } // ObjectLink { ObjectLink Low 115 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } // ObjectDelink { ObjectDelink Low 116 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } // ObjectGrab { ObjectGrab Low 117 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Single { LocalID U32 } { GrabOffset LLVector3 } } { SurfaceInfo Variable { UVCoord LLVector3 } { STCoord LLVector3 } { FaceIndex S32 } { Position LLVector3 } { Normal LLVector3 } { Binormal LLVector3 } } } // ObjectGrabUpdate // TODO: Quantize this data, reduce message size. // TimeSinceLast could go to 1 byte, since capped // at 100 on sim. { ObjectGrabUpdate Low 118 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Single { ObjectID LLUUID } { GrabOffsetInitial LLVector3 } // LLVector3 { GrabPosition LLVector3 } // LLVector3, region local { TimeSinceLast U32 } } { SurfaceInfo Variable { UVCoord LLVector3 } { STCoord LLVector3 } { FaceIndex S32 } { Position LLVector3 } { Normal LLVector3 } { Binormal LLVector3 } } } // ObjectDeGrab { ObjectDeGrab Low 119 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Single { LocalID U32 } } { SurfaceInfo Variable { UVCoord LLVector3 } { STCoord LLVector3 } { FaceIndex S32 } { Position LLVector3 } { Normal LLVector3 } { Binormal LLVector3 } } } // ObjectSpinStart { ObjectSpinStart Low 120 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Single { ObjectID LLUUID } } } // ObjectSpinUpdate { ObjectSpinUpdate Low 121 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Single { ObjectID LLUUID } { Rotation LLQuaternion } } } // ObjectSpinStop { ObjectSpinStop Low 122 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Single { ObjectID LLUUID } } } // Export selected objects // viewer->sim { ObjectExportSelected Low 123 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { RequestID LLUUID } { VolumeDetail S16 } } { ObjectData Variable { ObjectID LLUUID } } } // ModifyLand - sent to modify a piece of land on a simulator. // viewer -> sim { ModifyLand Low 124 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ModifyBlock Single { Action U8 } { BrushSize U8 } { Seconds F32 } { Height F32 } } { ParcelData Variable { LocalID S32 } { West F32 } { South F32 } { East F32 } { North F32 } } { ModifyBlockExtended Variable { BrushSize F32 } } } // VelocityInterpolateOn // viewer->sim // requires administrative access { VelocityInterpolateOn Low 125 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } // VelocityInterpolateOff // viewer->sim // requires administrative access { VelocityInterpolateOff Low 126 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } // Save State // viewer->sim // requires administrative access { StateSave Low 127 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { DataBlock Single { Filename Variable 1 } } } // ReportAutosaveCrash // sim->launcher { ReportAutosaveCrash Low 128 NotTrusted Unencoded { AutosaveData Single { PID S32 } { Status S32 } } } // SimWideDeletes { SimWideDeletes Low 129 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { DataBlock Single { TargetID LLUUID } { Flags U32 } } } // RequestObjectPropertiesFamily // Ask for extended information, such as creator, permissions, resources, etc. // Medium frequency because it is driven by mouse hovering over objects, which // occurs at high rates. { RequestObjectPropertiesFamily Medium 5 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Single { RequestFlags U32 } { ObjectID LLUUID } } } // Track agent - this information is used when sending out the // coarse location update so that we know who you are tracking. // To stop tracking - send a null uuid as the prey. { TrackAgent Low 130 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { TargetData Single { PreyID LLUUID } } } // end viewer to simulator section { ViewerStats Low 131 NotTrusted Zerocoded UDPDeprecated { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { IP IPADDR } { StartTime U32 } { RunTime F32 } // F32 { SimFPS F32 } // F32 { FPS F32 } // F32 { AgentsInView U8 } // { Ping F32 } // F32 { MetersTraveled F64 } { RegionsVisited S32 } { SysRAM U32 } { SysOS Variable 1 } // String { SysCPU Variable 1 } // String { SysGPU Variable 1 } // String } { DownloadTotals Single { World U32 } { Objects U32 } { Textures U32 } } { NetStats Multiple 2 { Bytes U32 } { Packets U32 } { Compressed U32 } { Savings U32 } } { FailStats Single { SendPacket U32 } { Dropped U32 } { Resent U32 } { FailedResends U32 } { OffCircuit U32 } { Invalid U32 } } { MiscStats Variable { Type U32 } { Value F64 } } } // ScriptAnswerYes // reliable { ScriptAnswerYes Low 132 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { TaskID LLUUID } { ItemID LLUUID } { Questions S32 } } } // complaint/bug-report // reliable { UserReport Low 133 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ReportData Single { ReportType U8 } // BUG=1, COMPLAINT=2 { Category U8 } // see sequence.user_report_category { Position LLVector3 } // screenshot position, region-local { CheckFlags U8 } // checkboxflags { ScreenshotID LLUUID } { ObjectID LLUUID } { AbuserID LLUUID } { AbuseRegionName Variable 1 } { AbuseRegionID LLUUID } { Summary Variable 1 } { Details Variable 2 } { VersionString Variable 1 } } } // *************************************************************************** // Simulator to Viewer Messages // *************************************************************************** // AlertMessage // Specifies the text to be posted in an alert dialog { AlertMessage Low 134 Trusted Unencoded { AlertData Single { Message Variable 1 } } { AlertInfo Variable { Message Variable 1 } { ExtraParams Variable 1 } } } // Send an AlertMessage to the named agent. // usually dataserver->simulator { AgentAlertMessage Low 135 Trusted Unencoded { AgentData Single { AgentID LLUUID } } { AlertData Single { Modal BOOL } { Message Variable 1 } } } // MeanCollisionAlert // Specifies the text to be posted in an alert dialog { MeanCollisionAlert Low 136 Trusted Zerocoded { MeanCollision Variable { Victim LLUUID } { Perp LLUUID } { Time U32 } { Mag F32 } { Type U8 } } } // ViewerFrozenMessage // Specifies the text to be posted in an alert dialog { ViewerFrozenMessage Low 137 Trusted Unencoded { FrozenData Single { Data BOOL } } } // Health Message // Tells viewer what agent health is { HealthMessage Low 138 Trusted Zerocoded { HealthData Single { Health F32 } } } // ChatFromSimulator // Chat text to appear on a user's screen // Position is region local. // Viewer can optionally use position to animate // If audible is CHAT_NOT_AUDIBLE, message will not be valid { ChatFromSimulator Low 139 Trusted Unencoded { ChatData Single { FromName Variable 1 } { SourceID LLUUID } // agent id or object id { OwnerID LLUUID } // object's owner { SourceType U8 } { ChatType U8 } { Audible U8 } { Position LLVector3 } { Message Variable 2 } // UTF-8 text } } // Simulator statistics packet (goes out to viewer and dataserver/spaceserver) { SimStats Low 140 Trusted Unencoded { Region Single { RegionX U32 } { RegionY U32 } { RegionFlags U32 } { ObjectCapacity U32 } } { Stat Variable { StatID U32 } { StatValue F32 } } { PidStat Single { PID S32 } } } // viewer -> sim // reliable { RequestRegionInfo Low 141 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } // RegionInfo // Used to populate UI for both region/estate floater // and god tools floater // sim -> viewer // reliable { RegionInfo Low 142 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { RegionInfo Single { SimName Variable 1 } // string { EstateID U32 } { ParentEstateID U32 } { RegionFlags U32 } { SimAccess U8 } { MaxAgents U8 } { BillableFactor F32 } { ObjectBonusFactor F32 } { WaterHeight F32 } { TerrainRaiseLimit F32 } { TerrainLowerLimit F32 } { PricePerMeter S32 } { RedirectGridX S32 } { RedirectGridY S32 } { UseEstateSun BOOL } { SunHour F32 } // last value set by estate or region controls JC } { RegionInfo2 Single { ProductSKU Variable 1 } // string { ProductName Variable 1 } // string { MaxAgents32 U32 } // Identical to RegionInfo.MaxAgents but allows greater range { HardMaxAgents U32 } { HardMaxObjects U32 } } } // GodUpdateRegionInfo // Sent from viewer to sim after a god has changed some // of the parameters in the god tools floater // viewer -> sim // reliable { GodUpdateRegionInfo Low 143 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { RegionInfo Single { SimName Variable 1 } // string { EstateID U32 } { ParentEstateID U32 } { RegionFlags U32 } { BillableFactor F32 } { PricePerMeter S32 } { RedirectGridX S32 } { RedirectGridY S32 } } } //NearestLandingRegionRequest //sim->dataserver //Sent from the region to the data server //to request the most up to date region for the requesting //region to redirect teleports to { NearestLandingRegionRequest Low 144 Trusted Unencoded { RequestingRegionData Single { RegionHandle U64 } } } //NearestLandingPointReply //dataserver->sim //Sent from the data server to a region in reply //to the redirectregion request stating which region //the requesting region should redirect teleports to if necessary { NearestLandingRegionReply Low 145 Trusted Unencoded { LandingRegionData Single { RegionHandle U64 } } } //NearestLandingPointUpdated //sim->dataserver //Sent from a region to the data server //to have the dataserver note/clear in the db //that the region has updated it's nearest landing point { NearestLandingRegionUpdated Low 146 Trusted Unencoded { RegionData Single { RegionHandle U64 } } } //TeleportLandingStatusChanged //sim->dataserver //Sent from the region to the data server //to note that the region's teleportation landing status has changed { TeleportLandingStatusChanged Low 147 Trusted Unencoded { RegionData Single { RegionHandle U64 } } } // RegionHandshake // Sent by region to viewer after it has received UseCircuitCode // from that viewer. // sim -> viewer // reliable { RegionHandshake Low 148 Trusted Zerocoded { RegionInfo Single { RegionFlags U32 } { SimAccess U8 } { SimName Variable 1 } // string { SimOwner LLUUID } { IsEstateManager BOOL } // this agent, for this sim { WaterHeight F32 } { BillableFactor F32 } { CacheID LLUUID } { TerrainBase0 LLUUID } { TerrainBase1 LLUUID } { TerrainBase2 LLUUID } { TerrainBase3 LLUUID } { TerrainDetail0 LLUUID } { TerrainDetail1 LLUUID } { TerrainDetail2 LLUUID } { TerrainDetail3 LLUUID } { TerrainStartHeight00 F32 } { TerrainStartHeight01 F32 } { TerrainStartHeight10 F32 } { TerrainStartHeight11 F32 } { TerrainHeightRange00 F32 } { TerrainHeightRange01 F32 } { TerrainHeightRange10 F32 } { TerrainHeightRange11 F32 } } { RegionInfo2 Single { RegionID LLUUID } } { RegionInfo3 Single { CPUClassID S32 } { CPURatio S32 } { ColoName Variable 1 } // string { ProductSKU Variable 1 } // string { ProductName Variable 1 } // string } } // RegionHandshakeReply // viewer -> sim // reliable // Sent after viewer has initialized the (pre-existing) // LLViewerRegion with the name, access level, etc. and // has loaded the cache for the region. // After the simulator receives this, it will start sending // data about objects. { RegionHandshakeReply Low 149 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { RegionInfo Single { Flags U32 } } } // The CoarseLocationUpdate message is sent to notify the viewer of // the location of mappable objects in the region. 1 meter resolution is // sufficient for this. The index block is used to show where you are, // and where someone you are tracking is located. They are -1 if not // applicable. { CoarseLocationUpdate Medium 6 Trusted Unencoded { Location Variable { X U8 } { Y U8 } { Z U8 } // Z in meters / 4 } { Index Single { You S16 } { Prey S16 } } { AgentData Variable { AgentID LLUUID } } } // ImageData - sent to viewer to transmit information about an image { ImageData High 9 Trusted Unencoded { ImageID Single { ID LLUUID } { Codec U8 } { Size U32 } { Packets U16 } } { ImageData Single { Data Variable 2 } } } // ImagePacket - follow on image data for images having > 1 packet of data { ImagePacket High 10 Trusted Unencoded { ImageID Single { ID LLUUID } { Packet U16 } } { ImageData Single { Data Variable 2 } } } // LayerData - Sent to viewer - encodes layer data { LayerData High 11 Trusted Unencoded { LayerID Single { Type U8 } } { LayerData Single { Data Variable 2 } } } // ObjectUpdate - Sent by objects from the simulator to the viewer // // If only one ImageID is sent for an object type that has more than // one face, the same image is repeated on each subsequent face. // // NameValue is a list of name-value strings, separated by \n characters, // terminated by \0 // // Data is type-specific opaque data for this object { ObjectUpdate High 12 Trusted Zerocoded { RegionData Single { RegionHandle U64 } { TimeDilation U16 } } { ObjectData Variable { ID U32 } { State U8 } { FullID LLUUID } { CRC U32 } // TEMPORARY HACK FOR JAMES { PCode U8 } { Material U8 } { ClickAction U8 } { Scale LLVector3 } { ObjectData Variable 1 } { ParentID U32 } { UpdateFlags U32 } // U32, see object_flags.h { PathCurve U8 } { ProfileCurve U8 } { PathBegin U16 } // 0 to 1, quanta = 0.01 { PathEnd U16 } // 0 to 1, quanta = 0.01 { PathScaleX U8 } // 0 to 1, quanta = 0.01 { PathScaleY U8 } // 0 to 1, quanta = 0.01 { PathShearX U8 } // -.5 to .5, quanta = 0.01 { PathShearY U8 } // -.5 to .5, quanta = 0.01 { PathTwist S8 } // -1 to 1, quanta = 0.01 { PathTwistBegin S8 } // -1 to 1, quanta = 0.01 { PathRadiusOffset S8 } // -1 to 1, quanta = 0.01 { PathTaperX S8 } // -1 to 1, quanta = 0.01 { PathTaperY S8 } // -1 to 1, quanta = 0.01 { PathRevolutions U8 } // 0 to 3, quanta = 0.015 { PathSkew S8 } // -1 to 1, quanta = 0.01 { ProfileBegin U16 } // 0 to 1, quanta = 0.01 { ProfileEnd U16 } // 0 to 1, quanta = 0.01 { ProfileHollow U16 } // 0 to 1, quanta = 0.01 { TextureEntry Variable 2 } { TextureAnim Variable 1 } { NameValue Variable 2 } { Data Variable 2 } { Text Variable 1 } // llSetText() hovering text { TextColor Fixed 4 } // actually, a LLColor4U { MediaURL Variable 1 } // URL for web page, movie, etc. // Info for particle systems { PSBlock Variable 1 } // Extra parameters { ExtraParams Variable 1 } // info for looped attached sounds // because these are almost always all zero // the hit after zero-coding is only 2 bytes // not the 42 you see here { Sound LLUUID } { OwnerID LLUUID } // HACK object's owner id, only set if non-null sound, for muting { Gain F32 } { Flags U8 } { Radius F32 } // cutoff radius // joint info -- is sent in the update of each joint-child-root { JointType U8 } { JointPivot LLVector3 } { JointAxisOrAnchor LLVector3 } } } // ObjectUpdateCompressed { ObjectUpdateCompressed High 13 Trusted Unencoded { RegionData Single { RegionHandle U64 } { TimeDilation U16 } } { ObjectData Variable { UpdateFlags U32 } { Data Variable 2 } } } // ObjectUpdateCached // reliable { ObjectUpdateCached High 14 Trusted Unencoded { RegionData Single { RegionHandle U64 } { TimeDilation U16 } } { ObjectData Variable { ID U32 } { CRC U32 } { UpdateFlags U32 } } } // packed terse object update format { ImprovedTerseObjectUpdate High 15 Trusted Unencoded { RegionData Single { RegionHandle U64 } { TimeDilation U16 } } { ObjectData Variable { Data Variable 1 } { TextureEntry Variable 2 } } } // KillObject - Sent by objects to the viewer to tell them to kill themselves { KillObject High 16 Trusted Unencoded { ObjectData Variable { ID U32 } } } // CrossedRegion - new way to tell a viewer it has gone across a region // boundary { CrossedRegion Medium 7 Trusted Unencoded UDPBlackListed { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { RegionData Single { SimIP IPADDR } { SimPort IPPORT } { RegionHandle U64 } { SeedCapability Variable 2 } // URL } { Info Single { Position LLVector3 } { LookAt LLVector3 } } } // SimulatorViewerTimeMessage - Allows viewer to resynch to world time { SimulatorViewerTimeMessage Low 150 Trusted Unencoded { TimeInfo Single { UsecSinceStart U64 } { SecPerDay U32 } { SecPerYear U32 } { SunDirection LLVector3 } { SunPhase F32 } { SunAngVelocity LLVector3 } } } // EnableSimulator - Preps a viewer to receive data from a simulator { EnableSimulator Low 151 Trusted Unencoded UDPBlackListed { SimulatorInfo Single { Handle U64 } { IP IPADDR } { Port IPPORT } } } // DisableThisSimulator - Tells a viewer not to expect data from this simulator anymore { DisableSimulator Low 152 Trusted Unencoded } // ConfirmEnableSimulator - A confirmation message sent from simulator to neighbors that the simulator // has successfully been enabled by the viewer { ConfirmEnableSimulator Medium 8 Trusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } //----------------------------------------------------------------------------- // New Transfer system //----------------------------------------------------------------------------- // Request a new transfer (target->source) { TransferRequest Low 153 NotTrusted Zerocoded { TransferInfo Single { TransferID LLUUID } { ChannelType S32 } { SourceType S32 } { Priority F32 } { Params Variable 2 } } } // Return info about a transfer/initiate transfer (source->target) // Possibly should have a Params field like above { TransferInfo Low 154 NotTrusted Zerocoded { TransferInfo Single { TransferID LLUUID } { ChannelType S32 } { TargetType S32 } { Status S32 } { Size S32 } { Params Variable 2 } } } { TransferPacket High 17 NotTrusted Unencoded { TransferData Single { TransferID LLUUID } { ChannelType S32 } { Packet S32 } { Status S32 } { Data Variable 2 } } } // Abort a transfer in progress (either from target->source or source->target) { TransferAbort Low 155 NotTrusted Zerocoded { TransferInfo Single { TransferID LLUUID } { ChannelType S32 } } } //----------------------------------------------------------------------------- // General file transfer //----------------------------------------------------------------------------- // RequestXfer - request an arbitrary xfer { RequestXfer Low 156 NotTrusted Zerocoded { XferID Single { ID U64 } { Filename Variable 1 } { FilePath U8 } // ELLPath { DeleteOnCompletion BOOL } // BOOL { UseBigPackets BOOL } // BOOL { VFileID LLUUID } { VFileType S16 } } } // SendXferPacket - send an additional packet of an arbitrary xfer from sim -> viewer { SendXferPacket High 18 NotTrusted Unencoded { XferID Single { ID U64 } { Packet U32 } } { DataPacket Single { Data Variable 2 } } } // ConfirmXferPacket { ConfirmXferPacket High 19 NotTrusted Unencoded { XferID Single { ID U64 } { Packet U32 } } } // AbortXfer { AbortXfer Low 157 NotTrusted Unencoded { XferID Single { ID U64 } { Result S32 } } } //----------------------------------------------------------------------------- // Avatar information //----------------------------------------------------------------------------- // AvatarAnimation - Update animation state // simulator --> viewer { AvatarAnimation High 20 Trusted Unencoded { Sender Single { ID LLUUID } } { AnimationList Variable { AnimID LLUUID } { AnimSequenceID S32 } } { AnimationSourceList Variable { ObjectID LLUUID } } { PhysicalAvatarEventList Variable { TypeData Variable 1 } } } // AvatarAppearance - Update visual params { AvatarAppearance Low 158 Trusted Zerocoded { Sender Single { ID LLUUID } { IsTrial BOOL } } { ObjectData Single { TextureEntry Variable 2 } } { VisualParam Variable { ParamValue U8 } } } // AvatarSitResponse - response to a request to sit on an object { AvatarSitResponse High 21 Trusted Zerocoded { SitObject Single { ID LLUUID } } { SitTransform Single { AutoPilot BOOL } { SitPosition LLVector3 } { SitRotation LLQuaternion } { CameraEyeOffset LLVector3 } { CameraAtOffset LLVector3 } { ForceMouselook BOOL } } } // SetFollowCamProperties { SetFollowCamProperties Low 159 Trusted Unencoded { ObjectData Single { ObjectID LLUUID } } { CameraProperty Variable { Type S32 } { Value F32 } } } // ClearFollowCamProperties { ClearFollowCamProperties Low 160 Trusted Unencoded { ObjectData Single { ObjectID LLUUID } } } // CameraConstraint - new camera distance limit (based on collision with objects) { CameraConstraint High 22 Trusted Zerocoded { CameraCollidePlane Single { Plane LLVector4 } } } // ObjectProperties // Extended information such as creator, permissions, etc. // Medium because potentially driven by mouse hover events. { ObjectProperties Medium 9 Trusted Zerocoded { ObjectData Variable { ObjectID LLUUID } { CreatorID LLUUID } { OwnerID LLUUID } { GroupID LLUUID } { CreationDate U64 } { BaseMask U32 } { OwnerMask U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { OwnershipCost S32 } // { TaxRate F32 } // F32 { SaleType U8 } // U8 -> EForSale { SalePrice S32 } { AggregatePerms U8 } { AggregatePermTextures U8 } { AggregatePermTexturesOwner U8 } { Category U32 } // LLCategory { InventorySerial S16 } // S16 { ItemID LLUUID } { FolderID LLUUID } { FromTaskID LLUUID } { LastOwnerID LLUUID } { Name Variable 1 } { Description Variable 1 } { TouchName Variable 1 } { SitName Variable 1 } { TextureID Variable 1 } } } // ObjectPropertiesFamily // Medium because potentially driven by mouse hover events. { ObjectPropertiesFamily Medium 10 Trusted Zerocoded { ObjectData Single { RequestFlags U32 } { ObjectID LLUUID } { OwnerID LLUUID } { GroupID LLUUID } { BaseMask U32 } { OwnerMask U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { OwnershipCost S32 } { SaleType U8 } // U8 -> EForSale { SalePrice S32 } { Category U32 } // LLCategory { LastOwnerID LLUUID } { Name Variable 1 } { Description Variable 1 } } } // RequestPayPrice // viewer -> sim { RequestPayPrice Low 161 NotTrusted Unencoded { ObjectData Single { ObjectID LLUUID } } } // PayPriceReply // sim -> viewer { PayPriceReply Low 162 Trusted Unencoded { ObjectData Single { ObjectID LLUUID } { DefaultPayPrice S32 } } { ButtonData Variable { PayButton S32 } } } // KickUser // *FIXME* // Kick off a logged-in user, such as when two people log in with the // same account name. // ROUTED dataserver -> userserver -> spaceserver -> simulator -> viewer // reliable, but that may not matter if a system component is quitting { KickUser Low 163 Trusted Unencoded { TargetBlock Single { TargetIP IPADDR } // U32 encoded IP { TargetPort IPPORT } } { UserInfo Single { AgentID LLUUID } { SessionID LLUUID } { Reason Variable 2 } // string } } // ack sent from the simulator up to the main database so that login // can continue. { KickUserAck Low 164 Trusted Unencoded { UserInfo Single { SessionID LLUUID } { Flags U32 } } } // GodKickUser // When a god wants someone kicked // viewer -> sim // reliable { GodKickUser Low 165 NotTrusted Unencoded { UserInfo Single { GodID LLUUID } { GodSessionID LLUUID } { AgentID LLUUID } { KickFlags U32 } { Reason Variable 2 } // string } } // SystemKickUser // user->space, reliable { SystemKickUser Low 166 Trusted Unencoded { AgentInfo Variable { AgentID LLUUID } } } // EjectUser // viewer -> sim // reliable { EjectUser Low 167 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { TargetID LLUUID } { Flags U32 } } } // FreezeUser // Freeze someone who is on my land. // viewer -> sim // reliable { FreezeUser Low 168 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { TargetID LLUUID } { Flags U32 } } } // AvatarPropertiesRequest // viewer -> simulator // reliable { AvatarPropertiesRequest Low 169 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { AvatarID LLUUID } } } // AvatarPropertiesRequestBackend // simulator -> dataserver // reliable { AvatarPropertiesRequestBackend Low 170 Trusted Unencoded { AgentData Single { AgentID LLUUID } { AvatarID LLUUID } { GodLevel U8 } { WebProfilesDisabled BOOL } } } // AvatarPropertiesReply // dataserver -> simulator // simulator -> viewer // reliable { AvatarPropertiesReply Low 171 Trusted Zerocoded { AgentData Single { AgentID LLUUID } // your id { AvatarID LLUUID } // avatar you're asking about } { PropertiesData Single { ImageID LLUUID } { FLImageID LLUUID } { PartnerID LLUUID } { AboutText Variable 2 } // string, up to 512 { FLAboutText Variable 1 } // string { BornOn Variable 1 } // string { ProfileURL Variable 1 } // string { CharterMember Variable 1 } // special - usually U8 { Flags U32 } } } { AvatarInterestsReply Low 172 Trusted Zerocoded { AgentData Single { AgentID LLUUID } // your id { AvatarID LLUUID } // avatar you're asking about } { PropertiesData Single { WantToMask U32 } { WantToText Variable 1 } // string { SkillsMask U32 } { SkillsText Variable 1 } // string { LanguagesText Variable 1 } // string } } // AvatarGroupsReply // dataserver -> simulator // simulator -> viewer // reliable { AvatarGroupsReply Low 173 Trusted Zerocoded { AgentData Single { AgentID LLUUID } // your id { AvatarID LLUUID } // avatar you're asking about } { GroupData Variable { GroupPowers U64 } { AcceptNotices BOOL } { GroupTitle Variable 1 } { GroupID LLUUID } { GroupName Variable 1 } { GroupInsigniaID LLUUID } } { NewGroupData Single { ListInProfile BOOL } // whether group displays in profile } } // AvatarPropertiesUpdate // viewer -> simulator // reliable { AvatarPropertiesUpdate Low 174 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { PropertiesData Single { ImageID LLUUID } { FLImageID LLUUID } { AboutText Variable 2 } // string, up to 512 { FLAboutText Variable 1 } { AllowPublish BOOL } // whether profile is externally visible or not { MaturePublish BOOL } // profile is "mature" { ProfileURL Variable 1 } // string } } // AvatarInterestsUpdate // viewer -> simulator // reliable { AvatarInterestsUpdate Low 175 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { PropertiesData Single { WantToMask U32 } { WantToText Variable 1 } // string { SkillsMask U32 } { SkillsText Variable 1 } // string { LanguagesText Variable 1 } // string } } // AvatarNotesReply // dataserver -> simulator // simulator -> viewer // reliable { AvatarNotesReply Low 176 Trusted Unencoded { AgentData Single { AgentID LLUUID } } { Data Single { TargetID LLUUID } { Notes Variable 2 } // string } } // AvatarNotesUpdate // viewer -> simulator -> dataserver // reliable { AvatarNotesUpdate Low 177 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { TargetID LLUUID } { Notes Variable 2 } // string } } // AvatarPicksReply // dataserver -> simulator -> viewer // Send the header information for this avatar's picks // This fills in the tabs of the Picks panel. // reliable { AvatarPicksReply Low 178 Trusted Unencoded { AgentData Single { AgentID LLUUID } { TargetID LLUUID } } { Data Variable { PickID LLUUID } { PickName Variable 1 } // string } } // EventInfoRequest // viewer -> simulator // simulator -> dataserver // reliable { EventInfoRequest Low 179 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { EventData Single { EventID U32 } } } // EventInfoReply // dataserver -> simulator // simulator -> viewer // reliable { EventInfoReply Low 180 Trusted Unencoded { AgentData Single { AgentID LLUUID } } { EventData Single { EventID U32 } { Creator Variable 1 } { Name Variable 1 } { Category Variable 1 } { Desc Variable 2 } { Date Variable 1 } { DateUTC U32 } { Duration U32 } { Cover U32 } { Amount U32 } { SimName Variable 1 } { GlobalPos LLVector3d } { EventFlags U32 } } } // EventNotificationAddRequest // viewer -> simulator // simulator -> dataserver // reliable { EventNotificationAddRequest Low 181 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { EventData Single { EventID U32 } } } // EventNotificationRemoveRequest // viewer -> simulator // simulator -> dataserver // reliable { EventNotificationRemoveRequest Low 182 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { EventData Single { EventID U32 } } } // EventGodDelete // viewer -> simulator // simulator -> dataserver // QueryData is used to resend a search result after the deletion // reliable { EventGodDelete Low 183 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { EventData Single { EventID U32 } } { QueryData Single { QueryID LLUUID } { QueryText Variable 1 } { QueryFlags U32 } { QueryStart S32 } // prev/next page support } } // PickInfoReply // dataserver -> simulator // simulator -> viewer // reliable { PickInfoReply Low 184 Trusted Unencoded { AgentData Single { AgentID LLUUID } } { Data Single { PickID LLUUID } { CreatorID LLUUID } { TopPick BOOL } { ParcelID LLUUID } { Name Variable 1 } { Desc Variable 2 } { SnapshotID LLUUID } { User Variable 1 } { OriginalName Variable 1 } { SimName Variable 1 } { PosGlobal LLVector3d } { SortOrder S32 } { Enabled BOOL } } } // PickInfoUpdate // Update a pick. ParcelID is set on the simulator as the message // passes through. // If TopPick is TRUE, the simulator will only pass on the message // if the agent_id is a god. // viewer -> simulator -> dataserver // reliable { PickInfoUpdate Low 185 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { PickID LLUUID } { CreatorID LLUUID } { TopPick BOOL } { ParcelID LLUUID } { Name Variable 1 } { Desc Variable 2 } { SnapshotID LLUUID } { PosGlobal LLVector3d } { SortOrder S32 } { Enabled BOOL } } } // PickDelete // Delete a non-top pick from the database. // viewer -> simulator -> dataserver // reliable { PickDelete Low 186 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { PickID LLUUID } } } // PickGodDelete // Delete a pick from the database. // QueryID is needed so database can send a repeat list of // picks. // viewer -> simulator -> dataserver // reliable { PickGodDelete Low 187 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { PickID LLUUID } { QueryID LLUUID } } } // ScriptQuestion // reliable { ScriptQuestion Low 188 Trusted Unencoded { Data Single { TaskID LLUUID } { ItemID LLUUID } { ObjectName Variable 1 } { ObjectOwner Variable 1 } { Questions S32 } } } // ScriptControlChange // reliable { ScriptControlChange Low 189 Trusted Unencoded { Data Variable { TakeControls BOOL } { Controls U32 } { PassToAgent BOOL } } } // ScriptDialog // sim -> viewer // reliable { ScriptDialog Low 190 Trusted Zerocoded { Data Single { ObjectID LLUUID } { FirstName Variable 1 } { LastName Variable 1 } { ObjectName Variable 1 } { Message Variable 2 } { ChatChannel S32 } { ImageID LLUUID } } { Buttons Variable { ButtonLabel Variable 1 } } } // ScriptDialogReply // viewer -> sim // reliable { ScriptDialogReply Low 191 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { ObjectID LLUUID } { ChatChannel S32 } { ButtonIndex S32 } { ButtonLabel Variable 1 } } } // ForceScriptControlRelease // reliable { ForceScriptControlRelease Low 192 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } // RevokePermissions // reliable { RevokePermissions Low 193 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { ObjectID LLUUID } { ObjectPermissions U32 } } } // LoadURL // sim -> viewer // Ask the user if they would like to load a URL // reliable { LoadURL Low 194 Trusted Unencoded { Data Single { ObjectName Variable 1 } { ObjectID LLUUID } { OwnerID LLUUID } { OwnerIsGroup BOOL } { Message Variable 1 } { URL Variable 1 } } } // ScriptTeleportRequest // reliable { ScriptTeleportRequest Low 195 Trusted Unencoded { Data Single { ObjectName Variable 1 } { SimName Variable 1 } { SimPosition LLVector3 } { LookAt LLVector3 } } } // *************************************************************************** // Land Parcel system // *************************************************************************** // ParcelOverlay // We send N packets per region to the viewer. // N = 4, currently. At 256x256 meter regions, 4x4 meter parcel grid, // there are 4096 parcel units per region. At N = 4, that's 1024 units // per packet, allowing 8 bit bytes. // sim -> viewer // reliable { ParcelOverlay Low 196 Trusted Zerocoded { ParcelData Single { SequenceID S32 } // 0...3, which piece of region { Data Variable 2 } // packed bit-field, (grids*grids)/N } } // ParcelPropertiesRequest // SequenceID should be -1 or -2, and is echoed back in the // parcel properties message. // viewer -> sim // reliable { ParcelPropertiesRequest Medium 11 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { SequenceID S32 } { West F32 } { South F32 } { East F32 } { North F32 } { SnapSelection BOOL } } } // ParcelPropertiesRequestByID // viewer -> sim // reliable { ParcelPropertiesRequestByID Low 197 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { SequenceID S32 } { LocalID S32 } } } // ParcelProperties // sequence id = -1 for parcels that you explicitly selected // For agents, sequence id increments every time the agent transits into // a new parcel. It is used to detect out-of-order agent parcel info updates. // Bitmap = packed bit field, one bit per parcel grid, on if that grid is // part of the selected parcel. // sim -> viewer // WARNING: This packet is potentially large. With max length name, // description, music URL and media URL, it is 1526 + sizeof ( LLUUID ) bytes. { ParcelProperties High 23 Trusted Zerocoded { ParcelData Single { RequestResult S32 } { SequenceID S32 } { SnapSelection BOOL } { SelfCount S32 } { OtherCount S32 } { PublicCount S32 } { LocalID S32 } { OwnerID LLUUID } { IsGroupOwned BOOL } { AuctionID U32 } { ClaimDate S32 } // time_t { ClaimPrice S32 } { RentPrice S32 } { AABBMin LLVector3 } { AABBMax LLVector3 } { Bitmap Variable 2 } // packed bit-field { Area S32 } { Status U8 } // owned vs. pending { SimWideMaxPrims S32 } { SimWideTotalPrims S32 } { MaxPrims S32 } { TotalPrims S32 } { OwnerPrims S32 } { GroupPrims S32 } { OtherPrims S32 } { SelectedPrims S32 } { ParcelPrimBonus F32 } { OtherCleanTime S32 } { ParcelFlags U32 } { SalePrice S32 } { Name Variable 1 } // string { Desc Variable 1 } // string { MusicURL Variable 1 } // string { MediaURL Variable 1 } // string { MediaID LLUUID } { MediaAutoScale U8 } { GroupID LLUUID } { PassPrice S32 } { PassHours F32 } { Category U8 } { AuthBuyerID LLUUID } { SnapshotID LLUUID } { UserLocation LLVector3 } { UserLookAt LLVector3 } { LandingType U8 } { RegionPushOverride BOOL } { RegionDenyAnonymous BOOL } { RegionDenyIdentified BOOL } { RegionDenyTransacted BOOL } } { AgeVerificationBlock Single { RegionDenyAgeUnverified BOOL } } } // ParcelPropertiesUpdate // viewer -> sim // reliable { ParcelPropertiesUpdate Low 198 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } { Flags U32 } { ParcelFlags U32 } { SalePrice S32 } { Name Variable 1 } // string { Desc Variable 1 } // string { MusicURL Variable 1 } // string { MediaURL Variable 1 } // string { MediaID LLUUID } { MediaAutoScale U8 } { GroupID LLUUID } { PassPrice S32 } { PassHours F32 } { Category U8 } { AuthBuyerID LLUUID } { SnapshotID LLUUID } { UserLocation LLVector3 } { UserLookAt LLVector3 } { LandingType U8 } } } // ParcelReturnObjects // viewer -> sim // reliable { ParcelReturnObjects Low 199 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } { ReturnType U32 } } { TaskIDs Variable { TaskID LLUUID } } { OwnerIDs Variable { OwnerID LLUUID } } } // ParcelSetOtherCleanTime // viewer -> sim // reliable { ParcelSetOtherCleanTime Low 200 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } { OtherCleanTime S32 } } } // Disable makes objects nonphysical and turns off their scripts. // ParcelDisableObjects // viewer -> sim // reliable { ParcelDisableObjects Low 201 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } { ReturnType U32 } } { TaskIDs Variable { TaskID LLUUID } } { OwnerIDs Variable { OwnerID LLUUID } } } // ParcelSelectObjects // viewer -> sim // reliable { ParcelSelectObjects Low 202 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } { ReturnType U32 } } { ReturnIDs Variable { ReturnID LLUUID } } } // EstateCovenantRequest // viewer -> sim // reliable { EstateCovenantRequest Low 203 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } // EstateCovenantReply // sim -> viewer // reliable { EstateCovenantReply Low 204 Trusted Unencoded { Data Single { CovenantID LLUUID } { CovenantTimestamp U32 } { EstateName Variable 1 } // string { EstateOwnerID LLUUID } } } // ForceObjectSelect // sim -> viewer // reliable { ForceObjectSelect Low 205 Trusted Unencoded { Header Single { ResetList BOOL } } { Data Variable { LocalID U32 } } } // ParcelBuyPass - purchase a temporary access pass // viewer -> sim // reliable { ParcelBuyPass Low 206 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } } } // ParcelDeedToGroup - deed a patch of land to a group // viewer -> sim // reliable { ParcelDeedToGroup Low 207 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { GroupID LLUUID } { LocalID S32 } // parcel id } } // reserved for when island owners force re-claim parcel { ParcelReclaim Low 208 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { LocalID S32 } // parcel id } } // ParcelClaim - change the owner of a patch of land // viewer -> sim // reliable { ParcelClaim Low 209 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { GroupID LLUUID } { IsGroupOwned BOOL } { Final BOOL } // true if buyer is in tier } { ParcelData Variable { West F32 } { South F32 } { East F32 } { North F32 } } } // ParcelJoin - Take all parcels which are owned by agent and inside // rectangle, and make them 1 parcel if they all are leased. // viewer -> sim // reliable { ParcelJoin Low 210 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { West F32 } { South F32 } { East F32 } { North F32 } } } // ParcelDivide // If the selection is a subsection of exactly one parcel, // chop out that section and make a new parcel of it. // viewer -> sim // reliable { ParcelDivide Low 211 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { West F32 } { South F32 } { East F32 } { North F32 } } } // ParcelRelease // Release a parcel to public // viewer -> sim // reliable { ParcelRelease Low 212 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { LocalID S32 } // parcel ID } } // ParcelBuy - change the owner of a patch of land. // viewer -> sim // reliable { ParcelBuy Low 213 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { GroupID LLUUID } { IsGroupOwned BOOL } { RemoveContribution BOOL } { LocalID S32 } { Final BOOL } // true if buyer is in tier } { ParcelData Single { Price S32 } { Area S32 } } } // ParcelGodForceOwner Unencoded { ParcelGodForceOwner Low 214 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { OwnerID LLUUID } { LocalID S32 } // parcel ID } } // viewer -> sim // ParcelAccessListRequest { ParcelAccessListRequest Low 215 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { SequenceID S32 } { Flags U32 } { LocalID S32 } } } // sim -> viewer // ParcelAccessListReply { ParcelAccessListReply Low 216 Trusted Zerocoded { Data Single { AgentID LLUUID } { SequenceID S32 } { Flags U32 } { LocalID S32 } } { List Variable { ID LLUUID } { Time S32 } // time_t { Flags U32 } } } // viewer -> sim // ParcelAccessListUpdate { ParcelAccessListUpdate Low 217 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { Flags U32 } { LocalID S32 } { TransactionID LLUUID } { SequenceID S32 } { Sections S32 } } { List Variable { ID LLUUID } { Time S32 } // time_t { Flags U32 } } } // viewer -> sim -> dataserver // reliable { ParcelDwellRequest Low 218 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { LocalID S32 } { ParcelID LLUUID } // filled in on sim } } // dataserver -> sim -> viewer // reliable { ParcelDwellReply Low 219 Trusted Unencoded { AgentData Single { AgentID LLUUID } } { Data Single { LocalID S32 } { ParcelID LLUUID } { Dwell F32 } } } // sim -> dataserver // This message is used to check if a user can buy a parcel. If // successful, the transaction is approved through a money balance reply // with the same transaction id. { RequestParcelTransfer Low 220 Trusted Zerocoded { Data Single { TransactionID LLUUID } { TransactionTime U32 } // utc seconds since epoch { SourceID LLUUID } { DestID LLUUID } { OwnerID LLUUID } { Flags U8 } // see lltransactiontypes.h { TransactionType S32 } // see lltransactiontypes.h { Amount S32 } { BillableArea S32 } { ActualArea S32 } { Final BOOL } // true if buyer should be in tier } { RegionData Single // included so region name shows up in transaction logs { RegionID LLUUID } { GridX U32 } { GridY U32 } } } // sim ->dataserver // This message is used to send up complete parcel properties for // persistance in the database. // If you add something here, you should probably also change the // simulator's database update query on startup. { UpdateParcel Low 221 Trusted Zerocoded { ParcelData Single { ParcelID LLUUID } { RegionHandle U64 } { OwnerID LLUUID } { GroupOwned BOOL } { Status U8 } { Name Variable 1 } { Description Variable 1 } { MusicURL Variable 1 } { RegionX F32 } { RegionY F32 } { ActualArea S32 } { BillableArea S32 } { ShowDir BOOL } { IsForSale BOOL } { Category U8 } { SnapshotID LLUUID } { UserLocation LLVector3 } { SalePrice S32 } { AuthorizedBuyerID LLUUID } { AllowPublish BOOL } { MaturePublish BOOL } } } // sim -> dataserver or space ->sim // This message is used to tell the dataserver that a parcel has been // removed. { RemoveParcel Low 222 Trusted Unencoded { ParcelData Variable { ParcelID LLUUID } } } // sim -> dataserver // Merges some of the database information for parcels (dwell). { MergeParcel Low 223 Trusted Unencoded { MasterParcelData Single { MasterID LLUUID } } { SlaveParcelData Variable { SlaveID LLUUID } } } // sim -> dataserver { LogParcelChanges Low 224 Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { RegionData Single { RegionHandle U64 } } { ParcelData Variable { ParcelID LLUUID } { OwnerID LLUUID } { IsOwnerGroup BOOL } { ActualArea S32 } { Action S8 } { TransactionID LLUUID } } } // sim -> dataserver { CheckParcelSales Low 225 Trusted Unencoded { RegionData Variable { RegionHandle U64 } } } // dataserver -> simulator // tell a particular simulator to finish parcel sale. { ParcelSales Low 226 Trusted Unencoded { ParcelData Variable { ParcelID LLUUID } { BuyerID LLUUID } } } // viewer -> sim // mark parcel and double secret agent content on parcel as owned by // governor/maint and adjusts permissions approriately. Godlike request. { ParcelGodMarkAsContent Low 227 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } } } // viewer -> sim // start an auction. viewer fills in the appropriate date, simulator // validates and fills in the rest of the information to start an auction // on a parcel. Processing currently requires that AgentID is a god. { ViewerStartAuction Low 228 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } { SnapshotID LLUUID } } } // sim -> dataserver // Once all of the data has been gathered, { StartAuction Low 229 Trusted Unencoded { AgentData Single { AgentID LLUUID } } { ParcelData Single { ParcelID LLUUID } { SnapshotID LLUUID } { Name Variable 1 } // string } } // dataserver -> sim { ConfirmAuctionStart Low 230 Trusted Unencoded { AuctionData Single { ParcelID LLUUID } { AuctionID U32 } } } // sim -> dataserver // Tell the dataserver that an auction has completed. { CompleteAuction Low 231 Trusted Unencoded { ParcelData Variable { ParcelID LLUUID } } } // Tell the dataserver that an auction has been canceled. { CancelAuction Low 232 Trusted Unencoded { ParcelData Variable { ParcelID LLUUID } } } // sim -> dataserver { CheckParcelAuctions Low 233 Trusted Unencoded { RegionData Variable { RegionHandle U64 } } } // dataserver -> sim // tell a particular simulator to finish parcel sale. { ParcelAuctions Low 234 Trusted Unencoded { ParcelData Variable { ParcelID LLUUID } { WinnerID LLUUID } } } // *************************************************************************** // UUID to name lookup // *************************************************************************** // UUIDNameRequest // Translate a UUID into first and last names { UUIDNameRequest Low 235 NotTrusted Unencoded { UUIDNameBlock Variable { ID LLUUID } } } // UUIDNameReply // Translate a UUID into first and last names { UUIDNameReply Low 236 Trusted Unencoded { UUIDNameBlock Variable { ID LLUUID } { FirstName Variable 1 } { LastName Variable 1 } } } // UUIDGroupNameRequest // Translate a UUID into a group name { UUIDGroupNameRequest Low 237 NotTrusted Unencoded { UUIDNameBlock Variable { ID LLUUID } } } // UUIDGroupNameReply // Translate a UUID into a group name { UUIDGroupNameReply Low 238 Trusted Unencoded { UUIDNameBlock Variable { ID LLUUID } { GroupName Variable 1 } } } // end uuid to name lookup // *************************************************************************** // Simulator to Simulator Messages // *************************************************************************** // ChatPass // Chat message transmission to neighbors // Chat is region local to receiving simulator. // Type is one of CHAT_TYPE_NORMAL, _WHISPER, _SHOUT { ChatPass Low 239 Trusted Zerocoded { ChatData Single { Channel S32 } { Position LLVector3 } { ID LLUUID } { OwnerID LLUUID } { Name Variable 1 } { SourceType U8 } { Type U8 } { Radius F32 } { SimAccess U8 } { Message Variable 2 } } } // Edge data - compressed edge data { EdgeDataPacket High 24 Trusted Zerocoded { EdgeData Single { LayerType U8 } { Direction U8 } { LayerData Variable 2 } } } // Sim status, condition of this sim // sent reliably, when dirty { SimStatus Medium 12 Trusted Unencoded { SimStatus Single { CanAcceptAgents BOOL } { CanAcceptTasks BOOL } } } // Child Agent Update - agents send child agents to neighboring simulators. // This will create a child camera if there isn't one at the target already // Can't send viewer IP and port between simulators -- the port may get remapped // if the viewer is behind a Network Address Translation (NAT) box. // // Note: some of the fields of this message really only need to be sent when an // agent crosses a region boundary and changes from a child to a main agent // (such as Head/BodyRotation, ControlFlags, Animations etc) // simulator -> simulator // reliable { ChildAgentUpdate High 25 Trusted Zerocoded { AgentData Single { RegionHandle U64 } { ViewerCircuitCode U32 } { AgentID LLUUID } { SessionID LLUUID } { AgentPos LLVector3 } { AgentVel LLVector3 } { Center LLVector3 } { Size LLVector3 } { AtAxis LLVector3 } { LeftAxis LLVector3 } { UpAxis LLVector3 } { ChangedGrid BOOL } // BOOL { Far F32 } { Aspect F32 } { Throttles Variable 1 } { LocomotionState U32 } { HeadRotation LLQuaternion } { BodyRotation LLQuaternion } { ControlFlags U32 } { EnergyLevel F32 } { GodLevel U8 } // Changed from BOOL to U8, and renamed GodLevel (from Godlike) { AlwaysRun BOOL } { PreyAgent LLUUID } { AgentAccess U8 } { AgentTextures Variable 2 } { ActiveGroupID LLUUID } } { GroupData Variable { GroupID LLUUID } { GroupPowers U64 } { AcceptNotices BOOL } } { AnimationData Variable { Animation LLUUID } { ObjectID LLUUID } } { GranterBlock Variable { GranterID LLUUID } } { NVPairData Variable { NVPairs Variable 2 } } { VisualParam Variable { ParamValue U8 } } { AgentAccess Variable { AgentLegacyAccess U8 } { AgentMaxAccess U8 } } } // ChildAgentAlive // sent to child agents just to keep them alive { ChildAgentAlive High 26 Trusted Unencoded { AgentData Single { RegionHandle U64 } { ViewerCircuitCode U32 } { AgentID LLUUID } { SessionID LLUUID } } } // ChildAgentPositionUpdate // sent to child agents just to keep them alive { ChildAgentPositionUpdate High 27 Trusted Unencoded { AgentData Single { RegionHandle U64 } { ViewerCircuitCode U32 } { AgentID LLUUID } { SessionID LLUUID } { AgentPos LLVector3 } { AgentVel LLVector3 } { Center LLVector3 } { Size LLVector3 } { AtAxis LLVector3 } { LeftAxis LLVector3 } { UpAxis LLVector3 } { ChangedGrid BOOL } } } // Obituary for child agents - make sure the parent know the child is dead // This way, children can be reliably restarted { ChildAgentDying Low 240 Trusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } // This is sent if a full child agent hasn't been accepted yet { ChildAgentUnknown Low 241 Trusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } // This message is sent how objects get passed between regions. { AtomicPassObject High 28 Trusted Unencoded { TaskData Single { TaskID LLUUID } { AttachmentNeedsSave BOOL } // true iff is attachment and needs asset saved } } // KillChildAgents - A new agent has connected to the simulator . . . make sure that any old child cameras are blitzed { KillChildAgents Low 242 Trusted Unencoded { IDBlock Single { AgentID LLUUID } } } // GetScriptRunning - asks if a script is running or not. the simulator // responds with ScriptRunningReply { GetScriptRunning Low 243 NotTrusted Unencoded { Script Single { ObjectID LLUUID } { ItemID LLUUID } } } // ScriptRunningReply - response from simulator to message above { ScriptRunningReply Low 244 NotTrusted Unencoded UDPDeprecated { Script Single { ObjectID LLUUID } { ItemID LLUUID } { Running BOOL } // { Mono BOOL } Added to LLSD message } } // SetScriptRunning - makes a script active or inactive (Enable may be // true or false) { SetScriptRunning Low 245 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Script Single { ObjectID LLUUID } { ItemID LLUUID } { Running BOOL } } } // ScriptReset - causes a script to reset { ScriptReset Low 246 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Script Single { ObjectID LLUUID } { ItemID LLUUID } } } // ScriptSensorRequest - causes the receiving sim to run a script sensor and return the results { ScriptSensorRequest Low 247 Trusted Zerocoded { Requester Single { SourceID LLUUID } { RequestID LLUUID } { SearchID LLUUID } { SearchPos LLVector3 } { SearchDir LLQuaternion } { SearchName Variable 1 } { Type S32 } { Range F32 } { Arc F32 } { RegionHandle U64 } { SearchRegions U8 } } } // ScriptSensorReply - returns the request script search information back to the requester { ScriptSensorReply Low 248 Trusted Zerocoded { Requester Single { SourceID LLUUID } } { SensedData Variable { ObjectID LLUUID } { OwnerID LLUUID } { GroupID LLUUID } { Position LLVector3 } { Velocity LLVector3 } { Rotation LLQuaternion } { Name Variable 1 } { Type S32 } { Range F32 } } } //----------------------------------------------------------------------------- // Login and Agent Motion //----------------------------------------------------------------------------- // viewer -> sim // agent is coming into the region. The region should be expecting the // agent. { CompleteAgentMovement Low 249 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { CircuitCode U32 } } } // sim -> viewer { AgentMovementComplete Low 250 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { Position LLVector3 } { LookAt LLVector3 } { RegionHandle U64 } { Timestamp U32 } } { SimData Single { ChannelVersion Variable 2 } } } //----------------------------------------------------------------------------- // Logout //----------------------------------------------------------------------------- // userserver -> dataserver { DataServerLogout Low 251 Trusted Unencoded { UserData Single { AgentID LLUUID } { ViewerIP IPADDR } { Disconnect BOOL } { SessionID LLUUID } } } // LogoutRequest // viewer -> sim // reliable { LogoutRequest Low 252 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } // LogoutReply // it's ok for the viewer to quit. // sim -> viewer // reliable // Includes inventory items to update with new asset ids { LogoutReply Low 253 Trusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { InventoryData Variable { ItemID LLUUID } // null if list is actually empty (but has one entry 'cause it can't have none) } } //----------------------------------------------------------------------------- // Instant Message //----------------------------------------------------------------------------- // ImprovedInstantMessage // This message can potentially route all over the place // ParentEstateID: parent estate id of the source estate // RegionID: region id of the source of the IM. // Position: position of the sender in region local coordinates // Dialog see llinstantmessage.h for values // ID May be used by dialog. Interpretation depends on context. // BinaryBucket May be used by some dialog types // reliable { ImprovedInstantMessage Low 254 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { MessageBlock Single { FromGroup BOOL } { ToAgentID LLUUID } { ParentEstateID U32 } { RegionID LLUUID } { Position LLVector3 } { Offline U8 } { Dialog U8 } // U8 - IM type { ID LLUUID } { Timestamp U32 } { FromAgentName Variable 1 } { Message Variable 2 } { BinaryBucket Variable 2 } } } // RetrieveInstantMessages - used to get instant messages that // were persisted out to the database while the user was offline { RetrieveInstantMessages Low 255 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } // FindAgent - used to find an agent's global position. I used a // variable sized LocationBlock so that the message can be recycled with // minimum new messages and handlers. { FindAgent Low 256 NotTrusted Unencoded { AgentBlock Single { Hunter LLUUID } { Prey LLUUID } { SpaceIP IPADDR } } { LocationBlock Variable { GlobalX F64 } { GlobalY F64 } } } // Set godlike to 1 if you want to become godlike. // Set godlike to 0 if you want to relinquish god powers. // viewer -> simulator -> dataserver // reliable { RequestGodlikePowers Low 257 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { RequestBlock Single { Godlike BOOL } { Token LLUUID } // viewer packs a null, sim packs token } } // At the simulator, turn the godlike bit on. // At the viewer, show the god menu. // dataserver -> simulator -> viewer // reliable { GrantGodlikePowers Low 258 Trusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { GrantData Single { GodLevel U8 } { Token LLUUID } // checked on sim, ignored on viewer } } // GodlikeMessage - generalized construct for Gods to send messages // around the system. Each Request has it's own internal protocol. { GodlikeMessage Low 259 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { TransactionID LLUUID } } { MethodData Single { Method Variable 1 } { Invoice LLUUID } } { ParamList Variable { Parameter Variable 1 } } } // EstateOwnerMessage // format must be identical to above { EstateOwnerMessage Low 260 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { TransactionID LLUUID } } { MethodData Single { Method Variable 1 } { Invoice LLUUID } } { ParamList Variable { Parameter Variable 1 } } } // GenericMessage // format must be identical to above // As above, but don't have to be god or estate owner to send. { GenericMessage Low 261 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { TransactionID LLUUID } } { MethodData Single { Method Variable 1 } { Invoice LLUUID } } { ParamList Variable { Parameter Variable 1 } } } // *************************************************************************** // Requests for possessions, acquisition, money, etc // *************************************************************************** // request for mute list { MuteListRequest Low 262 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { MuteData Single { MuteCRC U32 } } } // update/add someone in the mute list { UpdateMuteListEntry Low 263 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { MuteData Single { MuteID LLUUID } { MuteName Variable 1 } { MuteType S32 } { MuteFlags U32 } } } // Remove a mute list entry. { RemoveMuteListEntry Low 264 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { MuteData Single { MuteID LLUUID } { MuteName Variable 1 } } } // // Inventory update messages // UDP DEPRECATED - Now a viewer capability. { CopyInventoryFromNotecard Low 265 NotTrusted Zerocoded UDPDeprecated { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { NotecardData Single { NotecardItemID LLUUID } { ObjectID LLUUID } } { InventoryData Variable { ItemID LLUUID } { FolderID LLUUID } } } // // This is used bi-directionally between sim, dataserver, and viewer. // THIS MESSAGE CAN NOT CREATE NEW INVENTORY ITEMS. // { UpdateInventoryItem Low 266 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { TransactionID LLUUID } } { InventoryData Variable { ItemID LLUUID } { FolderID LLUUID } { CallbackID U32 } // Async Response { CreatorID LLUUID } // permissions { OwnerID LLUUID } // permissions { GroupID LLUUID } // permissions { BaseMask U32 } // permissions { OwnerMask U32 } // permissions { GroupMask U32 } // permissions { EveryoneMask U32 } // permissions { NextOwnerMask U32 } // permissions { GroupOwned BOOL } // permissions { TransactionID LLUUID } // TransactionID: new assets only { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } } // // For sim to request update/create. // DO NOT ALLOW THIS FROM THE VIEWER. // { UpdateCreateInventoryItem Low 267 Trusted Zerocoded { AgentData Single { AgentID LLUUID } { SimApproved BOOL } { TransactionID LLUUID } } { InventoryData Variable { ItemID LLUUID } { FolderID LLUUID } { CallbackID U32 } // Async Response { CreatorID LLUUID } // permissions { OwnerID LLUUID } // permissions { GroupID LLUUID } // permissions { BaseMask U32 } // permissions { OwnerMask U32 } // permissions { GroupMask U32 } // permissions { EveryoneMask U32 } // permissions { NextOwnerMask U32 } // permissions { GroupOwned BOOL } // permissions { AssetID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } } { MoveInventoryItem Low 268 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { Stamp BOOL } // should the server re-timestamp? } { InventoryData Variable { ItemID LLUUID } { FolderID LLUUID } { NewName Variable 1 } } } // copy inventory item by item id to specified destination folder, // send out bulk inventory update when done. // // Inventory items are only unique for {agent, inv_id} pairs; // the OldItemID needs to be paired with the OldAgentID to // produce a unique inventory item. { CopyInventoryItem Low 269 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { InventoryData Variable { CallbackID U32 } // Async response { OldAgentID LLUUID } { OldItemID LLUUID } { NewFolderID LLUUID } { NewName Variable 1 } } } { RemoveInventoryItem Low 270 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { InventoryData Variable { ItemID LLUUID } } } { ChangeInventoryItemFlags Low 271 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { InventoryData Variable { ItemID LLUUID } { Flags U32 } } } // // Sim outgoing only (to dataserver, to viewer) // NOT viewer to sim, sim should not have handler, ever // This message is currently only uses objects, so the viewer ignores // the asset id. { SaveAssetIntoInventory Low 272 Trusted Unencoded { AgentData Single { AgentID LLUUID } } { InventoryData Single { ItemID LLUUID } { NewAssetID LLUUID } } } { CreateInventoryFolder Low 273 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { FolderData Single { FolderID LLUUID } { ParentID LLUUID } { Type S8 } { Name Variable 1 } } } { UpdateInventoryFolder Low 274 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { FolderData Variable { FolderID LLUUID } { ParentID LLUUID } { Type S8 } { Name Variable 1 } } } { MoveInventoryFolder Low 275 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { Stamp BOOL } // should the server re-timestamp children } { InventoryData Variable { FolderID LLUUID } { ParentID LLUUID } } } { RemoveInventoryFolder Low 276 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { FolderData Variable { FolderID LLUUID } } } // Get inventory segment. { FetchInventoryDescendents Low 277 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { InventoryData Single { FolderID LLUUID } { OwnerID LLUUID } { SortOrder S32 } // 0 = name, 1 = time { FetchFolders BOOL } // false will omit folders in query { FetchItems BOOL } // false will omit items in query } } // return inventory segment. // *NOTE: This could be compressed more since we already know the // parent_id for folders and the folder_id for items, but this is // reasonable until we heve server side inventory. { InventoryDescendents Low 278 Trusted Zerocoded { AgentData Single { AgentID LLUUID } { FolderID LLUUID } { OwnerID LLUUID } // owner of the folders creatd. { Version S32 } // version of the folder for caching { Descendents S32 } // count to help with caching } { FolderData Variable { FolderID LLUUID } { ParentID LLUUID } { Type S8 } { Name Variable 1 } } { ItemData Variable { ItemID LLUUID } { FolderID LLUUID } { CreatorID LLUUID } // permissions { OwnerID LLUUID } // permissions { GroupID LLUUID } // permissions { BaseMask U32 } // permissions { OwnerMask U32 } // permissions { GroupMask U32 } // permissions { EveryoneMask U32 } // permissions { NextOwnerMask U32 } // permissions { GroupOwned BOOL } // permissions { AssetID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } } // Get inventory item(s) - response comes through FetchInventoryReply { FetchInventory Low 279 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { InventoryData Variable { OwnerID LLUUID } { ItemID LLUUID } } } // response to fetch inventory { FetchInventoryReply Low 280 Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { InventoryData Variable { ItemID LLUUID } { FolderID LLUUID } { CreatorID LLUUID } // permissions { OwnerID LLUUID } // permissions { GroupID LLUUID } // permissions { BaseMask U32 } // permissions { OwnerMask U32 } // permissions { GroupMask U32 } // permissions { EveryoneMask U32 } // permissions { NextOwnerMask U32 } // permissions { GroupOwned BOOL } // permissions { AssetID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } } // Can only fit around 7 items per packet - that's the way it goes. At // least many bulk updates can be packed. // Only from dataserver->sim->viewer { BulkUpdateInventory Low 281 Trusted Zerocoded { AgentData Single { AgentID LLUUID } { TransactionID LLUUID } } { FolderData Variable { FolderID LLUUID } { ParentID LLUUID } { Type S8 } { Name Variable 1 } } { ItemData Variable { ItemID LLUUID } { CallbackID U32 } // Async Response { FolderID LLUUID } { CreatorID LLUUID } // permissions { OwnerID LLUUID } // permissions { GroupID LLUUID } // permissions { BaseMask U32 } // permissions { OwnerMask U32 } // permissions { GroupMask U32 } // permissions { EveryoneMask U32 } // permissions { NextOwnerMask U32 } // permissions { GroupOwned BOOL } // permissions { AssetID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } } // request permissions for agent id to get the asset for owner_id's // item_id. { RequestInventoryAsset Low 282 Trusted Unencoded { QueryData Single { QueryID LLUUID } { AgentID LLUUID } { OwnerID LLUUID } { ItemID LLUUID } } } // response to RequestInventoryAsset // lluuid will be null if agentid in the request above cannot read asset { InventoryAssetResponse Low 283 Trusted Unencoded { QueryData Single { QueryID LLUUID } { AssetID LLUUID } { IsReadable BOOL } } } // This is the new improved way to remove inventory items. It is // currently only supported in viewer->userserver->dataserver // messages typically initiated by an empty trash method. { RemoveInventoryObjects Low 284 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { FolderData Variable { FolderID LLUUID } } { ItemData Variable { ItemID LLUUID } } } // This is how you remove inventory when you're not even sure what it // is - only it's parenting. { PurgeInventoryDescendents Low 285 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { InventoryData Single { FolderID LLUUID } } } // These messages are viewer->simulator requests to update a task's // inventory. // if Key == 0, itemid is the key. if Key == 1, assetid is the key. { UpdateTaskInventory Low 286 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { UpdateData Single { LocalID U32 } { Key U8 } } { InventoryData Single { ItemID LLUUID } { FolderID LLUUID } { CreatorID LLUUID } // permissions { OwnerID LLUUID } // permissions { GroupID LLUUID } // permissions { BaseMask U32 } // permissions { OwnerMask U32 } // permissions { GroupMask U32 } // permissions { EveryoneMask U32 } // permissions { NextOwnerMask U32 } // permissions { GroupOwned BOOL } // permissions { TransactionID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } } { RemoveTaskInventory Low 287 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { InventoryData Single { LocalID U32 } { ItemID LLUUID } } } { MoveTaskInventory Low 288 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { FolderID LLUUID } } { InventoryData Single { LocalID U32 } { ItemID LLUUID } } } { RequestTaskInventory Low 289 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { InventoryData Single { LocalID U32 } } } { ReplyTaskInventory Low 290 Trusted Zerocoded { InventoryData Single { TaskID LLUUID } { Serial S16 } // S16 { Filename Variable 1 } } } // These messages are viewer->simulator requests regarding objects // which are currently being simulated. The viewer will get an // UpdateInventoryItem response if a DeRez succeeds, and the object // will appear if a RezObject succeeds. // The Destination field tells where the derez should wind up, and the // meaning of DestinationID depends on it. For example, if the // destination is a category, then the destination is the category id. If // the destination is a task inventory, then the destination id is the // task id. // The transaction id is generated by the viewer on derez, and then // the packets are counted and numbered. The rest of the information is // just duplicated (it's not that much, and derezzes that span multiple // packets will be rare.) { DeRezObject Low 291 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { AgentBlock Single { GroupID LLUUID } { Destination U8 } { DestinationID LLUUID } // see above { TransactionID LLUUID } { PacketCount U8 } { PacketNumber U8 } } { ObjectData Variable { ObjectLocalID U32 } // object id in world } } // This message is sent when a derez succeeds, but there's no way to // know, since no inventory is created on the viewer. For example, when // saving into task inventory. { DeRezAck Low 292 Trusted Unencoded { TransactionData Single { TransactionID LLUUID } { Success BOOL } } } // This message is sent from viewer -> simulator when the viewer wants // to rez an object out of inventory. { RezObject Low 293 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } } { RezData Single { FromTaskID LLUUID } { BypassRaycast U8 } { RayStart LLVector3 } { RayEnd LLVector3 } { RayTargetID LLUUID } { RayEndIsIntersection BOOL } { RezSelected BOOL } { RemoveItem BOOL } { ItemFlags U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } } { InventoryData Single { ItemID LLUUID } { FolderID LLUUID } { CreatorID LLUUID } // permissions { OwnerID LLUUID } // permissions { GroupID LLUUID } // permissions { BaseMask U32 } // permissions { OwnerMask U32 } // permissions { GroupMask U32 } // permissions { EveryoneMask U32 } // permissions { NextOwnerMask U32 } // permissions { GroupOwned BOOL } // permissions { TransactionID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } } // This message is sent from viewer -> simulator when the viewer wants // to rez an object from a notecard. { RezObjectFromNotecard Low 294 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } } { RezData Single { FromTaskID LLUUID } { BypassRaycast U8 } { RayStart LLVector3 } { RayEnd LLVector3 } { RayTargetID LLUUID } { RayEndIsIntersection BOOL } { RezSelected BOOL } { RemoveItem BOOL } { ItemFlags U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } } { NotecardData Single { NotecardItemID LLUUID } { ObjectID LLUUID } } { InventoryData Variable { ItemID LLUUID } } } // sim -> dataserver // sent during agent to agent inventory transfers { TransferInventory Low 295 Trusted Zerocoded { InfoBlock Single { SourceID LLUUID } { DestID LLUUID } { TransactionID LLUUID } } { InventoryBlock Variable { InventoryID LLUUID } { Type S8 } } } // dataserver -> sim // InventoryID is the id of the inventory object that the end user // should discard if they deny the transfer. { TransferInventoryAck Low 296 Trusted Zerocoded { InfoBlock Single { TransactionID LLUUID } { InventoryID LLUUID } } } { AcceptFriendship Low 297 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { TransactionBlock Single { TransactionID LLUUID } } { FolderData Variable { FolderID LLUUID } // place to put calling card. } } { DeclineFriendship Low 298 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { TransactionBlock Single { TransactionID LLUUID } } } { FormFriendship Low 299 Trusted Unencoded { AgentBlock Single { SourceID LLUUID } { DestID LLUUID } } } // Cancels user relationship // Updates inventory for both users. // Stops agent tracking in userserver. // viewer -> userserver -> dataserver // reliable { TerminateFriendship Low 300 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ExBlock Single { OtherID LLUUID } } } // used to give someone a calling card. { OfferCallingCard Low 301 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { AgentBlock Single { DestID LLUUID } { TransactionID LLUUID } } } { AcceptCallingCard Low 302 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { TransactionBlock Single { TransactionID LLUUID } } { FolderData Variable { FolderID LLUUID } // place to put calling card. } } { DeclineCallingCard Low 303 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { TransactionBlock Single { TransactionID LLUUID } } } // Rez a script onto an object { RezScript Low 304 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } } { UpdateBlock Single { ObjectLocalID U32 } // object id in world { Enabled BOOL } // is script rezzed in enabled? } { InventoryBlock Single { ItemID LLUUID } { FolderID LLUUID } { CreatorID LLUUID } // permissions { OwnerID LLUUID } // permissions { GroupID LLUUID } // permissions { BaseMask U32 } // permissions { OwnerMask U32 } // permissions { GroupMask U32 } // permissions { EveryoneMask U32 } // permissions { NextOwnerMask U32 } // permissions { GroupOwned BOOL } // permissions { TransactionID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } } // Create inventory { CreateInventoryItem Low 305 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { InventoryBlock Single { CallbackID U32 } // Async Response { FolderID LLUUID } { TransactionID LLUUID } // Going to become TransactionID { NextOwnerMask U32 } { Type S8 } { InvType S8 } { WearableType U8 } { Name Variable 1 } { Description Variable 1 } } } // give agent a landmark for an event. { CreateLandmarkForEvent Low 306 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { EventData Single { EventID U32 } } { InventoryBlock Single { FolderID LLUUID } { Name Variable 1 } } } { EventLocationRequest Low 307 Trusted Zerocoded { QueryData Single { QueryID LLUUID } } { EventData Single { EventID U32 } } } { EventLocationReply Low 308 Trusted Zerocoded { QueryData Single { QueryID LLUUID } } { EventData Single { Success BOOL } { RegionID LLUUID } { RegionPos LLVector3 } } } // get information about landmarks. Used by viewers for determining // the location of a landmark, and by simulators for teleport { RegionHandleRequest Low 309 NotTrusted Unencoded { RequestBlock Single { RegionID LLUUID } } } { RegionIDAndHandleReply Low 310 Trusted Unencoded { ReplyBlock Single { RegionID LLUUID } { RegionHandle U64 } } } // Move money from one agent to another. Validation will happen at the // simulator, the dataserver will actually do the work. Dataserver // generates a MoneyBalance message in reply. The simulator // will generate a MoneyTransferBackend in response to this. // viewer -> simulator -> dataserver { MoneyTransferRequest Low 311 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { MoneyData Single { SourceID LLUUID } { DestID LLUUID } // destination of the transfer { Flags U8 } { Amount S32 } { AggregatePermNextOwner U8 } { AggregatePermInventory U8 } { TransactionType S32 } // see lltransactiontypes.h { Description Variable 1 } // string, name of item for purchases } } // And, the money transfer { MoneyTransferBackend Low 312 Trusted Zerocoded { MoneyData Single { TransactionID LLUUID } { TransactionTime U32 } // utc seconds since epoch { SourceID LLUUID } { DestID LLUUID } // destination of the transfer { Flags U8 } { Amount S32 } { AggregatePermNextOwner U8 } { AggregatePermInventory U8 } { TransactionType S32 } // see lltransactiontypes.h { RegionID LLUUID } // region sending the request, for logging { GridX U32 } // *HACK: database doesn't have region_id in schema { GridY U32 } // *HACK: database doesn't have region_id in schema { Description Variable 1 } // string, name of item for purchases } } // viewer -> userserver -> dataserver // Reliable { MoneyBalanceRequest Low 313 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { MoneyData Single { TransactionID LLUUID } } } // dataserver -> simulator -> viewer { MoneyBalanceReply Low 314 Trusted Zerocoded { MoneyData Single { AgentID LLUUID } { TransactionID LLUUID } { TransactionSuccess BOOL } // BOOL { MoneyBalance S32 } { SquareMetersCredit S32 } { SquareMetersCommitted S32 } { Description Variable 1 } // string } } // RoutedMoneyBalanceReply // This message is used when a dataserver needs to send updated // money balance information to a simulator other than the one it // is connected to. It uses the standard TransferBlock format. // dataserver -> simulator -> spaceserver -> simulator -> viewer // reliable { RoutedMoneyBalanceReply Low 315 Trusted Zerocoded { TargetBlock Single { TargetIP IPADDR } // U32 encoded IP { TargetPort IPPORT } } { MoneyData Single { AgentID LLUUID } { TransactionID LLUUID } { TransactionSuccess BOOL } // BOOL { MoneyBalance S32 } { SquareMetersCredit S32 } { SquareMetersCommitted S32 } { Description Variable 1 } // string } } //--------------------------------------------------------------------------- // Gesture saves/loads //--------------------------------------------------------------------------- // Tell the database that some gestures are now active // viewer -> sim -> data { ActivateGestures Low 316 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { Flags U32 } } { Data Variable { ItemID LLUUID } { AssetID LLUUID } { GestureFlags U32 } } } // Tell the database some gestures are no longer active // viewer -> sim -> data { DeactivateGestures Low 317 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { Flags U32 } } { Data Variable { ItemID LLUUID } { GestureFlags U32 } } } //--------------------------------------------------------------------------- // //--------------------------------------------------------------------------- // userserver -> viewer, up-to-date inventory is here // could be sent as a result of spam // as well as in response to InventoryRequest //{ // InventoryUpdate Low Trusted Unencoded // { // AgentData Single // { AgentID LLUUID } // } // { // InventoryData Single // { IsComplete U8 } // { Filename Variable 1 } // } //} // dataserver-> userserver -> viewer to move around the mute list { MuteListUpdate Low 318 Trusted Unencoded { MuteData Single { AgentID LLUUID } { Filename Variable 1 } } } // tell viewer to use the local mute cache { UseCachedMuteList Low 319 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } } // Sent from viewer to simulator to set user rights. This message will be // relayed up to the dataserver through a PUT. If that // succeeds, an UpdateUserRights will be relayed to the originating // viewer, and a presence lookup will be performed to find // agent-related and the same PUT will be issued to the sim host if // they are online. { GrantUserRights Low 320 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Rights Variable { AgentRelated LLUUID } { RelatedRights S32 } } } // This message is sent from the simulator to the viewer to indicate a // targets granted rights. This is only sent to the originator of the // request and the target agent if it is a modify or map // right. Adding/removing online status rights will show up as an // online/offline notification. { ChangeUserRights Low 321 Trusted Unencoded { AgentData Single { AgentID LLUUID } } { Rights Variable { AgentRelated LLUUID } { RelatedRights S32 } } } // notification for login and logout. // source_sim -> dest_viewer { OnlineNotification Low 322 Trusted Unencoded { AgentBlock Variable { AgentID LLUUID } } } { OfflineNotification Low 323 Trusted Unencoded { AgentBlock Variable { AgentID LLUUID } } } // SetStartLocationRequest // viewer -> sim // failure checked at sim and triggers ImprovedInstantMessage // success triggers SetStartLocation { SetStartLocationRequest Low 324 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { StartLocationData Single { SimName Variable 1 } // string { LocationID U32 } { LocationPos LLVector3 } // region coords { LocationLookAt LLVector3 } } } // SetStartLocation // sim -> dataserver { SetStartLocation Low 325 Trusted Zerocoded { StartLocationData Single { AgentID LLUUID } { RegionID LLUUID } { LocationID U32 } { RegionHandle U64 } { LocationPos LLVector3 } // region coords { LocationLookAt LLVector3 } } } // *************************************************************************** // Launcher messages // *************************************************************************** // NetTest - This goes back and forth to the space server because of // problems determining the port { NetTest Low 326 NotTrusted Unencoded { NetBlock Single { Port IPPORT } } } // SetChildCount - Sent to launcher to adjust nominal child count // Simulator sends this increase the sim/cpu ratio on startup { SetCPURatio Low 327 NotTrusted Unencoded { Data Single { Ratio U8 } } } // SimCrashed - Sent to dataserver when the sim goes down. // Maybe we should notify the spaceserver as well? { SimCrashed Low 328 NotTrusted Unencoded { Data Single { RegionX U32 } { RegionY U32 } } { Users Variable { AgentID LLUUID } } } // *************************************************************************** // Name Value Pair messages // *************************************************************************** // NameValuePair - if the specific task exists on simulator, add or replace this name value pair { NameValuePair Low 329 Trusted Unencoded { TaskData Single { ID LLUUID } } { NameValueData Variable { NVPair Variable 2 } } } // NameValuePair - if the specific task exists on simulator or dataserver, remove the name value pair (value is ignored) { RemoveNameValuePair Low 330 Trusted Unencoded { TaskData Single { ID LLUUID } } { NameValueData Variable { NVPair Variable 2 } } } // *************************************************************************** // Add/Remove Attachment messages // *************************************************************************** // // Simulator informs Dataserver of new attachment or attachment asset update // DO NOT ALLOW THIS FROM THE VIEWER // { UpdateAttachment Low 331 Trusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { AttachmentBlock Single { AttachmentPoint U8 } } { OperationData Single { AddItem BOOL } { UseExistingAsset BOOL } } { InventoryData Single // Standard inventory item block { ItemID LLUUID } { FolderID LLUUID } { CreatorID LLUUID } // permissions { OwnerID LLUUID } // permissions { GroupID LLUUID } // permissions { BaseMask U32 } // permissions { OwnerMask U32 } // permissions { GroupMask U32 } // permissions { EveryoneMask U32 } // permissions { NextOwnerMask U32 } // permissions { GroupOwned BOOL } // permissions { AssetID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } } // Simulator informs Dataserver that attachment has been taken off { RemoveAttachment Low 332 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { AttachmentBlock Single { AttachmentPoint U8 } { ItemID LLUUID } } } // *************************************************************************** // GUIDed Sound messages // *************************************************************************** // SoundTrigger - Sent by simulator to viewer to trigger sound outside current region { SoundTrigger High 29 NotTrusted Unencoded { SoundData Single { SoundID LLUUID } { OwnerID LLUUID } { ObjectID LLUUID } { ParentID LLUUID } // null if this object is the parent { Handle U64 } // region handle { Position LLVector3 } // region local { Gain F32 } } } // AttachedSound - Sent by simulator to viewer to play sound attached with an object { AttachedSound Medium 13 Trusted Unencoded { DataBlock Single { SoundID LLUUID } { ObjectID LLUUID } { OwnerID LLUUID } { Gain F32 } { Flags U8 } } } // AttachedSoundGainChange - Sent by simulator to viewer to change an attached sounds' volume { AttachedSoundGainChange Medium 14 Trusted Unencoded { DataBlock Single { ObjectID LLUUID } { Gain F32 } } } // PreloadSound - Sent by simulator to viewer to preload sound for an object { PreloadSound Medium 15 Trusted Unencoded { DataBlock Variable { ObjectID LLUUID } { OwnerID LLUUID } { SoundID LLUUID } } } // ************************************************************************* // Asset storage messages // ************************************************************************* // current assumes an existing UUID, need to enhance for new assets { AssetUploadRequest Low 333 NotTrusted Unencoded { AssetBlock Single { TransactionID LLUUID } { Type S8 } { Tempfile BOOL } { StoreLocal BOOL } { AssetData Variable 2 } // Optional: the actual asset data if the whole thing will fit it this packet } } { AssetUploadComplete Low 334 NotTrusted Unencoded { AssetBlock Single { UUID LLUUID } { Type S8 } { Success BOOL } } } // Script on simulator asks dataserver if there are any email messages // waiting. { EmailMessageRequest Low 335 Trusted Unencoded { DataBlock Single { ObjectID LLUUID } { FromAddress Variable 1 } { Subject Variable 1 } } } // Dataserver gives simulator the oldest email message in the queue, along with // how many messages are left in the queue. And passes back the filter used to request emails. { EmailMessageReply Low 336 Trusted Unencoded { DataBlock Single { ObjectID LLUUID } { More U32 } //U32 { Time U32 } //U32 { FromAddress Variable 1 } { Subject Variable 1 } { Data Variable 2 } { MailFilter Variable 1 } } } // Script on simulator sends mail to another script { InternalScriptMail Medium 16 Trusted Unencoded { DataBlock Single { From Variable 1 } { To LLUUID } { Subject Variable 1 } { Body Variable 2 } } } // Script on simulator asks dataserver for information { ScriptDataRequest Low 337 Trusted Unencoded { DataBlock Variable { Hash U64 } { RequestType S8 } { Request Variable 2 } } } // Data server responds with data { ScriptDataReply Low 338 Trusted Unencoded { DataBlock Variable { Hash U64 } { Reply Variable 2 } } } //----------------------------------------------------------------------------- // Group messages //----------------------------------------------------------------------------- // CreateGroupRequest // viewer -> simulator // simulator -> dataserver // reliable { CreateGroupRequest Low 339 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { GroupData Single { Name Variable 1 } // string { Charter Variable 2 } // string { ShowInList BOOL } { InsigniaID LLUUID } { MembershipFee S32 } // S32 { OpenEnrollment BOOL } // BOOL (U8) { AllowPublish BOOL } // whether profile is externally visible or not { MaturePublish BOOL } // profile is "mature" } } // CreateGroupReply // dataserver -> simulator // simulator -> viewer // reliable { CreateGroupReply Low 340 Trusted Unencoded { AgentData Single { AgentID LLUUID } } { ReplyData Single { GroupID LLUUID } { Success BOOL } { Message Variable 1 } // string } } // UpdateGroupInfo // viewer -> simulator // simulator -> dataserver // reliable { UpdateGroupInfo Low 341 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { GroupData Single { GroupID LLUUID } { Charter Variable 2 } // string { ShowInList BOOL } { InsigniaID LLUUID } { MembershipFee S32 } { OpenEnrollment BOOL } { AllowPublish BOOL } { MaturePublish BOOL } } } // GroupRoleChanges // viewer -> simulator -> dataserver // reliable { GroupRoleChanges Low 342 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } } { RoleChange Variable { RoleID LLUUID } { MemberID LLUUID } { Change U32 } } } // JoinGroupRequest // viewer -> simulator -> dataserver // reliable { JoinGroupRequest Low 343 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { GroupData Single { GroupID LLUUID } } } // JoinGroupReply // dataserver -> simulator -> viewer { JoinGroupReply Low 344 Trusted Unencoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } { Success BOOL } } } // EjectGroupMemberRequest // viewer -> simulator -> dataserver // reliable { EjectGroupMemberRequest Low 345 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { GroupData Single { GroupID LLUUID } } { EjectData Variable { EjecteeID LLUUID } } } // EjectGroupMemberReply // dataserver -> simulator -> viewer // reliable { EjectGroupMemberReply Low 346 Trusted Unencoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } } { EjectData Single { Success BOOL } } } // LeaveGroupRequest // viewer -> simulator -> dataserver // reliable { LeaveGroupRequest Low 347 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { GroupData Single { GroupID LLUUID } } } // LeaveGroupReply // dataserver -> simulator -> viewer { LeaveGroupReply Low 348 Trusted Unencoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } { Success BOOL } } } // InviteGroupRequest // viewer -> simulator -> dataserver // reliable { InviteGroupRequest Low 349 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } // UUID of inviting agent { SessionID LLUUID } } { GroupData Single { GroupID LLUUID } } { InviteData Variable { InviteeID LLUUID } { RoleID LLUUID } } } // InviteGroupResponse // simulator -> dataserver // reliable { InviteGroupResponse Low 350 Trusted Unencoded { InviteData Single { AgentID LLUUID } { InviteeID LLUUID } { GroupID LLUUID } { RoleID LLUUID } { MembershipFee S32 } } } // GroupProfileRequest // viewer-> simulator -> dataserver // reliable { GroupProfileRequest Low 351 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { GroupData Single { GroupID LLUUID } } } // GroupProfileReply // dataserver -> simulator -> viewer // reliable { GroupProfileReply Low 352 Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } { Name Variable 1 } // string { Charter Variable 2 } // string { ShowInList BOOL } { MemberTitle Variable 1 } // string { PowersMask U64 } // U32 mask { InsigniaID LLUUID } { FounderID LLUUID } { MembershipFee S32 } { OpenEnrollment BOOL } // BOOL (U8) { Money S32 } { GroupMembershipCount S32 } { GroupRolesCount S32 } { AllowPublish BOOL } { MaturePublish BOOL } { OwnerRole LLUUID } } } // CurrentInterval = 0 => this period (week, day, etc.) // CurrentInterval = 1 => last period // viewer -> simulator -> dataserver // reliable { GroupAccountSummaryRequest Low 353 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } } { MoneyData Single { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } } } // dataserver -> simulator -> viewer // Reliable { GroupAccountSummaryReply Low 354 Trusted Zerocoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } { MoneyData Single { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } { StartDate Variable 1 } // string { Balance S32 } { TotalCredits S32 } { TotalDebits S32 } { ObjectTaxCurrent S32 } { LightTaxCurrent S32 } { LandTaxCurrent S32 } { GroupTaxCurrent S32 } { ParcelDirFeeCurrent S32 } { ObjectTaxEstimate S32 } { LightTaxEstimate S32 } { LandTaxEstimate S32 } { GroupTaxEstimate S32 } { ParcelDirFeeEstimate S32 } { NonExemptMembers S32 } { LastTaxDate Variable 1 } // string { TaxDate Variable 1 } // string } } // Reliable { GroupAccountDetailsRequest Low 355 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } } { MoneyData Single { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } } } // Reliable { GroupAccountDetailsReply Low 356 Trusted Zerocoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } { MoneyData Single { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } { StartDate Variable 1 } // string } { HistoryData Variable { Description Variable 1 } // string { Amount S32 } } } // Reliable { GroupAccountTransactionsRequest Low 357 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } } { MoneyData Single { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } } } // Reliable { GroupAccountTransactionsReply Low 358 Trusted Zerocoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } { MoneyData Single { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } { StartDate Variable 1 } // string } { HistoryData Variable { Time Variable 1 } // string { User Variable 1 } // string { Type S32 } { Item Variable 1 } // string { Amount S32 } } } // GroupActiveProposalsRequest // viewer -> simulator -> dataserver //reliable { GroupActiveProposalsRequest Low 359 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { GroupData Single { GroupID LLUUID } } { TransactionData Single { TransactionID LLUUID } } } // GroupActiveProposalItemReply // dataserver -> simulator -> viewer // reliable { GroupActiveProposalItemReply Low 360 Trusted Zerocoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } { TransactionData Single { TransactionID LLUUID } { TotalNumItems U32 } } { ProposalData Variable { VoteID LLUUID } { VoteInitiator LLUUID } { TerseDateID Variable 1 } // string { StartDateTime Variable 1 } // string { EndDateTime Variable 1 } // string { AlreadyVoted BOOL } { VoteCast Variable 1 } // string { Majority F32 } { Quorum S32 } { ProposalText Variable 1 } // string } } // GroupVoteHistoryRequest // viewer -> simulator -> dataserver //reliable { GroupVoteHistoryRequest Low 361 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { GroupData Single { GroupID LLUUID } } { TransactionData Single { TransactionID LLUUID } } } // GroupVoteHistoryItemReply // dataserver -> simulator -> viewer // reliable { GroupVoteHistoryItemReply Low 362 Trusted Zerocoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } { TransactionData Single { TransactionID LLUUID } { TotalNumItems U32 } } { HistoryItemData Single { VoteID LLUUID } { TerseDateID Variable 1 } // string { StartDateTime Variable 1 } // string { EndDateTime Variable 1 } // string { VoteInitiator LLUUID } { VoteType Variable 1 } // string { VoteResult Variable 1 } // string { Majority F32 } { Quorum S32 } { ProposalText Variable 2 } // string } { VoteItem Variable { CandidateID LLUUID } { VoteCast Variable 1 } // string { NumVotes S32 } } } // StartGroupProposal // viewer -> simulator -> dataserver // reliable { StartGroupProposal Low 363 NotTrusted Zerocoded UDPDeprecated { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ProposalData Single { GroupID LLUUID } { Quorum S32 } { Majority F32 } // F32 { Duration S32 } // S32, seconds { ProposalText Variable 1 } // string } } // GroupProposalBallot // viewer -> simulator -> dataserver // reliable { GroupProposalBallot Low 364 NotTrusted Unencoded UDPDeprecated { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ProposalData Single { ProposalID LLUUID } { GroupID LLUUID } { VoteCast Variable 1 } // string } } // TallyVotes userserver -> dataserver // reliable { TallyVotes Low 365 Trusted Unencoded } // GroupMembersRequest // get the group members // simulator -> dataserver // reliable { GroupMembersRequest Low 366 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { GroupData Single { GroupID LLUUID } { RequestID LLUUID } } } // GroupMembersReply // list of uuids for the group members // dataserver -> simulator // reliable { GroupMembersReply Low 367 Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } { RequestID LLUUID } { MemberCount S32 } } { MemberData Variable { AgentID LLUUID } { Contribution S32 } { OnlineStatus Variable 1 } // string { AgentPowers U64 } { Title Variable 1 } // string { IsOwner BOOL } } } // used to switch an agent's currently active group. // viewer -> simulator -> dataserver -> AgentDataUpdate... { ActivateGroup Low 368 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } } } // viewer -> simulator -> dataserver { SetGroupContribution Low 369 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { GroupID LLUUID } { Contribution S32 } } } // viewer -> simulator -> dataserver { SetGroupAcceptNotices Low 370 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { GroupID LLUUID } { AcceptNotices BOOL } } { NewData Single { ListInProfile BOOL } } } // GroupRoleDataRequest // viewer -> simulator -> dataserver { GroupRoleDataRequest Low 371 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { GroupData Single { GroupID LLUUID } { RequestID LLUUID } } } // GroupRoleDataReply // All role data for this group // dataserver -> simulator -> agent { GroupRoleDataReply Low 372 Trusted Unencoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } { RequestID LLUUID } { RoleCount S32 } } { RoleData Variable { RoleID LLUUID } { Name Variable 1 } { Title Variable 1 } { Description Variable 1 } { Powers U64 } { Members U32 } } } // GroupRoleMembersRequest // viewer -> simulator -> dataserver { GroupRoleMembersRequest Low 373 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { GroupData Single { GroupID LLUUID } { RequestID LLUUID } } } // GroupRoleMembersReply // All role::member pairs for this group. // dataserver -> simulator -> agent { GroupRoleMembersReply Low 374 Trusted Unencoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } { RequestID LLUUID } { TotalPairs U32 } } { MemberData Variable { RoleID LLUUID } { MemberID LLUUID } } } // GroupTitlesRequest // viewer -> simulator -> dataserver { GroupTitlesRequest Low 375 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } { RequestID LLUUID } } } // GroupTitlesReply // dataserver -> simulator -> viewer { GroupTitlesReply Low 376 Trusted Zerocoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } { RequestID LLUUID } } { GroupData Variable { Title Variable 1 } // string { RoleID LLUUID } { Selected BOOL } } } // GroupTitleUpdate // viewer -> simulator -> dataserver { GroupTitleUpdate Low 377 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } { TitleRoleID LLUUID } } } // GroupRoleUpdate // viewer -> simulator -> dataserver { GroupRoleUpdate Low 378 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } } { RoleData Variable { RoleID LLUUID } { Name Variable 1 } { Description Variable 1 } { Title Variable 1 } { Powers U64 } { UpdateType U8 } } } // Request the members of the live help group needed for requesting agent. // userserver -> dataserver { LiveHelpGroupRequest Low 379 Trusted Unencoded { RequestData Single { RequestID LLUUID } { AgentID LLUUID } } } // Send down the group // dataserver -> userserver { LiveHelpGroupReply Low 380 Trusted Unencoded { ReplyData Single { RequestID LLUUID } { GroupID LLUUID } { Selection Variable 1 } // selection criteria all or active } } //----------------------------------------------------------------------------- // Wearable messages //----------------------------------------------------------------------------- // AgentWearablesRequest // (a.k.a. "Tell me what the avatar is wearing.") // viewer -> simulator -> dataserver // reliable { AgentWearablesRequest Low 381 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } // AgentWearablesUpdate // (a.k.a. "Here's what your avatar should be wearing now.") // dataserver -> userserver -> viewer // reliable // NEVER from viewer to sim { AgentWearablesUpdate Low 382 Trusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { SerialNum U32 } // U32, Increases every time the wearables change for a given agent. Used to avoid processing out of order packets. } { WearableData Variable { ItemID LLUUID } { AssetID LLUUID } { WearableType U8 } // U8, LLWearable::EWearType } } // // AgentIsNowWearing // (a.k.a. "Here's what I'm wearing now.") // viewer->sim->dataserver // reliable { AgentIsNowWearing Low 383 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { WearableData Variable { ItemID LLUUID } { WearableType U8 } } } // AgentCachedTexture // viewer queries for cached textures on dataserver (via simulator) // viewer -> simulator -> dataserver // reliable { AgentCachedTexture Low 384 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { SerialNum S32 } } { WearableData Variable { ID LLUUID } { TextureIndex U8 } } } // AgentCachedTextureResponse // response to viewer queries for cached textures on dataserver (via simulator) // dataserver -> simulator -> viewer // reliable { AgentCachedTextureResponse Low 385 Trusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { SerialNum S32 } } { WearableData Variable { TextureID LLUUID } { TextureIndex U8 } { HostName Variable 1 } } } // Request an AgentDataUpdate without changing any agent data. { AgentDataUpdateRequest Low 386 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } // AgentDataUpdate // Updates a viewer or simulator's impression of agent-specific information. // Used, for example, when an agent's group changes. // dataserver -> simulator -> viewer // reliable { AgentDataUpdate Low 387 Trusted Zerocoded { AgentData Single { AgentID LLUUID } { FirstName Variable 1 } // string { LastName Variable 1 } // string { GroupTitle Variable 1 } // string { ActiveGroupID LLUUID } // active group { GroupPowers U64 } { GroupName Variable 1 } // string } } // GroupDataUpdate // This is a bunch of group data that needs to be appropriatly routed based on presence info. // dataserver -> simulator { GroupDataUpdate Low 388 Trusted Zerocoded { AgentGroupData Variable { AgentID LLUUID } { GroupID LLUUID } { AgentPowers U64 } { GroupTitle Variable 1 } } } // AgentGroupDataUpdate // Updates a viewer or simulator's impression of the groups an agent is in. // dataserver -> simulator -> viewer // reliable { AgentGroupDataUpdate Low 389 Trusted Zerocoded UDPDeprecated { AgentData Single { AgentID LLUUID } } { GroupData Variable { GroupID LLUUID } { GroupPowers U64 } { AcceptNotices BOOL } { GroupInsigniaID LLUUID } { Contribution S32 } { GroupName Variable 1 } // string } } // AgentDropGroup // Updates the viewer / simulator that an agent is no longer part of a group // dataserver -> simulator -> viewer // dataserver -> userserver // reliable { AgentDropGroup Low 390 Trusted Zerocoded UDPDeprecated { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } } // LogTextMessage // Asks the dataserver to log the contents of this message in the // chat and IM log table. // Sent from userserver (IM logging) and simulator (chat logging). { LogTextMessage Low 391 Trusted Zerocoded { DataBlock Variable { FromAgentId LLUUID } { ToAgentId LLUUID } { GlobalX F64 } { GlobalY F64 } { Time U32 } // utc seconds since epoch { Message Variable 2 } // string } } // ViewerEffect // Viewer side effect that's sent from one viewer, and broadcast to other agents nearby // viewer-->sim (single effect created by viewer) // sim-->viewer (multiple effects that can be seen by viewer) // the AgentData block used for authentication for viewer-->sim messages { ViewerEffect Medium 17 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Effect Variable { ID LLUUID } // unique UUID of the effect { AgentID LLUUID } // yes, pack AgentID again (note this block is variable) { Type U8 } // Type of the effect { Duration F32 } // F32 time (seconds) { Color Fixed 4 } // Color4U { TypeData Variable 1 } // Type specific data } } // CreateTrustedCircuit // Sent to establish a trust relationship between two components. // Only sent in response to a DenyTrustedCircuit message. { CreateTrustedCircuit Low 392 NotTrusted Unencoded { DataBlock Single { EndPointID LLUUID } { Digest Fixed 32 } // 32 hex digits == 1 MD5 Digest } } // DenyTrustedCircuit // Sent : // - in response to failed CreateTrustedCircuit // - to force the remote end-point to try to establish a trusted circuit // - the reception of a trusted message on a non-trusted circuit // This allows us to re-auth a circuit if it gets closed due to timeouts or network failures. { DenyTrustedCircuit Low 393 NotTrusted Unencoded { DataBlock Single { EndPointID LLUUID } } } // RequestTrustedCircuit // If the destination does not trust the sender, a Deny is sent back. { RequestTrustedCircuit Low 394 Trusted Unencoded } { RezSingleAttachmentFromInv Low 395 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Single { ItemID LLUUID } { OwnerID LLUUID } { AttachmentPt U8 } // 0 for default { ItemFlags U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { Name Variable 1 } { Description Variable 1 } } } { RezMultipleAttachmentsFromInv Low 396 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { HeaderData Single { CompoundMsgID LLUUID } // All messages a single "compound msg" must have the same id { TotalObjects U8 } { FirstDetachAll BOOL } } { ObjectData Variable // 1 to 4 of these per packet { ItemID LLUUID } { OwnerID LLUUID } { AttachmentPt U8 } // 0 for default { ItemFlags U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { Name Variable 1 } { Description Variable 1 } } } { DetachAttachmentIntoInv Low 397 NotTrusted Unencoded { ObjectData Single { AgentID LLUUID } { ItemID LLUUID } } } // Viewer -> Sim // Used in "Make New Outfit" { CreateNewOutfitAttachments Low 398 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { HeaderData Single { NewFolderID LLUUID } } { ObjectData Variable { OldItemID LLUUID } { OldFolderID LLUUID } } } //----------------------------------------------------------------------------- // Personal information messages //----------------------------------------------------------------------------- { UserInfoRequest Low 399 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } { UserInfoReply Low 400 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { UserData Single { IMViaEMail BOOL } { DirectoryVisibility Variable 1 } { EMail Variable 2 } } } { UpdateUserInfo Low 401 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { UserData Single { IMViaEMail BOOL } { DirectoryVisibility Variable 1 } } } //----------------------------------------------------------------------------- // System operations and maintenance //----------------------------------------------------------------------------- // spaceserver -> sim // tell a particular simulator to rename a parcel { ParcelRename Low 402 Trusted Unencoded { ParcelData Variable { ParcelID LLUUID } { NewName Variable 1 } // string } } // sim -> viewer // initiate upload. primarily used for uploading raw files. { InitiateDownload Low 403 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { FileData Single { SimFilename Variable 1 } // string { ViewerFilename Variable 1 } // string } } // Generalized system message. Each Requst has its own protocol for // the StringData block format and contents. { SystemMessage Low 404 Trusted Zerocoded { MethodData Single { Method Variable 1 } { Invoice LLUUID } { Digest Fixed 32 } // 32 hex digits == 1 MD5 Digest } { ParamList Variable { Parameter Variable 1 } } } //----------------------------------------------------------------------------- // map messages //----------------------------------------------------------------------------- // viewer -> sim // reliable // This message is sent up from the viewer to (eventually) get a list // of all map layers and NULL-layer sims. // Returns: MapLayerReply and MapBlockReply { MapLayerRequest Low 405 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { Flags U32 } { EstateID U32 } // filled in on sim { Godlike BOOL } // filled in on sim } } // sim -> viewer { MapLayerReply Low 406 Trusted Unencoded { AgentData Single { AgentID LLUUID } { Flags U32 } } { LayerData Variable { Left U32 } { Right U32 } { Top U32 } { Bottom U32 } { ImageID LLUUID } } } // viewer -> sim // This message is sent up from the viewer to get a list // of the sims in a specified region. // Returns: MapBlockReply { MapBlockRequest Low 407 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { Flags U32 } { EstateID U32 } // filled in on sim { Godlike BOOL } // filled in on sim } { PositionData Single { MinX U16 } // in region-widths { MaxX U16 } // in region-widths { MinY U16 } // in region-widths { MaxY U16 } // in region-widths } } // viewer -> sim // This message is sent up from the viewer to get a list // of the sims with a given name. // Returns: MapBlockReply { MapNameRequest Low 408 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { Flags U32 } { EstateID U32 } // filled in on sim { Godlike BOOL } // filled in on sim } { NameData Single { Name Variable 1 } // string } } // sim -> viewer { MapBlockReply Low 409 Trusted Unencoded { AgentData Single { AgentID LLUUID } { Flags U32 } } { Data Variable { X U16 } // in region-widths { Y U16 } // in region-widths { Name Variable 1 } // string { Access U8 } // PG, mature, etc. { RegionFlags U32 } { WaterHeight U8 } // meters { Agents U8 } { MapImageID LLUUID } } } // viewer -> sim // This message is sent up from the viewer to get a list // of the items of a particular type on the map. // Used for Telehubs, Agents, Events, Popular Places, etc. // Returns: MapBlockReply { MapItemRequest Low 410 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { Flags U32 } { EstateID U32 } // filled in on sim { Godlike BOOL } // filled in on sim } { RequestData Single { ItemType U32 } { RegionHandle U64 } // filled in on sim } } // sim -> viewer { MapItemReply Low 411 Trusted Unencoded { AgentData Single { AgentID LLUUID } { Flags U32 } } { RequestData Single { ItemType U32 } } { Data Variable { X U32 } // global position { Y U32 } // global position { ID LLUUID } // identifier id { Extra S32 } // extra information { Extra2 S32 } // extra information { Name Variable 1 } // identifier string } } //----------------------------------------------------------------------------- // Postcard messages //----------------------------------------------------------------------------- // reliable { SendPostcard Low 412 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { AssetID LLUUID } { PosGlobal LLVector3d } // Where snapshot was taken { To Variable 1 } // dest email address(es) { From Variable 1 } // src email address(es) { Name Variable 1 } // src name { Subject Variable 1 } // mail subject { Msg Variable 2 } // message text { AllowPublish BOOL } // Allow publishing on the web. { MaturePublish BOOL } // profile is "mature" } } // RPC messages // Script on simulator requests rpc channel from rpcserver // simulator -> dataserver -> MySQL { RpcChannelRequest Low 413 Trusted Unencoded { DataBlock Single { GridX U32 } { GridY U32 } { TaskID LLUUID } { ItemID LLUUID } } } // RpcServer allocated a session for the script // ChannelID will be the NULL UUID if unable to register // dataserver -> simulator { RpcChannelReply Low 414 Trusted Unencoded { DataBlock Single { TaskID LLUUID } { ItemID LLUUID } { ChannelID LLUUID } } } // Inbound RPC requests follow this path: // RpcScriptRequestInbound: rpcserver -> spaceserver // RpcScriptRequestInboundForward: spaceserver -> simulator // reply: simulator -> rpcserver { RpcScriptRequestInbound Low 415 NotTrusted Unencoded { TargetBlock Single { GridX U32 } { GridY U32 } } { DataBlock Single { TaskID LLUUID } { ItemID LLUUID } { ChannelID LLUUID } { IntValue U32 } { StringValue Variable 2 } // string } } // spaceserver -> simulator { RpcScriptRequestInboundForward Low 416 Trusted Unencoded UDPDeprecated { DataBlock Single { RPCServerIP IPADDR } { RPCServerPort IPPORT } { TaskID LLUUID } { ItemID LLUUID } { ChannelID LLUUID } { IntValue U32 } { StringValue Variable 2 } // string } } // simulator -> rpcserver // Not trusted because trust establishment doesn't work here. { RpcScriptReplyInbound Low 417 NotTrusted Unencoded { DataBlock Single { TaskID LLUUID } { ItemID LLUUID } { ChannelID LLUUID } { IntValue U32 } { StringValue Variable 2 } // string } } // ScriptMailRegistration // Simulator -> dataserver { ScriptMailRegistration Low 418 Trusted Unencoded { DataBlock Single { TargetIP Variable 1 } // String IP { TargetPort IPPORT } { TaskID LLUUID } { Flags U32 } } } // ParcelMediaCommandMessage // Sends a parcel media command { ParcelMediaCommandMessage Low 419 Trusted Unencoded { CommandBlock Single { Flags U32 } { Command U32 } { Time F32 } } } // ParcelMediaUpdate // Sends a parcel media update to a single user // For global updates use the parcel manager. { ParcelMediaUpdate Low 420 Trusted Unencoded { DataBlock Single { MediaURL Variable 1 } // string { MediaID LLUUID } { MediaAutoScale U8 } } { DataBlockExtended Single { MediaType Variable 1 } { MediaDesc Variable 1 } { MediaWidth S32 } { MediaHeight S32 } { MediaLoop U8 } } } // LandStatRequest // Sent by the viewer to request collider/script information for a parcel { LandStatRequest Low 421 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { RequestData Single { ReportType U32 } { RequestFlags U32 } { Filter Variable 1 } { ParcelLocalID S32 } } } // LandStatReply // Sent by the simulator in response to LandStatRequest { LandStatReply Low 422 Trusted Unencoded UDPDeprecated { RequestData Single { ReportType U32 } { RequestFlags U32 } { TotalObjectCount U32 } } { ReportData Variable { TaskLocalID U32 } { TaskID LLUUID } { LocationX F32 } { LocationY F32 } { LocationZ F32 } { Score F32 } { TaskName Variable 1 } { OwnerName Variable 1 } } } // Generic Error -- this is used for sending an error message // to a UDP recipient. The lowest common denominator is to at least // log the message. More sophisticated receivers can do something // smarter, for example, a money transaction failure can put up a // more user visible UI widget. { Error Low 423 NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } // will forward to agentid if coming from trusted circuit } { Data Single { Code S32 } // matches http status codes { Token Variable 1 } // some specific short string based message { ID LLUUID } // the transactionid/uniqueid/sessionid whatever. { System Variable 1 } // The hierarchical path to the system, eg, "message/handler" { Message Variable 2 } // Human readable message { Data Variable 2 } // Binary serialized LLSD for extra info. } } // ObjectIncludeInSearch // viewer -> simulator { ObjectIncludeInSearch Low 424 NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { IncludeInSearch BOOL } } } // This message is sent from viewer -> simulator when the viewer wants // to rez an object out of inventory back to its position before it // last moved into the inventory { RezRestoreToWorld Low 425 NotTrusted Unencoded UDPDeprecated { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { InventoryData Single { ItemID LLUUID } { FolderID LLUUID } { CreatorID LLUUID } // permissions { OwnerID LLUUID } // permissions { GroupID LLUUID } // permissions { BaseMask U32 } // permissions { OwnerMask U32 } // permissions { GroupMask U32 } // permissions { EveryoneMask U32 } // permissions { NextOwnerMask U32 } // permissions { GroupOwned BOOL } // permissions { TransactionID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } }