From a22cc1de4c2a16cd7b0e1225a5d7db7cd43331d4 Mon Sep 17 00:00:00 2001 From: John Hurliman Date: Wed, 9 Aug 2006 19:06:41 +0000 Subject: [PATCH] * Updated all the keywords/protocol files for 1.11.3.1 * Moved snowcrash to the applications directory * Removed the Release folder from SLIRC git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@133 52acb1d6-8a22-11de-b505-999d5b087335 --- applications/SLChat/bin/Debug/keywords.txt | 3023 +-- applications/SLChat/bin/Debug/protocol.txt | 20477 ++++++++-------- applications/SLIRC/bin/Debug/keywords.txt | 3023 +-- applications/SLIRC/bin/Debug/protocol.txt | 20477 ++++++++-------- .../SLIRC/bin/Release/Meebey.SmartIrc4net.dll | Bin 94208 -> 0 bytes .../SLIRC/bin/Release/Meebey.SmartIrc4net.pdb | Bin 323072 -> 0 bytes .../SLIRC/bin/Release/Meebey.SmartIrc4net.xml | 661 - applications/SLIRC/bin/Release/SLIRC.exe | Bin 20480 -> 0 bytes applications/SLIRC/bin/Release/SLIRC.pdb | Bin 19968 -> 0 bytes .../SLIRC/bin/Release/libsecondlife.dll | Bin 94208 -> 0 bytes applications/SLProxy/bin/Debug/keywords.txt | 1 + applications/SLProxy/bin/Debug/protocol.txt | 33 +- .../SecondSuite/bin/Debug/keywords.txt | 24 +- .../SecondSuite/bin/Debug/protocol.txt | 10246 +++++++- .../snowcrash}/snowcrash.sln | 0 .../snowcrash}/snowcrash/MainFrame.cpp | 0 .../snowcrash}/snowcrash/MainFrame.h | 0 .../snowcrash}/snowcrash/TrayIconImpl.h | 0 .../snowcrash}/snowcrash/resource.h | 0 .../snowcrash}/snowcrash/small.ico | Bin .../snowcrash}/snowcrash/snowcrash.cpp | 0 .../snowcrash}/snowcrash/snowcrash.h | 0 .../snowcrash}/snowcrash/snowcrash.ico | Bin .../snowcrash}/snowcrash/snowcrash.rc | 0 .../snowcrash}/snowcrash/snowcrash.vcproj | 0 .../snowcrash}/snowcrash/stdafx.cpp | 0 .../snowcrash}/snowcrash/stdafx.h | 0 .../snowcrash}/snowflake/Block.cpp | 0 .../snowcrash}/snowflake/Block.h | 0 .../snowcrash}/snowflake/BlockList.cpp | 0 .../snowcrash}/snowflake/BlockList.h | 0 .../snowcrash}/snowflake/Config.cpp | 0 .../snowcrash}/snowflake/Config.h | 0 .../snowcrash}/snowflake/MainFrame.cpp | 0 .../snowcrash}/snowflake/MainFrame.h | 0 .../snowcrash}/snowflake/Message.cpp | 0 .../snowcrash}/snowflake/Message.h | 0 .../snowcrash}/snowflake/Sequence.cpp | 0 .../snowcrash}/snowflake/Sequence.h | 0 .../snowcrash}/snowflake/SequenceList.cpp | 0 .../snowcrash}/snowflake/SequenceList.h | 0 .../snowcrash}/snowflake/Server.cpp | 0 .../snowcrash}/snowflake/Server.h | 0 .../snowcrash}/snowflake/ServerList.cpp | 0 .../snowcrash}/snowflake/ServerList.h | 0 .../snowcrash}/snowflake/Var.cpp | 0 .../snowcrash}/snowflake/Var.h | 0 .../snowcrash}/snowflake/keywords.cpp | 0 .../snowcrash}/snowflake/keywords.h | 0 .../snowcrash}/snowflake/snowflake.cpp | 0 .../snowcrash}/snowflake/snowflake.h | 0 .../snowcrash}/snowflake/snowflake.vcproj | 0 .../snowcrash}/snowflake/stdafx.cpp | 0 .../snowcrash}/snowflake/stdafx.h | 0 libsecondlife-cs/bin/Debug/keywords.txt | 1 + libsecondlife-cs/bin/Debug/protocol.txt | 33 +- 56 files changed, 33806 insertions(+), 24193 deletions(-) delete mode 100644 applications/SLIRC/bin/Release/Meebey.SmartIrc4net.dll delete mode 100644 applications/SLIRC/bin/Release/Meebey.SmartIrc4net.pdb delete mode 100644 applications/SLIRC/bin/Release/Meebey.SmartIrc4net.xml delete mode 100644 applications/SLIRC/bin/Release/SLIRC.exe delete mode 100644 applications/SLIRC/bin/Release/SLIRC.pdb delete mode 100644 applications/SLIRC/bin/Release/libsecondlife.dll rename {snowcrash => applications/snowcrash}/snowcrash.sln (100%) rename {snowcrash => applications/snowcrash}/snowcrash/MainFrame.cpp (100%) rename {snowcrash => applications/snowcrash}/snowcrash/MainFrame.h (100%) rename {snowcrash => applications/snowcrash}/snowcrash/TrayIconImpl.h (100%) rename {snowcrash => applications/snowcrash}/snowcrash/resource.h (100%) rename {snowcrash => applications/snowcrash}/snowcrash/small.ico (100%) rename {snowcrash => applications/snowcrash}/snowcrash/snowcrash.cpp (100%) rename {snowcrash => applications/snowcrash}/snowcrash/snowcrash.h (100%) rename {snowcrash => applications/snowcrash}/snowcrash/snowcrash.ico (100%) rename {snowcrash => applications/snowcrash}/snowcrash/snowcrash.rc (100%) rename {snowcrash => applications/snowcrash}/snowcrash/snowcrash.vcproj (100%) rename {snowcrash => applications/snowcrash}/snowcrash/stdafx.cpp (100%) rename {snowcrash => applications/snowcrash}/snowcrash/stdafx.h (100%) rename {snowcrash => applications/snowcrash}/snowflake/Block.cpp (100%) rename {snowcrash => applications/snowcrash}/snowflake/Block.h (100%) rename {snowcrash => applications/snowcrash}/snowflake/BlockList.cpp (100%) rename {snowcrash => applications/snowcrash}/snowflake/BlockList.h (100%) rename {snowcrash => applications/snowcrash}/snowflake/Config.cpp (100%) rename {snowcrash => applications/snowcrash}/snowflake/Config.h (100%) rename {snowcrash => applications/snowcrash}/snowflake/MainFrame.cpp (100%) rename {snowcrash => applications/snowcrash}/snowflake/MainFrame.h (100%) rename {snowcrash => applications/snowcrash}/snowflake/Message.cpp (100%) rename {snowcrash => applications/snowcrash}/snowflake/Message.h (100%) rename {snowcrash => applications/snowcrash}/snowflake/Sequence.cpp (100%) rename {snowcrash => applications/snowcrash}/snowflake/Sequence.h (100%) rename {snowcrash => applications/snowcrash}/snowflake/SequenceList.cpp (100%) rename {snowcrash => applications/snowcrash}/snowflake/SequenceList.h (100%) rename {snowcrash => applications/snowcrash}/snowflake/Server.cpp (100%) rename {snowcrash => applications/snowcrash}/snowflake/Server.h (100%) rename {snowcrash => applications/snowcrash}/snowflake/ServerList.cpp (100%) rename {snowcrash => applications/snowcrash}/snowflake/ServerList.h (100%) rename {snowcrash => applications/snowcrash}/snowflake/Var.cpp (100%) rename {snowcrash => applications/snowcrash}/snowflake/Var.h (100%) rename {snowcrash => applications/snowcrash}/snowflake/keywords.cpp (100%) rename {snowcrash => applications/snowcrash}/snowflake/keywords.h (100%) rename {snowcrash => applications/snowcrash}/snowflake/snowflake.cpp (100%) rename {snowcrash => applications/snowcrash}/snowflake/snowflake.h (100%) rename {snowcrash => applications/snowcrash}/snowflake/snowflake.vcproj (100%) rename {snowcrash => applications/snowcrash}/snowflake/stdafx.cpp (100%) rename {snowcrash => applications/snowcrash}/snowflake/stdafx.h (100%) diff --git a/applications/SLChat/bin/Debug/keywords.txt b/applications/SLChat/bin/Debug/keywords.txt index 1c2ab208..38256ca3 100644 --- a/applications/SLChat/bin/Debug/keywords.txt +++ b/applications/SLChat/bin/Debug/keywords.txt @@ -1,1511 +1,1512 @@ -X -Y -Z -VotedForCandidate -AddFlags -Everyone -ReservedNewbie -MapData -AddItem -MeanCollision -RezScript -AvatarSitResponse -InventoryAssetResponse -KillObject -ProposalID -SerialNum -Duration -ScriptQuestion -AddCircuitCode -UseCircuitCode -ViewerCircuitCode -ScriptAnswerYes -PartnerID -DirLandQuery -TeleportStart -EmpoweredBlock -LogMessages -DropGroupIM -AboutText -VisualParam -GroupPrims -SelectedPrims -ID -UUIDNameRequest -UUIDGroupNameRequest -MoneyTransactionsRequest -GroupAccountTransactionsRequest -MapNameRequest -MailTaskSimRequest -LandScriptsRequest -UpdateSimulator -BillableFactor -ObjectBonusFactor -EnableSimulator -DisableSimulator -ConfirmEnableSimulator -LayerType -ParcelOverlay -AdjustBalance -GroupOwned -IP -ChatFromViewer -FirstLogin -GroupTitle -MapLayerReply -CompoundMsgID -CameraConstraint -DownloadTotals -ErrorValue -GenCounter -FrozenData -URLBlock -ChildAgentDying -To -ParcelDirFeeCurrent -ObjectDuplicate -InventoryData -ReplyData -ResetList -SimulatorPauseState -MediaID -RedirectGridX -RedirectGridY -TransferID -Transacted -TexturesChanged -UserLookAt -TestBlock1 -SensedData -UpdateBlock -EmpoweredID -ClassifiedGodDelete -LocationPos -ObjectGrabUpdate -TaxDate -StartDateTime -ObjectUpdateCached -Packets -FailureType -UpdateGroupInfo -InventoryFile -ObjectPermissions -RevokePermissions -UpdateFlags -ObjectExportSelected -RezSelected -AutoPilot -UpdateMuteListEntry -RemoveMuteListEntry -SetSimStatusInDatabase -SetSimPresenceInDatabase -CameraProperty -GroupRecallBallot -BrushSize -StartExpungeProcess -SimulatorSetMap -RegionPresenceRequestByRegionID -TransferEnergy -ParcelObjectOwnersReply -GroupMembersReply -GroupOfficersAndMembersReply -RequestRegionInfo -AABBMax -RequestPayPrice -SimulatorPresentAtLocation -AgentRequestSit -AABBMin -ClassifiedFlags -ControlFlags -TeleportRequest -SpaceLocationTeleportRequest -LeaderBoardRequest -ScriptTeleportRequest -DateUTC -TaskIDs -RequestResult -ReputationAgentAssign -CanAcceptAgents -ObjectSaleInfo -KillChildAgents -Balance -DerezContainer -ObjectData -CameraAtAxis -InfoBlock -OwnershipCost -AvatarNotesUpdate -PID -TimeString -DirPopularReply -TerrainHeightRange00 -SimData -TerrainHeightRange01 -TerrainHeightRange10 -TerrainHeightRange11 -UpdateInventoryItem -MoveInventoryItem -CopyInventoryItem -RemoveInventoryItem -CreateInventoryItem -PathTwistBegin -CRC -AttachmentPoint -TelehubBlock -FOVBlock -StartLocationData -PositionData -TimeSinceLast -MapImage -Objects -URL -CreationDate -JointPivot -RateeID -FPS -HasTelehub -PathEnd -ScriptDataReply -MapBlockReply -PropertiesData -ViewerEffect -FreezeUser -OwnerPrims -ScriptTime -ObjectGrab -ToAgentID -ProxyBlock -SimulatorMapUpdate -TransferPacket -ObjectName -OriginalName -CompletePingCheck -OnlineStatus -TrackOnlineStatus -IgnoreOnlineStatus -ObjectDrop -UseBigPackets -ParcelAccessListReply -RpcChannelReply -RegionPresenceResponse -AgentPresenceResponse -CharterMember -EdgeData -NameData -RegionPushOverride -SimName -UserReport -DownloadPriority -ToAgentId -Mag -DirPopularQuery -ParcelPropertiesRequestByID -ObjectLink -RpcScriptReplyInbound -BoardData -RezData -RemoveInventoryObjects -Officer -GroupProposalBallot -RPCServerIP -Far -GodSessionID -ViewerDigest -FLAboutText -RegionHandshakeReply -GroupActiveProposalItemReply -MapItemReply -Seconds -UpdateUserInfo -AggregatePermTexturesOwner -Set -Key -NewName -AgentID -OnlineStatusRequest -DataAgentAccessRequest -EventNotificationRemoveRequest -Arc -NewFolderID -RegionX -RegionY -RequestData -Msg -Top -MiscStats -Pos -ImageID -DataPacket -ObjectDehinge -You -ScriptControlChange -LoadURL -SetCPURatio -NameValueData -AtomicPassObject -ViewerFrozenMessage -HealthMessage -LogTextMessage -TimeDilation -Contribution -SetGroupContribution -Offline -SecPerDay -Members -FailedResends -CameraCenter -CameraLeftAxis -ExBlock -Channel -NetTest -DiscardLevel -LayerID -RatorID -GrabOffset -SimPort -PricePerMeter -RegionFlags -VoteResult -ParcelDirFeeEstimate -ModifyBlock -InventoryBlock -ReplyBlock -RequireMask -ValidUntil -VelocityInterpolateOn -ClassifiedDelete -FLImageID -AllowPublish -SitName -OfficerTitle -RegionsVisited -RecallID -DirClassifiedReply -AvatarClassifiedReply -ReputationIndividualReply -MediaURL -CompleteAgentMovement -SpaceIP -ClassifiedID -LocalID -RemoveItem -LogFailedMoneyTransaction -ViewerStartAuction -StartAuction -NameValueName -AngVelX -DuplicateFlags -AngVelY -AngVelZ -TextColor -SlaveID -Charter -TargetBlock -AlertData -CheckParcelAuctions -ParcelAuctions -NameValuePair -RemoveNameValuePair -GetNameValuePair -BulkUpdateInventory -UpdateTaskInventory -RemoveTaskInventory -MoveTaskInventory -RequestTaskInventory -ReplyTaskInventory -DeclineInventory -AggregatePermInventory -SimulatorInfo -MoneyTransactionsReply -GroupAccountTransactionsReply -MailTaskSimReply -WearableData -StatisticsData -AccessOK -Enabled -Savings -SimulatorLoad -InternalRegionIP -ExternalRegionIP -CreateGroupRequest -JoinGroupRequest -LeaveGroupRequest -InviteGroupRequest -LiveHelpGroupRequest -ServerVersion -PriceParcelClaimFactor -BillableArea -ScriptCount -ObjectID -ObjectFlagUpdate -ActiveOnly -RequestInventoryAsset -RedoLand -TravelAccess -ChangedGrid -Details -LocationX -SaleType -ObjectExportReply -LocationY -LocationZ -EconomyData -HeadRotation -DeleteOnCompletion -PublicPort -CurrentTaxes -DirClassifiedQuery -RequestParcelTransfer -ObjectCapacity -RequestID -GranterName -RequestXfer -ObjectTaxCurrent -LightTaxCurrent -LandTaxCurrent -GroupTaxCurrent -FetchInventoryDescendents -InventoryDescendents -Descendents -PurgeInventoryDescendents -ShowDir -Timestamp -GlobalPos -LimitedToEstate -GrabOffsetInitial -IsTrial -FinalizeLogout -ObjectDuplicateOnRay -GroupMembershipCount -MethodData -ActivateGestures -DeactivateGestures -ProposalData -PosGlobal -SearchID -RezMultipleAttachmentsFromInv -SearchName -VersionString -CreateGroupReply -ActualArea -RevokedID -Message -ClickAction -AssetUploadComplete -EstimatedTaxes -RequestType -UUID -BaseMask -NetBlock -GlobalX -GlobalY -CopyRotates -KickUserAck -TopPick -SessionID -GlobalZ -CallVote -DeclineFriendship -FormFriendship -TerminateFriendship -TaskData -SimWideMaxPrims -TotalPrims -SourceFilename -ProfileBegin -MoneyDetailsRequest -Request -GroupAccountDetailsRequest -GroupActiveProposalsRequest -VoteQuorum -StringValue -ClosestSimulator -Version -OtherCount -ChatData -IsGroupOwned -EnergyEfficiency -MaxPlace -PickInfoUpdate -PickDelete -ScriptReset -Requester -RevokerID -ElectionID -ForSale -NearestLandingRegionReply -RecordAgentPresence -EraseAgentPresence -ParcelID -Godlike -TotalDebits -Direction -Appearance -HealthData -LeftAxis -PositionBlock -LocationBlock -ObjectImage -TerrainStartHeight00 -TerrainStartHeight01 -TerrainStartHeight10 -ObjectHinge -TerrainStartHeight11 -MetersPerGrid -WaterHeight -FetchInventoryReply -MoneySummaryReply -GroupAccountSummaryReply -AttachedSound -ParamInUse -GodKickUser -PickName -TaskName -SkillFlags -ParcelGodReserveForNewbie -SubType -ObjectCount -RegionPresenceRequestByHandle -RezSingleAttachmentFromInv -ChildAgentUpdate -ToID -ViewerPort -IsOwnerGroup -AgentHeightWidth -VerticalAngle -WearableType -AggregatePermNextOwner -ShowInList -PositionSuggestion -UpdateParcel -ClearAgentSessions -SetAlwaysRun -NVPair -ObjectSpinStart -UseEstateSun -LogoutBlock -RelayLogControl -RegionID -Creator -ViewerRegion -ProposalText -DirEventsReply -EventInfoReply -GroupElectionInfoReply -UserInfoReply -PathRadiusOffset -SessionInfo -TextureData -ChatPass -TargetID -DefaultPayPrice -UserLocation -MaxPrims -RegionIP -LandmarkID -InitiateDownload -Name -OtherCleanTime -TeleportPriceExponent -Gain -VelX -PacketAck -PathSkew -Negative -VelY -SimulatorShutdownRequest -NearestLandingRegionRequest -VelZ -OtherID -MapLayerRequest -PatchVersion -ObjectScale -TargetIP -Redo -MoneyBalance -TrackAgent -MaxX -Data -MaxY -TextureAnim -ReturnIDs -Date -GestureUpdate -AgentWearablesUpdate -AgentDataUpdate -Hash -Left -Mask -ForceMouselook -RequestLocationGetAccess -Success -ObjectGroup -SunHour -MinX -ScriptSensorReply -MinY -Command -Desc -AttachmentNeedsSave -HistoryItemData -AgentCachedTexture -East -Subject -GodExpungeUser -QueryReplies -ObjectCategory -Time -CreateLandmarkForEvent -ParentID -Ping -Perp -Code -InvType -AgentFOV -BulkMoneyTransfer -Audible -AuctionData -IDBlock -ReputationData -West -ElectionData -Undo -Info -Area -Behavior -SimCrashed -Text -AgentToNewRegion -PriceGroupCreate -ObjectShape -PosX -PosY -MuteCRC -PosZ -Size -FromAddress -Body -FileData -List -KickUser -OtherPrims -RunTime -RpcScriptRequestInboundForward -More -Majority -SenderID -MetersTraveled -Stat -FromAgentID -Item -SoundID -User -RemoteInfos -Vote -Prey -UsecSinceStart -RayStart -ParcelData -CameraUpAxis -ScriptDialog -MasterParcelData -Invalid -MinPlace -ProfileCurve -ParcelAccessListUpdate -MuteListUpdate -SendPacket -SendXferPacket -LastName -From -Port -MemberTitle -LogParcelChanges -DeRezObject -IsTemporary -IsComplete -InsigniaID -CheckFlags -TransferPriority -EventID -FromAgentId -Type -ChatType -ReportData -LeaderBoardData -RequestBlock -GrantData -DetachAttachmentIntoInv -ParcelDisableObjects -Sections -GodLevel -StartGroupIM -PayPriceReply -QueryID -CameraEyeOffset -AgentPosition -GrabPosition -GrantModification -RevokeModification -OnlineNotification -OfflineNotification -SendPostcard -RequestFlags -MoneyHistoryRequest -MoneySummaryRequest -GroupMoneyHistoryRequest -GroupAccountSummaryRequest -ParamValue -GroupVoteHistoryRequest -Checksum -MaxAgents -CreateNewOutfitAttachments -RegionHandle -TeleportProgress -AgentQuitCopy -LocationValid -ToViewer -ParcelName -InviteOfficers -PriceObjectRent -ConnectAgentToUserserver -ConnectToUserserver -OfferCallingCard -AgentAccess -AcceptCallingCard -DeclineCallingCard -DataHomeLocationReply -EventLocationReply -UserLoginLocationReply -UserSimLocationReply -SpaceLoginLocationReply -TerseDateID -ObjectOwner -AssetID -AlertMessage -AgentAlertMessage -EstateOwnerMessage -ParcelMediaCommandMessage -Auction -Category -FilePath -ItemFlags -Invoice -IntervalDays -PathScaleX -FromTaskID -TimeInfo -PathScaleY -PublicCount -ParcelJoin -SimulatorBlock -UserBlock -GroupID -AgentVel -RequestImage -NetStats -AgentPos -AgentSit -Material -ObjectDeGrab -VelocityInterpolateOff -AuthorizedBuyerID -RemoveMemberFromGroup -GroupIM -AvatarPropertiesReply -GroupPropertiesReply -GroupProfileReply -Participants -SimOwner -SalePrice -Animation -CurrentDividend -OwnerID -NearestLandingRegionUpdated -PassToAgent -PreyAgent -SimStats -Options -LogoutReply -ObjectLocalID -Dropped -Destination -MasterID -TransferData -WantToMask -AvatarData -ParcelSelectObjects -ExtraParams -LogLogin -CreatorID -Summary -BuyObjectInventory -FetchInventory -InventoryID -PacketNumber -SetFollowCamProperties -ClearFollowCamProperties -SimulatorThrottleSettings -SequenceID -DataServerLogout -NameValue -PathShearX -PathShearY -ElectionType -Velocity -SecPerYear -FirstName -AttachedSoundGainChange -LocationID -Running -ObjectImportReply -AgentThrottle -NeighborList -PathTaperX -PathTaperY -GranterBlock -UseCachedMuteList -FailStats -StartGroupRecall -Tempfile -FounderName -BuyerID -DirPeopleReply -TransferInfo -AvatarPickerRequestBackend -AvatarPropertiesRequestBackend -UpdateData -ReporterID -GranterID -ButtonLabel -WantToText -ReportType -DataBlock -SimulatorReady -AnimationSourceList -RefreshViewer -SubscribeLoad -UnsubscribeLoad -Packet -UndoLand -SimAccess -MembershipFee -CreateInventoryFolder -UpdateInventoryFolder -MoveInventoryFolder -RemoveInventoryFolder -MoneyData -ObjectDeselect -NewAssetID -ObjectAdd -RayEndIsIntersection -CompleteAuction -CircuitCode -AgentMovementComplete -ViewerIP -Header -GestureFlags -XferID -StatValue -PickID -TaskID -GridsPerEdge -RayEnd -Throttles -UpAxis -AgentTextures -Radius -OffCircuit -Access -SquareMetersCredit -Filename -SecuredTemplateChecksumRequest -TemplateChecksumRequest -AgentPresenceRequest -ClassifiedInfoRequest -ParcelInfoRequest -ParcelObjectOwnersRequest -TeleportLandmarkRequest -EventInfoRequest -MovedIntoSimulator -ChatFromSimulator -PickInfoRequest -MoneyBalanceRequest -DirPeopleQuery -GroupElectionInfoRequest -GroupMembersRequest -GroupOfficersAndMembersRequest -TextureID -OldFolderID -UserInfoRequest -LandCollidersRequest -Handle -StartParcelRenameAck -StateLoad -ButtonIndex -CurrentElectionID -GetScriptRunning -SetScriptRunning -Health -FileID -CircuitInfo -ObjectBuy -ProfileEnd -Effect -TestMessage -ScriptMailRegistration -AgentSetAppearance -AvatarAppearance -RegionData -RequestingRegionData -LandingRegionData -SitTransform -TerrainBase0 -SkillsMask -AtAxis -TerrainBase1 -Reason -TerrainBase2 -TerrainBase3 -Params -PingID -Height -Region -MoneyHistoryReply -GroupMoneyHistoryReply -TelehubInfo -StateSave -AgentAnimation -AvatarAnimation -LogDwellTime -ParcelGodMarkAsContent -UsePhysics -JointType -TaxEstimate -ObjectTaxEstimate -LightTaxEstimate -TeleportLandingStatusChanged -LandTaxEstimate -GroupTaxEstimate -Buttons -Sender -Dialog -DestID -PricePublicObjectDelete -ObjectDelete -Delete -EventGodDelete -LastTaxDate -MapImageID -EndDateTime -TerrainDetail0 -TerrainDetail1 -TerrainDetail2 -TerrainDetail3 -Offset -ObjectDelink -TargetObject -IsEstateManager -CancelAuction -ObjectDetach -Compressed -PathBegin -BypassRaycast -WinnerID -ChannelType -NumberNonExemptMembers -NonExemptMembers -Agents -SimulatorStart -Enable -RevokedBlock -MemberData -ImageNotInDatabase -StartDate -AnimID -Serial -GroupElectionBallot -ControlPort -ModifyLand -Digest -Victim -Script -TemplateChecksumReply -PickInfoReply -MoneyBalanceReply -RoutedMoneyBalanceReply -RegionInfo -Sequence -GodUpdateRegionInfo -LocalX -LocalY -StartAnim -Location -Action -SearchDir -Active -TransferRequest -ScriptSensorRequest -MoneyTransferRequest -EjectGroupMemberRequest -SkillsText -Resent -Center -SharedData -PSBlock -UUIDNameBlock -Viewer -Method -TouchName -CandidateID -ParamData -GodlikeMessage -SystemMessage -BodyRotation -StartGroupElection -SearchRegions -Ignore -AnimationData -StatID -ItemID -AvatarStatisticsReply -ScriptDialogReply -RegionIDAndHandleReply -CameraAtOffset -VoteID -ParcelGodForceOwner -InviteData -CandidateData -PCode -SearchPos -PreyID -TerrainLowerLimit -EventFlags -TallyVotes -GroupInfoUpdated -Result -LookAt -PayButton -SelfCount -PacketCount -ParcelBuyPass -SimHandle -Identified -OldItemID -RegionPort -PriceEnergyUnit -Bitmap -TrackAgentSession -CacheMissType -VFileID -Response -GroupInsigniaID -FromID -Online -KickFlags -SysCPU -EMail -InviteMembers -IncludeMembers -AggregatePermTextures -ChatChannel -ReturnID -ObjectAttach -TargetPort -ObjectSpinStop -FullID -ActivateGroup -SysGPU -StartLure -SysRAM -ObjectPosition -SitPosition -StartTime -BornOn -CameraCollidePlane -EconomyDataRequest -TeleportLureRequest -FolderID -RegionHandleRequest -GestureRequest -ScriptDataRequest -AgentWearablesRequest -MapBlockRequest -LureID -CopyCenters -RegisterNewAgent -TotalColliderCount -ParamList -InventorySerial -EdgeDataPacket -AvatarPickerReply -ParcelDwellReply -IsForSale -MuteID -MeanCollisionAlert -CanAcceptTasks -ItemData -AnimationList -PassObject -Reputation -IntValue -TargetType -Amount -UpdateAttachment -RemoveAttachment -HeightWidthBlock -RequestObjectPropertiesFamily -ObjectPropertiesFamily -UserData -SessionBlock -IsReadable -ReputationMax -PathCurve -ReputationMin -Status -AlreadyVoted -ElectionInitiator -PlacesReply -DirPlacesReply -ParcelBuy -DirFindQueryBackend -DirPlacesQueryBackend -DirPeopleQueryBackend -DirGroupsQueryBackend -DirClassifiedQueryBackend -DirPicksQueryBackend -DirLandQueryBackend -DirPopularQueryBackend -SnapshotID -Aspect -LogoutDemand -HistoryData -VoteData -EstimatedDividend -ParamSize -VoteCast -EveryoneMask -CastsShadows -SetSunPhase -ObjectSpinUpdate -MaturePublish -UseExistingAsset -ParcelLocalID -TeleportCancel -UnixTime -QueryFlags -LastExecFroze -AlwaysRun -Bottom -ButtonData -SoundData -ViewerStats -RegionHandshake -Description -ObjectDescription -ParamType -UUIDNameReply -UUIDGroupNameReply -SaveAssetIntoInventory -UserInfo -AnimSequenceID -NVPairs -ParcelAccessListRequest -UserListRequest -MuteListRequest -StartPeriod -RpcChannelRequest -PlacesQuery -DirPlacesQuery -Distance -SortOrder -Hunter -TotalScriptCount -SunAngVelocity -InventoryUpdate -ImagePacket -BinaryBucket -StartGroupProposal -EnergyLevel -PriceForListing -Scale -ParentEstateID -Extra2 -Throttle -SimIP -GodID -TeleportMinPrice -VoteItem -ObjectRotation -SitRotation -SnapSelection -SoundTrigger -TerrainRaiseLimit -Quorum -TokenBlock -AgentBlock -CommandBlock -PricePublicObjectDecay -SpawnPointPos -AttachedSoundCutoffRadius -VolumeDetail -TasksPaused -Range -FromAgentName -AddModifyAbility -RemoveModifyAbility -PublicIP -TeleportFailed -OnlineStatusReply -DataAgentAccessReply -RequestLocationGetAccessReply -RequestAvatarInfo -PreloadSound -ScreenshotID -OldestUnacked -SimulatorIP -ObjectImport -MoneyMax -Value -JointAxisOrAnchor -Test0 -MoneyMin -Test1 -Test2 -SunPhase -Place -Phase -ParcelDivide -PriceObjectClaim -VoteTime -Field -Ratio -JoinGroupReply -LiveHelpGroupReply -Agent -Score -ExpungeData -Image -ObjectClickAction -Delta -InitiateUpload -Parameter -Flags -Plane -Width -VoteText -Right -DirFindQuery -Textures -EventData -Final -TelehubPos -ReportAutosaveCrash -Reset -CreateTrustedCircuit -DenyTrustedCircuit -Codec -Level -Modal -ChildAgentUnknown -LandingType -ScriptRunningReply -MoneyDetailsReply -Reply -TelehubRot -RequestFriendship -AcceptFriendship -GroupAccountDetailsReply -DwellInfo -AgentResume -ItemType -MailFilter -Disconnect -SimPosition -SimWideTotalPrims -Index -BaseFilename -SimFilename -LastOwnerID -EmailMessageRequest -MapItemRequest -AgentCount -InitializeLure -HelloBlock -FuseBlock -MessageBlock -ClassifiedInfoUpdate -RegionPos -ParcelMediaUpdate -GridX -GridY -AuctionID -VoteType -CategoryID -Token -AggregatePerms -StartParcelRemoveAck -ObjectSelect -ForceObjectSelect -Price -SunDirection -FromName -ChangeInventoryItemFlags -Force -TransactionBlock -PowersMask -Stamp -RelatedID -TotalCredits -State -TextureIndex -SimPaused -InviteeID -ParcelReclaim -Money -PathTwist -AuthBuyerID -Color -SourceType -World -QueryData -Users -SysOS -Notes -AvatarID -FounderID -EndPointID -StipendEstimate -LocationLookAt -Sound -Cover -TextureEntry -SquareMetersCommitted -ChannelID -Dwell -North -AgentUpdate -PickGodDelete -UpdateInventoryItemAsset -HostName -PriceParcelClaim -ParcelClaim -ProfileHollow -Count -South -Entry -ObjectUpdateCompressed -MuteFlags -Group -AgentPause -InternalScriptMail -FindAgent -AgentData -FolderData -AssetBlock -CloseCircuit -LogControl -TeleportFinish -PathRevolutions -ClassifiedInfoReply -ParcelInfoReply -LandCollidersReply -AutosaveData -SetStartLocation -PassHours -AttachmentPt -ParcelFlags -NumVotes -AvatarPickerRequest -TeleportLocationRequest -DataHomeLocationRequest -EventNotificationAddRequest -ParcelDwellRequest -ViewerLoginLocationRequest -ViewerSimLocationRequest -EventLocationRequest -EndPeriod -SetStartLocationRequest -UserLoginLocationRequest -QueryStart -AvatarTextureUpdate -RequestGrantedProxies -GrantedProxies -RPCServerPort -Bytes -Extra -ForceScriptControlRelease -ParcelRelease -VFileType -ImageData -SpaceServerSimulatorTimeMessage -SimulatorViewerTimeMessage -Rotation -Selection -TransactionData -OperationData -ExpirationDate -AgentName -ParcelDeedToGroup -DirPicksReply -AvatarPicksReply -AgentInfo -MoneyTransferBackend -NextOwnerMask -MuteData -PassPrice -SourceID -TotalScriptTime -ShowMembersInGroupDir -TeleportFlags -AssetData -SlaveParcelData -MultipleObjectUpdate -ObjectUpdate -ImprovedTerseObjectUpdate -ConfirmXferPacket -StartPingCheck -SimWideDeletes -UserListReply -IsPhantom -AgentList -RezObject -TaskLocalID -ClaimDate -MergeParcel -Priority -Building -QueryText -ReturnType -FetchFolders -SimulatorPublicHostBlock -HeaderData -GroupBlock -RequestMultipleObjects -RetrieveInstantMessages -DequeueInstantMessages -OpenCircuit -SecureSessionID -CrossedRegion -DirGroupsReply -AvatarGroupsReply -EmailMessageReply -GroupVoteHistoryItemReply -ViewerPosition -Position -ParentEstate -MuteName -StartParcelRename -BulkParcelRename -ParcelRename -ViewerFilename -Positive -UserReportInternal -AvatarPropertiesRequest -ParcelPropertiesRequest -GroupPropertiesRequest -GroupProfileRequest -AgentDataUpdateRequest -PriceObjectScaleFactor -DirPicksQuery -OpenEnrollment -GroupData -PauseBlock -RequestGodlikePowers -GrantGodlikePowers -TransactionID -DestinationID -Controls -FirstDetachAll -EstateID -ImprovedInstantMessage -AgentQuit -WantToFlags -CheckParcelSales -ParcelSales -CurrentInterval -PriceRentLight -MediaAutoScale -NeighborBlock -LayerData -NVPairData -TeleportLocal -LayersPaused -VoteInitiator -MailPingBounce -TypeData -OwnerIDs -SystemKickUser -ErrorCode -SLXMLID -TransactionTime -TimeToLive -StartParcelRemove -BulkParcelRemove -DirGroupsQuery -BonusEstimate -MusicURL -CompleteLure -ParcelPrimBonus -EjectUser -CoarseLocationUpdate -ChildAgentPositionUpdate -GroupIndex -GroupName -PriceParcelRent -SimStatus -TransactionSuccess -LureType -GroupMask -SitObject -AssetNum -Override -LocomotionState -PriceUpload -RemoveParcel -ConfirmAuctionStart -RpcScriptRequestInbound -ParcelReturnObjects -TotalObjects -ObjectExtraParams -Questions -TransferAbort -TransferInventory -LandScriptsReply -ColladaID -RayTargetID -ClaimPrice -ObjectProperties -ParcelProperties -LogoutRequest -AssetUploadRequest -ReputationIndividualRequest -MajorVersion -MinorVersion -SimulatorAssign -TransactionType -AvatarPropertiesUpdate -ParcelPropertiesUpdate -FetchItems -AbortXfer -DeRezAck -TakeControls -DirLandReply -SpaceLocationTeleportReply -MuteType -IMViaEMail -StartExpungeProcessAck -RentPrice -GenericMessage -ChildAgentAlive -SpawnPointBlock -AttachmentBlock -RecallData -OfficerData -GroupOfficer -ObjectMaterial -OwnerName -AvatarNotesReply -CacheID -OwnerMask -TransferInventoryAck \ No newline at end of file +SeedCapability +X +Y +Z +VotedForCandidate +AddFlags +Everyone +ReservedNewbie +MapData +AddItem +MeanCollision +RezScript +AvatarSitResponse +InventoryAssetResponse +KillObject +ProposalID +SerialNum +Duration +ScriptQuestion +AddCircuitCode +UseCircuitCode +ViewerCircuitCode +ScriptAnswerYes +PartnerID +DirLandQuery +TeleportStart +EmpoweredBlock +LogMessages +DropGroupIM +AboutText +VisualParam +GroupPrims +SelectedPrims +ID +UUIDNameRequest +UUIDGroupNameRequest +MoneyTransactionsRequest +GroupAccountTransactionsRequest +MapNameRequest +MailTaskSimRequest +LandScriptsRequest +UpdateSimulator +BillableFactor +ObjectBonusFactor +EnableSimulator +DisableSimulator +ConfirmEnableSimulator +LayerType +ParcelOverlay +AdjustBalance +GroupOwned +IP +ChatFromViewer +FirstLogin +GroupTitle +MapLayerReply +CompoundMsgID +CameraConstraint +DownloadTotals +ErrorValue +GenCounter +FrozenData +URLBlock +ChildAgentDying +To +ParcelDirFeeCurrent +ObjectDuplicate +InventoryData +ReplyData +ResetList +SimulatorPauseState +MediaID +RedirectGridX +RedirectGridY +TransferID +Transacted +TexturesChanged +UserLookAt +TestBlock1 +SensedData +UpdateBlock +EmpoweredID +ClassifiedGodDelete +LocationPos +ObjectGrabUpdate +TaxDate +StartDateTime +ObjectUpdateCached +Packets +FailureType +UpdateGroupInfo +InventoryFile +ObjectPermissions +RevokePermissions +UpdateFlags +ObjectExportSelected +RezSelected +AutoPilot +UpdateMuteListEntry +RemoveMuteListEntry +SetSimStatusInDatabase +SetSimPresenceInDatabase +CameraProperty +GroupRecallBallot +BrushSize +StartExpungeProcess +SimulatorSetMap +RegionPresenceRequestByRegionID +TransferEnergy +ParcelObjectOwnersReply +GroupMembersReply +GroupOfficersAndMembersReply +RequestRegionInfo +AABBMax +RequestPayPrice +SimulatorPresentAtLocation +AgentRequestSit +AABBMin +ClassifiedFlags +ControlFlags +TeleportRequest +SpaceLocationTeleportRequest +LeaderBoardRequest +ScriptTeleportRequest +DateUTC +TaskIDs +RequestResult +ReputationAgentAssign +CanAcceptAgents +ObjectSaleInfo +KillChildAgents +Balance +DerezContainer +ObjectData +CameraAtAxis +InfoBlock +OwnershipCost +AvatarNotesUpdate +PID +TimeString +DirPopularReply +TerrainHeightRange00 +SimData +TerrainHeightRange01 +TerrainHeightRange10 +TerrainHeightRange11 +UpdateInventoryItem +MoveInventoryItem +CopyInventoryItem +RemoveInventoryItem +CreateInventoryItem +PathTwistBegin +CRC +AttachmentPoint +TelehubBlock +FOVBlock +StartLocationData +PositionData +TimeSinceLast +MapImage +Objects +URL +CreationDate +JointPivot +RateeID +FPS +HasTelehub +PathEnd +ScriptDataReply +MapBlockReply +PropertiesData +ViewerEffect +FreezeUser +OwnerPrims +ScriptTime +ObjectGrab +ToAgentID +ProxyBlock +SimulatorMapUpdate +TransferPacket +ObjectName +OriginalName +CompletePingCheck +OnlineStatus +TrackOnlineStatus +IgnoreOnlineStatus +ObjectDrop +UseBigPackets +ParcelAccessListReply +RpcChannelReply +RegionPresenceResponse +AgentPresenceResponse +CharterMember +EdgeData +NameData +RegionPushOverride +SimName +UserReport +DownloadPriority +ToAgentId +Mag +DirPopularQuery +ParcelPropertiesRequestByID +ObjectLink +RpcScriptReplyInbound +BoardData +RezData +RemoveInventoryObjects +Officer +GroupProposalBallot +RPCServerIP +Far +GodSessionID +ViewerDigest +FLAboutText +RegionHandshakeReply +GroupActiveProposalItemReply +MapItemReply +Seconds +UpdateUserInfo +AggregatePermTexturesOwner +Set +Key +NewName +AgentID +OnlineStatusRequest +DataAgentAccessRequest +EventNotificationRemoveRequest +Arc +NewFolderID +RegionX +RegionY +RequestData +Msg +Top +MiscStats +Pos +ImageID +DataPacket +ObjectDehinge +You +ScriptControlChange +LoadURL +SetCPURatio +NameValueData +AtomicPassObject +ViewerFrozenMessage +HealthMessage +LogTextMessage +TimeDilation +Contribution +SetGroupContribution +Offline +SecPerDay +Members +FailedResends +CameraCenter +CameraLeftAxis +ExBlock +Channel +NetTest +DiscardLevel +LayerID +RatorID +GrabOffset +SimPort +PricePerMeter +RegionFlags +VoteResult +ParcelDirFeeEstimate +ModifyBlock +InventoryBlock +ReplyBlock +RequireMask +ValidUntil +VelocityInterpolateOn +ClassifiedDelete +FLImageID +AllowPublish +SitName +OfficerTitle +RegionsVisited +RecallID +DirClassifiedReply +AvatarClassifiedReply +ReputationIndividualReply +MediaURL +CompleteAgentMovement +SpaceIP +ClassifiedID +LocalID +RemoveItem +LogFailedMoneyTransaction +ViewerStartAuction +StartAuction +NameValueName +AngVelX +DuplicateFlags +AngVelY +AngVelZ +TextColor +SlaveID +Charter +TargetBlock +AlertData +CheckParcelAuctions +ParcelAuctions +NameValuePair +RemoveNameValuePair +GetNameValuePair +BulkUpdateInventory +UpdateTaskInventory +RemoveTaskInventory +MoveTaskInventory +RequestTaskInventory +ReplyTaskInventory +DeclineInventory +AggregatePermInventory +SimulatorInfo +MoneyTransactionsReply +GroupAccountTransactionsReply +MailTaskSimReply +WearableData +StatisticsData +AccessOK +Enabled +Savings +SimulatorLoad +InternalRegionIP +ExternalRegionIP +CreateGroupRequest +JoinGroupRequest +LeaveGroupRequest +InviteGroupRequest +LiveHelpGroupRequest +ServerVersion +PriceParcelClaimFactor +BillableArea +ScriptCount +ObjectID +ObjectFlagUpdate +ActiveOnly +RequestInventoryAsset +RedoLand +TravelAccess +ChangedGrid +Details +LocationX +SaleType +ObjectExportReply +LocationY +LocationZ +EconomyData +HeadRotation +DeleteOnCompletion +PublicPort +CurrentTaxes +DirClassifiedQuery +RequestParcelTransfer +ObjectCapacity +RequestID +GranterName +RequestXfer +ObjectTaxCurrent +LightTaxCurrent +LandTaxCurrent +GroupTaxCurrent +FetchInventoryDescendents +InventoryDescendents +Descendents +PurgeInventoryDescendents +ShowDir +Timestamp +GlobalPos +LimitedToEstate +GrabOffsetInitial +IsTrial +FinalizeLogout +ObjectDuplicateOnRay +GroupMembershipCount +MethodData +ActivateGestures +DeactivateGestures +ProposalData +PosGlobal +SearchID +RezMultipleAttachmentsFromInv +SearchName +VersionString +CreateGroupReply +ActualArea +RevokedID +Message +ClickAction +AssetUploadComplete +EstimatedTaxes +RequestType +UUID +BaseMask +NetBlock +GlobalX +GlobalY +CopyRotates +KickUserAck +TopPick +SessionID +GlobalZ +CallVote +DeclineFriendship +FormFriendship +TerminateFriendship +TaskData +SimWideMaxPrims +TotalPrims +SourceFilename +ProfileBegin +MoneyDetailsRequest +Request +GroupAccountDetailsRequest +GroupActiveProposalsRequest +VoteQuorum +StringValue +ClosestSimulator +Version +OtherCount +ChatData +IsGroupOwned +EnergyEfficiency +MaxPlace +PickInfoUpdate +PickDelete +ScriptReset +Requester +RevokerID +ElectionID +ForSale +NearestLandingRegionReply +RecordAgentPresence +EraseAgentPresence +ParcelID +Godlike +TotalDebits +Direction +Appearance +HealthData +LeftAxis +PositionBlock +LocationBlock +ObjectImage +TerrainStartHeight00 +TerrainStartHeight01 +TerrainStartHeight10 +ObjectHinge +TerrainStartHeight11 +MetersPerGrid +WaterHeight +FetchInventoryReply +MoneySummaryReply +GroupAccountSummaryReply +AttachedSound +ParamInUse +GodKickUser +PickName +TaskName +SkillFlags +ParcelGodReserveForNewbie +SubType +ObjectCount +RegionPresenceRequestByHandle +RezSingleAttachmentFromInv +ChildAgentUpdate +ToID +ViewerPort +IsOwnerGroup +AgentHeightWidth +VerticalAngle +WearableType +AggregatePermNextOwner +ShowInList +PositionSuggestion +UpdateParcel +ClearAgentSessions +SetAlwaysRun +NVPair +ObjectSpinStart +UseEstateSun +LogoutBlock +RelayLogControl +RegionID +Creator +ViewerRegion +ProposalText +DirEventsReply +EventInfoReply +GroupElectionInfoReply +UserInfoReply +PathRadiusOffset +SessionInfo +TextureData +ChatPass +TargetID +DefaultPayPrice +UserLocation +MaxPrims +RegionIP +LandmarkID +InitiateDownload +Name +OtherCleanTime +TeleportPriceExponent +Gain +VelX +PacketAck +PathSkew +Negative +VelY +SimulatorShutdownRequest +NearestLandingRegionRequest +VelZ +OtherID +MapLayerRequest +PatchVersion +ObjectScale +TargetIP +Redo +MoneyBalance +TrackAgent +MaxX +Data +MaxY +TextureAnim +ReturnIDs +Date +GestureUpdate +AgentWearablesUpdate +AgentDataUpdate +Hash +Left +Mask +ForceMouselook +RequestLocationGetAccess +Success +ObjectGroup +SunHour +MinX +ScriptSensorReply +MinY +Command +Desc +AttachmentNeedsSave +HistoryItemData +AgentCachedTexture +East +Subject +GodExpungeUser +QueryReplies +ObjectCategory +Time +CreateLandmarkForEvent +ParentID +Ping +Perp +Code +InvType +AgentFOV +BulkMoneyTransfer +Audible +AuctionData +IDBlock +ReputationData +West +ElectionData +Undo +Info +Area +Behavior +SimCrashed +Text +AgentToNewRegion +PriceGroupCreate +ObjectShape +PosX +PosY +MuteCRC +PosZ +Size +FromAddress +Body +FileData +List +KickUser +OtherPrims +RunTime +RpcScriptRequestInboundForward +More +Majority +SenderID +MetersTraveled +Stat +FromAgentID +Item +SoundID +User +RemoteInfos +Vote +Prey +UsecSinceStart +RayStart +ParcelData +CameraUpAxis +ScriptDialog +MasterParcelData +Invalid +MinPlace +ProfileCurve +ParcelAccessListUpdate +MuteListUpdate +SendPacket +SendXferPacket +LastName +From +Port +MemberTitle +LogParcelChanges +DeRezObject +IsTemporary +IsComplete +InsigniaID +CheckFlags +TransferPriority +EventID +FromAgentId +Type +ChatType +ReportData +LeaderBoardData +RequestBlock +GrantData +DetachAttachmentIntoInv +ParcelDisableObjects +Sections +GodLevel +StartGroupIM +PayPriceReply +QueryID +CameraEyeOffset +AgentPosition +GrabPosition +GrantModification +RevokeModification +OnlineNotification +OfflineNotification +SendPostcard +RequestFlags +MoneyHistoryRequest +MoneySummaryRequest +GroupMoneyHistoryRequest +GroupAccountSummaryRequest +ParamValue +GroupVoteHistoryRequest +Checksum +MaxAgents +CreateNewOutfitAttachments +RegionHandle +TeleportProgress +AgentQuitCopy +LocationValid +ToViewer +ParcelName +InviteOfficers +PriceObjectRent +ConnectAgentToUserserver +ConnectToUserserver +OfferCallingCard +AgentAccess +AcceptCallingCard +DeclineCallingCard +DataHomeLocationReply +EventLocationReply +UserLoginLocationReply +UserSimLocationReply +SpaceLoginLocationReply +TerseDateID +ObjectOwner +AssetID +AlertMessage +AgentAlertMessage +EstateOwnerMessage +ParcelMediaCommandMessage +Auction +Category +FilePath +ItemFlags +Invoice +IntervalDays +PathScaleX +FromTaskID +TimeInfo +PathScaleY +PublicCount +ParcelJoin +SimulatorBlock +UserBlock +GroupID +AgentVel +RequestImage +NetStats +AgentPos +AgentSit +Material +ObjectDeGrab +VelocityInterpolateOff +AuthorizedBuyerID +RemoveMemberFromGroup +GroupIM +AvatarPropertiesReply +GroupPropertiesReply +GroupProfileReply +Participants +SimOwner +SalePrice +Animation +CurrentDividend +OwnerID +NearestLandingRegionUpdated +PassToAgent +PreyAgent +SimStats +Options +LogoutReply +ObjectLocalID +Dropped +Destination +MasterID +TransferData +WantToMask +AvatarData +ParcelSelectObjects +ExtraParams +LogLogin +CreatorID +Summary +BuyObjectInventory +FetchInventory +InventoryID +PacketNumber +SetFollowCamProperties +ClearFollowCamProperties +SimulatorThrottleSettings +SequenceID +DataServerLogout +NameValue +PathShearX +PathShearY +ElectionType +Velocity +SecPerYear +FirstName +AttachedSoundGainChange +LocationID +Running +ObjectImportReply +AgentThrottle +NeighborList +PathTaperX +PathTaperY +GranterBlock +UseCachedMuteList +FailStats +StartGroupRecall +Tempfile +FounderName +BuyerID +DirPeopleReply +TransferInfo +AvatarPickerRequestBackend +AvatarPropertiesRequestBackend +UpdateData +ReporterID +GranterID +ButtonLabel +WantToText +ReportType +DataBlock +SimulatorReady +AnimationSourceList +RefreshViewer +SubscribeLoad +UnsubscribeLoad +Packet +UndoLand +SimAccess +MembershipFee +CreateInventoryFolder +UpdateInventoryFolder +MoveInventoryFolder +RemoveInventoryFolder +MoneyData +ObjectDeselect +NewAssetID +ObjectAdd +RayEndIsIntersection +CompleteAuction +CircuitCode +AgentMovementComplete +ViewerIP +Header +GestureFlags +XferID +StatValue +PickID +TaskID +GridsPerEdge +RayEnd +Throttles +UpAxis +AgentTextures +Radius +OffCircuit +Access +SquareMetersCredit +Filename +SecuredTemplateChecksumRequest +TemplateChecksumRequest +AgentPresenceRequest +ClassifiedInfoRequest +ParcelInfoRequest +ParcelObjectOwnersRequest +TeleportLandmarkRequest +EventInfoRequest +MovedIntoSimulator +ChatFromSimulator +PickInfoRequest +MoneyBalanceRequest +DirPeopleQuery +GroupElectionInfoRequest +GroupMembersRequest +GroupOfficersAndMembersRequest +TextureID +OldFolderID +UserInfoRequest +LandCollidersRequest +Handle +StartParcelRenameAck +StateLoad +ButtonIndex +CurrentElectionID +GetScriptRunning +SetScriptRunning +Health +FileID +CircuitInfo +ObjectBuy +ProfileEnd +Effect +TestMessage +ScriptMailRegistration +AgentSetAppearance +AvatarAppearance +RegionData +RequestingRegionData +LandingRegionData +SitTransform +TerrainBase0 +SkillsMask +AtAxis +TerrainBase1 +Reason +TerrainBase2 +TerrainBase3 +Params +PingID +Height +Region +MoneyHistoryReply +GroupMoneyHistoryReply +TelehubInfo +StateSave +AgentAnimation +AvatarAnimation +LogDwellTime +ParcelGodMarkAsContent +UsePhysics +JointType +TaxEstimate +ObjectTaxEstimate +LightTaxEstimate +TeleportLandingStatusChanged +LandTaxEstimate +GroupTaxEstimate +Buttons +Sender +Dialog +DestID +PricePublicObjectDelete +ObjectDelete +Delete +EventGodDelete +LastTaxDate +MapImageID +EndDateTime +TerrainDetail0 +TerrainDetail1 +TerrainDetail2 +TerrainDetail3 +Offset +ObjectDelink +TargetObject +IsEstateManager +CancelAuction +ObjectDetach +Compressed +PathBegin +BypassRaycast +WinnerID +ChannelType +NumberNonExemptMembers +NonExemptMembers +Agents +SimulatorStart +Enable +RevokedBlock +MemberData +ImageNotInDatabase +StartDate +AnimID +Serial +GroupElectionBallot +ControlPort +ModifyLand +Digest +Victim +Script +TemplateChecksumReply +PickInfoReply +MoneyBalanceReply +RoutedMoneyBalanceReply +RegionInfo +Sequence +GodUpdateRegionInfo +LocalX +LocalY +StartAnim +Location +Action +SearchDir +Active +TransferRequest +ScriptSensorRequest +MoneyTransferRequest +EjectGroupMemberRequest +SkillsText +Resent +Center +SharedData +PSBlock +UUIDNameBlock +Viewer +Method +TouchName +CandidateID +ParamData +GodlikeMessage +SystemMessage +BodyRotation +StartGroupElection +SearchRegions +Ignore +AnimationData +StatID +ItemID +AvatarStatisticsReply +ScriptDialogReply +RegionIDAndHandleReply +CameraAtOffset +VoteID +ParcelGodForceOwner +InviteData +CandidateData +PCode +SearchPos +PreyID +TerrainLowerLimit +EventFlags +TallyVotes +GroupInfoUpdated +Result +LookAt +PayButton +SelfCount +PacketCount +ParcelBuyPass +SimHandle +Identified +OldItemID +RegionPort +PriceEnergyUnit +Bitmap +TrackAgentSession +CacheMissType +VFileID +Response +GroupInsigniaID +FromID +Online +KickFlags +SysCPU +EMail +InviteMembers +IncludeMembers +AggregatePermTextures +ChatChannel +ReturnID +ObjectAttach +TargetPort +ObjectSpinStop +FullID +ActivateGroup +SysGPU +StartLure +SysRAM +ObjectPosition +SitPosition +StartTime +BornOn +CameraCollidePlane +EconomyDataRequest +TeleportLureRequest +FolderID +RegionHandleRequest +GestureRequest +ScriptDataRequest +AgentWearablesRequest +MapBlockRequest +LureID +CopyCenters +RegisterNewAgent +TotalColliderCount +ParamList +InventorySerial +EdgeDataPacket +AvatarPickerReply +ParcelDwellReply +IsForSale +MuteID +MeanCollisionAlert +CanAcceptTasks +ItemData +AnimationList +PassObject +Reputation +IntValue +TargetType +Amount +UpdateAttachment +RemoveAttachment +HeightWidthBlock +RequestObjectPropertiesFamily +ObjectPropertiesFamily +UserData +SessionBlock +IsReadable +ReputationMax +PathCurve +ReputationMin +Status +AlreadyVoted +ElectionInitiator +PlacesReply +DirPlacesReply +ParcelBuy +DirFindQueryBackend +DirPlacesQueryBackend +DirPeopleQueryBackend +DirGroupsQueryBackend +DirClassifiedQueryBackend +DirPicksQueryBackend +DirLandQueryBackend +DirPopularQueryBackend +SnapshotID +Aspect +LogoutDemand +HistoryData +VoteData +EstimatedDividend +ParamSize +VoteCast +EveryoneMask +CastsShadows +SetSunPhase +ObjectSpinUpdate +MaturePublish +UseExistingAsset +ParcelLocalID +TeleportCancel +UnixTime +QueryFlags +LastExecFroze +AlwaysRun +Bottom +ButtonData +SoundData +ViewerStats +RegionHandshake +Description +ObjectDescription +ParamType +UUIDNameReply +UUIDGroupNameReply +SaveAssetIntoInventory +UserInfo +AnimSequenceID +NVPairs +ParcelAccessListRequest +UserListRequest +MuteListRequest +StartPeriod +RpcChannelRequest +PlacesQuery +DirPlacesQuery +Distance +SortOrder +Hunter +TotalScriptCount +SunAngVelocity +InventoryUpdate +ImagePacket +BinaryBucket +StartGroupProposal +EnergyLevel +PriceForListing +Scale +ParentEstateID +Extra2 +Throttle +SimIP +GodID +TeleportMinPrice +VoteItem +ObjectRotation +SitRotation +SnapSelection +SoundTrigger +TerrainRaiseLimit +Quorum +TokenBlock +AgentBlock +CommandBlock +PricePublicObjectDecay +SpawnPointPos +AttachedSoundCutoffRadius +VolumeDetail +TasksPaused +Range +FromAgentName +AddModifyAbility +RemoveModifyAbility +PublicIP +TeleportFailed +OnlineStatusReply +DataAgentAccessReply +RequestLocationGetAccessReply +RequestAvatarInfo +PreloadSound +ScreenshotID +OldestUnacked +SimulatorIP +ObjectImport +MoneyMax +Value +JointAxisOrAnchor +Test0 +MoneyMin +Test1 +Test2 +SunPhase +Place +Phase +ParcelDivide +PriceObjectClaim +VoteTime +Field +Ratio +JoinGroupReply +LiveHelpGroupReply +Agent +Score +ExpungeData +Image +ObjectClickAction +Delta +InitiateUpload +Parameter +Flags +Plane +Width +VoteText +Right +DirFindQuery +Textures +EventData +Final +TelehubPos +ReportAutosaveCrash +Reset +CreateTrustedCircuit +DenyTrustedCircuit +Codec +Level +Modal +ChildAgentUnknown +LandingType +ScriptRunningReply +MoneyDetailsReply +Reply +TelehubRot +RequestFriendship +AcceptFriendship +GroupAccountDetailsReply +DwellInfo +AgentResume +ItemType +MailFilter +Disconnect +SimPosition +SimWideTotalPrims +Index +BaseFilename +SimFilename +LastOwnerID +EmailMessageRequest +MapItemRequest +AgentCount +InitializeLure +HelloBlock +FuseBlock +MessageBlock +ClassifiedInfoUpdate +RegionPos +ParcelMediaUpdate +GridX +GridY +AuctionID +VoteType +CategoryID +Token +AggregatePerms +StartParcelRemoveAck +ObjectSelect +ForceObjectSelect +Price +SunDirection +FromName +ChangeInventoryItemFlags +Force +TransactionBlock +PowersMask +Stamp +RelatedID +TotalCredits +State +TextureIndex +SimPaused +InviteeID +ParcelReclaim +Money +PathTwist +AuthBuyerID +Color +SourceType +World +QueryData +Users +SysOS +Notes +AvatarID +FounderID +EndPointID +StipendEstimate +LocationLookAt +Sound +Cover +TextureEntry +SquareMetersCommitted +ChannelID +Dwell +North +AgentUpdate +PickGodDelete +UpdateInventoryItemAsset +HostName +PriceParcelClaim +ParcelClaim +ProfileHollow +Count +South +Entry +ObjectUpdateCompressed +MuteFlags +Group +AgentPause +InternalScriptMail +FindAgent +AgentData +FolderData +AssetBlock +CloseCircuit +LogControl +TeleportFinish +PathRevolutions +ClassifiedInfoReply +ParcelInfoReply +LandCollidersReply +AutosaveData +SetStartLocation +PassHours +AttachmentPt +ParcelFlags +NumVotes +AvatarPickerRequest +TeleportLocationRequest +DataHomeLocationRequest +EventNotificationAddRequest +ParcelDwellRequest +ViewerLoginLocationRequest +ViewerSimLocationRequest +EventLocationRequest +EndPeriod +SetStartLocationRequest +UserLoginLocationRequest +QueryStart +AvatarTextureUpdate +RequestGrantedProxies +GrantedProxies +RPCServerPort +Bytes +Extra +ForceScriptControlRelease +ParcelRelease +VFileType +ImageData +SpaceServerSimulatorTimeMessage +SimulatorViewerTimeMessage +Rotation +Selection +TransactionData +OperationData +ExpirationDate +AgentName +ParcelDeedToGroup +DirPicksReply +AvatarPicksReply +AgentInfo +MoneyTransferBackend +NextOwnerMask +MuteData +PassPrice +SourceID +TotalScriptTime +ShowMembersInGroupDir +TeleportFlags +AssetData +SlaveParcelData +MultipleObjectUpdate +ObjectUpdate +ImprovedTerseObjectUpdate +ConfirmXferPacket +StartPingCheck +SimWideDeletes +UserListReply +IsPhantom +AgentList +RezObject +TaskLocalID +ClaimDate +MergeParcel +Priority +Building +QueryText +ReturnType +FetchFolders +SimulatorPublicHostBlock +HeaderData +GroupBlock +RequestMultipleObjects +RetrieveInstantMessages +DequeueInstantMessages +OpenCircuit +SecureSessionID +CrossedRegion +DirGroupsReply +AvatarGroupsReply +EmailMessageReply +GroupVoteHistoryItemReply +ViewerPosition +Position +ParentEstate +MuteName +StartParcelRename +BulkParcelRename +ParcelRename +ViewerFilename +Positive +UserReportInternal +AvatarPropertiesRequest +ParcelPropertiesRequest +GroupPropertiesRequest +GroupProfileRequest +AgentDataUpdateRequest +PriceObjectScaleFactor +DirPicksQuery +OpenEnrollment +GroupData +PauseBlock +RequestGodlikePowers +GrantGodlikePowers +TransactionID +DestinationID +Controls +FirstDetachAll +EstateID +ImprovedInstantMessage +AgentQuit +WantToFlags +CheckParcelSales +ParcelSales +CurrentInterval +PriceRentLight +MediaAutoScale +NeighborBlock +LayerData +NVPairData +TeleportLocal +LayersPaused +VoteInitiator +MailPingBounce +TypeData +OwnerIDs +SystemKickUser +ErrorCode +SLXML_ID +TransactionTime +TimeToLive +StartParcelRemove +BulkParcelRemove +DirGroupsQuery +BonusEstimate +MusicURL +CompleteLure +ParcelPrimBonus +EjectUser +CoarseLocationUpdate +ChildAgentPositionUpdate +GroupIndex +GroupName +PriceParcelRent +SimStatus +TransactionSuccess +LureType +GroupMask +SitObject +AssetNum +Override +LocomotionState +PriceUpload +RemoveParcel +ConfirmAuctionStart +RpcScriptRequestInbound +ParcelReturnObjects +TotalObjects +ObjectExtraParams +Questions +TransferAbort +TransferInventory +LandScriptsReply +Collada_ID +RayTargetID +ClaimPrice +ObjectProperties +ParcelProperties +LogoutRequest +AssetUploadRequest +ReputationIndividualRequest +MajorVersion +MinorVersion +SimulatorAssign +TransactionType +AvatarPropertiesUpdate +ParcelPropertiesUpdate +FetchItems +AbortXfer +DeRezAck +TakeControls +DirLandReply +SpaceLocationTeleportReply +MuteType +IMViaEMail +StartExpungeProcessAck +RentPrice +GenericMessage +ChildAgentAlive +SpawnPointBlock +AttachmentBlock +RecallData +OfficerData +GroupOfficer +ObjectMaterial +OwnerName +AvatarNotesReply +CacheID +OwnerMask +TransferInventoryAck diff --git a/applications/SLChat/bin/Debug/protocol.txt b/applications/SLChat/bin/Debug/protocol.txt index e3e5f36c..43d91382 100644 --- a/applications/SLChat/bin/Debug/protocol.txt +++ b/applications/SLChat/bin/Debug/protocol.txt @@ -1,10232 +1,10245 @@ -// Linden Lab development message templates - -version 1.053 - -// 1.053 added EndPointID to DenyTrustedCircuit and CreateTrustedCircuit. PP - -// ************************************************************************* -// 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 } - } -} - -// user->viewer -// AssignCircuitCode - Tells the recipient's messaging system what it's code is -//{ -// AssignCircuitCode Low Trusted Unencoded -// { -// CircuitCode Single -// { Code U32 } -// { SessionID LLUUID } -// } -//} - -// 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 - } -} - -// sim->space -// Tells the spaceserver that the simulator is ready to receive an -// agent with that circuit code. -//{ -// AckAddCircuitCode Low Trusted Unencoded -// { -// CircuitCode Single -// { Code U32 } -// } -//} - -// 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 } - } -} - -// AgentIDReply -// dataserver -> simulator -// reliable -// Message send from spaceserver to simulator -// containing agent id for a given session id -// Also, a list of name value pairs for that agent -// also tacked on a list of agents that have granted you powers -//{ -// AgentIDReply Low Trusted Zerocoded -// { -// ReplyBlock Single -// { RequestID LLUUID } -// { SessionID LLUUID } -// { AgentID LLUUID } -// { StartLocation LLVector3 } // Vector3, region local -// { StartLookAt LLVector3 } // Vector3, normalized -// { GroupID LLUUID } -// { GroupOfficer BOOL } -// { AgentAccess U8 } -// { GodLevel U8 } -// { GroupTitle Variable 1 } // string -// } -// { -// TextureData Variable -// { TextureID LLUUID } -// } -// { -// GranterBlock Variable -// { GranterID LLUUID } -// } -// { -// NameValueBlock Variable -// { NameValue Variable 2 } -// } -// { -// AttachmentBlock Variable -// { AttachmentPoint U8 } -// { ItemID LLUUID } -// { AssetID LLUUID } -// } -//} - -// AvatarTextureUpdate -// simulator -> dataserver -// reliable -{ - AvatarTextureUpdate Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { TexturesChanged BOOL } - } - { - WearableData Variable - { CacheID LLUUID } - { TextureIndex U8 } - } - { - 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 NotTrusted 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 -} - - -// AgentIDRequest -// Request to report agent ID associated with a session id -//{ -// AgentIDRequest Low Trusted Unencoded -// { -// RequestBlock Single -// { RequestID LLUUID } -// { SessionID LLUUID } -// { LocationID U32 } // 0 = last location -// { Godlike BOOL } -// } -//} -// **************************************************************************** -// 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 } - } -} - -// 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 } - { SimName Variable 1 } - { Summary Variable 1 } - { Details Variable 2 } - { VersionString Variable 1 } - } - { - MeanCollision Variable - { Perp LLUUID } - { Time U32 } - { Mag F32 } - { Type U8 } - } -} - -// 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 } - } - { - 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 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { QueryID 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 } - { SpaceIP IPADDR } // check online for right farm - } -} - - -// 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 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Variable - { QueryID LLUUID } - } - { - QueryReplies Variable - { ParcelID LLUUID } - { Name Variable 1 } - { ForSale BOOL } - { Auction BOOL } - { ReservedNewbie BOOL } - { Dwell F32 } - } -} - -// DirPeopleQuery viewer->sim -// ask about people. This gets translated into a DirPeopleQueryTrusted on -// the simulator. -// *NOTE: this message is not in use on the viewer. 2004.07.02 \P/hoenix -{ - DirPeopleQuery Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryText Variable 1 } - { Name Variable 1 } - { Group Variable 1 } - { Online U8 } - { WantToFlags U32 } - { SkillFlags U32 } - { Reputation Variable 1 } // string representation of "< 1" or "> 6" or "= 99" - { Distance Variable 1 } // string representation of "< 1" or "> 6" or "= 99" - } -} - -// DirPeopleQueryBackend sim->dataserver -// continue query about people whith a space ip address. -{ - DirPeopleQueryBackend Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryText Variable 1 } - { Name Variable 1 } - { Group Variable 1 } - { Online U8 } - { WantToFlags U32 } - { SkillFlags U32 } - { Reputation Variable 1 } // string representation of "< 1" or "> 6" or "= 99" - { Distance Variable 1 } // string representation of "< 1" or "> 6" or "= 99" - { EstateID U32 } - { Godlike BOOL } - { SpaceIP IPADDR } // used to check online status for the right farm - } -} - -// 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 NotTrusted 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 } - } -} - -// DirGroupsQuery viewer->sim -// reliable -{ - DirGroupsQuery Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryText Variable 1 } // string - } -} - -// DirGroupsQueryBackend sim->dataserver -// reliable -{ - DirGroupsQueryBackend Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryText Variable 1 } // string - { EstateID U32 } - { Godlike BOOL } - } -} - - -// DirGroupsReply -// dataserver -> userserver -> viewer -// reliable -{ - DirGroupsReply Low NotTrusted 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 } - } -} - -// 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 } - } -} - -// 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 } - } - { - 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 } - { ForSale BOOL } - { Auction BOOL } - { ReservedNewbie BOOL } - } -} - -// 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 } - { ForSale BOOL } - { Auction BOOL } - { ReservedNewbie BOOL } - { 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 } - } -} - -// **************************************************************************** -// 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 NotTrusted 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 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Info Single - { TeleportFlags U32 } - { Message Variable 1 } // string - } -} - -// DataAgentAccessRequest sim->data -// ask if agent ID can in fact teleport from their current location in -// EstateID to the destination specified by RegionHandle. If allowed, -// the handler will persist the location in user_start_location and -// send back a DataAgentAccessReply. Otherwise, the handler will send back -// a TeleportFailed. -{ - DataAgentAccessRequest Low Trusted Unencoded - { - Info Single - { AgentID LLUUID } - { EstateID U32 } - { RegionHandle U64 } - { LocationID U32 } - { LocationPos LLVector3 } - { LocationLookAt LLVector3 } - } -} - -// DataAgentAccessReply data->sim -// Message to let us know if AgentID is allowed to teleport to RegionHandle. -{ - DataAgentAccessReply Low Trusted Unencoded - { - Info Single - { AgentID LLUUID } - } -} - -// DataHomeLocationRequest sim->data -// Request -{ - DataHomeLocationRequest Low Trusted Zerocoded - { - Info Single - { AgentID LLUUID } - } -} - -// 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 NotTrusted Unencoded - { - Info Single - { AgentID LLUUID } - { LocationID U32 } - { SimIP IPADDR } - { SimPort IPPORT } - { RegionHandle U64 } - { 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 } - { TargetID LLUUID } - { Message Variable 1 } - } -} - -// InitializeLure user->space -// Prepare the spaceserver with destination information for a lure. -{ - InitializeLure Low Trusted Unencoded - { - Info Single - { LureType U8 } - { AgentID LLUUID } - { LureID LLUUID } - { RegionHandle U64 } - { Position LLVector3 } - { LookAt LLVector3 } - } -} - -// 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 NotTrusted Unencoded - { - Info Single - { TeleportFlags U32 } - } -} - -// TeleportFailed somehwere->sim->viewer -// announce failure of teleport request -{ - TeleportFailed Low NotTrusted 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 -// *************************************************************************** - -// RegisterNewAgent - Sent by viewer to simulator to tell the simulator -// that it's connecting. -// HACK -- If SessionID is null, don't bother asking for information -// from the space server. -{ - RegisterNewAgent Low NotTrusted Unencoded - { - HelloBlock Single - { AgentID LLUUID } - { SessionID LLUUID } - { LocationID U32 } // which start location to use - { Godlike BOOL } - } -} - -// viewer->sim -// request a connection to the userserver -//{ -// RequestUserserverConnection Low NotTrusted Unencoded -// { -// AgentInfo Single -// { AgentID LLUUID } -// { SessionID LLUUID } -// } -//} - -// sim->space->userserver -//{ -// UserserverConnectionForAgent Low Trusted Unencoded -// { -// AgentInfo Single -// { AgentID LLUUID } -// { SessionID LLUUID } -// } -//} - -// userserver->space->sim->agent -//{ -// UserserverReadyForAgent Low Trusted Unencoded -// { -// AgentInfo Single -// { AgentID LLUUID } -// { SessionID LLUUID } -// } -// { -// HostInfo Single -// { ServerIP IPADDR } -// { ServerPort IPPORT } -// } -//} - -// Undo -{ - Undo Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } - { - ObjectData Variable - { ObjectID LLUUID } - } -} - - -// Redo -{ - Redo Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } - { - ObjectData Variable - { ObjectID LLUUID } - } -} - -// UndoLand -{ - UndoLand Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } -} - - -// RedoLand -{ - RedoLand Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } -} - -// Transfer energy from agent to an object -{ - TransferEnergy Low NotTrusted Unencoded - { - Data Single - { DestID LLUUID } // destination of the transfer - { Amount S32 } // amount of the transfer - } -} - - -// MovedIntoSimulator - Sent by simulatorA to simulatorB to tell the -// simulator that a viewer is moving from A to B -// sim --> sim -{ - MovedIntoSimulator High Trusted Unencoded - { - Sender Single - { ID LLUUID } - { SessionID LLUUID } - { CircuitCode U32 } - } -} - - -// AgentPause - viewer occasionally will block, inform simulator of this fact -{ - AgentPause Low NotTrusted Unencoded - { - Sender 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 - { - Sender 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 - { ID 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 - { - Sender Single - { ID LLUUID } - { CircuitCode U32 } - { GenCounter U32 } - } - { - Throttle Single - { Throttles Variable 1 } - } -} - - -// AgentFOV - Update to agent's field of view, angle is vertical, single F32 float in radians -{ - AgentFOV Low NotTrusted Unencoded - { - Sender Single - { ID LLUUID } - { CircuitCode U32 } - { GenCounter U32 } - } - { - FOVBlock Single - { 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 - { - Sender Single - { ID LLUUID } - { CircuitCode U32 } - { GenCounter U32 } - } - { - HeightWidthBlock Single - { Height U16 } - { Width U16 } - } -} - - -// AgentSetAppearance - Update to agent appearance -{ - AgentSetAppearance Low NotTrusted Zerocoded - { - Sender Single - { ID 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 - { - Sender Single - { ID LLUUID } - } - { - AnimationList Variable - { AnimID LLUUID } - { StartAnim BOOL } - } -} - -// AgentRequestSit - Try to sit on an object -{ - AgentRequestSit High NotTrusted Zerocoded - { - Sender Single - { ID LLUUID } - } - { - TargetObject Single - { TargetID LLUUID } - { Offset LLVector3 } - } -} - -// AgentSit - Actually sit on object -{ - AgentSit High NotTrusted Unencoded - { - Sender Single - { ID LLUUID } - } -} - -// RefreshViewer - sent by viewer when it has missing geometry, etc., due to dropped packets. - -{ - RefreshViewer Low NotTrusted Unencoded - { - Sender Single - { ID 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 - { - RequestImage Variable - { Image LLUUID } - { DiscardLevel S32 } - { DownloadPriority F32 } - { Packet U32 } - } -} - -// ImageNotInDatabase -// Simulator informs viewer that a requsted image definitely does not exist in the asset database -{ - ImageNotInDatabase Low NotTrusted Unencoded - { - ImageID Single - { ID LLUUID } - } -} - -// SetAlwaysRun -// Lets the viewer choose between running and walking -{ - SetAlwaysRun Low NotTrusted Unencoded - { - Sender Single - { ID 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 - { - ObjectData Single - { PCode U8 } - { SenderID LLUUID } - { GroupID LLUUID } - { 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 } - - { TextureEntry Variable 2 } - - { NameValue Variable 2 } - { State U8 } - } - { - 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 } - } - { - InventoryFile Single - { Filename Variable 1 } - } -} - - -// ObjectDelete -// viewer -> simulator -{ - ObjectDelete Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID 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 } - { 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 } - { 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 } - } - { - 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 } - } - { - ObjectData Variable - { CacheMissType U8 } - { ID U32 } - } -} - - -// ObjectPosition -// viewer -> simulator -{ - ObjectPosition Medium NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { Position LLVector3 } // region - } -} - - -// ObjectScale -// viewer -> simulator -{ - ObjectScale Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { Scale LLVector3 } - } -} - - -// ObjectRotation -// viewer -> simulator -{ - ObjectRotation Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { Rotation LLQuaternion } - } -} - - -// ObjectFlagUpdate -// viewer -> simulator -{ - ObjectFlagUpdate Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { ObjectLocalID U32 } - { UsePhysics BOOL } - { IsTemporary BOOL } - { IsPhantom BOOL } - { CastsShadows BOOL } - } -} - - -// ObjectClickAction -// viewer -> simulator -{ - ObjectClickAction Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { ClickAction U8 } - } -} - - -// ObjectImage -// viewer -> simulator -{ - ObjectImage Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { MediaURL Variable 1 } - { TextureEntry Variable 2 } - } -} - - -{ - ObjectMaterial Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { Material U8 } - } -} - - -{ - ObjectShape Low NotTrusted Zerocoded - { - AgentData Single - { AgentID 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 } - } - { - 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 } - } - { - 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 } - { 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 } - } - { - 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 } - } - { - ObjectData Variable - { LocalID U32 } - { SaleType U8 } // U8 -> EForSale - { SalePrice S32 } - } -} - - -// set object names -{ - ObjectName Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { LocalID U32 } - { Name Variable 1 } - } -} - -// set object descriptions -{ - ObjectDescription Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { LocalID U32 } - { Description Variable 1 } - } -} - -// set object category -{ - ObjectCategory Low NotTrusted Zerocoded - { - AgentData Single - { AgentID 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 } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } - -} - - -// ObjectDeselect -{ - ObjectDeselect Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } - -} - -// ObjectAttach -{ - ObjectAttach Low NotTrusted Zerocoded - { - AgentData Single - { AgentID 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 } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } -} - - -// ObjectDrop -- drops an attachment from your avatar onto the ground -{ - ObjectDrop Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } -} - - -// ObjectLink -{ - ObjectLink Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } -} - -// ObjectDelink -{ - ObjectDelink Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } -} - -// ObjectHinge -{ - ObjectHinge Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - JointType Single - { Type U8 } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } - -} - -// ObjectDehinge -{ - ObjectDehinge Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } - -} - - -// ObjectGrab -{ - ObjectGrab Low NotTrusted Zerocoded - { - Sender Single - { ID 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 } - } - { - ObjectData Single - { ObjectID LLUUID } - { GrabOffsetInitial LLVector3 } // LLVector3 - { GrabPosition LLVector3 } // LLVector3, region local - { TimeSinceLast U32 } - } -} - - -// ObjectDeGrab -{ - ObjectDeGrab Low NotTrusted Unencoded - { - Sender Single - { ID LLUUID } - } - { - ObjectData Single - { LocalID U32 } - } -} - - -// ObjectSpinStart -{ - ObjectSpinStart Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Single - { ObjectID LLUUID } - } -} - - -// ObjectSpinUpdate -{ - ObjectSpinUpdate Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Single - { ObjectID LLUUID } - { Rotation LLQuaternion } - } -} - - -// ObjectSpinStop -{ - ObjectSpinStop Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Single - { ObjectID LLUUID } - } -} - -// Export selected objects -{ - ObjectExportSelected Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { RequestID LLUUID } - { VolumeDetail S16 } - } - { - ObjectData Variable - { ObjectID LLUUID } - } -} - -// Export selected objects -{ - ObjectExportReply Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { RequestID LLUUID } - } - { - AssetData Single - { SLXML_ID LLUUID } - { Collada_ID LLUUID } - { ErrorCode S32 } - } - { - TextureData Variable - { AssetID LLUUID } - { AssetNum S32 } - } -} - -// Import an object -{ - ObjectImport Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { FolderID LLUUID } - } - { - AssetData Single - { FileID LLUUID 1 } - { ObjectName Variable 1 } - { Description Variable 1 } - } -} - -// Importing succeeded or failed -{ - ObjectImportReply Low NotTrusted Zerocoded - { - AssetData Single - { FileID LLUUID 1 } - { ErrorValue S32 } - } -} - -// ModifyLand - sent to modify a piece of land on a simulator. -// viewer -> sim -{ - ModifyLand Low NotTrusted Zerocoded - { - ModifyBlock Single - { AgentID LLUUID } - { Action U8 } - { BrushSize U8 } - { Seconds F32 } - { Height F32 } - } - { - ParcelData Variable - { LocalID S32 } - { West F32 } - { South F32 } - { East F32 } - { North F32 } - } -} - - -// VelocityInterpolateOn -{ - VelocityInterpolateOn Low NotTrusted Unencoded -} - - -// VelocityInterpolateOff -{ - VelocityInterpolateOff Low NotTrusted Unencoded -} - -// Save State -{ - StateSave Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - DataBlock Single - { Filename Variable 1 } - } -} - - -// ReportAutosaveCrash -{ - 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 } - } -} - -// Load State -// Not in use \P/hoenix - 2004.07.14 -{ - StateLoad Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - DataBlock Single - { Filename Variable 1 } - } -} - -// 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 - { - ObjectData Single - { RequestFlags U32 } - { AgentID LLUUID } - { 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 - { - AgentBlock Single - { AgentID LLUUID } - { PreyID LLUUID } - } -} - - -// Grant agents the ability to modify your stuff. This message is sent -// to the user server, and then passed along to the dataserver for -// persistance. The dataserver will push live updates through -// AddModifyAbility messages to the simulator. -// viewer -> userserver -> dataserver -{ - GrantModification Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GranterName Variable 1 } - } - { - EmpoweredBlock Variable - { EmpoweredID LLUUID } - } -} - -// Revoke the ability to modify your stuff. This message is sent to -// the user server, and then passed along to the dataserver for -// persistance. The dataserver will push live updates through -// RemoveModifyAbility messages to the simulator. -// viewer -> userserver -> dataserver -{ - RevokeModification Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GranterName Variable 1 } - } - { - RevokedBlock Variable - { RevokedID LLUUID } - } -} - -// This message is sent from viewer->userserver, which responds with -// the complete list of all granted agents in the GrantedProxies -// message. -{ - RequestGrantedProxies Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } -} - -// response to the message above -{ - GrantedProxies Low Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - ProxyBlock Variable - { EmpoweredID LLUUID } - } -} - -// This message is sent from the dataserver to the simulator to let -// AgentID know that they can modify GranterID's stuff. This message is -// percolated out to child cameras but not the viewer. This message is -// in response to GrantModification messages, request, or login. -// ROUTED dataserver -> userserver -> spaceserver -> simulator -// reliable -{ - AddModifyAbility Low Trusted Zerocoded - { - TargetBlock Single - { TargetIP IPADDR } // U32 encoded IP - { TargetPort IPPORT } - } - { - AgentBlock Single - { AgentID LLUUID } - } - { - GranterBlock Variable - { GranterID LLUUID } - } -} - -// This message is sent from the dataserver to the simulator to let -// AgentID know that they can no longer modify GranterID's stuff. This -// message is percolated out to child cameras but not the viewer. This -// message is in response to RevokeModification messages. -// ROUTED dataserver -> userserver -> spaceserver -> simulator -// reliable -{ - RemoveModifyAbility Low Trusted Unencoded - { - TargetBlock Single - { TargetIP IPADDR } // U32 encoded IP - { TargetPort IPPORT } - } - { - AgentBlock Single - { AgentID LLUUID } - { RevokerID LLUUID } - } -} - -// end viewer to simulator section - -{ - ViewerStats Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { IP IPADDR } - { StartTime U32 } - { RunTime F32 } // F32 - { FPS F32 } // F32 - { 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 - { - Data Single - { AgentID LLUUID } - { TaskID LLUUID } - { ItemID LLUUID } - { Questions S32 } - } -} - - -// complaint/bug-report -// reliable -{ - UserReport Low NotTrusted Zerocoded - { - ReportData Single - { ReportType U8 } // BUG=1, COMPLAINT=2 - { Category U8 } // see sequence.user_report_category - { ReporterID LLUUID } - { Position LLVector3 } // screenshot position, region-local - { CheckFlags U8 } // checkboxflags - { ScreenshotID LLUUID } - { ObjectID LLUUID } - { Summary Variable 1 } - { Details Variable 2 } - { VersionString Variable 1 } - } - { - MeanCollision Variable - { Perp LLUUID } - { Time U32 } - { Mag F32 } - { Type U8 } - } -} - - -// *************************************************************************** -// 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 NotTrusted 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 - { - 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 udpate 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 } - } - { - 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 } - } -} - -{ - 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 } - { 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 } - { AvatarID LLUUID } - } -} - -// AvatarPropertiesRequestBackend -// simulator -> dataserver -// reliable -{ - AvatarPropertiesRequestBackend Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { AvatarID LLUUID } - { GodLevel U8 } - } -} -// 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 - { WantToMask U32 } - { WantToText Variable 1 } // string - { SkillsMask U32 } - { SkillsText Variable 1 } // string - { FLAboutText Variable 1 } // string - { BornOn Variable 1 } // string - { CharterMember Variable 1 } // special - usually U8 - { AllowPublish BOOL } // whether profile is externally visible or not - { MaturePublish BOOL } // profile is "mature" - { Identified BOOL } // whether avatar has provided payment info - { Transacted BOOL } // whether avatar has actively used payment info - } -} - -// 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 - { GroupOfficer BOOL } - { GroupTitle Variable 1 } - { GroupID LLUUID } - { GroupName Variable 1 } - { GroupInsigniaID LLUUID } - } -} - - -// AvatarPropertiesUpdate -// viewer -> simulator -// simulator -> dataserver -// reliable -{ - AvatarPropertiesUpdate Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - PropertiesData Single - { AvatarID LLUUID } - { ImageID LLUUID } - { FLImageID LLUUID } - { AboutText Variable 2 } // string, up to 512 - { FLAboutText Variable 1 } - { WantToMask U32 } - { WantToText Variable 1 } // string - { SkillsMask U32 } - { SkillsText Variable 1 } // string - { AllowPublish BOOL } // whether profile is externally visible or not - { MaturePublish BOOL } // profile is "mature" - } -} - -// 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 } - } - { - 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 } - } - { - 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 } - - } - { - EventData Single - { EventID U32 } - } -} - - -// EventNotificationRemoveRequest -// viewer -> simulator -// simulator -> dataserver -// reliable -{ - EventNotificationRemoveRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID 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 } - } - { - 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 } - } - { - 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 } - } - { - 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 NotTrusted 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 - { - Data Single - { AgentID LLUUID } - { ObjectID LLUUID } - { ChatChannel S32 } - { ButtonIndex S32 } - { ButtonLabel Variable 1 } - } -} - - -// ForceScriptControlRelease -// reliable -{ - ForceScriptControlRelease Low NotTrusted Unencoded - { - Data Single - { ID LLUUID } - } -} - -// RevokePermissions -// reliable -{ - RevokePermissions Low NotTrusted Unencoded - { - Data Single - { AgentID LLUUID } - { 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 } - { Message Variable 1 } - { URL Variable 1 } - } -} - -// ScriptTeleportRequest -// reliable -{ - ScriptTeleportRequest Low NotTrusted 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 - { - ParcelData Single - { AgentID LLUUID } - { SequenceID S32 } - { West F32 } - { South F32 } - { East F32 } - { North F32 } - { SnapSelection BOOL } - } -} - -// ParcelPropertiesRequestByID -// viewer -> sim -// reliable -{ - ParcelPropertiesRequestByID Low NotTrusted Zerocoded - { - ParcelData Single - { AgentID LLUUID } - { 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 } - } -} - -// 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 S32 } - { OtherCleanTime S32 } - } - { - TaskIDs Variable - { TaskID LLUUID } - } - { - OwnerIDs Variable - { OwnerID LLUUID } - } -} - -// 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 S32 } - { OtherCleanTime S32 } - } - { - 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 S32 } - } - { - ReturnIDs Variable - { ReturnID 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 - { - ParcelData Single - { AgentID LLUUID } - { 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 - { - ParcelData Single - { AgentID LLUUID } - { 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 } - { 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 - { - Data Single - { AgentID LLUUID } - { SequenceID S32 } - { Flags U32 } - { LocalID S32 } - } -} - - -// sim -> viewer -// ParcelAccessListReply -{ - ParcelAccessListReply Low NotTrusted 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 } - } - { - 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 } - } -} - -// userserver -> dataserver -// Used to request all parcel sales in the database -//{ -// RequestParcelSales Low Trusted Unencoded -//} - -// dataserver -> userserver -> spaceserver -// response of all (up to max packet size) parcel sales in the database. -// each block in the meassage represents a parcel that a human agreed -// to pay US$. -//{ -// BulkParcelSales Low Trusted Unencoded -// { -// ParcelData Variable -// { RegionHandle U64 } -// { ParcelID LLUUID } -// { BuyerID 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 } - } -} - -// userserver -> dataserver -// Used to request all parcel sales in the database -//{ -// RequestParcelAuctions Low Trusted Unencoded -//} - -// dataserver -> userserver -> spaceserver -// response of all (up to max packet size) parcel sales in the database. -// each block in the meassage represents a parcel that a human agreed -// to pay US$. -//{ -// BulkParcelAuctions Low Trusted Unencoded -// { -// ParcelData Variable -// { RegionHandle U64 } -// { ParcelID LLUUID } -// { WinnerID 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 } - { GroupIndex S8 } // -1 for none - } - { - GroupData Variable - { GroupID LLUUID } - { GroupOfficer BOOL } // 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 GetScriptRunningReply -{ - 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 - { - Script Single - { ObjectID LLUUID } - { ItemID LLUUID } - { Running BOOL } - } -} - -// ScriptReset - causes a script to reset -{ - ScriptReset Low NotTrusted Unencoded - { - Script Single - { AgentID LLUUID } - { 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 } - } -} - -// LoginRequestSafe -// Attempt to log into the system with an auth token obtained via a -// secure out of band mechanism (such as a TLS tunnel) -// viewer -> userserver -// unreliable -//{ -// LoginRequestSafe Low NotTrusted Unencoded -// { -// LoginBlock Single -// { AuthToken LLUUID } // session id really -// { ViewerDigest LLUUID } // MD5 of viewer exe -// { LastExecFroze BOOL } -// } -//} - -// LoginReply -// Identifies the session, or sends LLUUID::null if invalid -// userserver -> viewer -//{ -// LoginReply Low Trusted Zerocoded -// { -// UserData Single -// { Firstname Variable 1 } // string, canonical caps -// { Lastname Variable 1 } // string, canonical caps -// { SessionID LLUUID } -// { AgentID LLUUID } -// { ErrorMessage Variable 1 } -// { AgentAccess U8 } -// { GroupOfficer BOOL } -// { GroupTitle Variable 1 } -// { GroupID LLUUID } -// { GroupName Variable 1 } -// { GroupInsigniaID LLUUID } -// { LoginFlags U32 } // bitfield -// { SunTextureID LLUUID } -// { MoonTextureID LLUUID } -// { CloudTextureID LLUUID } -// { TOSAssetID LLUUID } // Null if TOS agreement is current -// { CriticalMessageAssetID LLUUID } // Null if message is current -// { TrialDaysLeft S32 } // Zero if not trial -// { ServerUTCTime U32 } // time_t, unix time format -// } -// { -// StartLocationData Variable -// { LocationID U32 } -// { LocationRegionX U32 } // U32, meters to southwest -// { LocationRegionY U32 } -// { LocationPos LLVector3 } // Vector3, region coords -// { LocationLookAt LLVector3 } // Vector3 -// } -//} - -// DataserverLoginRequestSafe -// userserver -> dataserver -//{ -// DataserverLoginRequestSafe Low Trusted Unencoded -// { -// UserData Single -// { AuthToken LLUUID } // session id really -// { IP IPADDR } -// { Port IPPORT } -// { SpaceIP IPADDR } -// { ViewerDigest LLUUID } -// { LastExecFroze BOOL } -// } -//} - -// DataServerLoginReply -// TimeValid is true if user is allowed to log in at this time -// dataserver -> userserver -// reliable -//{ -// DataServerLoginReply Low Trusted Zerocoded -// { -// UserData Single -// { Firstname Variable 1 } // string -// { Lastname Variable 1 } // string -// { IP IPADDR } // don't think this is valid JC 6/02 -// { Port IPPORT } // don't think this is valid JC 6/02 -// { LoginValid BOOL } -// { TimeValid BOOL } -// { ErrorMessage Variable 1 } // string -// { AgentID LLUUID } -// { SessionID LLUUID } -// { LimitedToEstate U32 } -// { AgentAccess U8 } -// { GroupOfficer BOOL } -// { GroupTitle Variable 1 } -// { GroupID LLUUID } -// { GroupName Variable 1 } -// { GroupInsigniaID LLUUID } -// { LoginFlags U32 } // bitfield -// { SunTextureID LLUUID } -// { MoonTextureID LLUUID } -// { CloudTextureID LLUUID } -// { TOSAssetID LLUUID } // Null if TOS agreement is current -// { CriticalMessageAssetID LLUUID } // Null if message is current -// { TrialDaysLeft S32 } // Zero if not trial -// { ServerUTCTime U32 } // time_t, unix time format -// { SpaceIP IPADDR } -// { ViewerDigest LLUUID } -// { LastExecFroze BOOL } -// } -// { -// StartLocationData Variable -// { LocationID U32 } -// { LocationRegionX U32 } -// { LocationRegionY U32 } -// { LocationPos LLVector3 } // Vector3 -// { LocationLookAt LLVector3 } // Vector3 -// } -//} - -// The user agrees to the current Terms of Service -// or clicks OK on the current critical message -// type 0 = TOS -// type 1 = critical message -// viewer -> userserver -> dataserver -//{ -// TOSAgreement Low NotTrusted Unencoded -// { -// AgentBlock Single -// { AgentID LLUUID } -// { Type S32 } -// } -//} - -// 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 NotTrusted 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 NotTrusted 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) - { NewAssetID LLUUID } - } -} - - - -// LogoutDemand -// Unreliable, because the viewer quits before it has a chance to retransmit. -// viewer -> userserver -// unreliable -{ - LogoutDemand Low NotTrusted Unencoded - { - LogoutBlock Single - { SessionID LLUUID } - } -} - - -//----------------------------------------------------------------------------- -// Viewer to UserServer Messages -//----------------------------------------------------------------------------- - -// ViewerLoginLocationRequest -// viewer -> userserver -// *NOTE: obsolete -{ - ViewerLoginLocationRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - PositionBlock Single - { ViewerRegion U64 } - { ViewerPosition LLVector3 } - } - { - URLBlock Single - { SimName Variable 1 } - { Pos LLVector3 } - } -} - -// ViewerSimLocationRequest -// viewer -> userserver -// *NOTE: obsolete -{ - ViewerSimLocationRequest Low NotTrusted Unencoded - { - PositionBlock Single - { AgentID LLUUID } - { SimName Variable 1 } - } -} - -// RequestLocationGetAccess -// userserver -> dataserver -// *NOTE: obsolete. -{ - RequestLocationGetAccess Low Trusted Unencoded - { - PositionBlock Single - { AgentID LLUUID } - { SessionID LLUUID } - { ViewerIP IPADDR } - { ViewerPort IPPORT } - { ViewerRegion U64 } - { ViewerPosition LLVector3 } - } -} - -// RequestLocationGetAccessReply -// dataserver -> userserver -// *NOTE: obsolete. -{ - RequestLocationGetAccessReply Low Trusted Unencoded - { - PositionBlock Single - { ViewerIP IPADDR } - { ViewerPort IPPORT } - { ViewerRegion U64 } - { ViewerPosition LLVector3 } - { TravelAccess U8 } - } -} - - -// UserListRequest -// Get a list of the current system users -// viewer -> userserver -//*NOTE: obsolete -{ - UserListRequest Low NotTrusted Unencoded -} - - -//----------------------------------------------------------------------------- -// 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 - { - MessageBlock Single - { FromAgentID LLUUID } - { 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 } - } -} - -// Start group IM session. If everyone is 1, then offline users also -// get the messages. -{ - StartGroupIM Low NotTrusted Unencoded - { - SessionBlock Single - { SessionID LLUUID } - { Everyone U8 } - } - { - Participants Variable - { AgentID LLUUID } - } -} - -// drop out from a group instant message -{ - DropGroupIM Low NotTrusted Unencoded - { - SessionBlock Single - { SessionID LLUUID } - { AgentID LLUUID } - } -} - -// Group instant messaging -{ - GroupIM Low NotTrusted Unencoded - { - MessageBlock Single - { SessionID LLUUID } - { FromID LLUUID } - { FromAgentName Variable 1 } - { Message Variable 2 } - } -} - -// RetrieveInstantMessages - used to get instant messages that -// were persisted out to the database while the user was offline -{ - RetrieveInstantMessages Low NotTrusted Unencoded - { - AgentBlock Single - { Agent 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 } - } -} - -// This message is sent viewer->userserver to track if other agents -// come on or off line. -{ - TrackOnlineStatus Low NotTrusted Zerocoded - { - AgentBlock Variable - { AgentID LLUUID } - } -} - -// This message is sent viewer->userserver to ignore logon and logoff -// events for the specified agents. This is typically sent when a -// calling card is deleted or cancelled. -{ - IgnoreOnlineStatus Low NotTrusted Zerocoded - { - AgentBlock Variable - { AgentID LLUUID } - } -} - -// 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 } - } - { - 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 } - } - { - 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 } - } - { - 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 - { - MuteData Single - { AgentID LLUUID } - { MuteCRC U32 } - } -} - -// update/add someone in the mute list -{ - UpdateMuteListEntry Low NotTrusted Unencoded - { - MuteData Single - { AgentID LLUUID } - { MuteID LLUUID } - { MuteName Variable 1 } - { MuteType S32 } - { MuteFlags U32 } - } -} - -// Remove a mute list entry. -{ - RemoveMuteListEntry Low NotTrusted Unencoded - { - MuteData Single - { AgentID LLUUID } - { MuteID LLUUID } - { MuteName Variable 1 } - } -} - - -// viewer -> userserver, gimme inventory -//{ -// InventoryRequest Low NotTrusted Unencoded -// { -// InventoryData Single -// { AgentID LLUUID } -// { CacheCRC U32 } -// } -//} - -// -// Inventory update messages -// -{ - UpdateInventoryItem Low NotTrusted 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 } - } -} - -// When all that has updated is the asset, we can crunch this down. -{ - UpdateInventoryItemAsset Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - InventoryData Variable - { ItemID LLUUID } - { AssetID LLUUID } - } -} - -{ - MoveInventoryItem Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { Stamp BOOL } // should the server re-timestamp? - } - { - InventoryData Variable - { ItemID LLUUID } - { FolderID LLUUID } - } -} - -// copy inventory item by item id to specified destination folder, -// send out bulk inventory update when done. -// currently only sim->data, but it is general enough to be -// a viewer request. -{ - CopyInventoryItem Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - InventoryData Variable - { OldItemID LLUUID } - { NewFolderID LLUUID } - } -} - -{ - RemoveInventoryItem Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - InventoryData Variable - { ItemID LLUUID } - } -} - -{ - ChangeInventoryItemFlags Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - InventoryData Variable - { ItemID LLUUID } - { Flags U32 } - } -} - - -{ - SaveAssetIntoInventory Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - InventoryData Single - { ItemID LLUUID } - { NewAssetID LLUUID } - } -} - -{ - CreateInventoryFolder Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - FolderData Single - { FolderID LLUUID } - { ParentID LLUUID } - { Type S8 } - { Name Variable 1 } - } -} - -{ - UpdateInventoryFolder Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - FolderData Variable - { FolderID LLUUID } - { ParentID LLUUID } - { Type S8 } - { Name Variable 1 } - } -} - -{ - MoveInventoryFolder Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { Stamp BOOL } // should the server re-timestamp children - } - { - InventoryData Variable - { FolderID LLUUID } - { ParentID LLUUID } - } -} - -{ - RemoveInventoryFolder Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - FolderData Variable - { FolderID LLUUID } - } -} - -// Get inventory segment. -{ - FetchInventoryDescendents Low NotTrusted Zerocoded - { - AgentData Single - { AgentID 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 NotTrusted 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 } - } - { - InventoryData Variable - { OwnerID LLUUID } - { ItemID LLUUID } - } -} - -// response to fetch inventory -{ - FetchInventoryReply Low NotTrusted 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. -{ - 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 } - { 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 } - } - { - 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 - { - UpdateData Single - { AgentID LLUUID } - { GroupID LLUUID } - { 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 - { AssetID 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 - { - InventoryData Single - { AgentID LLUUID } - { GroupID LLUUID } - { LocalID U32 } - { ItemID LLUUID } - } -} - -{ - MoveTaskInventory Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - { FolderID LLUUID } - } - { - InventoryData Single - { LocalID U32 } - { ItemID LLUUID } - } -} - -{ - RequestTaskInventory Low NotTrusted Unencoded - { - InventoryData Single - { AgentID LLUUID } - { 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 - { - AgentBlock Single - { AgentID LLUUID } - { SessionID LLUUID } - { 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 } - { 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 - { AssetID LLUUID } - { Type S8 } - { InvType S8 } - { Flags U32 } - { SaleType U8 } - { SalePrice S32 } - { Name Variable 1 } - { Description Variable 1 } - { CreationDate S32 } - { CRC U32 } - } -} - -// if declined, the destid agent from the GiveInventory message -// responds with this message to the userserver -{ - DeclineInventory Low NotTrusted Unencoded - { - InfoBlock Single - { TransactionID LLUUID } - } -} - -// userserver -> 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 -> userserver -// 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 - { - AgentBlock Single - { SourceID LLUUID } - { FolderID LLUUID } // source ID's calling card folder - { DestID LLUUID } - { TransactionID LLUUID } - } -} - -{ - AcceptFriendship Low NotTrusted Unencoded - { - TransactionBlock Single - { TransactionID LLUUID } - } - { - FolderData Variable - { FolderID LLUUID } // place to put calling card. - } -} - -{ - DeclineFriendship Low NotTrusted Unencoded - { - TransactionBlock Single - { TransactionID LLUUID } - } -} - - -//{ -// AddCallingCard Low NotTrusted Unencoded -// { -// CardBlock Variable -// { SourceUUID LLUUID } -// { DestUUID LLUUID } -// { Name Variable 1 } -// } -//} - -{ - 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 - { - AgentBlock Single - { SourceID LLUUID } - { DestID LLUUID } - { TransactionID LLUUID } - } -} - -{ - AcceptCallingCard Low NotTrusted Unencoded - { - TransactionBlock Single - { TransactionID LLUUID } - } - { - FolderData Variable - { FolderID LLUUID } // place to put calling card. - } -} - -{ - DeclineCallingCard Low NotTrusted Unencoded - { - TransactionBlock Single - { TransactionID LLUUID } - } -} - - -// Rez a script onto an object -{ - RezScript Low NotTrusted Zerocoded - { - UpdateBlock Single - { AgentID LLUUID } - { GroupID LLUUID } - { 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 - { AssetID 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 - { FolderID LLUUID } - { NextOwnerMask U32 } - { Type S8 } - { InvType S8 } - { 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 } - } -} - -//{ -// RegionIDRequest Low NotTrusted Unencoded -// { -// RequestBlock Single -// { RegionHandle U64 } -// } -//} - -{ - 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 - { - MoneyData Single - { TransactionID LLUUID } - { AgentID 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 - { - MoneyData Single - { AgentID LLUUID } - { 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 - { - MoneyData Single - { AgentID LLUUID } - { 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 - { - MoneyData Single - { AgentID LLUUID } - { 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 } - { 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 } - { 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 } - } -} - -// possible alternate to InventoryUpdate - tells viewer to load cached inventory -//{ -// UseCachedInventory Low Trusted Unencoded -// { -// InventoryData Single -// { AgentID LLUUID } -// } -//} - -// 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 } - } -} - - -// UserLoginLocationReply -// userserver -> viewer -{ - UserLoginLocationReply Low Trusted Zerocoded - { - AgentData Single - { SessionID LLUUID } - { Message Variable 1 } - } - { - RegionInfo Single - { LocationValid BOOL } - { GridsPerEdge U32 } - { MetersPerGrid F32 } - { Handle U64 } - { UsecSinceStart U64 } - { SecPerDay U32 } - { SecPerYear U32 } - { SunDirection LLVector3 } - { SunAngVelocity LLVector3 } - } - { - SimulatorBlock Single - { IP IPADDR } - { Port IPPORT } - } - { - URLBlock Single - { LocationID U32 } - { LocationLookAt LLVector3 } - } -} - -// UserSimLocationReply -// userserver -> viewer -{ - UserSimLocationReply Low Trusted Unencoded - { - SimulatorBlock Single - { AccessOK U8 } - { SimName Variable 1 } - { SimHandle U64 } - } -} - -// UserListReply -// Return a list of users on the system -{ - UserListReply Low Trusted Unencoded - { - UserBlock Variable - { FirstName Variable 1 } - { LastName Variable 1 } - { Status U8 } - } -} - -// 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 - { - StartLocationData Single - { AgentID LLUUID } - { 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 } - } -} - - - -// UserLoginLocationRequest -// userserver -> spaceserver -{ - UserLoginLocationRequest Low Trusted Zerocoded - { - UserBlock Single - { SessionID LLUUID } - { TravelAccess U8 } - { FirstLogin BOOL } - { LimitedToEstate U32 } - } - { - PositionBlock Single - { ViewerRegion U64 } - { ViewerPosition LLVector3 } - } - { - URLBlock Single - { SimName Variable 1 } - { Pos LLVector3 } - } -} - -// SpaceLoginLocationReply -// spaceserver -> userserver -// not reliable -{ - SpaceLoginLocationReply Low Trusted Zerocoded - { - UserBlock Single - { SessionID LLUUID } - { LocationID U32 } - { LocationPos LLVector3 } - { LocationLookAt LLVector3 } - } - { - SimulatorBlock Single - { IP IPADDR } - { Port IPPORT } - { CircuitCode U32 } - { Name Variable 1 } - { SimAccess U8 } - } - { - RegionInfo Single - { GridsPerEdge U32 } - { MetersPerGrid F32 } - { Handle U64 } - { UsecSinceStart U64 } - { SecPerDay U32 } - { SecPerYear U32 } - { SunDirection LLVector3 } - { SunAngVelocity 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 } - } -} - -// *************************************************************************** -// Simulator to QuerySim -// *************************************************************************** - -// SimulatorPauseState - what parts of the sim are paused - -{ - SimulatorPauseState Low NotTrusted Unencoded - { - PauseBlock Single - { SimPaused U32 } - { LayersPaused U32 } - { TasksPaused U32 } - } -} - -// SimulatorThrottleSettings - what are the current throttle settings? - -{ - SimulatorThrottleSettings Low NotTrusted Unencoded - { - Sender Single - { ID LLUUID } - } - { - Throttle Single - { Throttles Variable 1 } - } -} - -// *************************************************************************** -// Name Value Pair messages -// *************************************************************************** - -// NameValuePair - if the specific task exists on simulator, add or replace this name value pair -{ - NameValuePair Low NotTrusted 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 NotTrusted 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 -{ - UpdateAttachment Low NotTrusted 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 - { UUID LLUUID } - { Type S8 } - { Tempfile 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 -> userserver -// userserver -> dataserver -// reliable -{ - CreateGroupRequest Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { Name Variable 1 } // string - { Charter Variable 2 } // string - { ShowInList U8 } - { ShowMembersInGroupDir U8 } - { RequireMask U32 } // U32 mask - { ReputationMin S32 } - { ReputationMax S32 } - { MoneyMin S32 } - { MoneyMax S32 } - { OfficerTitle Variable 1 } // string - { MemberTitle Variable 1 } // string -// { OfficerMax U8 } -// { MemberMax U8 } - { PowersMask U32 } // U32 mask - { InsigniaID LLUUID } - { InviteOfficers Variable 2 } // string - { InviteMembers Variable 2 } // string - { MembershipFee S32 } // S32 - { OpenEnrollment BOOL } // BOOL (U8) - { AllowPublish BOOL } // whether profile is externally visible or not - { MaturePublish BOOL } // profile is "mature" - } -} - -// CreateGroupReply -// dataserver -> userserver -// userserver -> viewer -// reliable -{ - CreateGroupReply Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - ReplyData Single - { GroupID LLUUID } - { Result S32 } - { Message Variable 1 } // string - } -} - -// CreateGroupRequest -// viewer -> userserver -// userserver -> dataserver -// reliable -{ - UpdateGroupInfo Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { Charter Variable 2 } // string - { ShowInList BOOL } - { ShowMembersInGroupDir BOOL } - { OfficerTitle Variable 1 } // string - { MemberTitle Variable 1 } // string -// { OfficerMax U8 } -// { MemberMax U8 } - { InsigniaID LLUUID } - { MembershipFee S32 } - { OpenEnrollment BOOL } - { InviteOfficers Variable 2 } // string - { InviteMembers Variable 2 } // string - { AllowPublish BOOL } - { MaturePublish BOOL } - } -} - -{ - GroupInfoUpdated Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } -} - -// JoinGroupRequest -// viewer -> userserver -> dataserver -// reliable -{ - JoinGroupRequest Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { Officer U8 } - { MembershipFee S32 } - } -} - -// JoinGroupReply -// dataserver -> userserver -> viewer -{ - JoinGroupReply Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { Success BOOL } - } -} - -// EjectGroupMemberRequest -// viewer -> userserver -> dataserver -// reliable -{ - EjectGroupMemberRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { AgentID LLUUID } - } -} - -// This message is sent from the dataserver to the simulator to let -// AgentID know that they are no longer a member of the group. This -// message is in response to EjectGroupMemberRequest messages. -// ROUTED dataserver -> userserver -> spaceserver -> simulator -// reliable -{ - RemoveMemberFromGroup Low Trusted Unencoded - { - TargetBlock Single - { TargetIP IPADDR } // U32 encoded IP - { TargetPort IPPORT } - } - { - AgentBlock Single - { AgentID LLUUID } - } - { - GroupBlock Single - { GroupID LLUUID } - } -} - - -// LeaveGroupRequest -// viewer -> userserver -> dataserver -// reliable -{ - LeaveGroupRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } -} - -// InviteGroupRequest -// viewer -> userserver -> dataserver -// reliable -{ - InviteGroupRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } // UUID of inviting agent - } - { - InviteData Single - { AgentName Variable 1 } // string - { InviteeID LLUUID } - { GroupID LLUUID } - { Officer BOOL } // BOOL - } -} - -// GroupPropertiesRequest -// viewer-> userserver -> dataserver -// reliable -{ - GroupPropertiesRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } -} - -// GroupPropertiesReply -// viewer -> userserver -> dataserver -// reliable -{ - GroupPropertiesReply Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { Name Variable 1 } // string - { Charter Variable 2 } // string - { ShowInList U8 } - { ShowMembersInGroupDir U8 } - { RequireMask U32 } // U32 mask - { ReputationMin S32 } - { ReputationMax S32 } - { MoneyMin S32 } - { MoneyMax S32 } - { OfficerTitle Variable 1 } // string - { MemberTitle Variable 1 } // string -// { OfficerMax U8 } -// { MemberMax U8 } - { PowersMask U32 } // U32 mask - { InsigniaID LLUUID } - { FounderID LLUUID } - { MembershipFee S32 } // S32 - { OpenEnrollment BOOL } // BOOL (U8) - { Money S32 } - { CurrentElectionID LLUUID } - { GroupMembershipCount S32 } - { AllowPublish BOOL } - { MaturePublish BOOL } - } -} - -// GroupProfileRequest -// viewer-> userserver -> dataserver -// reliable -{ - GroupProfileRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } -} - -// GroupProfileReply -// dataserver -> userserver -> viewer -// reliable -{ - GroupProfileReply Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { Name Variable 1 } // string - { Charter Variable 2 } // string - { ShowInList U8 } - { ShowMembersInGroupDir U8 } - { OfficerTitle Variable 1 } // string - { MemberTitle Variable 1 } // string - { InsigniaID LLUUID } - { FounderID LLUUID } - { FounderName Variable 1 } - { MembershipFee S32 } - { OpenEnrollment BOOL } - } -} - -// GroupMoneyHistoryRequest -// viewer-> userserver -> dataserver -// reliable -{ - GroupMoneyHistoryRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } -} - -// GroupMoneyHistoryReply -// dataserver -> userserver -> viewer -// reliable -{ - GroupMoneyHistoryReply Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } - { - GroupData Single - { IntervalDays S32 } - { CurrentInterval S32 } - { CurrentTaxes S32 } - { CurrentDividend S32 } - { EstimatedTaxes S32 } - { EstimatedDividend S32 } - { NumberNonExemptMembers S32 } - } -} - - -// CurrentInterval = 0 => this period (week, day, etc.) -// CurrentInterval = 1 => last period -// viewer -> userserver -> dataserver -// reliable -{ - GroupAccountSummaryRequest Low NotTrusted Zerocoded - { - MoneyData Single - { AgentID LLUUID } - { GroupID LLUUID } - { RequestID LLUUID } - { IntervalDays S32 } - { CurrentInterval S32 } - } -} - - -// dataserver -> userserver -> viewer -// Reliable -{ - GroupAccountSummaryReply Low NotTrusted 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 - { - MoneyData Single - { AgentID LLUUID } - { GroupID LLUUID } - { RequestID LLUUID } - { IntervalDays S32 } - { CurrentInterval S32 } - } -} - -// Reliable -{ - GroupAccountDetailsReply Low NotTrusted 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 - { - MoneyData Single - { AgentID LLUUID } - { GroupID LLUUID } - { RequestID LLUUID } - { IntervalDays S32 } - { CurrentInterval S32 } - } -} - -// Reliable -{ - GroupAccountTransactionsReply Low NotTrusted 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 } - } -} - -// GroupElectionInfoRequest -// viewer -> userserver -> dataserver -//reliable -{ - GroupElectionInfoRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } -} - -// GroupElectionInfoReply -// dataserver -> userserver -> viewer -// reliable -{ - GroupElectionInfoReply Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ElectionData Single - { GroupID LLUUID } - { ElectionID LLUUID } - { ElectionType Variable 1 } // string - { StartDateTime Variable 1 } // string - { EndDateTime Variable 1 } // string - { ElectionInitiator LLUUID } - { AlreadyVoted BOOL } - { VotedForCandidate LLUUID } - { VoteCast Variable 1 } // string - { Majority F32 } - { Quorum S32 } - } - { - CandidateData Variable - { AgentID LLUUID } - } -} - -// StartGroupElection -// viewer -> userserver -> dataserver -// reliable -{ - StartGroupElection Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ElectionData Single - { GroupID LLUUID } - { Duration S32 } - { Majority F32 } - { Quorum S32 } - } -} - -// GroupElectionBallot -// viewer -> userserver -> dataserver -// reliable -{ - GroupElectionBallot Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ElectionData Single - { GroupID LLUUID } - { ElectionID LLUUID } - { CandidateID LLUUID } - } -} - -// StartGroupRecall -// viewer -> userserver -> dataserver -// reliable -{ - StartGroupRecall Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - RecallData Single - { GroupID LLUUID } - { Duration S32 } - { RecallID LLUUID } - } -} - -// GroupRecallBallot -// viewer -> userserver -> dataserver -// reliable -{ - GroupRecallBallot Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - RecallData Single - { GroupID LLUUID } - { ElectionID LLUUID } - { VoteCast Variable 1 } // string - } -} - -// GroupActiveProposalsRequest -// viewer -> userserver -> dataserver -//reliable -{ - GroupActiveProposalsRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } -} - -// GroupActiveProposalItemReply -// dataserver -> userserver -> viewer -// reliable -{ - GroupActiveProposalItemReply Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } - { - 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 -> userserver -> dataserver -//reliable -{ - GroupVoteHistoryRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } -} - -// GroupVoteHistoryItemReply -// dataserver -> userserver -> viewer -// reliable -{ - GroupVoteHistoryItemReply Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } - { - HistoryItemData Single - { VoteID LLUUID } - { TerseDateID Variable 1 } // string - { StartDateTime Variable 1 } // string - { EndDateTime Variable 1 } // string - { VoteInitiator LLUUID } - { RecallID 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 -> userserver -> dataserver -// reliable -{ - StartGroupProposal Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ProposalData Single - { GroupID LLUUID } - { Quorum S32 } - { Majority F32 } // F32 - { Duration S32 } // S32, seconds - { ProposalText Variable 1 } // string - } -} - -// GroupProposalBallot -// viewer -> userserver -> dataserver -// reliable -{ - GroupProposalBallot Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - ProposalData Single - { ProposalID LLUUID } - { VoteCast Variable 1 } // string - } -} - -// CallVote -// viewer -> userserver -> dataserver -// reliable -{ - CallVote Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - VoteData Single - { GroupID LLUUID } - { VoteType S32 } - { VoteQuorum S32 } - { VoteTime F32 } // F32, seconds - { VoteText Variable 1 } // string - } -} - - -// Vote -// viewer -> userserver -> dataserver -// reliable -{ - Vote Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - VoteData Single - { VoteID LLUUID } - { Response S32 } // S32, 0 = no, 1 = yes - } -} - -// TallyVotes userserver -> dataserver -// reliable -{ - TallyVotes Low Trusted Unencoded -} - -// GroupMembersRequest -// get the group members -// userserver -> dataserver -// reliable -{ - GroupMembersRequest Low NotTrusted Unencoded - { - RequestData Single - { RequestID LLUUID } - { GroupID LLUUID } - { ActiveOnly BOOL } - } -} - -// GroupMembersReply -// list of uuids for the group members -// dataserver -> userserver -// reliable -{ - GroupMembersReply Low NotTrusted Zerocoded - { - ReplyData Single - { RequestID LLUUID } - { GroupID LLUUID } - } - { - AgentData Variable - { AgentID LLUUID } - } -} - -// GroupOfficersAndMembersRequest -// get the group members -// userserver -> dataserver -// reliable -{ - GroupOfficersAndMembersRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { IncludeMembers BOOL } - } -} - -// GroupOfficersAndMembersReply -// list of uuids for the group officers and members -// dataserver -> userserver -// reliable -{ - GroupOfficersAndMembersReply Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { CompoundMsgID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } - { - OfficerData Variable - { AgentID LLUUID } - { Contribution S32 } - { OnlineStatus Variable 1 } // string - } - { - MemberData Variable - { AgentID LLUUID } - { Contribution S32 } - { OnlineStatus Variable 1 } // string - } -} - -// used to switch an agent's currently active group. -// viewer -> userserver -> dataserver -> AgentDataUpdate... -{ - ActivateGroup Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } -} - -// viewer -> userserver -> dataserver -{ - SetGroupContribution Low NotTrusted Unencoded - { - Data Single - { AgentID LLUUID } - { GroupID LLUUID } - { Contribution S32 } - } -} - -// 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 -> userserver -> dataserver -// reliable -{ - AgentWearablesRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } // UUID - } -} - -// AgentWearablesUpdate -// (a.k.a. "Here's what the avatar is wearing now.") -// viewer -> userserver -> dataserver -// dataserver -> userserver -> viewer -// reliable -{ - AgentWearablesUpdate Low NotTrusted Zerocoded - { - AgentData Single - { AgentID 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 - } -} - -// AgentCachedTexture -// viewer queries for cached textures on dataserver (via simulator) -// viewer -> userserver -> dataserver -// dataserver -> userserver -> viewer -// reliable -{ - AgentCachedTexture Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { SerialNum S32 } - } - { - WearableData Variable - { ID LLUUID } - { TextureIndex U8 } - } -} - -// Request an AgentDataUpdate without changing any agent data. -{ - AgentDataUpdateRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID 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 - { GroupIndex S8 } // -1 for none - } - { - GroupData Variable - { GroupID LLUUID } - { GroupOfficer BOOL } // BOOL - { GroupInsigniaID LLUUID } - { Contribution S32 } - { GroupName Variable 1 } // string - } -} - -// 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 -{ - ViewerEffect Medium NotTrusted Zerocoded - { - Effect Variable - { ID LLUUID } // UUID of the effect - { 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 } - } -} - - -{ - RezSingleAttachmentFromInv Low NotTrusted Zerocoded - { - ObjectData Single - { AgentID LLUUID } - { AssetID LLUUID } // asset id in inventory - { ItemID LLUUID } // inventory item id - { AttachmentPt U8 } // 0 for default - { ItemFlags U32 } - { GroupMask U32 } - { EveryoneMask U32 } - { NextOwnerMask U32 } - { Name Variable 1 } - { Description Variable 1 } - } -} - -{ - RezMultipleAttachmentsFromInv Low NotTrusted Zerocoded - { - HeaderData Single - { CompoundMsgID LLUUID } // All messages a single "compound msg" must have the same id - { TotalObjects U8 } - { AgentID LLUUID } - { FirstDetachAll U8 } - } - { - ObjectData Variable // 1 to 4 of these per packet - { AssetID LLUUID } // asset id in inventory - { ItemID LLUUID } // inventory item id - { 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 } - } -} - -{ - UserInfoReply Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - UserData Single - { IMViaEMail BOOL } - { EMail Variable 2 } - } -} - -{ - UpdateUserInfo Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - UserData Single - { IMViaEMail BOOL } - } -} - - -//----------------------------------------------------------------------------- -// 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 } - } -} - - -// viewer -> sim -// initiate upload. primarily used for uploading raw files. -{ - InitiateUpload Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - FileData Single - { BaseFilename Variable 1 } // string - { SourceFilename Variable 1 } // string - } -} - -// 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 } - { Flags U32 } - { EstateID U32 } // filled in on sim - { Godlike BOOL } // filled in on sim - } -} - -// sim -> viewer -{ - MapLayerReply Low NotTrusted 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 } - { 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 } - { Flags U32 } - { EstateID U32 } // filled in on sim - { Godlike BOOL } // filled in on sim - } - { - NameData Single - { Name Variable 1 } // string - } -} - -// sim -> viewer -{ - MapBlockReply Low NotTrusted 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 } - { 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 NotTrusted 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 } - { 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 -{ - MailTaskSimRequest Low NotTrusted 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. -{ - MailTaskSimReply Low NotTrusted Unencoded - { - TargetBlock Single - { TargetIP Variable 1 } // String IP - { TargetPort IPPORT } - } - { - DataBlock Single - { TaskID LLUUID } - } -} - -// ScriptMailRegistration -// Simulator -> dataserver -{ - ScriptMailRegistration Low NotTrusted Unencoded - { - DataBlock Single - { TargetIP Variable 1 } // String IP - { TargetPort IPPORT } - { TaskID LLUUID } - { Flags U32 } - } -} - - -// MailPingBounce -// This is sent to the RPC server when the sim can not be found. -// Not currently used. -// Spaceserver -> RPC server -{ - MailPingBounce Low NotTrusted Unencoded - { - DataBlock Single - { TargetIP IPADDR } - { TargetPort IPPORT } - { TaskID LLUUID } - { Flags U32 } - } -} - - -// ParcelMediaCommandMessage -// Sends a parcel media command -{ - ParcelMediaCommandMessage Low NotTrusted 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 NotTrusted Unencoded - { - DataBlock Single - { MediaURL Variable 1 } // string - { MediaID LLUUID } - { MediaAutoScale U8 } - } -} - -// LandScriptsRequest -// Sent by the viewer to request script information for a parcel -{ - LandScriptsRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - RequestData Single - { RequestFlags U32 } - { ParcelLocalID S32 } - { RelatedID LLUUID } - } -} - -// LandScriptsReply -// Sent by the simulator in response to LandScriptsRequest -{ - LandScriptsReply Low NotTrusted Unencoded - { - RequestData Single - { RequestFlags U32 } - { TotalScriptCount U32 } - { TotalScriptTime F32 } - } - { - Data Variable - { TaskLocalID U32 } - { TaskID LLUUID } - { LocationX F32 } - { LocationY F32 } - { LocationZ F32 } - { ScriptTime F32 } - { ScriptCount S32 } - { TaskName Variable 1 } - { OwnerName Variable 1 } - } -} - -// LandCollidersRequest -// Sent by the viewer to request collider information for a parcel (not yet implemented, still using God request) -{ - LandCollidersRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - RequestData Single - { RequestFlags U32 } - { ParcelLocalID S32 } - { RelatedID LLUUID } - } -} - -// LandCollidersReply -// Sent by the simulator in response to LandCollidersRequest -{ - LandCollidersReply Low NotTrusted Unencoded - { - RequestData Single - { RequestFlags U32 } - { TotalColliderCount U32 } - } - { - Data Variable - { TaskLocalID U32 } - { TaskID LLUUID } - { LocationX F32 } - { LocationY F32 } - { LocationZ F32 } - { Score S32 } - { TaskName Variable 1 } - { OwnerName Variable 1 } - } -} +// Linden Lab development message templates + +version 1.053 + +// 1.053 added EndPointID to DenyTrustedCircuit and CreateTrustedCircuit. PP + +// ************************************************************************* +// 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 } + } +} + +// user->viewer +// AssignCircuitCode - Tells the recipient's messaging system what it's code is +//{ +// AssignCircuitCode Low Trusted Unencoded +// { +// CircuitCode Single +// { Code U32 } +// { SessionID LLUUID } +// } +//} + +// 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 + } +} + +// sim->space +// Tells the spaceserver that the simulator is ready to receive an +// agent with that circuit code. +//{ +// AckAddCircuitCode Low Trusted Unencoded +// { +// CircuitCode Single +// { Code U32 } +// } +//} + +// 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 } + } +} + +// AgentIDReply +// dataserver -> simulator +// reliable +// Message send from spaceserver to simulator +// containing agent id for a given session id +// Also, a list of name value pairs for that agent +// also tacked on a list of agents that have granted you powers +//{ +// AgentIDReply Low Trusted Zerocoded +// { +// ReplyBlock Single +// { RequestID LLUUID } +// { SessionID LLUUID } +// { AgentID LLUUID } +// { StartLocation LLVector3 } // Vector3, region local +// { StartLookAt LLVector3 } // Vector3, normalized +// { GroupID LLUUID } +// { GroupOfficer BOOL } +// { AgentAccess U8 } +// { GodLevel U8 } +// { GroupTitle Variable 1 } // string +// } +// { +// TextureData Variable +// { TextureID LLUUID } +// } +// { +// GranterBlock Variable +// { GranterID LLUUID } +// } +// { +// NameValueBlock Variable +// { NameValue Variable 2 } +// } +// { +// AttachmentBlock Variable +// { AttachmentPoint U8 } +// { ItemID LLUUID } +// { AssetID LLUUID } +// } +//} + +// AvatarTextureUpdate +// simulator -> dataserver +// reliable +{ + AvatarTextureUpdate Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { TexturesChanged BOOL } + } + { + WearableData Variable + { CacheID LLUUID } + { TextureIndex U8 } + } + { + 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 NotTrusted 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 +} + + +// AgentIDRequest +// Request to report agent ID associated with a session id +//{ +// AgentIDRequest Low Trusted Unencoded +// { +// RequestBlock Single +// { RequestID LLUUID } +// { SessionID LLUUID } +// { LocationID U32 } // 0 = last location +// { Godlike BOOL } +// } +//} +// **************************************************************************** +// 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 } + } +} + +// 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 } + { SimName Variable 1 } + { Summary Variable 1 } + { Details Variable 2 } + { VersionString Variable 1 } + } + { + MeanCollision Variable + { Perp LLUUID } + { Time U32 } + { Mag F32 } + { Type U8 } + } +} + +// 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 } + } + { + 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 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { QueryID 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 } + { SpaceIP IPADDR } // check online for right farm + } +} + + +// 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 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Variable + { QueryID LLUUID } + } + { + QueryReplies Variable + { ParcelID LLUUID } + { Name Variable 1 } + { ForSale BOOL } + { Auction BOOL } + { ReservedNewbie BOOL } + { Dwell F32 } + } +} + +// DirPeopleQuery viewer->sim +// ask about people. This gets translated into a DirPeopleQueryTrusted on +// the simulator. +// *NOTE: this message is not in use on the viewer. 2004.07.02 \P/hoenix +{ + DirPeopleQuery Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } + { Name Variable 1 } + { Group Variable 1 } + { Online U8 } + { WantToFlags U32 } + { SkillFlags U32 } + { Reputation Variable 1 } // string representation of "< 1" or "> 6" or "= 99" + { Distance Variable 1 } // string representation of "< 1" or "> 6" or "= 99" + } +} + +// DirPeopleQueryBackend sim->dataserver +// continue query about people whith a space ip address. +{ + DirPeopleQueryBackend Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } + { Name Variable 1 } + { Group Variable 1 } + { Online U8 } + { WantToFlags U32 } + { SkillFlags U32 } + { Reputation Variable 1 } // string representation of "< 1" or "> 6" or "= 99" + { Distance Variable 1 } // string representation of "< 1" or "> 6" or "= 99" + { EstateID U32 } + { Godlike BOOL } + { SpaceIP IPADDR } // used to check online status for the right farm + } +} + +// 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 NotTrusted 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 } + } +} + +// DirGroupsQuery viewer->sim +// reliable +{ + DirGroupsQuery Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } // string + } +} + +// DirGroupsQueryBackend sim->dataserver +// reliable +{ + DirGroupsQueryBackend Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } // string + { EstateID U32 } + { Godlike BOOL } + } +} + + +// DirGroupsReply +// dataserver -> userserver -> viewer +// reliable +{ + DirGroupsReply Low NotTrusted 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 } + } +} + +// 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 } + } +} + +// 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 } + } + { + 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 } + { ForSale BOOL } + { Auction BOOL } + { ReservedNewbie BOOL } + } +} + +// 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 } + { ForSale BOOL } + { Auction BOOL } + { ReservedNewbie BOOL } + { 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 } + } +} + +// **************************************************************************** +// 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 NotTrusted 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 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Info Single + { TeleportFlags U32 } + { Message Variable 1 } // string + } +} + +// DataAgentAccessRequest sim->data +// ask if agent ID can in fact teleport from their current location in +// EstateID to the destination specified by RegionHandle. If allowed, +// the handler will persist the location in user_start_location and +// send back a DataAgentAccessReply. Otherwise, the handler will send back +// a TeleportFailed. +{ + DataAgentAccessRequest Low Trusted Unencoded + { + Info Single + { AgentID LLUUID } + { EstateID U32 } + { RegionHandle U64 } + { LocationID U32 } + { LocationPos LLVector3 } + { LocationLookAt LLVector3 } + } +} + +// DataAgentAccessReply data->sim +// Message to let us know if AgentID is allowed to teleport to RegionHandle. +{ + DataAgentAccessReply Low Trusted Unencoded + { + Info Single + { AgentID LLUUID } + } +} + +// DataHomeLocationRequest sim->data +// Request +{ + DataHomeLocationRequest Low Trusted Zerocoded + { + Info Single + { AgentID LLUUID } + } +} + +// 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 NotTrusted 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 } + { TargetID LLUUID } + { Message Variable 1 } + } +} + +// InitializeLure user->space +// Prepare the spaceserver with destination information for a lure. +{ + InitializeLure Low Trusted Unencoded + { + Info Single + { LureType U8 } + { AgentID LLUUID } + { LureID LLUUID } + { RegionHandle U64 } + { Position LLVector3 } + { LookAt LLVector3 } + } +} + +// 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 NotTrusted Unencoded + { + Info Single + { TeleportFlags U32 } + } +} + +// TeleportFailed somehwere->sim->viewer +// announce failure of teleport request +{ + TeleportFailed Low NotTrusted 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 +// *************************************************************************** + +// RegisterNewAgent - Sent by viewer to simulator to tell the simulator +// that it's connecting. +// HACK -- If SessionID is null, don't bother asking for information +// from the space server. +{ + RegisterNewAgent Low NotTrusted Unencoded + { + HelloBlock Single + { AgentID LLUUID } + { SessionID LLUUID } + { LocationID U32 } // which start location to use + { Godlike BOOL } + } +} + +// viewer->sim +// request a connection to the userserver +//{ +// RequestUserserverConnection Low NotTrusted Unencoded +// { +// AgentInfo Single +// { AgentID LLUUID } +// { SessionID LLUUID } +// } +//} + +// sim->space->userserver +//{ +// UserserverConnectionForAgent Low Trusted Unencoded +// { +// AgentInfo Single +// { AgentID LLUUID } +// { SessionID LLUUID } +// } +//} + +// userserver->space->sim->agent +//{ +// UserserverReadyForAgent Low Trusted Unencoded +// { +// AgentInfo Single +// { AgentID LLUUID } +// { SessionID LLUUID } +// } +// { +// HostInfo Single +// { ServerIP IPADDR } +// { ServerPort IPPORT } +// } +//} + +// Undo +{ + Undo Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + ObjectData Variable + { ObjectID LLUUID } + } +} + + +// Redo +{ + Redo Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + ObjectData Variable + { ObjectID LLUUID } + } +} + +// UndoLand +{ + UndoLand Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } +} + + +// RedoLand +{ + RedoLand Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } +} + +// Transfer energy from agent to an object +{ + TransferEnergy Low NotTrusted Unencoded + { + Data Single + { DestID LLUUID } // destination of the transfer + { Amount S32 } // amount of the transfer + } +} + + +// MovedIntoSimulator - Sent by simulatorA to simulatorB to tell the +// simulator that a viewer is moving from A to B +// sim --> sim +{ + MovedIntoSimulator High Trusted Unencoded + { + Sender Single + { ID LLUUID } + { SessionID LLUUID } + { CircuitCode U32 } + } +} + + +// AgentPause - viewer occasionally will block, inform simulator of this fact +{ + AgentPause Low NotTrusted Unencoded + { + Sender 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 + { + Sender 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 + { ID 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 + { + Sender Single + { ID LLUUID } + { CircuitCode U32 } + { GenCounter U32 } + } + { + Throttle Single + { Throttles Variable 1 } + } +} + + +// AgentFOV - Update to agent's field of view, angle is vertical, single F32 float in radians +{ + AgentFOV Low NotTrusted Unencoded + { + Sender Single + { ID LLUUID } + { CircuitCode U32 } + { GenCounter U32 } + } + { + FOVBlock Single + { 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 + { + Sender Single + { ID LLUUID } + { CircuitCode U32 } + { GenCounter U32 } + } + { + HeightWidthBlock Single + { Height U16 } + { Width U16 } + } +} + + +// AgentSetAppearance - Update to agent appearance +{ + AgentSetAppearance Low NotTrusted Zerocoded + { + Sender Single + { ID 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 + { + Sender Single + { ID LLUUID } + } + { + AnimationList Variable + { AnimID LLUUID } + { StartAnim BOOL } + } +} + +// AgentRequestSit - Try to sit on an object +{ + AgentRequestSit High NotTrusted Zerocoded + { + Sender Single + { ID LLUUID } + } + { + TargetObject Single + { TargetID LLUUID } + { Offset LLVector3 } + } +} + +// AgentSit - Actually sit on object +{ + AgentSit High NotTrusted Unencoded + { + Sender Single + { ID LLUUID } + } +} + +// RefreshViewer - sent by viewer when it has missing geometry, etc., due to dropped packets. + +{ + RefreshViewer Low NotTrusted Unencoded + { + Sender Single + { ID 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 + { + RequestImage Variable + { Image LLUUID } + { DiscardLevel S32 } + { DownloadPriority F32 } + { Packet U32 } + } +} + +// ImageNotInDatabase +// Simulator informs viewer that a requsted image definitely does not exist in the asset database +{ + ImageNotInDatabase Low NotTrusted Unencoded + { + ImageID Single + { ID LLUUID } + } +} + +// SetAlwaysRun +// Lets the viewer choose between running and walking +{ + SetAlwaysRun Low NotTrusted Unencoded + { + Sender Single + { ID 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 } + + { TextureEntry Variable 2 } + + { NameValue Variable 2 } + { State U8 } + } + { + 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 } + } + { + InventoryFile Single + { Filename Variable 1 } + } +} + + +// ObjectDelete +// viewer -> simulator +{ + ObjectDelete Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID 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 } + { 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 } + { 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 } + } + { + 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 } + } + { + 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 } + } + { + 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 } + } + { + 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 } + { 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 } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } + +} + + +// ObjectDeselect +{ + ObjectDeselect Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } + +} + +// ObjectAttach +{ + ObjectAttach Low NotTrusted Zerocoded + { + AgentData Single + { AgentID 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 } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } +} + + +// ObjectDrop -- drops an attachment from your avatar onto the ground +{ + ObjectDrop Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } +} + + +// ObjectLink +{ + ObjectLink Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } +} + +// ObjectDelink +{ + ObjectDelink Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } +} + +// ObjectHinge +{ + ObjectHinge Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + JointType Single + { Type U8 } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } + +} + +// ObjectDehinge +{ + ObjectDehinge Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } + +} + + +// ObjectGrab +{ + ObjectGrab Low NotTrusted Zerocoded + { + Sender Single + { ID 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 } + } + { + ObjectData Single + { ObjectID LLUUID } + { GrabOffsetInitial LLVector3 } // LLVector3 + { GrabPosition LLVector3 } // LLVector3, region local + { TimeSinceLast U32 } + } +} + + +// ObjectDeGrab +{ + ObjectDeGrab Low NotTrusted Unencoded + { + Sender Single + { ID LLUUID } + } + { + ObjectData Single + { LocalID U32 } + } +} + + +// ObjectSpinStart +{ + ObjectSpinStart Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Single + { ObjectID LLUUID } + } +} + + +// ObjectSpinUpdate +{ + ObjectSpinUpdate Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Single + { ObjectID LLUUID } + { Rotation LLQuaternion } + } +} + + +// ObjectSpinStop +{ + ObjectSpinStop Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Single + { ObjectID LLUUID } + } +} + +// Export selected objects +{ + ObjectExportSelected Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { RequestID LLUUID } + { VolumeDetail S16 } + } + { + ObjectData Variable + { ObjectID LLUUID } + } +} + +// Import an object +{ + 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 + { + ModifyBlock Single + { AgentID LLUUID } + { Action U8 } + { BrushSize U8 } + { Seconds F32 } + { Height F32 } + } + { + ParcelData Variable + { LocalID S32 } + { West F32 } + { South F32 } + { East F32 } + { North F32 } + } +} + + +// VelocityInterpolateOn +{ + VelocityInterpolateOn Low NotTrusted Unencoded +} + + +// VelocityInterpolateOff +{ + VelocityInterpolateOff Low NotTrusted Unencoded +} + +// Save State +{ + StateSave Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + DataBlock Single + { Filename Variable 1 } + } +} + + +// ReportAutosaveCrash +{ + 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 } + } +} + +// Load State +// Not in use \P/hoenix - 2004.07.14 +{ + StateLoad Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + DataBlock Single + { Filename Variable 1 } + } +} + +// 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 + { + ObjectData Single + { RequestFlags U32 } + { AgentID LLUUID } + { 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 + { + AgentBlock Single + { AgentID LLUUID } + { PreyID LLUUID } + } +} + + +// Grant agents the ability to modify your stuff. This message is sent +// to the user server, and then passed along to the dataserver for +// persistance. The dataserver will push live updates through +// AddModifyAbility messages to the simulator. +// viewer -> userserver -> dataserver +{ + GrantModification Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GranterName Variable 1 } + } + { + EmpoweredBlock Variable + { EmpoweredID LLUUID } + } +} + +// Revoke the ability to modify your stuff. This message is sent to +// the user server, and then passed along to the dataserver for +// persistance. The dataserver will push live updates through +// RemoveModifyAbility messages to the simulator. +// viewer -> userserver -> dataserver +{ + RevokeModification Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GranterName Variable 1 } + } + { + RevokedBlock Variable + { RevokedID LLUUID } + } +} + +// This message is sent from viewer->userserver, which responds with +// the complete list of all granted agents in the GrantedProxies +// message. +{ + RequestGrantedProxies Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } +} + +// response to the message above +{ + GrantedProxies Low Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ProxyBlock Variable + { EmpoweredID LLUUID } + } +} + +// This message is sent from the dataserver to the simulator to let +// AgentID know that they can modify GranterID's stuff. This message is +// percolated out to child cameras but not the viewer. This message is +// in response to GrantModification messages, request, or login. +// ROUTED dataserver -> userserver -> spaceserver -> simulator +// reliable +{ + AddModifyAbility Low Trusted Zerocoded + { + TargetBlock Single + { TargetIP IPADDR } // U32 encoded IP + { TargetPort IPPORT } + } + { + AgentBlock Single + { AgentID LLUUID } + } + { + GranterBlock Variable + { GranterID LLUUID } + } +} + +// This message is sent from the dataserver to the simulator to let +// AgentID know that they can no longer modify GranterID's stuff. This +// message is percolated out to child cameras but not the viewer. This +// message is in response to RevokeModification messages. +// ROUTED dataserver -> userserver -> spaceserver -> simulator +// reliable +{ + RemoveModifyAbility Low Trusted Unencoded + { + TargetBlock Single + { TargetIP IPADDR } // U32 encoded IP + { TargetPort IPPORT } + } + { + AgentBlock Single + { AgentID LLUUID } + { RevokerID LLUUID } + } +} + +// end viewer to simulator section + +{ + ViewerStats Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { IP IPADDR } + { StartTime U32 } + { RunTime F32 } // F32 + { FPS F32 } // F32 + { 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 + { + Data Single + { AgentID LLUUID } + { TaskID LLUUID } + { ItemID LLUUID } + { Questions S32 } + } +} + + +// complaint/bug-report +// reliable +{ + UserReport Low NotTrusted Zerocoded + { + ReportData Single + { ReportType U8 } // BUG=1, COMPLAINT=2 + { Category U8 } // see sequence.user_report_category + { ReporterID LLUUID } + { Position LLVector3 } // screenshot position, region-local + { CheckFlags U8 } // checkboxflags + { ScreenshotID LLUUID } + { ObjectID LLUUID } + { Summary Variable 1 } + { Details Variable 2 } + { VersionString Variable 1 } + } + { + MeanCollision Variable + { Perp LLUUID } + { Time U32 } + { Mag F32 } + { Type U8 } + } +} + + +// *************************************************************************** +// 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 NotTrusted 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 + { + 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 udpate 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 } + } +} + +{ + 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 } + { 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 } + { AvatarID LLUUID } + } +} + +// AvatarPropertiesRequestBackend +// simulator -> dataserver +// reliable +{ + AvatarPropertiesRequestBackend Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { AvatarID LLUUID } + { GodLevel U8 } + } +} +// 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 + { WantToMask U32 } + { WantToText Variable 1 } // string + { SkillsMask U32 } + { SkillsText Variable 1 } // string + { FLAboutText Variable 1 } // string + { BornOn Variable 1 } // string + { CharterMember Variable 1 } // special - usually U8 + { AllowPublish BOOL } // whether profile is externally visible or not + { MaturePublish BOOL } // profile is "mature" + { Identified BOOL } // whether avatar has provided payment info + { Transacted BOOL } // whether avatar has actively used payment info + } +} + +// 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 + { GroupOfficer BOOL } + { GroupTitle Variable 1 } + { GroupID LLUUID } + { GroupName Variable 1 } + { GroupInsigniaID LLUUID } + } +} + + +// AvatarPropertiesUpdate +// viewer -> simulator +// simulator -> dataserver +// reliable +{ + AvatarPropertiesUpdate Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + PropertiesData Single + { AvatarID LLUUID } + { ImageID LLUUID } + { FLImageID LLUUID } + { AboutText Variable 2 } // string, up to 512 + { FLAboutText Variable 1 } + { WantToMask U32 } + { WantToText Variable 1 } // string + { SkillsMask U32 } + { SkillsText Variable 1 } // string + { AllowPublish BOOL } // whether profile is externally visible or not + { MaturePublish BOOL } // profile is "mature" + } +} + +// 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 } + } + { + 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 } + } + { + 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 } + + } + { + EventData Single + { EventID U32 } + } +} + + +// EventNotificationRemoveRequest +// viewer -> simulator +// simulator -> dataserver +// reliable +{ + EventNotificationRemoveRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID 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 } + } + { + 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 } + } + { + 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 } + } + { + 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 NotTrusted 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 + { + Data Single + { AgentID LLUUID } + { ObjectID LLUUID } + { ChatChannel S32 } + { ButtonIndex S32 } + { ButtonLabel Variable 1 } + } +} + + +// ForceScriptControlRelease +// reliable +{ + ForceScriptControlRelease Low NotTrusted Unencoded + { + Data Single + { ID LLUUID } + } +} + +// RevokePermissions +// reliable +{ + RevokePermissions Low NotTrusted Unencoded + { + Data Single + { AgentID LLUUID } + { 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 } + { Message Variable 1 } + { URL Variable 1 } + } +} + +// ScriptTeleportRequest +// reliable +{ + ScriptTeleportRequest Low NotTrusted 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 + { + ParcelData Single + { AgentID LLUUID } + { SequenceID S32 } + { West F32 } + { South F32 } + { East F32 } + { North F32 } + { SnapSelection BOOL } + } +} + +// ParcelPropertiesRequestByID +// viewer -> sim +// reliable +{ + ParcelPropertiesRequestByID Low NotTrusted Zerocoded + { + ParcelData Single + { AgentID LLUUID } + { 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 } + } +} + +// 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 S32 } + { OtherCleanTime S32 } + } + { + TaskIDs Variable + { TaskID LLUUID } + } + { + OwnerIDs Variable + { OwnerID LLUUID } + } +} + +// 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 S32 } + { OtherCleanTime S32 } + } + { + 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 S32 } + } + { + ReturnIDs Variable + { ReturnID 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 + { + ParcelData Single + { AgentID LLUUID } + { 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 + { + ParcelData Single + { AgentID LLUUID } + { 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 } + { 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 + { + Data Single + { AgentID LLUUID } + { SequenceID S32 } + { Flags U32 } + { LocalID S32 } + } +} + + +// sim -> viewer +// ParcelAccessListReply +{ + ParcelAccessListReply Low NotTrusted 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 } + } + { + 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 } + } +} + +// userserver -> dataserver +// Used to request all parcel sales in the database +//{ +// RequestParcelSales Low Trusted Unencoded +//} + +// dataserver -> userserver -> spaceserver +// response of all (up to max packet size) parcel sales in the database. +// each block in the meassage represents a parcel that a human agreed +// to pay US$. +//{ +// BulkParcelSales Low Trusted Unencoded +// { +// ParcelData Variable +// { RegionHandle U64 } +// { ParcelID LLUUID } +// { BuyerID 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 } + } +} + +// userserver -> dataserver +// Used to request all parcel sales in the database +//{ +// RequestParcelAuctions Low Trusted Unencoded +//} + +// dataserver -> userserver -> spaceserver +// response of all (up to max packet size) parcel sales in the database. +// each block in the meassage represents a parcel that a human agreed +// to pay US$. +//{ +// BulkParcelAuctions Low Trusted Unencoded +// { +// ParcelData Variable +// { RegionHandle U64 } +// { ParcelID LLUUID } +// { WinnerID 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 } + { GroupIndex S8 } // -1 for none + } + { + GroupData Variable + { GroupID LLUUID } + { GroupOfficer BOOL } // 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 GetScriptRunningReply +{ + 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 } + } +} + +// LoginRequestSafe +// Attempt to log into the system with an auth token obtained via a +// secure out of band mechanism (such as a TLS tunnel) +// viewer -> userserver +// unreliable +//{ +// LoginRequestSafe Low NotTrusted Unencoded +// { +// LoginBlock Single +// { AuthToken LLUUID } // session id really +// { ViewerDigest LLUUID } // MD5 of viewer exe +// { LastExecFroze BOOL } +// } +//} + +// LoginReply +// Identifies the session, or sends LLUUID::null if invalid +// userserver -> viewer +//{ +// LoginReply Low Trusted Zerocoded +// { +// UserData Single +// { Firstname Variable 1 } // string, canonical caps +// { Lastname Variable 1 } // string, canonical caps +// { SessionID LLUUID } +// { AgentID LLUUID } +// { ErrorMessage Variable 1 } +// { AgentAccess U8 } +// { GroupOfficer BOOL } +// { GroupTitle Variable 1 } +// { GroupID LLUUID } +// { GroupName Variable 1 } +// { GroupInsigniaID LLUUID } +// { LoginFlags U32 } // bitfield +// { SunTextureID LLUUID } +// { MoonTextureID LLUUID } +// { CloudTextureID LLUUID } +// { TOSAssetID LLUUID } // Null if TOS agreement is current +// { CriticalMessageAssetID LLUUID } // Null if message is current +// { TrialDaysLeft S32 } // Zero if not trial +// { ServerUTCTime U32 } // time_t, unix time format +// } +// { +// StartLocationData Variable +// { LocationID U32 } +// { LocationRegionX U32 } // U32, meters to southwest +// { LocationRegionY U32 } +// { LocationPos LLVector3 } // Vector3, region coords +// { LocationLookAt LLVector3 } // Vector3 +// } +//} + +// DataserverLoginRequestSafe +// userserver -> dataserver +//{ +// DataserverLoginRequestSafe Low Trusted Unencoded +// { +// UserData Single +// { AuthToken LLUUID } // session id really +// { IP IPADDR } +// { Port IPPORT } +// { SpaceIP IPADDR } +// { ViewerDigest LLUUID } +// { LastExecFroze BOOL } +// } +//} + +// DataServerLoginReply +// TimeValid is true if user is allowed to log in at this time +// dataserver -> userserver +// reliable +//{ +// DataServerLoginReply Low Trusted Zerocoded +// { +// UserData Single +// { Firstname Variable 1 } // string +// { Lastname Variable 1 } // string +// { IP IPADDR } // don't think this is valid JC 6/02 +// { Port IPPORT } // don't think this is valid JC 6/02 +// { LoginValid BOOL } +// { TimeValid BOOL } +// { ErrorMessage Variable 1 } // string +// { AgentID LLUUID } +// { SessionID LLUUID } +// { LimitedToEstate U32 } +// { AgentAccess U8 } +// { GroupOfficer BOOL } +// { GroupTitle Variable 1 } +// { GroupID LLUUID } +// { GroupName Variable 1 } +// { GroupInsigniaID LLUUID } +// { LoginFlags U32 } // bitfield +// { SunTextureID LLUUID } +// { MoonTextureID LLUUID } +// { CloudTextureID LLUUID } +// { TOSAssetID LLUUID } // Null if TOS agreement is current +// { CriticalMessageAssetID LLUUID } // Null if message is current +// { TrialDaysLeft S32 } // Zero if not trial +// { ServerUTCTime U32 } // time_t, unix time format +// { SpaceIP IPADDR } +// { ViewerDigest LLUUID } +// { LastExecFroze BOOL } +// } +// { +// StartLocationData Variable +// { LocationID U32 } +// { LocationRegionX U32 } +// { LocationRegionY U32 } +// { LocationPos LLVector3 } // Vector3 +// { LocationLookAt LLVector3 } // Vector3 +// } +//} + +// The user agrees to the current Terms of Service +// or clicks OK on the current critical message +// type 0 = TOS +// type 1 = critical message +// viewer -> userserver -> dataserver +//{ +// TOSAgreement Low NotTrusted Unencoded +// { +// AgentBlock Single +// { AgentID LLUUID } +// { Type S32 } +// } +//} + +// 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 NotTrusted 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 NotTrusted 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) + { NewAssetID LLUUID } + } +} + + + +// LogoutDemand +// Unreliable, because the viewer quits before it has a chance to retransmit. +// viewer -> userserver +// unreliable +{ + LogoutDemand Low NotTrusted Unencoded + { + LogoutBlock Single + { SessionID LLUUID } + } +} + + +//----------------------------------------------------------------------------- +// Viewer to UserServer Messages +//----------------------------------------------------------------------------- + +// ViewerLoginLocationRequest +// viewer -> userserver +// *NOTE: obsolete +{ + ViewerLoginLocationRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + PositionBlock Single + { ViewerRegion U64 } + { ViewerPosition LLVector3 } + } + { + URLBlock Single + { SimName Variable 1 } + { Pos LLVector3 } + } +} + +// ViewerSimLocationRequest +// viewer -> userserver +// *NOTE: obsolete +{ + ViewerSimLocationRequest Low NotTrusted Unencoded + { + PositionBlock Single + { AgentID LLUUID } + { SimName Variable 1 } + } +} + +// RequestLocationGetAccess +// userserver -> dataserver +// *NOTE: obsolete. +{ + RequestLocationGetAccess Low Trusted Unencoded + { + PositionBlock Single + { AgentID LLUUID } + { SessionID LLUUID } + { ViewerIP IPADDR } + { ViewerPort IPPORT } + { ViewerRegion U64 } + { ViewerPosition LLVector3 } + } +} + +// RequestLocationGetAccessReply +// dataserver -> userserver +// *NOTE: obsolete. +{ + RequestLocationGetAccessReply Low Trusted Unencoded + { + PositionBlock Single + { ViewerIP IPADDR } + { ViewerPort IPPORT } + { ViewerRegion U64 } + { ViewerPosition LLVector3 } + { TravelAccess U8 } + } +} + + +// UserListRequest +// Get a list of the current system users +// viewer -> userserver +//*NOTE: obsolete +{ + UserListRequest Low NotTrusted Unencoded +} + + +//----------------------------------------------------------------------------- +// 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 + { + MessageBlock Single + { FromAgentID LLUUID } + { 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 } + } +} + +// Start group IM session. If everyone is 1, then offline users also +// get the messages. +{ + StartGroupIM Low NotTrusted Unencoded + { + SessionBlock Single + { SessionID LLUUID } + { Everyone U8 } + } + { + Participants Variable + { AgentID LLUUID } + } +} + +// drop out from a group instant message +{ + DropGroupIM Low NotTrusted Unencoded + { + SessionBlock Single + { SessionID LLUUID } + { AgentID LLUUID } + } +} + +// Group instant messaging +{ + GroupIM Low NotTrusted Unencoded + { + MessageBlock Single + { SessionID LLUUID } + { FromID LLUUID } + { FromAgentName Variable 1 } + { Message Variable 2 } + } +} + +// RetrieveInstantMessages - used to get instant messages that +// were persisted out to the database while the user was offline +{ + RetrieveInstantMessages Low NotTrusted Unencoded + { + AgentBlock Single + { Agent 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 } + } +} + +// This message is sent viewer->userserver to track if other agents +// come on or off line. +{ + TrackOnlineStatus Low NotTrusted Zerocoded + { + AgentBlock Variable + { AgentID LLUUID } + } +} + +// This message is sent viewer->userserver to ignore logon and logoff +// events for the specified agents. This is typically sent when a +// calling card is deleted or cancelled. +{ + IgnoreOnlineStatus Low NotTrusted Zerocoded + { + AgentBlock Variable + { AgentID LLUUID } + } +} + +// 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 } + } + { + 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 } + } + { + 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 } + } + { + 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 + { + MuteData Single + { AgentID LLUUID } + { MuteCRC U32 } + } +} + +// update/add someone in the mute list +{ + UpdateMuteListEntry Low NotTrusted Unencoded + { + MuteData Single + { AgentID LLUUID } + { MuteID LLUUID } + { MuteName Variable 1 } + { MuteType S32 } + { MuteFlags U32 } + } +} + +// Remove a mute list entry. +{ + RemoveMuteListEntry Low NotTrusted Unencoded + { + MuteData Single + { AgentID LLUUID } + { MuteID LLUUID } + { MuteName Variable 1 } + } +} + + +// viewer -> userserver, gimme inventory +//{ +// InventoryRequest Low NotTrusted Unencoded +// { +// InventoryData Single +// { AgentID LLUUID } +// { CacheCRC U32 } +// } +//} + +// +// Inventory update messages +// +{ + UpdateInventoryItem Low NotTrusted 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 } + } +} + +// When all that has updated is the asset, we can crunch this down. +{ + UpdateInventoryItemAsset Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } + { AssetID LLUUID } + } +} + +{ + MoveInventoryItem Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { Stamp BOOL } // should the server re-timestamp? + } + { + InventoryData Variable + { ItemID LLUUID } + { FolderID LLUUID } + } +} + +// copy inventory item by item id to specified destination folder, +// send out bulk inventory update when done. +// currently only sim->data, but it is general enough to be +// a viewer request. +{ + CopyInventoryItem Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Variable + { OldItemID LLUUID } + { NewFolderID LLUUID } + } +} + +{ + RemoveInventoryItem Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } + } +} + +{ + ChangeInventoryItemFlags Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } + { Flags U32 } + } +} + + +{ + SaveAssetIntoInventory Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Single + { ItemID LLUUID } + { NewAssetID LLUUID } + } +} + +{ + CreateInventoryFolder Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + FolderData Single + { FolderID LLUUID } + { ParentID LLUUID } + { Type S8 } + { Name Variable 1 } + } +} + +{ + UpdateInventoryFolder Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } + { ParentID LLUUID } + { Type S8 } + { Name Variable 1 } + } +} + +{ + MoveInventoryFolder Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { Stamp BOOL } // should the server re-timestamp children + } + { + InventoryData Variable + { FolderID LLUUID } + { ParentID LLUUID } + } +} + +{ + RemoveInventoryFolder Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } + } +} + +// Get inventory segment. +{ + FetchInventoryDescendents Low NotTrusted Zerocoded + { + AgentData Single + { AgentID 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 NotTrusted 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 } + } + { + InventoryData Variable + { OwnerID LLUUID } + { ItemID LLUUID } + } +} + +// response to fetch inventory +{ + FetchInventoryReply Low NotTrusted 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. +{ + 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 } + { 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 } + } + { + 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 } + { GroupID 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 + { AssetID 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 } + { GroupID LLUUID } + } + { + InventoryData Single + { LocalID U32 } + { ItemID LLUUID } + } +} + +{ + MoveTaskInventory Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID 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 + { + AgentBlock Single + { AgentID LLUUID } + { SessionID LLUUID } + { 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 } + { 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 + { AssetID LLUUID } + { Type S8 } + { InvType S8 } + { Flags U32 } + { SaleType U8 } + { SalePrice S32 } + { Name Variable 1 } + { Description Variable 1 } + { CreationDate S32 } + { CRC U32 } + } +} + +// if declined, the destid agent from the GiveInventory message +// responds with this message to the userserver +{ + DeclineInventory Low NotTrusted Unencoded + { + InfoBlock Single + { TransactionID LLUUID } + } +} + +// userserver -> 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 -> userserver +// 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 + { + AgentBlock Single + { SourceID LLUUID } + { FolderID LLUUID } // source ID's calling card folder + { DestID LLUUID } + { TransactionID LLUUID } + } +} + +{ + AcceptFriendship Low NotTrusted Unencoded + { + TransactionBlock Single + { TransactionID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } // place to put calling card. + } +} + +{ + DeclineFriendship Low NotTrusted Unencoded + { + TransactionBlock Single + { TransactionID LLUUID } + } +} + + +//{ +// AddCallingCard Low NotTrusted Unencoded +// { +// CardBlock Variable +// { SourceUUID LLUUID } +// { DestUUID LLUUID } +// { Name Variable 1 } +// } +//} + +{ + 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 + { + AgentBlock Single + { SourceID LLUUID } + { DestID LLUUID } + { TransactionID LLUUID } + } +} + +{ + AcceptCallingCard Low NotTrusted Unencoded + { + TransactionBlock Single + { TransactionID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } // place to put calling card. + } +} + +{ + DeclineCallingCard Low NotTrusted Unencoded + { + 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 + { AssetID 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 + { FolderID LLUUID } + { NextOwnerMask U32 } + { Type S8 } + { InvType S8 } + { 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 } + } +} + +//{ +// RegionIDRequest Low NotTrusted Unencoded +// { +// RequestBlock Single +// { RegionHandle U64 } +// } +//} + +{ + 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 + { + MoneyData Single + { TransactionID LLUUID } + { AgentID 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 + { + MoneyData Single + { AgentID LLUUID } + { 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 + { + MoneyData Single + { AgentID LLUUID } + { 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 + { + MoneyData Single + { AgentID LLUUID } + { 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 } + { 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 } + { 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 } + } +} + +// possible alternate to InventoryUpdate - tells viewer to load cached inventory +//{ +// UseCachedInventory Low Trusted Unencoded +// { +// InventoryData Single +// { AgentID LLUUID } +// } +//} + +// 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 } + } +} + + +// UserLoginLocationReply +// userserver -> viewer +{ + UserLoginLocationReply Low Trusted Zerocoded + { + AgentData Single + { SessionID LLUUID } + { Message Variable 1 } + } + { + RegionInfo Single + { LocationValid BOOL } + { GridsPerEdge U32 } + { MetersPerGrid F32 } + { Handle U64 } + { UsecSinceStart U64 } + { SecPerDay U32 } + { SecPerYear U32 } + { SunDirection LLVector3 } + { SunAngVelocity LLVector3 } + } + { + SimulatorBlock Single + { IP IPADDR } + { Port IPPORT } + } + { + URLBlock Single + { LocationID U32 } + { LocationLookAt LLVector3 } + } +} + +// UserSimLocationReply +// userserver -> viewer +{ + UserSimLocationReply Low Trusted Unencoded + { + SimulatorBlock Single + { AccessOK U8 } + { SimName Variable 1 } + { SimHandle U64 } + } +} + +// UserListReply +// Return a list of users on the system +{ + UserListReply Low Trusted Unencoded + { + UserBlock Variable + { FirstName Variable 1 } + { LastName Variable 1 } + { Status U8 } + } +} + +// 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 + { + StartLocationData Single + { AgentID LLUUID } + { 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 } + } +} + + + +// UserLoginLocationRequest +// userserver -> spaceserver +{ + UserLoginLocationRequest Low Trusted Zerocoded + { + UserBlock Single + { SessionID LLUUID } + { TravelAccess U8 } + { FirstLogin BOOL } + { LimitedToEstate U32 } + } + { + PositionBlock Single + { ViewerRegion U64 } + { ViewerPosition LLVector3 } + } + { + URLBlock Single + { SimName Variable 1 } + { Pos LLVector3 } + } +} + +// SpaceLoginLocationReply +// spaceserver -> userserver +// not reliable +{ + SpaceLoginLocationReply Low Trusted Zerocoded + { + UserBlock Single + { SessionID LLUUID } + { LocationID U32 } + { LocationPos LLVector3 } + { LocationLookAt LLVector3 } + } + { + SimulatorBlock Single + { IP IPADDR } + { Port IPPORT } + { CircuitCode U32 } + { Name Variable 1 } + { SimAccess U8 } + } + { + RegionInfo Single + { GridsPerEdge U32 } + { MetersPerGrid F32 } + { Handle U64 } + { UsecSinceStart U64 } + { SecPerDay U32 } + { SecPerYear U32 } + { SunDirection LLVector3 } + { SunAngVelocity 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 } + } +} + +// *************************************************************************** +// Simulator to QuerySim +// *************************************************************************** + +// SimulatorPauseState - what parts of the sim are paused + +{ + SimulatorPauseState Low NotTrusted Unencoded + { + PauseBlock Single + { SimPaused U32 } + { LayersPaused U32 } + { TasksPaused U32 } + } +} + +// SimulatorThrottleSettings - what are the current throttle settings? + +{ + SimulatorThrottleSettings Low NotTrusted Unencoded + { + Sender Single + { ID LLUUID } + } + { + Throttle Single + { Throttles Variable 1 } + } +} + +// *************************************************************************** +// 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 +{ + UpdateAttachment Low NotTrusted 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 + { UUID LLUUID } + { Type S8 } + { Tempfile 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 + { GroupID LLUUID } + { Name Variable 1 } // string + { Charter Variable 2 } // string + { ShowInList U8 } + { ShowMembersInGroupDir U8 } + { RequireMask U32 } // U32 mask + { ReputationMin S32 } + { ReputationMax S32 } + { MoneyMin S32 } + { MoneyMax S32 } + { OfficerTitle Variable 1 } // string + { MemberTitle Variable 1 } // string +// { OfficerMax U8 } +// { MemberMax U8 } + { PowersMask U32 } // U32 mask + { InsigniaID LLUUID } + { InviteOfficers Variable 2 } // string + { InviteMembers Variable 2 } // string + { MembershipFee S32 } // S32 + { OpenEnrollment BOOL } // BOOL (U8) + { AllowPublish BOOL } // whether profile is externally visible or not + { MaturePublish BOOL } // profile is "mature" + } +} + +// CreateGroupReply +// dataserver -> userserver +// userserver -> viewer +// reliable +{ + CreateGroupReply Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ReplyData Single + { GroupID LLUUID } + { Result S32 } + { 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 } + { ShowMembersInGroupDir BOOL } + { OfficerTitle Variable 1 } // string + { MemberTitle Variable 1 } // string +// { OfficerMax U8 } +// { MemberMax U8 } + { InsigniaID LLUUID } + { MembershipFee S32 } + { OpenEnrollment BOOL } + { InviteOfficers Variable 2 } // string + { InviteMembers Variable 2 } // string + { AllowPublish BOOL } + { MaturePublish BOOL } + } +} + +{ + GroupInfoUpdated Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } +} + +// JoinGroupRequest +// viewer -> simulator -> dataserver +// reliable +{ + JoinGroupRequest Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// JoinGroupReply +// dataserver -> userserver -> viewer +{ + JoinGroupReply Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { Success BOOL } + } +} + +// EjectGroupMemberRequest +// viewer -> userserver -> dataserver +// reliable +{ + EjectGroupMemberRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { AgentID LLUUID } + } +} + +// This message is sent from the dataserver to the simulator to let +// AgentID know that they are no longer a member of the group. This +// message is in response to EjectGroupMemberRequest messages. +// ROUTED dataserver -> userserver -> spaceserver -> simulator +// reliable +{ + RemoveMemberFromGroup Low Trusted Unencoded + { + TargetBlock Single + { TargetIP IPADDR } // U32 encoded IP + { TargetPort IPPORT } + } + { + AgentBlock Single + { AgentID LLUUID } + } + { + GroupBlock Single + { GroupID LLUUID } + } +} + + +// LeaveGroupRequest +// viewer -> userserver -> dataserver +// reliable +{ + LeaveGroupRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// InviteGroupResponse +// simulator -> dataserver +// reliable +{ + InviteGroupResponse Low Trusted Unencoded + { + InviteData Single + { AgentID LLUUID } + { InviteeID LLUUID } + { GroupID LLUUID } + { Officer BOOL } + { MembershipFee S32 } + } +} + +// GroupPropertiesRequest +// viewer-> userserver -> dataserver +// reliable +{ + GroupPropertiesRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupPropertiesReply +// viewer -> userserver -> dataserver +// reliable +{ + GroupPropertiesReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { Name Variable 1 } // string + { Charter Variable 2 } // string + { ShowInList U8 } + { ShowMembersInGroupDir U8 } + { RequireMask U32 } // U32 mask + { ReputationMin S32 } + { ReputationMax S32 } + { MoneyMin S32 } + { MoneyMax S32 } + { OfficerTitle Variable 1 } // string + { MemberTitle Variable 1 } // string +// { OfficerMax U8 } +// { MemberMax U8 } + { PowersMask U32 } // U32 mask + { InsigniaID LLUUID } + { FounderID LLUUID } + { MembershipFee S32 } // S32 + { OpenEnrollment BOOL } // BOOL (U8) + { Money S32 } + { CurrentElectionID LLUUID } + { GroupMembershipCount S32 } + { AllowPublish BOOL } + { MaturePublish BOOL } + } +} + +// GroupProfileRequest +// viewer-> userserver -> dataserver +// reliable +{ + GroupProfileRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupProfileReply +// dataserver -> userserver -> viewer +// reliable +{ + GroupProfileReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { Name Variable 1 } // string + { Charter Variable 2 } // string + { ShowInList U8 } + { ShowMembersInGroupDir U8 } + { OfficerTitle Variable 1 } // string + { MemberTitle Variable 1 } // string + { InsigniaID LLUUID } + { FounderID LLUUID } + { FounderName Variable 1 } + { MembershipFee S32 } + { OpenEnrollment BOOL } + } +} + +// GroupMoneyHistoryRequest +// viewer-> userserver -> dataserver +// reliable +{ + GroupMoneyHistoryRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupMoneyHistoryReply +// dataserver -> userserver -> viewer +// reliable +{ + GroupMoneyHistoryReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + GroupData Single + { IntervalDays S32 } + { CurrentInterval S32 } + { CurrentTaxes S32 } + { CurrentDividend S32 } + { EstimatedTaxes S32 } + { EstimatedDividend S32 } + { NumberNonExemptMembers S32 } + } +} + + +// CurrentInterval = 0 => this period (week, day, etc.) +// CurrentInterval = 1 => last period +// viewer -> userserver -> dataserver +// reliable +{ + GroupAccountSummaryRequest Low NotTrusted Zerocoded + { + MoneyData Single + { AgentID LLUUID } + { GroupID LLUUID } + { RequestID LLUUID } + { IntervalDays S32 } + { CurrentInterval S32 } + } +} + + +// dataserver -> userserver -> viewer +// Reliable +{ + GroupAccountSummaryReply Low NotTrusted 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 + { + MoneyData Single + { AgentID LLUUID } + { GroupID LLUUID } + { RequestID LLUUID } + { IntervalDays S32 } + { CurrentInterval S32 } + } +} + +// Reliable +{ + GroupAccountDetailsReply Low NotTrusted 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 + { + MoneyData Single + { AgentID LLUUID } + { GroupID LLUUID } + { RequestID LLUUID } + { IntervalDays S32 } + { CurrentInterval S32 } + } +} + +// Reliable +{ + GroupAccountTransactionsReply Low NotTrusted 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 } + } +} + +// GroupElectionInfoRequest +// viewer -> userserver -> dataserver +//reliable +{ + GroupElectionInfoRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupElectionInfoReply +// dataserver -> userserver -> viewer +// reliable +{ + GroupElectionInfoReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ElectionData Single + { GroupID LLUUID } + { ElectionID LLUUID } + { ElectionType Variable 1 } // string + { StartDateTime Variable 1 } // string + { EndDateTime Variable 1 } // string + { ElectionInitiator LLUUID } + { AlreadyVoted BOOL } + { VotedForCandidate LLUUID } + { VoteCast Variable 1 } // string + { Majority F32 } + { Quorum S32 } + } + { + CandidateData Variable + { AgentID LLUUID } + } +} + +// StartGroupElection +// viewer -> userserver -> dataserver +// reliable +{ + StartGroupElection Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ElectionData Single + { GroupID LLUUID } + { Duration S32 } + { Majority F32 } + { Quorum S32 } + } +} + +// GroupElectionBallot +// viewer -> userserver -> dataserver +// reliable +{ + GroupElectionBallot Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ElectionData Single + { GroupID LLUUID } + { ElectionID LLUUID } + { CandidateID LLUUID } + } +} + +// StartGroupRecall +// viewer -> userserver -> dataserver +// reliable +{ + StartGroupRecall Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + RecallData Single + { GroupID LLUUID } + { Duration S32 } + { RecallID LLUUID } + } +} + +// GroupRecallBallot +// viewer -> userserver -> dataserver +// reliable +{ + GroupRecallBallot Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + RecallData Single + { GroupID LLUUID } + { ElectionID LLUUID } + { VoteCast Variable 1 } // string + } +} + +// GroupActiveProposalsRequest +// viewer -> userserver -> dataserver +//reliable +{ + GroupActiveProposalsRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupActiveProposalItemReply +// dataserver -> userserver -> viewer +// reliable +{ + GroupActiveProposalItemReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + 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 -> userserver -> dataserver +//reliable +{ + GroupVoteHistoryRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupVoteHistoryItemReply +// dataserver -> userserver -> viewer +// reliable +{ + GroupVoteHistoryItemReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + HistoryItemData Single + { VoteID LLUUID } + { TerseDateID Variable 1 } // string + { StartDateTime Variable 1 } // string + { EndDateTime Variable 1 } // string + { VoteInitiator LLUUID } + { RecallID 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 -> userserver -> dataserver +// reliable +{ + StartGroupProposal Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ProposalData Single + { GroupID LLUUID } + { Quorum S32 } + { Majority F32 } // F32 + { Duration S32 } // S32, seconds + { ProposalText Variable 1 } // string + } +} + +// GroupProposalBallot +// viewer -> userserver -> dataserver +// reliable +{ + GroupProposalBallot Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ProposalData Single + { ProposalID LLUUID } + { VoteCast Variable 1 } // string + } +} + +// CallVote +// viewer -> userserver -> dataserver +// reliable +{ + CallVote Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + VoteData Single + { GroupID LLUUID } + { VoteType S32 } + { VoteQuorum S32 } + { VoteTime F32 } // F32, seconds + { VoteText Variable 1 } // string + } +} + + +// Vote +// viewer -> userserver -> dataserver +// reliable +{ + Vote Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + VoteData Single + { VoteID LLUUID } + { Response S32 } // S32, 0 = no, 1 = yes + } +} + +// TallyVotes userserver -> dataserver +// reliable +{ + TallyVotes Low Trusted Unencoded +} + +// GroupMembersRequest +// get the group members +// userserver -> dataserver +// reliable +{ + GroupMembersRequest Low NotTrusted Unencoded + { + RequestData Single + { RequestID LLUUID } + { GroupID LLUUID } + { ActiveOnly BOOL } + } +} + +// GroupMembersReply +// list of uuids for the group members +// dataserver -> userserver +// reliable +{ + GroupMembersReply Low NotTrusted Zerocoded + { + ReplyData Single + { RequestID LLUUID } + { GroupID LLUUID } + } + { + AgentData Variable + { AgentID LLUUID } + } +} + +// GroupOfficersAndMembersRequest +// get the group members +// userserver -> dataserver +// reliable +{ + GroupOfficersAndMembersRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { IncludeMembers BOOL } + } +} + +// GroupOfficersAndMembersReply +// list of uuids for the group officers and members +// dataserver -> userserver +// reliable +{ + GroupOfficersAndMembersReply Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { CompoundMsgID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } + { + OfficerData Variable + { AgentID LLUUID } + { Contribution S32 } + { OnlineStatus Variable 1 } // string + } + { + MemberData Variable + { AgentID LLUUID } + { Contribution S32 } + { OnlineStatus Variable 1 } // string + } +} + +// used to switch an agent's currently active group. +// viewer -> userserver -> dataserver -> AgentDataUpdate... +{ + ActivateGroup Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } +} + +// viewer -> userserver -> dataserver +{ + SetGroupContribution Low NotTrusted Unencoded + { + Data Single + { AgentID LLUUID } + { GroupID LLUUID } + { Contribution S32 } + } +} + +// 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 -> userserver -> dataserver +// reliable +{ + AgentWearablesRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } // UUID + } +} + +// AgentWearablesUpdate +// (a.k.a. "Here's what the avatar is wearing now.") +// viewer -> userserver -> dataserver +// dataserver -> userserver -> viewer +// reliable +{ + AgentWearablesUpdate Low NotTrusted Zerocoded + { + AgentData Single + { AgentID 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 + } +} + +// AgentCachedTexture +// viewer queries for cached textures on dataserver (via simulator) +// viewer -> userserver -> dataserver +// dataserver -> userserver -> viewer +// reliable +{ + AgentCachedTexture Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { SerialNum S32 } + } + { + WearableData Variable + { ID LLUUID } + { TextureIndex U8 } + } +} + +// Request an AgentDataUpdate without changing any agent data. +{ + AgentDataUpdateRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID 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 + { GroupIndex S8 } // -1 for none + } + { + GroupData Variable + { GroupID LLUUID } + { GroupOfficer BOOL } // BOOL + { GroupInsigniaID LLUUID } + { Contribution S32 } + { GroupName Variable 1 } // string + } +} + +// 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 +{ + ViewerEffect Medium NotTrusted Zerocoded + { + Effect Variable + { ID LLUUID } // UUID of the effect + { 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 } + } +} + + +{ + RezSingleAttachmentFromInv Low NotTrusted Zerocoded + { + ObjectData Single + { AgentID LLUUID } + { AssetID LLUUID } // asset id in inventory + { ItemID LLUUID } // inventory item id + { AttachmentPt U8 } // 0 for default + { ItemFlags U32 } + { GroupMask U32 } + { EveryoneMask U32 } + { NextOwnerMask U32 } + { Name Variable 1 } + { Description Variable 1 } + } +} + +{ + RezMultipleAttachmentsFromInv Low NotTrusted Zerocoded + { + HeaderData Single + { CompoundMsgID LLUUID } // All messages a single "compound msg" must have the same id + { TotalObjects U8 } + { AgentID LLUUID } + { FirstDetachAll U8 } + } + { + ObjectData Variable // 1 to 4 of these per packet + { AssetID LLUUID } // asset id in inventory + { ItemID LLUUID } // inventory item id + { 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 } + } +} + +{ + UserInfoReply Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + UserData Single + { IMViaEMail BOOL } + { EMail Variable 2 } + } +} + +{ + UpdateUserInfo Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + UserData Single + { IMViaEMail BOOL } + } +} + + +//----------------------------------------------------------------------------- +// 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 } + } +} + + +// viewer -> sim +// initiate upload. primarily used for uploading raw files. +{ + InitiateUpload Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + FileData Single + { BaseFilename Variable 1 } // string + { SourceFilename Variable 1 } // string + } +} + +// 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 } + { Flags U32 } + { EstateID U32 } // filled in on sim + { Godlike BOOL } // filled in on sim + } +} + +// sim -> viewer +{ + MapLayerReply Low NotTrusted 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 } + { 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 } + { Flags U32 } + { EstateID U32 } // filled in on sim + { Godlike BOOL } // filled in on sim + } + { + NameData Single + { Name Variable 1 } // string + } +} + +// sim -> viewer +{ + MapBlockReply Low NotTrusted 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 } + { 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 NotTrusted 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 } + { 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 +{ + MailTaskSimRequest Low NotTrusted 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. +{ + MailTaskSimReply Low NotTrusted Unencoded + { + TargetBlock Single + { TargetIP Variable 1 } // String IP + { TargetPort IPPORT } + } + { + DataBlock Single + { TaskID LLUUID } + } +} + +// ScriptMailRegistration +// Simulator -> dataserver +{ + ScriptMailRegistration Low NotTrusted Unencoded + { + DataBlock Single + { TargetIP Variable 1 } // String IP + { TargetPort IPPORT } + { TaskID LLUUID } + { Flags U32 } + } +} + + +// MailPingBounce +// This is sent to the RPC server when the sim can not be found. +// Not currently used. +// Spaceserver -> RPC server +{ + MailPingBounce Low NotTrusted Unencoded + { + DataBlock Single + { TargetIP IPADDR } + { TargetPort IPPORT } + { TaskID LLUUID } + { Flags U32 } + } +} + + +// ParcelMediaCommandMessage +// Sends a parcel media command +{ + ParcelMediaCommandMessage Low NotTrusted 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 NotTrusted Unencoded + { + DataBlock Single + { MediaURL Variable 1 } // string + { MediaID LLUUID } + { MediaAutoScale U8 } + } +} + +// LandScriptsRequest +// Sent by the viewer to request script information for a parcel +{ + LandScriptsRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + RequestData Single + { RequestFlags U32 } + { ParcelLocalID S32 } + { RelatedID LLUUID } + } +} + +// LandScriptsReply +// Sent by the simulator in response to LandScriptsRequest +{ + LandScriptsReply Low NotTrusted Unencoded + { + RequestData Single + { RequestFlags U32 } + { TotalScriptCount U32 } + { TotalScriptTime F32 } + } + { + Data Variable + { TaskLocalID U32 } + { TaskID LLUUID } + { LocationX F32 } + { LocationY F32 } + { LocationZ F32 } + { ScriptTime F32 } + { ScriptCount S32 } + { TaskName Variable 1 } + { OwnerName Variable 1 } + } +} + +// LandCollidersRequest +// Sent by the viewer to request collider information for a parcel (not yet implemented, still using God request) +{ + LandCollidersRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + RequestData Single + { RequestFlags U32 } + { ParcelLocalID S32 } + { RelatedID LLUUID } + } +} + +// LandCollidersReply +// Sent by the simulator in response to LandCollidersRequest +{ + LandCollidersReply Low NotTrusted Unencoded + { + RequestData Single + { RequestFlags U32 } + { TotalColliderCount U32 } + } + { + Data Variable + { TaskLocalID U32 } + { TaskID LLUUID } + { LocationX F32 } + { LocationY F32 } + { LocationZ F32 } + { Score S32 } + { TaskName Variable 1 } + { OwnerName Variable 1 } + } +} diff --git a/applications/SLIRC/bin/Debug/keywords.txt b/applications/SLIRC/bin/Debug/keywords.txt index 1c2ab208..38256ca3 100644 --- a/applications/SLIRC/bin/Debug/keywords.txt +++ b/applications/SLIRC/bin/Debug/keywords.txt @@ -1,1511 +1,1512 @@ -X -Y -Z -VotedForCandidate -AddFlags -Everyone -ReservedNewbie -MapData -AddItem -MeanCollision -RezScript -AvatarSitResponse -InventoryAssetResponse -KillObject -ProposalID -SerialNum -Duration -ScriptQuestion -AddCircuitCode -UseCircuitCode -ViewerCircuitCode -ScriptAnswerYes -PartnerID -DirLandQuery -TeleportStart -EmpoweredBlock -LogMessages -DropGroupIM -AboutText -VisualParam -GroupPrims -SelectedPrims -ID -UUIDNameRequest -UUIDGroupNameRequest -MoneyTransactionsRequest -GroupAccountTransactionsRequest -MapNameRequest -MailTaskSimRequest -LandScriptsRequest -UpdateSimulator -BillableFactor -ObjectBonusFactor -EnableSimulator -DisableSimulator -ConfirmEnableSimulator -LayerType -ParcelOverlay -AdjustBalance -GroupOwned -IP -ChatFromViewer -FirstLogin -GroupTitle -MapLayerReply -CompoundMsgID -CameraConstraint -DownloadTotals -ErrorValue -GenCounter -FrozenData -URLBlock -ChildAgentDying -To -ParcelDirFeeCurrent -ObjectDuplicate -InventoryData -ReplyData -ResetList -SimulatorPauseState -MediaID -RedirectGridX -RedirectGridY -TransferID -Transacted -TexturesChanged -UserLookAt -TestBlock1 -SensedData -UpdateBlock -EmpoweredID -ClassifiedGodDelete -LocationPos -ObjectGrabUpdate -TaxDate -StartDateTime -ObjectUpdateCached -Packets -FailureType -UpdateGroupInfo -InventoryFile -ObjectPermissions -RevokePermissions -UpdateFlags -ObjectExportSelected -RezSelected -AutoPilot -UpdateMuteListEntry -RemoveMuteListEntry -SetSimStatusInDatabase -SetSimPresenceInDatabase -CameraProperty -GroupRecallBallot -BrushSize -StartExpungeProcess -SimulatorSetMap -RegionPresenceRequestByRegionID -TransferEnergy -ParcelObjectOwnersReply -GroupMembersReply -GroupOfficersAndMembersReply -RequestRegionInfo -AABBMax -RequestPayPrice -SimulatorPresentAtLocation -AgentRequestSit -AABBMin -ClassifiedFlags -ControlFlags -TeleportRequest -SpaceLocationTeleportRequest -LeaderBoardRequest -ScriptTeleportRequest -DateUTC -TaskIDs -RequestResult -ReputationAgentAssign -CanAcceptAgents -ObjectSaleInfo -KillChildAgents -Balance -DerezContainer -ObjectData -CameraAtAxis -InfoBlock -OwnershipCost -AvatarNotesUpdate -PID -TimeString -DirPopularReply -TerrainHeightRange00 -SimData -TerrainHeightRange01 -TerrainHeightRange10 -TerrainHeightRange11 -UpdateInventoryItem -MoveInventoryItem -CopyInventoryItem -RemoveInventoryItem -CreateInventoryItem -PathTwistBegin -CRC -AttachmentPoint -TelehubBlock -FOVBlock -StartLocationData -PositionData -TimeSinceLast -MapImage -Objects -URL -CreationDate -JointPivot -RateeID -FPS -HasTelehub -PathEnd -ScriptDataReply -MapBlockReply -PropertiesData -ViewerEffect -FreezeUser -OwnerPrims -ScriptTime -ObjectGrab -ToAgentID -ProxyBlock -SimulatorMapUpdate -TransferPacket -ObjectName -OriginalName -CompletePingCheck -OnlineStatus -TrackOnlineStatus -IgnoreOnlineStatus -ObjectDrop -UseBigPackets -ParcelAccessListReply -RpcChannelReply -RegionPresenceResponse -AgentPresenceResponse -CharterMember -EdgeData -NameData -RegionPushOverride -SimName -UserReport -DownloadPriority -ToAgentId -Mag -DirPopularQuery -ParcelPropertiesRequestByID -ObjectLink -RpcScriptReplyInbound -BoardData -RezData -RemoveInventoryObjects -Officer -GroupProposalBallot -RPCServerIP -Far -GodSessionID -ViewerDigest -FLAboutText -RegionHandshakeReply -GroupActiveProposalItemReply -MapItemReply -Seconds -UpdateUserInfo -AggregatePermTexturesOwner -Set -Key -NewName -AgentID -OnlineStatusRequest -DataAgentAccessRequest -EventNotificationRemoveRequest -Arc -NewFolderID -RegionX -RegionY -RequestData -Msg -Top -MiscStats -Pos -ImageID -DataPacket -ObjectDehinge -You -ScriptControlChange -LoadURL -SetCPURatio -NameValueData -AtomicPassObject -ViewerFrozenMessage -HealthMessage -LogTextMessage -TimeDilation -Contribution -SetGroupContribution -Offline -SecPerDay -Members -FailedResends -CameraCenter -CameraLeftAxis -ExBlock -Channel -NetTest -DiscardLevel -LayerID -RatorID -GrabOffset -SimPort -PricePerMeter -RegionFlags -VoteResult -ParcelDirFeeEstimate -ModifyBlock -InventoryBlock -ReplyBlock -RequireMask -ValidUntil -VelocityInterpolateOn -ClassifiedDelete -FLImageID -AllowPublish -SitName -OfficerTitle -RegionsVisited -RecallID -DirClassifiedReply -AvatarClassifiedReply -ReputationIndividualReply -MediaURL -CompleteAgentMovement -SpaceIP -ClassifiedID -LocalID -RemoveItem -LogFailedMoneyTransaction -ViewerStartAuction -StartAuction -NameValueName -AngVelX -DuplicateFlags -AngVelY -AngVelZ -TextColor -SlaveID -Charter -TargetBlock -AlertData -CheckParcelAuctions -ParcelAuctions -NameValuePair -RemoveNameValuePair -GetNameValuePair -BulkUpdateInventory -UpdateTaskInventory -RemoveTaskInventory -MoveTaskInventory -RequestTaskInventory -ReplyTaskInventory -DeclineInventory -AggregatePermInventory -SimulatorInfo -MoneyTransactionsReply -GroupAccountTransactionsReply -MailTaskSimReply -WearableData -StatisticsData -AccessOK -Enabled -Savings -SimulatorLoad -InternalRegionIP -ExternalRegionIP -CreateGroupRequest -JoinGroupRequest -LeaveGroupRequest -InviteGroupRequest -LiveHelpGroupRequest -ServerVersion -PriceParcelClaimFactor -BillableArea -ScriptCount -ObjectID -ObjectFlagUpdate -ActiveOnly -RequestInventoryAsset -RedoLand -TravelAccess -ChangedGrid -Details -LocationX -SaleType -ObjectExportReply -LocationY -LocationZ -EconomyData -HeadRotation -DeleteOnCompletion -PublicPort -CurrentTaxes -DirClassifiedQuery -RequestParcelTransfer -ObjectCapacity -RequestID -GranterName -RequestXfer -ObjectTaxCurrent -LightTaxCurrent -LandTaxCurrent -GroupTaxCurrent -FetchInventoryDescendents -InventoryDescendents -Descendents -PurgeInventoryDescendents -ShowDir -Timestamp -GlobalPos -LimitedToEstate -GrabOffsetInitial -IsTrial -FinalizeLogout -ObjectDuplicateOnRay -GroupMembershipCount -MethodData -ActivateGestures -DeactivateGestures -ProposalData -PosGlobal -SearchID -RezMultipleAttachmentsFromInv -SearchName -VersionString -CreateGroupReply -ActualArea -RevokedID -Message -ClickAction -AssetUploadComplete -EstimatedTaxes -RequestType -UUID -BaseMask -NetBlock -GlobalX -GlobalY -CopyRotates -KickUserAck -TopPick -SessionID -GlobalZ -CallVote -DeclineFriendship -FormFriendship -TerminateFriendship -TaskData -SimWideMaxPrims -TotalPrims -SourceFilename -ProfileBegin -MoneyDetailsRequest -Request -GroupAccountDetailsRequest -GroupActiveProposalsRequest -VoteQuorum -StringValue -ClosestSimulator -Version -OtherCount -ChatData -IsGroupOwned -EnergyEfficiency -MaxPlace -PickInfoUpdate -PickDelete -ScriptReset -Requester -RevokerID -ElectionID -ForSale -NearestLandingRegionReply -RecordAgentPresence -EraseAgentPresence -ParcelID -Godlike -TotalDebits -Direction -Appearance -HealthData -LeftAxis -PositionBlock -LocationBlock -ObjectImage -TerrainStartHeight00 -TerrainStartHeight01 -TerrainStartHeight10 -ObjectHinge -TerrainStartHeight11 -MetersPerGrid -WaterHeight -FetchInventoryReply -MoneySummaryReply -GroupAccountSummaryReply -AttachedSound -ParamInUse -GodKickUser -PickName -TaskName -SkillFlags -ParcelGodReserveForNewbie -SubType -ObjectCount -RegionPresenceRequestByHandle -RezSingleAttachmentFromInv -ChildAgentUpdate -ToID -ViewerPort -IsOwnerGroup -AgentHeightWidth -VerticalAngle -WearableType -AggregatePermNextOwner -ShowInList -PositionSuggestion -UpdateParcel -ClearAgentSessions -SetAlwaysRun -NVPair -ObjectSpinStart -UseEstateSun -LogoutBlock -RelayLogControl -RegionID -Creator -ViewerRegion -ProposalText -DirEventsReply -EventInfoReply -GroupElectionInfoReply -UserInfoReply -PathRadiusOffset -SessionInfo -TextureData -ChatPass -TargetID -DefaultPayPrice -UserLocation -MaxPrims -RegionIP -LandmarkID -InitiateDownload -Name -OtherCleanTime -TeleportPriceExponent -Gain -VelX -PacketAck -PathSkew -Negative -VelY -SimulatorShutdownRequest -NearestLandingRegionRequest -VelZ -OtherID -MapLayerRequest -PatchVersion -ObjectScale -TargetIP -Redo -MoneyBalance -TrackAgent -MaxX -Data -MaxY -TextureAnim -ReturnIDs -Date -GestureUpdate -AgentWearablesUpdate -AgentDataUpdate -Hash -Left -Mask -ForceMouselook -RequestLocationGetAccess -Success -ObjectGroup -SunHour -MinX -ScriptSensorReply -MinY -Command -Desc -AttachmentNeedsSave -HistoryItemData -AgentCachedTexture -East -Subject -GodExpungeUser -QueryReplies -ObjectCategory -Time -CreateLandmarkForEvent -ParentID -Ping -Perp -Code -InvType -AgentFOV -BulkMoneyTransfer -Audible -AuctionData -IDBlock -ReputationData -West -ElectionData -Undo -Info -Area -Behavior -SimCrashed -Text -AgentToNewRegion -PriceGroupCreate -ObjectShape -PosX -PosY -MuteCRC -PosZ -Size -FromAddress -Body -FileData -List -KickUser -OtherPrims -RunTime -RpcScriptRequestInboundForward -More -Majority -SenderID -MetersTraveled -Stat -FromAgentID -Item -SoundID -User -RemoteInfos -Vote -Prey -UsecSinceStart -RayStart -ParcelData -CameraUpAxis -ScriptDialog -MasterParcelData -Invalid -MinPlace -ProfileCurve -ParcelAccessListUpdate -MuteListUpdate -SendPacket -SendXferPacket -LastName -From -Port -MemberTitle -LogParcelChanges -DeRezObject -IsTemporary -IsComplete -InsigniaID -CheckFlags -TransferPriority -EventID -FromAgentId -Type -ChatType -ReportData -LeaderBoardData -RequestBlock -GrantData -DetachAttachmentIntoInv -ParcelDisableObjects -Sections -GodLevel -StartGroupIM -PayPriceReply -QueryID -CameraEyeOffset -AgentPosition -GrabPosition -GrantModification -RevokeModification -OnlineNotification -OfflineNotification -SendPostcard -RequestFlags -MoneyHistoryRequest -MoneySummaryRequest -GroupMoneyHistoryRequest -GroupAccountSummaryRequest -ParamValue -GroupVoteHistoryRequest -Checksum -MaxAgents -CreateNewOutfitAttachments -RegionHandle -TeleportProgress -AgentQuitCopy -LocationValid -ToViewer -ParcelName -InviteOfficers -PriceObjectRent -ConnectAgentToUserserver -ConnectToUserserver -OfferCallingCard -AgentAccess -AcceptCallingCard -DeclineCallingCard -DataHomeLocationReply -EventLocationReply -UserLoginLocationReply -UserSimLocationReply -SpaceLoginLocationReply -TerseDateID -ObjectOwner -AssetID -AlertMessage -AgentAlertMessage -EstateOwnerMessage -ParcelMediaCommandMessage -Auction -Category -FilePath -ItemFlags -Invoice -IntervalDays -PathScaleX -FromTaskID -TimeInfo -PathScaleY -PublicCount -ParcelJoin -SimulatorBlock -UserBlock -GroupID -AgentVel -RequestImage -NetStats -AgentPos -AgentSit -Material -ObjectDeGrab -VelocityInterpolateOff -AuthorizedBuyerID -RemoveMemberFromGroup -GroupIM -AvatarPropertiesReply -GroupPropertiesReply -GroupProfileReply -Participants -SimOwner -SalePrice -Animation -CurrentDividend -OwnerID -NearestLandingRegionUpdated -PassToAgent -PreyAgent -SimStats -Options -LogoutReply -ObjectLocalID -Dropped -Destination -MasterID -TransferData -WantToMask -AvatarData -ParcelSelectObjects -ExtraParams -LogLogin -CreatorID -Summary -BuyObjectInventory -FetchInventory -InventoryID -PacketNumber -SetFollowCamProperties -ClearFollowCamProperties -SimulatorThrottleSettings -SequenceID -DataServerLogout -NameValue -PathShearX -PathShearY -ElectionType -Velocity -SecPerYear -FirstName -AttachedSoundGainChange -LocationID -Running -ObjectImportReply -AgentThrottle -NeighborList -PathTaperX -PathTaperY -GranterBlock -UseCachedMuteList -FailStats -StartGroupRecall -Tempfile -FounderName -BuyerID -DirPeopleReply -TransferInfo -AvatarPickerRequestBackend -AvatarPropertiesRequestBackend -UpdateData -ReporterID -GranterID -ButtonLabel -WantToText -ReportType -DataBlock -SimulatorReady -AnimationSourceList -RefreshViewer -SubscribeLoad -UnsubscribeLoad -Packet -UndoLand -SimAccess -MembershipFee -CreateInventoryFolder -UpdateInventoryFolder -MoveInventoryFolder -RemoveInventoryFolder -MoneyData -ObjectDeselect -NewAssetID -ObjectAdd -RayEndIsIntersection -CompleteAuction -CircuitCode -AgentMovementComplete -ViewerIP -Header -GestureFlags -XferID -StatValue -PickID -TaskID -GridsPerEdge -RayEnd -Throttles -UpAxis -AgentTextures -Radius -OffCircuit -Access -SquareMetersCredit -Filename -SecuredTemplateChecksumRequest -TemplateChecksumRequest -AgentPresenceRequest -ClassifiedInfoRequest -ParcelInfoRequest -ParcelObjectOwnersRequest -TeleportLandmarkRequest -EventInfoRequest -MovedIntoSimulator -ChatFromSimulator -PickInfoRequest -MoneyBalanceRequest -DirPeopleQuery -GroupElectionInfoRequest -GroupMembersRequest -GroupOfficersAndMembersRequest -TextureID -OldFolderID -UserInfoRequest -LandCollidersRequest -Handle -StartParcelRenameAck -StateLoad -ButtonIndex -CurrentElectionID -GetScriptRunning -SetScriptRunning -Health -FileID -CircuitInfo -ObjectBuy -ProfileEnd -Effect -TestMessage -ScriptMailRegistration -AgentSetAppearance -AvatarAppearance -RegionData -RequestingRegionData -LandingRegionData -SitTransform -TerrainBase0 -SkillsMask -AtAxis -TerrainBase1 -Reason -TerrainBase2 -TerrainBase3 -Params -PingID -Height -Region -MoneyHistoryReply -GroupMoneyHistoryReply -TelehubInfo -StateSave -AgentAnimation -AvatarAnimation -LogDwellTime -ParcelGodMarkAsContent -UsePhysics -JointType -TaxEstimate -ObjectTaxEstimate -LightTaxEstimate -TeleportLandingStatusChanged -LandTaxEstimate -GroupTaxEstimate -Buttons -Sender -Dialog -DestID -PricePublicObjectDelete -ObjectDelete -Delete -EventGodDelete -LastTaxDate -MapImageID -EndDateTime -TerrainDetail0 -TerrainDetail1 -TerrainDetail2 -TerrainDetail3 -Offset -ObjectDelink -TargetObject -IsEstateManager -CancelAuction -ObjectDetach -Compressed -PathBegin -BypassRaycast -WinnerID -ChannelType -NumberNonExemptMembers -NonExemptMembers -Agents -SimulatorStart -Enable -RevokedBlock -MemberData -ImageNotInDatabase -StartDate -AnimID -Serial -GroupElectionBallot -ControlPort -ModifyLand -Digest -Victim -Script -TemplateChecksumReply -PickInfoReply -MoneyBalanceReply -RoutedMoneyBalanceReply -RegionInfo -Sequence -GodUpdateRegionInfo -LocalX -LocalY -StartAnim -Location -Action -SearchDir -Active -TransferRequest -ScriptSensorRequest -MoneyTransferRequest -EjectGroupMemberRequest -SkillsText -Resent -Center -SharedData -PSBlock -UUIDNameBlock -Viewer -Method -TouchName -CandidateID -ParamData -GodlikeMessage -SystemMessage -BodyRotation -StartGroupElection -SearchRegions -Ignore -AnimationData -StatID -ItemID -AvatarStatisticsReply -ScriptDialogReply -RegionIDAndHandleReply -CameraAtOffset -VoteID -ParcelGodForceOwner -InviteData -CandidateData -PCode -SearchPos -PreyID -TerrainLowerLimit -EventFlags -TallyVotes -GroupInfoUpdated -Result -LookAt -PayButton -SelfCount -PacketCount -ParcelBuyPass -SimHandle -Identified -OldItemID -RegionPort -PriceEnergyUnit -Bitmap -TrackAgentSession -CacheMissType -VFileID -Response -GroupInsigniaID -FromID -Online -KickFlags -SysCPU -EMail -InviteMembers -IncludeMembers -AggregatePermTextures -ChatChannel -ReturnID -ObjectAttach -TargetPort -ObjectSpinStop -FullID -ActivateGroup -SysGPU -StartLure -SysRAM -ObjectPosition -SitPosition -StartTime -BornOn -CameraCollidePlane -EconomyDataRequest -TeleportLureRequest -FolderID -RegionHandleRequest -GestureRequest -ScriptDataRequest -AgentWearablesRequest -MapBlockRequest -LureID -CopyCenters -RegisterNewAgent -TotalColliderCount -ParamList -InventorySerial -EdgeDataPacket -AvatarPickerReply -ParcelDwellReply -IsForSale -MuteID -MeanCollisionAlert -CanAcceptTasks -ItemData -AnimationList -PassObject -Reputation -IntValue -TargetType -Amount -UpdateAttachment -RemoveAttachment -HeightWidthBlock -RequestObjectPropertiesFamily -ObjectPropertiesFamily -UserData -SessionBlock -IsReadable -ReputationMax -PathCurve -ReputationMin -Status -AlreadyVoted -ElectionInitiator -PlacesReply -DirPlacesReply -ParcelBuy -DirFindQueryBackend -DirPlacesQueryBackend -DirPeopleQueryBackend -DirGroupsQueryBackend -DirClassifiedQueryBackend -DirPicksQueryBackend -DirLandQueryBackend -DirPopularQueryBackend -SnapshotID -Aspect -LogoutDemand -HistoryData -VoteData -EstimatedDividend -ParamSize -VoteCast -EveryoneMask -CastsShadows -SetSunPhase -ObjectSpinUpdate -MaturePublish -UseExistingAsset -ParcelLocalID -TeleportCancel -UnixTime -QueryFlags -LastExecFroze -AlwaysRun -Bottom -ButtonData -SoundData -ViewerStats -RegionHandshake -Description -ObjectDescription -ParamType -UUIDNameReply -UUIDGroupNameReply -SaveAssetIntoInventory -UserInfo -AnimSequenceID -NVPairs -ParcelAccessListRequest -UserListRequest -MuteListRequest -StartPeriod -RpcChannelRequest -PlacesQuery -DirPlacesQuery -Distance -SortOrder -Hunter -TotalScriptCount -SunAngVelocity -InventoryUpdate -ImagePacket -BinaryBucket -StartGroupProposal -EnergyLevel -PriceForListing -Scale -ParentEstateID -Extra2 -Throttle -SimIP -GodID -TeleportMinPrice -VoteItem -ObjectRotation -SitRotation -SnapSelection -SoundTrigger -TerrainRaiseLimit -Quorum -TokenBlock -AgentBlock -CommandBlock -PricePublicObjectDecay -SpawnPointPos -AttachedSoundCutoffRadius -VolumeDetail -TasksPaused -Range -FromAgentName -AddModifyAbility -RemoveModifyAbility -PublicIP -TeleportFailed -OnlineStatusReply -DataAgentAccessReply -RequestLocationGetAccessReply -RequestAvatarInfo -PreloadSound -ScreenshotID -OldestUnacked -SimulatorIP -ObjectImport -MoneyMax -Value -JointAxisOrAnchor -Test0 -MoneyMin -Test1 -Test2 -SunPhase -Place -Phase -ParcelDivide -PriceObjectClaim -VoteTime -Field -Ratio -JoinGroupReply -LiveHelpGroupReply -Agent -Score -ExpungeData -Image -ObjectClickAction -Delta -InitiateUpload -Parameter -Flags -Plane -Width -VoteText -Right -DirFindQuery -Textures -EventData -Final -TelehubPos -ReportAutosaveCrash -Reset -CreateTrustedCircuit -DenyTrustedCircuit -Codec -Level -Modal -ChildAgentUnknown -LandingType -ScriptRunningReply -MoneyDetailsReply -Reply -TelehubRot -RequestFriendship -AcceptFriendship -GroupAccountDetailsReply -DwellInfo -AgentResume -ItemType -MailFilter -Disconnect -SimPosition -SimWideTotalPrims -Index -BaseFilename -SimFilename -LastOwnerID -EmailMessageRequest -MapItemRequest -AgentCount -InitializeLure -HelloBlock -FuseBlock -MessageBlock -ClassifiedInfoUpdate -RegionPos -ParcelMediaUpdate -GridX -GridY -AuctionID -VoteType -CategoryID -Token -AggregatePerms -StartParcelRemoveAck -ObjectSelect -ForceObjectSelect -Price -SunDirection -FromName -ChangeInventoryItemFlags -Force -TransactionBlock -PowersMask -Stamp -RelatedID -TotalCredits -State -TextureIndex -SimPaused -InviteeID -ParcelReclaim -Money -PathTwist -AuthBuyerID -Color -SourceType -World -QueryData -Users -SysOS -Notes -AvatarID -FounderID -EndPointID -StipendEstimate -LocationLookAt -Sound -Cover -TextureEntry -SquareMetersCommitted -ChannelID -Dwell -North -AgentUpdate -PickGodDelete -UpdateInventoryItemAsset -HostName -PriceParcelClaim -ParcelClaim -ProfileHollow -Count -South -Entry -ObjectUpdateCompressed -MuteFlags -Group -AgentPause -InternalScriptMail -FindAgent -AgentData -FolderData -AssetBlock -CloseCircuit -LogControl -TeleportFinish -PathRevolutions -ClassifiedInfoReply -ParcelInfoReply -LandCollidersReply -AutosaveData -SetStartLocation -PassHours -AttachmentPt -ParcelFlags -NumVotes -AvatarPickerRequest -TeleportLocationRequest -DataHomeLocationRequest -EventNotificationAddRequest -ParcelDwellRequest -ViewerLoginLocationRequest -ViewerSimLocationRequest -EventLocationRequest -EndPeriod -SetStartLocationRequest -UserLoginLocationRequest -QueryStart -AvatarTextureUpdate -RequestGrantedProxies -GrantedProxies -RPCServerPort -Bytes -Extra -ForceScriptControlRelease -ParcelRelease -VFileType -ImageData -SpaceServerSimulatorTimeMessage -SimulatorViewerTimeMessage -Rotation -Selection -TransactionData -OperationData -ExpirationDate -AgentName -ParcelDeedToGroup -DirPicksReply -AvatarPicksReply -AgentInfo -MoneyTransferBackend -NextOwnerMask -MuteData -PassPrice -SourceID -TotalScriptTime -ShowMembersInGroupDir -TeleportFlags -AssetData -SlaveParcelData -MultipleObjectUpdate -ObjectUpdate -ImprovedTerseObjectUpdate -ConfirmXferPacket -StartPingCheck -SimWideDeletes -UserListReply -IsPhantom -AgentList -RezObject -TaskLocalID -ClaimDate -MergeParcel -Priority -Building -QueryText -ReturnType -FetchFolders -SimulatorPublicHostBlock -HeaderData -GroupBlock -RequestMultipleObjects -RetrieveInstantMessages -DequeueInstantMessages -OpenCircuit -SecureSessionID -CrossedRegion -DirGroupsReply -AvatarGroupsReply -EmailMessageReply -GroupVoteHistoryItemReply -ViewerPosition -Position -ParentEstate -MuteName -StartParcelRename -BulkParcelRename -ParcelRename -ViewerFilename -Positive -UserReportInternal -AvatarPropertiesRequest -ParcelPropertiesRequest -GroupPropertiesRequest -GroupProfileRequest -AgentDataUpdateRequest -PriceObjectScaleFactor -DirPicksQuery -OpenEnrollment -GroupData -PauseBlock -RequestGodlikePowers -GrantGodlikePowers -TransactionID -DestinationID -Controls -FirstDetachAll -EstateID -ImprovedInstantMessage -AgentQuit -WantToFlags -CheckParcelSales -ParcelSales -CurrentInterval -PriceRentLight -MediaAutoScale -NeighborBlock -LayerData -NVPairData -TeleportLocal -LayersPaused -VoteInitiator -MailPingBounce -TypeData -OwnerIDs -SystemKickUser -ErrorCode -SLXMLID -TransactionTime -TimeToLive -StartParcelRemove -BulkParcelRemove -DirGroupsQuery -BonusEstimate -MusicURL -CompleteLure -ParcelPrimBonus -EjectUser -CoarseLocationUpdate -ChildAgentPositionUpdate -GroupIndex -GroupName -PriceParcelRent -SimStatus -TransactionSuccess -LureType -GroupMask -SitObject -AssetNum -Override -LocomotionState -PriceUpload -RemoveParcel -ConfirmAuctionStart -RpcScriptRequestInbound -ParcelReturnObjects -TotalObjects -ObjectExtraParams -Questions -TransferAbort -TransferInventory -LandScriptsReply -ColladaID -RayTargetID -ClaimPrice -ObjectProperties -ParcelProperties -LogoutRequest -AssetUploadRequest -ReputationIndividualRequest -MajorVersion -MinorVersion -SimulatorAssign -TransactionType -AvatarPropertiesUpdate -ParcelPropertiesUpdate -FetchItems -AbortXfer -DeRezAck -TakeControls -DirLandReply -SpaceLocationTeleportReply -MuteType -IMViaEMail -StartExpungeProcessAck -RentPrice -GenericMessage -ChildAgentAlive -SpawnPointBlock -AttachmentBlock -RecallData -OfficerData -GroupOfficer -ObjectMaterial -OwnerName -AvatarNotesReply -CacheID -OwnerMask -TransferInventoryAck \ No newline at end of file +SeedCapability +X +Y +Z +VotedForCandidate +AddFlags +Everyone +ReservedNewbie +MapData +AddItem +MeanCollision +RezScript +AvatarSitResponse +InventoryAssetResponse +KillObject +ProposalID +SerialNum +Duration +ScriptQuestion +AddCircuitCode +UseCircuitCode +ViewerCircuitCode +ScriptAnswerYes +PartnerID +DirLandQuery +TeleportStart +EmpoweredBlock +LogMessages +DropGroupIM +AboutText +VisualParam +GroupPrims +SelectedPrims +ID +UUIDNameRequest +UUIDGroupNameRequest +MoneyTransactionsRequest +GroupAccountTransactionsRequest +MapNameRequest +MailTaskSimRequest +LandScriptsRequest +UpdateSimulator +BillableFactor +ObjectBonusFactor +EnableSimulator +DisableSimulator +ConfirmEnableSimulator +LayerType +ParcelOverlay +AdjustBalance +GroupOwned +IP +ChatFromViewer +FirstLogin +GroupTitle +MapLayerReply +CompoundMsgID +CameraConstraint +DownloadTotals +ErrorValue +GenCounter +FrozenData +URLBlock +ChildAgentDying +To +ParcelDirFeeCurrent +ObjectDuplicate +InventoryData +ReplyData +ResetList +SimulatorPauseState +MediaID +RedirectGridX +RedirectGridY +TransferID +Transacted +TexturesChanged +UserLookAt +TestBlock1 +SensedData +UpdateBlock +EmpoweredID +ClassifiedGodDelete +LocationPos +ObjectGrabUpdate +TaxDate +StartDateTime +ObjectUpdateCached +Packets +FailureType +UpdateGroupInfo +InventoryFile +ObjectPermissions +RevokePermissions +UpdateFlags +ObjectExportSelected +RezSelected +AutoPilot +UpdateMuteListEntry +RemoveMuteListEntry +SetSimStatusInDatabase +SetSimPresenceInDatabase +CameraProperty +GroupRecallBallot +BrushSize +StartExpungeProcess +SimulatorSetMap +RegionPresenceRequestByRegionID +TransferEnergy +ParcelObjectOwnersReply +GroupMembersReply +GroupOfficersAndMembersReply +RequestRegionInfo +AABBMax +RequestPayPrice +SimulatorPresentAtLocation +AgentRequestSit +AABBMin +ClassifiedFlags +ControlFlags +TeleportRequest +SpaceLocationTeleportRequest +LeaderBoardRequest +ScriptTeleportRequest +DateUTC +TaskIDs +RequestResult +ReputationAgentAssign +CanAcceptAgents +ObjectSaleInfo +KillChildAgents +Balance +DerezContainer +ObjectData +CameraAtAxis +InfoBlock +OwnershipCost +AvatarNotesUpdate +PID +TimeString +DirPopularReply +TerrainHeightRange00 +SimData +TerrainHeightRange01 +TerrainHeightRange10 +TerrainHeightRange11 +UpdateInventoryItem +MoveInventoryItem +CopyInventoryItem +RemoveInventoryItem +CreateInventoryItem +PathTwistBegin +CRC +AttachmentPoint +TelehubBlock +FOVBlock +StartLocationData +PositionData +TimeSinceLast +MapImage +Objects +URL +CreationDate +JointPivot +RateeID +FPS +HasTelehub +PathEnd +ScriptDataReply +MapBlockReply +PropertiesData +ViewerEffect +FreezeUser +OwnerPrims +ScriptTime +ObjectGrab +ToAgentID +ProxyBlock +SimulatorMapUpdate +TransferPacket +ObjectName +OriginalName +CompletePingCheck +OnlineStatus +TrackOnlineStatus +IgnoreOnlineStatus +ObjectDrop +UseBigPackets +ParcelAccessListReply +RpcChannelReply +RegionPresenceResponse +AgentPresenceResponse +CharterMember +EdgeData +NameData +RegionPushOverride +SimName +UserReport +DownloadPriority +ToAgentId +Mag +DirPopularQuery +ParcelPropertiesRequestByID +ObjectLink +RpcScriptReplyInbound +BoardData +RezData +RemoveInventoryObjects +Officer +GroupProposalBallot +RPCServerIP +Far +GodSessionID +ViewerDigest +FLAboutText +RegionHandshakeReply +GroupActiveProposalItemReply +MapItemReply +Seconds +UpdateUserInfo +AggregatePermTexturesOwner +Set +Key +NewName +AgentID +OnlineStatusRequest +DataAgentAccessRequest +EventNotificationRemoveRequest +Arc +NewFolderID +RegionX +RegionY +RequestData +Msg +Top +MiscStats +Pos +ImageID +DataPacket +ObjectDehinge +You +ScriptControlChange +LoadURL +SetCPURatio +NameValueData +AtomicPassObject +ViewerFrozenMessage +HealthMessage +LogTextMessage +TimeDilation +Contribution +SetGroupContribution +Offline +SecPerDay +Members +FailedResends +CameraCenter +CameraLeftAxis +ExBlock +Channel +NetTest +DiscardLevel +LayerID +RatorID +GrabOffset +SimPort +PricePerMeter +RegionFlags +VoteResult +ParcelDirFeeEstimate +ModifyBlock +InventoryBlock +ReplyBlock +RequireMask +ValidUntil +VelocityInterpolateOn +ClassifiedDelete +FLImageID +AllowPublish +SitName +OfficerTitle +RegionsVisited +RecallID +DirClassifiedReply +AvatarClassifiedReply +ReputationIndividualReply +MediaURL +CompleteAgentMovement +SpaceIP +ClassifiedID +LocalID +RemoveItem +LogFailedMoneyTransaction +ViewerStartAuction +StartAuction +NameValueName +AngVelX +DuplicateFlags +AngVelY +AngVelZ +TextColor +SlaveID +Charter +TargetBlock +AlertData +CheckParcelAuctions +ParcelAuctions +NameValuePair +RemoveNameValuePair +GetNameValuePair +BulkUpdateInventory +UpdateTaskInventory +RemoveTaskInventory +MoveTaskInventory +RequestTaskInventory +ReplyTaskInventory +DeclineInventory +AggregatePermInventory +SimulatorInfo +MoneyTransactionsReply +GroupAccountTransactionsReply +MailTaskSimReply +WearableData +StatisticsData +AccessOK +Enabled +Savings +SimulatorLoad +InternalRegionIP +ExternalRegionIP +CreateGroupRequest +JoinGroupRequest +LeaveGroupRequest +InviteGroupRequest +LiveHelpGroupRequest +ServerVersion +PriceParcelClaimFactor +BillableArea +ScriptCount +ObjectID +ObjectFlagUpdate +ActiveOnly +RequestInventoryAsset +RedoLand +TravelAccess +ChangedGrid +Details +LocationX +SaleType +ObjectExportReply +LocationY +LocationZ +EconomyData +HeadRotation +DeleteOnCompletion +PublicPort +CurrentTaxes +DirClassifiedQuery +RequestParcelTransfer +ObjectCapacity +RequestID +GranterName +RequestXfer +ObjectTaxCurrent +LightTaxCurrent +LandTaxCurrent +GroupTaxCurrent +FetchInventoryDescendents +InventoryDescendents +Descendents +PurgeInventoryDescendents +ShowDir +Timestamp +GlobalPos +LimitedToEstate +GrabOffsetInitial +IsTrial +FinalizeLogout +ObjectDuplicateOnRay +GroupMembershipCount +MethodData +ActivateGestures +DeactivateGestures +ProposalData +PosGlobal +SearchID +RezMultipleAttachmentsFromInv +SearchName +VersionString +CreateGroupReply +ActualArea +RevokedID +Message +ClickAction +AssetUploadComplete +EstimatedTaxes +RequestType +UUID +BaseMask +NetBlock +GlobalX +GlobalY +CopyRotates +KickUserAck +TopPick +SessionID +GlobalZ +CallVote +DeclineFriendship +FormFriendship +TerminateFriendship +TaskData +SimWideMaxPrims +TotalPrims +SourceFilename +ProfileBegin +MoneyDetailsRequest +Request +GroupAccountDetailsRequest +GroupActiveProposalsRequest +VoteQuorum +StringValue +ClosestSimulator +Version +OtherCount +ChatData +IsGroupOwned +EnergyEfficiency +MaxPlace +PickInfoUpdate +PickDelete +ScriptReset +Requester +RevokerID +ElectionID +ForSale +NearestLandingRegionReply +RecordAgentPresence +EraseAgentPresence +ParcelID +Godlike +TotalDebits +Direction +Appearance +HealthData +LeftAxis +PositionBlock +LocationBlock +ObjectImage +TerrainStartHeight00 +TerrainStartHeight01 +TerrainStartHeight10 +ObjectHinge +TerrainStartHeight11 +MetersPerGrid +WaterHeight +FetchInventoryReply +MoneySummaryReply +GroupAccountSummaryReply +AttachedSound +ParamInUse +GodKickUser +PickName +TaskName +SkillFlags +ParcelGodReserveForNewbie +SubType +ObjectCount +RegionPresenceRequestByHandle +RezSingleAttachmentFromInv +ChildAgentUpdate +ToID +ViewerPort +IsOwnerGroup +AgentHeightWidth +VerticalAngle +WearableType +AggregatePermNextOwner +ShowInList +PositionSuggestion +UpdateParcel +ClearAgentSessions +SetAlwaysRun +NVPair +ObjectSpinStart +UseEstateSun +LogoutBlock +RelayLogControl +RegionID +Creator +ViewerRegion +ProposalText +DirEventsReply +EventInfoReply +GroupElectionInfoReply +UserInfoReply +PathRadiusOffset +SessionInfo +TextureData +ChatPass +TargetID +DefaultPayPrice +UserLocation +MaxPrims +RegionIP +LandmarkID +InitiateDownload +Name +OtherCleanTime +TeleportPriceExponent +Gain +VelX +PacketAck +PathSkew +Negative +VelY +SimulatorShutdownRequest +NearestLandingRegionRequest +VelZ +OtherID +MapLayerRequest +PatchVersion +ObjectScale +TargetIP +Redo +MoneyBalance +TrackAgent +MaxX +Data +MaxY +TextureAnim +ReturnIDs +Date +GestureUpdate +AgentWearablesUpdate +AgentDataUpdate +Hash +Left +Mask +ForceMouselook +RequestLocationGetAccess +Success +ObjectGroup +SunHour +MinX +ScriptSensorReply +MinY +Command +Desc +AttachmentNeedsSave +HistoryItemData +AgentCachedTexture +East +Subject +GodExpungeUser +QueryReplies +ObjectCategory +Time +CreateLandmarkForEvent +ParentID +Ping +Perp +Code +InvType +AgentFOV +BulkMoneyTransfer +Audible +AuctionData +IDBlock +ReputationData +West +ElectionData +Undo +Info +Area +Behavior +SimCrashed +Text +AgentToNewRegion +PriceGroupCreate +ObjectShape +PosX +PosY +MuteCRC +PosZ +Size +FromAddress +Body +FileData +List +KickUser +OtherPrims +RunTime +RpcScriptRequestInboundForward +More +Majority +SenderID +MetersTraveled +Stat +FromAgentID +Item +SoundID +User +RemoteInfos +Vote +Prey +UsecSinceStart +RayStart +ParcelData +CameraUpAxis +ScriptDialog +MasterParcelData +Invalid +MinPlace +ProfileCurve +ParcelAccessListUpdate +MuteListUpdate +SendPacket +SendXferPacket +LastName +From +Port +MemberTitle +LogParcelChanges +DeRezObject +IsTemporary +IsComplete +InsigniaID +CheckFlags +TransferPriority +EventID +FromAgentId +Type +ChatType +ReportData +LeaderBoardData +RequestBlock +GrantData +DetachAttachmentIntoInv +ParcelDisableObjects +Sections +GodLevel +StartGroupIM +PayPriceReply +QueryID +CameraEyeOffset +AgentPosition +GrabPosition +GrantModification +RevokeModification +OnlineNotification +OfflineNotification +SendPostcard +RequestFlags +MoneyHistoryRequest +MoneySummaryRequest +GroupMoneyHistoryRequest +GroupAccountSummaryRequest +ParamValue +GroupVoteHistoryRequest +Checksum +MaxAgents +CreateNewOutfitAttachments +RegionHandle +TeleportProgress +AgentQuitCopy +LocationValid +ToViewer +ParcelName +InviteOfficers +PriceObjectRent +ConnectAgentToUserserver +ConnectToUserserver +OfferCallingCard +AgentAccess +AcceptCallingCard +DeclineCallingCard +DataHomeLocationReply +EventLocationReply +UserLoginLocationReply +UserSimLocationReply +SpaceLoginLocationReply +TerseDateID +ObjectOwner +AssetID +AlertMessage +AgentAlertMessage +EstateOwnerMessage +ParcelMediaCommandMessage +Auction +Category +FilePath +ItemFlags +Invoice +IntervalDays +PathScaleX +FromTaskID +TimeInfo +PathScaleY +PublicCount +ParcelJoin +SimulatorBlock +UserBlock +GroupID +AgentVel +RequestImage +NetStats +AgentPos +AgentSit +Material +ObjectDeGrab +VelocityInterpolateOff +AuthorizedBuyerID +RemoveMemberFromGroup +GroupIM +AvatarPropertiesReply +GroupPropertiesReply +GroupProfileReply +Participants +SimOwner +SalePrice +Animation +CurrentDividend +OwnerID +NearestLandingRegionUpdated +PassToAgent +PreyAgent +SimStats +Options +LogoutReply +ObjectLocalID +Dropped +Destination +MasterID +TransferData +WantToMask +AvatarData +ParcelSelectObjects +ExtraParams +LogLogin +CreatorID +Summary +BuyObjectInventory +FetchInventory +InventoryID +PacketNumber +SetFollowCamProperties +ClearFollowCamProperties +SimulatorThrottleSettings +SequenceID +DataServerLogout +NameValue +PathShearX +PathShearY +ElectionType +Velocity +SecPerYear +FirstName +AttachedSoundGainChange +LocationID +Running +ObjectImportReply +AgentThrottle +NeighborList +PathTaperX +PathTaperY +GranterBlock +UseCachedMuteList +FailStats +StartGroupRecall +Tempfile +FounderName +BuyerID +DirPeopleReply +TransferInfo +AvatarPickerRequestBackend +AvatarPropertiesRequestBackend +UpdateData +ReporterID +GranterID +ButtonLabel +WantToText +ReportType +DataBlock +SimulatorReady +AnimationSourceList +RefreshViewer +SubscribeLoad +UnsubscribeLoad +Packet +UndoLand +SimAccess +MembershipFee +CreateInventoryFolder +UpdateInventoryFolder +MoveInventoryFolder +RemoveInventoryFolder +MoneyData +ObjectDeselect +NewAssetID +ObjectAdd +RayEndIsIntersection +CompleteAuction +CircuitCode +AgentMovementComplete +ViewerIP +Header +GestureFlags +XferID +StatValue +PickID +TaskID +GridsPerEdge +RayEnd +Throttles +UpAxis +AgentTextures +Radius +OffCircuit +Access +SquareMetersCredit +Filename +SecuredTemplateChecksumRequest +TemplateChecksumRequest +AgentPresenceRequest +ClassifiedInfoRequest +ParcelInfoRequest +ParcelObjectOwnersRequest +TeleportLandmarkRequest +EventInfoRequest +MovedIntoSimulator +ChatFromSimulator +PickInfoRequest +MoneyBalanceRequest +DirPeopleQuery +GroupElectionInfoRequest +GroupMembersRequest +GroupOfficersAndMembersRequest +TextureID +OldFolderID +UserInfoRequest +LandCollidersRequest +Handle +StartParcelRenameAck +StateLoad +ButtonIndex +CurrentElectionID +GetScriptRunning +SetScriptRunning +Health +FileID +CircuitInfo +ObjectBuy +ProfileEnd +Effect +TestMessage +ScriptMailRegistration +AgentSetAppearance +AvatarAppearance +RegionData +RequestingRegionData +LandingRegionData +SitTransform +TerrainBase0 +SkillsMask +AtAxis +TerrainBase1 +Reason +TerrainBase2 +TerrainBase3 +Params +PingID +Height +Region +MoneyHistoryReply +GroupMoneyHistoryReply +TelehubInfo +StateSave +AgentAnimation +AvatarAnimation +LogDwellTime +ParcelGodMarkAsContent +UsePhysics +JointType +TaxEstimate +ObjectTaxEstimate +LightTaxEstimate +TeleportLandingStatusChanged +LandTaxEstimate +GroupTaxEstimate +Buttons +Sender +Dialog +DestID +PricePublicObjectDelete +ObjectDelete +Delete +EventGodDelete +LastTaxDate +MapImageID +EndDateTime +TerrainDetail0 +TerrainDetail1 +TerrainDetail2 +TerrainDetail3 +Offset +ObjectDelink +TargetObject +IsEstateManager +CancelAuction +ObjectDetach +Compressed +PathBegin +BypassRaycast +WinnerID +ChannelType +NumberNonExemptMembers +NonExemptMembers +Agents +SimulatorStart +Enable +RevokedBlock +MemberData +ImageNotInDatabase +StartDate +AnimID +Serial +GroupElectionBallot +ControlPort +ModifyLand +Digest +Victim +Script +TemplateChecksumReply +PickInfoReply +MoneyBalanceReply +RoutedMoneyBalanceReply +RegionInfo +Sequence +GodUpdateRegionInfo +LocalX +LocalY +StartAnim +Location +Action +SearchDir +Active +TransferRequest +ScriptSensorRequest +MoneyTransferRequest +EjectGroupMemberRequest +SkillsText +Resent +Center +SharedData +PSBlock +UUIDNameBlock +Viewer +Method +TouchName +CandidateID +ParamData +GodlikeMessage +SystemMessage +BodyRotation +StartGroupElection +SearchRegions +Ignore +AnimationData +StatID +ItemID +AvatarStatisticsReply +ScriptDialogReply +RegionIDAndHandleReply +CameraAtOffset +VoteID +ParcelGodForceOwner +InviteData +CandidateData +PCode +SearchPos +PreyID +TerrainLowerLimit +EventFlags +TallyVotes +GroupInfoUpdated +Result +LookAt +PayButton +SelfCount +PacketCount +ParcelBuyPass +SimHandle +Identified +OldItemID +RegionPort +PriceEnergyUnit +Bitmap +TrackAgentSession +CacheMissType +VFileID +Response +GroupInsigniaID +FromID +Online +KickFlags +SysCPU +EMail +InviteMembers +IncludeMembers +AggregatePermTextures +ChatChannel +ReturnID +ObjectAttach +TargetPort +ObjectSpinStop +FullID +ActivateGroup +SysGPU +StartLure +SysRAM +ObjectPosition +SitPosition +StartTime +BornOn +CameraCollidePlane +EconomyDataRequest +TeleportLureRequest +FolderID +RegionHandleRequest +GestureRequest +ScriptDataRequest +AgentWearablesRequest +MapBlockRequest +LureID +CopyCenters +RegisterNewAgent +TotalColliderCount +ParamList +InventorySerial +EdgeDataPacket +AvatarPickerReply +ParcelDwellReply +IsForSale +MuteID +MeanCollisionAlert +CanAcceptTasks +ItemData +AnimationList +PassObject +Reputation +IntValue +TargetType +Amount +UpdateAttachment +RemoveAttachment +HeightWidthBlock +RequestObjectPropertiesFamily +ObjectPropertiesFamily +UserData +SessionBlock +IsReadable +ReputationMax +PathCurve +ReputationMin +Status +AlreadyVoted +ElectionInitiator +PlacesReply +DirPlacesReply +ParcelBuy +DirFindQueryBackend +DirPlacesQueryBackend +DirPeopleQueryBackend +DirGroupsQueryBackend +DirClassifiedQueryBackend +DirPicksQueryBackend +DirLandQueryBackend +DirPopularQueryBackend +SnapshotID +Aspect +LogoutDemand +HistoryData +VoteData +EstimatedDividend +ParamSize +VoteCast +EveryoneMask +CastsShadows +SetSunPhase +ObjectSpinUpdate +MaturePublish +UseExistingAsset +ParcelLocalID +TeleportCancel +UnixTime +QueryFlags +LastExecFroze +AlwaysRun +Bottom +ButtonData +SoundData +ViewerStats +RegionHandshake +Description +ObjectDescription +ParamType +UUIDNameReply +UUIDGroupNameReply +SaveAssetIntoInventory +UserInfo +AnimSequenceID +NVPairs +ParcelAccessListRequest +UserListRequest +MuteListRequest +StartPeriod +RpcChannelRequest +PlacesQuery +DirPlacesQuery +Distance +SortOrder +Hunter +TotalScriptCount +SunAngVelocity +InventoryUpdate +ImagePacket +BinaryBucket +StartGroupProposal +EnergyLevel +PriceForListing +Scale +ParentEstateID +Extra2 +Throttle +SimIP +GodID +TeleportMinPrice +VoteItem +ObjectRotation +SitRotation +SnapSelection +SoundTrigger +TerrainRaiseLimit +Quorum +TokenBlock +AgentBlock +CommandBlock +PricePublicObjectDecay +SpawnPointPos +AttachedSoundCutoffRadius +VolumeDetail +TasksPaused +Range +FromAgentName +AddModifyAbility +RemoveModifyAbility +PublicIP +TeleportFailed +OnlineStatusReply +DataAgentAccessReply +RequestLocationGetAccessReply +RequestAvatarInfo +PreloadSound +ScreenshotID +OldestUnacked +SimulatorIP +ObjectImport +MoneyMax +Value +JointAxisOrAnchor +Test0 +MoneyMin +Test1 +Test2 +SunPhase +Place +Phase +ParcelDivide +PriceObjectClaim +VoteTime +Field +Ratio +JoinGroupReply +LiveHelpGroupReply +Agent +Score +ExpungeData +Image +ObjectClickAction +Delta +InitiateUpload +Parameter +Flags +Plane +Width +VoteText +Right +DirFindQuery +Textures +EventData +Final +TelehubPos +ReportAutosaveCrash +Reset +CreateTrustedCircuit +DenyTrustedCircuit +Codec +Level +Modal +ChildAgentUnknown +LandingType +ScriptRunningReply +MoneyDetailsReply +Reply +TelehubRot +RequestFriendship +AcceptFriendship +GroupAccountDetailsReply +DwellInfo +AgentResume +ItemType +MailFilter +Disconnect +SimPosition +SimWideTotalPrims +Index +BaseFilename +SimFilename +LastOwnerID +EmailMessageRequest +MapItemRequest +AgentCount +InitializeLure +HelloBlock +FuseBlock +MessageBlock +ClassifiedInfoUpdate +RegionPos +ParcelMediaUpdate +GridX +GridY +AuctionID +VoteType +CategoryID +Token +AggregatePerms +StartParcelRemoveAck +ObjectSelect +ForceObjectSelect +Price +SunDirection +FromName +ChangeInventoryItemFlags +Force +TransactionBlock +PowersMask +Stamp +RelatedID +TotalCredits +State +TextureIndex +SimPaused +InviteeID +ParcelReclaim +Money +PathTwist +AuthBuyerID +Color +SourceType +World +QueryData +Users +SysOS +Notes +AvatarID +FounderID +EndPointID +StipendEstimate +LocationLookAt +Sound +Cover +TextureEntry +SquareMetersCommitted +ChannelID +Dwell +North +AgentUpdate +PickGodDelete +UpdateInventoryItemAsset +HostName +PriceParcelClaim +ParcelClaim +ProfileHollow +Count +South +Entry +ObjectUpdateCompressed +MuteFlags +Group +AgentPause +InternalScriptMail +FindAgent +AgentData +FolderData +AssetBlock +CloseCircuit +LogControl +TeleportFinish +PathRevolutions +ClassifiedInfoReply +ParcelInfoReply +LandCollidersReply +AutosaveData +SetStartLocation +PassHours +AttachmentPt +ParcelFlags +NumVotes +AvatarPickerRequest +TeleportLocationRequest +DataHomeLocationRequest +EventNotificationAddRequest +ParcelDwellRequest +ViewerLoginLocationRequest +ViewerSimLocationRequest +EventLocationRequest +EndPeriod +SetStartLocationRequest +UserLoginLocationRequest +QueryStart +AvatarTextureUpdate +RequestGrantedProxies +GrantedProxies +RPCServerPort +Bytes +Extra +ForceScriptControlRelease +ParcelRelease +VFileType +ImageData +SpaceServerSimulatorTimeMessage +SimulatorViewerTimeMessage +Rotation +Selection +TransactionData +OperationData +ExpirationDate +AgentName +ParcelDeedToGroup +DirPicksReply +AvatarPicksReply +AgentInfo +MoneyTransferBackend +NextOwnerMask +MuteData +PassPrice +SourceID +TotalScriptTime +ShowMembersInGroupDir +TeleportFlags +AssetData +SlaveParcelData +MultipleObjectUpdate +ObjectUpdate +ImprovedTerseObjectUpdate +ConfirmXferPacket +StartPingCheck +SimWideDeletes +UserListReply +IsPhantom +AgentList +RezObject +TaskLocalID +ClaimDate +MergeParcel +Priority +Building +QueryText +ReturnType +FetchFolders +SimulatorPublicHostBlock +HeaderData +GroupBlock +RequestMultipleObjects +RetrieveInstantMessages +DequeueInstantMessages +OpenCircuit +SecureSessionID +CrossedRegion +DirGroupsReply +AvatarGroupsReply +EmailMessageReply +GroupVoteHistoryItemReply +ViewerPosition +Position +ParentEstate +MuteName +StartParcelRename +BulkParcelRename +ParcelRename +ViewerFilename +Positive +UserReportInternal +AvatarPropertiesRequest +ParcelPropertiesRequest +GroupPropertiesRequest +GroupProfileRequest +AgentDataUpdateRequest +PriceObjectScaleFactor +DirPicksQuery +OpenEnrollment +GroupData +PauseBlock +RequestGodlikePowers +GrantGodlikePowers +TransactionID +DestinationID +Controls +FirstDetachAll +EstateID +ImprovedInstantMessage +AgentQuit +WantToFlags +CheckParcelSales +ParcelSales +CurrentInterval +PriceRentLight +MediaAutoScale +NeighborBlock +LayerData +NVPairData +TeleportLocal +LayersPaused +VoteInitiator +MailPingBounce +TypeData +OwnerIDs +SystemKickUser +ErrorCode +SLXML_ID +TransactionTime +TimeToLive +StartParcelRemove +BulkParcelRemove +DirGroupsQuery +BonusEstimate +MusicURL +CompleteLure +ParcelPrimBonus +EjectUser +CoarseLocationUpdate +ChildAgentPositionUpdate +GroupIndex +GroupName +PriceParcelRent +SimStatus +TransactionSuccess +LureType +GroupMask +SitObject +AssetNum +Override +LocomotionState +PriceUpload +RemoveParcel +ConfirmAuctionStart +RpcScriptRequestInbound +ParcelReturnObjects +TotalObjects +ObjectExtraParams +Questions +TransferAbort +TransferInventory +LandScriptsReply +Collada_ID +RayTargetID +ClaimPrice +ObjectProperties +ParcelProperties +LogoutRequest +AssetUploadRequest +ReputationIndividualRequest +MajorVersion +MinorVersion +SimulatorAssign +TransactionType +AvatarPropertiesUpdate +ParcelPropertiesUpdate +FetchItems +AbortXfer +DeRezAck +TakeControls +DirLandReply +SpaceLocationTeleportReply +MuteType +IMViaEMail +StartExpungeProcessAck +RentPrice +GenericMessage +ChildAgentAlive +SpawnPointBlock +AttachmentBlock +RecallData +OfficerData +GroupOfficer +ObjectMaterial +OwnerName +AvatarNotesReply +CacheID +OwnerMask +TransferInventoryAck diff --git a/applications/SLIRC/bin/Debug/protocol.txt b/applications/SLIRC/bin/Debug/protocol.txt index e3e5f36c..43d91382 100644 --- a/applications/SLIRC/bin/Debug/protocol.txt +++ b/applications/SLIRC/bin/Debug/protocol.txt @@ -1,10232 +1,10245 @@ -// Linden Lab development message templates - -version 1.053 - -// 1.053 added EndPointID to DenyTrustedCircuit and CreateTrustedCircuit. PP - -// ************************************************************************* -// 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 } - } -} - -// user->viewer -// AssignCircuitCode - Tells the recipient's messaging system what it's code is -//{ -// AssignCircuitCode Low Trusted Unencoded -// { -// CircuitCode Single -// { Code U32 } -// { SessionID LLUUID } -// } -//} - -// 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 - } -} - -// sim->space -// Tells the spaceserver that the simulator is ready to receive an -// agent with that circuit code. -//{ -// AckAddCircuitCode Low Trusted Unencoded -// { -// CircuitCode Single -// { Code U32 } -// } -//} - -// 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 } - } -} - -// AgentIDReply -// dataserver -> simulator -// reliable -// Message send from spaceserver to simulator -// containing agent id for a given session id -// Also, a list of name value pairs for that agent -// also tacked on a list of agents that have granted you powers -//{ -// AgentIDReply Low Trusted Zerocoded -// { -// ReplyBlock Single -// { RequestID LLUUID } -// { SessionID LLUUID } -// { AgentID LLUUID } -// { StartLocation LLVector3 } // Vector3, region local -// { StartLookAt LLVector3 } // Vector3, normalized -// { GroupID LLUUID } -// { GroupOfficer BOOL } -// { AgentAccess U8 } -// { GodLevel U8 } -// { GroupTitle Variable 1 } // string -// } -// { -// TextureData Variable -// { TextureID LLUUID } -// } -// { -// GranterBlock Variable -// { GranterID LLUUID } -// } -// { -// NameValueBlock Variable -// { NameValue Variable 2 } -// } -// { -// AttachmentBlock Variable -// { AttachmentPoint U8 } -// { ItemID LLUUID } -// { AssetID LLUUID } -// } -//} - -// AvatarTextureUpdate -// simulator -> dataserver -// reliable -{ - AvatarTextureUpdate Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { TexturesChanged BOOL } - } - { - WearableData Variable - { CacheID LLUUID } - { TextureIndex U8 } - } - { - 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 NotTrusted 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 -} - - -// AgentIDRequest -// Request to report agent ID associated with a session id -//{ -// AgentIDRequest Low Trusted Unencoded -// { -// RequestBlock Single -// { RequestID LLUUID } -// { SessionID LLUUID } -// { LocationID U32 } // 0 = last location -// { Godlike BOOL } -// } -//} -// **************************************************************************** -// 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 } - } -} - -// 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 } - { SimName Variable 1 } - { Summary Variable 1 } - { Details Variable 2 } - { VersionString Variable 1 } - } - { - MeanCollision Variable - { Perp LLUUID } - { Time U32 } - { Mag F32 } - { Type U8 } - } -} - -// 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 } - } - { - 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 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { QueryID 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 } - { SpaceIP IPADDR } // check online for right farm - } -} - - -// 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 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Variable - { QueryID LLUUID } - } - { - QueryReplies Variable - { ParcelID LLUUID } - { Name Variable 1 } - { ForSale BOOL } - { Auction BOOL } - { ReservedNewbie BOOL } - { Dwell F32 } - } -} - -// DirPeopleQuery viewer->sim -// ask about people. This gets translated into a DirPeopleQueryTrusted on -// the simulator. -// *NOTE: this message is not in use on the viewer. 2004.07.02 \P/hoenix -{ - DirPeopleQuery Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryText Variable 1 } - { Name Variable 1 } - { Group Variable 1 } - { Online U8 } - { WantToFlags U32 } - { SkillFlags U32 } - { Reputation Variable 1 } // string representation of "< 1" or "> 6" or "= 99" - { Distance Variable 1 } // string representation of "< 1" or "> 6" or "= 99" - } -} - -// DirPeopleQueryBackend sim->dataserver -// continue query about people whith a space ip address. -{ - DirPeopleQueryBackend Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryText Variable 1 } - { Name Variable 1 } - { Group Variable 1 } - { Online U8 } - { WantToFlags U32 } - { SkillFlags U32 } - { Reputation Variable 1 } // string representation of "< 1" or "> 6" or "= 99" - { Distance Variable 1 } // string representation of "< 1" or "> 6" or "= 99" - { EstateID U32 } - { Godlike BOOL } - { SpaceIP IPADDR } // used to check online status for the right farm - } -} - -// 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 NotTrusted 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 } - } -} - -// DirGroupsQuery viewer->sim -// reliable -{ - DirGroupsQuery Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryText Variable 1 } // string - } -} - -// DirGroupsQueryBackend sim->dataserver -// reliable -{ - DirGroupsQueryBackend Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryText Variable 1 } // string - { EstateID U32 } - { Godlike BOOL } - } -} - - -// DirGroupsReply -// dataserver -> userserver -> viewer -// reliable -{ - DirGroupsReply Low NotTrusted 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 } - } -} - -// 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 } - } -} - -// 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 } - } - { - 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 } - { ForSale BOOL } - { Auction BOOL } - { ReservedNewbie BOOL } - } -} - -// 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 } - { ForSale BOOL } - { Auction BOOL } - { ReservedNewbie BOOL } - { 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 } - } -} - -// **************************************************************************** -// 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 NotTrusted 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 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Info Single - { TeleportFlags U32 } - { Message Variable 1 } // string - } -} - -// DataAgentAccessRequest sim->data -// ask if agent ID can in fact teleport from their current location in -// EstateID to the destination specified by RegionHandle. If allowed, -// the handler will persist the location in user_start_location and -// send back a DataAgentAccessReply. Otherwise, the handler will send back -// a TeleportFailed. -{ - DataAgentAccessRequest Low Trusted Unencoded - { - Info Single - { AgentID LLUUID } - { EstateID U32 } - { RegionHandle U64 } - { LocationID U32 } - { LocationPos LLVector3 } - { LocationLookAt LLVector3 } - } -} - -// DataAgentAccessReply data->sim -// Message to let us know if AgentID is allowed to teleport to RegionHandle. -{ - DataAgentAccessReply Low Trusted Unencoded - { - Info Single - { AgentID LLUUID } - } -} - -// DataHomeLocationRequest sim->data -// Request -{ - DataHomeLocationRequest Low Trusted Zerocoded - { - Info Single - { AgentID LLUUID } - } -} - -// 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 NotTrusted Unencoded - { - Info Single - { AgentID LLUUID } - { LocationID U32 } - { SimIP IPADDR } - { SimPort IPPORT } - { RegionHandle U64 } - { 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 } - { TargetID LLUUID } - { Message Variable 1 } - } -} - -// InitializeLure user->space -// Prepare the spaceserver with destination information for a lure. -{ - InitializeLure Low Trusted Unencoded - { - Info Single - { LureType U8 } - { AgentID LLUUID } - { LureID LLUUID } - { RegionHandle U64 } - { Position LLVector3 } - { LookAt LLVector3 } - } -} - -// 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 NotTrusted Unencoded - { - Info Single - { TeleportFlags U32 } - } -} - -// TeleportFailed somehwere->sim->viewer -// announce failure of teleport request -{ - TeleportFailed Low NotTrusted 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 -// *************************************************************************** - -// RegisterNewAgent - Sent by viewer to simulator to tell the simulator -// that it's connecting. -// HACK -- If SessionID is null, don't bother asking for information -// from the space server. -{ - RegisterNewAgent Low NotTrusted Unencoded - { - HelloBlock Single - { AgentID LLUUID } - { SessionID LLUUID } - { LocationID U32 } // which start location to use - { Godlike BOOL } - } -} - -// viewer->sim -// request a connection to the userserver -//{ -// RequestUserserverConnection Low NotTrusted Unencoded -// { -// AgentInfo Single -// { AgentID LLUUID } -// { SessionID LLUUID } -// } -//} - -// sim->space->userserver -//{ -// UserserverConnectionForAgent Low Trusted Unencoded -// { -// AgentInfo Single -// { AgentID LLUUID } -// { SessionID LLUUID } -// } -//} - -// userserver->space->sim->agent -//{ -// UserserverReadyForAgent Low Trusted Unencoded -// { -// AgentInfo Single -// { AgentID LLUUID } -// { SessionID LLUUID } -// } -// { -// HostInfo Single -// { ServerIP IPADDR } -// { ServerPort IPPORT } -// } -//} - -// Undo -{ - Undo Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } - { - ObjectData Variable - { ObjectID LLUUID } - } -} - - -// Redo -{ - Redo Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } - { - ObjectData Variable - { ObjectID LLUUID } - } -} - -// UndoLand -{ - UndoLand Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } -} - - -// RedoLand -{ - RedoLand Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } -} - -// Transfer energy from agent to an object -{ - TransferEnergy Low NotTrusted Unencoded - { - Data Single - { DestID LLUUID } // destination of the transfer - { Amount S32 } // amount of the transfer - } -} - - -// MovedIntoSimulator - Sent by simulatorA to simulatorB to tell the -// simulator that a viewer is moving from A to B -// sim --> sim -{ - MovedIntoSimulator High Trusted Unencoded - { - Sender Single - { ID LLUUID } - { SessionID LLUUID } - { CircuitCode U32 } - } -} - - -// AgentPause - viewer occasionally will block, inform simulator of this fact -{ - AgentPause Low NotTrusted Unencoded - { - Sender 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 - { - Sender 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 - { ID 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 - { - Sender Single - { ID LLUUID } - { CircuitCode U32 } - { GenCounter U32 } - } - { - Throttle Single - { Throttles Variable 1 } - } -} - - -// AgentFOV - Update to agent's field of view, angle is vertical, single F32 float in radians -{ - AgentFOV Low NotTrusted Unencoded - { - Sender Single - { ID LLUUID } - { CircuitCode U32 } - { GenCounter U32 } - } - { - FOVBlock Single - { 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 - { - Sender Single - { ID LLUUID } - { CircuitCode U32 } - { GenCounter U32 } - } - { - HeightWidthBlock Single - { Height U16 } - { Width U16 } - } -} - - -// AgentSetAppearance - Update to agent appearance -{ - AgentSetAppearance Low NotTrusted Zerocoded - { - Sender Single - { ID 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 - { - Sender Single - { ID LLUUID } - } - { - AnimationList Variable - { AnimID LLUUID } - { StartAnim BOOL } - } -} - -// AgentRequestSit - Try to sit on an object -{ - AgentRequestSit High NotTrusted Zerocoded - { - Sender Single - { ID LLUUID } - } - { - TargetObject Single - { TargetID LLUUID } - { Offset LLVector3 } - } -} - -// AgentSit - Actually sit on object -{ - AgentSit High NotTrusted Unencoded - { - Sender Single - { ID LLUUID } - } -} - -// RefreshViewer - sent by viewer when it has missing geometry, etc., due to dropped packets. - -{ - RefreshViewer Low NotTrusted Unencoded - { - Sender Single - { ID 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 - { - RequestImage Variable - { Image LLUUID } - { DiscardLevel S32 } - { DownloadPriority F32 } - { Packet U32 } - } -} - -// ImageNotInDatabase -// Simulator informs viewer that a requsted image definitely does not exist in the asset database -{ - ImageNotInDatabase Low NotTrusted Unencoded - { - ImageID Single - { ID LLUUID } - } -} - -// SetAlwaysRun -// Lets the viewer choose between running and walking -{ - SetAlwaysRun Low NotTrusted Unencoded - { - Sender Single - { ID 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 - { - ObjectData Single - { PCode U8 } - { SenderID LLUUID } - { GroupID LLUUID } - { 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 } - - { TextureEntry Variable 2 } - - { NameValue Variable 2 } - { State U8 } - } - { - 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 } - } - { - InventoryFile Single - { Filename Variable 1 } - } -} - - -// ObjectDelete -// viewer -> simulator -{ - ObjectDelete Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID 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 } - { 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 } - { 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 } - } - { - 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 } - } - { - ObjectData Variable - { CacheMissType U8 } - { ID U32 } - } -} - - -// ObjectPosition -// viewer -> simulator -{ - ObjectPosition Medium NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { Position LLVector3 } // region - } -} - - -// ObjectScale -// viewer -> simulator -{ - ObjectScale Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { Scale LLVector3 } - } -} - - -// ObjectRotation -// viewer -> simulator -{ - ObjectRotation Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { Rotation LLQuaternion } - } -} - - -// ObjectFlagUpdate -// viewer -> simulator -{ - ObjectFlagUpdate Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { ObjectLocalID U32 } - { UsePhysics BOOL } - { IsTemporary BOOL } - { IsPhantom BOOL } - { CastsShadows BOOL } - } -} - - -// ObjectClickAction -// viewer -> simulator -{ - ObjectClickAction Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { ClickAction U8 } - } -} - - -// ObjectImage -// viewer -> simulator -{ - ObjectImage Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { MediaURL Variable 1 } - { TextureEntry Variable 2 } - } -} - - -{ - ObjectMaterial Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { Material U8 } - } -} - - -{ - ObjectShape Low NotTrusted Zerocoded - { - AgentData Single - { AgentID 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 } - } - { - 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 } - } - { - 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 } - { 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 } - } - { - 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 } - } - { - ObjectData Variable - { LocalID U32 } - { SaleType U8 } // U8 -> EForSale - { SalePrice S32 } - } -} - - -// set object names -{ - ObjectName Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { LocalID U32 } - { Name Variable 1 } - } -} - -// set object descriptions -{ - ObjectDescription Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { LocalID U32 } - { Description Variable 1 } - } -} - -// set object category -{ - ObjectCategory Low NotTrusted Zerocoded - { - AgentData Single - { AgentID 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 } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } - -} - - -// ObjectDeselect -{ - ObjectDeselect Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } - -} - -// ObjectAttach -{ - ObjectAttach Low NotTrusted Zerocoded - { - AgentData Single - { AgentID 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 } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } -} - - -// ObjectDrop -- drops an attachment from your avatar onto the ground -{ - ObjectDrop Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } -} - - -// ObjectLink -{ - ObjectLink Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } -} - -// ObjectDelink -{ - ObjectDelink Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } -} - -// ObjectHinge -{ - ObjectHinge Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - JointType Single - { Type U8 } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } - -} - -// ObjectDehinge -{ - ObjectDehinge Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } - -} - - -// ObjectGrab -{ - ObjectGrab Low NotTrusted Zerocoded - { - Sender Single - { ID 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 } - } - { - ObjectData Single - { ObjectID LLUUID } - { GrabOffsetInitial LLVector3 } // LLVector3 - { GrabPosition LLVector3 } // LLVector3, region local - { TimeSinceLast U32 } - } -} - - -// ObjectDeGrab -{ - ObjectDeGrab Low NotTrusted Unencoded - { - Sender Single - { ID LLUUID } - } - { - ObjectData Single - { LocalID U32 } - } -} - - -// ObjectSpinStart -{ - ObjectSpinStart Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Single - { ObjectID LLUUID } - } -} - - -// ObjectSpinUpdate -{ - ObjectSpinUpdate Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Single - { ObjectID LLUUID } - { Rotation LLQuaternion } - } -} - - -// ObjectSpinStop -{ - ObjectSpinStop Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ObjectData Single - { ObjectID LLUUID } - } -} - -// Export selected objects -{ - ObjectExportSelected Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { RequestID LLUUID } - { VolumeDetail S16 } - } - { - ObjectData Variable - { ObjectID LLUUID } - } -} - -// Export selected objects -{ - ObjectExportReply Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { RequestID LLUUID } - } - { - AssetData Single - { SLXML_ID LLUUID } - { Collada_ID LLUUID } - { ErrorCode S32 } - } - { - TextureData Variable - { AssetID LLUUID } - { AssetNum S32 } - } -} - -// Import an object -{ - ObjectImport Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { FolderID LLUUID } - } - { - AssetData Single - { FileID LLUUID 1 } - { ObjectName Variable 1 } - { Description Variable 1 } - } -} - -// Importing succeeded or failed -{ - ObjectImportReply Low NotTrusted Zerocoded - { - AssetData Single - { FileID LLUUID 1 } - { ErrorValue S32 } - } -} - -// ModifyLand - sent to modify a piece of land on a simulator. -// viewer -> sim -{ - ModifyLand Low NotTrusted Zerocoded - { - ModifyBlock Single - { AgentID LLUUID } - { Action U8 } - { BrushSize U8 } - { Seconds F32 } - { Height F32 } - } - { - ParcelData Variable - { LocalID S32 } - { West F32 } - { South F32 } - { East F32 } - { North F32 } - } -} - - -// VelocityInterpolateOn -{ - VelocityInterpolateOn Low NotTrusted Unencoded -} - - -// VelocityInterpolateOff -{ - VelocityInterpolateOff Low NotTrusted Unencoded -} - -// Save State -{ - StateSave Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - DataBlock Single - { Filename Variable 1 } - } -} - - -// ReportAutosaveCrash -{ - 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 } - } -} - -// Load State -// Not in use \P/hoenix - 2004.07.14 -{ - StateLoad Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - DataBlock Single - { Filename Variable 1 } - } -} - -// 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 - { - ObjectData Single - { RequestFlags U32 } - { AgentID LLUUID } - { 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 - { - AgentBlock Single - { AgentID LLUUID } - { PreyID LLUUID } - } -} - - -// Grant agents the ability to modify your stuff. This message is sent -// to the user server, and then passed along to the dataserver for -// persistance. The dataserver will push live updates through -// AddModifyAbility messages to the simulator. -// viewer -> userserver -> dataserver -{ - GrantModification Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GranterName Variable 1 } - } - { - EmpoweredBlock Variable - { EmpoweredID LLUUID } - } -} - -// Revoke the ability to modify your stuff. This message is sent to -// the user server, and then passed along to the dataserver for -// persistance. The dataserver will push live updates through -// RemoveModifyAbility messages to the simulator. -// viewer -> userserver -> dataserver -{ - RevokeModification Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GranterName Variable 1 } - } - { - RevokedBlock Variable - { RevokedID LLUUID } - } -} - -// This message is sent from viewer->userserver, which responds with -// the complete list of all granted agents in the GrantedProxies -// message. -{ - RequestGrantedProxies Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } -} - -// response to the message above -{ - GrantedProxies Low Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - ProxyBlock Variable - { EmpoweredID LLUUID } - } -} - -// This message is sent from the dataserver to the simulator to let -// AgentID know that they can modify GranterID's stuff. This message is -// percolated out to child cameras but not the viewer. This message is -// in response to GrantModification messages, request, or login. -// ROUTED dataserver -> userserver -> spaceserver -> simulator -// reliable -{ - AddModifyAbility Low Trusted Zerocoded - { - TargetBlock Single - { TargetIP IPADDR } // U32 encoded IP - { TargetPort IPPORT } - } - { - AgentBlock Single - { AgentID LLUUID } - } - { - GranterBlock Variable - { GranterID LLUUID } - } -} - -// This message is sent from the dataserver to the simulator to let -// AgentID know that they can no longer modify GranterID's stuff. This -// message is percolated out to child cameras but not the viewer. This -// message is in response to RevokeModification messages. -// ROUTED dataserver -> userserver -> spaceserver -> simulator -// reliable -{ - RemoveModifyAbility Low Trusted Unencoded - { - TargetBlock Single - { TargetIP IPADDR } // U32 encoded IP - { TargetPort IPPORT } - } - { - AgentBlock Single - { AgentID LLUUID } - { RevokerID LLUUID } - } -} - -// end viewer to simulator section - -{ - ViewerStats Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { IP IPADDR } - { StartTime U32 } - { RunTime F32 } // F32 - { FPS F32 } // F32 - { 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 - { - Data Single - { AgentID LLUUID } - { TaskID LLUUID } - { ItemID LLUUID } - { Questions S32 } - } -} - - -// complaint/bug-report -// reliable -{ - UserReport Low NotTrusted Zerocoded - { - ReportData Single - { ReportType U8 } // BUG=1, COMPLAINT=2 - { Category U8 } // see sequence.user_report_category - { ReporterID LLUUID } - { Position LLVector3 } // screenshot position, region-local - { CheckFlags U8 } // checkboxflags - { ScreenshotID LLUUID } - { ObjectID LLUUID } - { Summary Variable 1 } - { Details Variable 2 } - { VersionString Variable 1 } - } - { - MeanCollision Variable - { Perp LLUUID } - { Time U32 } - { Mag F32 } - { Type U8 } - } -} - - -// *************************************************************************** -// 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 NotTrusted 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 - { - 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 udpate 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 } - } - { - 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 } - } -} - -{ - 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 } - { 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 } - { AvatarID LLUUID } - } -} - -// AvatarPropertiesRequestBackend -// simulator -> dataserver -// reliable -{ - AvatarPropertiesRequestBackend Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { AvatarID LLUUID } - { GodLevel U8 } - } -} -// 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 - { WantToMask U32 } - { WantToText Variable 1 } // string - { SkillsMask U32 } - { SkillsText Variable 1 } // string - { FLAboutText Variable 1 } // string - { BornOn Variable 1 } // string - { CharterMember Variable 1 } // special - usually U8 - { AllowPublish BOOL } // whether profile is externally visible or not - { MaturePublish BOOL } // profile is "mature" - { Identified BOOL } // whether avatar has provided payment info - { Transacted BOOL } // whether avatar has actively used payment info - } -} - -// 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 - { GroupOfficer BOOL } - { GroupTitle Variable 1 } - { GroupID LLUUID } - { GroupName Variable 1 } - { GroupInsigniaID LLUUID } - } -} - - -// AvatarPropertiesUpdate -// viewer -> simulator -// simulator -> dataserver -// reliable -{ - AvatarPropertiesUpdate Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - PropertiesData Single - { AvatarID LLUUID } - { ImageID LLUUID } - { FLImageID LLUUID } - { AboutText Variable 2 } // string, up to 512 - { FLAboutText Variable 1 } - { WantToMask U32 } - { WantToText Variable 1 } // string - { SkillsMask U32 } - { SkillsText Variable 1 } // string - { AllowPublish BOOL } // whether profile is externally visible or not - { MaturePublish BOOL } // profile is "mature" - } -} - -// 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 } - } - { - 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 } - } - { - 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 } - - } - { - EventData Single - { EventID U32 } - } -} - - -// EventNotificationRemoveRequest -// viewer -> simulator -// simulator -> dataserver -// reliable -{ - EventNotificationRemoveRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID 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 } - } - { - 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 } - } - { - 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 } - } - { - 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 NotTrusted 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 - { - Data Single - { AgentID LLUUID } - { ObjectID LLUUID } - { ChatChannel S32 } - { ButtonIndex S32 } - { ButtonLabel Variable 1 } - } -} - - -// ForceScriptControlRelease -// reliable -{ - ForceScriptControlRelease Low NotTrusted Unencoded - { - Data Single - { ID LLUUID } - } -} - -// RevokePermissions -// reliable -{ - RevokePermissions Low NotTrusted Unencoded - { - Data Single - { AgentID LLUUID } - { 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 } - { Message Variable 1 } - { URL Variable 1 } - } -} - -// ScriptTeleportRequest -// reliable -{ - ScriptTeleportRequest Low NotTrusted 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 - { - ParcelData Single - { AgentID LLUUID } - { SequenceID S32 } - { West F32 } - { South F32 } - { East F32 } - { North F32 } - { SnapSelection BOOL } - } -} - -// ParcelPropertiesRequestByID -// viewer -> sim -// reliable -{ - ParcelPropertiesRequestByID Low NotTrusted Zerocoded - { - ParcelData Single - { AgentID LLUUID } - { 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 } - } -} - -// 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 S32 } - { OtherCleanTime S32 } - } - { - TaskIDs Variable - { TaskID LLUUID } - } - { - OwnerIDs Variable - { OwnerID LLUUID } - } -} - -// 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 S32 } - { OtherCleanTime S32 } - } - { - 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 S32 } - } - { - ReturnIDs Variable - { ReturnID 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 - { - ParcelData Single - { AgentID LLUUID } - { 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 - { - ParcelData Single - { AgentID LLUUID } - { 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 } - { 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 - { - Data Single - { AgentID LLUUID } - { SequenceID S32 } - { Flags U32 } - { LocalID S32 } - } -} - - -// sim -> viewer -// ParcelAccessListReply -{ - ParcelAccessListReply Low NotTrusted 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 } - } - { - 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 } - } -} - -// userserver -> dataserver -// Used to request all parcel sales in the database -//{ -// RequestParcelSales Low Trusted Unencoded -//} - -// dataserver -> userserver -> spaceserver -// response of all (up to max packet size) parcel sales in the database. -// each block in the meassage represents a parcel that a human agreed -// to pay US$. -//{ -// BulkParcelSales Low Trusted Unencoded -// { -// ParcelData Variable -// { RegionHandle U64 } -// { ParcelID LLUUID } -// { BuyerID 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 } - } -} - -// userserver -> dataserver -// Used to request all parcel sales in the database -//{ -// RequestParcelAuctions Low Trusted Unencoded -//} - -// dataserver -> userserver -> spaceserver -// response of all (up to max packet size) parcel sales in the database. -// each block in the meassage represents a parcel that a human agreed -// to pay US$. -//{ -// BulkParcelAuctions Low Trusted Unencoded -// { -// ParcelData Variable -// { RegionHandle U64 } -// { ParcelID LLUUID } -// { WinnerID 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 } - { GroupIndex S8 } // -1 for none - } - { - GroupData Variable - { GroupID LLUUID } - { GroupOfficer BOOL } // 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 GetScriptRunningReply -{ - 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 - { - Script Single - { ObjectID LLUUID } - { ItemID LLUUID } - { Running BOOL } - } -} - -// ScriptReset - causes a script to reset -{ - ScriptReset Low NotTrusted Unencoded - { - Script Single - { AgentID LLUUID } - { 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 } - } -} - -// LoginRequestSafe -// Attempt to log into the system with an auth token obtained via a -// secure out of band mechanism (such as a TLS tunnel) -// viewer -> userserver -// unreliable -//{ -// LoginRequestSafe Low NotTrusted Unencoded -// { -// LoginBlock Single -// { AuthToken LLUUID } // session id really -// { ViewerDigest LLUUID } // MD5 of viewer exe -// { LastExecFroze BOOL } -// } -//} - -// LoginReply -// Identifies the session, or sends LLUUID::null if invalid -// userserver -> viewer -//{ -// LoginReply Low Trusted Zerocoded -// { -// UserData Single -// { Firstname Variable 1 } // string, canonical caps -// { Lastname Variable 1 } // string, canonical caps -// { SessionID LLUUID } -// { AgentID LLUUID } -// { ErrorMessage Variable 1 } -// { AgentAccess U8 } -// { GroupOfficer BOOL } -// { GroupTitle Variable 1 } -// { GroupID LLUUID } -// { GroupName Variable 1 } -// { GroupInsigniaID LLUUID } -// { LoginFlags U32 } // bitfield -// { SunTextureID LLUUID } -// { MoonTextureID LLUUID } -// { CloudTextureID LLUUID } -// { TOSAssetID LLUUID } // Null if TOS agreement is current -// { CriticalMessageAssetID LLUUID } // Null if message is current -// { TrialDaysLeft S32 } // Zero if not trial -// { ServerUTCTime U32 } // time_t, unix time format -// } -// { -// StartLocationData Variable -// { LocationID U32 } -// { LocationRegionX U32 } // U32, meters to southwest -// { LocationRegionY U32 } -// { LocationPos LLVector3 } // Vector3, region coords -// { LocationLookAt LLVector3 } // Vector3 -// } -//} - -// DataserverLoginRequestSafe -// userserver -> dataserver -//{ -// DataserverLoginRequestSafe Low Trusted Unencoded -// { -// UserData Single -// { AuthToken LLUUID } // session id really -// { IP IPADDR } -// { Port IPPORT } -// { SpaceIP IPADDR } -// { ViewerDigest LLUUID } -// { LastExecFroze BOOL } -// } -//} - -// DataServerLoginReply -// TimeValid is true if user is allowed to log in at this time -// dataserver -> userserver -// reliable -//{ -// DataServerLoginReply Low Trusted Zerocoded -// { -// UserData Single -// { Firstname Variable 1 } // string -// { Lastname Variable 1 } // string -// { IP IPADDR } // don't think this is valid JC 6/02 -// { Port IPPORT } // don't think this is valid JC 6/02 -// { LoginValid BOOL } -// { TimeValid BOOL } -// { ErrorMessage Variable 1 } // string -// { AgentID LLUUID } -// { SessionID LLUUID } -// { LimitedToEstate U32 } -// { AgentAccess U8 } -// { GroupOfficer BOOL } -// { GroupTitle Variable 1 } -// { GroupID LLUUID } -// { GroupName Variable 1 } -// { GroupInsigniaID LLUUID } -// { LoginFlags U32 } // bitfield -// { SunTextureID LLUUID } -// { MoonTextureID LLUUID } -// { CloudTextureID LLUUID } -// { TOSAssetID LLUUID } // Null if TOS agreement is current -// { CriticalMessageAssetID LLUUID } // Null if message is current -// { TrialDaysLeft S32 } // Zero if not trial -// { ServerUTCTime U32 } // time_t, unix time format -// { SpaceIP IPADDR } -// { ViewerDigest LLUUID } -// { LastExecFroze BOOL } -// } -// { -// StartLocationData Variable -// { LocationID U32 } -// { LocationRegionX U32 } -// { LocationRegionY U32 } -// { LocationPos LLVector3 } // Vector3 -// { LocationLookAt LLVector3 } // Vector3 -// } -//} - -// The user agrees to the current Terms of Service -// or clicks OK on the current critical message -// type 0 = TOS -// type 1 = critical message -// viewer -> userserver -> dataserver -//{ -// TOSAgreement Low NotTrusted Unencoded -// { -// AgentBlock Single -// { AgentID LLUUID } -// { Type S32 } -// } -//} - -// 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 NotTrusted 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 NotTrusted 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) - { NewAssetID LLUUID } - } -} - - - -// LogoutDemand -// Unreliable, because the viewer quits before it has a chance to retransmit. -// viewer -> userserver -// unreliable -{ - LogoutDemand Low NotTrusted Unencoded - { - LogoutBlock Single - { SessionID LLUUID } - } -} - - -//----------------------------------------------------------------------------- -// Viewer to UserServer Messages -//----------------------------------------------------------------------------- - -// ViewerLoginLocationRequest -// viewer -> userserver -// *NOTE: obsolete -{ - ViewerLoginLocationRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - PositionBlock Single - { ViewerRegion U64 } - { ViewerPosition LLVector3 } - } - { - URLBlock Single - { SimName Variable 1 } - { Pos LLVector3 } - } -} - -// ViewerSimLocationRequest -// viewer -> userserver -// *NOTE: obsolete -{ - ViewerSimLocationRequest Low NotTrusted Unencoded - { - PositionBlock Single - { AgentID LLUUID } - { SimName Variable 1 } - } -} - -// RequestLocationGetAccess -// userserver -> dataserver -// *NOTE: obsolete. -{ - RequestLocationGetAccess Low Trusted Unencoded - { - PositionBlock Single - { AgentID LLUUID } - { SessionID LLUUID } - { ViewerIP IPADDR } - { ViewerPort IPPORT } - { ViewerRegion U64 } - { ViewerPosition LLVector3 } - } -} - -// RequestLocationGetAccessReply -// dataserver -> userserver -// *NOTE: obsolete. -{ - RequestLocationGetAccessReply Low Trusted Unencoded - { - PositionBlock Single - { ViewerIP IPADDR } - { ViewerPort IPPORT } - { ViewerRegion U64 } - { ViewerPosition LLVector3 } - { TravelAccess U8 } - } -} - - -// UserListRequest -// Get a list of the current system users -// viewer -> userserver -//*NOTE: obsolete -{ - UserListRequest Low NotTrusted Unencoded -} - - -//----------------------------------------------------------------------------- -// 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 - { - MessageBlock Single - { FromAgentID LLUUID } - { 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 } - } -} - -// Start group IM session. If everyone is 1, then offline users also -// get the messages. -{ - StartGroupIM Low NotTrusted Unencoded - { - SessionBlock Single - { SessionID LLUUID } - { Everyone U8 } - } - { - Participants Variable - { AgentID LLUUID } - } -} - -// drop out from a group instant message -{ - DropGroupIM Low NotTrusted Unencoded - { - SessionBlock Single - { SessionID LLUUID } - { AgentID LLUUID } - } -} - -// Group instant messaging -{ - GroupIM Low NotTrusted Unencoded - { - MessageBlock Single - { SessionID LLUUID } - { FromID LLUUID } - { FromAgentName Variable 1 } - { Message Variable 2 } - } -} - -// RetrieveInstantMessages - used to get instant messages that -// were persisted out to the database while the user was offline -{ - RetrieveInstantMessages Low NotTrusted Unencoded - { - AgentBlock Single - { Agent 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 } - } -} - -// This message is sent viewer->userserver to track if other agents -// come on or off line. -{ - TrackOnlineStatus Low NotTrusted Zerocoded - { - AgentBlock Variable - { AgentID LLUUID } - } -} - -// This message is sent viewer->userserver to ignore logon and logoff -// events for the specified agents. This is typically sent when a -// calling card is deleted or cancelled. -{ - IgnoreOnlineStatus Low NotTrusted Zerocoded - { - AgentBlock Variable - { AgentID LLUUID } - } -} - -// 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 } - } - { - 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 } - } - { - 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 } - } - { - 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 - { - MuteData Single - { AgentID LLUUID } - { MuteCRC U32 } - } -} - -// update/add someone in the mute list -{ - UpdateMuteListEntry Low NotTrusted Unencoded - { - MuteData Single - { AgentID LLUUID } - { MuteID LLUUID } - { MuteName Variable 1 } - { MuteType S32 } - { MuteFlags U32 } - } -} - -// Remove a mute list entry. -{ - RemoveMuteListEntry Low NotTrusted Unencoded - { - MuteData Single - { AgentID LLUUID } - { MuteID LLUUID } - { MuteName Variable 1 } - } -} - - -// viewer -> userserver, gimme inventory -//{ -// InventoryRequest Low NotTrusted Unencoded -// { -// InventoryData Single -// { AgentID LLUUID } -// { CacheCRC U32 } -// } -//} - -// -// Inventory update messages -// -{ - UpdateInventoryItem Low NotTrusted 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 } - } -} - -// When all that has updated is the asset, we can crunch this down. -{ - UpdateInventoryItemAsset Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - InventoryData Variable - { ItemID LLUUID } - { AssetID LLUUID } - } -} - -{ - MoveInventoryItem Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { Stamp BOOL } // should the server re-timestamp? - } - { - InventoryData Variable - { ItemID LLUUID } - { FolderID LLUUID } - } -} - -// copy inventory item by item id to specified destination folder, -// send out bulk inventory update when done. -// currently only sim->data, but it is general enough to be -// a viewer request. -{ - CopyInventoryItem Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - InventoryData Variable - { OldItemID LLUUID } - { NewFolderID LLUUID } - } -} - -{ - RemoveInventoryItem Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - InventoryData Variable - { ItemID LLUUID } - } -} - -{ - ChangeInventoryItemFlags Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - InventoryData Variable - { ItemID LLUUID } - { Flags U32 } - } -} - - -{ - SaveAssetIntoInventory Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - InventoryData Single - { ItemID LLUUID } - { NewAssetID LLUUID } - } -} - -{ - CreateInventoryFolder Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - FolderData Single - { FolderID LLUUID } - { ParentID LLUUID } - { Type S8 } - { Name Variable 1 } - } -} - -{ - UpdateInventoryFolder Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - FolderData Variable - { FolderID LLUUID } - { ParentID LLUUID } - { Type S8 } - { Name Variable 1 } - } -} - -{ - MoveInventoryFolder Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { Stamp BOOL } // should the server re-timestamp children - } - { - InventoryData Variable - { FolderID LLUUID } - { ParentID LLUUID } - } -} - -{ - RemoveInventoryFolder Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - FolderData Variable - { FolderID LLUUID } - } -} - -// Get inventory segment. -{ - FetchInventoryDescendents Low NotTrusted Zerocoded - { - AgentData Single - { AgentID 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 NotTrusted 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 } - } - { - InventoryData Variable - { OwnerID LLUUID } - { ItemID LLUUID } - } -} - -// response to fetch inventory -{ - FetchInventoryReply Low NotTrusted 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. -{ - 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 } - { 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 } - } - { - 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 - { - UpdateData Single - { AgentID LLUUID } - { GroupID LLUUID } - { 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 - { AssetID 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 - { - InventoryData Single - { AgentID LLUUID } - { GroupID LLUUID } - { LocalID U32 } - { ItemID LLUUID } - } -} - -{ - MoveTaskInventory Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - { FolderID LLUUID } - } - { - InventoryData Single - { LocalID U32 } - { ItemID LLUUID } - } -} - -{ - RequestTaskInventory Low NotTrusted Unencoded - { - InventoryData Single - { AgentID LLUUID } - { 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 - { - AgentBlock Single - { AgentID LLUUID } - { SessionID LLUUID } - { 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 } - { 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 - { AssetID LLUUID } - { Type S8 } - { InvType S8 } - { Flags U32 } - { SaleType U8 } - { SalePrice S32 } - { Name Variable 1 } - { Description Variable 1 } - { CreationDate S32 } - { CRC U32 } - } -} - -// if declined, the destid agent from the GiveInventory message -// responds with this message to the userserver -{ - DeclineInventory Low NotTrusted Unencoded - { - InfoBlock Single - { TransactionID LLUUID } - } -} - -// userserver -> 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 -> userserver -// 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 - { - AgentBlock Single - { SourceID LLUUID } - { FolderID LLUUID } // source ID's calling card folder - { DestID LLUUID } - { TransactionID LLUUID } - } -} - -{ - AcceptFriendship Low NotTrusted Unencoded - { - TransactionBlock Single - { TransactionID LLUUID } - } - { - FolderData Variable - { FolderID LLUUID } // place to put calling card. - } -} - -{ - DeclineFriendship Low NotTrusted Unencoded - { - TransactionBlock Single - { TransactionID LLUUID } - } -} - - -//{ -// AddCallingCard Low NotTrusted Unencoded -// { -// CardBlock Variable -// { SourceUUID LLUUID } -// { DestUUID LLUUID } -// { Name Variable 1 } -// } -//} - -{ - 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 - { - AgentBlock Single - { SourceID LLUUID } - { DestID LLUUID } - { TransactionID LLUUID } - } -} - -{ - AcceptCallingCard Low NotTrusted Unencoded - { - TransactionBlock Single - { TransactionID LLUUID } - } - { - FolderData Variable - { FolderID LLUUID } // place to put calling card. - } -} - -{ - DeclineCallingCard Low NotTrusted Unencoded - { - TransactionBlock Single - { TransactionID LLUUID } - } -} - - -// Rez a script onto an object -{ - RezScript Low NotTrusted Zerocoded - { - UpdateBlock Single - { AgentID LLUUID } - { GroupID LLUUID } - { 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 - { AssetID 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 - { FolderID LLUUID } - { NextOwnerMask U32 } - { Type S8 } - { InvType S8 } - { 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 } - } -} - -//{ -// RegionIDRequest Low NotTrusted Unencoded -// { -// RequestBlock Single -// { RegionHandle U64 } -// } -//} - -{ - 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 - { - MoneyData Single - { TransactionID LLUUID } - { AgentID 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 - { - MoneyData Single - { AgentID LLUUID } - { 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 - { - MoneyData Single - { AgentID LLUUID } - { 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 - { - MoneyData Single - { AgentID LLUUID } - { 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 } - { 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 } - { 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 } - } -} - -// possible alternate to InventoryUpdate - tells viewer to load cached inventory -//{ -// UseCachedInventory Low Trusted Unencoded -// { -// InventoryData Single -// { AgentID LLUUID } -// } -//} - -// 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 } - } -} - - -// UserLoginLocationReply -// userserver -> viewer -{ - UserLoginLocationReply Low Trusted Zerocoded - { - AgentData Single - { SessionID LLUUID } - { Message Variable 1 } - } - { - RegionInfo Single - { LocationValid BOOL } - { GridsPerEdge U32 } - { MetersPerGrid F32 } - { Handle U64 } - { UsecSinceStart U64 } - { SecPerDay U32 } - { SecPerYear U32 } - { SunDirection LLVector3 } - { SunAngVelocity LLVector3 } - } - { - SimulatorBlock Single - { IP IPADDR } - { Port IPPORT } - } - { - URLBlock Single - { LocationID U32 } - { LocationLookAt LLVector3 } - } -} - -// UserSimLocationReply -// userserver -> viewer -{ - UserSimLocationReply Low Trusted Unencoded - { - SimulatorBlock Single - { AccessOK U8 } - { SimName Variable 1 } - { SimHandle U64 } - } -} - -// UserListReply -// Return a list of users on the system -{ - UserListReply Low Trusted Unencoded - { - UserBlock Variable - { FirstName Variable 1 } - { LastName Variable 1 } - { Status U8 } - } -} - -// 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 - { - StartLocationData Single - { AgentID LLUUID } - { 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 } - } -} - - - -// UserLoginLocationRequest -// userserver -> spaceserver -{ - UserLoginLocationRequest Low Trusted Zerocoded - { - UserBlock Single - { SessionID LLUUID } - { TravelAccess U8 } - { FirstLogin BOOL } - { LimitedToEstate U32 } - } - { - PositionBlock Single - { ViewerRegion U64 } - { ViewerPosition LLVector3 } - } - { - URLBlock Single - { SimName Variable 1 } - { Pos LLVector3 } - } -} - -// SpaceLoginLocationReply -// spaceserver -> userserver -// not reliable -{ - SpaceLoginLocationReply Low Trusted Zerocoded - { - UserBlock Single - { SessionID LLUUID } - { LocationID U32 } - { LocationPos LLVector3 } - { LocationLookAt LLVector3 } - } - { - SimulatorBlock Single - { IP IPADDR } - { Port IPPORT } - { CircuitCode U32 } - { Name Variable 1 } - { SimAccess U8 } - } - { - RegionInfo Single - { GridsPerEdge U32 } - { MetersPerGrid F32 } - { Handle U64 } - { UsecSinceStart U64 } - { SecPerDay U32 } - { SecPerYear U32 } - { SunDirection LLVector3 } - { SunAngVelocity 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 } - } -} - -// *************************************************************************** -// Simulator to QuerySim -// *************************************************************************** - -// SimulatorPauseState - what parts of the sim are paused - -{ - SimulatorPauseState Low NotTrusted Unencoded - { - PauseBlock Single - { SimPaused U32 } - { LayersPaused U32 } - { TasksPaused U32 } - } -} - -// SimulatorThrottleSettings - what are the current throttle settings? - -{ - SimulatorThrottleSettings Low NotTrusted Unencoded - { - Sender Single - { ID LLUUID } - } - { - Throttle Single - { Throttles Variable 1 } - } -} - -// *************************************************************************** -// Name Value Pair messages -// *************************************************************************** - -// NameValuePair - if the specific task exists on simulator, add or replace this name value pair -{ - NameValuePair Low NotTrusted 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 NotTrusted 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 -{ - UpdateAttachment Low NotTrusted 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 - { UUID LLUUID } - { Type S8 } - { Tempfile 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 -> userserver -// userserver -> dataserver -// reliable -{ - CreateGroupRequest Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { Name Variable 1 } // string - { Charter Variable 2 } // string - { ShowInList U8 } - { ShowMembersInGroupDir U8 } - { RequireMask U32 } // U32 mask - { ReputationMin S32 } - { ReputationMax S32 } - { MoneyMin S32 } - { MoneyMax S32 } - { OfficerTitle Variable 1 } // string - { MemberTitle Variable 1 } // string -// { OfficerMax U8 } -// { MemberMax U8 } - { PowersMask U32 } // U32 mask - { InsigniaID LLUUID } - { InviteOfficers Variable 2 } // string - { InviteMembers Variable 2 } // string - { MembershipFee S32 } // S32 - { OpenEnrollment BOOL } // BOOL (U8) - { AllowPublish BOOL } // whether profile is externally visible or not - { MaturePublish BOOL } // profile is "mature" - } -} - -// CreateGroupReply -// dataserver -> userserver -// userserver -> viewer -// reliable -{ - CreateGroupReply Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - ReplyData Single - { GroupID LLUUID } - { Result S32 } - { Message Variable 1 } // string - } -} - -// CreateGroupRequest -// viewer -> userserver -// userserver -> dataserver -// reliable -{ - UpdateGroupInfo Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { Charter Variable 2 } // string - { ShowInList BOOL } - { ShowMembersInGroupDir BOOL } - { OfficerTitle Variable 1 } // string - { MemberTitle Variable 1 } // string -// { OfficerMax U8 } -// { MemberMax U8 } - { InsigniaID LLUUID } - { MembershipFee S32 } - { OpenEnrollment BOOL } - { InviteOfficers Variable 2 } // string - { InviteMembers Variable 2 } // string - { AllowPublish BOOL } - { MaturePublish BOOL } - } -} - -{ - GroupInfoUpdated Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } -} - -// JoinGroupRequest -// viewer -> userserver -> dataserver -// reliable -{ - JoinGroupRequest Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { Officer U8 } - { MembershipFee S32 } - } -} - -// JoinGroupReply -// dataserver -> userserver -> viewer -{ - JoinGroupReply Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { Success BOOL } - } -} - -// EjectGroupMemberRequest -// viewer -> userserver -> dataserver -// reliable -{ - EjectGroupMemberRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { AgentID LLUUID } - } -} - -// This message is sent from the dataserver to the simulator to let -// AgentID know that they are no longer a member of the group. This -// message is in response to EjectGroupMemberRequest messages. -// ROUTED dataserver -> userserver -> spaceserver -> simulator -// reliable -{ - RemoveMemberFromGroup Low Trusted Unencoded - { - TargetBlock Single - { TargetIP IPADDR } // U32 encoded IP - { TargetPort IPPORT } - } - { - AgentBlock Single - { AgentID LLUUID } - } - { - GroupBlock Single - { GroupID LLUUID } - } -} - - -// LeaveGroupRequest -// viewer -> userserver -> dataserver -// reliable -{ - LeaveGroupRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } -} - -// InviteGroupRequest -// viewer -> userserver -> dataserver -// reliable -{ - InviteGroupRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } // UUID of inviting agent - } - { - InviteData Single - { AgentName Variable 1 } // string - { InviteeID LLUUID } - { GroupID LLUUID } - { Officer BOOL } // BOOL - } -} - -// GroupPropertiesRequest -// viewer-> userserver -> dataserver -// reliable -{ - GroupPropertiesRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } -} - -// GroupPropertiesReply -// viewer -> userserver -> dataserver -// reliable -{ - GroupPropertiesReply Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { Name Variable 1 } // string - { Charter Variable 2 } // string - { ShowInList U8 } - { ShowMembersInGroupDir U8 } - { RequireMask U32 } // U32 mask - { ReputationMin S32 } - { ReputationMax S32 } - { MoneyMin S32 } - { MoneyMax S32 } - { OfficerTitle Variable 1 } // string - { MemberTitle Variable 1 } // string -// { OfficerMax U8 } -// { MemberMax U8 } - { PowersMask U32 } // U32 mask - { InsigniaID LLUUID } - { FounderID LLUUID } - { MembershipFee S32 } // S32 - { OpenEnrollment BOOL } // BOOL (U8) - { Money S32 } - { CurrentElectionID LLUUID } - { GroupMembershipCount S32 } - { AllowPublish BOOL } - { MaturePublish BOOL } - } -} - -// GroupProfileRequest -// viewer-> userserver -> dataserver -// reliable -{ - GroupProfileRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } -} - -// GroupProfileReply -// dataserver -> userserver -> viewer -// reliable -{ - GroupProfileReply Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { Name Variable 1 } // string - { Charter Variable 2 } // string - { ShowInList U8 } - { ShowMembersInGroupDir U8 } - { OfficerTitle Variable 1 } // string - { MemberTitle Variable 1 } // string - { InsigniaID LLUUID } - { FounderID LLUUID } - { FounderName Variable 1 } - { MembershipFee S32 } - { OpenEnrollment BOOL } - } -} - -// GroupMoneyHistoryRequest -// viewer-> userserver -> dataserver -// reliable -{ - GroupMoneyHistoryRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } -} - -// GroupMoneyHistoryReply -// dataserver -> userserver -> viewer -// reliable -{ - GroupMoneyHistoryReply Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } - { - GroupData Single - { IntervalDays S32 } - { CurrentInterval S32 } - { CurrentTaxes S32 } - { CurrentDividend S32 } - { EstimatedTaxes S32 } - { EstimatedDividend S32 } - { NumberNonExemptMembers S32 } - } -} - - -// CurrentInterval = 0 => this period (week, day, etc.) -// CurrentInterval = 1 => last period -// viewer -> userserver -> dataserver -// reliable -{ - GroupAccountSummaryRequest Low NotTrusted Zerocoded - { - MoneyData Single - { AgentID LLUUID } - { GroupID LLUUID } - { RequestID LLUUID } - { IntervalDays S32 } - { CurrentInterval S32 } - } -} - - -// dataserver -> userserver -> viewer -// Reliable -{ - GroupAccountSummaryReply Low NotTrusted 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 - { - MoneyData Single - { AgentID LLUUID } - { GroupID LLUUID } - { RequestID LLUUID } - { IntervalDays S32 } - { CurrentInterval S32 } - } -} - -// Reliable -{ - GroupAccountDetailsReply Low NotTrusted 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 - { - MoneyData Single - { AgentID LLUUID } - { GroupID LLUUID } - { RequestID LLUUID } - { IntervalDays S32 } - { CurrentInterval S32 } - } -} - -// Reliable -{ - GroupAccountTransactionsReply Low NotTrusted 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 } - } -} - -// GroupElectionInfoRequest -// viewer -> userserver -> dataserver -//reliable -{ - GroupElectionInfoRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } -} - -// GroupElectionInfoReply -// dataserver -> userserver -> viewer -// reliable -{ - GroupElectionInfoReply Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ElectionData Single - { GroupID LLUUID } - { ElectionID LLUUID } - { ElectionType Variable 1 } // string - { StartDateTime Variable 1 } // string - { EndDateTime Variable 1 } // string - { ElectionInitiator LLUUID } - { AlreadyVoted BOOL } - { VotedForCandidate LLUUID } - { VoteCast Variable 1 } // string - { Majority F32 } - { Quorum S32 } - } - { - CandidateData Variable - { AgentID LLUUID } - } -} - -// StartGroupElection -// viewer -> userserver -> dataserver -// reliable -{ - StartGroupElection Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ElectionData Single - { GroupID LLUUID } - { Duration S32 } - { Majority F32 } - { Quorum S32 } - } -} - -// GroupElectionBallot -// viewer -> userserver -> dataserver -// reliable -{ - GroupElectionBallot Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ElectionData Single - { GroupID LLUUID } - { ElectionID LLUUID } - { CandidateID LLUUID } - } -} - -// StartGroupRecall -// viewer -> userserver -> dataserver -// reliable -{ - StartGroupRecall Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - RecallData Single - { GroupID LLUUID } - { Duration S32 } - { RecallID LLUUID } - } -} - -// GroupRecallBallot -// viewer -> userserver -> dataserver -// reliable -{ - GroupRecallBallot Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - RecallData Single - { GroupID LLUUID } - { ElectionID LLUUID } - { VoteCast Variable 1 } // string - } -} - -// GroupActiveProposalsRequest -// viewer -> userserver -> dataserver -//reliable -{ - GroupActiveProposalsRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } -} - -// GroupActiveProposalItemReply -// dataserver -> userserver -> viewer -// reliable -{ - GroupActiveProposalItemReply Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } - { - 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 -> userserver -> dataserver -//reliable -{ - GroupVoteHistoryRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } -} - -// GroupVoteHistoryItemReply -// dataserver -> userserver -> viewer -// reliable -{ - GroupVoteHistoryItemReply Low Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } - { - HistoryItemData Single - { VoteID LLUUID } - { TerseDateID Variable 1 } // string - { StartDateTime Variable 1 } // string - { EndDateTime Variable 1 } // string - { VoteInitiator LLUUID } - { RecallID 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 -> userserver -> dataserver -// reliable -{ - StartGroupProposal Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - ProposalData Single - { GroupID LLUUID } - { Quorum S32 } - { Majority F32 } // F32 - { Duration S32 } // S32, seconds - { ProposalText Variable 1 } // string - } -} - -// GroupProposalBallot -// viewer -> userserver -> dataserver -// reliable -{ - GroupProposalBallot Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - ProposalData Single - { ProposalID LLUUID } - { VoteCast Variable 1 } // string - } -} - -// CallVote -// viewer -> userserver -> dataserver -// reliable -{ - CallVote Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - VoteData Single - { GroupID LLUUID } - { VoteType S32 } - { VoteQuorum S32 } - { VoteTime F32 } // F32, seconds - { VoteText Variable 1 } // string - } -} - - -// Vote -// viewer -> userserver -> dataserver -// reliable -{ - Vote Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - VoteData Single - { VoteID LLUUID } - { Response S32 } // S32, 0 = no, 1 = yes - } -} - -// TallyVotes userserver -> dataserver -// reliable -{ - TallyVotes Low Trusted Unencoded -} - -// GroupMembersRequest -// get the group members -// userserver -> dataserver -// reliable -{ - GroupMembersRequest Low NotTrusted Unencoded - { - RequestData Single - { RequestID LLUUID } - { GroupID LLUUID } - { ActiveOnly BOOL } - } -} - -// GroupMembersReply -// list of uuids for the group members -// dataserver -> userserver -// reliable -{ - GroupMembersReply Low NotTrusted Zerocoded - { - ReplyData Single - { RequestID LLUUID } - { GroupID LLUUID } - } - { - AgentData Variable - { AgentID LLUUID } - } -} - -// GroupOfficersAndMembersRequest -// get the group members -// userserver -> dataserver -// reliable -{ - GroupOfficersAndMembersRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { IncludeMembers BOOL } - } -} - -// GroupOfficersAndMembersReply -// list of uuids for the group officers and members -// dataserver -> userserver -// reliable -{ - GroupOfficersAndMembersReply Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { CompoundMsgID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } - { - OfficerData Variable - { AgentID LLUUID } - { Contribution S32 } - { OnlineStatus Variable 1 } // string - } - { - MemberData Variable - { AgentID LLUUID } - { Contribution S32 } - { OnlineStatus Variable 1 } // string - } -} - -// used to switch an agent's currently active group. -// viewer -> userserver -> dataserver -> AgentDataUpdate... -{ - ActivateGroup Low NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } -} - -// viewer -> userserver -> dataserver -{ - SetGroupContribution Low NotTrusted Unencoded - { - Data Single - { AgentID LLUUID } - { GroupID LLUUID } - { Contribution S32 } - } -} - -// 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 -> userserver -> dataserver -// reliable -{ - AgentWearablesRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } // UUID - } -} - -// AgentWearablesUpdate -// (a.k.a. "Here's what the avatar is wearing now.") -// viewer -> userserver -> dataserver -// dataserver -> userserver -> viewer -// reliable -{ - AgentWearablesUpdate Low NotTrusted Zerocoded - { - AgentData Single - { AgentID 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 - } -} - -// AgentCachedTexture -// viewer queries for cached textures on dataserver (via simulator) -// viewer -> userserver -> dataserver -// dataserver -> userserver -> viewer -// reliable -{ - AgentCachedTexture Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { SerialNum S32 } - } - { - WearableData Variable - { ID LLUUID } - { TextureIndex U8 } - } -} - -// Request an AgentDataUpdate without changing any agent data. -{ - AgentDataUpdateRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID 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 - { GroupIndex S8 } // -1 for none - } - { - GroupData Variable - { GroupID LLUUID } - { GroupOfficer BOOL } // BOOL - { GroupInsigniaID LLUUID } - { Contribution S32 } - { GroupName Variable 1 } // string - } -} - -// 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 -{ - ViewerEffect Medium NotTrusted Zerocoded - { - Effect Variable - { ID LLUUID } // UUID of the effect - { 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 } - } -} - - -{ - RezSingleAttachmentFromInv Low NotTrusted Zerocoded - { - ObjectData Single - { AgentID LLUUID } - { AssetID LLUUID } // asset id in inventory - { ItemID LLUUID } // inventory item id - { AttachmentPt U8 } // 0 for default - { ItemFlags U32 } - { GroupMask U32 } - { EveryoneMask U32 } - { NextOwnerMask U32 } - { Name Variable 1 } - { Description Variable 1 } - } -} - -{ - RezMultipleAttachmentsFromInv Low NotTrusted Zerocoded - { - HeaderData Single - { CompoundMsgID LLUUID } // All messages a single "compound msg" must have the same id - { TotalObjects U8 } - { AgentID LLUUID } - { FirstDetachAll U8 } - } - { - ObjectData Variable // 1 to 4 of these per packet - { AssetID LLUUID } // asset id in inventory - { ItemID LLUUID } // inventory item id - { 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 } - } -} - -{ - UserInfoReply Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - UserData Single - { IMViaEMail BOOL } - { EMail Variable 2 } - } -} - -{ - UpdateUserInfo Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - UserData Single - { IMViaEMail BOOL } - } -} - - -//----------------------------------------------------------------------------- -// 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 } - } -} - - -// viewer -> sim -// initiate upload. primarily used for uploading raw files. -{ - InitiateUpload Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - FileData Single - { BaseFilename Variable 1 } // string - { SourceFilename Variable 1 } // string - } -} - -// 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 } - { Flags U32 } - { EstateID U32 } // filled in on sim - { Godlike BOOL } // filled in on sim - } -} - -// sim -> viewer -{ - MapLayerReply Low NotTrusted 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 } - { 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 } - { Flags U32 } - { EstateID U32 } // filled in on sim - { Godlike BOOL } // filled in on sim - } - { - NameData Single - { Name Variable 1 } // string - } -} - -// sim -> viewer -{ - MapBlockReply Low NotTrusted 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 } - { 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 NotTrusted 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 } - { 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 -{ - MailTaskSimRequest Low NotTrusted 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. -{ - MailTaskSimReply Low NotTrusted Unencoded - { - TargetBlock Single - { TargetIP Variable 1 } // String IP - { TargetPort IPPORT } - } - { - DataBlock Single - { TaskID LLUUID } - } -} - -// ScriptMailRegistration -// Simulator -> dataserver -{ - ScriptMailRegistration Low NotTrusted Unencoded - { - DataBlock Single - { TargetIP Variable 1 } // String IP - { TargetPort IPPORT } - { TaskID LLUUID } - { Flags U32 } - } -} - - -// MailPingBounce -// This is sent to the RPC server when the sim can not be found. -// Not currently used. -// Spaceserver -> RPC server -{ - MailPingBounce Low NotTrusted Unencoded - { - DataBlock Single - { TargetIP IPADDR } - { TargetPort IPPORT } - { TaskID LLUUID } - { Flags U32 } - } -} - - -// ParcelMediaCommandMessage -// Sends a parcel media command -{ - ParcelMediaCommandMessage Low NotTrusted 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 NotTrusted Unencoded - { - DataBlock Single - { MediaURL Variable 1 } // string - { MediaID LLUUID } - { MediaAutoScale U8 } - } -} - -// LandScriptsRequest -// Sent by the viewer to request script information for a parcel -{ - LandScriptsRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - RequestData Single - { RequestFlags U32 } - { ParcelLocalID S32 } - { RelatedID LLUUID } - } -} - -// LandScriptsReply -// Sent by the simulator in response to LandScriptsRequest -{ - LandScriptsReply Low NotTrusted Unencoded - { - RequestData Single - { RequestFlags U32 } - { TotalScriptCount U32 } - { TotalScriptTime F32 } - } - { - Data Variable - { TaskLocalID U32 } - { TaskID LLUUID } - { LocationX F32 } - { LocationY F32 } - { LocationZ F32 } - { ScriptTime F32 } - { ScriptCount S32 } - { TaskName Variable 1 } - { OwnerName Variable 1 } - } -} - -// LandCollidersRequest -// Sent by the viewer to request collider information for a parcel (not yet implemented, still using God request) -{ - LandCollidersRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - RequestData Single - { RequestFlags U32 } - { ParcelLocalID S32 } - { RelatedID LLUUID } - } -} - -// LandCollidersReply -// Sent by the simulator in response to LandCollidersRequest -{ - LandCollidersReply Low NotTrusted Unencoded - { - RequestData Single - { RequestFlags U32 } - { TotalColliderCount U32 } - } - { - Data Variable - { TaskLocalID U32 } - { TaskID LLUUID } - { LocationX F32 } - { LocationY F32 } - { LocationZ F32 } - { Score S32 } - { TaskName Variable 1 } - { OwnerName Variable 1 } - } -} +// Linden Lab development message templates + +version 1.053 + +// 1.053 added EndPointID to DenyTrustedCircuit and CreateTrustedCircuit. PP + +// ************************************************************************* +// 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 } + } +} + +// user->viewer +// AssignCircuitCode - Tells the recipient's messaging system what it's code is +//{ +// AssignCircuitCode Low Trusted Unencoded +// { +// CircuitCode Single +// { Code U32 } +// { SessionID LLUUID } +// } +//} + +// 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 + } +} + +// sim->space +// Tells the spaceserver that the simulator is ready to receive an +// agent with that circuit code. +//{ +// AckAddCircuitCode Low Trusted Unencoded +// { +// CircuitCode Single +// { Code U32 } +// } +//} + +// 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 } + } +} + +// AgentIDReply +// dataserver -> simulator +// reliable +// Message send from spaceserver to simulator +// containing agent id for a given session id +// Also, a list of name value pairs for that agent +// also tacked on a list of agents that have granted you powers +//{ +// AgentIDReply Low Trusted Zerocoded +// { +// ReplyBlock Single +// { RequestID LLUUID } +// { SessionID LLUUID } +// { AgentID LLUUID } +// { StartLocation LLVector3 } // Vector3, region local +// { StartLookAt LLVector3 } // Vector3, normalized +// { GroupID LLUUID } +// { GroupOfficer BOOL } +// { AgentAccess U8 } +// { GodLevel U8 } +// { GroupTitle Variable 1 } // string +// } +// { +// TextureData Variable +// { TextureID LLUUID } +// } +// { +// GranterBlock Variable +// { GranterID LLUUID } +// } +// { +// NameValueBlock Variable +// { NameValue Variable 2 } +// } +// { +// AttachmentBlock Variable +// { AttachmentPoint U8 } +// { ItemID LLUUID } +// { AssetID LLUUID } +// } +//} + +// AvatarTextureUpdate +// simulator -> dataserver +// reliable +{ + AvatarTextureUpdate Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { TexturesChanged BOOL } + } + { + WearableData Variable + { CacheID LLUUID } + { TextureIndex U8 } + } + { + 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 NotTrusted 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 +} + + +// AgentIDRequest +// Request to report agent ID associated with a session id +//{ +// AgentIDRequest Low Trusted Unencoded +// { +// RequestBlock Single +// { RequestID LLUUID } +// { SessionID LLUUID } +// { LocationID U32 } // 0 = last location +// { Godlike BOOL } +// } +//} +// **************************************************************************** +// 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 } + } +} + +// 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 } + { SimName Variable 1 } + { Summary Variable 1 } + { Details Variable 2 } + { VersionString Variable 1 } + } + { + MeanCollision Variable + { Perp LLUUID } + { Time U32 } + { Mag F32 } + { Type U8 } + } +} + +// 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 } + } + { + 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 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { QueryID 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 } + { SpaceIP IPADDR } // check online for right farm + } +} + + +// 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 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Variable + { QueryID LLUUID } + } + { + QueryReplies Variable + { ParcelID LLUUID } + { Name Variable 1 } + { ForSale BOOL } + { Auction BOOL } + { ReservedNewbie BOOL } + { Dwell F32 } + } +} + +// DirPeopleQuery viewer->sim +// ask about people. This gets translated into a DirPeopleQueryTrusted on +// the simulator. +// *NOTE: this message is not in use on the viewer. 2004.07.02 \P/hoenix +{ + DirPeopleQuery Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } + { Name Variable 1 } + { Group Variable 1 } + { Online U8 } + { WantToFlags U32 } + { SkillFlags U32 } + { Reputation Variable 1 } // string representation of "< 1" or "> 6" or "= 99" + { Distance Variable 1 } // string representation of "< 1" or "> 6" or "= 99" + } +} + +// DirPeopleQueryBackend sim->dataserver +// continue query about people whith a space ip address. +{ + DirPeopleQueryBackend Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } + { Name Variable 1 } + { Group Variable 1 } + { Online U8 } + { WantToFlags U32 } + { SkillFlags U32 } + { Reputation Variable 1 } // string representation of "< 1" or "> 6" or "= 99" + { Distance Variable 1 } // string representation of "< 1" or "> 6" or "= 99" + { EstateID U32 } + { Godlike BOOL } + { SpaceIP IPADDR } // used to check online status for the right farm + } +} + +// 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 NotTrusted 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 } + } +} + +// DirGroupsQuery viewer->sim +// reliable +{ + DirGroupsQuery Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } // string + } +} + +// DirGroupsQueryBackend sim->dataserver +// reliable +{ + DirGroupsQueryBackend Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } // string + { EstateID U32 } + { Godlike BOOL } + } +} + + +// DirGroupsReply +// dataserver -> userserver -> viewer +// reliable +{ + DirGroupsReply Low NotTrusted 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 } + } +} + +// 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 } + } +} + +// 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 } + } + { + 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 } + { ForSale BOOL } + { Auction BOOL } + { ReservedNewbie BOOL } + } +} + +// 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 } + { ForSale BOOL } + { Auction BOOL } + { ReservedNewbie BOOL } + { 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 } + } +} + +// **************************************************************************** +// 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 NotTrusted 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 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Info Single + { TeleportFlags U32 } + { Message Variable 1 } // string + } +} + +// DataAgentAccessRequest sim->data +// ask if agent ID can in fact teleport from their current location in +// EstateID to the destination specified by RegionHandle. If allowed, +// the handler will persist the location in user_start_location and +// send back a DataAgentAccessReply. Otherwise, the handler will send back +// a TeleportFailed. +{ + DataAgentAccessRequest Low Trusted Unencoded + { + Info Single + { AgentID LLUUID } + { EstateID U32 } + { RegionHandle U64 } + { LocationID U32 } + { LocationPos LLVector3 } + { LocationLookAt LLVector3 } + } +} + +// DataAgentAccessReply data->sim +// Message to let us know if AgentID is allowed to teleport to RegionHandle. +{ + DataAgentAccessReply Low Trusted Unencoded + { + Info Single + { AgentID LLUUID } + } +} + +// DataHomeLocationRequest sim->data +// Request +{ + DataHomeLocationRequest Low Trusted Zerocoded + { + Info Single + { AgentID LLUUID } + } +} + +// 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 NotTrusted 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 } + { TargetID LLUUID } + { Message Variable 1 } + } +} + +// InitializeLure user->space +// Prepare the spaceserver with destination information for a lure. +{ + InitializeLure Low Trusted Unencoded + { + Info Single + { LureType U8 } + { AgentID LLUUID } + { LureID LLUUID } + { RegionHandle U64 } + { Position LLVector3 } + { LookAt LLVector3 } + } +} + +// 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 NotTrusted Unencoded + { + Info Single + { TeleportFlags U32 } + } +} + +// TeleportFailed somehwere->sim->viewer +// announce failure of teleport request +{ + TeleportFailed Low NotTrusted 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 +// *************************************************************************** + +// RegisterNewAgent - Sent by viewer to simulator to tell the simulator +// that it's connecting. +// HACK -- If SessionID is null, don't bother asking for information +// from the space server. +{ + RegisterNewAgent Low NotTrusted Unencoded + { + HelloBlock Single + { AgentID LLUUID } + { SessionID LLUUID } + { LocationID U32 } // which start location to use + { Godlike BOOL } + } +} + +// viewer->sim +// request a connection to the userserver +//{ +// RequestUserserverConnection Low NotTrusted Unencoded +// { +// AgentInfo Single +// { AgentID LLUUID } +// { SessionID LLUUID } +// } +//} + +// sim->space->userserver +//{ +// UserserverConnectionForAgent Low Trusted Unencoded +// { +// AgentInfo Single +// { AgentID LLUUID } +// { SessionID LLUUID } +// } +//} + +// userserver->space->sim->agent +//{ +// UserserverReadyForAgent Low Trusted Unencoded +// { +// AgentInfo Single +// { AgentID LLUUID } +// { SessionID LLUUID } +// } +// { +// HostInfo Single +// { ServerIP IPADDR } +// { ServerPort IPPORT } +// } +//} + +// Undo +{ + Undo Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + ObjectData Variable + { ObjectID LLUUID } + } +} + + +// Redo +{ + Redo Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + ObjectData Variable + { ObjectID LLUUID } + } +} + +// UndoLand +{ + UndoLand Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } +} + + +// RedoLand +{ + RedoLand Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } +} + +// Transfer energy from agent to an object +{ + TransferEnergy Low NotTrusted Unencoded + { + Data Single + { DestID LLUUID } // destination of the transfer + { Amount S32 } // amount of the transfer + } +} + + +// MovedIntoSimulator - Sent by simulatorA to simulatorB to tell the +// simulator that a viewer is moving from A to B +// sim --> sim +{ + MovedIntoSimulator High Trusted Unencoded + { + Sender Single + { ID LLUUID } + { SessionID LLUUID } + { CircuitCode U32 } + } +} + + +// AgentPause - viewer occasionally will block, inform simulator of this fact +{ + AgentPause Low NotTrusted Unencoded + { + Sender 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 + { + Sender 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 + { ID 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 + { + Sender Single + { ID LLUUID } + { CircuitCode U32 } + { GenCounter U32 } + } + { + Throttle Single + { Throttles Variable 1 } + } +} + + +// AgentFOV - Update to agent's field of view, angle is vertical, single F32 float in radians +{ + AgentFOV Low NotTrusted Unencoded + { + Sender Single + { ID LLUUID } + { CircuitCode U32 } + { GenCounter U32 } + } + { + FOVBlock Single + { 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 + { + Sender Single + { ID LLUUID } + { CircuitCode U32 } + { GenCounter U32 } + } + { + HeightWidthBlock Single + { Height U16 } + { Width U16 } + } +} + + +// AgentSetAppearance - Update to agent appearance +{ + AgentSetAppearance Low NotTrusted Zerocoded + { + Sender Single + { ID 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 + { + Sender Single + { ID LLUUID } + } + { + AnimationList Variable + { AnimID LLUUID } + { StartAnim BOOL } + } +} + +// AgentRequestSit - Try to sit on an object +{ + AgentRequestSit High NotTrusted Zerocoded + { + Sender Single + { ID LLUUID } + } + { + TargetObject Single + { TargetID LLUUID } + { Offset LLVector3 } + } +} + +// AgentSit - Actually sit on object +{ + AgentSit High NotTrusted Unencoded + { + Sender Single + { ID LLUUID } + } +} + +// RefreshViewer - sent by viewer when it has missing geometry, etc., due to dropped packets. + +{ + RefreshViewer Low NotTrusted Unencoded + { + Sender Single + { ID 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 + { + RequestImage Variable + { Image LLUUID } + { DiscardLevel S32 } + { DownloadPriority F32 } + { Packet U32 } + } +} + +// ImageNotInDatabase +// Simulator informs viewer that a requsted image definitely does not exist in the asset database +{ + ImageNotInDatabase Low NotTrusted Unencoded + { + ImageID Single + { ID LLUUID } + } +} + +// SetAlwaysRun +// Lets the viewer choose between running and walking +{ + SetAlwaysRun Low NotTrusted Unencoded + { + Sender Single + { ID 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 } + + { TextureEntry Variable 2 } + + { NameValue Variable 2 } + { State U8 } + } + { + 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 } + } + { + InventoryFile Single + { Filename Variable 1 } + } +} + + +// ObjectDelete +// viewer -> simulator +{ + ObjectDelete Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID 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 } + { 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 } + { 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 } + } + { + 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 } + } + { + 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 } + } + { + 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 } + } + { + 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 } + { 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 } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } + +} + + +// ObjectDeselect +{ + ObjectDeselect Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } + +} + +// ObjectAttach +{ + ObjectAttach Low NotTrusted Zerocoded + { + AgentData Single + { AgentID 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 } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } +} + + +// ObjectDrop -- drops an attachment from your avatar onto the ground +{ + ObjectDrop Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } +} + + +// ObjectLink +{ + ObjectLink Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } +} + +// ObjectDelink +{ + ObjectDelink Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } +} + +// ObjectHinge +{ + ObjectHinge Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + JointType Single + { Type U8 } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } + +} + +// ObjectDehinge +{ + ObjectDehinge Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } + +} + + +// ObjectGrab +{ + ObjectGrab Low NotTrusted Zerocoded + { + Sender Single + { ID 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 } + } + { + ObjectData Single + { ObjectID LLUUID } + { GrabOffsetInitial LLVector3 } // LLVector3 + { GrabPosition LLVector3 } // LLVector3, region local + { TimeSinceLast U32 } + } +} + + +// ObjectDeGrab +{ + ObjectDeGrab Low NotTrusted Unencoded + { + Sender Single + { ID LLUUID } + } + { + ObjectData Single + { LocalID U32 } + } +} + + +// ObjectSpinStart +{ + ObjectSpinStart Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Single + { ObjectID LLUUID } + } +} + + +// ObjectSpinUpdate +{ + ObjectSpinUpdate Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Single + { ObjectID LLUUID } + { Rotation LLQuaternion } + } +} + + +// ObjectSpinStop +{ + ObjectSpinStop Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Single + { ObjectID LLUUID } + } +} + +// Export selected objects +{ + ObjectExportSelected Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { RequestID LLUUID } + { VolumeDetail S16 } + } + { + ObjectData Variable + { ObjectID LLUUID } + } +} + +// Import an object +{ + 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 + { + ModifyBlock Single + { AgentID LLUUID } + { Action U8 } + { BrushSize U8 } + { Seconds F32 } + { Height F32 } + } + { + ParcelData Variable + { LocalID S32 } + { West F32 } + { South F32 } + { East F32 } + { North F32 } + } +} + + +// VelocityInterpolateOn +{ + VelocityInterpolateOn Low NotTrusted Unencoded +} + + +// VelocityInterpolateOff +{ + VelocityInterpolateOff Low NotTrusted Unencoded +} + +// Save State +{ + StateSave Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + DataBlock Single + { Filename Variable 1 } + } +} + + +// ReportAutosaveCrash +{ + 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 } + } +} + +// Load State +// Not in use \P/hoenix - 2004.07.14 +{ + StateLoad Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + DataBlock Single + { Filename Variable 1 } + } +} + +// 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 + { + ObjectData Single + { RequestFlags U32 } + { AgentID LLUUID } + { 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 + { + AgentBlock Single + { AgentID LLUUID } + { PreyID LLUUID } + } +} + + +// Grant agents the ability to modify your stuff. This message is sent +// to the user server, and then passed along to the dataserver for +// persistance. The dataserver will push live updates through +// AddModifyAbility messages to the simulator. +// viewer -> userserver -> dataserver +{ + GrantModification Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GranterName Variable 1 } + } + { + EmpoweredBlock Variable + { EmpoweredID LLUUID } + } +} + +// Revoke the ability to modify your stuff. This message is sent to +// the user server, and then passed along to the dataserver for +// persistance. The dataserver will push live updates through +// RemoveModifyAbility messages to the simulator. +// viewer -> userserver -> dataserver +{ + RevokeModification Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GranterName Variable 1 } + } + { + RevokedBlock Variable + { RevokedID LLUUID } + } +} + +// This message is sent from viewer->userserver, which responds with +// the complete list of all granted agents in the GrantedProxies +// message. +{ + RequestGrantedProxies Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } +} + +// response to the message above +{ + GrantedProxies Low Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ProxyBlock Variable + { EmpoweredID LLUUID } + } +} + +// This message is sent from the dataserver to the simulator to let +// AgentID know that they can modify GranterID's stuff. This message is +// percolated out to child cameras but not the viewer. This message is +// in response to GrantModification messages, request, or login. +// ROUTED dataserver -> userserver -> spaceserver -> simulator +// reliable +{ + AddModifyAbility Low Trusted Zerocoded + { + TargetBlock Single + { TargetIP IPADDR } // U32 encoded IP + { TargetPort IPPORT } + } + { + AgentBlock Single + { AgentID LLUUID } + } + { + GranterBlock Variable + { GranterID LLUUID } + } +} + +// This message is sent from the dataserver to the simulator to let +// AgentID know that they can no longer modify GranterID's stuff. This +// message is percolated out to child cameras but not the viewer. This +// message is in response to RevokeModification messages. +// ROUTED dataserver -> userserver -> spaceserver -> simulator +// reliable +{ + RemoveModifyAbility Low Trusted Unencoded + { + TargetBlock Single + { TargetIP IPADDR } // U32 encoded IP + { TargetPort IPPORT } + } + { + AgentBlock Single + { AgentID LLUUID } + { RevokerID LLUUID } + } +} + +// end viewer to simulator section + +{ + ViewerStats Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { IP IPADDR } + { StartTime U32 } + { RunTime F32 } // F32 + { FPS F32 } // F32 + { 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 + { + Data Single + { AgentID LLUUID } + { TaskID LLUUID } + { ItemID LLUUID } + { Questions S32 } + } +} + + +// complaint/bug-report +// reliable +{ + UserReport Low NotTrusted Zerocoded + { + ReportData Single + { ReportType U8 } // BUG=1, COMPLAINT=2 + { Category U8 } // see sequence.user_report_category + { ReporterID LLUUID } + { Position LLVector3 } // screenshot position, region-local + { CheckFlags U8 } // checkboxflags + { ScreenshotID LLUUID } + { ObjectID LLUUID } + { Summary Variable 1 } + { Details Variable 2 } + { VersionString Variable 1 } + } + { + MeanCollision Variable + { Perp LLUUID } + { Time U32 } + { Mag F32 } + { Type U8 } + } +} + + +// *************************************************************************** +// 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 NotTrusted 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 + { + 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 udpate 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 } + } +} + +{ + 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 } + { 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 } + { AvatarID LLUUID } + } +} + +// AvatarPropertiesRequestBackend +// simulator -> dataserver +// reliable +{ + AvatarPropertiesRequestBackend Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { AvatarID LLUUID } + { GodLevel U8 } + } +} +// 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 + { WantToMask U32 } + { WantToText Variable 1 } // string + { SkillsMask U32 } + { SkillsText Variable 1 } // string + { FLAboutText Variable 1 } // string + { BornOn Variable 1 } // string + { CharterMember Variable 1 } // special - usually U8 + { AllowPublish BOOL } // whether profile is externally visible or not + { MaturePublish BOOL } // profile is "mature" + { Identified BOOL } // whether avatar has provided payment info + { Transacted BOOL } // whether avatar has actively used payment info + } +} + +// 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 + { GroupOfficer BOOL } + { GroupTitle Variable 1 } + { GroupID LLUUID } + { GroupName Variable 1 } + { GroupInsigniaID LLUUID } + } +} + + +// AvatarPropertiesUpdate +// viewer -> simulator +// simulator -> dataserver +// reliable +{ + AvatarPropertiesUpdate Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + PropertiesData Single + { AvatarID LLUUID } + { ImageID LLUUID } + { FLImageID LLUUID } + { AboutText Variable 2 } // string, up to 512 + { FLAboutText Variable 1 } + { WantToMask U32 } + { WantToText Variable 1 } // string + { SkillsMask U32 } + { SkillsText Variable 1 } // string + { AllowPublish BOOL } // whether profile is externally visible or not + { MaturePublish BOOL } // profile is "mature" + } +} + +// 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 } + } + { + 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 } + } + { + 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 } + + } + { + EventData Single + { EventID U32 } + } +} + + +// EventNotificationRemoveRequest +// viewer -> simulator +// simulator -> dataserver +// reliable +{ + EventNotificationRemoveRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID 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 } + } + { + 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 } + } + { + 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 } + } + { + 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 NotTrusted 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 + { + Data Single + { AgentID LLUUID } + { ObjectID LLUUID } + { ChatChannel S32 } + { ButtonIndex S32 } + { ButtonLabel Variable 1 } + } +} + + +// ForceScriptControlRelease +// reliable +{ + ForceScriptControlRelease Low NotTrusted Unencoded + { + Data Single + { ID LLUUID } + } +} + +// RevokePermissions +// reliable +{ + RevokePermissions Low NotTrusted Unencoded + { + Data Single + { AgentID LLUUID } + { 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 } + { Message Variable 1 } + { URL Variable 1 } + } +} + +// ScriptTeleportRequest +// reliable +{ + ScriptTeleportRequest Low NotTrusted 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 + { + ParcelData Single + { AgentID LLUUID } + { SequenceID S32 } + { West F32 } + { South F32 } + { East F32 } + { North F32 } + { SnapSelection BOOL } + } +} + +// ParcelPropertiesRequestByID +// viewer -> sim +// reliable +{ + ParcelPropertiesRequestByID Low NotTrusted Zerocoded + { + ParcelData Single + { AgentID LLUUID } + { 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 } + } +} + +// 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 S32 } + { OtherCleanTime S32 } + } + { + TaskIDs Variable + { TaskID LLUUID } + } + { + OwnerIDs Variable + { OwnerID LLUUID } + } +} + +// 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 S32 } + { OtherCleanTime S32 } + } + { + 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 S32 } + } + { + ReturnIDs Variable + { ReturnID 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 + { + ParcelData Single + { AgentID LLUUID } + { 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 + { + ParcelData Single + { AgentID LLUUID } + { 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 } + { 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 + { + Data Single + { AgentID LLUUID } + { SequenceID S32 } + { Flags U32 } + { LocalID S32 } + } +} + + +// sim -> viewer +// ParcelAccessListReply +{ + ParcelAccessListReply Low NotTrusted 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 } + } + { + 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 } + } +} + +// userserver -> dataserver +// Used to request all parcel sales in the database +//{ +// RequestParcelSales Low Trusted Unencoded +//} + +// dataserver -> userserver -> spaceserver +// response of all (up to max packet size) parcel sales in the database. +// each block in the meassage represents a parcel that a human agreed +// to pay US$. +//{ +// BulkParcelSales Low Trusted Unencoded +// { +// ParcelData Variable +// { RegionHandle U64 } +// { ParcelID LLUUID } +// { BuyerID 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 } + } +} + +// userserver -> dataserver +// Used to request all parcel sales in the database +//{ +// RequestParcelAuctions Low Trusted Unencoded +//} + +// dataserver -> userserver -> spaceserver +// response of all (up to max packet size) parcel sales in the database. +// each block in the meassage represents a parcel that a human agreed +// to pay US$. +//{ +// BulkParcelAuctions Low Trusted Unencoded +// { +// ParcelData Variable +// { RegionHandle U64 } +// { ParcelID LLUUID } +// { WinnerID 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 } + { GroupIndex S8 } // -1 for none + } + { + GroupData Variable + { GroupID LLUUID } + { GroupOfficer BOOL } // 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 GetScriptRunningReply +{ + 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 } + } +} + +// LoginRequestSafe +// Attempt to log into the system with an auth token obtained via a +// secure out of band mechanism (such as a TLS tunnel) +// viewer -> userserver +// unreliable +//{ +// LoginRequestSafe Low NotTrusted Unencoded +// { +// LoginBlock Single +// { AuthToken LLUUID } // session id really +// { ViewerDigest LLUUID } // MD5 of viewer exe +// { LastExecFroze BOOL } +// } +//} + +// LoginReply +// Identifies the session, or sends LLUUID::null if invalid +// userserver -> viewer +//{ +// LoginReply Low Trusted Zerocoded +// { +// UserData Single +// { Firstname Variable 1 } // string, canonical caps +// { Lastname Variable 1 } // string, canonical caps +// { SessionID LLUUID } +// { AgentID LLUUID } +// { ErrorMessage Variable 1 } +// { AgentAccess U8 } +// { GroupOfficer BOOL } +// { GroupTitle Variable 1 } +// { GroupID LLUUID } +// { GroupName Variable 1 } +// { GroupInsigniaID LLUUID } +// { LoginFlags U32 } // bitfield +// { SunTextureID LLUUID } +// { MoonTextureID LLUUID } +// { CloudTextureID LLUUID } +// { TOSAssetID LLUUID } // Null if TOS agreement is current +// { CriticalMessageAssetID LLUUID } // Null if message is current +// { TrialDaysLeft S32 } // Zero if not trial +// { ServerUTCTime U32 } // time_t, unix time format +// } +// { +// StartLocationData Variable +// { LocationID U32 } +// { LocationRegionX U32 } // U32, meters to southwest +// { LocationRegionY U32 } +// { LocationPos LLVector3 } // Vector3, region coords +// { LocationLookAt LLVector3 } // Vector3 +// } +//} + +// DataserverLoginRequestSafe +// userserver -> dataserver +//{ +// DataserverLoginRequestSafe Low Trusted Unencoded +// { +// UserData Single +// { AuthToken LLUUID } // session id really +// { IP IPADDR } +// { Port IPPORT } +// { SpaceIP IPADDR } +// { ViewerDigest LLUUID } +// { LastExecFroze BOOL } +// } +//} + +// DataServerLoginReply +// TimeValid is true if user is allowed to log in at this time +// dataserver -> userserver +// reliable +//{ +// DataServerLoginReply Low Trusted Zerocoded +// { +// UserData Single +// { Firstname Variable 1 } // string +// { Lastname Variable 1 } // string +// { IP IPADDR } // don't think this is valid JC 6/02 +// { Port IPPORT } // don't think this is valid JC 6/02 +// { LoginValid BOOL } +// { TimeValid BOOL } +// { ErrorMessage Variable 1 } // string +// { AgentID LLUUID } +// { SessionID LLUUID } +// { LimitedToEstate U32 } +// { AgentAccess U8 } +// { GroupOfficer BOOL } +// { GroupTitle Variable 1 } +// { GroupID LLUUID } +// { GroupName Variable 1 } +// { GroupInsigniaID LLUUID } +// { LoginFlags U32 } // bitfield +// { SunTextureID LLUUID } +// { MoonTextureID LLUUID } +// { CloudTextureID LLUUID } +// { TOSAssetID LLUUID } // Null if TOS agreement is current +// { CriticalMessageAssetID LLUUID } // Null if message is current +// { TrialDaysLeft S32 } // Zero if not trial +// { ServerUTCTime U32 } // time_t, unix time format +// { SpaceIP IPADDR } +// { ViewerDigest LLUUID } +// { LastExecFroze BOOL } +// } +// { +// StartLocationData Variable +// { LocationID U32 } +// { LocationRegionX U32 } +// { LocationRegionY U32 } +// { LocationPos LLVector3 } // Vector3 +// { LocationLookAt LLVector3 } // Vector3 +// } +//} + +// The user agrees to the current Terms of Service +// or clicks OK on the current critical message +// type 0 = TOS +// type 1 = critical message +// viewer -> userserver -> dataserver +//{ +// TOSAgreement Low NotTrusted Unencoded +// { +// AgentBlock Single +// { AgentID LLUUID } +// { Type S32 } +// } +//} + +// 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 NotTrusted 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 NotTrusted 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) + { NewAssetID LLUUID } + } +} + + + +// LogoutDemand +// Unreliable, because the viewer quits before it has a chance to retransmit. +// viewer -> userserver +// unreliable +{ + LogoutDemand Low NotTrusted Unencoded + { + LogoutBlock Single + { SessionID LLUUID } + } +} + + +//----------------------------------------------------------------------------- +// Viewer to UserServer Messages +//----------------------------------------------------------------------------- + +// ViewerLoginLocationRequest +// viewer -> userserver +// *NOTE: obsolete +{ + ViewerLoginLocationRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + PositionBlock Single + { ViewerRegion U64 } + { ViewerPosition LLVector3 } + } + { + URLBlock Single + { SimName Variable 1 } + { Pos LLVector3 } + } +} + +// ViewerSimLocationRequest +// viewer -> userserver +// *NOTE: obsolete +{ + ViewerSimLocationRequest Low NotTrusted Unencoded + { + PositionBlock Single + { AgentID LLUUID } + { SimName Variable 1 } + } +} + +// RequestLocationGetAccess +// userserver -> dataserver +// *NOTE: obsolete. +{ + RequestLocationGetAccess Low Trusted Unencoded + { + PositionBlock Single + { AgentID LLUUID } + { SessionID LLUUID } + { ViewerIP IPADDR } + { ViewerPort IPPORT } + { ViewerRegion U64 } + { ViewerPosition LLVector3 } + } +} + +// RequestLocationGetAccessReply +// dataserver -> userserver +// *NOTE: obsolete. +{ + RequestLocationGetAccessReply Low Trusted Unencoded + { + PositionBlock Single + { ViewerIP IPADDR } + { ViewerPort IPPORT } + { ViewerRegion U64 } + { ViewerPosition LLVector3 } + { TravelAccess U8 } + } +} + + +// UserListRequest +// Get a list of the current system users +// viewer -> userserver +//*NOTE: obsolete +{ + UserListRequest Low NotTrusted Unencoded +} + + +//----------------------------------------------------------------------------- +// 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 + { + MessageBlock Single + { FromAgentID LLUUID } + { 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 } + } +} + +// Start group IM session. If everyone is 1, then offline users also +// get the messages. +{ + StartGroupIM Low NotTrusted Unencoded + { + SessionBlock Single + { SessionID LLUUID } + { Everyone U8 } + } + { + Participants Variable + { AgentID LLUUID } + } +} + +// drop out from a group instant message +{ + DropGroupIM Low NotTrusted Unencoded + { + SessionBlock Single + { SessionID LLUUID } + { AgentID LLUUID } + } +} + +// Group instant messaging +{ + GroupIM Low NotTrusted Unencoded + { + MessageBlock Single + { SessionID LLUUID } + { FromID LLUUID } + { FromAgentName Variable 1 } + { Message Variable 2 } + } +} + +// RetrieveInstantMessages - used to get instant messages that +// were persisted out to the database while the user was offline +{ + RetrieveInstantMessages Low NotTrusted Unencoded + { + AgentBlock Single + { Agent 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 } + } +} + +// This message is sent viewer->userserver to track if other agents +// come on or off line. +{ + TrackOnlineStatus Low NotTrusted Zerocoded + { + AgentBlock Variable + { AgentID LLUUID } + } +} + +// This message is sent viewer->userserver to ignore logon and logoff +// events for the specified agents. This is typically sent when a +// calling card is deleted or cancelled. +{ + IgnoreOnlineStatus Low NotTrusted Zerocoded + { + AgentBlock Variable + { AgentID LLUUID } + } +} + +// 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 } + } + { + 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 } + } + { + 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 } + } + { + 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 + { + MuteData Single + { AgentID LLUUID } + { MuteCRC U32 } + } +} + +// update/add someone in the mute list +{ + UpdateMuteListEntry Low NotTrusted Unencoded + { + MuteData Single + { AgentID LLUUID } + { MuteID LLUUID } + { MuteName Variable 1 } + { MuteType S32 } + { MuteFlags U32 } + } +} + +// Remove a mute list entry. +{ + RemoveMuteListEntry Low NotTrusted Unencoded + { + MuteData Single + { AgentID LLUUID } + { MuteID LLUUID } + { MuteName Variable 1 } + } +} + + +// viewer -> userserver, gimme inventory +//{ +// InventoryRequest Low NotTrusted Unencoded +// { +// InventoryData Single +// { AgentID LLUUID } +// { CacheCRC U32 } +// } +//} + +// +// Inventory update messages +// +{ + UpdateInventoryItem Low NotTrusted 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 } + } +} + +// When all that has updated is the asset, we can crunch this down. +{ + UpdateInventoryItemAsset Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } + { AssetID LLUUID } + } +} + +{ + MoveInventoryItem Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { Stamp BOOL } // should the server re-timestamp? + } + { + InventoryData Variable + { ItemID LLUUID } + { FolderID LLUUID } + } +} + +// copy inventory item by item id to specified destination folder, +// send out bulk inventory update when done. +// currently only sim->data, but it is general enough to be +// a viewer request. +{ + CopyInventoryItem Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Variable + { OldItemID LLUUID } + { NewFolderID LLUUID } + } +} + +{ + RemoveInventoryItem Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } + } +} + +{ + ChangeInventoryItemFlags Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } + { Flags U32 } + } +} + + +{ + SaveAssetIntoInventory Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Single + { ItemID LLUUID } + { NewAssetID LLUUID } + } +} + +{ + CreateInventoryFolder Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + FolderData Single + { FolderID LLUUID } + { ParentID LLUUID } + { Type S8 } + { Name Variable 1 } + } +} + +{ + UpdateInventoryFolder Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } + { ParentID LLUUID } + { Type S8 } + { Name Variable 1 } + } +} + +{ + MoveInventoryFolder Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { Stamp BOOL } // should the server re-timestamp children + } + { + InventoryData Variable + { FolderID LLUUID } + { ParentID LLUUID } + } +} + +{ + RemoveInventoryFolder Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } + } +} + +// Get inventory segment. +{ + FetchInventoryDescendents Low NotTrusted Zerocoded + { + AgentData Single + { AgentID 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 NotTrusted 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 } + } + { + InventoryData Variable + { OwnerID LLUUID } + { ItemID LLUUID } + } +} + +// response to fetch inventory +{ + FetchInventoryReply Low NotTrusted 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. +{ + 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 } + { 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 } + } + { + 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 } + { GroupID 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 + { AssetID 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 } + { GroupID LLUUID } + } + { + InventoryData Single + { LocalID U32 } + { ItemID LLUUID } + } +} + +{ + MoveTaskInventory Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID 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 + { + AgentBlock Single + { AgentID LLUUID } + { SessionID LLUUID } + { 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 } + { 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 + { AssetID LLUUID } + { Type S8 } + { InvType S8 } + { Flags U32 } + { SaleType U8 } + { SalePrice S32 } + { Name Variable 1 } + { Description Variable 1 } + { CreationDate S32 } + { CRC U32 } + } +} + +// if declined, the destid agent from the GiveInventory message +// responds with this message to the userserver +{ + DeclineInventory Low NotTrusted Unencoded + { + InfoBlock Single + { TransactionID LLUUID } + } +} + +// userserver -> 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 -> userserver +// 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 + { + AgentBlock Single + { SourceID LLUUID } + { FolderID LLUUID } // source ID's calling card folder + { DestID LLUUID } + { TransactionID LLUUID } + } +} + +{ + AcceptFriendship Low NotTrusted Unencoded + { + TransactionBlock Single + { TransactionID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } // place to put calling card. + } +} + +{ + DeclineFriendship Low NotTrusted Unencoded + { + TransactionBlock Single + { TransactionID LLUUID } + } +} + + +//{ +// AddCallingCard Low NotTrusted Unencoded +// { +// CardBlock Variable +// { SourceUUID LLUUID } +// { DestUUID LLUUID } +// { Name Variable 1 } +// } +//} + +{ + 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 + { + AgentBlock Single + { SourceID LLUUID } + { DestID LLUUID } + { TransactionID LLUUID } + } +} + +{ + AcceptCallingCard Low NotTrusted Unencoded + { + TransactionBlock Single + { TransactionID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } // place to put calling card. + } +} + +{ + DeclineCallingCard Low NotTrusted Unencoded + { + 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 + { AssetID 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 + { FolderID LLUUID } + { NextOwnerMask U32 } + { Type S8 } + { InvType S8 } + { 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 } + } +} + +//{ +// RegionIDRequest Low NotTrusted Unencoded +// { +// RequestBlock Single +// { RegionHandle U64 } +// } +//} + +{ + 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 + { + MoneyData Single + { TransactionID LLUUID } + { AgentID 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 + { + MoneyData Single + { AgentID LLUUID } + { 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 + { + MoneyData Single + { AgentID LLUUID } + { 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 + { + MoneyData Single + { AgentID LLUUID } + { 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 } + { 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 } + { 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 } + } +} + +// possible alternate to InventoryUpdate - tells viewer to load cached inventory +//{ +// UseCachedInventory Low Trusted Unencoded +// { +// InventoryData Single +// { AgentID LLUUID } +// } +//} + +// 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 } + } +} + + +// UserLoginLocationReply +// userserver -> viewer +{ + UserLoginLocationReply Low Trusted Zerocoded + { + AgentData Single + { SessionID LLUUID } + { Message Variable 1 } + } + { + RegionInfo Single + { LocationValid BOOL } + { GridsPerEdge U32 } + { MetersPerGrid F32 } + { Handle U64 } + { UsecSinceStart U64 } + { SecPerDay U32 } + { SecPerYear U32 } + { SunDirection LLVector3 } + { SunAngVelocity LLVector3 } + } + { + SimulatorBlock Single + { IP IPADDR } + { Port IPPORT } + } + { + URLBlock Single + { LocationID U32 } + { LocationLookAt LLVector3 } + } +} + +// UserSimLocationReply +// userserver -> viewer +{ + UserSimLocationReply Low Trusted Unencoded + { + SimulatorBlock Single + { AccessOK U8 } + { SimName Variable 1 } + { SimHandle U64 } + } +} + +// UserListReply +// Return a list of users on the system +{ + UserListReply Low Trusted Unencoded + { + UserBlock Variable + { FirstName Variable 1 } + { LastName Variable 1 } + { Status U8 } + } +} + +// 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 + { + StartLocationData Single + { AgentID LLUUID } + { 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 } + } +} + + + +// UserLoginLocationRequest +// userserver -> spaceserver +{ + UserLoginLocationRequest Low Trusted Zerocoded + { + UserBlock Single + { SessionID LLUUID } + { TravelAccess U8 } + { FirstLogin BOOL } + { LimitedToEstate U32 } + } + { + PositionBlock Single + { ViewerRegion U64 } + { ViewerPosition LLVector3 } + } + { + URLBlock Single + { SimName Variable 1 } + { Pos LLVector3 } + } +} + +// SpaceLoginLocationReply +// spaceserver -> userserver +// not reliable +{ + SpaceLoginLocationReply Low Trusted Zerocoded + { + UserBlock Single + { SessionID LLUUID } + { LocationID U32 } + { LocationPos LLVector3 } + { LocationLookAt LLVector3 } + } + { + SimulatorBlock Single + { IP IPADDR } + { Port IPPORT } + { CircuitCode U32 } + { Name Variable 1 } + { SimAccess U8 } + } + { + RegionInfo Single + { GridsPerEdge U32 } + { MetersPerGrid F32 } + { Handle U64 } + { UsecSinceStart U64 } + { SecPerDay U32 } + { SecPerYear U32 } + { SunDirection LLVector3 } + { SunAngVelocity 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 } + } +} + +// *************************************************************************** +// Simulator to QuerySim +// *************************************************************************** + +// SimulatorPauseState - what parts of the sim are paused + +{ + SimulatorPauseState Low NotTrusted Unencoded + { + PauseBlock Single + { SimPaused U32 } + { LayersPaused U32 } + { TasksPaused U32 } + } +} + +// SimulatorThrottleSettings - what are the current throttle settings? + +{ + SimulatorThrottleSettings Low NotTrusted Unencoded + { + Sender Single + { ID LLUUID } + } + { + Throttle Single + { Throttles Variable 1 } + } +} + +// *************************************************************************** +// 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 +{ + UpdateAttachment Low NotTrusted 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 + { UUID LLUUID } + { Type S8 } + { Tempfile 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 + { GroupID LLUUID } + { Name Variable 1 } // string + { Charter Variable 2 } // string + { ShowInList U8 } + { ShowMembersInGroupDir U8 } + { RequireMask U32 } // U32 mask + { ReputationMin S32 } + { ReputationMax S32 } + { MoneyMin S32 } + { MoneyMax S32 } + { OfficerTitle Variable 1 } // string + { MemberTitle Variable 1 } // string +// { OfficerMax U8 } +// { MemberMax U8 } + { PowersMask U32 } // U32 mask + { InsigniaID LLUUID } + { InviteOfficers Variable 2 } // string + { InviteMembers Variable 2 } // string + { MembershipFee S32 } // S32 + { OpenEnrollment BOOL } // BOOL (U8) + { AllowPublish BOOL } // whether profile is externally visible or not + { MaturePublish BOOL } // profile is "mature" + } +} + +// CreateGroupReply +// dataserver -> userserver +// userserver -> viewer +// reliable +{ + CreateGroupReply Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ReplyData Single + { GroupID LLUUID } + { Result S32 } + { 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 } + { ShowMembersInGroupDir BOOL } + { OfficerTitle Variable 1 } // string + { MemberTitle Variable 1 } // string +// { OfficerMax U8 } +// { MemberMax U8 } + { InsigniaID LLUUID } + { MembershipFee S32 } + { OpenEnrollment BOOL } + { InviteOfficers Variable 2 } // string + { InviteMembers Variable 2 } // string + { AllowPublish BOOL } + { MaturePublish BOOL } + } +} + +{ + GroupInfoUpdated Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } +} + +// JoinGroupRequest +// viewer -> simulator -> dataserver +// reliable +{ + JoinGroupRequest Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// JoinGroupReply +// dataserver -> userserver -> viewer +{ + JoinGroupReply Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { Success BOOL } + } +} + +// EjectGroupMemberRequest +// viewer -> userserver -> dataserver +// reliable +{ + EjectGroupMemberRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { AgentID LLUUID } + } +} + +// This message is sent from the dataserver to the simulator to let +// AgentID know that they are no longer a member of the group. This +// message is in response to EjectGroupMemberRequest messages. +// ROUTED dataserver -> userserver -> spaceserver -> simulator +// reliable +{ + RemoveMemberFromGroup Low Trusted Unencoded + { + TargetBlock Single + { TargetIP IPADDR } // U32 encoded IP + { TargetPort IPPORT } + } + { + AgentBlock Single + { AgentID LLUUID } + } + { + GroupBlock Single + { GroupID LLUUID } + } +} + + +// LeaveGroupRequest +// viewer -> userserver -> dataserver +// reliable +{ + LeaveGroupRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// InviteGroupResponse +// simulator -> dataserver +// reliable +{ + InviteGroupResponse Low Trusted Unencoded + { + InviteData Single + { AgentID LLUUID } + { InviteeID LLUUID } + { GroupID LLUUID } + { Officer BOOL } + { MembershipFee S32 } + } +} + +// GroupPropertiesRequest +// viewer-> userserver -> dataserver +// reliable +{ + GroupPropertiesRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupPropertiesReply +// viewer -> userserver -> dataserver +// reliable +{ + GroupPropertiesReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { Name Variable 1 } // string + { Charter Variable 2 } // string + { ShowInList U8 } + { ShowMembersInGroupDir U8 } + { RequireMask U32 } // U32 mask + { ReputationMin S32 } + { ReputationMax S32 } + { MoneyMin S32 } + { MoneyMax S32 } + { OfficerTitle Variable 1 } // string + { MemberTitle Variable 1 } // string +// { OfficerMax U8 } +// { MemberMax U8 } + { PowersMask U32 } // U32 mask + { InsigniaID LLUUID } + { FounderID LLUUID } + { MembershipFee S32 } // S32 + { OpenEnrollment BOOL } // BOOL (U8) + { Money S32 } + { CurrentElectionID LLUUID } + { GroupMembershipCount S32 } + { AllowPublish BOOL } + { MaturePublish BOOL } + } +} + +// GroupProfileRequest +// viewer-> userserver -> dataserver +// reliable +{ + GroupProfileRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupProfileReply +// dataserver -> userserver -> viewer +// reliable +{ + GroupProfileReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { Name Variable 1 } // string + { Charter Variable 2 } // string + { ShowInList U8 } + { ShowMembersInGroupDir U8 } + { OfficerTitle Variable 1 } // string + { MemberTitle Variable 1 } // string + { InsigniaID LLUUID } + { FounderID LLUUID } + { FounderName Variable 1 } + { MembershipFee S32 } + { OpenEnrollment BOOL } + } +} + +// GroupMoneyHistoryRequest +// viewer-> userserver -> dataserver +// reliable +{ + GroupMoneyHistoryRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupMoneyHistoryReply +// dataserver -> userserver -> viewer +// reliable +{ + GroupMoneyHistoryReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + GroupData Single + { IntervalDays S32 } + { CurrentInterval S32 } + { CurrentTaxes S32 } + { CurrentDividend S32 } + { EstimatedTaxes S32 } + { EstimatedDividend S32 } + { NumberNonExemptMembers S32 } + } +} + + +// CurrentInterval = 0 => this period (week, day, etc.) +// CurrentInterval = 1 => last period +// viewer -> userserver -> dataserver +// reliable +{ + GroupAccountSummaryRequest Low NotTrusted Zerocoded + { + MoneyData Single + { AgentID LLUUID } + { GroupID LLUUID } + { RequestID LLUUID } + { IntervalDays S32 } + { CurrentInterval S32 } + } +} + + +// dataserver -> userserver -> viewer +// Reliable +{ + GroupAccountSummaryReply Low NotTrusted 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 + { + MoneyData Single + { AgentID LLUUID } + { GroupID LLUUID } + { RequestID LLUUID } + { IntervalDays S32 } + { CurrentInterval S32 } + } +} + +// Reliable +{ + GroupAccountDetailsReply Low NotTrusted 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 + { + MoneyData Single + { AgentID LLUUID } + { GroupID LLUUID } + { RequestID LLUUID } + { IntervalDays S32 } + { CurrentInterval S32 } + } +} + +// Reliable +{ + GroupAccountTransactionsReply Low NotTrusted 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 } + } +} + +// GroupElectionInfoRequest +// viewer -> userserver -> dataserver +//reliable +{ + GroupElectionInfoRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupElectionInfoReply +// dataserver -> userserver -> viewer +// reliable +{ + GroupElectionInfoReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ElectionData Single + { GroupID LLUUID } + { ElectionID LLUUID } + { ElectionType Variable 1 } // string + { StartDateTime Variable 1 } // string + { EndDateTime Variable 1 } // string + { ElectionInitiator LLUUID } + { AlreadyVoted BOOL } + { VotedForCandidate LLUUID } + { VoteCast Variable 1 } // string + { Majority F32 } + { Quorum S32 } + } + { + CandidateData Variable + { AgentID LLUUID } + } +} + +// StartGroupElection +// viewer -> userserver -> dataserver +// reliable +{ + StartGroupElection Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ElectionData Single + { GroupID LLUUID } + { Duration S32 } + { Majority F32 } + { Quorum S32 } + } +} + +// GroupElectionBallot +// viewer -> userserver -> dataserver +// reliable +{ + GroupElectionBallot Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ElectionData Single + { GroupID LLUUID } + { ElectionID LLUUID } + { CandidateID LLUUID } + } +} + +// StartGroupRecall +// viewer -> userserver -> dataserver +// reliable +{ + StartGroupRecall Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + RecallData Single + { GroupID LLUUID } + { Duration S32 } + { RecallID LLUUID } + } +} + +// GroupRecallBallot +// viewer -> userserver -> dataserver +// reliable +{ + GroupRecallBallot Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + RecallData Single + { GroupID LLUUID } + { ElectionID LLUUID } + { VoteCast Variable 1 } // string + } +} + +// GroupActiveProposalsRequest +// viewer -> userserver -> dataserver +//reliable +{ + GroupActiveProposalsRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupActiveProposalItemReply +// dataserver -> userserver -> viewer +// reliable +{ + GroupActiveProposalItemReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + 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 -> userserver -> dataserver +//reliable +{ + GroupVoteHistoryRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupVoteHistoryItemReply +// dataserver -> userserver -> viewer +// reliable +{ + GroupVoteHistoryItemReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + HistoryItemData Single + { VoteID LLUUID } + { TerseDateID Variable 1 } // string + { StartDateTime Variable 1 } // string + { EndDateTime Variable 1 } // string + { VoteInitiator LLUUID } + { RecallID 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 -> userserver -> dataserver +// reliable +{ + StartGroupProposal Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ProposalData Single + { GroupID LLUUID } + { Quorum S32 } + { Majority F32 } // F32 + { Duration S32 } // S32, seconds + { ProposalText Variable 1 } // string + } +} + +// GroupProposalBallot +// viewer -> userserver -> dataserver +// reliable +{ + GroupProposalBallot Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ProposalData Single + { ProposalID LLUUID } + { VoteCast Variable 1 } // string + } +} + +// CallVote +// viewer -> userserver -> dataserver +// reliable +{ + CallVote Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + VoteData Single + { GroupID LLUUID } + { VoteType S32 } + { VoteQuorum S32 } + { VoteTime F32 } // F32, seconds + { VoteText Variable 1 } // string + } +} + + +// Vote +// viewer -> userserver -> dataserver +// reliable +{ + Vote Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + VoteData Single + { VoteID LLUUID } + { Response S32 } // S32, 0 = no, 1 = yes + } +} + +// TallyVotes userserver -> dataserver +// reliable +{ + TallyVotes Low Trusted Unencoded +} + +// GroupMembersRequest +// get the group members +// userserver -> dataserver +// reliable +{ + GroupMembersRequest Low NotTrusted Unencoded + { + RequestData Single + { RequestID LLUUID } + { GroupID LLUUID } + { ActiveOnly BOOL } + } +} + +// GroupMembersReply +// list of uuids for the group members +// dataserver -> userserver +// reliable +{ + GroupMembersReply Low NotTrusted Zerocoded + { + ReplyData Single + { RequestID LLUUID } + { GroupID LLUUID } + } + { + AgentData Variable + { AgentID LLUUID } + } +} + +// GroupOfficersAndMembersRequest +// get the group members +// userserver -> dataserver +// reliable +{ + GroupOfficersAndMembersRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { IncludeMembers BOOL } + } +} + +// GroupOfficersAndMembersReply +// list of uuids for the group officers and members +// dataserver -> userserver +// reliable +{ + GroupOfficersAndMembersReply Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { CompoundMsgID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } + { + OfficerData Variable + { AgentID LLUUID } + { Contribution S32 } + { OnlineStatus Variable 1 } // string + } + { + MemberData Variable + { AgentID LLUUID } + { Contribution S32 } + { OnlineStatus Variable 1 } // string + } +} + +// used to switch an agent's currently active group. +// viewer -> userserver -> dataserver -> AgentDataUpdate... +{ + ActivateGroup Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } +} + +// viewer -> userserver -> dataserver +{ + SetGroupContribution Low NotTrusted Unencoded + { + Data Single + { AgentID LLUUID } + { GroupID LLUUID } + { Contribution S32 } + } +} + +// 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 -> userserver -> dataserver +// reliable +{ + AgentWearablesRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } // UUID + } +} + +// AgentWearablesUpdate +// (a.k.a. "Here's what the avatar is wearing now.") +// viewer -> userserver -> dataserver +// dataserver -> userserver -> viewer +// reliable +{ + AgentWearablesUpdate Low NotTrusted Zerocoded + { + AgentData Single + { AgentID 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 + } +} + +// AgentCachedTexture +// viewer queries for cached textures on dataserver (via simulator) +// viewer -> userserver -> dataserver +// dataserver -> userserver -> viewer +// reliable +{ + AgentCachedTexture Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { SerialNum S32 } + } + { + WearableData Variable + { ID LLUUID } + { TextureIndex U8 } + } +} + +// Request an AgentDataUpdate without changing any agent data. +{ + AgentDataUpdateRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID 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 + { GroupIndex S8 } // -1 for none + } + { + GroupData Variable + { GroupID LLUUID } + { GroupOfficer BOOL } // BOOL + { GroupInsigniaID LLUUID } + { Contribution S32 } + { GroupName Variable 1 } // string + } +} + +// 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 +{ + ViewerEffect Medium NotTrusted Zerocoded + { + Effect Variable + { ID LLUUID } // UUID of the effect + { 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 } + } +} + + +{ + RezSingleAttachmentFromInv Low NotTrusted Zerocoded + { + ObjectData Single + { AgentID LLUUID } + { AssetID LLUUID } // asset id in inventory + { ItemID LLUUID } // inventory item id + { AttachmentPt U8 } // 0 for default + { ItemFlags U32 } + { GroupMask U32 } + { EveryoneMask U32 } + { NextOwnerMask U32 } + { Name Variable 1 } + { Description Variable 1 } + } +} + +{ + RezMultipleAttachmentsFromInv Low NotTrusted Zerocoded + { + HeaderData Single + { CompoundMsgID LLUUID } // All messages a single "compound msg" must have the same id + { TotalObjects U8 } + { AgentID LLUUID } + { FirstDetachAll U8 } + } + { + ObjectData Variable // 1 to 4 of these per packet + { AssetID LLUUID } // asset id in inventory + { ItemID LLUUID } // inventory item id + { 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 } + } +} + +{ + UserInfoReply Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + UserData Single + { IMViaEMail BOOL } + { EMail Variable 2 } + } +} + +{ + UpdateUserInfo Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + UserData Single + { IMViaEMail BOOL } + } +} + + +//----------------------------------------------------------------------------- +// 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 } + } +} + + +// viewer -> sim +// initiate upload. primarily used for uploading raw files. +{ + InitiateUpload Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + FileData Single + { BaseFilename Variable 1 } // string + { SourceFilename Variable 1 } // string + } +} + +// 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 } + { Flags U32 } + { EstateID U32 } // filled in on sim + { Godlike BOOL } // filled in on sim + } +} + +// sim -> viewer +{ + MapLayerReply Low NotTrusted 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 } + { 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 } + { Flags U32 } + { EstateID U32 } // filled in on sim + { Godlike BOOL } // filled in on sim + } + { + NameData Single + { Name Variable 1 } // string + } +} + +// sim -> viewer +{ + MapBlockReply Low NotTrusted 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 } + { 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 NotTrusted 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 } + { 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 +{ + MailTaskSimRequest Low NotTrusted 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. +{ + MailTaskSimReply Low NotTrusted Unencoded + { + TargetBlock Single + { TargetIP Variable 1 } // String IP + { TargetPort IPPORT } + } + { + DataBlock Single + { TaskID LLUUID } + } +} + +// ScriptMailRegistration +// Simulator -> dataserver +{ + ScriptMailRegistration Low NotTrusted Unencoded + { + DataBlock Single + { TargetIP Variable 1 } // String IP + { TargetPort IPPORT } + { TaskID LLUUID } + { Flags U32 } + } +} + + +// MailPingBounce +// This is sent to the RPC server when the sim can not be found. +// Not currently used. +// Spaceserver -> RPC server +{ + MailPingBounce Low NotTrusted Unencoded + { + DataBlock Single + { TargetIP IPADDR } + { TargetPort IPPORT } + { TaskID LLUUID } + { Flags U32 } + } +} + + +// ParcelMediaCommandMessage +// Sends a parcel media command +{ + ParcelMediaCommandMessage Low NotTrusted 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 NotTrusted Unencoded + { + DataBlock Single + { MediaURL Variable 1 } // string + { MediaID LLUUID } + { MediaAutoScale U8 } + } +} + +// LandScriptsRequest +// Sent by the viewer to request script information for a parcel +{ + LandScriptsRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + RequestData Single + { RequestFlags U32 } + { ParcelLocalID S32 } + { RelatedID LLUUID } + } +} + +// LandScriptsReply +// Sent by the simulator in response to LandScriptsRequest +{ + LandScriptsReply Low NotTrusted Unencoded + { + RequestData Single + { RequestFlags U32 } + { TotalScriptCount U32 } + { TotalScriptTime F32 } + } + { + Data Variable + { TaskLocalID U32 } + { TaskID LLUUID } + { LocationX F32 } + { LocationY F32 } + { LocationZ F32 } + { ScriptTime F32 } + { ScriptCount S32 } + { TaskName Variable 1 } + { OwnerName Variable 1 } + } +} + +// LandCollidersRequest +// Sent by the viewer to request collider information for a parcel (not yet implemented, still using God request) +{ + LandCollidersRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + RequestData Single + { RequestFlags U32 } + { ParcelLocalID S32 } + { RelatedID LLUUID } + } +} + +// LandCollidersReply +// Sent by the simulator in response to LandCollidersRequest +{ + LandCollidersReply Low NotTrusted Unencoded + { + RequestData Single + { RequestFlags U32 } + { TotalColliderCount U32 } + } + { + Data Variable + { TaskLocalID U32 } + { TaskID LLUUID } + { LocationX F32 } + { LocationY F32 } + { LocationZ F32 } + { Score S32 } + { TaskName Variable 1 } + { OwnerName Variable 1 } + } +} diff --git a/applications/SLIRC/bin/Release/Meebey.SmartIrc4net.dll b/applications/SLIRC/bin/Release/Meebey.SmartIrc4net.dll deleted file mode 100644 index 66285b5ef0b348ada1369c9e1335476ae822ca06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94208 zcmeFa33yf2**3iPT6>=j0}13X1dmAw2|)ot1q4M!MMXuWii!#rJ!yhU4WXcj zXhG3ZMATL(RqBWnwT@^}siLB#h>EDltJtDN1xxGn-_Ntw-e;dF`d-)fzW?`MzlST& zUiUMvVXwXR$T6oa7D@1$k%A0xy#ONl?v z`S(aS+Iym)SDqC>5|$7#%{^m+DNn{$h$!=mbl$|E{P}kqp5U> zZpe}AG9FvsZv-}i&wC?EW>_+tzF*aAPcz>h8PV+;J)0zbCE zk1gI!e#MQpSZ-8hE4;LH zz^yIYx(E?zDQO^y=rJ=@Pd9ujFVEO2 zQSG*;>L8|+vv|`^R`G7sak#RPQ5TmdMIYC`v;*Ud#sWrIasXiT+0yR7_{;D?BAvf` zokzBlUg9Px0=236lIx7RGBZ_=VrS?vliEEk&dr%|+&nXMuh+U6{9onZ|2hZ%#vJ@x zbMSwggMYi``}ZY`a#MHIf`2kziVnoyqeW@^2X;}TkA~FxDt?6!0rZzE^ZUnMoKxSG z`Sr1D=G1p(etitKocgZJuaCO1zMof?g;$=1SK-C#mr-}}E1eE2WAHK9ony;Q&d|^*F?VFhw>BE;+N%IxU z;;UB{UT@DoyrtEfe84}MQJZSjv^bbaGWxS`7G6yj9(pmucE2pVcoyFNS$H^_WcaJg z!mH21>u-2coRQHER7bP}Rg2nzszPIn(w7B+4oX=T1Uo2ASrF==)MP=pgVK=&kq$~h z7UXqMSXq$Yp+lv$V*`XV2l~h40K>~RCP^PTX_Yj)#w@;?I`KvN@TFDKd=1RvtGN?j zqz_+OCC%5MEWQrN!aLCOpE)MU2mF&6^@UbVi!(Tj&mmcOLk&-g%sAu&amb9~Xw|eh z2W9a&EDLYA;bn_MJ`jh@D2`T5i*s-mpNC}O9cp;l;*bx-Av21jRny{($l`Nk7Tzes z%NB=xAP$*P9Icub=ddh3M`z)UF}!SX$Oqz(8O716X>ktE;`4|sys?ItEe`oW95SOg zS~V@sky(5mm4$b-;bn_MJ`jh@D2`T5i!&~Z&ttOijy1e&amWYakQv3%s)(Zm4w?Lu zvi)30RUF6C$P5ff*+CdO|+fq#ukw*+DqnkJe#7Id#rY`oXf$>L8r%N9(Yk zoH|p}{18s}qji#gvgu4q^Fuh@kJd^0$)(SdC)Gj#p zq_)6@s*eo~9Bj_e8|n&K-Lr$58eHl@*@~H|C0+%O9aKXZn~1U3L6tB?%F|rUXs2-9 z7mmdEZ0kWe^aM#%gGd%t#@>KQ+Yk&(N@mJvN@7KdJ!Ebj+JjDfpstH6p?K`;kaWWDYg?WOEi)umlHi8 zi_v2`JrR$UdO(YC)+7j zz1b#)P$KOVf>^Xo3}qIjNi0tHAYz$4t4ycRPJ2}SAjw@((O4(jY1h*Aj$;{$>V+vA zcN(VMH~tNhuNzn8^*mbe`+L4S52_WR%3xwR{F{qtI{M+MsIc~G{~ zk(rvEw!UVUx|a%*y;RJ_jD|H6So;OW4{d#ZbPiHrzvG{(FRly8vbY0p{Y*l;Yh@`j z5(lHDN*h0eQOY&PvbY6x)LDwKTNkBWxc);fzbvk_t}X5ZFM#&rOUn^eUso5bj+kDi zmZdfPeAA2)LpM3>*1Ex zjxx~J9c`WH3ZetnS4f`ksNH#TOYY{h-k?4kV(Md8He-t6ehakKahIuhh#Id}PvJJt zxQP*zNLM7H5+hOM@sVt+@_2w61wLs`!%jyFnW(Ab(RvS3tvLN|iI0MH;xG`iUyVj_ zTYf)u8STTRk!?L?`+3yYs2y#kYOA8!m4cMjmewK)t(WMDwmx+tANy3=xK?66661#% z@dS9lj7S^3=FvOewbKSz7!=H}<(w~rKKeLnCn^vq5-3}Qy~--KqjqU^>{hVHAkRGR z>3kdq4hO0}sJS{=wmd%+KLV&rxY&t0Wz9iMLv+a9*3fTTU9fa{e(Qm#_BIi!DaL?^ z2I6C(TpWl7nBRajbj{Itx?atq{Ai&tQd8p&cn`6uIlr_mLXam>DfI&?bipW9SF z?DpD+5as1UAxRuvlE2h7$VEs}Ul+!)i+{djcn3+nTNcw<730PcbD)WSk4hX%ix9Q# zNK~ioD3Fc|$)ufVB~N9TPg+Nz?kfUivYlKcK0>-H0_I2-z#wJr$KdM2S)hCCBsSo~ zTH7!)!7tYmv|(8RHoqaOYhH;)c$NClXjxX{+#UgC%MS%Pv(A4f09GDKdGFpKbf!llUyc` zz}%mhGWb_lD&yUdvutN2TJP%FmvMq8wRgP!Bb{9RC&YgHx&0?ZeSNb3h7J4g^q(!_ zrl(C#G!yj4K5k%gxtth*@xv1;9}skB`?U1RIbDm#f=^2?qSLi_sQ9$>dOBT;N0LuV zFRjzHc%a2g(aQD1WxR~GgJis%w)HYzLEFAE-kr8p*#~542ammWq7?%QFey_BlQM1i zID$hI@1L@rhJ0z$WM5YLyiphNirX3LFw)6I={^mf{_Q*z4~20tLT zbQ>=>ih$F}A$|sLW2`LRWN+iyz#D=L7 zwm}@qCl6ctNo70b@k;W>{1d=~EUFTVa7c>;s=GCm2CBr(Qfr-blyi zYxxiKm8O@~*NPwLD@`w}ue*MruQWZ^mlDOvc6boJxTS2pTr;$dzYg&SIFx4RCw3(B+xhDEFhsfPM>5we zy?&2$Vn?zRJAeJwK$xq3By$bZ>-Wb_>`0c&?$J){NS4d)u}`0chvy;!Z;rJB)6NH`ZgCsY`w11}TzmI>9Ey;7)KKVViB+q60^!M13+_P25`6#{? z0_B@;e9u|2OdF-{H}Pj+lxvKW%tWHO-yiGQPGXTPYpg$a5{qOhvHbhRItX*^7bJ5H zQ*(R{l3eXUvaC5i4?(W>AekE~tvz1oBo@iC##-M=ERv?50t9~TQTEEvJ$W=d*xoM`2yT5i4i)2}2ZR#Wz z$#TT{TPLwdmNnMqPGXTPN31tGiAA!kv9@#)i)1OW{Nwmd2y=}QlDUS|&wjhNIbN)sJMZ zS$h4pcVb7f6gz+YK7cS+{Yd5-rq^#rCw3(B+xhDEUl8T0AIV&^jJfE;PU4ZwHKaU! z@jmJ#9?4v@jClUD;8dSBpZB?j8FSyq@Y>njM{;AF-ll(tC|6&QEEzMUj(0pFo(aZX|OJ)8c*FNj#FdX6gIGKRdA_ zS&E%M&)pE_%9CWSVS3+v)`=a-{C2+a`8hDR%z)?SU{?{Yd5- zrq^$8Cw3%D+NGTfd}Yo8~Xwo1$KI|y>M3CY}0 z$kD%M#$#2UKR+KIeaXs~K7LA{CKL#g%ryo`<{D;+!Kyrz>O!;dDP*hyCQ#xijepcUWWx;dDP* zhyCQ#S(WsIyFjvoaJnC@!+vt={2}QFin4=nx*x5>esb#EmGl!LKZMi$XdU*GQ|Ioa zA6!Y19fZ^UXdU*GQ|F$fAKZbF9fZ^UXdU*GQ|I2KpAzyzINgudVLv%_?o0Z?tRp)J zr~A=5>?fzr{YgJq5y}q2>3*~h`^l-ZI_U>9lk6az?nmpepPV`mB>iA+ksXB7{b(Kb zlT+uxq#s-rmK}uC{b(KblT+uRq#xW_lO2T9{b(KblT+v6q#xXYlO2T9{b(KblT+uB zq@V8Ohj6+dt;2qD>a0on=|+ACr~A=5>?fzrACrDc$q(UlKU#8FhR5Ki}_ zb=Xf%oj)c0@cc|T-H+B`KRI3+0M(oZ&>C(`^7PWPjA zl76!3Jel<4P&*S&_oH>#Pfneul76@i38(wfI>~&p={%k0hj6+dt&{YVO=oSIAHwN= zv`*4bHl1hE{18s}qji#gvgtgV^uujPINgudVLv%_{+#r~?Myh`kJd@%lTBw`njgaH zezZ=~Pd1(B()dnul$IMi{ z1=;kNnW}enHa%vh>U9`Bf8Azh;mys$`$ZPsoGiS{v+%CX!uzG+*#b}R={DuZmpdp) z^QjWb%@ip-9^j*hhC@l3BE^J|dIXy*^@iFLZ^~fZ-*J`ZP|HD14TH@!Njc>L&O+L3 z9F2*FU!I8{PqvGaYE+Hv-(a~er(`in;-BG}A9^JD44nJx7l7Wt=?rnsBu)&0;_n;I zWRLR!pYrfIELINu!xOWdxANYD2#OI#X4m6U>$703AG}t0@=?YQXM6-!Yg=4F5i zyl9$kLOoZ9mk&;aeKuKvQ(s-+7zf?xZF}xu8K<-x+-FBJ7;P~qi4)m>Qf?MohWirqR+)+@Iya} zne-#uX@@W|C8^VU7gL~zl|5eiAZg+hB$Sv4!fz2qO7YrKl7A}rUFs^riPI=;a*-bh z)|73|3nc&oE5eD>A?W|^wvzD0V{qnAZ$i`u@gBq^u<_QaerI)mQFE-s9(3h>l0n* z4U2GVS2SVb45%09gwb=8TF1`i+j_$hJVgQcw)s_&FFPutkJ?4xu$e z(Qt85w5a>3V`vPc;k-ZE&#_A8_lamre>BGs-<6TRDJQojKc{|Rj4=Yr_tGUZ7>86N>&aw43<8Z?Im1&w+7$@nPJ`9ZT|(jQNe z{J!%c@KMO)m<|Yu$>_nnx{_exEE+DdoenmE#MuD-f{Amm>Az!JG{~bgKU5zG=^<+B zOjmhh_1+Xk>G7`;*PwAAGI7YIiBsst33QJS#S~{ke4HhOP9=feE@JkFd{MbyW-Pvz zYjgicXJ3y{Dse7VC6G7|o1qtBR|zD}N3kq16*MsoBrnKs72#bKIzEOLB3Bu|0D^AK zs=B&1)FmAI4(T_J3zwbB4-#(&O8*PT-T`;mXCUF&SD;!ICp;qkZ^-Mcghzv+gwryC z_VxadEx*)tk&j1m!k9n2zn>Z&@zejX9}4;l$M6mbVn~z^!`}$zQ5&2(CJ*Hh{%A*` zzY6^IHh-9#Q_6(vVl+FK*H-7(R)=dVYO4!stGm=zM{29{YOABQ)y1`;*kX7dm=}tj zf`E;xx@Rp~Z}tu8olsAWI{Q~y*ga}zFUeq^*&4&N!?RLrUn<2xwq^EWO|f0y7`62~ zUzkDJtf3MGn$Q}$qCn;i*mKzh`nI&Tx}tXWuQNib>Z;n=OEcL2gPC-ztuC*fePc#Q zRb5#-dsznie=w7>+UoALvv0}>DbYF0Gr7>cIfJXJi)v@zl7(GZJNwoQwnP_BPTRi(FOV|fJ1s~NVw9_2gHXUj;t@RjSrTl(f{6c2H zYfG7*fmK~gxt}osj0!&k%j%Zye#TTVD*cRBFsl5F*S~W zg`ZKO0tK{TfKzUx0;PDpjkHe(a7!Q{<%nHXwqde?RNW-zCc^0LV z6ZpfyMGSeC1@sw!#zXv5FOD%hrH5mB>J5@I{-`ck;)&V5KbrpQ5NRg7G)xJ{9-!^H zbr&GPODNN`P`H!|)CM!DKyC1IDo`6-Mg?kvb}CRCTucRO0}K+~2EU*JwZSYZP`7nZ zf!bg$3i>US>YjMJR>kLlfi<=iG2}%*@J%}s^3!M_kQ>tI-88z zshHvVd2)Rm$dFUnGj-+AV^Pdi#c3w`(5S=x&At8o^_+1KQYcH@3HP#nwW%y^GctOS zGQ$3a%Hq*ux3cxA;j+}2Bb1s54^XwQBJ*}CW(0YKg5b-uVz`I z3VO2rK~qE8W(0qof}ai&8oC2x%-5YdNS4Z#8ov)wz3wNYb}DAL-b}8sehdt`21>d5 zaI^_of)SJlWt^{`jp5l(kI(jdO!BnNi0~LiI0qy&biZWs1xZgW@Fd&sr9|--5E7+g zh8rA!c|8yq@;>dMIrb;Kxy%Q5xX1o-1Ux4SIW$r;?KbpwvUf^ZFa&GRoX+r}1$GuD zX9?QxL-pqy-kDK-$%WZ<#|P{8GlJ@3dj9sWkIw!a$o z=+~7-pSGlb73mK!`T-$P6RZIc?@H3w^H`n?#7_pS$L9gCaIk}VwCQ#mx&|q_3V3&# zk0s$?+X@)u*9C)Z@EE}P-F0LbO3*YagYn-{^1(Rv1lr(jaykeGTuhg$@&Re$?Go^S!4}k=hS7?UC@E!dFNV7Tq~kQLi?VH9z$hhm5ihqS+N z9_@F)tRCM(psiHFK-;gVIfij_@VWk_s2r{dq_u}iP-{|#+$^Y_ZWi8k^k~}872+_> zRp&_ohkSg^?0iZ&5I+x_ezJWP<RdZ* z;Pzyj{DIOyztEP_Xv2IFNT4&&B*-Bop2Vms=NuLxcy-l?Cy-iWZ`F2eIu#E3T{748k7SZI@)zihtZ152>MAl2cF5&8Kr;ed(1E?Q=p!?6*PQ)MT zBdAP&XcfGV+>R>SL;r}fF8WU)AbpagIF~f7(!*Enp1Rt&P)bS|b8S~r^VU)G%Jyf# zt3O9?(|kTlqOsaj7KhjmNJFYnio9D1-VY2uB-Q01Izl8cO5A z>`tLz;s#`4<~+UD;Q7zYuHoWPX>oW64U{M@+%7K;NPLcmrc~PT0s&sO;v+t`o(tK5 z0YMx9X=20%$>LKN;L|ySo-Yh=mCRJ%jD;Po4HI`z)6_(5URBbul2?|-R0G!({wrPo z5x;)|o>CZd1I`Pgp=+ldI`F&izLV{bQbS`}pe;`e_d}m{b+4T+A)zuQ>S zmMyVo1QJ+~@Eq$1+KtE#i*P#7mM_II%(8hZ?2uz{jK;6 zv|%2FiQ@u-dsf%A86UL5>WlXU+WLo~IrA$aoyUz1ZT&j3{ZB?hTfc;^T{~ioTL(Q{ zhno`$J!VbL-Emc+KW<#?*PnB&>d*?Kpm2t&zpusBj$oHt|=iqS|k4|^BZ zz6YbfOAi?ZUTK%oV!IT3m-%>Baeg$vx~{Q1XpO!YjO8bP{et)nJ?f6Zc0@x6baumm zb%&O9!6A`vy5!d#P)2@Sv|qAVRfan~o}eIER8cHSLcDCkeG(kp=?t|v6b<$-3+W{k z*gRK&r}y+w|MPJtMK6y+rUhxQaYpz z&mJoj=5tz1N{&7o(hIeMXox2eOfPpLUEH^tSezHli$<{9-}Ei*_IH}0L0jH=m%?r0 zP!NnaTO8nx3)*!n@IgmC)cUw11N+oka)DzIZBzFgx{p^V)}rrlj7g3Ga@BpgS!Gqy zDvLN(%e&}853FKzsps-yM;{T(&22SY+|Z)xu$eZ{1?FB`kWbMtKjVfQ#!)H8hrU5w zjDb^7HvtQz0)0g!8jV)h>LJsB3hs|Ta7Hxr1U*9YgWyU0)s?|dUDq;@E@j2xx=>kh zq)wHg6$^0If*WJeE(7l{tM&WHM(;60S5Vnp-zYAWSQhI6Qxq*6Iv=tqZW7T_J6agx zWp=bMocIl6^c5Y0qJUSc^4?v6n9>7}pjjTY5+jTT{~VfF~15HTms4^!v$mF=`e|3`5ifhA);-TRB?g)w@uAPOYfX*}rr ze-lOCIho&~v*`JRW zzVG9f@zWj{hkD6IzV+N`i^EawksMQIR37M#%Km0=!!5941g8II1_$-0DLB%iZQ4Mk zv5t9)f3p4eMv=CuiljFMT0IfF?P59<1rwKGldm5g;MuCOsZyiTO1?WB($}Zyv^Y{% zV?;iEa}(LGM(3dP)CB6T1U@Xuzt)LZ(DrP*6n^GhkIY&ZB=HS|Z%N``5q>aUT?QfOyU~}&rjlIgx4f74)J#Dwj^Fo`0FITnQ&jn^M4EBQAvC&;q#LC zH-zUU@ox#=lf<_H>%R9t7xg@IQ=gxDAq#JP7T#a7@LtTqdnpTVLl)l4S$MBx;k}xL zw=oOvHN$fR_9i-A!6llm=z2WWM%AYO$Aa8rt1lhnQ;GP>WPq<5cTf=eA1=r-{SO!9 z4FCTOwGF;4Pt8H!mZv75CwHjY^#5c~RSSakz3KnTpekaU#Wz=!u7@9^hoz7u9e*Y5 zl8#M!^EbWOOqu$pLyfLGiZ;HPShq!NonT+N%|Nl2elFt4gFp`sB#kcdx zHOACdc4yOn#H9Vv;hKK3okSV!!pxNRHpN2ii(zze5rD84G^G!hMK~ z#(ln47p)sGKjA?YR1$Ua@wfQ-`a8J}`l3odM1@b9?tlV)(v&`AN@ol!0u_Z;{4zLN zf$x{@W@)9pA`oxazHRRtT&@2h-}*EoK8vLKJRdUy|5^h9l6S}D5ZnmMA}`M-_vIcZ zd9qH_mlzV!)FA3vsJAaSw$03q_UZ2FKFA;L(7|7x_Q!U?WX`^vhWvn> zNGDrPY@690IDTi=i+yD3dTl$J@<^|r5(D8YwSP%5t$*=Z?C$J(MIhO;y6>{)LM{TC zu?|73UTJNq$5mdiw3Xuq%K|HcW?Tg;)QX^q8${fo9#L81>b{7u3th)RvM-cKiEDH- z;!0m!PNP0|_XnTud0BK@{kp#Wg8Auv>GL%wi!Zv+nJw<(EV{Sk zh|By=;@*|T*P0x@nBR%7by$!}18pnr?TuvR=zPz?k+;soGw*D0I^!e*cvT^4x-}C47 z(N-3<;%Q0!QP^6|aCLq44M4^7kz*{8PPYDH+w`2%`pZ4`Bz1kq9$y|MKOhg%@$yiD zF7ME>xzbyEk%HUyX6?mougl5ff)WS8HvL$u{m`+N{bV`TvLD}ZHe3I9oWzvWqSxx=4}FUN;-@YkpE zy)`=xMKfMnNypnSd_K4S09(@WY<;=o224iZ?DYHdwd0q>Paki}d(ger4tv*%=+p~c zj&nZ$wVrL>d0hcy^z;57UM)(~e>bMaen*{n6mA>gk^_Ep&VET#LsP?`=7Ds+Mn{F|p!=o?(Fa{WkxQ_-P)PCAjF3n&7w&k-jbIU3udKM1iCPWz0SPFF|xhe*~bJ=TQ7 z67WA(Gu=O+=*QykDE#5cWHC?)ak4E0#(;PPe-Zrk#vhr~(3>wJjPX-;x=tYALV)V8_hcNoYpizvzHRy0gQAVpJj)Fq+7yo4AJ2d5lVNjh=dJ2BYrcdPbKs zsuD{WUC*eexRKHAjACLrqx%{45x-&d1fvFV7o!&$HHv!~ZDTZ0tY-8Hqe0>!Mp987 z2IF}P%B7IeLE>>nJsBM=o@P|bXapX3BF!O;4ihgh8q4T#@e-rc7#%5IWi*Y^IPq6T zmjOBAIPnHPiB=?VGm7Wbe0&J4Nc@UXLPRZ!@LOoE7agLK(cM6sfIesR2#_P57gtEq zT*v5jv6#^YppbZ5tYGvOP`=nIelIQDirmGT?}$}ELhJzwi*2~cOekz?)J>7kYM?HV zRWNE|^scBxhDG8mps09H^kBO-pl(3bjAk+V$e=43ePYn{j0!Ah#)`yhpbE_I8a)qG zV%=o*VcA}0mK7r{eOs{jI z;QX4Uw>aHUzLU#qoN|<3VEUd@h4RcG`I#G>3VKcOLeRyay~OLGX=u|ALnQ4MCOVSo z1x&ToHC(=q>8~^RTIX-!Tj9sA?=SE5S@n!il)g;sm^LvT7NM+?xmn^c=8R+Mgb3A6 zXL1H}u41}`sg9-F!5{ZcpH$oa`v-7zP5plU&vGjAs0HFo2j@|{jn1RmO7_6E}(O#j7vC!hF5`Q$Uk<*t8%l{Pg-TeQ6M!OIl!L*&}LrnizbU4Q0+eJr%eq3}MsGrj%N>R$0)-oN; z^hl;BGM&csGNy}}-p%wGrdyfzFQGQkBVjO?N0yN1aa=x`>13uCmQd}kV7i>?9VN6E zJjUf0m~LkJ59WWyWvAOwHtN`oG<$WUHmn1UiqpCsYe&TeOfP0Sm+7@kZ)18N)2Eoe z#B>YO519Uw>3^6yrR1%MX(gy7`jt|vPAokE<(Z|EK<_F&5A*OXlbI<{;c z=+v@nK^K%Q16@_N0`!%#dqDqDwg$AId@X3a{6)~Q<(oh+D&GdWynH9uTfA7T1QB}sc% z5&smX3z)Cfxcmi|?Os>GHqvV$=;OV}Po@Vw9`rn* z=Li36(6cx7cySQ+*}|PM-5D(^r`Ojp_SLKLm9( z=l5!d=0E!oeX2LnFS#uGwtG6?^}fnEdCp@!h^~zhE$Kt_Ip)90^hKuoG5<=Y&xA=Q zzc10QOuqSvE)U}9 zPl4ms^!dIE5%(pge`UIr=?8VW5WBN0ubC_Ps z^cJRfGJTNgQ%qlG`XX6HK3H`Wn-BnU=86kGcFA)9;u@_M=z_1c`R#awXFmrj1NT zFg=#(TfIs1EG}QbbSHBz=JFh-72M{(65&V5WDW%?}Bmzlo7^i$UV zFD`!_AgkS6{)(xJ6Q_*n{!E86J&EZBOy@HFHPcm0*D!s7>6=VHX8IM=(EjAJifNqb zP^M#<{)A~8)A>wqWx9sx2BzDXe#Z1$rd?~vXARRKOvf=jhv_V)H!%GJ)2Eoe$n+hi zpE7moI5(yPm>$OT6sA*|UdHq$ruQ>_n&~@CKVcfEU+5Hzwn1IQ_!zCyt|;H_#4y|J zV>CbXrBj2m^ZZ^Un;-g)QOuxVAO_hWg9-!tW2HQS(G{TzMpKP!e?|+8tclSrMs_Hp zCyeYUMjMUn^gsiA?l5Rdpay84K^Gyq68Us_0h!GVG~<5>j~O&SFc@f%K}%rgh_MFU z3Oh$kGU$%LaGb5S81xvUc?P{47zx>GgWd}qf$M4O7*Q*=0PQidn}Ri1pNIPBTz(&% z2^2Hv0Y-xidMr2#vatsJ8M26&WYDXSMMR51Z$p+R78vwla4yg-27QirdE#M%zGAe& zASXn!9R?LJ`r4pMMkRf9p8Z12(5yG8Idl~e{gjxG`rYiI=f(2S?eyIomOXDh5n5&b zR|qAZx7LRqGT%mV?Mhrt*!>A-^hvw5=6|Jg?W&AS$Lry0!tN!0g@tmVc&}qk?|Pwl zH7R!eTp8@%G0&ZAyB+4M0d73HUy`if0H57I`N?WG-oNI_vKwKLuHQ&khCIux!(4>=Ra;{`M0Q7}*wNKBjsUwlYn+Q<*KE<%w`86t7^LIj zx}KK7?ojI_7s2ib>l6=ByweTRc9UEg>`t`Ka1rcIw$ma%He!XsMv>3+Y_!lOk7ksYpd zGt%+q7)0axch==DLcF`Jc^)FW1qNxmt6drF{%HNuMX-C?TI3v;wbVmox7;8d?`Bs9yLYWyT?D(2EL^(*nMTK z@({(lC&lhwR|dPFyx&EzE0hm-i0tUvZnA!BTp8>t<)bcwT_5?Fhsf?JgLIxxyE51f zkk7aXc7x@gJw$ddq}bsBPyA4K*c~QcbP?>1mK!`oc6dM(Ker$7m?$H%J4NClK#gE` zhWwj{$nH%s+RTbuLKn%m#6(6k>(2n1VPtzTo4zd;c(S?jZL!kG`h;u5JK|BF>>aVm z$c}~VU9r-Ga{e2%YTURKFv?X z6obg;r(&k3xkP>{Zt-b;CRY12KNIT=l93wmnb_jl-7P;8_I}hcI+wko+#ovs?G^O~ z(eZDu7-0|{|MrRr2GQ|vub65O9aHy;Sq9OOd9PS(5FLy6ij@Y@F?_Fh)F3);?iCvh zqT}XX@g5^;iAUsKF)pt2q`F(yWP^T+8d=s1Mx?m}SM!#+nvmJnJqA6%Xsu7vwssg9 z^+V9wXArG|f>!?i6i@pMT8)f!D@Cl)22m~%Yob9PAVS2N?%CZfBi1sXU4eCv&#u5) zYmmyT5e3#JpB>&Wtkt!p%(`0m5FdW?Llm#86*q|Nx>~~-QJ#0puGUnaU8yz8XIE-1 zHi$-YskPE)S88qa*>$&e`0Tn{`+RoYE!^J0Psi(S4Pm6)rKdH{Aj-3+HQ6AF*VCHe zv+HTy=CkWXAd1(|YBY%A^|MAZ(s}l?T6}i3 z);ynGt+mW&S8Ltlv#YhX0L2jR^8AlvgY~sR*8>f(V*R!3{`@awqcz%~r-7QRsRr%J z|5gsP78>*oP_wn#pdMYmm4mEJ2K5Izz}jcfc%TEVDlDfc`V^qS)(C^H0UBaWG3ZvH zq1FO}o&!3_y2qfmfreQdfpEt#w5Q8VG2ANQMcKSiq+k}%L`L&Nv4R?LurmCoq#4*-7MsvmUh5gmB)@WWv&lRsB`f=7wgSHh81gaWJxy%*23J+4pTay{h z5A7~GQJrYf8-v)#P}_+>w`nB)Q&gxXSoORZpN}V^2u)x#S2&FH3tZZ6g4HsNy|CR$ z*4GA+-APtoUc_s=ldQD{?PS@WgUN2L*c+WGPO_#SqEVnLq0pfk^<=ctpe9BmMrhfQ zjNW53U!2-?3gWf!i2w_6bwJi)<@0IDe9_T$k!rIV4Z5;xjk?$x z@1dBu)N1k2JT=o==AlKZ-Fm{HtKqZ5+To!^YK|2et+T!kvdgVTgO(!RmDU7=vH;Dwceon;q!WHhlduaB^JNj47)!LF{ThwfF6SZh5rPpz@G zdT5dQleN!7&#T9+k|T8VOsVUwxaH9t#KY&r2cG8_0aR`IcuJWHmdd3Z610< zy=Xn*q4(9x))o&vq+Yf5c<3qhx>Yn*N8j3Yr`lvSdgybt#Tw_Kf2+5x=^nD}cdZ2; z%D1;$t2|U@e`u}qP__NBwZlVo_9vD;iJmWZbRA^xwyKWQ(RXw$RG(RcJX8ZT-a|3* zg*DxvU9j6@E$~pG+H2kBp&FnkJQNfEvbK0=p4w;a@z5gml~r_kel5skh z?#1&|sciJnB2^*Bd1$Aql+!)*xvG{645~rA-g2df3RNHZgokQ?wsLCia(;4H^u)S~<%@g{n?2@lXxWY7fOkf4RY+Lt)n-cY3H$ z4Uqh(6lS7Bi)(=6N9VHhS^b^Dz zCs%qXCXSVBJ+x9CC%1a&UUj_O=b?G(1X(g(NB;>%nruKP;#`>itOq36|aRGwLLyOdNa;HJhqu*bU_Q^W>^XT{WvdTj>Ktntf6EDgM2E78!m*jMVwlJD!(7TLo zG3f8e>?QfAhhpMoxyeKG)GKnghZd>VWd12Sm%n3_|5es|=yUak9Ba@XWc`+$;-NzI zww&dm8lYt!iivmR!v=kWT(-%L9*T+g`&xQ4;3o>_p_(!=vDCfsjTu) z3||T!Vo=|bdFnGc!9$DG9@(N1pJjb1=K*0~3pJO1E5DSh3>ppeFS)^>GfPjl_sQJ` zT>$iNS#p}TyRvk${U15Rprt@x$w>x1SbBl|wVY$nQ$XLyl?H8v=C^XaLH`8$PVO=& zzifsrRMF`=LK%>y1{u`9Y&PCdo@mfeAf;v*bX?g2+g7(3bQ+MO))|y2yTJ~qod#V7 z6jb@RK|poCuIv^&q#6xc4ir`s40@pK4m+Y|8uS!Up1Q@LO=YX?e6`k~Z9rYr4uifZ zd(19Sp`Yjo-vJe>dV`9~*V#pCyg^k!Q8mM$0p+jQUDYy!4gxAxPZ)H3`4+oGy=TxF zK;4v$+Zt4dpO$FP+did6H|)~8VuA+J#5f~ik?nywZ)+G zfcmJf4O&nUclxT>WF7A&pc*yWpvNjE+x^s3gI)sKPc1ZPH&9%yHpuBd+1_7mGN=it zR_!zBNT51Zb(W5BF;Kl4VbC=|{nZqM9_&8QX;2FcdLC$iy2qeTpxLN48e~;Ywwu%* zgBpMas`9gSgt0))YPdnOfCj0_2HgmBfSPB}I-mp9Dudnt8mu-L^i}0RXNcNuP?xHK z&QMiyj*ie+HQ7E$4KZjG&@eU0pmTwSt2qW;3UshqY0xsDL)3bMRskKVb^!_W^y5`C z#R#Quip>vgs+t8-)FGYuLB z*kXo-;A7NQgJ!X8w?S7kvd`6dF743_&2ocQ zvaH^q=1>Dkay@M~gFA&HO28(zT$0>MXU)pe{WR zQs<~A45F)4=PG-;*6h)R8>Di zqt>4N)igEHpt(JrPKtEHf+O_7ZK&`5N zmPT&_wW%iz`Uq%-8quL;UjSXK@_(U`tezn+QHu>K0=iV~HmC>COf_+?*4!WH=W4M* zgMltn6E4@X!+_e=DuX5g%~D$pN&t1JL04$aIY6`3LW6z<^b0laN-et+XpUNJ(33!O z)y%83>@}dv)mnqz2f9LSGU!X7d1{A2;n)m$r5dt8+w}sPuO=H*4|J8<$msg=F|pas z0`=b2q&Yv-t=IKHdkpH)s|L@7hpy2wx+k?jRT)J0q!y?~gXo^r0yWwox@)pPO*E(< zdzo&~z+P8DHpigDShmEV6Iiy&p!0g&h+Lj9DADUypp6<~Z~Pt5)L&9&bdTXL&JAiE zqxm7qbBWqw(DS`wK)Vd0tbeWelRT*HtC0O#l`JGL^FvgJrFhIrqck4EhSPo7BSw(LJ~2YP~^$-guipZ8eDQ zz}>8N8x-w57|33vGo$BNZc%d>QQc!eD~)Ww-usJN)jBN;H8a}cX|_PN$7r70dnTUi z4_&K$w)UO{RK;j6&vmz{Mn+4;jlExUZc~#Dy0iCY=XN#IptD1pofT@aLHG22+xeZ^ zWY7b>w>x*JJqE1-TBS;^qj*cjQ$TmAK?XespZBP79@^>Lt6Ds?-MLRK_Ry!!YPH^= z7h(6Hde1{UorjdYSVwpf5gt~3J@losMvXVXl_(bcxbb;QEf74J7lk^ogUikyr#sjboA}0?dvLL&`xM> zQiD9S+1aGVd1$-yH#Oa$PoepSn&Y9(&Kqi(LGuc?J6qJF9{R?4OYJl03)sD*@|Wo7 zU!afPQGE^iH)Pusf65%A;NOsKQ{#>7JILNuQ#`cUc~{Lc$nMiO@Sa-iq0P>FYL$n! zJMXLY26gGP-T6T6G^hl2|E0e6&}QeqRLQS(W+i=gIv=Vb9@_4Fq$YakOXp)X&!7r; z`G;EOq0P=e)M^jybatst9@_4FqV{;`OXr^|wp7PEAh_B2ObzkScIR_7(V#Jq?NKcr z+V1RCiw&yo^NsT_wb7vcP{04E-3C1q?i=`8**EG4&xAKSU#lt)#RK1{u?98t+3b9$ zCVOb7BkXw|+U{8PN)P1+l)cfQL9lb|ogUih1nm4}I^H1U612y9=u0PTFZR$kPM*Ed zLw2CRuDVIv4TD|O9&XSGL@2f=cxby*V$U#W3}mJDLJw_s%Itd#ItsE1d!0e!(MR3w zEgstJbhmdKbP{Bhw!K_OpTwx#pvjEt4Vns{mG)>4ZFj2dDIWU9>1nSt=<7h=Krj1I z4{dgO*&7W?z)Np?r$Ltj^|8gxI{Kv;b$#u=2F-!2#vbmWolZY{vO!lOv;FKD9@^~e zXD>A98nj^CzK4-MhS%EUUzsNxT|`d;4OI0;Mo$_x1R6XM(n)hhpL|dy|KjhDY1Ge0GQ1 z_N|l|-804gV!PZ!F)`Mz_t4Vtk@jdtI^NOtBu`eTjWGK4N-d%NYyGExfR6ULK0|X8IJS5b)DiE32E-1~p!ftdBt8cXi@l%`@fB#E zum;e#FG8Sh4&)i%UGZ^xpsYlVkE8SKpTW^tHRs?D|8MfC#oVlPMD727hu`^e@P9|z zvynz!EvO~(nv&&Wlr7<>di)G!K9zO5x%<&inV+0tEO7^OH2nr;Dda%v+L{r8;Md=*FV)=H{t0(IYTf&MnPVi)z$Pnz~aNZ{0Gd ziEB;!n%jEme7(Msf~?%QwBphni`!pv`@2%=5zYBNsjiW~1rB0c&7rc}CWrZ=Yb)Yd zLhB#llO{Q??GN!!Gm@LX_OItC?aePua$Ntp+FWb;rAdx!JIz)l#jg zJ)aDHx9`&VuAfZJWF|_GhtzyBedqbxKTV}kS0srpUqq56C*T<(a-qB_b z>9~E70d{rBfeYTB*zkzRqBY2ve!i>kubZN@K=tnWT>5^^7}m z$jbGvJ?!;ysO+}P59!U$b+nXL;BG{{8rSXSZ}}wW`>xyk@2ppUjPgIx0x4$!%`_@# z&c_)6%9fxrKFMc!O3*6Q<`t>K>&#rzOunC^N3tajVgE$+s@~=68J=b#eMGaw>#XTN zzsObAn&Sq!`-_g^`X@flvO#eRm36e{|7~;w=ee2l%sk_!_6hPz9^WQ|PFT>|AR<2G z8d1ARK_345`>eh~tJ~jy4OaJsJ|EHLI7dmImH5v-{AUxXW%8`o817mn{p`T)aXkWc zCh04D*ETsq+_S=ydCce)iX}&|d5KDM%+mby)vR8- z`q!)aXzpKa`pb$}wyuu$nHe#C9hj}fw3W_Zmor;FmyT|8eT_xy5S4<~RPHe-xq@;z z+P}YLk}Dj&s`0O6+;Vc2qE`s6H@&(@t_}Qrcb$-wx*Y0pY0i?;kM(*b;I0Ss+TdTj zk0g)p{-d_P>>jCgYb1}w{+!)%`jHghiQ@V5Y##a9XRZHp*JJGisE;(&*G!1wE6E(4 zR=l{{!#e+ONdF>sJF~=VpfS9^PxO7JA2a=o>A#s;7D>ZQqf9G6XNg`+_XjOhO-zSE z|M%gcqF2NH;gKj8sxZ?dMMJ|H@P{`%9zIfxYIr(aq50Oa1D+2bX`Kvuymjt?*Fk>@ zN`4B}&&8z!c7(6z^7Zifckr(m@L6~+I5%UST{z%h;c3>b1HJ)WGawK-%i1`gOJth0 zeL!jCXV#Yksv~nP*+}om=YgJTl{J3j5FHq~i8HAX2Q&_g%%yvicnj|2#zP}FS@i{n zM|z2=jkEAy|K8Ym49a&l4#wA19%DMMa3VNc8Yf4lA&2uKKV$kAYfodLdW~r>LFKE3 z)0BujAm~}8Q?06|W_;mdKc-DhkE0f&ny!jmFOF_n7@>T&JFi(MHpRqi)~QW}c%$*+ zreA~K-gHakYU|3T+fn{y6Ylk+g>M#DBjTFK)#6F$UoD<*ngvSla$YUofbCzbhYD-J zd8cW%v%j#KUx973d2_^)HO+kkr&w?@K}dUL3l+`K(9RLpGN6^Tm9twP@1{CT98 z{6q8O;a>8Q=9ze_=f!5q=dI>I-l^7(<~-21nv3#Aikq7Urk#bbi@p;F~QTQ;!O=3s$#60{byU?Uwz7XYanm>~m3J2MFH~pA#|AZv+u@-petpiCDnHOmgbz3tlx%;-9-6pJ6z>y(E)5gCH5?N2)K3B-JXLl!=t6Zq z=wdY;bcy;I=rVN)=xwaCl66+G&ONNNnspv!=@Tqn%hGi$UC+`D>|vvt13#P8m7rVH zHK1G7b)fI5C7?UhO`to~Z$Njc-+}H{t3datdqMZ92SLA9e*_iw6QH*J3~0!H9yH&6 z3AD)G2wGzQ4Yb^T3$)697c^$?0PSmk3>vpT1+BNg0ByAQf#Q8T(BU?J)xHPx zJ^KOB9rhZ~o%Z9PyX>`~yY1&d_t-Cj?z3M7{o39HDx5b#ZD$*3$oT*?-`NRTP7!FM(+zZx(;ak(Qw=)Y=?gl-*&lSY(*Qcw zX$BqV3;`YQ91J?a83j7gIRbQ&GY)jJb3Eu2=VZ{S&gr1joynjr&bgp7oC`o_ItkEO z&J55w&d)*TIkQ0*I9Gr!bQXXvb{2syac%%z=G+K+i*pO;ZO-kWE1f$)S2=fs-s7wW zUF|#q`mpmD=%dclpiemKK-W5d0bS?30=nM$E9eGi3+P7Y9nekAcF--(N1$7sU7+td zpMmahz69Ordn>=q`*SZ$${&`4Yuagb|9a}ye^rG?+pv%iggFab47WBjNDWIxiDrldI z3805pOayJOm;`!n1?BKA(;nTaJca3s?jz&S|lCx(N22>vtR5s(~) zo;)1VBSn8P4*!eHanL#eAHO&WM~;d3`u^$Y;|tL4KgE~NW{M&BZun5K2wtv(hsEMh z9Q{X#8<5u*0cxjxOur6{M_C4m7BKC~w2EmTrj5aqAUz;RR>Oj)fsWzwQ9-;qBTi#F zEqD&fLy;F+F|-i$Sf(d3J)P+~wHW-fL!@&)(+iolGHqvid5HY~GDMF8z8`9rII9hl z{vf7jFrCX($9jg#&oO;5gRgaVg~^*=-(T(;A^)0_D>t3Lzec)_{+x9t?d(=wf-R+ZV+oHT=Cb>AerhY&FXF1;$E<|fYizt(dB5JpqBI=RaBH|BWI*K{RGd-O- zQ<=_StIL@V%O9zPSj;-VXZk_Wnc$3zk)N|-tpieV`V6m4ROXS|q-*%EA8+DAlh5(kLj7iB@;uZ$Ksf=YmRm?MS<_V~n+Ug)JgsYmsCbWFs4|W>?l&yEE(Em4p-9iRHBj(5KQBbZ2w9xeqP+nqR4ayCG7IFPGpuE%`1La0Q3%&0I zWskiJlu1B~-+g#3C@-_eLAeRgB8J}$e6PI+^eI5gHxU4TxxE+kn*lA}cgSBPxW%3T zWgno$??7Zgd4-(?1@A}z}EoO%MfZu9Qf&NNBYkmPU3sxice$WpB zTFe}$L7BGmpu7suVh&jV<&e#Rav0EJM#%%e-7bQD1kmEQB_06f4!Z=(Q9x^c1*?o* z<~4Q&lve{<{NltJQ0}y6K{*C!&6DOFD6h4z2jwn6i}xx%2>33{Yt}qv9tM0jzMg5# zdrT4Vy`}{C8zun!*JcgyH%$fbeVG5OdB3RvegMBYY|RJFV}KvR?~_>bZ%h~Px6DPr ze`_uS{yXzifY0E!AFO#6@0_&w<%%nSA2vS=_!09az~3`(2K*@YwAOsgybbUVU_Wa< z4hvcH30TGAS1jHE_(`MFw*Wr_?JVw#{0`vfpqIt3Q~WOA=b@1`Uzgw0_#c4Q{1r5^=6^yX zYyKL#So1f~1#f8wwB~<7mz4Qif!~Bi7Vr2Yd=VO@a8Ke-fd3uzvgTXR$eM3MBa8Rs zJrDQ~@(UZ^5%@jmV$F92{%`rMjqd{@N~AsyId|K?1b$rLJ@yNrybjQsd+is2&j4C; z!hRWeM&O+Nub|8dJZZlQ{64(v(3(^B>wsDNSAh51zXm*w_Z3<*Z~qo>!G06)XYqbP zj0^iMz&F{y2mF`zJAiMt-vfM${XXDZ?LPwky!|2I+iWTY|F;8x|H^Iy`~^FlN||4_ z+kyX*z<1bDP@VvUui7!-zX}L1wL5`7De%|rI4JKF_%6E}^rrx=dD>nF{M~@?OnW`> z_X5H*?G1pxX>SC4pPdB#gZ3ui9}sxMz+T`t4%`elIj}Ev?3%$%gUIZ?7((LxW+^C^SJqpA=3EOt>2P7H)i6?|Gcwf*1`fMrA!xUYYr$-> zQ)E(xTCP!FI$!bwGm(;fWF9$&M{cZZzEV$mkJP$_nqU>RlYBzbz%ZRdz*ugSE(D#n zSt&ImU8BTYy<0Pjtx5w;ylj?(dU@q?Gk`*+pt2D-yji`RX_Nyq(`;4|IV3n-Dg{j< zCLW&VLTY5lIIUYP=NcWC7iC1Wpd3+Wsx&@omM)3s6zHL*a5{j-5(1|)jcQfBB$Kpn?e7Rm)?jWco35}*9*K)I1k7r29=~AcBGHXFcTSbHoYr8Ac+6=+! z?c(_$O0#7V-KShrql_3qn!_Az5vx&5xM44C9_g$`Q_Pe0k}L=*y-n_=q1EJ%vw@W4 z5)(*wveDYGGqFapNt!0++MxuOkOpZJB85fAc*X3Jcp8dCN$o*DObdSW7P9Sp(*R0M zqPXW_BeHEUfG7m4 z2dxcE(aO-wG`fzPAv`EM{Sca*a-xrKfva2U%1S*_M=0OPKGkq?du7%)8W*rym}$ey zmx4Cd5k~M#v07a%q5&s@wMrfH1=;56Wrr0cCQ@TT1c+BO>Mm$XbJ!mdC7CM7)E4JX z5E2PEXr~-!ji=*yfm33rTbKxu0_HYDP(!Ri|G-Xd1Uxo`Iqq5$B$m%SDHNl*vE({b z{S=81DR5Ga>l{zVadnh}_MW;(A?!bRpEy_On%-N$=(@DPDLP(JJRQdidBkcoS{$#C z3oeEUwmY85bUZ(v7pIdc3N>LOM5HyfVq3=nJyQ}PQaFoX4iCw7YpWOmKB*BKVYOUt zVG5qFz^;W%x7ETpax_y|Y+(Gmxgwiqln;tE*sV-K?y5wYO+oZmX1b|gX+9Cnp|Enj ze4=~)JcSX*!Wu&yy|9GwfF*hh6AMz|OcqOUoz0~+RMvTJrBw+q-^_G7jisQ|f|w9> zVl`b-cHgL#;8F)euGA>Qr%fTkbpH4AIVPb-7xq!AO!tnIud}6GZkS@ZT!AcRq(u=pP}wP90a{ol#%cuo?4v$`My5lJpaq ziN&d$ZM1OcW>G$!E-H_d`dxxSN#u(BoeWWmd5Hm_1lJmvlIi4#j#1p8CM9%b$`2FF zxvFc67P98;@%gAk-0dUwIMr#%Ww0A&QGXjon4s=1`Fe?~WjAsnpVwF+!wGTkQWS}n zE45}dKuE{p3MIS~E-BkjdbaJwT!!Th&OnWKnlSF@n6`?PZ{oqor53XwE zt?|RhFL-YllVtbAaURA@-A_Hx4Z2t|>xKQIm@b@`J6M|)&NW&WXrNP-wRK(O6lPWt zh8BWyrCW29MB+qHZCp%H<{KBc7KJsi0pY5tpv*BsOhk+ttC#I)uQ#gYgoIvdOw5+7 zZmaF9&#VWf3x3*=1RI+m#HvovRr3TXR%wC`Be*pEz|Z`|mjdkT4A!mON9)oW=mzhI z7%Zx>>|O=bZ8b7n?KP6HqoWvLTto88MGUW86!FT1 z7_akPC&hUkX>bJWSeaR=Ul2rA=pcjx^L%NgRn!`0$~CPbTR-2B;#eYAxeTDF$GQRH znaENKHybLG_i>mbn+5WsoYPwGc`#EJ%eZn?r_@g#3Wcc%N7xob%#Fc9_UePe_Lc>*= ztT1cblNPd+r6@67!LidWHd_|9*qXc4F3lcus4T)9u3Hb6ptY6)cu~9KC~gcT@-dQJ zT0P$-)Qwz%&2XqJgM9(nS%`kRVGwi?!^JVsJsrx6f0Stlq}$>`8uuT)DSe}lT^O0 z!&s|UJmkEWYA>3jsUIsK*CJmSgbN`Yo4HCuB7sH7rK?hB|;vTrW6<1y(E_m zIYWkgU2kJ3qv9c#CMiy55HC$rA)C*}76JiPnTUl9Oyuhl7&KSVFk4djy6z*DLGh47 zla7UWt+%Wrheh22K^yOiI$Cd0M-Gcp zl-_B@6p|2-$mtc6$P9(KnT|7Gue4-Vuef9`g9+9dK76TG2~t=-L3QPvbz;RFC0WW5 zU7>^tMQX1B<3zMLn#sJ`VwA9^IGZoTg`%^x6k)oj07+cRtC?Mo`UM4dSy#iDInj^~AH1m_o5OO3baz*QOmE(+AFw4 zBzD1aiB~5cOD5Fi1j!?ug6oJ(H7M4**k0+AUb!&??j^ayYW^?y>d~RtezvL75=d(GFFU~Bjc>HuWbK2t%oXLjt#ii`oh2>CIF29n^ z%z4I@{9-oa6S9pzar$6S;)_Z_|oEhA#-Xbmz$d>IlJtcm~n1yK9gTa@FuDt z4>X9^Dx{f(rMboV2jimVasTy$gqfpL^vE|DDWAI zDV%Ka*0~Rg9`P&uXmMGH7L_hjy*Atg=D2AL?(Jn`uUmQD$IB+3Eteg<+rG;^FJ0C%i<@+}zQ%G9 z`*A>S#$_iio0&!K!F3Cw+i=~3%Ld%-zTMXQoZD{GrDd-z8*SMExGlEa#G{)CB0z6{ zi4`5XQLJ`@Lc!p63!Z|7ccKu^dB4iUZsZu=;jIi)&6Aw5@B2%Rk3mV<&74M`r>WRD+ zm1(#GA9M9`{=B-cw=(*Nm7xOZoEQ#fJZM7kGdL&#D+r!fC+b2|7b#?HU_U2U-#AG) z^S3n%s|pz*{)&4jauVaPl6~@sCg*C!N>!VNWr-qGXr*;|X03?9N&Tfy@PwH6`ec~o z8W-g%en$@VKsL(bp~b-iuM{RR3)0G+#Tha_{mq{b-8b8g+JYN%umrZ_v=>!!S#(es z^Gv-0-_JLJ<{G+}lc7#`&>>4qN55EHYKo`*8I&kDJX0bhXr;G4C7>uOLfGkT)m&qZ zQ2nrzgf?1v#6LLOX>%lBCO^3QObbnb$@JbIHC7@mNnfPd+OcwyMuYV#fh*To?v~cW zxi?00-4UZW6KcfE;22<|!#lhyjYP&uqp?t|UkVGfp{CEHCgOuw=XO;0B-< zAy#%3$e56>5W>kyH4wz}dIR2vJ)={T`SqaN_F0YlbjKRmmDN zE<7?M0^l=_C32mdcYfC6OyS0Iq)M*Ag$sOU&9gW;`DTp!Nr9}d=&DIeydXA z)aF{KLG0=>at+1?3BJk=x1o~GE+?x+w|3D!Z=jzSv?F|I^H128@Ei+M%QSS618g!O za6XDsZWhDDi>D-Om|HtMDd3JmECuJ?u{j*%X$Q5{sy^&puB_E(I%v{r7srErmRrAV z&B)*+P`4Fq&A`-J4sd+=!q%)zqj?#jW4*IAYq5m`(50(nAPnFH-Q}$%(5&;7wJw$d z7^GXXXM=XBRgvS0TQgTGooY;VZy9G<+4we^>}IcH$rRfNDD9x$#&T~1OPMyFW|jlAaHGPrCq4Pnz!vD)Eu7gfk9+xbL@+t8$aN`Z zZ6oVXlc^%GVVYd+VByp;B{!NXtx^|0W*T}>ycTrU8)fWF>Qo^xScdBHEj%ybnXWRA zu%bL{$;WvChcS^F<~m-Ra3tZmh$$a`HFE*66CTD#RICWWvSXT<<7;kNS?5j&4aQSf zS!07&cRxj*g~MHJy-N%|fkOaS8|#f`NuJX_hKC+r5FWjXta@-!t{r)Xhm;}|E{BHj zDOgXPCK5c!cI2bKe(WG2)KT$cBg~>p_&&q8|Yygt$kz zR$zu)-H2ootjW2`w5E#;t_BSjHyF|DMbwAUtA{O_Y;)@hg|IKDpYT2&W=KqiQPGk+U<8lX!wtHa6Qj}} zh-BL*a42%E1uw>P%~kdmx&a;}s1_4E65HY41k+WgQrB4S9iQGV5v5slw;egqghHf- zpyG#n+g!lBh`+Y+rP`*1EewYrR^Bj=kwF6Ez%z8X34ynCJJ3+ZpK`hcFNl9qpTlJy z!N`-U%NX%8TX2z7;d6L5LZt+SQw5&7P=QAbN4|)V$aGP6;X;6;;8p|nzeaCHafQxD z{d4$g2*RE;gI#TjNwqi%-z7KqqLGO?1!4o#=HdZC)t?&| zhjR61c`6_mCl{NXhNG4k1XKys$GH%} z&O6JqM>L5z*K7boRNMEMTW--Q;n1a5A3AjC$gA%-co@MR9)%bV12a^5TSj&ihi{*& zU@R^n(qR@51IXPXjT>#&U(zo~oae1T7{dE=i?`emZZSn-A+XYLvy7WB#9U%uExqhl zG>Lf^V^ACh-reD^aoFlEfa z8SruLE1ELCM>vI&a9RArC_+h$LC`v&-G!?exCiLoMlNp+ad26mB8$(T!VWh17fjH)#S4mP1;HY6u0N$WS;#_&~Q zGdhPC5G=t!OZc|<61Zs$>g^3Ph1VCDfdj_ecn-7*q#{W7=8xkmg80Jf3ch}tH#z8% z8o*1rhHpg+V7lRha%FnMrFl(lyVa~Bmr%KQCD*!3^P0N8gmlq$OcmE6z8D(d8}0}) zXyt{7vNOqP2KGYpd+~aeDRiM3xEX)1z#qPDw{sEg&6>0LD(o`8L~F)!(3{$4@FiQb z{eGmfXouOph;}U@$80|>xu=0WfG@sgNgG`O-=fgX_MFcjW686^L0JpnnH8zz%(1r7 zl$0W#8ue6I09HH;&L!xic1-P_GLORs?ClELxdz;fCwV}*9$(5d^C&Y1`D{fFFPX@j z)ZEpmQ(@gxJ+GLt>RI;J6&x#aKlFVa)2O|<(_GNRHU z|KWdnoh*Y_mK=;A>R`qq9639aSqs$EcmJwefTxGDQPfHHRt>Vbp&e6MowlKCR2I_bQ_2=+! z4kJ|cT!9T3alttj;gmfCJr_i#!Ap5OPT4*#m{E^WwzlQ0jC^WocK1@iwR0IS1UMr$ zeo$;rt%V!*P>glwpcA!ciz6I4(9uUq@;8g}Q=0V8wn9#?T z(7ID1?G$vFMcdH>J4w|Zmbn7fIs-efm7EJBucckQ_lSPGSqt@{bx6THwcB&BeUwTG zx`+{JWAX7q&x+Ef_y{8N3?lPSV3s^+-e?{|`XNN=hw$%Fyn5jg#OucquOIH=(`eqy z{SahCB_z5V^Z27H?|JPr%O~Ho_uDs3Kk<$4n33Om<3nd}IQo^h+M)Eo(8MJE_S&J5 zfuZqz_&YE-l}e?t-bxQnnTbh)y-1Ca3}D9hZ38yGkLZDc{b1WqHh{fIjQ~L&z=6S` ziOsLrAv-)}Q)!?OVkyL;%9$uvsXZ77Q5ek8Ynb4>qC^|4SncnUa#0DM5_|y*1o3{9*;jR;R;O|b>@@az409-L3-ObdCTIGwx zzpePUkvAi*G()exThP1VmMQ8!nI570rRnHtb=vVOgGku4bD{5Q6UXT5Qpa-;IETM1 z#bvdU=a`#?VN&B)M$&1BVA}-0#|S8Ag3SUuCDk8)&*M!wj$UHu-6OrdSDL;_7JdZ z1p~AxYe(R;@Ygh)g617bOOJ`~*fbLG(y!oRCw8O}&QcR(5YNSB{K}5>fH5ihZM94s(rAo1Wh<`U4_CN5nA8?RE`7`wSGi=M?puuM_ zMPLaa2(Kt5*hT=Bk-;HieBsI>?N^m>}TGSq85q zxQ^h*2(BmK%L@l@Ab2UkjRbtT;ou~}%Lr~Fc#hyt3H}4YeL;0mH>Nh*o9z-V3^<_ z!8F0E2o4h*A$SeJF@ie@?jm?C!QBM+5WJ3HhTsH2hG3Rpj^H%GJi!@)vjjgu@RI}& z5j;##Ab6CZNKhrH5!4A91Wkg+2-*Z4f(?R;1eXYYn&4j${0zaH3Eo2RR)U`=cpJel z5&Sa2I|!a2_!WX*CHOUhCkft3@GgR<2%aW*H^F-d-cRrWf)5gWh~Re!o*{Ua;KKwT zA@~@H8n&Q3w`~~Zp2OImxErH8HIbdjGH~rdfJXdyb_Ar& zj{uRV^f4>xXU8``ff;8K%cN&@b@oR)h6jc3V-uILEMp|uW3gNtni!+d&F2x-%;d!8 zXE`&CZ+?D!^9v)Q`sQabi=v`0a|WB({3<3&C^xcwcmT{34^HlZmqX5QDvgJ zO^7a6wo{`k<730yFvm}f0G+sU9e8A_N3=xAk&(&aafyf!;v??J$Ox7vte#rzZ zMH&~BruD9Hy$bR^N$ed#EFGCx*n?`A1)ZrjZ9lSOWOy*0-h=e;u!RDfUt@%3m)P{c z!1(YrlUUP?q(!xn$$^2<;caQAHor2lV;ky3oTh+udJIP4QW}OqQ$#9fhiiwgaby(Q z0fw(3cW@Y%!2A4^^}69PHjgVO5j!ygmVxVsCny%55m{BS!Kia!8_G_M3`=tlOUI&` zJ81iX^zbmtPNpaJQiowyfDcPxlA*FN3;fv_M6H8I4jsCk;ONx;%z>!|J}aC$QN$yR zspBzE9@(ACzJKxwjvjzCP#cq&@JHJ7+;i$ug11!tJMV_yOMWz1%bTB ziyS}P2U(ns`k%f9`WEP0pl^Y`1^O1~TcB@&z6JUg_-AK<6y9=e@HTU^nN&?T3Wu&j zCm$Xdnb+e!$cwy(Qzjftfy7wm)qjOC|-aPp6?le$n z;U>zmHETF3Lv4>pU)+wzcZwZ_759Ua$21ne$F?52rI)-W_a;))&JNg9 z!|wbol&F67pfaSW=J>iJxC|u1-=*z&ryGy3P-EW@OvzCm==A?)gX7Yli;&xZUAkyZ zCuULeBdtiij!Qo#%l7u>kLt^NrR)q^$m3Tv^jcMX_n%sx_4hx03-m3}w?N+leGBw0 z(6>O}0(}egE%49W0*iQ(2o)dYcD?`UTcB@&z6JUg=v$y~fxZR$7U)}`Z-KrA`WEP0 Mpl^ZyFD>wY0ru(Z(EtDd diff --git a/applications/SLIRC/bin/Release/Meebey.SmartIrc4net.pdb b/applications/SLIRC/bin/Release/Meebey.SmartIrc4net.pdb deleted file mode 100644 index 6316130a013f64c8f4837b7f4c857a04b80be40f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 323072 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 - - - Meebey.SmartIrc4net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Initializes the message queues, read and write thread - - - - - - - Reconnects to the server - - - If there was no active connection - - - The connection failed - - - If there is already an active connection - - - - - Disconnects from the server - - - If there was no active connection - - - - - Raised when a \r\n terminated line is read from the socket - - - - - Raised when a \r\n terminated line is written to the socket - - - - - Raised before the connect attempt - - - - - Raised on successful connect - - - - - Raised before the connection is closed - - - - - Raised when the connection is closed - - - - - Raised when the connection got into an error state - - - - - - The current address of the connection - - - - - The address list of the connection - - - - - Which port is used for the connection - - - - - By default nothing is done when the library looses the connection - to the server. - Default: false - - - true, if the library should reconnect on lost connections - false, if the library should not take care of it - - - - - If the library should retry to connect when the connection fails. - Default: false - - - true, if the library should retry to connect - false, if the library should not retry - - - - - Delay between retry attempts in Connect() in seconds. - Default: 30 - - - - - To prevent flooding the IRC server, it's required to delay each - message, given in milliseconds. - Default: 200 - - - - - On successful registration on the IRC network, this is set to true. - - - - - On successful connect to the IRC server, this is set to true. - - - - - The SmartIrc4net version number - - - - - The full SmartIrc4net version - - - - - Encoding which is used for reading and writing to the socket - Default: ISO-8859-1 - - - - - Timeout in seconds for receiving data from the socket - Default: 600 - - - - - Timeout in seconds for sending data to the socket - Default: 600 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Enables/disables the active channel sync feature - - true, to enable - - - - Sets the ctcp version that should be replied on ctcp version request - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Checks if the passed nickname is valid according to the RFC - Use with caution, many IRC servers are not conform with this! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/applications/SLIRC/bin/Release/SLIRC.exe b/applications/SLIRC/bin/Release/SLIRC.exe deleted file mode 100644 index 732f1f7f77f1083fd80108866ac75974509feb79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 Q*r31$1vV(~|0V_gHz?g+ivR!s diff --git a/applications/SLProxy/bin/Debug/keywords.txt b/applications/SLProxy/bin/Debug/keywords.txt index 30a49a13..38256ca3 100644 --- a/applications/SLProxy/bin/Debug/keywords.txt +++ b/applications/SLProxy/bin/Debug/keywords.txt @@ -1,3 +1,4 @@ +SeedCapability X Y Z diff --git a/applications/SLProxy/bin/Debug/protocol.txt b/applications/SLProxy/bin/Debug/protocol.txt index b4b200e1..43d91382 100644 --- a/applications/SLProxy/bin/Debug/protocol.txt +++ b/applications/SLProxy/bin/Debug/protocol.txt @@ -8569,14 +8569,15 @@ sim -> dataserver //----------------------------------------------------------------------------- // CreateGroupRequest -// viewer -> userserver -// userserver -> dataserver +// viewer -> simulator +// simulator -> dataserver // reliable { CreateGroupRequest Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } + { SessionID LLUUID } } { GroupData Single @@ -8623,15 +8624,16 @@ sim -> dataserver } } -// CreateGroupRequest -// viewer -> userserver -// userserver -> dataserver +// UpdateGroupInfo +// viewer -> simulator +// simulator -> dataserver // reliable { UpdateGroupInfo Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } + { SessionID LLUUID } } { GroupData Single @@ -8662,19 +8664,18 @@ sim -> dataserver } // JoinGroupRequest -// viewer -> userserver -> dataserver +// viewer -> simulator -> dataserver // reliable { JoinGroupRequest Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } + { SessionID LLUUID } } { GroupData Single { GroupID LLUUID } - { Officer U8 } - { MembershipFee S32 } } } @@ -8736,6 +8737,7 @@ sim -> dataserver { AgentData Single { AgentID LLUUID } + { SessionID LLUUID } } { GroupData Single @@ -8743,21 +8745,18 @@ sim -> dataserver } } -// InviteGroupRequest -// viewer -> userserver -> dataserver +// InviteGroupResponse +// simulator -> dataserver // reliable { - InviteGroupRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } // UUID of inviting agent - } + InviteGroupResponse Low Trusted Unencoded { InviteData Single - { AgentName Variable 1 } // string + { AgentID LLUUID } { InviteeID LLUUID } { GroupID LLUUID } - { Officer BOOL } // BOOL + { Officer BOOL } + { MembershipFee S32 } } } diff --git a/applications/SecondSuite/bin/Debug/keywords.txt b/applications/SecondSuite/bin/Debug/keywords.txt index 2dfc041e..38256ca3 100644 --- a/applications/SecondSuite/bin/Debug/keywords.txt +++ b/applications/SecondSuite/bin/Debug/keywords.txt @@ -1,3 +1,4 @@ +SeedCapability X Y Z @@ -56,7 +57,6 @@ MapLayerReply CompoundMsgID CameraConstraint DownloadTotals -ChatMessage ErrorValue GenCounter FrozenData @@ -193,6 +193,7 @@ AgentPresenceResponse CharterMember EdgeData NameData +RegionPushOverride SimName UserReport DownloadPriority @@ -229,7 +230,6 @@ Arc NewFolderID RegionX RegionY -UUIDSoundTriggerFar RequestData Msg Top @@ -469,9 +469,6 @@ ObjectCount RegionPresenceRequestByHandle RezSingleAttachmentFromInv ChildAgentUpdate -XPos -YPos -ZPos ToID ViewerPort IsOwnerGroup @@ -634,12 +631,14 @@ TransferPriority EventID FromAgentId Type +ChatType ReportData LeaderBoardData RequestBlock GrantData DetachAttachmentIntoInv ParcelDisableObjects +Sections GodLevel StartGroupIM PayPriceReply @@ -828,17 +827,16 @@ ClassifiedInfoRequest ParcelInfoRequest ParcelObjectOwnersRequest TeleportLandmarkRequest -CommandID +EventInfoRequest MovedIntoSimulator ChatFromSimulator -EventInfoRequest PickInfoRequest -DirPeopleQuery MoneyBalanceRequest +DirPeopleQuery GroupElectionInfoRequest GroupMembersRequest -TextureID GroupOfficersAndMembersRequest +TextureID OldFolderID UserInfoRequest LandCollidersRequest @@ -968,7 +966,6 @@ BodyRotation StartGroupElection SearchRegions Ignore -ConversationData AnimationData StatID ItemID @@ -1143,6 +1140,7 @@ VoteItem ObjectRotation SitRotation SnapSelection +SoundTrigger TerrainRaiseLimit Quorum TokenBlock @@ -1252,6 +1250,7 @@ ObjectSelect ForceObjectSelect Price SunDirection +FromName ChangeInventoryItemFlags Force TransactionBlock @@ -1276,6 +1275,7 @@ SysOS Notes AvatarID FounderID +EndPointID StipendEstimate LocationLookAt Sound @@ -1296,6 +1296,7 @@ Count South Entry ObjectUpdateCompressed +MuteFlags Group AgentPause InternalScriptMail @@ -1492,6 +1493,7 @@ DeRezAck TakeControls DirLandReply SpaceLocationTeleportReply +MuteType IMViaEMail StartExpungeProcessAck RentPrice @@ -1507,4 +1509,4 @@ OwnerName AvatarNotesReply CacheID OwnerMask -TransferInventoryAck \ No newline at end of file +TransferInventoryAck diff --git a/applications/SecondSuite/bin/Debug/protocol.txt b/applications/SecondSuite/bin/Debug/protocol.txt index bb39cfc5..43d91382 100644 --- a/applications/SecondSuite/bin/Debug/protocol.txt +++ b/applications/SecondSuite/bin/Debug/protocol.txt @@ -1 +1,10245 @@ -version 1.052 { TestMessage Low NotTrusted Zerocoded { TestBlock1 Single { Test1 U32 } } { NeighborBlock Multiple 4 { Test0 U32 } { Test1 U32 } { Test2 U32 } } } { SecuredTemplateChecksumRequest Fixed 0xFFFFFFFA NotTrusted Unencoded { TokenBlock Single { Token LLUUID } } } { PacketAck Fixed 0xFFFFFFFB NotTrusted Unencoded { Packets Variable { ID U32 } } } { OpenCircuit Fixed 0xFFFFFFFC NotTrusted Unencoded { CircuitInfo Single { IP IPADDR } { Port IPPORT } } } { CloseCircuit Fixed 0xFFFFFFFD NotTrusted Unencoded } { TemplateChecksumRequest Fixed 0xFFFFFFFE NotTrusted Unencoded } { TemplateChecksumReply Fixed 0xFFFFFFFF NotTrusted Unencoded { DataBlock Single { Checksum U32 } { MajorVersion U8 } { MinorVersion U8 } { PatchVersion U8 } { ServerVersion U8 } { Flags U32 } } { TokenBlock Single { Token LLUUID } } } { StartPingCheck High NotTrusted Unencoded { PingID Single { PingID U8 } { OldestUnacked U32 } } } { CompletePingCheck High NotTrusted Unencoded { PingID Single { PingID U8 } } } { AddCircuitCode Low Trusted Unencoded { CircuitCode Single { Code U32 } { SessionID LLUUID } { AgentID LLUUID } } } { UseCircuitCode Low NotTrusted Unencoded { CircuitCode Single { Code U32 } { SessionID LLUUID } { ID LLUUID } } } { LogControl Low Trusted Unencoded { Options Single { Level U8 } { Mask U32 } { Time BOOL } { Location BOOL } { RemoteInfos BOOL } } } { RelayLogControl Low Trusted Unencoded { Options Single { Level U8 } { Mask U32 } { Time BOOL } { Location BOOL } { RemoteInfos BOOL } } } { LogMessages Low Trusted Unencoded { Options Single { Enable BOOL } } } { NeighborList High Trusted Unencoded { NeighborBlock Multiple 4 { IP IPADDR } { Port IPPORT } { PublicIP IPADDR } { PublicPort IPPORT } { RegionID LLUUID } { Name Variable 1 } { SimAccess U8 } } } { 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 } { SimAccess U8 } } } { SpaceServerSimulatorTimeMessage Low Trusted Unencoded { TimeInfo Single { UsecSinceStart U64 } { SecPerDay U32 } { SecPerYear U32 } { SunDirection LLVector3 } { SunPhase F32 } { SunAngVelocity LLVector3 } } } { ClosestSimulator Medium Trusted Unencoded { SimulatorBlock Single { IP IPADDR } { Port IPPORT } { Handle U64 } } { Viewer Single { ID LLUUID } } } { AvatarTextureUpdate Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } { TexturesChanged BOOL } } { WearableData Variable { CacheID LLUUID } { TextureIndex U8 } } { TextureData Variable { TextureID LLUUID } } } { SimulatorMapUpdate Low Trusted Unencoded { MapData Single { Flags U32 } } } { SimulatorSetMap Low Trusted Unencoded { MapData Single { RegionHandle U64 } { Type S32 } { MapImage LLUUID } } } { SubscribeLoad Low Trusted Unencoded } { UnsubscribeLoad Low Trusted Unencoded } { SimulatorStart Low Trusted Unencoded { ControlPort Single { Port IPPORT } { PublicIP IPADDR } { PublicPort IPPORT } } { PositionSuggestion Single { Ignore BOOL } { GridX S32 } { GridY S32 } } } { 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 Low NotTrusted Unencoded { TelehubBlock Single { ObjectID LLUUID } { ObjectName Variable 1 } { TelehubPos LLVector3 } { TelehubRot LLQuaternion } } { SpawnPointBlock Variable { SpawnPointPos LLVector3 } } } { 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 Low Trusted Unencoded { SimulatorLoad Single { TimeDilation F32 } { AgentCount S32 } { CanAcceptAgents BOOL } } { AgentList Variable { CircuitCode U32 } { X U8 } { Y U8 } } } { SimulatorShutdownRequest Low Trusted Unencoded } { RegionPresenceRequestByRegionID Low Trusted Unencoded { RegionData Variable { RegionID LLUUID } } } sim -> dataserver { RegionPresenceRequestByHandle Low Trusted Unencoded { RegionData Variable { RegionHandle U64 } } } { RegionPresenceResponse Low Trusted Zerocoded { RegionData Variable { RegionID LLUUID } { RegionHandle U64 } { InternalRegionIP IPADDR } { ExternalRegionIP IPADDR } { RegionPort IPPORT } { ValidUntil F64 } { Message Variable 1 } } } { RecordAgentPresence Low Trusted Unencoded { RegionData Single { RegionID LLUUID } } { AgentData Variable { AgentID LLUUID } { SessionID LLUUID } { SecureSessionID LLUUID } { LocalX S16 } { LocalY S16 } { TimeToLive S32 } { Status S32 } { EstateID U32 } } } { EraseAgentPresence Low Trusted Unencoded { AgentData Variable { AgentID LLUUID } } } { AgentPresenceRequest Low Trusted Unencoded { AgentData Variable { AgentID LLUUID } } } { AgentPresenceResponse Low Trusted Unencoded { AgentData Variable { AgentID LLUUID } { RegionIP IPADDR } { RegionPort IPPORT } { ValidUntil F64 } { EstateID U32 } } } { UpdateSimulator Low Trusted Unencoded { SimulatorInfo Single { RegionID LLUUID } { SimName Variable 1 } { EstateID U32 } { SimAccess U8 } } } { 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 } } } { ClearAgentSessions Low Trusted Unencoded { RegionInfo Single { RegionX U32 } { RegionY U32 } { SpaceIP IPADDR } } } { LogDwellTime Low Trusted Unencoded { DwellInfo Single { AgentID LLUUID } { SessionID LLUUID } { Duration F32 } { SimName Variable 1 } { RegionX U32 } { RegionY U32 } } } { LogFailedMoneyTransaction Low Trusted Unencoded { TransactionData Single { TransactionID LLUUID } { TransactionTime U32 } { TransactionType S32 } { SourceID LLUUID } { DestID LLUUID } { Flags U8 } { Amount S32 } { SimulatorIP IPADDR } { GridX U32 } { GridY U32 } { FailureType U8 } } } { 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 } { SimName Variable 1 } { Summary Variable 1 } { Details Variable 2 } { VersionString Variable 1 } } { MeanCollision Variable { Perp LLUUID } { Time U32 } { Mag F32 } { Type U8 } } } { SetSimStatusInDatabase Low Trusted Unencoded { Data Single { RegionID LLUUID } { HostName Variable 1 } { X S32 } { Y S32 } { PID S32 } { AgentCount S32 } { TimeToLive S32 } { Status Variable 1 } } } { SetSimPresenceInDatabase Low Trusted Unencoded { SimData Single { RegionID LLUUID } { HostName Variable 1 } { GridX U32 } { GridY U32 } { PID S32 } { AgentCount S32 } { TimeToLive S32 } { Status Variable 1 } } } { EconomyDataRequest Low NotTrusted Unencoded } { 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 } } } { AvatarPickerRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { QueryID LLUUID } } { Data Single { Name Variable 1 } } } { AvatarPickerRequestBackend Low Trusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { QueryID LLUUID } { GodLevel U8 } } { Data Single { Name Variable 1 } } } { AvatarPickerReply Low Trusted Unencoded { AgentData Single { AgentID LLUUID } { QueryID LLUUID } } { Data Variable { AvatarID LLUUID } { FirstName Variable 1 } { LastName Variable 1 } } } { PlacesQuery Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { QueryID LLUUID } } { QueryData Single { QueryText Variable 1 } { QueryFlags U32 } { Category S8 } { SimName Variable 1 } } } { PlacesReply Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { QueryID LLUUID } } { QueryData Variable { OwnerID LLUUID } { Name Variable 1 } { Desc Variable 1 } { ActualArea S32 } { BillableArea S32 } { Flags U8 } { GlobalX F32 } { GlobalY F32 } { GlobalZ F32 } { SimName Variable 1 } { SnapshotID LLUUID } { Dwell F32 } { Price S32 } } } { DirFindQuery Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryText Variable 1 } { QueryFlags U32 } { QueryStart S32 } } } { DirFindQueryBackend Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryText Variable 1 } { QueryFlags U32 } { QueryStart S32 } { EstateID U32 } { Godlike BOOL } { SpaceIP IPADDR } } } { 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 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 Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Variable { QueryID LLUUID } } { QueryReplies Variable { ParcelID LLUUID } { Name Variable 1 } { ForSale BOOL } { Auction BOOL } { ReservedNewbie BOOL } { Dwell F32 } } } { DirPeopleQuery Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryText Variable 1 } { Name Variable 1 } { Group Variable 1 } { Online U8 } { WantToFlags U32 } { SkillFlags U32 } { Reputation Variable 1 } { Distance Variable 1 } } } { DirPeopleQueryBackend Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryText Variable 1 } { Name Variable 1 } { Group Variable 1 } { Online U8 } { WantToFlags U32 } { SkillFlags U32 } { Reputation Variable 1 } { Distance Variable 1 } { EstateID U32 } { Godlike BOOL } { SpaceIP IPADDR } } } { 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 Low NotTrusted 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 } } } { DirGroupsQuery Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryText Variable 1 } } } { DirGroupsQueryBackend Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryText Variable 1 } { EstateID U32 } { Godlike BOOL } } } { DirGroupsReply Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } } { QueryReplies Variable { GroupID LLUUID } { GroupName Variable 1 } { Members S32 } { OpenEnrollment BOOL } { MembershipFee S32 } } } { DirClassifiedQuery Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryText Variable 1 } { QueryFlags U32 } { Category U32 } } } { DirClassifiedQueryBackend Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryText Variable 1 } { QueryFlags U32 } { Category U32 } { EstateID U32 } { Godlike BOOL } } } { 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 Low Trusted Unencoded { AgentData Single { AgentID LLUUID } { TargetID LLUUID } } { Data Variable { ClassifiedID LLUUID } { Name Variable 1 } } } { ClassifiedInfoRequest Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { Data Single { ClassifiedID LLUUID } } } { 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 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 Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { ClassifiedID LLUUID } } } { ClassifiedGodDelete Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { ClassifiedID LLUUID } { QueryID LLUUID } } } { DirPicksQuery Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryFlags U32 } } } { DirPicksQueryBackend Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryFlags U32 } { EstateID U32 } { Godlike BOOL } } } { DirPicksReply Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } } { QueryReplies Variable { PickID LLUUID } { Name Variable 1 } { Enabled BOOL } } } { DirLandQuery Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryFlags U32 } { ForSale BOOL } { Auction BOOL } { ReservedNewbie BOOL } } } { DirLandQueryBackend Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryFlags U32 } { ForSale BOOL } { Auction BOOL } { ReservedNewbie BOOL } { EstateID U32 } { Godlike BOOL } } } { 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 Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryFlags U32 } } } { DirPopularQueryBackend Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } { QueryFlags U32 } { EstateID U32 } { Godlike BOOL } } } { DirPopularReply Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { QueryData Single { QueryID LLUUID } } { QueryReplies Variable { ParcelID LLUUID } { Name Variable 1 } { Dwell F32 } } } { ParcelInfoRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { ParcelID LLUUID } } } { 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 } { GlobalY F32 } { GlobalZ F32 } { SimName Variable 1 } { SnapshotID LLUUID } { Dwell F32 } { SalePrice S32 } { AuctionID S32 } } } { ParcelObjectOwnersRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } } } { OnlineStatusRequest Low Trusted Unencoded { AgentData Single { AgentID LLUUID } { QueryID LLUUID } { EstateID U32 } { Godlike BOOL } { SpaceIP IPADDR } } { Data Variable { ID LLUUID } } } { OnlineStatusReply Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } { QueryID LLUUID } } { Data Variable { ID LLUUID } } } { ParcelObjectOwnersReply Low Trusted Zerocoded { Data Variable { OwnerID LLUUID } { IsGroupOwned BOOL } { Count S32 } { OnlineStatus BOOL } } } { TeleportRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Info Single { RegionID LLUUID } { Position LLVector3 } { LookAt LLVector3 } } } { TeleportLocationRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Info Single { RegionHandle U64 } { Position LLVector3 } { LookAt LLVector3 } } } { TeleportLocal Low NotTrusted Unencoded { Info Single { AgentID LLUUID } { LocationID U32 } { Position LLVector3 } { LookAt LLVector3 } { TeleportFlags U32 } } } { TeleportLandmarkRequest Low NotTrusted Zerocoded { Info Single { AgentID LLUUID } { SessionID LLUUID } { LandmarkID LLUUID } } } { TeleportProgress Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Info Single { TeleportFlags U32 } { Message Variable 1 } } } { DataAgentAccessRequest Low Trusted Unencoded { Info Single { AgentID LLUUID } { EstateID U32 } { RegionHandle U64 } { LocationID U32 } { LocationPos LLVector3 } { LocationLookAt LLVector3 } } } { DataAgentAccessReply Low Trusted Unencoded { Info Single { AgentID LLUUID } } } { DataHomeLocationRequest Low Trusted Zerocoded { Info Single { AgentID LLUUID } } } { DataHomeLocationReply Low Trusted Unencoded { Info Single { AgentID LLUUID } { RegionHandle U64 } { Position LLVector3 } { LookAt LLVector3 } } } { SpaceLocationTeleportRequest Low Trusted Unencoded { Info Single { AgentID LLUUID } { SessionID LLUUID } { CircuitCode U32 } { RegionHandle U64 } { Position LLVector3 } { LookAt LLVector3 } { TravelAccess U8 } { ParentEstateID U32 } { TeleportFlags U32 } } } { SpaceLocationTeleportReply Low Trusted Unencoded { Info Single { AgentID LLUUID } { LocationID U32 } { SimIP IPADDR } { SimPort IPPORT } { RegionHandle U64 } { Position LLVector3 } { LookAt LLVector3 } { SimName Variable 1 } { SimAccess U8 } { TeleportFlags U32 } } } { TeleportFinish Low NotTrusted Unencoded { Info Single { AgentID LLUUID } { LocationID U32 } { SimIP IPADDR } { SimPort IPPORT } { RegionHandle U64 } { SimAccess U8 } { TeleportFlags U32 } } } { StartLure Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Info Single { LureType U8 } { TargetID LLUUID } { Message Variable 1 } } } { InitializeLure Low Trusted Unencoded { Info Single { LureType U8 } { AgentID LLUUID } { LureID LLUUID } { RegionHandle U64 } { Position LLVector3 } { LookAt LLVector3 } } } { TeleportLureRequest Low NotTrusted Unencoded { Info Single { AgentID LLUUID } { SessionID LLUUID } { LureID LLUUID } { TeleportFlags U32 } } } { TeleportCancel Low NotTrusted Unencoded { Info Single { AgentID LLUUID } { SessionID LLUUID } } } { CompleteLure Low Trusted Unencoded { Info Single { AgentID LLUUID } { SessionID LLUUID } { LureID LLUUID } { CircuitCode U32 } { TravelAccess U8 } { ParentEstateID U32 } { TeleportFlags U32 } } } { TeleportStart Low NotTrusted Unencoded { Info Single { TeleportFlags U32 } } } { TeleportFailed Low NotTrusted Unencoded { Info Single { AgentID LLUUID } { Reason Variable 1 } } } { 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 } } { Entry Variable { Sequence S32 } { Place S32 } { ID LLUUID } { Score S32 } { Name Fixed 32 } } } { RegisterNewAgent Low NotTrusted Unencoded { HelloBlock Single { AgentID LLUUID } { SessionID LLUUID } { LocationID U32 } { Godlike BOOL } } } { Undo Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } { ObjectData Variable { ObjectID LLUUID } } } { Redo Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } { ObjectData Variable { ObjectID LLUUID } } } { UndoLand Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } } { RedoLand Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } } { TransferEnergy Low NotTrusted Unencoded { Data Single { DestID LLUUID } { Amount S32 } } } { MovedIntoSimulator High Trusted Unencoded { Sender Single { ID LLUUID } { SessionID LLUUID } { CircuitCode U32 } } } { AgentPause Low NotTrusted Unencoded { Sender Single { AgentID LLUUID } { SessionID LLUUID } { SerialNum U32 } } } { AgentResume Low NotTrusted Unencoded { Sender Single { AgentID LLUUID } { SessionID LLUUID } { SerialNum U32 } } } { AgentUpdate High NotTrusted Zerocoded { AgentData Single { ID LLUUID } { BodyRotation LLQuaternion } { HeadRotation LLQuaternion } { State U8 } { CameraCenter LLVector3 } { CameraAtAxis LLVector3 } { CameraLeftAxis LLVector3 } { CameraUpAxis LLVector3 } { Far F32 } { ControlFlags U32 } { Flags U8 } } } { ChatFromViewer Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ChatData Single { Message Variable 2 } { Type U8 } { Channel S32 } } } { AgentThrottle Low NotTrusted Zerocoded { Sender Single { ID LLUUID } { CircuitCode U32 } { GenCounter U32 } } { Throttle Single { Throttles Variable 1 } } } { AgentFOV Low NotTrusted Unencoded { Sender Single { ID LLUUID } { CircuitCode U32 } { GenCounter U32 } } { FOVBlock Single { VerticalAngle F32 } } } { AgentHeightWidth Low NotTrusted Unencoded { Sender Single { ID LLUUID } { CircuitCode U32 } { GenCounter U32 } } { HeightWidthBlock Single { Height U16 } { Width U16 } } } { AgentSetAppearance Low NotTrusted Zerocoded { Sender Single { ID LLUUID } { SerialNum U32 } { Size LLVector3 } } { WearableData Variable { CacheID LLUUID } { TextureIndex U8 } } { ObjectData Single { TextureEntry Variable 2 } } { VisualParam Variable { ParamValue U8 } } } { AgentAnimation High NotTrusted Unencoded { Sender Single { ID LLUUID } } { AnimationList Variable { AnimID LLUUID } { StartAnim BOOL } } } { AgentRequestSit High NotTrusted Zerocoded { Sender Single { ID LLUUID } } { TargetObject Single { TargetID LLUUID } { Offset LLVector3 } } } { AgentSit High NotTrusted Unencoded { Sender Single { ID LLUUID } } } { RefreshViewer Low NotTrusted Unencoded { Sender Single { ID LLUUID } } } { AgentQuit Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } { AgentQuitCopy Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { FuseBlock Single { ViewerCircuitCode U32 } } } { RequestImage High NotTrusted Unencoded { RequestImage Variable { Image LLUUID } { DiscardLevel S32 } { DownloadPriority F32 } { Packet U32 } } } { ImageNotInDatabase Low NotTrusted Unencoded { ImageID Single { ID LLUUID } } } { SetAlwaysRun Low NotTrusted Unencoded { Sender Single { ID LLUUID } { AlwaysRun BOOL } } } { ObjectAdd Medium NotTrusted Zerocoded { ObjectData Single { PCode U8 } { SenderID LLUUID } { GroupID LLUUID } { Material U8 } { AddFlags U32 } { PathCurve U8 } { ProfileCurve U8 } { PathBegin U8 } { PathEnd U8 } { PathScaleX U8 } { PathScaleY U8 } { PathShearX U8 } { PathShearY U8 } { PathTwist S8 } { PathTwistBegin S8 } { PathRadiusOffset S8 } { PathTaperX S8 } { PathTaperY S8 } { PathRevolutions U8 } { PathSkew S8 } { ProfileBegin U8 } { ProfileEnd U8 } { ProfileHollow U8 } { BypassRaycast U8 } { RayStart LLVector3 } { RayEnd LLVector3 } { RayTargetID LLUUID } { RayEndIsIntersection U8 } { Scale LLVector3 } { Rotation LLQuaternion } { TextureEntry Variable 2 } { NameValue Variable 2 } { State U8 } } { InventoryData Variable { ItemID LLUUID } { FolderID LLUUID } { CreatorID LLUUID } { OwnerID LLUUID } { GroupID LLUUID } { BaseMask U32 } { OwnerMask U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { GroupOwned BOOL } { AssetID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } { InventoryFile Single { Filename Variable 1 } } } { ObjectDelete Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } { Force BOOL } } { ObjectData Variable { ObjectLocalID U32 } } } { ObjectDuplicate Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } { SharedData Single { Offset LLVector3 } { DuplicateFlags U32 } } { ObjectData Variable { ObjectLocalID U32 } } } { ObjectDuplicateOnRay Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } { RayStart LLVector3 } { RayEnd LLVector3 } { BypassRaycast BOOL } { RayEndIsIntersection BOOL } { CopyCenters BOOL } { CopyRotates BOOL } { RayTargetID LLUUID } { DuplicateFlags U32 } } { ObjectData Variable { ObjectLocalID U32 } } } { MultipleObjectUpdate Medium NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { Type U8 } { Data Variable 1 } } } { RequestMultipleObjects Medium NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { CacheMissType U8 } { ID U32 } } } { ObjectPosition Medium NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { Position LLVector3 } } } { ObjectScale Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { Scale LLVector3 } } } { ObjectRotation Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { Rotation LLQuaternion } } } { ObjectFlagUpdate Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { ObjectLocalID U32 } { UsePhysics BOOL } { IsTemporary BOOL } { IsPhantom BOOL } { CastsShadows BOOL } } } { ObjectClickAction Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { ClickAction U8 } } } { ObjectImage Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { MediaURL Variable 1 } { TextureEntry Variable 2 } } } { ObjectMaterial Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { Material U8 } } } { ObjectShape Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { PathCurve U8 } { ProfileCurve U8 } { PathBegin U8 } { PathEnd U8 } { PathScaleX U8 } { PathScaleY U8 } { PathShearX U8 } { PathShearY U8 } { PathTwist S8 } { PathTwistBegin S8 } { PathRadiusOffset S8 } { PathTaperX S8 } { PathTaperY S8 } { PathRevolutions U8 } { PathSkew S8 } { ProfileBegin U8 } { ProfileEnd U8 } { ProfileHollow U8 } } } { ObjectExtraParams Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { ParamType U16 } { ParamInUse BOOL } { ParamSize U32 } { ParamData Variable 1 } } } { ObjectOwner Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { HeaderData Single { Override BOOL } { OwnerID LLUUID } { GroupID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } { ObjectGroup Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } { ObjectBuy Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } { CategoryID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } { SaleType U8 } { SalePrice S32 } } } { BuyObjectInventory Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { ObjectID LLUUID } { ItemID LLUUID } { FolderID LLUUID } } } { DerezContainer Low Trusted Zerocoded { Data Single { ObjectID LLUUID } { Delete BOOL } } } { ObjectPermissions Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { HeaderData Single { Override BOOL } } { ObjectData Variable { ObjectLocalID U32 } { Field U8 } { Set U8 } { Mask U32 } } } { ObjectSaleInfo Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { LocalID U32 } { SaleType U8 } { SalePrice S32 } } } { ObjectName Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { LocalID U32 } { Name Variable 1 } } } { ObjectDescription Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { LocalID U32 } { Description Variable 1 } } } { ObjectCategory Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { LocalID U32 } { Category U32 } } } { ObjectSelect Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } { ObjectDeselect Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } { ObjectAttach Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { AttachmentPoint U8 } } { ObjectData Variable { ObjectLocalID U32 } { Rotation LLQuaternion } } } { ObjectDetach Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } { ObjectDrop Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } { ObjectLink Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } { ObjectDelink Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } { ObjectHinge Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { JointType Single { Type U8 } } { ObjectData Variable { ObjectLocalID U32 } } } { ObjectDehinge Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { ObjectData Variable { ObjectLocalID U32 } } } { ObjectGrab Low NotTrusted Zerocoded { Sender Single { ID LLUUID } } { ObjectData Single { LocalID U32 } { GrabOffset LLVector3 } } } { ObjectGrabUpdate Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Single { ObjectID LLUUID } { GrabOffsetInitial LLVector3 } { GrabPosition LLVector3 } { TimeSinceLast U32 } } } { ObjectDeGrab Low NotTrusted Unencoded { Sender Single { ID LLUUID } } { ObjectData Single { LocalID U32 } } } { ObjectSpinStart Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Single { ObjectID LLUUID } } } { ObjectSpinUpdate Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Single { ObjectID LLUUID } { Rotation LLQuaternion } } } { ObjectSpinStop Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ObjectData Single { ObjectID LLUUID } } } { ObjectExportSelected Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { RequestID LLUUID } { VolumeDetail S16 } } { ObjectData Variable { ObjectID LLUUID } } } { ObjectExportReply Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { RequestID LLUUID } } { AssetData Single { SLXML_ID LLUUID } { Collada_ID LLUUID } { ErrorCode S32 } } { TextureData Variable { AssetID LLUUID } { AssetNum S32 } } } { ObjectImport Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { FolderID LLUUID } } { AssetData Single { FileID LLUUID 1 } { ObjectName Variable 1 } { Description Variable 1 } } } { ObjectImportReply Low NotTrusted Zerocoded { AssetData Single { FileID LLUUID 1 } { ErrorValue S32 } } } { ModifyLand Low NotTrusted Zerocoded { ModifyBlock Single { AgentID LLUUID } { Action U8 } { BrushSize U8 } { Seconds F32 } { Height F32 } } { ParcelData Variable { LocalID S32 } { West F32 } { South F32 } { East F32 } { North F32 } } } { VelocityInterpolateOn Low NotTrusted Unencoded } { VelocityInterpolateOff Low NotTrusted Unencoded } { StateSave Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { DataBlock Single { Filename Variable 1 } } } { ReportAutosaveCrash Low NotTrusted Unencoded { AutosaveData Single { PID S32 } { Status S32 } } } { SimWideDeletes Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { DataBlock Single { TargetID LLUUID } { Flags U32 } } } { StateLoad Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { DataBlock Single { Filename Variable 1 } } } { RequestObjectPropertiesFamily Medium NotTrusted Zerocoded { ObjectData Single { RequestFlags U32 } { AgentID LLUUID } { ObjectID LLUUID } } } { TrackAgent Low NotTrusted Unencoded { AgentBlock Single { AgentID LLUUID } { PreyID LLUUID } } } { GrantModification Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GranterName Variable 1 } } { EmpoweredBlock Variable { EmpoweredID LLUUID } } } { RevokeModification Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { GranterName Variable 1 } } { RevokedBlock Variable { RevokedID LLUUID } } } { RequestGrantedProxies Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } { GrantedProxies Low Trusted Unencoded { AgentData Single { AgentID LLUUID } } { ProxyBlock Variable { EmpoweredID LLUUID } } } { AddModifyAbility Low Trusted Zerocoded { TargetBlock Single { TargetIP IPADDR } { TargetPort IPPORT } } { AgentBlock Single { AgentID LLUUID } } { GranterBlock Variable { GranterID LLUUID } } } { RemoveModifyAbility Low Trusted Unencoded { TargetBlock Single { TargetIP IPADDR } { TargetPort IPPORT } } { AgentBlock Single { AgentID LLUUID } { RevokerID LLUUID } } } { ViewerStats Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { IP IPADDR } { StartTime U32 } { RunTime F32 } { FPS F32 } { Ping F32 } { MetersTraveled F64 } { RegionsVisited S32 } { SysRAM U32 } { SysOS Variable 1 } { SysCPU Variable 1 } { SysGPU Variable 1 } } { 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 Low NotTrusted Unencoded { Data Single { AgentID LLUUID } { TaskID LLUUID } { ItemID LLUUID } { Questions S32 } } } { UserReport Low NotTrusted Zerocoded { ReportData Single { ReportType U8 } { Category U8 } { ReporterID LLUUID } { Position LLVector3 } { CheckFlags U8 } { ScreenshotID LLUUID } { ObjectID LLUUID } { Summary Variable 1 } { Details Variable 2 } { VersionString Variable 1 } } { MeanCollision Variable { Perp LLUUID } { Time U32 } { Mag F32 } { Type U8 } } } { AlertMessage Low Trusted Unencoded { AlertData Single { Message Variable 1 } } } { AgentAlertMessage Low Trusted Unencoded { AgentData Single { AgentID LLUUID } } { AlertData Single { Modal BOOL } { Message Variable 1 } } } { MeanCollisionAlert Low Trusted Zerocoded { MeanCollision Variable { Victim LLUUID } { Perp LLUUID } { Time U32 } { Mag F32 } { Type U8 } } } { ViewerFrozenMessage Low Trusted Unencoded { FrozenData Single { Data BOOL } } } { HealthMessage Low Trusted Zerocoded { HealthData Single { Health F32 } } } { ChatFromSimulator Low Trusted Zerocoded { ChatData Single { ID LLUUID } { Name Variable 1 } { SourceType U8 } { Type U8 } { Audible U8 } { Message Variable 2 } } } { SimStats Low Trusted Unencoded { Region Single { RegionX U32 } { RegionY U32 } { RegionFlags U32 } { ObjectCapacity U32 } } { Stat Variable { StatID U32 } { StatValue F32 } } } { RequestRegionInfo Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } { RegionInfo Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { RegionInfo Single { SimName Variable 1 } { 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 } } } { GodUpdateRegionInfo Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { RegionInfo Single { SimName Variable 1 } { EstateID U32 } { ParentEstateID U32 } { RegionFlags U32 } { BillableFactor F32 } { PricePerMeter S32 } { RedirectGridX S32 } { RedirectGridY S32 } } } { NearestLandingRegionRequest Low Trusted Unencoded { RequestingRegionData Single { RegionHandle U64 } } } { NearestLandingRegionReply Low Trusted Unencoded { LandingRegionData Single { RegionHandle U64 } } } { NearestLandingRegionUpdated Low Trusted Unencoded { RegionData Single { RegionHandle U64 } } } { TeleportLandingStatusChanged Low Trusted Unencoded { RegionData Single { RegionHandle U64 } } } { RegionHandshake Low NotTrusted Zerocoded { RegionInfo Single { RegionFlags U32 } { SimAccess U8 } { SimName Variable 1 } { SimOwner LLUUID } { IsEstateManager BOOL } { 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 Low NotTrusted Zerocoded { RegionInfo Single { Flags U32 } } } { CoarseLocationUpdate Medium Trusted Unencoded { Location Variable { X U8 } { Y U8 } { Z U8 } } { Index Single { You S16 } { Prey S16 } } } { ImageData High Trusted Unencoded { ImageID Single { ID LLUUID } { Codec U8 } { Size U32 } { Packets U16 } } { ImageData Single { Data Variable 2 } } } { ImagePacket High Trusted Unencoded { ImageID Single { ID LLUUID } { Packet U16 } } { ImageData Single { Data Variable 2 } } } { LayerData High Trusted Unencoded { LayerID Single { Type U8 } } { LayerData Single { Data Variable 2 } } } { ObjectUpdate High Trusted Zerocoded { RegionData Single { RegionHandle U64 } { TimeDilation U16 } } { ObjectData Variable { ID U32 } { State U8 } { FullID LLUUID } { CRC U32 } { PCode U8 } { Material U8 } { ClickAction U8 } { Scale LLVector3 } { ObjectData Variable 1 } { ParentID U32 } { UpdateFlags U32 } { PathCurve U8 } { ProfileCurve U8 } { PathBegin U8 } { PathEnd U8 } { PathScaleX U8 } { PathScaleY U8 } { PathShearX U8 } { PathShearY U8 } { PathTwist S8 } { PathTwistBegin S8 } { PathRadiusOffset S8 } { PathTaperX S8 } { PathTaperY S8 } { PathRevolutions U8 } { PathSkew S8 } { ProfileBegin U8 } { ProfileEnd U8 } { ProfileHollow U8 } { TextureEntry Variable 2 } { TextureAnim Variable 1 } { NameValue Variable 2 } { Data Variable 2 } { Text Variable 1 } { TextColor Fixed 4 } { MediaURL Variable 1 } { PSBlock Variable 1 } { ExtraParams Variable 1 } { Sound LLUUID } { Gain F32 } { Flags U8 } { Radius F32 } { JointType U8 } { JointPivot LLVector3 } { JointAxisOrAnchor LLVector3 } } } { ObjectUpdateCompressed High Trusted Unencoded { RegionData Single { RegionHandle U64 } { TimeDilation U16 } } { ObjectData Variable { UpdateFlags U32 } { Data Variable 2 } } } { ObjectUpdateCached High Trusted Unencoded { RegionData Single { RegionHandle U64 } { TimeDilation U16 } } { ObjectData Variable { ID U32 } { CRC U32 } { UpdateFlags U32 } } } { ImprovedTerseObjectUpdate High Trusted Unencoded { RegionData Single { RegionHandle U64 } { TimeDilation U16 } } { ObjectData Variable { Data Variable 1 } { TextureEntry Variable 2 } } } { KillObject High Trusted Unencoded { ObjectData Variable { ID U32 } } } { AgentToNewRegion High Trusted Unencoded { RegionData Single { SessionID LLUUID } { IP IPADDR } { Port IPPORT } { Handle U64 } } } { CrossedRegion Medium Trusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { RegionData Single { SimIP IPADDR } { SimPort IPPORT } { RegionHandle U64 } } { Info Single { Position LLVector3 } { LookAt LLVector3 } } } { SimulatorViewerTimeMessage Low Trusted Unencoded { TimeInfo Single { UsecSinceStart U64 } { SecPerDay U32 } { SecPerYear U32 } { SunDirection LLVector3 } { SunPhase F32 } { SunAngVelocity LLVector3 } } } { EnableSimulator Low Trusted Unencoded { SimulatorInfo Single { Handle U64 } { IP IPADDR } { Port IPPORT } } } { DisableSimulator Low Trusted Unencoded } { ConfirmEnableSimulator Medium Trusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } { TransferRequest Low NotTrusted Zerocoded { TransferInfo Single { TransferID LLUUID } { ChannelType S32 } { SourceType S32 } { Priority F32 } { Params Variable 2 } } } { TransferInfo Low NotTrusted Zerocoded { TransferInfo Single { TransferID LLUUID } { ChannelType S32 } { TargetType S32 } { Status S32 } { Size S32 } } } { TransferPacket High NotTrusted Unencoded { TransferData Single { TransferID LLUUID } { ChannelType S32 } { Packet S32 } { Status S32 } { Data Variable 2 } } } { TransferAbort Low NotTrusted Zerocoded { TransferInfo Single { TransferID LLUUID } { ChannelType S32 } } } { TransferPriority Low NotTrusted Zerocoded { TransferInfo Single { TransferID LLUUID } { ChannelType S32 } { Priority F32 } } } { RequestXfer Low NotTrusted Zerocoded { XferID Single { ID U64 } { Filename Variable 1 } { FilePath U8 } { DeleteOnCompletion BOOL } { UseBigPackets BOOL } { VFileID LLUUID } { VFileType S16 } } } { SendXferPacket High NotTrusted Unencoded { XferID Single { ID U64 } { Packet U32 } } { DataPacket Single { Data Variable 2 } } } { ConfirmXferPacket High NotTrusted Unencoded { XferID Single { ID U64 } { Packet U32 } } } { AbortXfer Low NotTrusted Unencoded { XferID Single { ID U64 } { Result S32 } } } { RequestAvatarInfo Low Trusted Unencoded { DataBlock Single { FullID LLUUID } } } { AvatarAnimation High Trusted Unencoded { Sender Single { ID LLUUID } } { AnimationList Variable { AnimID LLUUID } { AnimSequenceID S32 } } { AnimationSourceList Variable { ObjectID LLUUID } } } { AvatarAppearance Low Trusted Zerocoded { Sender Single { ID LLUUID } { IsTrial BOOL } } { ObjectData Single { TextureEntry Variable 2 } } { VisualParam Variable { ParamValue U8 } } } { AvatarSitResponse High Trusted Zerocoded { SitObject Single { ID LLUUID } } { SitTransform Single { AutoPilot BOOL } { SitPosition LLVector3 } { SitRotation LLQuaternion } { CameraEyeOffset LLVector3 } { CameraAtOffset LLVector3 } { ForceMouselook BOOL } } } { SetFollowCamProperties Low Trusted Unencoded { ObjectData Single { ObjectID LLUUID } } { CameraProperty Variable { Type S32 } { Value F32 } } } { ClearFollowCamProperties Low Trusted Unencoded { ObjectData Single { ObjectID LLUUID } } } { CameraConstraint High Trusted Zerocoded { CameraCollidePlane Single { Plane LLVector4 } } } { ObjectProperties Medium Trusted Zerocoded { ObjectData Variable { ObjectID LLUUID } { CreatorID LLUUID } { OwnerID LLUUID } { GroupID LLUUID } { BaseMask U32 } { OwnerMask U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { OwnershipCost S32 } { SaleType U8 } { SalePrice S32 } { AggregatePerms U8 } { AggregatePermTextures U8 } { AggregatePermTexturesOwner U8 } { Category U32 } { InventorySerial 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 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 } { SalePrice S32 } { Category U32 } { LastOwnerID LLUUID } { Name Variable 1 } { Description Variable 1 } } } { RequestPayPrice Low NotTrusted Unencoded { ObjectData Single { ObjectID LLUUID } } } { PayPriceReply Low Trusted Unencoded { ObjectData Single { ObjectID LLUUID } { DefaultPayPrice S32 } } { ButtonData Variable { PayButton S32 } } } { KickUser Low Trusted Unencoded { TargetBlock Single { TargetIP IPADDR } { TargetPort IPPORT } } { UserInfo Single { AgentID LLUUID } { SessionID LLUUID } { Reason Variable 2 } } } { KickUserAck Low Trusted Unencoded { UserInfo Single { SessionID LLUUID } { Flags U32 } } } { GodKickUser Low NotTrusted Unencoded { UserInfo Single { GodID LLUUID } { GodSessionID LLUUID } { AgentID LLUUID } { KickFlags U32 } { Reason Variable 2 } } } { SystemKickUser Low Trusted Unencoded { AgentInfo Variable { AgentID LLUUID } } } { EjectUser Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { TargetID LLUUID } { Flags U32 } } } { FreezeUser Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { TargetID LLUUID } { Flags U32 } } } { AvatarPropertiesRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { AvatarID LLUUID } } } { AvatarPropertiesRequestBackend Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { AvatarID LLUUID } { GodLevel U8 } } } { AvatarPropertiesReply Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } { AvatarID LLUUID } } { PropertiesData Single { ImageID LLUUID } { FLImageID LLUUID } { PartnerID LLUUID } { AboutText Variable 2 } { WantToMask U32 } { WantToText Variable 1 } { SkillsMask U32 } { SkillsText Variable 1 } { FLAboutText Variable 1 } { BornOn Variable 1 } { CharterMember Variable 1 } { AllowPublish BOOL } { MaturePublish BOOL } { Identified BOOL } { Transacted BOOL } } } { AvatarGroupsReply Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } { AvatarID LLUUID } } { GroupData Variable { GroupOfficer BOOL } { GroupTitle Variable 1 } { GroupID LLUUID } { GroupName Variable 1 } { GroupInsigniaID LLUUID } } } { AvatarPropertiesUpdate Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { PropertiesData Single { AvatarID LLUUID } { ImageID LLUUID } { FLImageID LLUUID } { AboutText Variable 2 } { FLAboutText Variable 1 } { WantToMask U32 } { WantToText Variable 1 } { SkillsMask U32 } { SkillsText Variable 1 } { AllowPublish BOOL } { MaturePublish BOOL } } } { AvatarStatisticsReply Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { AvatarData Single { AvatarID LLUUID } } { StatisticsData Variable { Name Variable 1 } { Positive S32 } { Negative S32 } } } { AvatarNotesReply Low Trusted Unencoded { AgentData Single { AgentID LLUUID } } { Data Single { TargetID LLUUID } { Notes Variable 2 } } } { AvatarNotesUpdate Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { Data Single { TargetID LLUUID } { Notes Variable 2 } } } { AvatarPicksReply Low Trusted Unencoded { AgentData Single { AgentID LLUUID } { TargetID LLUUID } } { Data Variable { PickID LLUUID } { PickName Variable 1 } } } { EventInfoRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { EventData Single { EventID U32 } } } { 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 Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { EventData Single { EventID U32 } } } { EventNotificationRemoveRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { EventData Single { EventID U32 } } } { 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 } } } { PickInfoRequest Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { Data Single { PickID LLUUID } } } { 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 Low NotTrusted Unencoded { AgentData Single { AgentID 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 Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { Data Single { PickID LLUUID } } } { PickGodDelete Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { PickID LLUUID } { QueryID LLUUID } } } { ScriptQuestion Low Trusted Unencoded { Data Single { TaskID LLUUID } { ItemID LLUUID } { ObjectName Variable 1 } { ObjectOwner Variable 1 } { Questions S32 } } } { ScriptControlChange Low NotTrusted Unencoded { Data Variable { TakeControls BOOL } { Controls U32 } { PassToAgent BOOL } } } { 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 Low NotTrusted Zerocoded { Data Single { AgentID LLUUID } { ObjectID LLUUID } { ChatChannel S32 } { ButtonIndex S32 } { ButtonLabel Variable 1 } } } { ForceScriptControlRelease Low NotTrusted Unencoded { Data Single { ID LLUUID } } } { RevokePermissions Low NotTrusted Unencoded { Data Single { AgentID LLUUID } { ObjectID LLUUID } { ObjectPermissions U32 } } } { LoadURL Low Trusted Unencoded { Data Single { ObjectName Variable 1 } { OwnerID LLUUID } { Message Variable 1 } { URL Variable 1 } } } { ScriptTeleportRequest Low NotTrusted Unencoded { Data Single { ObjectName Variable 1 } { SimName Variable 1 } { SimPosition LLVector3 } { LookAt LLVector3 } } } { ParcelOverlay Low Trusted Zerocoded { ParcelData Single { SequenceID S32 } { Data Variable 2 } } } { ParcelPropertiesRequest Medium NotTrusted Zerocoded { ParcelData Single { AgentID LLUUID } { SequenceID S32 } { West F32 } { South F32 } { East F32 } { North F32 } { SnapSelection BOOL } } } { ParcelPropertiesRequestByID Low NotTrusted Zerocoded { ParcelData Single { AgentID LLUUID } { SequenceID S32 } { LocalID S32 } } } { 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 } { ClaimPrice S32 } { RentPrice S32 } { AABBMin LLVector3 } { AABBMax LLVector3 } { Bitmap Variable 2 } { Area S32 } { Status U8 } { 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 } { Desc Variable 1 } { MusicURL Variable 1 } { MediaURL Variable 1 } { MediaID LLUUID } { MediaAutoScale U8 } { GroupID LLUUID } { PassPrice S32 } { PassHours F32 } { Category U8 } { AuthBuyerID LLUUID } { SnapshotID LLUUID } { UserLocation LLVector3 } { UserLookAt LLVector3 } { LandingType U8 } } } { ParcelPropertiesUpdate Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } { Flags U32 } { ParcelFlags U32 } { SalePrice S32 } { Name Variable 1 } { Desc Variable 1 } { MusicURL Variable 1 } { MediaURL Variable 1 } { MediaID LLUUID } { MediaAutoScale U8 } { GroupID LLUUID } { PassPrice S32 } { PassHours F32 } { Category U8 } { AuthBuyerID LLUUID } { SnapshotID LLUUID } { UserLocation LLVector3 } { UserLookAt LLVector3 } { LandingType U8 } } } { ParcelReturnObjects Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } { ReturnType S32 } { OtherCleanTime S32 } } { TaskIDs Variable { TaskID LLUUID } } { OwnerIDs Variable { OwnerID LLUUID } } } { ParcelDisableObjects Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } { ReturnType S32 } { OtherCleanTime S32 } } { TaskIDs Variable { TaskID LLUUID } } { OwnerIDs Variable { OwnerID LLUUID } } } { ParcelSelectObjects Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } { ReturnType S32 } } { ReturnIDs Variable { ReturnID LLUUID } } } { ForceObjectSelect Low Trusted Unencoded { Header Single { ResetList BOOL } } { Data Variable { LocalID U32 } } } { ParcelBuyPass Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } } } { ParcelDeedToGroup Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { GroupID LLUUID } { LocalID S32 } } } { ParcelReclaim Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { LocalID S32 } } } { ParcelClaim Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { GroupID LLUUID } { IsGroupOwned BOOL } { Final BOOL } } { ParcelData Variable { West F32 } { South F32 } { East F32 } { North F32 } } } { ParcelJoin Low NotTrusted Unencoded { ParcelData Single { AgentID LLUUID } { West F32 } { South F32 } { East F32 } { North F32 } } } { ParcelDivide Low NotTrusted Unencoded { ParcelData Single { AgentID LLUUID } { West F32 } { South F32 } { East F32 } { North F32 } } } { ParcelRelease Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { LocalID S32 } } } { ParcelBuy Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { GroupID LLUUID } { IsGroupOwned BOOL } { LocalID S32 } { Final BOOL } } } { ParcelGodForceOwner Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { OwnerID LLUUID } { LocalID S32 } } } { ParcelAccessListRequest Low NotTrusted Zerocoded { Data Single { AgentID LLUUID } { SequenceID S32 } { Flags U32 } { LocalID S32 } } } { ParcelAccessListReply Low NotTrusted Zerocoded { Data Single { AgentID LLUUID } { SequenceID S32 } { Flags U32 } { LocalID S32 } } { List Variable { ID LLUUID } { Time S32 } { Flags U32 } } } { ParcelAccessListUpdate Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { Flags U32 } { LocalID S32 } } { List Variable { ID LLUUID } { Time S32 } { Flags U32 } } } { ParcelDwellRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { Data Single { LocalID S32 } { ParcelID LLUUID } } } { ParcelDwellReply Low Trusted Unencoded { AgentData Single { AgentID LLUUID } } { Data Single { LocalID S32 } { ParcelID LLUUID } { Dwell F32 } } } { RequestParcelTransfer Low Trusted Zerocoded { Data Single { TransactionID LLUUID } { TransactionTime U32 } { SourceID LLUUID } { DestID LLUUID } { OwnerID LLUUID } { Flags U8 } { TransactionType S32 } { Amount S32 } { BillableArea S32 } { ActualArea S32 } { Final BOOL } { ReservedNewbie BOOL } } } { 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 } } } { RemoveParcel Low Trusted Unencoded { ParcelData Variable { ParcelID LLUUID } } } { MergeParcel Low Trusted Unencoded { MasterParcelData Single { MasterID LLUUID } } { SlaveParcelData Variable { SlaveID LLUUID } } } { 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 } } } { CheckParcelSales Low Trusted Unencoded { RegionData Variable { RegionHandle U64 } } } { ParcelSales Low Trusted Unencoded { ParcelData Variable { ParcelID LLUUID } { BuyerID LLUUID } } } { ParcelGodMarkAsContent Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } } } { ParcelGodReserveForNewbie Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } { SnapshotID LLUUID } } } { ViewerStartAuction Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ParcelData Single { LocalID S32 } { SnapshotID LLUUID } } } { StartAuction Low Trusted Unencoded { AgentData Single { AgentID LLUUID } } { ParcelData Single { ParcelID LLUUID } { SnapshotID LLUUID } { Name Variable 1 } } } { ConfirmAuctionStart Low Trusted Unencoded { AuctionData Single { ParcelID LLUUID } { AuctionID U32 } } } { CompleteAuction Low Trusted Unencoded { ParcelData Variable { ParcelID LLUUID } } } { CancelAuction Low Trusted Unencoded { ParcelData Variable { ParcelID LLUUID } } } { CheckParcelAuctions Low Trusted Unencoded { RegionData Variable { RegionHandle U64 } } } { ParcelAuctions Low Trusted Unencoded { ParcelData Variable { ParcelID LLUUID } { WinnerID LLUUID } } } { UUIDNameRequest Low NotTrusted Unencoded { UUIDNameBlock Variable { ID LLUUID } } } { UUIDNameReply Low Trusted Unencoded { UUIDNameBlock Variable { ID LLUUID } { FirstName Variable 1 } { LastName Variable 1 } } } { UUIDGroupNameRequest Low NotTrusted Unencoded { UUIDNameBlock Variable { ID LLUUID } } } { UUIDGroupNameReply Low Trusted Unencoded { UUIDNameBlock Variable { ID LLUUID } { GroupName Variable 1 } } } { ChatPass Low Trusted Zerocoded { ChatData Single { Channel S32 } { Position LLVector3 } { ID LLUUID } { Name Variable 1 } { SourceType U8 } { Type U8 } { Radius F32 } { SimAccess U8 } { Message Variable 2 } } } { EdgeDataPacket High Trusted Zerocoded { EdgeData Single { LayerType U8 } { Direction U8 } { LayerData Variable 2 } } } { SimStatus Medium Trusted Unencoded { SimStatus Single { CanAcceptAgents BOOL } { CanAcceptTasks BOOL } } } { 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 } { Far F32 } { Aspect F32 } { Throttles Variable 1 } { LocomotionState U32 } { HeadRotation LLQuaternion } { BodyRotation LLQuaternion } { ControlFlags U32 } { EnergyLevel F32 } { GodLevel U8 } { AlwaysRun BOOL } { PreyAgent LLUUID } { AgentAccess U8 } { AgentTextures Variable 2 } { GroupIndex S8 } } { GroupData Variable { GroupID LLUUID } { GroupOfficer BOOL } } { AnimationData Variable { Animation LLUUID } { ObjectID LLUUID } } { GranterBlock Variable { GranterID LLUUID } } { NVPairData Variable { NVPairs Variable 2 } } { VisualParam Variable { ParamValue U8 } } } { ChildAgentAlive High Trusted Unencoded { AgentData Single { RegionHandle U64 } { ViewerCircuitCode U32 } { AgentID LLUUID } { SessionID LLUUID } } } { 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 } } } { ChildAgentDying Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } { ChildAgentUnknown Low Trusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } { PassObject High Trusted Zerocoded { ObjectData Single { ID LLUUID } { ParentID LLUUID } { CreatorID LLUUID } { OwnerID LLUUID } { GroupID LLUUID } { BaseMask U32 } { OwnerMask U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { GroupOwned BOOL } { 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 } { PathEnd U8 } { PathScaleX U8 } { PathScaleY U8 } { PathShearX U8 } { PathShearY U8 } { PathTwist S8 } { PathTwistBegin S8 } { PathRadiusOffset S8 } { PathTaperX S8 } { PathTaperY S8 } { PathRevolutions U8 } { PathSkew S8 } { ProfileBegin U8 } { ProfileEnd U8 } { ProfileHollow U8 } { TextureEntry Variable 2 } { SubType S16 } { Active U8 } { Data Variable 2 } } { NVPairData Variable { NVPairs Variable 2 } } } { AtomicPassObject High Trusted Unencoded { TaskData Single { TaskID LLUUID } { AttachmentNeedsSave BOOL } } } { KillChildAgents Low Trusted Unencoded { IDBlock Single { AgentID LLUUID } } } { GetScriptRunning Low NotTrusted Unencoded { Script Single { ObjectID LLUUID } { ItemID LLUUID } } } { ScriptRunningReply Low NotTrusted Unencoded { Script Single { ObjectID LLUUID } { ItemID LLUUID } { Running BOOL } } } { SetScriptRunning Low NotTrusted Unencoded { Script Single { ObjectID LLUUID } { ItemID LLUUID } { Running BOOL } } } { ScriptReset Low NotTrusted Unencoded { Script Single { AgentID LLUUID } { ObjectID LLUUID } { ItemID LLUUID } } } { 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 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 } } } { CompleteAgentMovement Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { CircuitCode U32 } } } { AgentMovementComplete Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { Position LLVector3 } { LookAt LLVector3 } { RegionHandle U64 } { Timestamp U32 } } } { LogLogin Low Trusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { ViewerDigest LLUUID } { LastExecFroze BOOL } { SpaceIP IPADDR } } } { ConnectAgentToUserserver Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } { ConnectToUserserver Low NotTrusted Unencoded } { DataServerLogout Low Trusted Unencoded { UserData Single { AgentID LLUUID } { ViewerIP IPADDR } { Disconnect BOOL } { SessionID LLUUID } } } { LogoutRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } { FinalizeLogout Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } } { LogoutReply Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { InventoryData Variable { ItemID LLUUID } { NewAssetID LLUUID } } } { LogoutDemand Low NotTrusted Unencoded { LogoutBlock Single { SessionID LLUUID } } } { ViewerLoginLocationRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { PositionBlock Single { ViewerRegion U64 } { ViewerPosition LLVector3 } } { URLBlock Single { SimName Variable 1 } { Pos LLVector3 } } } { ViewerSimLocationRequest Low NotTrusted Unencoded { PositionBlock Single { AgentID LLUUID } { SimName Variable 1 } } } { RequestLocationGetAccess Low Trusted Unencoded { PositionBlock Single { AgentID LLUUID } { SessionID LLUUID } { ViewerIP IPADDR } { ViewerPort IPPORT } { ViewerRegion U64 } { ViewerPosition LLVector3 } } } { RequestLocationGetAccessReply Low Trusted Unencoded { PositionBlock Single { ViewerIP IPADDR } { ViewerPort IPPORT } { ViewerRegion U64 } { ViewerPosition LLVector3 } { TravelAccess U8 } } } { UserListRequest Low NotTrusted Unencoded } { ImprovedInstantMessage Low NotTrusted Zerocoded { MessageBlock Single { FromAgentID LLUUID } { ToAgentID LLUUID } { ParentEstateID U32 } { RegionID LLUUID } { Position LLVector3 } { Offline U8 } { Dialog U8 } { ID LLUUID } { Timestamp U32 } { FromAgentName Variable 1 } { Message Variable 2 } { BinaryBucket Variable 2 } } } { StartGroupIM Low NotTrusted Unencoded { SessionBlock Single { SessionID LLUUID } { Everyone U8 } } { Participants Variable { AgentID LLUUID } } } { DropGroupIM Low NotTrusted Unencoded { SessionBlock Single { SessionID LLUUID } { AgentID LLUUID } } } { GroupIM Low NotTrusted Unencoded { MessageBlock Single { SessionID LLUUID } { FromID LLUUID } { FromAgentName Variable 1 } { Message Variable 2 } } } { RetrieveInstantMessages Low NotTrusted Unencoded { AgentBlock Single { Agent LLUUID } } } { DequeueInstantMessages Low Trusted Unencoded } { FindAgent Low NotTrusted Unencoded { AgentBlock Single { Hunter LLUUID } { Prey LLUUID } { SpaceIP IPADDR } } { LocationBlock Variable { GlobalX F64 } { GlobalY F64 } } } { TrackOnlineStatus Low NotTrusted Zerocoded { AgentBlock Variable { AgentID LLUUID } } } { IgnoreOnlineStatus Low NotTrusted Zerocoded { AgentBlock Variable { AgentID LLUUID } } } { RequestGodlikePowers Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { RequestBlock Single { Godlike BOOL } { Token LLUUID } } } { GrantGodlikePowers Low Trusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { GrantData Single { GodLevel U8 } { Token LLUUID } } } { GodlikeMessage Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { MethodData Single { Method Variable 1 } { Invoice LLUUID } } { ParamList Variable { Parameter Variable 1 } } } { EstateOwnerMessage Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { MethodData Single { Method Variable 1 } { Invoice LLUUID } } { ParamList Variable { Parameter Variable 1 } } } { GenericMessage Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { MethodData Single { Method Variable 1 } { Invoice LLUUID } } { ParamList Variable { Parameter Variable 1 } } } { MuteListRequest Low NotTrusted Unencoded { MuteData Single { AgentID LLUUID } { MuteCRC U32 } } } { UpdateMuteListEntry Low NotTrusted Unencoded { MuteData Single { AgentID LLUUID } { MuteID LLUUID } { MuteName Variable 1 } } } { RemoveMuteListEntry Low NotTrusted Unencoded { MuteData Single { AgentID LLUUID } { MuteID LLUUID } } } { UpdateInventoryItem Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { InventoryData Variable { ItemID LLUUID } { FolderID LLUUID } { CreatorID LLUUID } { OwnerID LLUUID } { GroupID LLUUID } { BaseMask U32 } { OwnerMask U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { GroupOwned BOOL } { AssetID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } } { UpdateInventoryItemAsset Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { InventoryData Variable { ItemID LLUUID } { AssetID LLUUID } } } { MoveInventoryItem Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { Stamp BOOL } } { InventoryData Variable { ItemID LLUUID } { FolderID LLUUID } } } { CopyInventoryItem Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { InventoryData Variable { OldItemID LLUUID } { NewFolderID LLUUID } } } { RemoveInventoryItem Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { InventoryData Variable { ItemID LLUUID } } } { ChangeInventoryItemFlags Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { InventoryData Variable { ItemID LLUUID } { Flags U32 } } } { SaveAssetIntoInventory Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { InventoryData Single { ItemID LLUUID } { NewAssetID LLUUID } } } { CreateInventoryFolder Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { FolderData Single { FolderID LLUUID } { ParentID LLUUID } { Type S8 } { Name Variable 1 } } } { UpdateInventoryFolder Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { FolderData Variable { FolderID LLUUID } { ParentID LLUUID } { Type S8 } { Name Variable 1 } } } { MoveInventoryFolder Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { Stamp BOOL } } { InventoryData Variable { FolderID LLUUID } { ParentID LLUUID } } } { RemoveInventoryFolder Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { FolderData Variable { FolderID LLUUID } } } { FetchInventoryDescendents Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { InventoryData Single { FolderID LLUUID } { OwnerID LLUUID } { SortOrder S32 } { FetchFolders BOOL } { FetchItems BOOL } } } { InventoryDescendents Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { FolderID LLUUID } { OwnerID LLUUID } { Version S32 } { Descendents S32 } } { FolderData Variable { FolderID LLUUID } { ParentID LLUUID } { Type S8 } { Name Variable 1 } } { ItemData Variable { ItemID LLUUID } { FolderID LLUUID } { CreatorID LLUUID } { OwnerID LLUUID } { GroupID LLUUID } { BaseMask U32 } { OwnerMask U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { GroupOwned BOOL } { AssetID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } } { FetchInventory Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { InventoryData Variable { OwnerID LLUUID } { ItemID LLUUID } } } { FetchInventoryReply Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { InventoryData Variable { ItemID LLUUID } { FolderID LLUUID } { CreatorID LLUUID } { OwnerID LLUUID } { GroupID LLUUID } { BaseMask U32 } { OwnerMask U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { GroupOwned BOOL } { AssetID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } } { 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 } { FolderID LLUUID } { CreatorID LLUUID } { OwnerID LLUUID } { GroupID LLUUID } { BaseMask U32 } { OwnerMask U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { GroupOwned BOOL } { AssetID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } } { RequestInventoryAsset Low Trusted Unencoded { QueryData Single { QueryID LLUUID } { AgentID LLUUID } { OwnerID LLUUID } { ItemID LLUUID } } } { InventoryAssetResponse Low Trusted Unencoded { QueryData Single { QueryID LLUUID } { AssetID LLUUID } { IsReadable BOOL } } } { RemoveInventoryObjects Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { FolderData Variable { FolderID LLUUID } } { ItemData Variable { ItemID LLUUID } } } { PurgeInventoryDescendents Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { InventoryData Single { FolderID LLUUID } } } { UpdateTaskInventory Low NotTrusted Zerocoded { UpdateData Single { AgentID LLUUID } { GroupID LLUUID } { LocalID U32 } { Key U8 } } { InventoryData Single { ItemID LLUUID } { FolderID LLUUID } { CreatorID LLUUID } { OwnerID LLUUID } { GroupID LLUUID } { BaseMask U32 } { OwnerMask U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { GroupOwned BOOL } { AssetID 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 { InventoryData Single { AgentID LLUUID } { GroupID LLUUID } { LocalID U32 } { ItemID LLUUID } } } { MoveTaskInventory Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } { FolderID LLUUID } } { InventoryData Single { LocalID U32 } { ItemID LLUUID } } } { RequestTaskInventory Low NotTrusted Unencoded { InventoryData Single { AgentID LLUUID } { LocalID U32 } } } { ReplyTaskInventory Low Trusted Zerocoded { InventoryData Single { TaskID LLUUID } { Serial S16 } { Filename Variable 1 } } } { DeRezObject Low NotTrusted Zerocoded { AgentBlock Single { AgentID LLUUID } { SessionID LLUUID } { GroupID LLUUID } { Destination U8 } { DestinationID LLUUID } { TransactionID LLUUID } { PacketCount U8 } { PacketNumber U8 } } { ObjectData Variable { ObjectLocalID U32 } } } { DeRezAck Low Trusted Unencoded } { RezObject Low NotTrusted Zerocoded { AgentData Single { AgentID 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 } { OwnerID LLUUID } { GroupID LLUUID } { BaseMask U32 } { OwnerMask U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { GroupOwned BOOL } { AssetID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } } { DeclineInventory Low NotTrusted Unencoded { InfoBlock Single { TransactionID LLUUID } } } { TransferInventory Low Trusted Zerocoded { InfoBlock Single { SourceID LLUUID } { DestID LLUUID } { TransactionID LLUUID } } { InventoryBlock Variable { InventoryID LLUUID } { Type S8 } } } { TransferInventoryAck Low Trusted Zerocoded { InfoBlock Single { TransactionID LLUUID } { InventoryID LLUUID } } } { RequestFriendship Low NotTrusted Unencoded { AgentBlock Single { SourceID LLUUID } { FolderID LLUUID } { DestID LLUUID } { TransactionID LLUUID } } } { AcceptFriendship Low NotTrusted Unencoded { TransactionBlock Single { TransactionID LLUUID } } { FolderData Variable { FolderID LLUUID } } } { DeclineFriendship Low NotTrusted Unencoded { TransactionBlock Single { TransactionID LLUUID } } } { FormFriendship Low Trusted Unencoded { AgentBlock Single { SourceID LLUUID } { DestID LLUUID } } } { TerminateFriendship Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ExBlock Single { OtherID LLUUID } } } { OfferCallingCard Low NotTrusted Unencoded { AgentBlock Single { SourceID LLUUID } { DestID LLUUID } { TransactionID LLUUID } } } { AcceptCallingCard Low NotTrusted Unencoded { TransactionBlock Single { TransactionID LLUUID } } { FolderData Variable { FolderID LLUUID } } } { DeclineCallingCard Low NotTrusted Unencoded { TransactionBlock Single { TransactionID LLUUID } } } { RezScript Low NotTrusted Zerocoded { UpdateBlock Single { AgentID LLUUID } { GroupID LLUUID } { ObjectLocalID U32 } { Enabled BOOL } } { InventoryBlock Single { ItemID LLUUID } { FolderID LLUUID } { CreatorID LLUUID } { OwnerID LLUUID } { GroupID LLUUID } { BaseMask U32 } { OwnerMask U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { GroupOwned BOOL } { AssetID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } } { CreateInventoryItem Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { InventoryBlock Single { FolderID LLUUID } { NextOwnerMask U32 } { Type S8 } { InvType S8 } { Name Variable 1 } { Description Variable 1 } } } { 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 } } } { RegionHandleRequest Low NotTrusted Unencoded { RequestBlock Single { RegionID LLUUID } } } { RegionIDAndHandleReply Low Trusted Unencoded { ReplyBlock Single { RegionID LLUUID } { RegionHandle U64 } } } { MoneyTransferRequest Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { MoneyData Single { SourceID LLUUID } { DestID LLUUID } { Flags U8 } { Amount S32 } { AggregatePermNextOwner U8 } { AggregatePermInventory U8 } { TransactionType S32 } { Description Variable 1 } } } { MoneyTransferBackend Low Trusted Zerocoded { MoneyData Single { TransactionID LLUUID } { TransactionTime U32 } { SourceID LLUUID } { DestID LLUUID } { Flags U8 } { Amount S32 } { AggregatePermNextOwner U8 } { AggregatePermInventory U8 } { TransactionType S32 } { Description Variable 1 } } } { BulkMoneyTransfer Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } { RegionX U32 } { RegionY U32 } } { MoneyData Variable { TransactionID LLUUID } { DestID LLUUID } { Flags U8 } { Amount S32 } { TransactionType S32 } { Description Variable 1 } } } { AdjustBalance Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { Delta S32 } } } { MoneyBalanceRequest Low NotTrusted Zerocoded { MoneyData Single { TransactionID LLUUID } { AgentID LLUUID } } } { MoneyBalanceReply Low Trusted Zerocoded { MoneyData Single { AgentID LLUUID } { TransactionID LLUUID } { TransactionSuccess BOOL } { MoneyBalance S32 } { SquareMetersCredit S32 } { SquareMetersCommitted S32 } { Description Variable 1 } } } { RoutedMoneyBalanceReply Low Trusted Zerocoded { TargetBlock Single { TargetIP IPADDR } { TargetPort IPPORT } } { MoneyData Single { AgentID LLUUID } { TransactionID LLUUID } { TransactionSuccess BOOL } { MoneyBalance S32 } { SquareMetersCredit S32 } { SquareMetersCommitted S32 } { Description Variable 1 } } } { MoneyHistoryRequest Low NotTrusted Unencoded { MoneyData Single { AgentID LLUUID } { StartPeriod S32 } { EndPeriod S32 } } } { MoneyHistoryReply Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { MoneyData Single { StartPeriod S32 } { EndPeriod S32 } { Balance S32 } { StartDate Variable 1 } { TaxEstimate S32 } { StipendEstimate S32 } { BonusEstimate S32 } } { HistoryData Variable { Description Variable 1 } { Amount S32 } } } { MoneySummaryRequest Low NotTrusted Unencoded { MoneyData Single { AgentID LLUUID } { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } } } { MoneySummaryReply Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { MoneyData Single { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } { StartDate Variable 1 } { 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 } { TaxDate Variable 1 } } } { MoneyDetailsRequest Low NotTrusted Unencoded { MoneyData Single { AgentID LLUUID } { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } } } { MoneyDetailsReply Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { MoneyData Single { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } { StartDate Variable 1 } } { HistoryData Variable { Description Variable 1 } { Amount S32 } } } { MoneyTransactionsRequest Low NotTrusted Unencoded { MoneyData Single { AgentID LLUUID } { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } } } { MoneyTransactionsReply Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { MoneyData Single { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } { StartDate Variable 1 } } { HistoryData Variable { Time Variable 1 } { User Variable 1 } { Type S32 } { Item Variable 1 } { Amount S32 } } } { GestureUpdate Medium NotTrusted Unencoded { AgentBlock Single { AgentID LLUUID } { Filename Variable 1 } { ToViewer BOOL } } } { GestureRequest Low NotTrusted Unencoded { AgentBlock Single { AgentID LLUUID } { Reset BOOL } } } { ActivateGestures Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { Flags U32 } } { Data Variable { ItemID LLUUID } { AssetID LLUUID } { GestureFlags U32 } } } { DeactivateGestures Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { Flags U32 } } { Data Variable { ItemID LLUUID } { GestureFlags U32 } } } { InventoryUpdate Low Trusted Unencoded { AgentData Single { AgentID LLUUID } } { InventoryData Single { IsComplete U8 } { Filename Variable 1 } } } { MuteListUpdate Low Trusted Unencoded { MuteData Single { AgentID LLUUID } { Filename Variable 1 } } } { UseCachedMuteList Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } } { UserLoginLocationReply Low Trusted Zerocoded { AgentData Single { SessionID LLUUID } { Message Variable 1 } } { RegionInfo Single { LocationValid BOOL } { GridsPerEdge U32 } { MetersPerGrid F32 } { Handle U64 } { UsecSinceStart U64 } { SecPerDay U32 } { SecPerYear U32 } { SunDirection LLVector3 } { SunAngVelocity LLVector3 } } { SimulatorBlock Single { IP IPADDR } { Port IPPORT } } { URLBlock Single { LocationID U32 } { LocationLookAt LLVector3 } } } { UserSimLocationReply Low Trusted Unencoded { SimulatorBlock Single { AccessOK U8 } { SimName Variable 1 } { SimHandle U64 } } } { UserListReply Low Trusted Unencoded { UserBlock Variable { FirstName Variable 1 } { LastName Variable 1 } { Status U8 } } } { ChatMessage Low Trusted Unencoded { ChatData Single { Text Variable 2 } } } { OnlineNotification Low Trusted Unencoded { AgentBlock Variable { AgentID LLUUID } } } { OfflineNotification Low Trusted Unencoded { AgentBlock Variable { AgentID LLUUID } } } { SetStartLocationRequest Low NotTrusted Zerocoded { StartLocationData Single { AgentID LLUUID } { SimName Variable 1 } { LocationID U32 } { LocationPos LLVector3 } { LocationLookAt LLVector3 } } } { SetStartLocation Low Trusted Zerocoded { StartLocationData Single { AgentID LLUUID } { RegionID LLUUID } { LocationID U32 } { RegionHandle U64 } { LocationPos LLVector3 } { LocationLookAt LLVector3 } } } { UserLoginLocationRequest Low Trusted Zerocoded { UserBlock Single { SessionID LLUUID } { TravelAccess U8 } { FirstLogin BOOL } { LimitedToEstate U32 } } { PositionBlock Single { ViewerRegion U64 } { ViewerPosition LLVector3 } } { URLBlock Single { SimName Variable 1 } { Pos LLVector3 } } } { SpaceLoginLocationReply Low Trusted Zerocoded { UserBlock Single { SessionID LLUUID } { LocationID U32 } { LocationPos LLVector3 } { LocationLookAt LLVector3 } } { SimulatorBlock Single { IP IPADDR } { Port IPPORT } { CircuitCode U32 } { Name Variable 1 } { SimAccess U8 } } { RegionInfo Single { GridsPerEdge U32 } { MetersPerGrid F32 } { Handle U64 } { UsecSinceStart U64 } { SecPerDay U32 } { SecPerYear U32 } { SunDirection LLVector3 } { SunAngVelocity LLVector3 } } } { NetTest Low NotTrusted Unencoded { NetBlock Single { Port IPPORT } } } { SetCPURatio Low NotTrusted Unencoded { Data Single { Ratio U8 } } } { SimCrashed Low NotTrusted Unencoded { Data Single { RegionX U32 } { RegionY U32 } } { Users Variable { AgentID LLUUID } } } { SimulatorPauseState Low NotTrusted Unencoded { PauseBlock Single { SimPaused U32 } { LayersPaused U32 } { TasksPaused U32 } } } { SimulatorThrottleSettings Low NotTrusted Unencoded { Sender Single { ID LLUUID } } { Throttle Single { Throttles Variable 1 } } } { NameValuePair Low NotTrusted Unencoded { TaskData Single { ID LLUUID } } { NameValueData Variable { NVPair Variable 2 } } } { RemoveNameValuePair Low NotTrusted Unencoded { TaskData Single { ID LLUUID } } { NameValueData Variable { NVPair Variable 2 } } } { GetNameValuePair Low NotTrusted Unencoded { TaskData Single { ID LLUUID } } { NameValueName Variable { Name Variable 2 } } } { UpdateAttachment Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { AttachmentBlock Single { AttachmentPoint U8 } } { OperationData Single { AddItem BOOL } { UseExistingAsset BOOL } } { InventoryData Single { ItemID LLUUID } { FolderID LLUUID } { CreatorID LLUUID } { OwnerID LLUUID } { GroupID LLUUID } { BaseMask U32 } { OwnerMask U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { GroupOwned BOOL } { AssetID LLUUID } { Type S8 } { InvType S8 } { Flags U32 } { SaleType U8 } { SalePrice S32 } { Name Variable 1 } { Description Variable 1 } { CreationDate S32 } { CRC U32 } } } { RemoveAttachment Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { AttachmentBlock Single { AttachmentPoint U8 } { ItemID LLUUID } } } { UUIDSoundTriggerFar High NotTrusted Unencoded { SoundData Single { ID LLUUID } { Handle U64 } { XPos S16 } { YPos S16 } { ZPos S16 } { Gain F32 } } } { AttachedSound Medium Trusted Unencoded { DataBlock Single { SoundID LLUUID } { ObjectID LLUUID } { Gain F32 } { Flags U8 } } } { AttachedSoundGainChange Medium Trusted Unencoded { DataBlock Single { ObjectID LLUUID } { Gain F32 } } } { AttachedSoundCutoffRadius Medium Trusted Unencoded { DataBlock Single { ObjectID LLUUID } { Radius F32 } } } { PreloadSound Medium Trusted Unencoded { DataBlock Variable { ObjectID LLUUID } { SoundID LLUUID } } } { AssetUploadRequest Low NotTrusted Unencoded { AssetBlock Single { UUID LLUUID } { Type S8 } { Tempfile BOOL } { AssetData Variable 2 } } } { AssetUploadComplete Low NotTrusted Unencoded { AssetBlock Single { UUID LLUUID } { Type S8 } { Success BOOL } } } { ReputationAgentAssign Low NotTrusted Unencoded { DataBlock Single { RatorID LLUUID } { RateeID LLUUID } { Behavior F32 } { Appearance F32 } { Building F32 } } } { ReputationIndividualRequest Low NotTrusted Unencoded { ReputationData Single { FromID LLUUID } { ToID LLUUID } } } { ReputationIndividualReply Low Trusted Unencoded { ReputationData Single { FromID LLUUID } { ToID LLUUID } { Behavior F32 } { Appearance F32 } { Building F32 } } } { EmailMessageRequest Low Trusted Unencoded { DataBlock Single { ObjectID LLUUID } { FromAddress Variable 1 } { Subject Variable 1 } } } { EmailMessageReply Low Trusted Unencoded { DataBlock Single { ObjectID LLUUID } { More U32 } { Time U32 } { FromAddress Variable 1 } { Subject Variable 1 } { Data Variable 2 } { MailFilter Variable 1 } } } { InternalScriptMail Medium Trusted Unencoded { DataBlock Single { From Variable 1 } { To LLUUID } { Subject Variable 1 } { Body Variable 2 } } } { ScriptDataRequest Low Trusted Unencoded { DataBlock Variable { Hash U64 } { RequestType S8 } { Request Variable 2 } } } { ScriptDataReply Low Trusted Unencoded { DataBlock Variable { Hash U64 } { Reply Variable 2 } } } { CreateGroupRequest Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } { Name Variable 1 } { Charter Variable 2 } { ShowInList U8 } { ShowMembersInGroupDir U8 } { RequireMask U32 } { ReputationMin S32 } { ReputationMax S32 } { MoneyMin S32 } { MoneyMax S32 } { OfficerTitle Variable 1 } { MemberTitle Variable 1 } { PowersMask U32 } { InsigniaID LLUUID } { InviteOfficers Variable 2 } { InviteMembers Variable 2 } { MembershipFee S32 } { OpenEnrollment BOOL } { AllowPublish BOOL } { MaturePublish BOOL } } } { CreateGroupReply Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { ReplyData Single { GroupID LLUUID } { Result S32 } { Message Variable 1 } } } { UpdateGroupInfo Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } { Charter Variable 2 } { ShowInList BOOL } { ShowMembersInGroupDir BOOL } { OfficerTitle Variable 1 } { MemberTitle Variable 1 } { InsigniaID LLUUID } { MembershipFee S32 } { OpenEnrollment BOOL } { InviteOfficers Variable 2 } { InviteMembers Variable 2 } { AllowPublish BOOL } { MaturePublish BOOL } } } { GroupInfoUpdated Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } } { JoinGroupRequest Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } { Officer U8 } { MembershipFee S32 } } } { JoinGroupReply Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { Success BOOL } } } { EjectGroupMemberRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } { AgentID LLUUID } } } { RemoveMemberFromGroup Low Trusted Unencoded { TargetBlock Single { TargetIP IPADDR } { TargetPort IPPORT } } { AgentBlock Single { AgentID LLUUID } } { GroupBlock Single { GroupID LLUUID } } } { LeaveGroupRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } } } { InviteGroupRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { InviteData Single { AgentName Variable 1 } { InviteeID LLUUID } { GroupID LLUUID } { Officer BOOL } } } { GroupPropertiesRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } } } { GroupPropertiesReply Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } { Name Variable 1 } { Charter Variable 2 } { ShowInList U8 } { ShowMembersInGroupDir U8 } { RequireMask U32 } { ReputationMin S32 } { ReputationMax S32 } { MoneyMin S32 } { MoneyMax S32 } { OfficerTitle Variable 1 } { MemberTitle Variable 1 } { PowersMask U32 } { InsigniaID LLUUID } { FounderID LLUUID } { MembershipFee S32 } { OpenEnrollment BOOL } { Money S32 } { CurrentElectionID LLUUID } { GroupMembershipCount S32 } { AllowPublish BOOL } { MaturePublish BOOL } } } { GroupProfileRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } } } { GroupProfileReply Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } { Name Variable 1 } { Charter Variable 2 } { ShowInList U8 } { ShowMembersInGroupDir U8 } { OfficerTitle Variable 1 } { MemberTitle Variable 1 } { InsigniaID LLUUID } { FounderID LLUUID } { FounderName Variable 1 } { MembershipFee S32 } { OpenEnrollment BOOL } } } { GroupMoneyHistoryRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } } } { GroupMoneyHistoryReply Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } { GroupData Single { IntervalDays S32 } { CurrentInterval S32 } { CurrentTaxes S32 } { CurrentDividend S32 } { EstimatedTaxes S32 } { EstimatedDividend S32 } { NumberNonExemptMembers S32 } } } { GroupAccountSummaryRequest Low NotTrusted Zerocoded { MoneyData Single { AgentID LLUUID } { GroupID LLUUID } { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } } } { GroupAccountSummaryReply Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } { MoneyData Single { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } { StartDate Variable 1 } { 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 } { TaxDate Variable 1 } } } { GroupAccountDetailsRequest Low NotTrusted Zerocoded { MoneyData Single { AgentID LLUUID } { GroupID LLUUID } { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } } } { GroupAccountDetailsReply Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } { MoneyData Single { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } { StartDate Variable 1 } } { HistoryData Variable { Description Variable 1 } { Amount S32 } } } { GroupAccountTransactionsRequest Low NotTrusted Zerocoded { MoneyData Single { AgentID LLUUID } { GroupID LLUUID } { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } } } { GroupAccountTransactionsReply Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } { MoneyData Single { RequestID LLUUID } { IntervalDays S32 } { CurrentInterval S32 } { StartDate Variable 1 } } { HistoryData Variable { Time Variable 1 } { User Variable 1 } { Type S32 } { Item Variable 1 } { Amount S32 } } } { GroupElectionInfoRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } } } { GroupElectionInfoReply Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } } { ElectionData Single { GroupID LLUUID } { ElectionID LLUUID } { ElectionType Variable 1 } { StartDateTime Variable 1 } { EndDateTime Variable 1 } { ElectionInitiator LLUUID } { AlreadyVoted BOOL } { VotedForCandidate LLUUID } { VoteCast Variable 1 } { Majority F32 } { Quorum S32 } } { CandidateData Variable { AgentID LLUUID } } } { StartGroupElection Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ElectionData Single { GroupID LLUUID } { Duration S32 } { Majority F32 } { Quorum S32 } } } { GroupElectionBallot Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ElectionData Single { GroupID LLUUID } { ElectionID LLUUID } { CandidateID LLUUID } } } { StartGroupRecall Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { RecallData Single { GroupID LLUUID } { Duration S32 } { RecallID LLUUID } } } { GroupRecallBallot Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { RecallData Single { GroupID LLUUID } { ElectionID LLUUID } { VoteCast Variable 1 } } } { GroupActiveProposalsRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } } } { GroupActiveProposalItemReply Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } { ProposalData Variable { VoteID LLUUID } { VoteInitiator LLUUID } { TerseDateID Variable 1 } { StartDateTime Variable 1 } { EndDateTime Variable 1 } { AlreadyVoted BOOL } { VoteCast Variable 1 } { Majority F32 } { Quorum S32 } { ProposalText Variable 1 } } } { GroupVoteHistoryRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } } } { GroupVoteHistoryItemReply Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } { HistoryItemData Single { VoteID LLUUID } { TerseDateID Variable 1 } { StartDateTime Variable 1 } { EndDateTime Variable 1 } { VoteInitiator LLUUID } { RecallID LLUUID } { VoteType Variable 1 } { VoteResult Variable 1 } { Majority F32 } { Quorum S32 } { ProposalText Variable 2 } } { VoteItem Variable { CandidateID LLUUID } { VoteCast Variable 1 } { NumVotes S32 } } } { StartGroupProposal Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { ProposalData Single { GroupID LLUUID } { Quorum S32 } { Majority F32 } { Duration S32 } { ProposalText Variable 1 } } } { GroupProposalBallot Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { ProposalData Single { ProposalID LLUUID } { VoteCast Variable 1 } } } { CallVote Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } } { VoteData Single { GroupID LLUUID } { VoteType S32 } { VoteQuorum S32 } { VoteTime F32 } { VoteText Variable 1 } } } { Vote Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { VoteData Single { VoteID LLUUID } { Response S32 } } } { TallyVotes Low Trusted Unencoded } { GroupMembersRequest Low NotTrusted Unencoded { RequestData Single { RequestID LLUUID } { GroupID LLUUID } { ActiveOnly BOOL } } } { GroupMembersReply Low NotTrusted Zerocoded { ReplyData Single { RequestID LLUUID } { GroupID LLUUID } } { AgentData Variable { AgentID LLUUID } } } { GroupOfficersAndMembersRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { GroupData Single { GroupID LLUUID } { IncludeMembers BOOL } } } { GroupOfficersAndMembersReply Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { CompoundMsgID LLUUID } } { GroupData Single { GroupID LLUUID } } { OfficerData Variable { AgentID LLUUID } { Contribution S32 } { OnlineStatus Variable 1 } } { MemberData Variable { AgentID LLUUID } { Contribution S32 } { OnlineStatus Variable 1 } } } { ActivateGroup Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { GroupID LLUUID } } } { SetGroupContribution Low NotTrusted Unencoded { Data Single { AgentID LLUUID } { GroupID LLUUID } { Contribution S32 } } } { LiveHelpGroupRequest Low Trusted Unencoded { RequestData Single { RequestID LLUUID } { AgentID LLUUID } } } { LiveHelpGroupReply Low Trusted Unencoded { ReplyData Single { RequestID LLUUID } { GroupID LLUUID } { Selection Variable 1 } } } { AgentWearablesRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } } { AgentWearablesUpdate Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SerialNum U32 } } { WearableData Variable { ItemID LLUUID } { AssetID LLUUID } { WearableType U8 } } } { AgentCachedTexture Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } { SerialNum S32 } } { WearableData Variable { ID LLUUID } { TextureIndex U8 } } } { AgentDataUpdateRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } } { AgentDataUpdate Low Trusted Zerocoded { AgentData Single { AgentID LLUUID } { FirstName Variable 1 } { LastName Variable 1 } { GroupTitle Variable 1 } { GroupIndex S8 } } { GroupData Variable { GroupID LLUUID } { GroupOfficer BOOL } { GroupInsigniaID LLUUID } { Contribution S32 } { GroupName Variable 1 } } } { LogTextMessage Low Trusted Zerocoded { DataBlock Variable { FromAgentId LLUUID } { ToAgentId LLUUID } { GlobalX F64 } { GlobalY F64 } { Time U32 } { Message Variable 2 } } } { ViewerEffect Medium NotTrusted Zerocoded { Effect Variable { ID LLUUID } { Type U8 } { Duration F32 } { Color Fixed 4 } { TypeData Variable 1 } } } { SetSunPhase Medium NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { Data Single { Phase F32 } } } { CreateTrustedCircuit Low NotTrusted Unencoded { DataBlock Single { Digest Fixed 32 } } } { DenyTrustedCircuit Low NotTrusted Unencoded } { RezSingleAttachmentFromInv Low NotTrusted Zerocoded { ObjectData Single { AgentID LLUUID } { AssetID LLUUID } { ItemID LLUUID } { AttachmentPt U8 } { ItemFlags U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { Name Variable 1 } { Description Variable 1 } } } { RezMultipleAttachmentsFromInv Low NotTrusted Zerocoded { HeaderData Single { CompoundMsgID LLUUID } { TotalObjects U8 } { AgentID LLUUID } { FirstDetachAll U8 } } { ObjectData Variable { AssetID LLUUID } { ItemID LLUUID } { AttachmentPt U8 } { ItemFlags U32 } { GroupMask U32 } { EveryoneMask U32 } { NextOwnerMask U32 } { Name Variable 1 } { Description Variable 1 } } } { DetachAttachmentIntoInv Low NotTrusted Unencoded { ObjectData Single { AgentID LLUUID } { ItemID LLUUID } } } { CreateNewOutfitAttachments Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { HeaderData Single { NewFolderID LLUUID } } { ObjectData Variable { OldItemID LLUUID } { OldFolderID LLUUID } } } { UserInfoRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } } { UserInfoReply Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { UserData Single { IMViaEMail BOOL } { EMail Variable 2 } } } { UpdateUserInfo Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { UserData Single { IMViaEMail BOOL } } } { GodExpungeUser Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { ExpungeData Variable { AgentID LLUUID } } } { StartExpungeProcess Low Trusted Zerocoded { ExpungeData Variable { AgentID LLUUID } } } { StartExpungeProcessAck Low Trusted Unencoded } { StartParcelRename Low Trusted Unencoded { ParcelData Variable { ParcelID LLUUID } { NewName Variable 1 } } } { StartParcelRenameAck Low Trusted Unencoded } { BulkParcelRename Low Trusted Zerocoded { ParcelData Variable { RegionHandle U64 } { ParcelID LLUUID } { NewName Variable 1 } } } { ParcelRename Low Trusted Unencoded { ParcelData Variable { ParcelID LLUUID } { NewName Variable 1 } } } { StartParcelRemove Low Trusted Unencoded { ParcelData Variable { ParcelID LLUUID } } } { StartParcelRemoveAck Low Trusted Unencoded } { BulkParcelRemove Low Trusted Zerocoded { ParcelData Variable { RegionHandle U64 } { ParcelID LLUUID } } } { InitiateUpload Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { FileData Single { BaseFilename Variable 1 } { SourceFilename Variable 1 } } } { InitiateDownload Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } } { FileData Single { SimFilename Variable 1 } { ViewerFilename Variable 1 } } } { SystemMessage Low Trusted Zerocoded { MethodData Single { Method Variable 1 } { Invoice LLUUID } { Digest Fixed 32 } } { ParamList Variable { Parameter Variable 1 } } } { MapLayerRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { Flags U32 } { EstateID U32 } { Godlike BOOL } } } { MapLayerReply Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { Flags U32 } } { LayerData Variable { Left U32 } { Right U32 } { Top U32 } { Bottom U32 } { ImageID LLUUID } } } { MapBlockRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { Flags U32 } { EstateID U32 } { Godlike BOOL } } { PositionData Single { MinX U16 } { MaxX U16 } { MinY U16 } { MaxY U16 } } } { MapNameRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { Flags U32 } { EstateID U32 } { Godlike BOOL } } { NameData Single { Name Variable 1 } } } { MapBlockReply Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { Flags U32 } } { Data Variable { X U16 } { Y U16 } { Name Variable 1 } { Access U8 } { RegionFlags U32 } { WaterHeight U8 } { Agents U8 } { MapImageID LLUUID } } } { MapItemRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { Flags U32 } { EstateID U32 } { Godlike BOOL } } { RequestData Single { ItemType U32 } { RegionHandle U64 } } } { MapItemReply Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { Flags U32 } } { RequestData Single { ItemType U32 } } { Data Variable { X U32 } { Y U32 } { ID LLUUID } { Extra S32 } { Extra2 S32 } { Name Variable 1 } } } { SendPostcard Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { AssetID LLUUID } { PosGlobal LLVector3d } { To Variable 1 } { From Variable 1 } { Name Variable 1 } { Subject Variable 1 } { Msg Variable 2 } { AllowPublish BOOL } { MaturePublish BOOL } } } { RpcChannelRequest Low Trusted Unencoded { DataBlock Single { GridX U32 } { GridY U32 } { TaskID LLUUID } { ItemID LLUUID } } } { RpcChannelReply Low Trusted Unencoded { DataBlock Single { TaskID LLUUID } { ItemID LLUUID } { ChannelID LLUUID } } } { RpcScriptRequestInbound Low NotTrusted Unencoded { TargetBlock Single { GridX U32 } { GridY U32 } } { DataBlock Single { TaskID LLUUID } { ItemID LLUUID } { ChannelID LLUUID } { IntValue U32 } { StringValue Variable 2 } } } { RpcScriptRequestInboundForward Low Trusted Unencoded { DataBlock Single { RPCServerIP IPADDR } { RPCServerPort IPPORT } { TaskID LLUUID } { ItemID LLUUID } { ChannelID LLUUID } { IntValue U32 } { StringValue Variable 2 } } } { RpcScriptReplyInbound Low NotTrusted Unencoded { DataBlock Single { TaskID LLUUID } { ItemID LLUUID } { ChannelID LLUUID } { IntValue U32 } { StringValue Variable 2 } } } { MailTaskSimRequest Low NotTrusted Unencoded { DataBlock Single { TaskID LLUUID } } } { MailTaskSimReply Low NotTrusted Unencoded { TargetBlock Single { TargetIP Variable 1 } { TargetPort IPPORT } } { DataBlock Single { TaskID LLUUID } } } { ScriptMailRegistration Low NotTrusted Unencoded { DataBlock Single { TargetIP Variable 1 } { TargetPort IPPORT } { TaskID LLUUID } { Flags U32 } } } { MailPingBounce Low NotTrusted Unencoded { DataBlock Single { TargetIP IPADDR } { TargetPort IPPORT } { TaskID LLUUID } { Flags U32 } } } { ParcelMediaCommandMessage Low NotTrusted Unencoded { CommandBlock Single { Flags U32 } { Command U32 } { Time F32 } } } { ParcelMediaUpdate Low NotTrusted Unencoded { DataBlock Single { MediaURL Variable 1 } { MediaID LLUUID } { MediaAutoScale U8 } } } { LandScriptsRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { RequestData Single { RequestFlags U32 } { ParcelLocalID S32 } { RelatedID LLUUID } } } { LandScriptsReply Low NotTrusted Unencoded { RequestData Single { RequestFlags U32 } { TotalScriptCount U32 } { TotalScriptTime F32 } } { Data Variable { TaskLocalID U32 } { TaskID LLUUID } { LocationX F32 } { LocationY F32 } { LocationZ F32 } { ScriptTime F32 } { ScriptCount S32 } { TaskName Variable 1 } { OwnerName Variable 1 } } } { LandCollidersRequest Low NotTrusted Unencoded { AgentData Single { AgentID LLUUID } { SessionID LLUUID } } { RequestData Single { RequestFlags U32 } { ParcelLocalID S32 } { RelatedID LLUUID } } } { LandCollidersReply Low NotTrusted Unencoded { RequestData Single { RequestFlags U32 } { TotalColliderCount U32 } } { Data Variable { TaskLocalID U32 } { TaskID LLUUID } { LocationX F32 } { LocationY F32 } { LocationZ F32 } { Score S32 } { TaskName Variable 1 } { OwnerName Variable 1 } } } \ No newline at end of file +// Linden Lab development message templates + +version 1.053 + +// 1.053 added EndPointID to DenyTrustedCircuit and CreateTrustedCircuit. PP + +// ************************************************************************* +// 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 } + } +} + +// user->viewer +// AssignCircuitCode - Tells the recipient's messaging system what it's code is +//{ +// AssignCircuitCode Low Trusted Unencoded +// { +// CircuitCode Single +// { Code U32 } +// { SessionID LLUUID } +// } +//} + +// 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 + } +} + +// sim->space +// Tells the spaceserver that the simulator is ready to receive an +// agent with that circuit code. +//{ +// AckAddCircuitCode Low Trusted Unencoded +// { +// CircuitCode Single +// { Code U32 } +// } +//} + +// 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 } + } +} + +// AgentIDReply +// dataserver -> simulator +// reliable +// Message send from spaceserver to simulator +// containing agent id for a given session id +// Also, a list of name value pairs for that agent +// also tacked on a list of agents that have granted you powers +//{ +// AgentIDReply Low Trusted Zerocoded +// { +// ReplyBlock Single +// { RequestID LLUUID } +// { SessionID LLUUID } +// { AgentID LLUUID } +// { StartLocation LLVector3 } // Vector3, region local +// { StartLookAt LLVector3 } // Vector3, normalized +// { GroupID LLUUID } +// { GroupOfficer BOOL } +// { AgentAccess U8 } +// { GodLevel U8 } +// { GroupTitle Variable 1 } // string +// } +// { +// TextureData Variable +// { TextureID LLUUID } +// } +// { +// GranterBlock Variable +// { GranterID LLUUID } +// } +// { +// NameValueBlock Variable +// { NameValue Variable 2 } +// } +// { +// AttachmentBlock Variable +// { AttachmentPoint U8 } +// { ItemID LLUUID } +// { AssetID LLUUID } +// } +//} + +// AvatarTextureUpdate +// simulator -> dataserver +// reliable +{ + AvatarTextureUpdate Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { TexturesChanged BOOL } + } + { + WearableData Variable + { CacheID LLUUID } + { TextureIndex U8 } + } + { + 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 NotTrusted 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 +} + + +// AgentIDRequest +// Request to report agent ID associated with a session id +//{ +// AgentIDRequest Low Trusted Unencoded +// { +// RequestBlock Single +// { RequestID LLUUID } +// { SessionID LLUUID } +// { LocationID U32 } // 0 = last location +// { Godlike BOOL } +// } +//} +// **************************************************************************** +// 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 } + } +} + +// 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 } + { SimName Variable 1 } + { Summary Variable 1 } + { Details Variable 2 } + { VersionString Variable 1 } + } + { + MeanCollision Variable + { Perp LLUUID } + { Time U32 } + { Mag F32 } + { Type U8 } + } +} + +// 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 } + } + { + 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 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { QueryID 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 } + { SpaceIP IPADDR } // check online for right farm + } +} + + +// 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 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Variable + { QueryID LLUUID } + } + { + QueryReplies Variable + { ParcelID LLUUID } + { Name Variable 1 } + { ForSale BOOL } + { Auction BOOL } + { ReservedNewbie BOOL } + { Dwell F32 } + } +} + +// DirPeopleQuery viewer->sim +// ask about people. This gets translated into a DirPeopleQueryTrusted on +// the simulator. +// *NOTE: this message is not in use on the viewer. 2004.07.02 \P/hoenix +{ + DirPeopleQuery Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } + { Name Variable 1 } + { Group Variable 1 } + { Online U8 } + { WantToFlags U32 } + { SkillFlags U32 } + { Reputation Variable 1 } // string representation of "< 1" or "> 6" or "= 99" + { Distance Variable 1 } // string representation of "< 1" or "> 6" or "= 99" + } +} + +// DirPeopleQueryBackend sim->dataserver +// continue query about people whith a space ip address. +{ + DirPeopleQueryBackend Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } + { Name Variable 1 } + { Group Variable 1 } + { Online U8 } + { WantToFlags U32 } + { SkillFlags U32 } + { Reputation Variable 1 } // string representation of "< 1" or "> 6" or "= 99" + { Distance Variable 1 } // string representation of "< 1" or "> 6" or "= 99" + { EstateID U32 } + { Godlike BOOL } + { SpaceIP IPADDR } // used to check online status for the right farm + } +} + +// 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 NotTrusted 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 } + } +} + +// DirGroupsQuery viewer->sim +// reliable +{ + DirGroupsQuery Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } // string + } +} + +// DirGroupsQueryBackend sim->dataserver +// reliable +{ + DirGroupsQueryBackend Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } // string + { EstateID U32 } + { Godlike BOOL } + } +} + + +// DirGroupsReply +// dataserver -> userserver -> viewer +// reliable +{ + DirGroupsReply Low NotTrusted 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 } + } +} + +// 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 } + } +} + +// 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 } + } + { + 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 } + { ForSale BOOL } + { Auction BOOL } + { ReservedNewbie BOOL } + } +} + +// 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 } + { ForSale BOOL } + { Auction BOOL } + { ReservedNewbie BOOL } + { 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 } + } +} + +// **************************************************************************** +// 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 NotTrusted 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 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Info Single + { TeleportFlags U32 } + { Message Variable 1 } // string + } +} + +// DataAgentAccessRequest sim->data +// ask if agent ID can in fact teleport from their current location in +// EstateID to the destination specified by RegionHandle. If allowed, +// the handler will persist the location in user_start_location and +// send back a DataAgentAccessReply. Otherwise, the handler will send back +// a TeleportFailed. +{ + DataAgentAccessRequest Low Trusted Unencoded + { + Info Single + { AgentID LLUUID } + { EstateID U32 } + { RegionHandle U64 } + { LocationID U32 } + { LocationPos LLVector3 } + { LocationLookAt LLVector3 } + } +} + +// DataAgentAccessReply data->sim +// Message to let us know if AgentID is allowed to teleport to RegionHandle. +{ + DataAgentAccessReply Low Trusted Unencoded + { + Info Single + { AgentID LLUUID } + } +} + +// DataHomeLocationRequest sim->data +// Request +{ + DataHomeLocationRequest Low Trusted Zerocoded + { + Info Single + { AgentID LLUUID } + } +} + +// 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 NotTrusted 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 } + { TargetID LLUUID } + { Message Variable 1 } + } +} + +// InitializeLure user->space +// Prepare the spaceserver with destination information for a lure. +{ + InitializeLure Low Trusted Unencoded + { + Info Single + { LureType U8 } + { AgentID LLUUID } + { LureID LLUUID } + { RegionHandle U64 } + { Position LLVector3 } + { LookAt LLVector3 } + } +} + +// 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 NotTrusted Unencoded + { + Info Single + { TeleportFlags U32 } + } +} + +// TeleportFailed somehwere->sim->viewer +// announce failure of teleport request +{ + TeleportFailed Low NotTrusted 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 +// *************************************************************************** + +// RegisterNewAgent - Sent by viewer to simulator to tell the simulator +// that it's connecting. +// HACK -- If SessionID is null, don't bother asking for information +// from the space server. +{ + RegisterNewAgent Low NotTrusted Unencoded + { + HelloBlock Single + { AgentID LLUUID } + { SessionID LLUUID } + { LocationID U32 } // which start location to use + { Godlike BOOL } + } +} + +// viewer->sim +// request a connection to the userserver +//{ +// RequestUserserverConnection Low NotTrusted Unencoded +// { +// AgentInfo Single +// { AgentID LLUUID } +// { SessionID LLUUID } +// } +//} + +// sim->space->userserver +//{ +// UserserverConnectionForAgent Low Trusted Unencoded +// { +// AgentInfo Single +// { AgentID LLUUID } +// { SessionID LLUUID } +// } +//} + +// userserver->space->sim->agent +//{ +// UserserverReadyForAgent Low Trusted Unencoded +// { +// AgentInfo Single +// { AgentID LLUUID } +// { SessionID LLUUID } +// } +// { +// HostInfo Single +// { ServerIP IPADDR } +// { ServerPort IPPORT } +// } +//} + +// Undo +{ + Undo Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + ObjectData Variable + { ObjectID LLUUID } + } +} + + +// Redo +{ + Redo Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + ObjectData Variable + { ObjectID LLUUID } + } +} + +// UndoLand +{ + UndoLand Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } +} + + +// RedoLand +{ + RedoLand Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } +} + +// Transfer energy from agent to an object +{ + TransferEnergy Low NotTrusted Unencoded + { + Data Single + { DestID LLUUID } // destination of the transfer + { Amount S32 } // amount of the transfer + } +} + + +// MovedIntoSimulator - Sent by simulatorA to simulatorB to tell the +// simulator that a viewer is moving from A to B +// sim --> sim +{ + MovedIntoSimulator High Trusted Unencoded + { + Sender Single + { ID LLUUID } + { SessionID LLUUID } + { CircuitCode U32 } + } +} + + +// AgentPause - viewer occasionally will block, inform simulator of this fact +{ + AgentPause Low NotTrusted Unencoded + { + Sender 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 + { + Sender 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 + { ID 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 + { + Sender Single + { ID LLUUID } + { CircuitCode U32 } + { GenCounter U32 } + } + { + Throttle Single + { Throttles Variable 1 } + } +} + + +// AgentFOV - Update to agent's field of view, angle is vertical, single F32 float in radians +{ + AgentFOV Low NotTrusted Unencoded + { + Sender Single + { ID LLUUID } + { CircuitCode U32 } + { GenCounter U32 } + } + { + FOVBlock Single + { 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 + { + Sender Single + { ID LLUUID } + { CircuitCode U32 } + { GenCounter U32 } + } + { + HeightWidthBlock Single + { Height U16 } + { Width U16 } + } +} + + +// AgentSetAppearance - Update to agent appearance +{ + AgentSetAppearance Low NotTrusted Zerocoded + { + Sender Single + { ID 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 + { + Sender Single + { ID LLUUID } + } + { + AnimationList Variable + { AnimID LLUUID } + { StartAnim BOOL } + } +} + +// AgentRequestSit - Try to sit on an object +{ + AgentRequestSit High NotTrusted Zerocoded + { + Sender Single + { ID LLUUID } + } + { + TargetObject Single + { TargetID LLUUID } + { Offset LLVector3 } + } +} + +// AgentSit - Actually sit on object +{ + AgentSit High NotTrusted Unencoded + { + Sender Single + { ID LLUUID } + } +} + +// RefreshViewer - sent by viewer when it has missing geometry, etc., due to dropped packets. + +{ + RefreshViewer Low NotTrusted Unencoded + { + Sender Single + { ID 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 + { + RequestImage Variable + { Image LLUUID } + { DiscardLevel S32 } + { DownloadPriority F32 } + { Packet U32 } + } +} + +// ImageNotInDatabase +// Simulator informs viewer that a requsted image definitely does not exist in the asset database +{ + ImageNotInDatabase Low NotTrusted Unencoded + { + ImageID Single + { ID LLUUID } + } +} + +// SetAlwaysRun +// Lets the viewer choose between running and walking +{ + SetAlwaysRun Low NotTrusted Unencoded + { + Sender Single + { ID 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 } + + { TextureEntry Variable 2 } + + { NameValue Variable 2 } + { State U8 } + } + { + 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 } + } + { + InventoryFile Single + { Filename Variable 1 } + } +} + + +// ObjectDelete +// viewer -> simulator +{ + ObjectDelete Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID 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 } + { 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 } + { 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 } + } + { + 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 } + } + { + 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 } + } + { + 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 } + } + { + 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 } + { 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 } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } + +} + + +// ObjectDeselect +{ + ObjectDeselect Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } + +} + +// ObjectAttach +{ + ObjectAttach Low NotTrusted Zerocoded + { + AgentData Single + { AgentID 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 } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } +} + + +// ObjectDrop -- drops an attachment from your avatar onto the ground +{ + ObjectDrop Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } +} + + +// ObjectLink +{ + ObjectLink Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } +} + +// ObjectDelink +{ + ObjectDelink Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } +} + +// ObjectHinge +{ + ObjectHinge Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + JointType Single + { Type U8 } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } + +} + +// ObjectDehinge +{ + ObjectDehinge Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } + +} + + +// ObjectGrab +{ + ObjectGrab Low NotTrusted Zerocoded + { + Sender Single + { ID 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 } + } + { + ObjectData Single + { ObjectID LLUUID } + { GrabOffsetInitial LLVector3 } // LLVector3 + { GrabPosition LLVector3 } // LLVector3, region local + { TimeSinceLast U32 } + } +} + + +// ObjectDeGrab +{ + ObjectDeGrab Low NotTrusted Unencoded + { + Sender Single + { ID LLUUID } + } + { + ObjectData Single + { LocalID U32 } + } +} + + +// ObjectSpinStart +{ + ObjectSpinStart Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Single + { ObjectID LLUUID } + } +} + + +// ObjectSpinUpdate +{ + ObjectSpinUpdate Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Single + { ObjectID LLUUID } + { Rotation LLQuaternion } + } +} + + +// ObjectSpinStop +{ + ObjectSpinStop Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ObjectData Single + { ObjectID LLUUID } + } +} + +// Export selected objects +{ + ObjectExportSelected Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { RequestID LLUUID } + { VolumeDetail S16 } + } + { + ObjectData Variable + { ObjectID LLUUID } + } +} + +// Import an object +{ + 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 + { + ModifyBlock Single + { AgentID LLUUID } + { Action U8 } + { BrushSize U8 } + { Seconds F32 } + { Height F32 } + } + { + ParcelData Variable + { LocalID S32 } + { West F32 } + { South F32 } + { East F32 } + { North F32 } + } +} + + +// VelocityInterpolateOn +{ + VelocityInterpolateOn Low NotTrusted Unencoded +} + + +// VelocityInterpolateOff +{ + VelocityInterpolateOff Low NotTrusted Unencoded +} + +// Save State +{ + StateSave Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + DataBlock Single + { Filename Variable 1 } + } +} + + +// ReportAutosaveCrash +{ + 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 } + } +} + +// Load State +// Not in use \P/hoenix - 2004.07.14 +{ + StateLoad Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + DataBlock Single + { Filename Variable 1 } + } +} + +// 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 + { + ObjectData Single + { RequestFlags U32 } + { AgentID LLUUID } + { 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 + { + AgentBlock Single + { AgentID LLUUID } + { PreyID LLUUID } + } +} + + +// Grant agents the ability to modify your stuff. This message is sent +// to the user server, and then passed along to the dataserver for +// persistance. The dataserver will push live updates through +// AddModifyAbility messages to the simulator. +// viewer -> userserver -> dataserver +{ + GrantModification Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GranterName Variable 1 } + } + { + EmpoweredBlock Variable + { EmpoweredID LLUUID } + } +} + +// Revoke the ability to modify your stuff. This message is sent to +// the user server, and then passed along to the dataserver for +// persistance. The dataserver will push live updates through +// RemoveModifyAbility messages to the simulator. +// viewer -> userserver -> dataserver +{ + RevokeModification Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GranterName Variable 1 } + } + { + RevokedBlock Variable + { RevokedID LLUUID } + } +} + +// This message is sent from viewer->userserver, which responds with +// the complete list of all granted agents in the GrantedProxies +// message. +{ + RequestGrantedProxies Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } +} + +// response to the message above +{ + GrantedProxies Low Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ProxyBlock Variable + { EmpoweredID LLUUID } + } +} + +// This message is sent from the dataserver to the simulator to let +// AgentID know that they can modify GranterID's stuff. This message is +// percolated out to child cameras but not the viewer. This message is +// in response to GrantModification messages, request, or login. +// ROUTED dataserver -> userserver -> spaceserver -> simulator +// reliable +{ + AddModifyAbility Low Trusted Zerocoded + { + TargetBlock Single + { TargetIP IPADDR } // U32 encoded IP + { TargetPort IPPORT } + } + { + AgentBlock Single + { AgentID LLUUID } + } + { + GranterBlock Variable + { GranterID LLUUID } + } +} + +// This message is sent from the dataserver to the simulator to let +// AgentID know that they can no longer modify GranterID's stuff. This +// message is percolated out to child cameras but not the viewer. This +// message is in response to RevokeModification messages. +// ROUTED dataserver -> userserver -> spaceserver -> simulator +// reliable +{ + RemoveModifyAbility Low Trusted Unencoded + { + TargetBlock Single + { TargetIP IPADDR } // U32 encoded IP + { TargetPort IPPORT } + } + { + AgentBlock Single + { AgentID LLUUID } + { RevokerID LLUUID } + } +} + +// end viewer to simulator section + +{ + ViewerStats Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { IP IPADDR } + { StartTime U32 } + { RunTime F32 } // F32 + { FPS F32 } // F32 + { 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 + { + Data Single + { AgentID LLUUID } + { TaskID LLUUID } + { ItemID LLUUID } + { Questions S32 } + } +} + + +// complaint/bug-report +// reliable +{ + UserReport Low NotTrusted Zerocoded + { + ReportData Single + { ReportType U8 } // BUG=1, COMPLAINT=2 + { Category U8 } // see sequence.user_report_category + { ReporterID LLUUID } + { Position LLVector3 } // screenshot position, region-local + { CheckFlags U8 } // checkboxflags + { ScreenshotID LLUUID } + { ObjectID LLUUID } + { Summary Variable 1 } + { Details Variable 2 } + { VersionString Variable 1 } + } + { + MeanCollision Variable + { Perp LLUUID } + { Time U32 } + { Mag F32 } + { Type U8 } + } +} + + +// *************************************************************************** +// 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 NotTrusted 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 + { + 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 udpate 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 } + } +} + +{ + 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 } + { 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 } + { AvatarID LLUUID } + } +} + +// AvatarPropertiesRequestBackend +// simulator -> dataserver +// reliable +{ + AvatarPropertiesRequestBackend Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { AvatarID LLUUID } + { GodLevel U8 } + } +} +// 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 + { WantToMask U32 } + { WantToText Variable 1 } // string + { SkillsMask U32 } + { SkillsText Variable 1 } // string + { FLAboutText Variable 1 } // string + { BornOn Variable 1 } // string + { CharterMember Variable 1 } // special - usually U8 + { AllowPublish BOOL } // whether profile is externally visible or not + { MaturePublish BOOL } // profile is "mature" + { Identified BOOL } // whether avatar has provided payment info + { Transacted BOOL } // whether avatar has actively used payment info + } +} + +// 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 + { GroupOfficer BOOL } + { GroupTitle Variable 1 } + { GroupID LLUUID } + { GroupName Variable 1 } + { GroupInsigniaID LLUUID } + } +} + + +// AvatarPropertiesUpdate +// viewer -> simulator +// simulator -> dataserver +// reliable +{ + AvatarPropertiesUpdate Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + PropertiesData Single + { AvatarID LLUUID } + { ImageID LLUUID } + { FLImageID LLUUID } + { AboutText Variable 2 } // string, up to 512 + { FLAboutText Variable 1 } + { WantToMask U32 } + { WantToText Variable 1 } // string + { SkillsMask U32 } + { SkillsText Variable 1 } // string + { AllowPublish BOOL } // whether profile is externally visible or not + { MaturePublish BOOL } // profile is "mature" + } +} + +// 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 } + } + { + 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 } + } + { + 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 } + + } + { + EventData Single + { EventID U32 } + } +} + + +// EventNotificationRemoveRequest +// viewer -> simulator +// simulator -> dataserver +// reliable +{ + EventNotificationRemoveRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID 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 } + } + { + 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 } + } + { + 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 } + } + { + 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 NotTrusted 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 + { + Data Single + { AgentID LLUUID } + { ObjectID LLUUID } + { ChatChannel S32 } + { ButtonIndex S32 } + { ButtonLabel Variable 1 } + } +} + + +// ForceScriptControlRelease +// reliable +{ + ForceScriptControlRelease Low NotTrusted Unencoded + { + Data Single + { ID LLUUID } + } +} + +// RevokePermissions +// reliable +{ + RevokePermissions Low NotTrusted Unencoded + { + Data Single + { AgentID LLUUID } + { 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 } + { Message Variable 1 } + { URL Variable 1 } + } +} + +// ScriptTeleportRequest +// reliable +{ + ScriptTeleportRequest Low NotTrusted 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 + { + ParcelData Single + { AgentID LLUUID } + { SequenceID S32 } + { West F32 } + { South F32 } + { East F32 } + { North F32 } + { SnapSelection BOOL } + } +} + +// ParcelPropertiesRequestByID +// viewer -> sim +// reliable +{ + ParcelPropertiesRequestByID Low NotTrusted Zerocoded + { + ParcelData Single + { AgentID LLUUID } + { 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 } + } +} + +// 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 S32 } + { OtherCleanTime S32 } + } + { + TaskIDs Variable + { TaskID LLUUID } + } + { + OwnerIDs Variable + { OwnerID LLUUID } + } +} + +// 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 S32 } + { OtherCleanTime S32 } + } + { + 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 S32 } + } + { + ReturnIDs Variable + { ReturnID 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 + { + ParcelData Single + { AgentID LLUUID } + { 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 + { + ParcelData Single + { AgentID LLUUID } + { 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 } + { 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 + { + Data Single + { AgentID LLUUID } + { SequenceID S32 } + { Flags U32 } + { LocalID S32 } + } +} + + +// sim -> viewer +// ParcelAccessListReply +{ + ParcelAccessListReply Low NotTrusted 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 } + } + { + 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 } + } +} + +// userserver -> dataserver +// Used to request all parcel sales in the database +//{ +// RequestParcelSales Low Trusted Unencoded +//} + +// dataserver -> userserver -> spaceserver +// response of all (up to max packet size) parcel sales in the database. +// each block in the meassage represents a parcel that a human agreed +// to pay US$. +//{ +// BulkParcelSales Low Trusted Unencoded +// { +// ParcelData Variable +// { RegionHandle U64 } +// { ParcelID LLUUID } +// { BuyerID 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 } + } +} + +// userserver -> dataserver +// Used to request all parcel sales in the database +//{ +// RequestParcelAuctions Low Trusted Unencoded +//} + +// dataserver -> userserver -> spaceserver +// response of all (up to max packet size) parcel sales in the database. +// each block in the meassage represents a parcel that a human agreed +// to pay US$. +//{ +// BulkParcelAuctions Low Trusted Unencoded +// { +// ParcelData Variable +// { RegionHandle U64 } +// { ParcelID LLUUID } +// { WinnerID 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 } + { GroupIndex S8 } // -1 for none + } + { + GroupData Variable + { GroupID LLUUID } + { GroupOfficer BOOL } // 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 GetScriptRunningReply +{ + 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 } + } +} + +// LoginRequestSafe +// Attempt to log into the system with an auth token obtained via a +// secure out of band mechanism (such as a TLS tunnel) +// viewer -> userserver +// unreliable +//{ +// LoginRequestSafe Low NotTrusted Unencoded +// { +// LoginBlock Single +// { AuthToken LLUUID } // session id really +// { ViewerDigest LLUUID } // MD5 of viewer exe +// { LastExecFroze BOOL } +// } +//} + +// LoginReply +// Identifies the session, or sends LLUUID::null if invalid +// userserver -> viewer +//{ +// LoginReply Low Trusted Zerocoded +// { +// UserData Single +// { Firstname Variable 1 } // string, canonical caps +// { Lastname Variable 1 } // string, canonical caps +// { SessionID LLUUID } +// { AgentID LLUUID } +// { ErrorMessage Variable 1 } +// { AgentAccess U8 } +// { GroupOfficer BOOL } +// { GroupTitle Variable 1 } +// { GroupID LLUUID } +// { GroupName Variable 1 } +// { GroupInsigniaID LLUUID } +// { LoginFlags U32 } // bitfield +// { SunTextureID LLUUID } +// { MoonTextureID LLUUID } +// { CloudTextureID LLUUID } +// { TOSAssetID LLUUID } // Null if TOS agreement is current +// { CriticalMessageAssetID LLUUID } // Null if message is current +// { TrialDaysLeft S32 } // Zero if not trial +// { ServerUTCTime U32 } // time_t, unix time format +// } +// { +// StartLocationData Variable +// { LocationID U32 } +// { LocationRegionX U32 } // U32, meters to southwest +// { LocationRegionY U32 } +// { LocationPos LLVector3 } // Vector3, region coords +// { LocationLookAt LLVector3 } // Vector3 +// } +//} + +// DataserverLoginRequestSafe +// userserver -> dataserver +//{ +// DataserverLoginRequestSafe Low Trusted Unencoded +// { +// UserData Single +// { AuthToken LLUUID } // session id really +// { IP IPADDR } +// { Port IPPORT } +// { SpaceIP IPADDR } +// { ViewerDigest LLUUID } +// { LastExecFroze BOOL } +// } +//} + +// DataServerLoginReply +// TimeValid is true if user is allowed to log in at this time +// dataserver -> userserver +// reliable +//{ +// DataServerLoginReply Low Trusted Zerocoded +// { +// UserData Single +// { Firstname Variable 1 } // string +// { Lastname Variable 1 } // string +// { IP IPADDR } // don't think this is valid JC 6/02 +// { Port IPPORT } // don't think this is valid JC 6/02 +// { LoginValid BOOL } +// { TimeValid BOOL } +// { ErrorMessage Variable 1 } // string +// { AgentID LLUUID } +// { SessionID LLUUID } +// { LimitedToEstate U32 } +// { AgentAccess U8 } +// { GroupOfficer BOOL } +// { GroupTitle Variable 1 } +// { GroupID LLUUID } +// { GroupName Variable 1 } +// { GroupInsigniaID LLUUID } +// { LoginFlags U32 } // bitfield +// { SunTextureID LLUUID } +// { MoonTextureID LLUUID } +// { CloudTextureID LLUUID } +// { TOSAssetID LLUUID } // Null if TOS agreement is current +// { CriticalMessageAssetID LLUUID } // Null if message is current +// { TrialDaysLeft S32 } // Zero if not trial +// { ServerUTCTime U32 } // time_t, unix time format +// { SpaceIP IPADDR } +// { ViewerDigest LLUUID } +// { LastExecFroze BOOL } +// } +// { +// StartLocationData Variable +// { LocationID U32 } +// { LocationRegionX U32 } +// { LocationRegionY U32 } +// { LocationPos LLVector3 } // Vector3 +// { LocationLookAt LLVector3 } // Vector3 +// } +//} + +// The user agrees to the current Terms of Service +// or clicks OK on the current critical message +// type 0 = TOS +// type 1 = critical message +// viewer -> userserver -> dataserver +//{ +// TOSAgreement Low NotTrusted Unencoded +// { +// AgentBlock Single +// { AgentID LLUUID } +// { Type S32 } +// } +//} + +// 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 NotTrusted 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 NotTrusted 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) + { NewAssetID LLUUID } + } +} + + + +// LogoutDemand +// Unreliable, because the viewer quits before it has a chance to retransmit. +// viewer -> userserver +// unreliable +{ + LogoutDemand Low NotTrusted Unencoded + { + LogoutBlock Single + { SessionID LLUUID } + } +} + + +//----------------------------------------------------------------------------- +// Viewer to UserServer Messages +//----------------------------------------------------------------------------- + +// ViewerLoginLocationRequest +// viewer -> userserver +// *NOTE: obsolete +{ + ViewerLoginLocationRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + PositionBlock Single + { ViewerRegion U64 } + { ViewerPosition LLVector3 } + } + { + URLBlock Single + { SimName Variable 1 } + { Pos LLVector3 } + } +} + +// ViewerSimLocationRequest +// viewer -> userserver +// *NOTE: obsolete +{ + ViewerSimLocationRequest Low NotTrusted Unencoded + { + PositionBlock Single + { AgentID LLUUID } + { SimName Variable 1 } + } +} + +// RequestLocationGetAccess +// userserver -> dataserver +// *NOTE: obsolete. +{ + RequestLocationGetAccess Low Trusted Unencoded + { + PositionBlock Single + { AgentID LLUUID } + { SessionID LLUUID } + { ViewerIP IPADDR } + { ViewerPort IPPORT } + { ViewerRegion U64 } + { ViewerPosition LLVector3 } + } +} + +// RequestLocationGetAccessReply +// dataserver -> userserver +// *NOTE: obsolete. +{ + RequestLocationGetAccessReply Low Trusted Unencoded + { + PositionBlock Single + { ViewerIP IPADDR } + { ViewerPort IPPORT } + { ViewerRegion U64 } + { ViewerPosition LLVector3 } + { TravelAccess U8 } + } +} + + +// UserListRequest +// Get a list of the current system users +// viewer -> userserver +//*NOTE: obsolete +{ + UserListRequest Low NotTrusted Unencoded +} + + +//----------------------------------------------------------------------------- +// 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 + { + MessageBlock Single + { FromAgentID LLUUID } + { 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 } + } +} + +// Start group IM session. If everyone is 1, then offline users also +// get the messages. +{ + StartGroupIM Low NotTrusted Unencoded + { + SessionBlock Single + { SessionID LLUUID } + { Everyone U8 } + } + { + Participants Variable + { AgentID LLUUID } + } +} + +// drop out from a group instant message +{ + DropGroupIM Low NotTrusted Unencoded + { + SessionBlock Single + { SessionID LLUUID } + { AgentID LLUUID } + } +} + +// Group instant messaging +{ + GroupIM Low NotTrusted Unencoded + { + MessageBlock Single + { SessionID LLUUID } + { FromID LLUUID } + { FromAgentName Variable 1 } + { Message Variable 2 } + } +} + +// RetrieveInstantMessages - used to get instant messages that +// were persisted out to the database while the user was offline +{ + RetrieveInstantMessages Low NotTrusted Unencoded + { + AgentBlock Single + { Agent 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 } + } +} + +// This message is sent viewer->userserver to track if other agents +// come on or off line. +{ + TrackOnlineStatus Low NotTrusted Zerocoded + { + AgentBlock Variable + { AgentID LLUUID } + } +} + +// This message is sent viewer->userserver to ignore logon and logoff +// events for the specified agents. This is typically sent when a +// calling card is deleted or cancelled. +{ + IgnoreOnlineStatus Low NotTrusted Zerocoded + { + AgentBlock Variable + { AgentID LLUUID } + } +} + +// 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 } + } + { + 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 } + } + { + 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 } + } + { + 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 + { + MuteData Single + { AgentID LLUUID } + { MuteCRC U32 } + } +} + +// update/add someone in the mute list +{ + UpdateMuteListEntry Low NotTrusted Unencoded + { + MuteData Single + { AgentID LLUUID } + { MuteID LLUUID } + { MuteName Variable 1 } + { MuteType S32 } + { MuteFlags U32 } + } +} + +// Remove a mute list entry. +{ + RemoveMuteListEntry Low NotTrusted Unencoded + { + MuteData Single + { AgentID LLUUID } + { MuteID LLUUID } + { MuteName Variable 1 } + } +} + + +// viewer -> userserver, gimme inventory +//{ +// InventoryRequest Low NotTrusted Unencoded +// { +// InventoryData Single +// { AgentID LLUUID } +// { CacheCRC U32 } +// } +//} + +// +// Inventory update messages +// +{ + UpdateInventoryItem Low NotTrusted 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 } + } +} + +// When all that has updated is the asset, we can crunch this down. +{ + UpdateInventoryItemAsset Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } + { AssetID LLUUID } + } +} + +{ + MoveInventoryItem Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { Stamp BOOL } // should the server re-timestamp? + } + { + InventoryData Variable + { ItemID LLUUID } + { FolderID LLUUID } + } +} + +// copy inventory item by item id to specified destination folder, +// send out bulk inventory update when done. +// currently only sim->data, but it is general enough to be +// a viewer request. +{ + CopyInventoryItem Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Variable + { OldItemID LLUUID } + { NewFolderID LLUUID } + } +} + +{ + RemoveInventoryItem Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } + } +} + +{ + ChangeInventoryItemFlags Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } + { Flags U32 } + } +} + + +{ + SaveAssetIntoInventory Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Single + { ItemID LLUUID } + { NewAssetID LLUUID } + } +} + +{ + CreateInventoryFolder Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + FolderData Single + { FolderID LLUUID } + { ParentID LLUUID } + { Type S8 } + { Name Variable 1 } + } +} + +{ + UpdateInventoryFolder Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } + { ParentID LLUUID } + { Type S8 } + { Name Variable 1 } + } +} + +{ + MoveInventoryFolder Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { Stamp BOOL } // should the server re-timestamp children + } + { + InventoryData Variable + { FolderID LLUUID } + { ParentID LLUUID } + } +} + +{ + RemoveInventoryFolder Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } + } +} + +// Get inventory segment. +{ + FetchInventoryDescendents Low NotTrusted Zerocoded + { + AgentData Single + { AgentID 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 NotTrusted 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 } + } + { + InventoryData Variable + { OwnerID LLUUID } + { ItemID LLUUID } + } +} + +// response to fetch inventory +{ + FetchInventoryReply Low NotTrusted 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. +{ + 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 } + { 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 } + } + { + 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 } + { GroupID 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 + { AssetID 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 } + { GroupID LLUUID } + } + { + InventoryData Single + { LocalID U32 } + { ItemID LLUUID } + } +} + +{ + MoveTaskInventory Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID 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 + { + AgentBlock Single + { AgentID LLUUID } + { SessionID LLUUID } + { 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 } + { 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 + { AssetID LLUUID } + { Type S8 } + { InvType S8 } + { Flags U32 } + { SaleType U8 } + { SalePrice S32 } + { Name Variable 1 } + { Description Variable 1 } + { CreationDate S32 } + { CRC U32 } + } +} + +// if declined, the destid agent from the GiveInventory message +// responds with this message to the userserver +{ + DeclineInventory Low NotTrusted Unencoded + { + InfoBlock Single + { TransactionID LLUUID } + } +} + +// userserver -> 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 -> userserver +// 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 + { + AgentBlock Single + { SourceID LLUUID } + { FolderID LLUUID } // source ID's calling card folder + { DestID LLUUID } + { TransactionID LLUUID } + } +} + +{ + AcceptFriendship Low NotTrusted Unencoded + { + TransactionBlock Single + { TransactionID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } // place to put calling card. + } +} + +{ + DeclineFriendship Low NotTrusted Unencoded + { + TransactionBlock Single + { TransactionID LLUUID } + } +} + + +//{ +// AddCallingCard Low NotTrusted Unencoded +// { +// CardBlock Variable +// { SourceUUID LLUUID } +// { DestUUID LLUUID } +// { Name Variable 1 } +// } +//} + +{ + 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 + { + AgentBlock Single + { SourceID LLUUID } + { DestID LLUUID } + { TransactionID LLUUID } + } +} + +{ + AcceptCallingCard Low NotTrusted Unencoded + { + TransactionBlock Single + { TransactionID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } // place to put calling card. + } +} + +{ + DeclineCallingCard Low NotTrusted Unencoded + { + 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 + { AssetID 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 + { FolderID LLUUID } + { NextOwnerMask U32 } + { Type S8 } + { InvType S8 } + { 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 } + } +} + +//{ +// RegionIDRequest Low NotTrusted Unencoded +// { +// RequestBlock Single +// { RegionHandle U64 } +// } +//} + +{ + 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 + { + MoneyData Single + { TransactionID LLUUID } + { AgentID 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 + { + MoneyData Single + { AgentID LLUUID } + { 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 + { + MoneyData Single + { AgentID LLUUID } + { 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 + { + MoneyData Single + { AgentID LLUUID } + { 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 } + { 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 } + { 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 } + } +} + +// possible alternate to InventoryUpdate - tells viewer to load cached inventory +//{ +// UseCachedInventory Low Trusted Unencoded +// { +// InventoryData Single +// { AgentID LLUUID } +// } +//} + +// 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 } + } +} + + +// UserLoginLocationReply +// userserver -> viewer +{ + UserLoginLocationReply Low Trusted Zerocoded + { + AgentData Single + { SessionID LLUUID } + { Message Variable 1 } + } + { + RegionInfo Single + { LocationValid BOOL } + { GridsPerEdge U32 } + { MetersPerGrid F32 } + { Handle U64 } + { UsecSinceStart U64 } + { SecPerDay U32 } + { SecPerYear U32 } + { SunDirection LLVector3 } + { SunAngVelocity LLVector3 } + } + { + SimulatorBlock Single + { IP IPADDR } + { Port IPPORT } + } + { + URLBlock Single + { LocationID U32 } + { LocationLookAt LLVector3 } + } +} + +// UserSimLocationReply +// userserver -> viewer +{ + UserSimLocationReply Low Trusted Unencoded + { + SimulatorBlock Single + { AccessOK U8 } + { SimName Variable 1 } + { SimHandle U64 } + } +} + +// UserListReply +// Return a list of users on the system +{ + UserListReply Low Trusted Unencoded + { + UserBlock Variable + { FirstName Variable 1 } + { LastName Variable 1 } + { Status U8 } + } +} + +// 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 + { + StartLocationData Single + { AgentID LLUUID } + { 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 } + } +} + + + +// UserLoginLocationRequest +// userserver -> spaceserver +{ + UserLoginLocationRequest Low Trusted Zerocoded + { + UserBlock Single + { SessionID LLUUID } + { TravelAccess U8 } + { FirstLogin BOOL } + { LimitedToEstate U32 } + } + { + PositionBlock Single + { ViewerRegion U64 } + { ViewerPosition LLVector3 } + } + { + URLBlock Single + { SimName Variable 1 } + { Pos LLVector3 } + } +} + +// SpaceLoginLocationReply +// spaceserver -> userserver +// not reliable +{ + SpaceLoginLocationReply Low Trusted Zerocoded + { + UserBlock Single + { SessionID LLUUID } + { LocationID U32 } + { LocationPos LLVector3 } + { LocationLookAt LLVector3 } + } + { + SimulatorBlock Single + { IP IPADDR } + { Port IPPORT } + { CircuitCode U32 } + { Name Variable 1 } + { SimAccess U8 } + } + { + RegionInfo Single + { GridsPerEdge U32 } + { MetersPerGrid F32 } + { Handle U64 } + { UsecSinceStart U64 } + { SecPerDay U32 } + { SecPerYear U32 } + { SunDirection LLVector3 } + { SunAngVelocity 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 } + } +} + +// *************************************************************************** +// Simulator to QuerySim +// *************************************************************************** + +// SimulatorPauseState - what parts of the sim are paused + +{ + SimulatorPauseState Low NotTrusted Unencoded + { + PauseBlock Single + { SimPaused U32 } + { LayersPaused U32 } + { TasksPaused U32 } + } +} + +// SimulatorThrottleSettings - what are the current throttle settings? + +{ + SimulatorThrottleSettings Low NotTrusted Unencoded + { + Sender Single + { ID LLUUID } + } + { + Throttle Single + { Throttles Variable 1 } + } +} + +// *************************************************************************** +// 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 +{ + UpdateAttachment Low NotTrusted 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 + { UUID LLUUID } + { Type S8 } + { Tempfile 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 + { GroupID LLUUID } + { Name Variable 1 } // string + { Charter Variable 2 } // string + { ShowInList U8 } + { ShowMembersInGroupDir U8 } + { RequireMask U32 } // U32 mask + { ReputationMin S32 } + { ReputationMax S32 } + { MoneyMin S32 } + { MoneyMax S32 } + { OfficerTitle Variable 1 } // string + { MemberTitle Variable 1 } // string +// { OfficerMax U8 } +// { MemberMax U8 } + { PowersMask U32 } // U32 mask + { InsigniaID LLUUID } + { InviteOfficers Variable 2 } // string + { InviteMembers Variable 2 } // string + { MembershipFee S32 } // S32 + { OpenEnrollment BOOL } // BOOL (U8) + { AllowPublish BOOL } // whether profile is externally visible or not + { MaturePublish BOOL } // profile is "mature" + } +} + +// CreateGroupReply +// dataserver -> userserver +// userserver -> viewer +// reliable +{ + CreateGroupReply Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ReplyData Single + { GroupID LLUUID } + { Result S32 } + { 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 } + { ShowMembersInGroupDir BOOL } + { OfficerTitle Variable 1 } // string + { MemberTitle Variable 1 } // string +// { OfficerMax U8 } +// { MemberMax U8 } + { InsigniaID LLUUID } + { MembershipFee S32 } + { OpenEnrollment BOOL } + { InviteOfficers Variable 2 } // string + { InviteMembers Variable 2 } // string + { AllowPublish BOOL } + { MaturePublish BOOL } + } +} + +{ + GroupInfoUpdated Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } +} + +// JoinGroupRequest +// viewer -> simulator -> dataserver +// reliable +{ + JoinGroupRequest Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// JoinGroupReply +// dataserver -> userserver -> viewer +{ + JoinGroupReply Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { Success BOOL } + } +} + +// EjectGroupMemberRequest +// viewer -> userserver -> dataserver +// reliable +{ + EjectGroupMemberRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { AgentID LLUUID } + } +} + +// This message is sent from the dataserver to the simulator to let +// AgentID know that they are no longer a member of the group. This +// message is in response to EjectGroupMemberRequest messages. +// ROUTED dataserver -> userserver -> spaceserver -> simulator +// reliable +{ + RemoveMemberFromGroup Low Trusted Unencoded + { + TargetBlock Single + { TargetIP IPADDR } // U32 encoded IP + { TargetPort IPPORT } + } + { + AgentBlock Single + { AgentID LLUUID } + } + { + GroupBlock Single + { GroupID LLUUID } + } +} + + +// LeaveGroupRequest +// viewer -> userserver -> dataserver +// reliable +{ + LeaveGroupRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// InviteGroupResponse +// simulator -> dataserver +// reliable +{ + InviteGroupResponse Low Trusted Unencoded + { + InviteData Single + { AgentID LLUUID } + { InviteeID LLUUID } + { GroupID LLUUID } + { Officer BOOL } + { MembershipFee S32 } + } +} + +// GroupPropertiesRequest +// viewer-> userserver -> dataserver +// reliable +{ + GroupPropertiesRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupPropertiesReply +// viewer -> userserver -> dataserver +// reliable +{ + GroupPropertiesReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { Name Variable 1 } // string + { Charter Variable 2 } // string + { ShowInList U8 } + { ShowMembersInGroupDir U8 } + { RequireMask U32 } // U32 mask + { ReputationMin S32 } + { ReputationMax S32 } + { MoneyMin S32 } + { MoneyMax S32 } + { OfficerTitle Variable 1 } // string + { MemberTitle Variable 1 } // string +// { OfficerMax U8 } +// { MemberMax U8 } + { PowersMask U32 } // U32 mask + { InsigniaID LLUUID } + { FounderID LLUUID } + { MembershipFee S32 } // S32 + { OpenEnrollment BOOL } // BOOL (U8) + { Money S32 } + { CurrentElectionID LLUUID } + { GroupMembershipCount S32 } + { AllowPublish BOOL } + { MaturePublish BOOL } + } +} + +// GroupProfileRequest +// viewer-> userserver -> dataserver +// reliable +{ + GroupProfileRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupProfileReply +// dataserver -> userserver -> viewer +// reliable +{ + GroupProfileReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { Name Variable 1 } // string + { Charter Variable 2 } // string + { ShowInList U8 } + { ShowMembersInGroupDir U8 } + { OfficerTitle Variable 1 } // string + { MemberTitle Variable 1 } // string + { InsigniaID LLUUID } + { FounderID LLUUID } + { FounderName Variable 1 } + { MembershipFee S32 } + { OpenEnrollment BOOL } + } +} + +// GroupMoneyHistoryRequest +// viewer-> userserver -> dataserver +// reliable +{ + GroupMoneyHistoryRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupMoneyHistoryReply +// dataserver -> userserver -> viewer +// reliable +{ + GroupMoneyHistoryReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + GroupData Single + { IntervalDays S32 } + { CurrentInterval S32 } + { CurrentTaxes S32 } + { CurrentDividend S32 } + { EstimatedTaxes S32 } + { EstimatedDividend S32 } + { NumberNonExemptMembers S32 } + } +} + + +// CurrentInterval = 0 => this period (week, day, etc.) +// CurrentInterval = 1 => last period +// viewer -> userserver -> dataserver +// reliable +{ + GroupAccountSummaryRequest Low NotTrusted Zerocoded + { + MoneyData Single + { AgentID LLUUID } + { GroupID LLUUID } + { RequestID LLUUID } + { IntervalDays S32 } + { CurrentInterval S32 } + } +} + + +// dataserver -> userserver -> viewer +// Reliable +{ + GroupAccountSummaryReply Low NotTrusted 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 + { + MoneyData Single + { AgentID LLUUID } + { GroupID LLUUID } + { RequestID LLUUID } + { IntervalDays S32 } + { CurrentInterval S32 } + } +} + +// Reliable +{ + GroupAccountDetailsReply Low NotTrusted 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 + { + MoneyData Single + { AgentID LLUUID } + { GroupID LLUUID } + { RequestID LLUUID } + { IntervalDays S32 } + { CurrentInterval S32 } + } +} + +// Reliable +{ + GroupAccountTransactionsReply Low NotTrusted 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 } + } +} + +// GroupElectionInfoRequest +// viewer -> userserver -> dataserver +//reliable +{ + GroupElectionInfoRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupElectionInfoReply +// dataserver -> userserver -> viewer +// reliable +{ + GroupElectionInfoReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ElectionData Single + { GroupID LLUUID } + { ElectionID LLUUID } + { ElectionType Variable 1 } // string + { StartDateTime Variable 1 } // string + { EndDateTime Variable 1 } // string + { ElectionInitiator LLUUID } + { AlreadyVoted BOOL } + { VotedForCandidate LLUUID } + { VoteCast Variable 1 } // string + { Majority F32 } + { Quorum S32 } + } + { + CandidateData Variable + { AgentID LLUUID } + } +} + +// StartGroupElection +// viewer -> userserver -> dataserver +// reliable +{ + StartGroupElection Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ElectionData Single + { GroupID LLUUID } + { Duration S32 } + { Majority F32 } + { Quorum S32 } + } +} + +// GroupElectionBallot +// viewer -> userserver -> dataserver +// reliable +{ + GroupElectionBallot Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ElectionData Single + { GroupID LLUUID } + { ElectionID LLUUID } + { CandidateID LLUUID } + } +} + +// StartGroupRecall +// viewer -> userserver -> dataserver +// reliable +{ + StartGroupRecall Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + RecallData Single + { GroupID LLUUID } + { Duration S32 } + { RecallID LLUUID } + } +} + +// GroupRecallBallot +// viewer -> userserver -> dataserver +// reliable +{ + GroupRecallBallot Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + RecallData Single + { GroupID LLUUID } + { ElectionID LLUUID } + { VoteCast Variable 1 } // string + } +} + +// GroupActiveProposalsRequest +// viewer -> userserver -> dataserver +//reliable +{ + GroupActiveProposalsRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupActiveProposalItemReply +// dataserver -> userserver -> viewer +// reliable +{ + GroupActiveProposalItemReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + 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 -> userserver -> dataserver +//reliable +{ + GroupVoteHistoryRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// GroupVoteHistoryItemReply +// dataserver -> userserver -> viewer +// reliable +{ + GroupVoteHistoryItemReply Low Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + HistoryItemData Single + { VoteID LLUUID } + { TerseDateID Variable 1 } // string + { StartDateTime Variable 1 } // string + { EndDateTime Variable 1 } // string + { VoteInitiator LLUUID } + { RecallID 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 -> userserver -> dataserver +// reliable +{ + StartGroupProposal Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + ProposalData Single + { GroupID LLUUID } + { Quorum S32 } + { Majority F32 } // F32 + { Duration S32 } // S32, seconds + { ProposalText Variable 1 } // string + } +} + +// GroupProposalBallot +// viewer -> userserver -> dataserver +// reliable +{ + GroupProposalBallot Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ProposalData Single + { ProposalID LLUUID } + { VoteCast Variable 1 } // string + } +} + +// CallVote +// viewer -> userserver -> dataserver +// reliable +{ + CallVote Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + VoteData Single + { GroupID LLUUID } + { VoteType S32 } + { VoteQuorum S32 } + { VoteTime F32 } // F32, seconds + { VoteText Variable 1 } // string + } +} + + +// Vote +// viewer -> userserver -> dataserver +// reliable +{ + Vote Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + VoteData Single + { VoteID LLUUID } + { Response S32 } // S32, 0 = no, 1 = yes + } +} + +// TallyVotes userserver -> dataserver +// reliable +{ + TallyVotes Low Trusted Unencoded +} + +// GroupMembersRequest +// get the group members +// userserver -> dataserver +// reliable +{ + GroupMembersRequest Low NotTrusted Unencoded + { + RequestData Single + { RequestID LLUUID } + { GroupID LLUUID } + { ActiveOnly BOOL } + } +} + +// GroupMembersReply +// list of uuids for the group members +// dataserver -> userserver +// reliable +{ + GroupMembersReply Low NotTrusted Zerocoded + { + ReplyData Single + { RequestID LLUUID } + { GroupID LLUUID } + } + { + AgentData Variable + { AgentID LLUUID } + } +} + +// GroupOfficersAndMembersRequest +// get the group members +// userserver -> dataserver +// reliable +{ + GroupOfficersAndMembersRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { IncludeMembers BOOL } + } +} + +// GroupOfficersAndMembersReply +// list of uuids for the group officers and members +// dataserver -> userserver +// reliable +{ + GroupOfficersAndMembersReply Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { CompoundMsgID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } + { + OfficerData Variable + { AgentID LLUUID } + { Contribution S32 } + { OnlineStatus Variable 1 } // string + } + { + MemberData Variable + { AgentID LLUUID } + { Contribution S32 } + { OnlineStatus Variable 1 } // string + } +} + +// used to switch an agent's currently active group. +// viewer -> userserver -> dataserver -> AgentDataUpdate... +{ + ActivateGroup Low NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } +} + +// viewer -> userserver -> dataserver +{ + SetGroupContribution Low NotTrusted Unencoded + { + Data Single + { AgentID LLUUID } + { GroupID LLUUID } + { Contribution S32 } + } +} + +// 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 -> userserver -> dataserver +// reliable +{ + AgentWearablesRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } // UUID + } +} + +// AgentWearablesUpdate +// (a.k.a. "Here's what the avatar is wearing now.") +// viewer -> userserver -> dataserver +// dataserver -> userserver -> viewer +// reliable +{ + AgentWearablesUpdate Low NotTrusted Zerocoded + { + AgentData Single + { AgentID 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 + } +} + +// AgentCachedTexture +// viewer queries for cached textures on dataserver (via simulator) +// viewer -> userserver -> dataserver +// dataserver -> userserver -> viewer +// reliable +{ + AgentCachedTexture Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { SerialNum S32 } + } + { + WearableData Variable + { ID LLUUID } + { TextureIndex U8 } + } +} + +// Request an AgentDataUpdate without changing any agent data. +{ + AgentDataUpdateRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID 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 + { GroupIndex S8 } // -1 for none + } + { + GroupData Variable + { GroupID LLUUID } + { GroupOfficer BOOL } // BOOL + { GroupInsigniaID LLUUID } + { Contribution S32 } + { GroupName Variable 1 } // string + } +} + +// 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 +{ + ViewerEffect Medium NotTrusted Zerocoded + { + Effect Variable + { ID LLUUID } // UUID of the effect + { 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 } + } +} + + +{ + RezSingleAttachmentFromInv Low NotTrusted Zerocoded + { + ObjectData Single + { AgentID LLUUID } + { AssetID LLUUID } // asset id in inventory + { ItemID LLUUID } // inventory item id + { AttachmentPt U8 } // 0 for default + { ItemFlags U32 } + { GroupMask U32 } + { EveryoneMask U32 } + { NextOwnerMask U32 } + { Name Variable 1 } + { Description Variable 1 } + } +} + +{ + RezMultipleAttachmentsFromInv Low NotTrusted Zerocoded + { + HeaderData Single + { CompoundMsgID LLUUID } // All messages a single "compound msg" must have the same id + { TotalObjects U8 } + { AgentID LLUUID } + { FirstDetachAll U8 } + } + { + ObjectData Variable // 1 to 4 of these per packet + { AssetID LLUUID } // asset id in inventory + { ItemID LLUUID } // inventory item id + { 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 } + } +} + +{ + UserInfoReply Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + UserData Single + { IMViaEMail BOOL } + { EMail Variable 2 } + } +} + +{ + UpdateUserInfo Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + UserData Single + { IMViaEMail BOOL } + } +} + + +//----------------------------------------------------------------------------- +// 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 } + } +} + + +// viewer -> sim +// initiate upload. primarily used for uploading raw files. +{ + InitiateUpload Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + FileData Single + { BaseFilename Variable 1 } // string + { SourceFilename Variable 1 } // string + } +} + +// 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 } + { Flags U32 } + { EstateID U32 } // filled in on sim + { Godlike BOOL } // filled in on sim + } +} + +// sim -> viewer +{ + MapLayerReply Low NotTrusted 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 } + { 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 } + { Flags U32 } + { EstateID U32 } // filled in on sim + { Godlike BOOL } // filled in on sim + } + { + NameData Single + { Name Variable 1 } // string + } +} + +// sim -> viewer +{ + MapBlockReply Low NotTrusted 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 } + { 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 NotTrusted 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 } + { 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 +{ + MailTaskSimRequest Low NotTrusted 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. +{ + MailTaskSimReply Low NotTrusted Unencoded + { + TargetBlock Single + { TargetIP Variable 1 } // String IP + { TargetPort IPPORT } + } + { + DataBlock Single + { TaskID LLUUID } + } +} + +// ScriptMailRegistration +// Simulator -> dataserver +{ + ScriptMailRegistration Low NotTrusted Unencoded + { + DataBlock Single + { TargetIP Variable 1 } // String IP + { TargetPort IPPORT } + { TaskID LLUUID } + { Flags U32 } + } +} + + +// MailPingBounce +// This is sent to the RPC server when the sim can not be found. +// Not currently used. +// Spaceserver -> RPC server +{ + MailPingBounce Low NotTrusted Unencoded + { + DataBlock Single + { TargetIP IPADDR } + { TargetPort IPPORT } + { TaskID LLUUID } + { Flags U32 } + } +} + + +// ParcelMediaCommandMessage +// Sends a parcel media command +{ + ParcelMediaCommandMessage Low NotTrusted 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 NotTrusted Unencoded + { + DataBlock Single + { MediaURL Variable 1 } // string + { MediaID LLUUID } + { MediaAutoScale U8 } + } +} + +// LandScriptsRequest +// Sent by the viewer to request script information for a parcel +{ + LandScriptsRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + RequestData Single + { RequestFlags U32 } + { ParcelLocalID S32 } + { RelatedID LLUUID } + } +} + +// LandScriptsReply +// Sent by the simulator in response to LandScriptsRequest +{ + LandScriptsReply Low NotTrusted Unencoded + { + RequestData Single + { RequestFlags U32 } + { TotalScriptCount U32 } + { TotalScriptTime F32 } + } + { + Data Variable + { TaskLocalID U32 } + { TaskID LLUUID } + { LocationX F32 } + { LocationY F32 } + { LocationZ F32 } + { ScriptTime F32 } + { ScriptCount S32 } + { TaskName Variable 1 } + { OwnerName Variable 1 } + } +} + +// LandCollidersRequest +// Sent by the viewer to request collider information for a parcel (not yet implemented, still using God request) +{ + LandCollidersRequest Low NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + RequestData Single + { RequestFlags U32 } + { ParcelLocalID S32 } + { RelatedID LLUUID } + } +} + +// LandCollidersReply +// Sent by the simulator in response to LandCollidersRequest +{ + LandCollidersReply Low NotTrusted Unencoded + { + RequestData Single + { RequestFlags U32 } + { TotalColliderCount U32 } + } + { + Data Variable + { TaskLocalID U32 } + { TaskID LLUUID } + { LocationX F32 } + { LocationY F32 } + { LocationZ F32 } + { Score S32 } + { TaskName Variable 1 } + { OwnerName Variable 1 } + } +} diff --git a/snowcrash/snowcrash.sln b/applications/snowcrash/snowcrash.sln similarity index 100% rename from snowcrash/snowcrash.sln rename to applications/snowcrash/snowcrash.sln diff --git a/snowcrash/snowcrash/MainFrame.cpp b/applications/snowcrash/snowcrash/MainFrame.cpp similarity index 100% rename from snowcrash/snowcrash/MainFrame.cpp rename to applications/snowcrash/snowcrash/MainFrame.cpp diff --git a/snowcrash/snowcrash/MainFrame.h b/applications/snowcrash/snowcrash/MainFrame.h similarity index 100% rename from snowcrash/snowcrash/MainFrame.h rename to applications/snowcrash/snowcrash/MainFrame.h diff --git a/snowcrash/snowcrash/TrayIconImpl.h b/applications/snowcrash/snowcrash/TrayIconImpl.h similarity index 100% rename from snowcrash/snowcrash/TrayIconImpl.h rename to applications/snowcrash/snowcrash/TrayIconImpl.h diff --git a/snowcrash/snowcrash/resource.h b/applications/snowcrash/snowcrash/resource.h similarity index 100% rename from snowcrash/snowcrash/resource.h rename to applications/snowcrash/snowcrash/resource.h diff --git a/snowcrash/snowcrash/small.ico b/applications/snowcrash/snowcrash/small.ico similarity index 100% rename from snowcrash/snowcrash/small.ico rename to applications/snowcrash/snowcrash/small.ico diff --git a/snowcrash/snowcrash/snowcrash.cpp b/applications/snowcrash/snowcrash/snowcrash.cpp similarity index 100% rename from snowcrash/snowcrash/snowcrash.cpp rename to applications/snowcrash/snowcrash/snowcrash.cpp diff --git a/snowcrash/snowcrash/snowcrash.h b/applications/snowcrash/snowcrash/snowcrash.h similarity index 100% rename from snowcrash/snowcrash/snowcrash.h rename to applications/snowcrash/snowcrash/snowcrash.h diff --git a/snowcrash/snowcrash/snowcrash.ico b/applications/snowcrash/snowcrash/snowcrash.ico similarity index 100% rename from snowcrash/snowcrash/snowcrash.ico rename to applications/snowcrash/snowcrash/snowcrash.ico diff --git a/snowcrash/snowcrash/snowcrash.rc b/applications/snowcrash/snowcrash/snowcrash.rc similarity index 100% rename from snowcrash/snowcrash/snowcrash.rc rename to applications/snowcrash/snowcrash/snowcrash.rc diff --git a/snowcrash/snowcrash/snowcrash.vcproj b/applications/snowcrash/snowcrash/snowcrash.vcproj similarity index 100% rename from snowcrash/snowcrash/snowcrash.vcproj rename to applications/snowcrash/snowcrash/snowcrash.vcproj diff --git a/snowcrash/snowcrash/stdafx.cpp b/applications/snowcrash/snowcrash/stdafx.cpp similarity index 100% rename from snowcrash/snowcrash/stdafx.cpp rename to applications/snowcrash/snowcrash/stdafx.cpp diff --git a/snowcrash/snowcrash/stdafx.h b/applications/snowcrash/snowcrash/stdafx.h similarity index 100% rename from snowcrash/snowcrash/stdafx.h rename to applications/snowcrash/snowcrash/stdafx.h diff --git a/snowcrash/snowflake/Block.cpp b/applications/snowcrash/snowflake/Block.cpp similarity index 100% rename from snowcrash/snowflake/Block.cpp rename to applications/snowcrash/snowflake/Block.cpp diff --git a/snowcrash/snowflake/Block.h b/applications/snowcrash/snowflake/Block.h similarity index 100% rename from snowcrash/snowflake/Block.h rename to applications/snowcrash/snowflake/Block.h diff --git a/snowcrash/snowflake/BlockList.cpp b/applications/snowcrash/snowflake/BlockList.cpp similarity index 100% rename from snowcrash/snowflake/BlockList.cpp rename to applications/snowcrash/snowflake/BlockList.cpp diff --git a/snowcrash/snowflake/BlockList.h b/applications/snowcrash/snowflake/BlockList.h similarity index 100% rename from snowcrash/snowflake/BlockList.h rename to applications/snowcrash/snowflake/BlockList.h diff --git a/snowcrash/snowflake/Config.cpp b/applications/snowcrash/snowflake/Config.cpp similarity index 100% rename from snowcrash/snowflake/Config.cpp rename to applications/snowcrash/snowflake/Config.cpp diff --git a/snowcrash/snowflake/Config.h b/applications/snowcrash/snowflake/Config.h similarity index 100% rename from snowcrash/snowflake/Config.h rename to applications/snowcrash/snowflake/Config.h diff --git a/snowcrash/snowflake/MainFrame.cpp b/applications/snowcrash/snowflake/MainFrame.cpp similarity index 100% rename from snowcrash/snowflake/MainFrame.cpp rename to applications/snowcrash/snowflake/MainFrame.cpp diff --git a/snowcrash/snowflake/MainFrame.h b/applications/snowcrash/snowflake/MainFrame.h similarity index 100% rename from snowcrash/snowflake/MainFrame.h rename to applications/snowcrash/snowflake/MainFrame.h diff --git a/snowcrash/snowflake/Message.cpp b/applications/snowcrash/snowflake/Message.cpp similarity index 100% rename from snowcrash/snowflake/Message.cpp rename to applications/snowcrash/snowflake/Message.cpp diff --git a/snowcrash/snowflake/Message.h b/applications/snowcrash/snowflake/Message.h similarity index 100% rename from snowcrash/snowflake/Message.h rename to applications/snowcrash/snowflake/Message.h diff --git a/snowcrash/snowflake/Sequence.cpp b/applications/snowcrash/snowflake/Sequence.cpp similarity index 100% rename from snowcrash/snowflake/Sequence.cpp rename to applications/snowcrash/snowflake/Sequence.cpp diff --git a/snowcrash/snowflake/Sequence.h b/applications/snowcrash/snowflake/Sequence.h similarity index 100% rename from snowcrash/snowflake/Sequence.h rename to applications/snowcrash/snowflake/Sequence.h diff --git a/snowcrash/snowflake/SequenceList.cpp b/applications/snowcrash/snowflake/SequenceList.cpp similarity index 100% rename from snowcrash/snowflake/SequenceList.cpp rename to applications/snowcrash/snowflake/SequenceList.cpp diff --git a/snowcrash/snowflake/SequenceList.h b/applications/snowcrash/snowflake/SequenceList.h similarity index 100% rename from snowcrash/snowflake/SequenceList.h rename to applications/snowcrash/snowflake/SequenceList.h diff --git a/snowcrash/snowflake/Server.cpp b/applications/snowcrash/snowflake/Server.cpp similarity index 100% rename from snowcrash/snowflake/Server.cpp rename to applications/snowcrash/snowflake/Server.cpp diff --git a/snowcrash/snowflake/Server.h b/applications/snowcrash/snowflake/Server.h similarity index 100% rename from snowcrash/snowflake/Server.h rename to applications/snowcrash/snowflake/Server.h diff --git a/snowcrash/snowflake/ServerList.cpp b/applications/snowcrash/snowflake/ServerList.cpp similarity index 100% rename from snowcrash/snowflake/ServerList.cpp rename to applications/snowcrash/snowflake/ServerList.cpp diff --git a/snowcrash/snowflake/ServerList.h b/applications/snowcrash/snowflake/ServerList.h similarity index 100% rename from snowcrash/snowflake/ServerList.h rename to applications/snowcrash/snowflake/ServerList.h diff --git a/snowcrash/snowflake/Var.cpp b/applications/snowcrash/snowflake/Var.cpp similarity index 100% rename from snowcrash/snowflake/Var.cpp rename to applications/snowcrash/snowflake/Var.cpp diff --git a/snowcrash/snowflake/Var.h b/applications/snowcrash/snowflake/Var.h similarity index 100% rename from snowcrash/snowflake/Var.h rename to applications/snowcrash/snowflake/Var.h diff --git a/snowcrash/snowflake/keywords.cpp b/applications/snowcrash/snowflake/keywords.cpp similarity index 100% rename from snowcrash/snowflake/keywords.cpp rename to applications/snowcrash/snowflake/keywords.cpp diff --git a/snowcrash/snowflake/keywords.h b/applications/snowcrash/snowflake/keywords.h similarity index 100% rename from snowcrash/snowflake/keywords.h rename to applications/snowcrash/snowflake/keywords.h diff --git a/snowcrash/snowflake/snowflake.cpp b/applications/snowcrash/snowflake/snowflake.cpp similarity index 100% rename from snowcrash/snowflake/snowflake.cpp rename to applications/snowcrash/snowflake/snowflake.cpp diff --git a/snowcrash/snowflake/snowflake.h b/applications/snowcrash/snowflake/snowflake.h similarity index 100% rename from snowcrash/snowflake/snowflake.h rename to applications/snowcrash/snowflake/snowflake.h diff --git a/snowcrash/snowflake/snowflake.vcproj b/applications/snowcrash/snowflake/snowflake.vcproj similarity index 100% rename from snowcrash/snowflake/snowflake.vcproj rename to applications/snowcrash/snowflake/snowflake.vcproj diff --git a/snowcrash/snowflake/stdafx.cpp b/applications/snowcrash/snowflake/stdafx.cpp similarity index 100% rename from snowcrash/snowflake/stdafx.cpp rename to applications/snowcrash/snowflake/stdafx.cpp diff --git a/snowcrash/snowflake/stdafx.h b/applications/snowcrash/snowflake/stdafx.h similarity index 100% rename from snowcrash/snowflake/stdafx.h rename to applications/snowcrash/snowflake/stdafx.h diff --git a/libsecondlife-cs/bin/Debug/keywords.txt b/libsecondlife-cs/bin/Debug/keywords.txt index 30a49a13..38256ca3 100644 --- a/libsecondlife-cs/bin/Debug/keywords.txt +++ b/libsecondlife-cs/bin/Debug/keywords.txt @@ -1,3 +1,4 @@ +SeedCapability X Y Z diff --git a/libsecondlife-cs/bin/Debug/protocol.txt b/libsecondlife-cs/bin/Debug/protocol.txt index b4b200e1..43d91382 100644 --- a/libsecondlife-cs/bin/Debug/protocol.txt +++ b/libsecondlife-cs/bin/Debug/protocol.txt @@ -8569,14 +8569,15 @@ sim -> dataserver //----------------------------------------------------------------------------- // CreateGroupRequest -// viewer -> userserver -// userserver -> dataserver +// viewer -> simulator +// simulator -> dataserver // reliable { CreateGroupRequest Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } + { SessionID LLUUID } } { GroupData Single @@ -8623,15 +8624,16 @@ sim -> dataserver } } -// CreateGroupRequest -// viewer -> userserver -// userserver -> dataserver +// UpdateGroupInfo +// viewer -> simulator +// simulator -> dataserver // reliable { UpdateGroupInfo Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } + { SessionID LLUUID } } { GroupData Single @@ -8662,19 +8664,18 @@ sim -> dataserver } // JoinGroupRequest -// viewer -> userserver -> dataserver +// viewer -> simulator -> dataserver // reliable { JoinGroupRequest Low NotTrusted Zerocoded { AgentData Single { AgentID LLUUID } + { SessionID LLUUID } } { GroupData Single { GroupID LLUUID } - { Officer U8 } - { MembershipFee S32 } } } @@ -8736,6 +8737,7 @@ sim -> dataserver { AgentData Single { AgentID LLUUID } + { SessionID LLUUID } } { GroupData Single @@ -8743,21 +8745,18 @@ sim -> dataserver } } -// InviteGroupRequest -// viewer -> userserver -> dataserver +// InviteGroupResponse +// simulator -> dataserver // reliable { - InviteGroupRequest Low NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } // UUID of inviting agent - } + InviteGroupResponse Low Trusted Unencoded { InviteData Single - { AgentName Variable 1 } // string + { AgentID LLUUID } { InviteeID LLUUID } { GroupID LLUUID } - { Officer BOOL } // BOOL + { Officer BOOL } + { MembershipFee S32 } } }