// pyogp test message_template.msg // ************************************************************************* // 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 } }