Files
libremetaverse/data/message_template.msg
2007-01-31 16:14:34 +00:00

9875 lines
190 KiB
Plaintext

// Linden Lab development message templates
version 1.053
// *************************************************************************
// Test Message
// *************************************************************************
// Test Message
{
TestMessage Low NotTrusted Zerocoded
{
TestBlock1 Single
{ Test1 U32 }
}
{
NeighborBlock Multiple 4
{ Test0 U32 }
{ Test1 U32 }
{ Test2 U32 }
}
}
// *************************************************************************
// Messaging Internal Data Management Message
// *************************************************************************
// *************************
// List fixed messages first
// *************************
// This is the newly updated version of the message template checksum
// request. The token is there so that the viewer can drop responses
// that do not match the supplied token.
{
SecuredTemplateChecksumRequest Fixed 0xFFFFFFFA NotTrusted Unencoded
{
TokenBlock Single
{ Token LLUUID }
}
}
// 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
}
// message template version check. Deprecated - the viewer should send a
// SecuredTemplateChecksumRequest to prevent template checksum
// injection with a bad checksum.
{
TemplateChecksumRequest Fixed 0xFFFFFFFE NotTrusted Unencoded
}
// message template version check
{
TemplateChecksumReply Fixed 0xFFFFFFFF NotTrusted Unencoded
{
DataBlock Single
{ Checksum U32 }
{ MajorVersion U8 }
{ MinorVersion U8 }
{ PatchVersion U8 }
{ ServerVersion U8 }
{ Flags U32 }
}
{
TokenBlock Single
{ Token LLUUID }
}
}
// ******************
// 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 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 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 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 NotTrusted Unencoded
{
CircuitCode Single
{ Code U32 }
{ SessionID LLUUID }
{ ID LLUUID } // agent id
}
}
// LogControl - This message allows us to remotely control the
// runtime logging facilities of the error stream. This MUST match
// the RelayLogControl message.
// Level - DEBUG=0, INFO=1, WARN=2, FATAL=3 system displays level and greater
// Mask - a bit mask. Set to 0xffff to display every type
// Time - set to 1 to turn on timestamp, 0 to turn it off
// Location - set to 1 to turn on file/line stamp, 0 to turn it off
// RemoteInfos - set to 1 to log llinfo to the log server (in production)
{
LogControl Low Trusted Unencoded
{
Options Single
{ Level U8 }
{ Mask U32 }
{ Time BOOL }
{ Location BOOL }
{ RemoteInfos BOOL }
}
}
// RelayLogControl - Just like log control, but relayed around the
// server side to adjust the log level. This is in a separate message
// because the handler is a bit different, only implmented on some
// processes, and requires application level knowledge. This MUST match
// the LogControl message.
{
RelayLogControl Low Trusted Unencoded
{
Options Single
{ Level U8 }
{ Mask U32 }
{ Time BOOL }
{ Location BOOL }
{ RemoteInfos BOOL }
}
}
// LogMessages
// Turns on or off message system logging
{
LogMessages Low Trusted Unencoded
{
Options Single
{ Enable BOOL } // BOOL
}
}
// *************************************************************************
// SpaceServer to Simulator Messages
// ************************************************************************
// Neighbor List - Passed anytime neighbors change
{
NeighborList High Trusted Unencoded
{
NeighborBlock Multiple 4
{ IP IPADDR }
{ Port IPPORT }
{ PublicIP IPADDR }
{ PublicPort IPPORT }
{ RegionID LLUUID }
{ Name Variable 1 } // string
{ SimAccess U8 }
}
}
// Simulator Assignment - Tells a simulator where it is and who it's
// neighbors are
{
SimulatorAssign Low Trusted Zerocoded
{
RegionInfo Single
{ GridsPerEdge S32 }
{ MetersPerGrid F32 }
{ Handle U64 }
{ UsecSinceStart U64 }
{ SecPerDay U32 }
{ SecPerYear U32 }
{ SunDirection LLVector3 }
{ SunAngVelocity LLVector3 }
{ IP IPADDR }
{ Port IPPORT }
}
{
NeighborBlock Multiple 4
{ IP IPADDR }
{ Port IPPORT }
{ PublicIP IPADDR }
{ PublicPort IPPORT }
{ Name Variable 1 } // string
{ SimAccess U8 }
}
}
// SpaceServerSimulatorTimeMessage - Allows simulator to resynch to world time
{
SpaceServerSimulatorTimeMessage Low Trusted Unencoded
{
TimeInfo Single
{ UsecSinceStart U64 }
{ SecPerDay U32 }
{ SecPerYear U32 }
{ SunDirection LLVector3 }
{ SunPhase F32 }
{ SunAngVelocity LLVector3 }
}
}
// ClosestSimulator - Passes the closest simulator back to a simulator
{
ClosestSimulator Medium Trusted Unencoded
{
SimulatorBlock Single
{ IP IPADDR }
{ Port IPPORT }
{ Handle U64 }
}
{
Viewer Single
{ ID LLUUID }
}
}
// AvatarTextureUpdate
// simulator -> dataserver
// reliable
{
AvatarTextureUpdate Low 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 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 Trusted Unencoded
{
MapData Single
{ RegionHandle U64 }
{ Type S32 }
{ MapImage LLUUID }
}
}
// SubscribeLoad
// spaceserver -> simulator
// reliable
{
SubscribeLoad Low Trusted Unencoded
}
// UnsubscribeLoad
// spaceserver -> simulator
// reliable
{
UnsubscribeLoad Low Trusted Unencoded
}
// ************************************************************************
// Simulator to SpaceServer Messages
// ************************************************************************
// Simulator Start - Tells spaceserver that simulator is online and wants to be
// assigned.
{
SimulatorStart Low Trusted Unencoded
{
ControlPort Single
{ Port IPPORT }
{ PublicIP IPADDR }
{ PublicPort IPPORT }
}
{
PositionSuggestion Single
{ Ignore BOOL } // if non-zero, SS should put it in the next available slot
{ GridX S32 }
{ GridY S32 }
}
}
// SimulatorReady - indicates the sim has finished loading its state
// and is ready to receive updates from others
{
SimulatorReady Low 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 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 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 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 Trusted Unencoded
}
// ****************************************************************************
// Presense messages
// ****************************************************************************
// sim -> dataserver
{
RegionPresenceRequestByRegionID Low Trusted Unencoded
{
RegionData Variable
{ RegionID LLUUID }
}
}
sim -> dataserver
{
RegionPresenceRequestByHandle Low Trusted Unencoded
{
RegionData Variable
{ RegionHandle U64 }
}
}
// dataserver -> sim
{
RegionPresenceResponse Low Trusted Zerocoded
{
RegionData Variable
{ RegionID LLUUID }
{ RegionHandle U64 }
{ InternalRegionIP IPADDR }
{ ExternalRegionIP IPADDR }
{ RegionPort IPPORT }
{ ValidUntil F64 }
{ Message Variable 1 }
}
}
// Record agent presence - this totally supercedes the TrackAgentSession
// and ClearAgentSessions functionality
{
RecordAgentPresence Low Trusted Unencoded
{
RegionData Single
{ RegionID LLUUID }
}
{
AgentData Variable
{ AgentID LLUUID }
{ SessionID LLUUID }
{ SecureSessionID LLUUID }
{ LocalX S16 }
{ LocalY S16 }
{ TimeToLive S32 } // in seconds
{ Status S32 }
{ EstateID U32 }
}
}
// Erase a set of agent presence records. Useful during logout or kick.
{
EraseAgentPresence Low Trusted Unencoded
{
AgentData Variable
{ AgentID LLUUID }
}
}
// request IP and port for agents
{
AgentPresenceRequest Low Trusted Unencoded
{
AgentData Variable
{ AgentID LLUUID }
}
}
// response for agent locations
{
AgentPresenceResponse Low Trusted Unencoded
{
AgentData Variable
{ AgentID LLUUID }
{ RegionIP IPADDR }
{ RegionPort IPPORT }
{ ValidUntil F64 }
{ EstateID U32 }
}
}
// ****************************************************************************
// Simulator to dataserver messages
// ****************************************************************************
// Updates SimName, EstateID and SimAccess using RegionID as a key
{
UpdateSimulator Low Trusted Unencoded
{
SimulatorInfo Single
{ RegionID LLUUID }
{ SimName Variable 1 }
{ EstateID U32 }
{ SimAccess U8 }
}
}
// The simulator sends out this message from time to time
{
TrackAgentSession Low Trusted Unencoded
{
RegionData Single
{ RegionX F32 }
{ RegionY F32 }
{ SpaceIP IPADDR }
{ EstateID U32 }
{ AgentCount U32 }
}
{
SessionInfo Variable
{ SessionID LLUUID }
{ ViewerIP IPADDR }
{ ViewerPort IPPORT }
{ GlobalX F64 }
{ GlobalY F64 }
}
}
// clear out sessions for this sim, because it's coming up or going down
{
ClearAgentSessions Low Trusted Unencoded
{
RegionInfo Single
{ RegionX U32 }
{ RegionY U32 }
{ SpaceIP IPADDR }
}
}
// record dwell time.
{
LogDwellTime Low 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 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 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 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 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 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 NotTrusted Unencoded
}
// dataserver to sim, response w/ econ data
{
EconomyData Low 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 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 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 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 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 Trusted Zerocoded
{
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 }
}
}
// DirFindQuery viewer->sim
// Message to start asking questions for the directory
{
DirFindQuery Low 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 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 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 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 Trusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
}
{
QueryData Variable
{ QueryID LLUUID }
}
{
QueryReplies Variable
{ ParcelID LLUUID }
{ Name Variable 1 }
{ ForSale BOOL }
{ Auction BOOL }
{ ReservedNewbie BOOL }
{ Dwell F32 }
}
}
// DirPeopleReply
{
DirPeopleReply Low 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 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 }
}
}
// DirGroupsReply
// dataserver -> userserver -> viewer
// reliable
{
DirGroupsReply Low Trusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
}
{
QueryData Single
{ QueryID LLUUID }
}
{
QueryReplies Variable
{ GroupID LLUUID }
{ GroupName Variable 1 } // string
{ Members S32 }
{ OpenEnrollment BOOL }
{ MembershipFee S32 }
}
}
// DirClassifiedQuery viewer->sim
// reliable
{
DirClassifiedQuery Low 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 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 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 }
}
}
// 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 Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ TargetID LLUUID }
}
{
Data Variable
{ ClassifiedID LLUUID }
{ Name Variable 1 }
}
}
// ClassifiedInfoRequest
// viewer -> simulator
// simulator -> dataserver
// reliable
{
ClassifiedInfoRequest Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ ClassifiedID LLUUID }
}
}
// ClassifiedInfoReply
// dataserver -> simulator
// simulator -> viewer
// reliable
{
ClassifiedInfoReply Low 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 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 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ ClassifiedID LLUUID }
{ QueryID LLUUID }
}
}
// DirPicksQuery viewer->sim
// reliable
{
DirPicksQuery Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
QueryData Single
{ QueryID LLUUID }
{ QueryFlags U32 }
}
}
// DirPicksQueryBackend sim->dataserver
// reliable
{
DirPicksQueryBackend Low Trusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
}
{
QueryData Single
{ QueryID LLUUID }
{ QueryFlags U32 }
{ EstateID U32 }
{ Godlike BOOL }
}
}
// DirPicksReply dataserver->sim->viewer
// reliable
{
DirPicksReply Low Trusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
}
{
QueryData Single
{ QueryID LLUUID }
}
{
QueryReplies Variable
{ PickID LLUUID }
{ Name Variable 1 }
{ Enabled BOOL }
}
}
// DirLandQuery viewer->sim
// Special query for the land for sale/auction panel.
// reliable
{
DirLandQuery Low 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 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 Trusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
}
{
QueryData Single
{ QueryID LLUUID }
}
{
QueryReplies Variable
{ ParcelID LLUUID }
{ Name Variable 1 }
{ Auction BOOL }
{ ForSale BOOL }
{ ReservedNewbie BOOL }
{ SalePrice S32 }
{ ActualArea S32 }
}
}
// DirPopularQuery viewer->sim
// Special query for the land for sale/auction panel.
// reliable
{
DirPopularQuery Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
QueryData Single
{ QueryID LLUUID }
{ QueryFlags U32 }
}
}
// DirPopularQueryBackend sim->dataserver
// Special query for the land for sale/auction panel.
// reliable
{
DirPopularQueryBackend Low Trusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
}
{
QueryData Single
{ QueryID LLUUID }
{ QueryFlags U32 }
{ EstateID U32 }
{ Godlike BOOL }
}
}
// DirPopularReply
// dataserver -> simulator -> viewer
// reliable
{
DirPopularReply Low Trusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
}
{
QueryData Single
{ QueryID LLUUID }
}
{
QueryReplies Variable
{ ParcelID LLUUID }
{ Name Variable 1 }
{ Dwell F32 }
}
}
// ParcelInfoRequest
// viewer -> simulator -> dataserver
// reliable
{
ParcelInfoRequest Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ ParcelID LLUUID }
}
}
// ParcelInfoReply
// dataserver -> simulator -> viewer
// reliable
{
ParcelInfoReply Low 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ParcelData Single
{ LocalID S32 }
}
}
// simulator -> dataserver
// reliable
{
OnlineStatusRequest Low Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ QueryID LLUUID }
{ EstateID U32 }
{ Godlike BOOL }
{ SpaceIP IPADDR } // check online for right farm
}
{
Data Variable
{ ID LLUUID }
}
}
// dataserver -> simulator
// reliable
{
OnlineStatusReply Low Trusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ QueryID LLUUID }
}
{
Data Variable
{ ID LLUUID } // only online agents are returned
}
}
// ParcelObjectOwnersReply
// simulator -> viewer
// reliable
{
ParcelObjectOwnersReply Low Trusted Zerocoded
{
Data Variable
{ OwnerID LLUUID }
{ IsGroupOwned BOOL }
{ Count S32 }
{ OnlineStatus BOOL }
}
}
// GroupNoticeListRequest
// viewer -> simulator -> dataserver
// reliable
{
GroupNoticesListRequest Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ GroupID LLUUID }
}
}
// GroupNoticesListReply
// dataserver -> simulator -> viewer
// reliable
{
GroupNoticesListReply Low 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ GroupNoticeID LLUUID }
}
}
// GroupNoticeAdd
// Add a group notice.
// simulator -> dataserver
// reliable
{
GroupNoticeAdd Low Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
}
{
MessageBlock Single
{ ToGroupID LLUUID }
{ ID LLUUID }
{ Dialog U8 }
{ FromAgentName Variable 1 }
{ Message Variable 2 }
{ BinaryBucket Variable 2 }
}
}
// GroupNoticeDelete
// Delete a group notice from the database.
// viewer -> simulator -> dataserver
// reliable
{
GroupNoticeDelete Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ GroupNoticeID LLUUID }
{ GroupID LLUUID }
}
}
// ****************************************************************************
// 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 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 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 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 NotTrusted Zerocoded
{
Info Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ LandmarkID LLUUID }
}
}
// TeleportProgress sim->viewer
// Tell the agent how the teleport is going.
{
TeleportProgress Low Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
}
{
Info Single
{ TeleportFlags U32 }
{ Message Variable 1 } // string
}
}
// DataHomeLocationRequest sim->data
// Request
{
DataHomeLocationRequest Low Trusted Zerocoded
{
Info Single
{ AgentID LLUUID }
{ KickedFromEstateID U32 }
}
}
// DataHomeLocationReply data->sim
// response is the location of agent home.
{
DataHomeLocationReply Low Trusted Unencoded
{
Info Single
{ AgentID LLUUID }
{ RegionHandle U64 }
{ Position LLVector3 } // region coords
{ LookAt LLVector3 }
}
}
// SpaceLocationTeleportRequest sim->space
// Reuqest for info about remote location
{
SpaceLocationTeleportRequest Low Trusted Unencoded
{
Info Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ CircuitCode U32 }
{ RegionHandle U64 }
{ Position LLVector3 } // region
{ LookAt LLVector3 }
{ TravelAccess U8 }
{ ParentEstateID U32 }
{ TeleportFlags U32 }
}
}
// SpaceLocationTeleportReply space->sim
// with info about remote location
{
SpaceLocationTeleportReply Low Trusted Unencoded
{
Info Single
{ AgentID LLUUID }
{ LocationID U32 }
{ SimIP IPADDR }
{ SimPort IPPORT }
{ RegionHandle U64 }
{ Position LLVector3 } // region
{ LookAt LLVector3 }
{ SimName Variable 1 }
{ SimAccess U8 }
{ TeleportFlags U32 }
}
}
// TeleportFinish sim->viewer
// called when all of the information has been collected and readied for
// the agent.
{
TeleportFinish Low Trusted Unencoded
{
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 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 NotTrusted Unencoded
{
Info Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ LureID LLUUID }
{ TeleportFlags U32 }
}
}
// TeleportCancel viewer->sim
// reliable
{
TeleportCancel Low NotTrusted Unencoded
{
Info Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
// CompleteLure sim->space
// message with final necessary info about accepted lure. The
// spaceserver will reply with a SpaceLocationTeleportReply or
// TeleportFailed and it becomes like any other teleport.
{
CompleteLure Low Trusted Unencoded
{
Info Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ LureID LLUUID }
{ CircuitCode U32 }
{ TravelAccess U8 }
{ ParentEstateID U32 }
{ TeleportFlags U32 }
}
}
// TeleportStart sim->viewer
// announce a successful teleport request to the viewer.
{
TeleportStart Low Trusted Unencoded
{
Info Single
{ TeleportFlags U32 }
}
}
// TeleportFailed somehwere->sim->viewer
// announce failure of teleport request
{
TeleportFailed Low Trusted Unencoded
{
Info Single
{ AgentID LLUUID }
{ Reason Variable 1 } // string
}
}
// ***************************************************************************
// Leader Board messages
// ***************************************************************************
{
LeaderBoardRequest Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ Type S32 }
}
}
{
LeaderBoardData Low Trusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
}
{
BoardData Single
{ Type S32 }
{ MinPlace S32 }
{ MaxPlace S32 }
{ TimeString Variable 1 } // string
}
{
Entry Variable
{ Sequence S32 }
{ Place S32 }
{ ID LLUUID }
{ Score S32 }
{ Name Fixed 32 } // only send 32 characters of the name, to fit in an MTU
}
}
// ***************************************************************************
// Viewer to Simulator Messages
// ***************************************************************************
// Undo
{
Undo Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ GroupID LLUUID }
}
{
ObjectData Variable
{ ObjectID LLUUID }
}
}
// Redo
{
Redo Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ GroupID LLUUID }
}
{
ObjectData Variable
{ ObjectID LLUUID }
}
}
// UndoLand
{
UndoLand Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
// RedoLand
{
RedoLand Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
// AgentPause - viewer occasionally will block, inform simulator of this fact
{
AgentPause Low 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 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 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 NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ChatData Single
{ Message Variable 2 }
{ Type U8 }
{ Channel S32 }
}
}
// AgentThrottle
{
AgentThrottle Low 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 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 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 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
AnimationList Variable
{ AnimID LLUUID }
{ StartAnim BOOL }
}
}
// AgentRequestSit - Try to sit on an object
{
AgentRequestSit High NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
TargetObject Single
{ TargetID LLUUID }
{ Offset LLVector3 }
}
}
// AgentSit - Actually sit on object
{
AgentSit High NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
// AgentQuit - Sent by viewer when viewer exits normally
// Fuse is used to allow Reset to be passed to neighbors
// *NOTE: obsolete
{
AgentQuit Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
// quit message sent between simulators
{
AgentQuitCopy Low 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 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 Trusted Unencoded
{
ImageID Single
{ ID LLUUID }
}
}
// RebakeAvatarTextures
// simulator -> viewer request when a temporary baked avatar texture is not found
{
RebakeAvatarTextures Low Trusted Unencoded
{
TextureData Single
{ TextureID LLUUID }
}
}
// SetAlwaysRun
// Lets the viewer choose between running and walking
{
SetAlwaysRun Low 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 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 U8 } // 0 to 1, quanta = 0.01
{ PathEnd U8 } // 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 U8 } // 0 to 1, quanta = 0.01
{ ProfileEnd U8 } // 0 to 1, quanta = 0.01
{ ProfileHollow U8 } // 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 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 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 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 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 NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ CacheMissType U8 }
{ ID U32 }
}
}
// ObjectPosition
// viewer -> simulator
{
ObjectPosition Medium NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ ObjectLocalID U32 }
{ Position LLVector3 } // region
}
}
// ObjectScale
// viewer -> simulator
{
ObjectScale Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ ObjectLocalID U32 }
{ Scale LLVector3 }
}
}
// ObjectRotation
// viewer -> simulator
{
ObjectRotation Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ ObjectLocalID U32 }
{ Rotation LLQuaternion }
}
}
// ObjectFlagUpdate
// viewer -> simulator
{
ObjectFlagUpdate Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ ObjectLocalID U32 }
{ UsePhysics BOOL }
{ IsTemporary BOOL }
{ IsPhantom BOOL }
{ CastsShadows BOOL }
}
}
// ObjectClickAction
// viewer -> simulator
{
ObjectClickAction Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ ObjectLocalID U32 }
{ ClickAction U8 }
}
}
// ObjectImage
// viewer -> simulator
{
ObjectImage Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ ObjectLocalID U32 }
{ MediaURL Variable 1 }
{ TextureEntry Variable 2 }
}
}
{
ObjectMaterial Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ ObjectLocalID U32 }
{ Material U8 }
}
}
{
ObjectShape Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ ObjectLocalID U32 }
{ PathCurve U8 }
{ ProfileCurve U8 }
{ PathBegin U8 } // 0 to 1, quanta = 0.01
{ PathEnd U8 } // 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 U8 } // 0 to 1, quanta = 0.01
{ ProfileEnd U8 } // 0 to 1, quanta = 0.01
{ ProfileHollow U8 } // 0 to 1, quanta = 0.01
}
}
{
ObjectExtraParams Low 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 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 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 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 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 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 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 NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ LocalID U32 }
{ SaleType U8 } // U8 -> EForSale
{ SalePrice S32 }
}
}
// set object names
{
ObjectName Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ LocalID U32 }
{ Name Variable 1 }
}
}
// set object descriptions
{
ObjectDescription Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ LocalID U32 }
{ Description Variable 1 }
}
}
// set object category
{
ObjectCategory Low 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 NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ ObjectLocalID U32 }
}
}
// ObjectDeselect
{
ObjectDeselect Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ ObjectLocalID U32 }
}
}
// ObjectAttach
{
ObjectAttach Low 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ ObjectLocalID U32 }
}
}
// ObjectDrop -- drops an attachment from your avatar onto the ground
{
ObjectDrop Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ ObjectLocalID U32 }
}
}
// ObjectLink
{
ObjectLink Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ ObjectLocalID U32 }
}
}
// ObjectDelink
{
ObjectDelink Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ ObjectLocalID U32 }
}
}
// ObjectHinge
{
ObjectHinge Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
JointType Single
{ Type U8 }
}
{
ObjectData Variable
{ ObjectLocalID U32 }
}
}
// ObjectDehinge
{
ObjectDehinge Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Variable
{ ObjectLocalID U32 }
}
}
// ObjectGrab
{
ObjectGrab Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Single
{ LocalID U32 }
{ GrabOffset LLVector3 }
}
}
// ObjectGrabUpdate
// TODO: Quantize this data, reduce message size.
// TimeSinceLast could go to 1 byte, since capped
// at 100 on sim.
{
ObjectGrabUpdate Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Single
{ ObjectID LLUUID }
{ GrabOffsetInitial LLVector3 } // LLVector3
{ GrabPosition LLVector3 } // LLVector3, region local
{ TimeSinceLast U32 }
}
}
// ObjectDeGrab
{
ObjectDeGrab Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Single
{ LocalID U32 }
}
}
// ObjectSpinStart
{
ObjectSpinStart Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Single
{ ObjectID LLUUID }
}
}
// ObjectSpinUpdate
{
ObjectSpinUpdate Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Single
{ ObjectID LLUUID }
{ Rotation LLQuaternion }
}
}
// ObjectSpinStop
{
ObjectSpinStop Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ObjectData Single
{ ObjectID LLUUID }
}
}
// Export selected objects
// viewer->sim
{
ObjectExportSelected Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ RequestID LLUUID }
{ VolumeDetail S16 }
}
{
ObjectData Variable
{ ObjectID LLUUID }
}
}
// Import an object
// viewer->sim
{
ObjectImport Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ FolderID LLUUID }
}
{
AssetData Single
{ FileID LLUUID 1 }
{ ObjectName Variable 1 }
{ Description Variable 1 }
}
}
// ModifyLand - sent to modify a piece of land on a simulator.
// viewer -> sim
{
ModifyLand Low 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 }
}
}
// VelocityInterpolateOn
// viewer->sim
// requires administrative access
{
VelocityInterpolateOn Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
// VelocityInterpolateOff
// viewer->sim
// requires administrative access
{
VelocityInterpolateOff Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
// Save State
// viewer->sim
// requires administrative access
{
StateSave Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
DataBlock Single
{ Filename Variable 1 }
}
}
// ReportAutosaveCrash
// sim->launcher
{
ReportAutosaveCrash Low NotTrusted Unencoded
{
AutosaveData Single
{ PID S32 }
{ Status S32 }
}
}
// SimWideDeletes
{
SimWideDeletes Low 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 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
TargetData Single
{ PreyID LLUUID }
}
}
// end viewer to simulator section
{
ViewerStats Low NotTrusted Zerocoded
{
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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ TaskID LLUUID }
{ ItemID LLUUID }
{ Questions S32 }
}
}
// complaint/bug-report
// reliable
{
UserReport Low 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 Trusted Unencoded
{
AlertData Single
{ Message Variable 1 }
}
}
// Send an AlertMessage to the named agent.
// usually dataserver->simulator
{
AgentAlertMessage Low 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 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 Trusted Unencoded
{
FrozenData Single
{ Data BOOL }
}
}
// Health Message
// Tells viewer what agent health is
{
HealthMessage Low 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 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 Trusted Unencoded
{
Region Single
{ RegionX U32 }
{ RegionY U32 }
{ RegionFlags U32 }
{ ObjectCapacity U32 }
}
{
Stat Variable
{ StatID U32 }
{ StatValue F32 }
}
}
// viewer -> sim
// reliable
{
RequestRegionInfo Low 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 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
}
}
// 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 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 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 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 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 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 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 }
}
}
// 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 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 Trusted Unencoded
{
Location Variable
{ X U8 }
{ Y U8 }
{ Z U8 } // Z in meters / 4
}
{
Index Single
{ You S16 }
{ Prey S16 }
}
}
// ImageData - sent to viewer to transmit information about an image
{
ImageData High 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 Trusted Unencoded
{
ImageID Single
{ ID LLUUID }
{ Packet U16 }
}
{
ImageData Single
{ Data Variable 2 }
}
}
// LayerData - Sent to viewer - encodes layer data
{
LayerData High 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 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 U8 } // 0 to 1, quanta = 0.01
{ PathEnd U8 } // 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 U8 } // 0 to 1, quanta = 0.01
{ ProfileEnd U8 } // 0 to 1, quanta = 0.01
{ ProfileHollow U8 } // 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 Trusted Unencoded
{
RegionData Single
{ RegionHandle U64 }
{ TimeDilation U16 }
}
{
ObjectData Variable
{ UpdateFlags U32 }
{ Data Variable 2 }
}
}
// ObjectUpdateCached
// reliable
{
ObjectUpdateCached High Trusted Unencoded
{
RegionData Single
{ RegionHandle U64 }
{ TimeDilation U16 }
}
{
ObjectData Variable
{ ID U32 }
{ CRC U32 }
{ UpdateFlags U32 }
}
}
// packed terse object update format
{
ImprovedTerseObjectUpdate High 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 Trusted Unencoded
{
ObjectData Variable
{ ID U32 }
}
}
// AgentToNewRegion - tells the viewer that it's agent has moved
{
AgentToNewRegion High Trusted Unencoded
{
RegionData Single
{ SessionID LLUUID }
{ IP IPADDR }
{ Port IPPORT }
{ Handle U64 }
}
}
// CrossedRegion - new way to tell a viewer it has gone across a region
// boundary
{
CrossedRegion Medium Trusted Unencoded
{
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 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 Trusted Unencoded
{
SimulatorInfo Single
{ Handle U64 }
{ IP IPADDR }
{ Port IPPORT }
}
}
// DisableThisSimulator - Tells a viewer not to expect data from this simulator anymore
{
DisableSimulator Low Trusted Unencoded
}
// ConfirmEnableSimulator - A confirmation message sent from simulator to neighbors that the simulator
// has successfully been enabled by the viewer
{
ConfirmEnableSimulator Medium Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
//-----------------------------------------------------------------------------
// New Transfer system
//-----------------------------------------------------------------------------
// Request a new transfer (target->source)
{
TransferRequest Low 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 NotTrusted Zerocoded
{
TransferInfo Single
{ TransferID LLUUID }
{ ChannelType S32 }
{ TargetType S32 }
{ Status S32 }
{ Size S32 }
{ Params Variable 2 }
}
}
{
TransferPacket High 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 NotTrusted Zerocoded
{
TransferInfo Single
{ TransferID LLUUID }
{ ChannelType S32 }
}
}
// Change the priority of a transfer (target->source)
{
TransferPriority Low NotTrusted Zerocoded
{
TransferInfo Single
{ TransferID LLUUID }
{ ChannelType S32 }
{ Priority F32 }
}
}
//-----------------------------------------------------------------------------
// General file transfer
//-----------------------------------------------------------------------------
// RequestXfer - request an arbitrary xfer
{
RequestXfer Low 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 NotTrusted Unencoded
{
XferID Single
{ ID U64 }
{ Packet U32 }
}
{
DataPacket Single
{ Data Variable 2 }
}
}
// ConfirmXferPacket
{
ConfirmXferPacket High NotTrusted Unencoded
{
XferID Single
{ ID U64 }
{ Packet U32 }
}
}
// AbortXfer
{
AbortXfer Low NotTrusted Unencoded
{
XferID Single
{ ID U64 }
{ Result S32 }
}
}
//-----------------------------------------------------------------------------
// Avatar information
//-----------------------------------------------------------------------------
// RequestAvatarInfo
{
RequestAvatarInfo Low Trusted Unencoded
{
DataBlock Single
{ FullID LLUUID }
}
}
// AvatarAnimation - Update animation state
// simulator --> viewer
{
AvatarAnimation High Trusted Unencoded
{
Sender Single
{ ID LLUUID }
}
{
AnimationList Variable
{ AnimID LLUUID }
{ AnimSequenceID S32 }
}
{
AnimationSourceList Variable
{ ObjectID LLUUID }
}
}
// AvatarAppearance - Update visual params
{
AvatarAppearance Low 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 Trusted Zerocoded
{
SitObject Single
{ ID LLUUID }
}
{
SitTransform Single
{ AutoPilot BOOL }
{ SitPosition LLVector3 }
{ SitRotation LLQuaternion }
{ CameraEyeOffset LLVector3 }
{ CameraAtOffset LLVector3 }
{ ForceMouselook BOOL }
}
}
// SetFollowCamProperties
{
SetFollowCamProperties Low Trusted Unencoded
{
ObjectData Single
{ ObjectID LLUUID }
}
{
CameraProperty Variable
{ Type S32 }
{ Value F32 }
}
}
// ClearFollowCamProperties
{
ClearFollowCamProperties Low Trusted Unencoded
{
ObjectData Single
{ ObjectID LLUUID }
}
}
// CameraConstraint - new camera distance limit (based on collision with objects)
{
CameraConstraint High Trusted Zerocoded
{
CameraCollidePlane Single
{ Plane LLVector4 }
}
}
// ObjectProperties
// Extended information such as creator, permissions, etc.
// Medium because potentially driven by mouse hover events.
{
ObjectProperties Medium 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 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 NotTrusted Unencoded
{
ObjectData Single
{ ObjectID LLUUID }
}
}
// PayPriceReply
// sim -> viewer
{
PayPriceReply Low 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 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 Trusted Unencoded
{
UserInfo Single
{ SessionID LLUUID }
{ Flags U32 }
}
}
// GodKickUser
// When a god wants someone kicked
// viewer -> sim
// reliable
{
GodKickUser Low NotTrusted Unencoded
{
UserInfo Single
{ GodID LLUUID }
{ GodSessionID LLUUID }
{ AgentID LLUUID }
{ KickFlags U32 }
{ Reason Variable 2 } // string
}
}
// SystemKickUser
// user->space, reliable
{
SystemKickUser Low Trusted Unencoded
{
AgentInfo Variable
{ AgentID LLUUID }
}
}
// EjectUser
// viewer -> sim
// reliable
{
EjectUser Low 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ TargetID LLUUID }
{ Flags U32 }
}
}
// AvatarPropertiesRequest
// viewer -> simulator
// reliable
{
AvatarPropertiesRequest Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ AvatarID LLUUID }
}
}
// AvatarPropertiesRequestBackend
// simulator -> dataserver
// reliable
{
AvatarPropertiesRequestBackend Low Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ AvatarID LLUUID }
{ GodLevel U8 }
{ WebProfilesDisabled BOOL }
}
}
// AvatarPropertiesReply
// dataserver -> simulator
// simulator -> viewer
// reliable
{
AvatarPropertiesReply Low 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 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 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 }
}
}
// AvatarPropertiesUpdate
// viewer -> simulator
// reliable
{
AvatarPropertiesUpdate Low 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 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
}
}
// AvatarStatisticsReply
// dataserver -> simulator
// simulator -> viewer
// reliable
{
AvatarStatisticsReply Low Trusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
}
{
AvatarData Single
{ AvatarID LLUUID }
}
{
StatisticsData Variable
{ Name Variable 1 } // string
{ Positive S32 }
{ Negative S32 }
}
}
// AvatarNotesReply
// dataserver -> simulator
// simulator -> viewer
// reliable
{
AvatarNotesReply Low Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
}
{
Data Single
{ TargetID LLUUID }
{ Notes Variable 2 } // string
}
}
// AvatarNotesUpdate
// viewer -> simulator -> dataserver
// reliable
{
AvatarNotesUpdate Low 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 Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ TargetID LLUUID }
}
{
Data Variable
{ PickID LLUUID }
{ PickName Variable 1 } // string
}
}
// EventInfoRequest
// viewer -> simulator
// simulator -> dataserver
// reliable
{
EventInfoRequest Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
EventData Single
{ EventID U32 }
}
}
// EventInfoReply
// dataserver -> simulator
// simulator -> viewer
// reliable
{
EventInfoReply Low 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
EventData Single
{ EventID U32 }
}
}
// EventNotificationRemoveRequest
// viewer -> simulator
// simulator -> dataserver
// reliable
{
EventNotificationRemoveRequest Low 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 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
}
}
// PickInfoRequest
// viewer -> simulator
// simulator -> dataserver
// If CreatorID is not null, then we're looking for an agent pick
// or picks.
// reliable
{
PickInfoRequest Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ PickID LLUUID }
}
}
// PickInfoReply
// dataserver -> simulator
// simulator -> viewer
// reliable
{
PickInfoReply Low 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 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 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ PickID LLUUID }
{ QueryID LLUUID }
}
}
// ScriptQuestion
// reliable
{
ScriptQuestion Low Trusted Unencoded
{
Data Single
{ TaskID LLUUID }
{ ItemID LLUUID }
{ ObjectName Variable 1 }
{ ObjectOwner Variable 1 }
{ Questions S32 }
}
}
// ScriptControlChange
// reliable
{
ScriptControlChange Low Trusted Unencoded
{
Data Variable
{ TakeControls BOOL }
{ Controls U32 }
{ PassToAgent BOOL }
}
}
// ScriptDialog
// sim -> viewer
// reliable
{
ScriptDialog Low 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 NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ ObjectID LLUUID }
{ ChatChannel S32 }
{ ButtonIndex S32 }
{ ButtonLabel Variable 1 }
}
}
// ForceScriptControlRelease
// reliable
{
ForceScriptControlRelease Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
// RevokePermissions
// reliable
{
RevokePermissions Low 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 Trusted Unencoded
{
Data Single
{ ObjectName Variable 1 }
{ ObjectID LLUUID }
{ OwnerID LLUUID }
{ OwnerIsGroup BOOL }
{ Message Variable 1 }
{ URL Variable 1 }
}
}
// ScriptTeleportRequest
// reliable
{
ScriptTeleportRequest Low 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 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 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 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 Trusted Zerocoded
{
ParcelData Single
{ RequestResult S32 }
{ SequenceID S32 }
{ SnapSelection BOOL }
{ SelfCount S32 }
{ OtherCount S32 }
{ PublicCount S32 }
{ LocalID S32 }
{ OwnerID LLUUID }
{ IsGroupOwned BOOL }
{ AuctionID U32 }
{ ReservedNewbie BOOL }
{ 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 }
}
}
// ParcelPropertiesUpdate
// viewer -> sim
// reliable
{
ParcelPropertiesUpdate Low 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 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 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 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 NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ParcelData Single
{ LocalID S32 }
{ ReturnType U32 }
}
{
ReturnIDs Variable
{ ReturnID LLUUID }
}
}
// EstateCovenantRequest
// viewer -> sim
// reliable
{
EstateCovenantRequest Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
// EstateCovenantReply
// sim -> viewer
// reliable
{
EstateCovenantReply Low Trusted Unencoded
{
Data Single
{ CovenantID LLUUID }
{ CovenantTimestamp U32 }
{ EstateName Variable 1 } // string
{ EstateOwnerID LLUUID }
}
}
// ForceObjectSelect
// sim -> viewer
// reliable
{
ForceObjectSelect Low Trusted Unencoded
{
Header Single
{ ResetList BOOL }
}
{
Data Variable
{ LocalID U32 }
}
}
// ParcelBuyPass - purchase a temporary access pass
// viewer -> sim
// reliable
{
ParcelBuyPass Low 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 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 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 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 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 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 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 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
}
}
// ParcelGodForceOwner Unencoded
{
ParcelGodForceOwner Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ OwnerID LLUUID }
{ LocalID S32 } // parcel ID
}
}
// viewer -> sim
// ParcelAccessListRequest
{
ParcelAccessListRequest Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ SequenceID S32 }
{ Flags U32 }
{ LocalID S32 }
}
}
// sim -> viewer
// ParcelAccessListReply
{
ParcelAccessListReply Low 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 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ LocalID S32 }
{ ParcelID LLUUID } // filled in on sim
}
}
// dataserver -> sim -> viewer
// reliable
{
ParcelDwellReply Low 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 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
{ ReservedNewbie BOOL }
}
}
// 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 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 }
{ ReservedNewbie BOOL }
{ 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 Trusted Unencoded
{
ParcelData Variable
{ ParcelID LLUUID }
}
}
// sim -> dataserver
// Merges some of the database information for parcels (dwell).
{
MergeParcel Low Trusted Unencoded
{
MasterParcelData Single
{ MasterID LLUUID }
}
{
SlaveParcelData Variable
{ SlaveID LLUUID }
}
}
// sim -> dataserver
{
LogParcelChanges Low 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 Trusted Unencoded
{
RegionData Variable
{ RegionHandle U64 }
}
}
// dataserver -> simulator
// tell a particular simulator to finish parcel sale.
{
ParcelSales Low 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ParcelData Single
{ LocalID S32 }
}
}
// viewer -> sim
{
ParcelGodReserveForNewbie Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ParcelData Single
{ LocalID S32 }
{ SnapshotID LLUUID }
}
}
// 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 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 Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
}
{
ParcelData Single
{ ParcelID LLUUID }
{ SnapshotID LLUUID }
{ Name Variable 1 } // string
}
}
// dataserver -> sim
{
ConfirmAuctionStart Low Trusted Unencoded
{
AuctionData Single
{ ParcelID LLUUID }
{ AuctionID U32 }
}
}
// sim -> dataserver
// Tell the dataserver that an auction has completed.
{
CompleteAuction Low Trusted Unencoded
{
ParcelData Variable
{ ParcelID LLUUID }
}
}
// Tell the dataserver that an auction has been canceled.
{
CancelAuction Low Trusted Unencoded
{
ParcelData Variable
{ ParcelID LLUUID }
}
}
// sim -> dataserver
{
CheckParcelAuctions Low Trusted Unencoded
{
RegionData Variable
{ RegionHandle U64 }
}
}
// dataserver -> sim
// tell a particular simulator to finish parcel sale.
{
ParcelAuctions Low Trusted Unencoded
{
ParcelData Variable
{ ParcelID LLUUID }
{ WinnerID LLUUID }
}
}
// ***************************************************************************
// UUID to name lookup
// ***************************************************************************
// UUIDNameRequest
// Translate a UUID into first and last names
{
UUIDNameRequest Low NotTrusted Unencoded
{
UUIDNameBlock Variable
{ ID LLUUID }
}
}
// UUIDNameReply
// Translate a UUID into first and last names
{
UUIDNameReply Low Trusted Unencoded
{
UUIDNameBlock Variable
{ ID LLUUID }
{ FirstName Variable 1 }
{ LastName Variable 1 }
}
}
// UUIDGroupNameRequest
// Translate a UUID into a group name
{
UUIDGroupNameRequest Low NotTrusted Unencoded
{
UUIDNameBlock Variable
{ ID LLUUID }
}
}
// UUIDGroupNameReply
// Translate a UUID into a group name
{
UUIDGroupNameReply Low 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 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 Trusted Zerocoded
{
EdgeData Single
{ LayerType U8 }
{ Direction U8 }
{ LayerData Variable 2 }
}
}
// Sim status, condition of this sim
// sent reliably, when dirty
{
SimStatus Medium 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 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 }
}
}
// ChildAgentAlive
// sent to child agents just to keep them alive
{
ChildAgentAlive High Trusted Unencoded
{
AgentData Single
{ RegionHandle U64 }
{ ViewerCircuitCode U32 }
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
// ChildAgentPositionUpdate
// sent to child agents just to keep them alive
{
ChildAgentPositionUpdate High 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 Trusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
// This is sent if a full child agent hasn't been accepted yet
{
ChildAgentUnknown Low Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
// Pass Object Between Simulators
//
// BUG compress rotation
// BUG compress scale
{
PassObject High Trusted Zerocoded
{
ObjectData Single
{ ID LLUUID }
{ ParentID 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
{ PCode U8 }
{ Material U8 }
{ State U8 }
{ Scale LLVector3 }
{ UsePhysics U8 }
{ PosX S16 }
{ PosY S16 }
{ PosZ S16 }
{ VelX S16 }
{ VelY S16 }
{ VelZ S16 }
{ Rotation LLQuaternion }
{ AngVelX S16 }
{ AngVelY S16 }
{ AngVelZ S16 }
{ PathCurve U8 }
{ ProfileCurve U8 }
{ PathBegin U8 } // 0 to 1, quanta = 0.01
{ PathEnd U8 } // 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 U8 } // 0 to 1, quanta = 0.01
{ ProfileEnd U8 } // 0 to 1, quanta = 0.01
{ ProfileHollow U8 } // 0 to 1, quanta = 0.01
{ TextureEntry Variable 2 }
{ SubType S16 }
{ Active U8 }
{ Data Variable 2 }
}
{
NVPairData Variable
{ NVPairs Variable 2 }
}
}
// This message is sent how objects get passed between regions.
{
AtomicPassObject High 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 Trusted Unencoded
{
IDBlock Single
{ AgentID LLUUID }
}
}
// GetScriptRunning - asks if a script is running or not. the simulator
// responds with ScriptRunningReply
{
GetScriptRunning Low NotTrusted Unencoded
{
Script Single
{ ObjectID LLUUID }
{ ItemID LLUUID }
}
}
// ScriptRunningReply - response from simulator to message above
{
ScriptRunningReply Low NotTrusted Unencoded
{
Script Single
{ ObjectID LLUUID }
{ ItemID LLUUID }
{ Running BOOL }
}
}
// SetScriptRunning - makes a script active or inactive (Enable may be
// true or false)
{
SetScriptRunning Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Script Single
{ ObjectID LLUUID }
{ ItemID LLUUID }
{ Running BOOL }
}
}
// ScriptReset - causes a script to reset
{
ScriptReset Low 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 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 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ CircuitCode U32 }
}
}
// sim -> viewer
{
AgentMovementComplete Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ Position LLVector3 }
{ LookAt LLVector3 }
{ RegionHandle U64 }
{ Timestamp U32 }
}
}
// sim->dataserver
// log the fact that the agent has logged in.
{
LogLogin Low Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ ViewerDigest LLUUID }
{ LastExecFroze BOOL }
{ SpaceIP IPADDR }
}
}
// This message is sent from the viewer on login or on demand from the
// userserver.
// viewer -> userserver
{
ConnectAgentToUserserver Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
// This message is sent from the userserver when it does not have
// trusted connection or known agent on the circuit.
{
ConnectToUserserver Low Trusted Unencoded
}
//-----------------------------------------------------------------------------
// Logout
//-----------------------------------------------------------------------------
// userserver -> dataserver
{
DataServerLogout Low Trusted Unencoded
{
UserData Single
{ AgentID LLUUID }
{ ViewerIP IPADDR }
{ Disconnect BOOL }
{ SessionID LLUUID }
}
}
// LogoutRequest
// viewer -> sim
// reliable
{
LogoutRequest Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
// FinalizeLogout
// Callback for when sim is done uploading assets to asset server
// viewer -> sim
// reliable
{
FinalizeLogout Low 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 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)
}
}
// LogoutDemand
{
LogoutDemand Low Trusted Unencoded
{
LogoutBlock Single
{ SessionID LLUUID }
}
}
//-----------------------------------------------------------------------------
// 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 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
// DequeueInstantMessages - used to get messages out of the IM
// queue that have come from outside of the system.
{
DequeueInstantMessages Low Trusted Unencoded
}
// 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 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 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 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 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 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 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
MuteData Single
{ MuteCRC U32 }
}
}
// update/add someone in the mute list
{
UpdateMuteListEntry Low 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
MuteData Single
{ MuteID LLUUID }
{ MuteName Variable 1 }
}
}
//
// Inventory update messages
//
{
CopyInventoryFromNotecard Low NotTrusted Zerocoded
{
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 NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID 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 Trusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SimApproved BOOL }
}
{
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 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 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
InventoryData Variable
{ ItemID LLUUID }
}
}
{
ChangeInventoryItemFlags Low 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 Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
}
{
InventoryData Single
{ ItemID LLUUID }
{ NewAssetID LLUUID }
}
}
{
CreateInventoryFolder Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
FolderData Single
{ FolderID LLUUID }
{ ParentID LLUUID }
{ Type S8 }
{ Name Variable 1 }
}
}
{
UpdateInventoryFolder Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
FolderData Variable
{ FolderID LLUUID }
{ ParentID LLUUID }
{ Type S8 }
{ Name Variable 1 }
}
}
{
MoveInventoryFolder Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ Stamp BOOL } // should the server re-timestamp children
}
{
InventoryData Variable
{ FolderID LLUUID }
{ ParentID LLUUID }
}
}
{
RemoveInventoryFolder Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
FolderData Variable
{ FolderID LLUUID }
}
}
// Get inventory segment.
{
FetchInventoryDescendents Low 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 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 NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
InventoryData Variable
{ OwnerID LLUUID }
{ ItemID LLUUID }
}
}
// response to fetch inventory
{
FetchInventoryReply Low 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 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 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 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 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 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 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 NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
InventoryData Single
{ LocalID U32 }
{ ItemID LLUUID }
}
}
{
MoveTaskInventory Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ FolderID LLUUID }
}
{
InventoryData Single
{ LocalID U32 }
{ ItemID LLUUID }
}
}
{
RequestTaskInventory Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
InventoryData Single
{ LocalID U32 }
}
}
{
ReplyTaskInventory Low 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 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 Trusted Unencoded
}
// This message is sent from viewer -> simulator when the viewer wants
// to rez an object out of inventory.
{
RezObject Low 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 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 }
}
}
// if declined, the destid agent from the GiveInventory message
// responds with this message to the userserver
{
DeclineInventory Low NotTrusted Unencoded
{
InfoBlock Single
{ TransactionID LLUUID }
}
}
// sim -> dataserver
// sent during agent to agent inventory transfers
{
TransferInventory Low 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 Trusted Zerocoded
{
InfoBlock Single
{ TransactionID LLUUID }
{ InventoryID LLUUID }
}
}
// Relationships - the start will be a request from sourceid to dest
// id when they are located near each other.
{
RequestFriendship Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
AgentBlock Single
{ FolderID LLUUID } // source ID's calling card folder
{ DestID LLUUID }
{ TransactionID LLUUID }
}
}
{
AcceptFriendship Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
TransactionBlock Single
{ TransactionID LLUUID }
}
{
FolderData Variable
{ FolderID LLUUID } // place to put calling card.
}
}
{
DeclineFriendship Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
TransactionBlock Single
{ TransactionID LLUUID }
}
}
{
FormFriendship Low 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ExBlock Single
{ OtherID LLUUID }
}
}
// used to give someone a calling card.
{
OfferCallingCard Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
AgentBlock Single
{ DestID LLUUID }
{ TransactionID LLUUID }
}
}
{
AcceptCallingCard Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
TransactionBlock Single
{ TransactionID LLUUID }
}
{
FolderData Variable
{ FolderID LLUUID } // place to put calling card.
}
}
{
DeclineCallingCard Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
TransactionBlock Single
{ TransactionID LLUUID }
}
}
// Rez a script onto an object
{
RezScript Low 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 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 NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
EventData Single
{ EventID U32 }
}
{
InventoryBlock Single
{ FolderID LLUUID }
{ Name Variable 1 }
}
}
{
EventLocationRequest Low Trusted Zerocoded
{
QueryData Single
{ QueryID LLUUID }
}
{
EventData Single
{ EventID U32 }
}
}
{
EventLocationReply Low 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 NotTrusted Unencoded
{
RequestBlock Single
{ RegionID LLUUID }
}
}
{
RegionIDAndHandleReply Low 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 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 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
{ Description Variable 1 } // string, name of item for purchases
}
}
// This message is used to coalesce money transfers on a per-agent
// basis. It should only be involved in sim->dataserver money communication.
{
BulkMoneyTransfer Low Trusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ RegionX U32 }
{ RegionY U32 }
}
{
MoneyData Variable
{ TransactionID LLUUID }
{ DestID LLUUID } // destination of the transfer
{ Flags U8 }
{ Amount S32 }
{ TransactionType S32 } // see lltransactiontypes.h
{ Description Variable 1 } // string, name of purchased item
}
}
// This message is sent sim -> viewer when the simulator is queueing
// up transactions. This is because we do not have an authoritative
// balance from the dataserver, but we want to 'guess' how much
// money the agent has on the viewer.
{
AdjustBalance Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ Delta S32 }
}
}
// viewer -> userserver -> dataserver
// Reliable
{
MoneyBalanceRequest Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
MoneyData Single
{ TransactionID LLUUID }
}
}
// dataserver -> simulator -> viewer
{
MoneyBalanceReply Low 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 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
}
}
// This will give you a partial money history on the requested agentid.
// Reliable
{
MoneyHistoryRequest Low NotTrusted Unencoded
{
MoneyData Single
{ AgentID LLUUID }
{ StartPeriod S32 }
{ EndPeriod S32 }
}
}
// Reliable
{
MoneyHistoryReply Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
}
{
MoneyData Single
{ StartPeriod S32 }
{ EndPeriod S32 }
{ Balance S32 }
{ StartDate Variable 1 } // string
{ TaxEstimate S32 }
{ StipendEstimate S32 }
{ BonusEstimate S32 }
}
{
HistoryData Variable
{ Description Variable 1 } // string
{ Amount S32 }
}
}
// CurrentInterval = 0 => this period (week, day, etc.)
// CurrentInterval = 1 => last period
// viewer -> userserver -> dataserver
// reliable
{
MoneySummaryRequest Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
MoneyData Single
{ RequestID LLUUID }
{ IntervalDays S32 }
{ CurrentInterval S32 }
}
}
// dataserver -> userserver -> viewer
// Reliable
{
MoneySummaryReply Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID 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 }
{ StipendEstimate S32 }
{ BonusEstimate S32 }
{ LastTaxDate Variable 1 } // string
{ TaxDate Variable 1 } // string
}
}
// Reliable
{
MoneyDetailsRequest Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
MoneyData Single
{ RequestID LLUUID }
{ IntervalDays S32 }
{ CurrentInterval S32 }
}
}
// Reliable
{
MoneyDetailsReply Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
}
{
MoneyData Single
{ RequestID LLUUID }
{ IntervalDays S32 }
{ CurrentInterval S32 }
{ StartDate Variable 1 } // string
}
{
HistoryData Variable
{ Description Variable 1 } // string
{ Amount S32 }
}
}
// Reliable
{
MoneyTransactionsRequest Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
MoneyData Single
{ RequestID LLUUID }
{ IntervalDays S32 }
{ CurrentInterval S32 }
}
}
// Reliable
{
MoneyTransactionsReply Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID 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 }
}
}
//---------------------------------------------------------------------------
// Gesture saves/loads
//---------------------------------------------------------------------------
// viewer -> userserver -> dataserver
// dataserver -> userserver -> viewer
{
GestureUpdate Medium NotTrusted Unencoded
{
AgentBlock Single
{ AgentID LLUUID }
{ Filename Variable 1 } // String
{ ToViewer BOOL } // BOOL, direction this is going
}
}
// viewer -> userserver -> dataserver
{
GestureRequest Low NotTrusted Unencoded
{
AgentBlock Single
{ AgentID LLUUID }
{ Reset BOOL } // 0=no reset, 1=male, 2=female
}
}
// Tell the database that some gestures are now active
// viewer -> sim -> data
{
ActivateGestures Low 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 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 Trusted Unencoded
{
MuteData Single
{ AgentID LLUUID }
{ Filename Variable 1 }
}
}
// tell viewer to use the local mute cache
{
UseCachedMuteList Low 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 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 Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
}
{
Rights Variable
{ AgentRelated LLUUID }
{ RelatedRights S32 }
}
}
// notification for login and logout.
// source_sim -> dest_viewer
{
OnlineNotification Low Trusted Unencoded
{
AgentBlock Variable
{ AgentID LLUUID }
}
}
{
OfflineNotification Low Trusted Unencoded
{
AgentBlock Variable
{ AgentID LLUUID }
}
}
// SetStartLocationRequest
// viewer -> sim
// failure checked at sim and triggers ImprovedInstantMessage
// success triggers SetStartLocation
{
SetStartLocationRequest Low 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 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 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 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 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 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 Trusted Unencoded
{
TaskData Single
{ ID LLUUID }
}
{
NameValueData Variable
{ NVPair Variable 2 }
}
}
// GetNameValuePair - if the specific task exists on simulator, get the value of this NameVale pair (if it exists)
// FIXME: No transmit. 12 Sep 2002 mark
{
GetNameValuePair Low NotTrusted Unencoded
{
TaskData Single
{ ID LLUUID }
}
{
NameValueName Variable
{ Name 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 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 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 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 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 Trusted Unencoded
{
DataBlock Single
{ ObjectID LLUUID }
{ Gain F32 }
}
}
// AttachedSoundCutoffRadius - Sent by simulator to viewer to change an attached sounds' cutoff radius
{
AttachedSoundCutoffRadius Medium Trusted Unencoded
{
DataBlock Single
{ ObjectID LLUUID }
{ Radius F32 }
}
}
// PreloadSound - Sent by simulator to viewer to preload sound for an object
{
PreloadSound Medium 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 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 NotTrusted Unencoded
{
AssetBlock Single
{ UUID LLUUID }
{ Type S8 }
{ Success BOOL }
}
}
//
// Reputation
//
{
ReputationAgentAssign Low NotTrusted Unencoded
{
DataBlock Single
{ RatorID LLUUID }
{ RateeID LLUUID }
{ Behavior F32 } // float, usually -1 or +1
{ Appearance F32 } // float, usually -1 or +1
{ Building F32 } // float, usually -1 or +1
}
}
// ReputationIndividualRequest
// Gets From's rating of To.
// reliable
{
ReputationIndividualRequest Low NotTrusted Unencoded
{
ReputationData Single
{ FromID LLUUID }
{ ToID LLUUID }
}
}
// ReputationIndividualReply
// reliable
{
ReputationIndividualReply Low Trusted Unencoded
{
ReputationData Single
{ FromID LLUUID }
{ ToID LLUUID }
{ Behavior F32 } // float, usually -1 or +1
{ Appearance F32 } // float, usually -1 or +1
{ Building F32 } // float, usually -1 or +1
}
}
// Script on simulator asks dataserver if there are any email messages
// waiting.
{
EmailMessageRequest Low 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 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 Trusted Unencoded
{
DataBlock Single
{ From Variable 1 }
{ To LLUUID }
{ Subject Variable 1 }
{ Body Variable 2 }
}
}
// Script on simulator asks dataserver for information
{
ScriptDataRequest Low Trusted Unencoded
{
DataBlock Variable
{ Hash U64 }
{ RequestType S8 }
{ Request Variable 2 }
}
}
// Data server responds with data
{
ScriptDataReply Low Trusted Unencoded
{
DataBlock Variable
{ Hash U64 }
{ Reply Variable 2 }
}
}
//-----------------------------------------------------------------------------
// Group messages
//-----------------------------------------------------------------------------
// CreateGroupRequest
// viewer -> simulator
// simulator -> dataserver
// reliable
{
CreateGroupRequest Low 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 Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
}
{
ReplyData Single
{ GroupID LLUUID }
{ Success BOOL }
{ Message Variable 1 } // string
}
}
// UpdateGroupInfo
// viewer -> simulator
// simulator -> dataserver
// reliable
{
UpdateGroupInfo Low 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 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 NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
GroupData Single
{ GroupID LLUUID }
}
}
// JoinGroupReply
// dataserver -> simulator -> viewer
{
JoinGroupReply Low Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
}
{
GroupData Single
{ GroupID LLUUID }
{ Success BOOL }
}
}
// EjectGroupMemberRequest
// viewer -> simulator -> dataserver
// reliable
{
EjectGroupMemberRequest Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
GroupData Single
{ GroupID LLUUID }
}
{
EjectData Variable
{ EjecteeID LLUUID }
}
}
// EjectGroupMemberReply
// dataserver -> simulator -> viewer
// reliable
{
EjectGroupMemberReply Low Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
}
{
GroupData Single
{ GroupID LLUUID }
}
{
EjectData Single
{ Success BOOL }
}
}
// LeaveGroupRequest
// viewer -> simulator -> dataserver
// reliable
{
LeaveGroupRequest Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
GroupData Single
{ GroupID LLUUID }
}
}
// LeaveGroupReply
// dataserver -> simulator -> viewer
{
LeaveGroupReply Low Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
}
{
GroupData Single
{ GroupID LLUUID }
{ Success BOOL }
}
}
// InviteGroupRequest
// viewer -> simulator -> dataserver
// reliable
{
InviteGroupRequest Low 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 Trusted Unencoded
{
InviteData Single
{ AgentID LLUUID }
{ InviteeID LLUUID }
{ GroupID LLUUID }
{ RoleID LLUUID }
{ MembershipFee S32 }
}
}
// GroupProfileRequest
// viewer-> simulator -> dataserver
// reliable
{
GroupProfileRequest Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
GroupData Single
{ GroupID LLUUID }
}
}
// GroupProfileReply
// dataserver -> simulator -> viewer
// reliable
{
GroupProfileReply Low 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 NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ GroupID LLUUID }
}
{
MoneyData Single
{ RequestID LLUUID }
{ IntervalDays S32 }
{ CurrentInterval S32 }
}
}
// dataserver -> simulator -> viewer
// Reliable
{
GroupAccountSummaryReply Low 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 NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ GroupID LLUUID }
}
{
MoneyData Single
{ RequestID LLUUID }
{ IntervalDays S32 }
{ CurrentInterval S32 }
}
}
// Reliable
{
GroupAccountDetailsReply Low 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 NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ GroupID LLUUID }
}
{
MoneyData Single
{ RequestID LLUUID }
{ IntervalDays S32 }
{ CurrentInterval S32 }
}
}
// Reliable
{
GroupAccountTransactionsReply Low 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
GroupData Single
{ GroupID LLUUID }
}
{
TransactionData Single
{ TransactionID LLUUID }
}
}
// GroupActiveProposalItemReply
// dataserver -> simulator -> viewer
// reliable
{
GroupActiveProposalItemReply Low 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
GroupData Single
{ GroupID LLUUID }
}
{
TransactionData Single
{ TransactionID LLUUID }
}
}
// GroupVoteHistoryItemReply
// dataserver -> simulator -> viewer
// reliable
{
GroupVoteHistoryItemReply Low 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 NotTrusted Zerocoded
{
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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ProposalData Single
{ ProposalID LLUUID }
{ GroupID LLUUID }
{ VoteCast Variable 1 } // string
}
}
// TallyVotes userserver -> dataserver
// reliable
{
TallyVotes Low Trusted Unencoded
}
// GroupMembersRequest
// get the group members
// simulator -> dataserver
// reliable
{
GroupMembersRequest Low 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 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 NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ GroupID LLUUID }
}
}
// viewer -> simulator -> dataserver
{
SetGroupContribution Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ GroupID LLUUID }
{ Contribution S32 }
}
}
// viewer -> simulator -> dataserver
{
SetGroupAcceptNotices Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ GroupID LLUUID }
{ AcceptNotices BOOL }
}
}
// GroupRoleDataRequest
// viewer -> simulator -> dataserver
{
GroupRoleDataRequest Low 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 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 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 Trusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ GroupID LLUUID }
{ RequestID LLUUID }
{ TotalPairs U32 }
}
{
MemberData Variable
{ RoleID LLUUID }
{ MemberID LLUUID }
}
}
// GroupTitlesRequest
// viewer -> simulator -> dataserver
{
GroupTitlesRequest Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ GroupID LLUUID }
{ RequestID LLUUID }
}
}
// GroupTitlesReply
// dataserver -> simulator -> viewer
{
GroupTitlesReply Low 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 NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
{ GroupID LLUUID }
{ TitleRoleID LLUUID }
}
}
// GroupRoleUpdate
// viewer -> simulator -> dataserver
{
GroupRoleUpdate Low 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 Trusted Unencoded
{
RequestData Single
{ RequestID LLUUID }
{ AgentID LLUUID }
}
}
// Send down the group
// dataserver -> userserver
{
LiveHelpGroupReply Low 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 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 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 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 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 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 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 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 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 Trusted Zerocoded
{
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 Trusted Zerocoded
{
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 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 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
}
}
// SetSunPhase
// Sets the current phase of the sun - propagated from viewer->sim->spaceserver (if godlike)
{
SetSunPhase Medium NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
Data Single
{ Phase F32 } // F32 (radians)
}
}
// CreateTrustedCircuit
// Sent to establish a trust relationship between two components.
// Only sent in response to a DenyTrustedCircuit message.
{
CreateTrustedCircuit Low 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 NotTrusted Unencoded
{
DataBlock Single
{ EndPointID LLUUID }
}
}
// RequestTrustedCircuit
// If the destination does not trust the sender, a Deny is sent back.
{
RequestTrustedCircuit Low Trusted Unencoded
}
{
RezSingleAttachmentFromInv Low 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 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 NotTrusted Unencoded
{
ObjectData Single
{ AgentID LLUUID }
{ ItemID LLUUID }
}
}
// Viewer -> Sim
// Used in "Make New Outfit"
{
CreateNewOutfitAttachments Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
HeaderData Single
{ NewFolderID LLUUID }
}
{
ObjectData Variable
{ OldItemID LLUUID }
{ OldFolderID LLUUID }
}
}
//-----------------------------------------------------------------------------
// Personal information messages
//-----------------------------------------------------------------------------
{
UserInfoRequest Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
}
{
UserInfoReply Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
}
{
UserData Single
{ IMViaEMail BOOL }
{ DirectoryVisibility Variable 1 }
{ EMail Variable 2 }
}
}
{
UpdateUserInfo Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
UserData Single
{ IMViaEMail BOOL }
{ DirectoryVisibility Variable 1 }
}
}
//-----------------------------------------------------------------------------
// System operations and maintenance
//-----------------------------------------------------------------------------
// GodExpungeUser is sent from a viewer or other untrusted source to
// start the process for getting rid of a list of users. The message
// goes to the userserver, checks for godhood, and forwards the
// request to the dataserver. The dataserver then marks the user as being
// expunged and sends a StartExpungeProcess out to the simulators.
{
GodExpungeUser Low NotTrusted Zerocoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
ExpungeData Variable
{ AgentID LLUUID }
}
}
// StartExpungeProcess is sent from the dataserver to the userserver,
// and from there relayed to the simulators which mark parcels and
// objects owned by the agent as being expunged.
{
StartExpungeProcess Low Trusted Zerocoded
{
ExpungeData Variable
{ AgentID LLUUID }
}
}
// StartExpungeProcessAck - is sent from the userserver to anyone who
// sends a StartExpungeProcess. This is used to aid scripting the
// expunge process, since the message system does not generate
// any errors if you attempt to connect to a non-existant host within
// a reasonable timeframe for scripting
{
StartExpungeProcessAck Low Trusted Unencoded
}
// Message to rename identified parcels. script -> userserver -> dataserver
{
StartParcelRename Low Trusted Unencoded
{
ParcelData Variable
{ ParcelID LLUUID }
{ NewName Variable 1 } // string
}
}
// ack the last message. userserver->script
{
StartParcelRenameAck Low Trusted Unencoded
}
// dataserver -> userserver -> spaceserver
{
BulkParcelRename Low Trusted Zerocoded
{
ParcelData Variable
{ RegionHandle U64 }
{ ParcelID LLUUID }
{ NewName Variable 1 } // string
}
}
// spaceserver -> sim
// tell a particular simulator to rename a parcel
{
ParcelRename Low Trusted Unencoded
{
ParcelData Variable
{ ParcelID LLUUID }
{ NewName Variable 1 } // string
}
}
// message to remove specified parcels. script -> userserver -> dataserver
{
StartParcelRemove Low Trusted Unencoded
{
ParcelData Variable
{ ParcelID LLUUID }
}
}
// ack the start parcel remove message
{
StartParcelRemoveAck Low Trusted Unencoded
}
// dataserver -> userserver -> spaceserver
// The space server will then slice this message into a series of
// RemoveParcel messages.
{
BulkParcelRemove Low Trusted Zerocoded
{
ParcelData Variable
{ RegionHandle U64 }
{ ParcelID LLUUID }
}
}
// sim -> viewer
// initiate upload. primarily used for uploading raw files.
{
InitiateDownload Low 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 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 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 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 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 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 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 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 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 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 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 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 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 Trusted Unencoded
{
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 NotTrusted Unencoded
{
DataBlock Single
{ TaskID LLUUID }
{ ItemID LLUUID }
{ ChannelID LLUUID }
{ IntValue U32 }
{ StringValue Variable 2 } // string
}
}
// Simulator asks for what sim a script lives on (intersim object->object email delivery)
// simulator -> dataserver
// *NOTE: Not in use. Phoenix 2006-08-16
{
MailTaskSimRequest Low Trusted Unencoded
{
DataBlock Single
{ TaskID LLUUID }
}
}
// Reply from dataserver to simulator about where a mailping needs to go.
// Same as below, but needs to be different as it has different routing.
// *NOTE: Not in use. Phoenix 2006-08-16
{
MailTaskSimReply Low Trusted Unencoded
{
TargetBlock Single
{ TargetIP Variable 1 } // String IP
{ TargetPort IPPORT }
}
{
DataBlock Single
{ TaskID LLUUID }
}
}
// ScriptMailRegistration
// Simulator -> dataserver
{
ScriptMailRegistration Low Trusted Unencoded
{
DataBlock Single
{ TargetIP Variable 1 } // String IP
{ TargetPort IPPORT }
{ TaskID LLUUID }
{ Flags U32 }
}
}
// ParcelMediaCommandMessage
// Sends a parcel media command
{
ParcelMediaCommandMessage Low 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 Trusted Unencoded
{
DataBlock Single
{ MediaURL Variable 1 } // string
{ MediaID LLUUID }
{ MediaAutoScale U8 }
}
}
// LandStatRequest
// Sent by the viewer to request collider/script information for a parcel
{
LandStatRequest Low NotTrusted Unencoded
{
AgentData Single
{ AgentID LLUUID }
{ SessionID LLUUID }
}
{
RequestData Single
{ ReportType U32 }
{ RequestFlags U32 }
{ Filter Variable 1 }
{ ParcelLocalID S32 1 }
}
}
// LandStatReply
// Sent by the simulator in response to LandStatRequest
{
LandStatReply Low Trusted Unencoded
{
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 }
}
}