From 53dbd4d6e374bc7469974fb45aaa1fa1b54b2997 Mon Sep 17 00:00:00 2001 From: ozlin Date: Wed, 2 Aug 2006 05:05:55 +0000 Subject: [PATCH] git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@111 52acb1d6-8a22-11de-b505-999d5b087335 --- applications/SLChat/NetCom.cs | 144 +- applications/SLChat/SLChat.csproj | 39 +- applications/SLChat/bin/Debug/JSON.dll | Bin 28672 -> 28672 bytes applications/SLChat/bin/Debug/SLChat.exe | Bin 40960 -> 49152 bytes applications/SLChat/bin/Debug/XmlRpcCS.dll | Bin 40960 -> 40960 bytes applications/SLChat/bin/Debug/keywords.txt | 3018 ++--- .../SLChat/bin/Debug/libsecondlife.dll | Bin 102400 -> 86016 bytes applications/SLChat/bin/Debug/protocol.txt | 10233 +++++++++++++++- applications/SLChat/winAbout.Designer.cs | 48 +- applications/SLChat/winAbout.cs | 1 + applications/SLChat/winChat.cs | 296 +- applications/SLChat/winIM.Designer.cs | 40 +- applications/SLChat/winIM.cs | 146 +- applications/SLChat/winLogin.cs | 340 +- 14 files changed, 12622 insertions(+), 1683 deletions(-) diff --git a/applications/SLChat/NetCom.cs b/applications/SLChat/NetCom.cs index 316a3c75..1faa589e 100644 --- a/applications/SLChat/NetCom.cs +++ b/applications/SLChat/NetCom.cs @@ -35,16 +35,103 @@ namespace SLChat public string lastname; public string password; public bool loggedin; + public string loginLocation; - public NetCom(string fname, string lname, string pwrd, ChatScreen wndChat) + public NetCom(string fname, string lname, string pwrd, string logLocation, ChatScreen wndChat) { //Our NetCom main thing, we go through and set //our settings up. winChat = wndChat; client = new SecondLife("keywords.txt", "protocol.txt"); + client.Network.RegisterCallback("ChatFromSimulator", new PacketCallback(ChatIncoming)); + client.Network.RegisterCallback("ImprovedInstantMessage", new PacketCallback(InstantMessageIncoming)); + firstname = fname; lastname = lname; password = pwrd; + loginLocation = logLocation; + } + + private void InstantMessageIncoming(Packet packet, Simulator simulator) + { + if (packet.Layout.Name == "ImprovedInstantMessage") + { + string output = ""; + LLUUID FromAgentID = new LLUUID(); + LLUUID ToAgentID = new LLUUID(); + uint ParentEstateID = 0; + LLUUID RegionID = new LLUUID(); + LLVector3 Position = new LLVector3(); + byte Offline = 0; + byte Dialog = 0; + LLUUID ID = new LLUUID(); + uint Timestamp = 0; + string FromAgentName = ""; + string Message = ""; + string BinaryBucket = ""; + + ArrayList blocks; + + blocks = packet.Blocks(); + + foreach (Block block in blocks) + { + foreach (Field field in block.Fields) + { + if(field.Layout.Name == "FromAgentID") + { + FromAgentID = (LLUUID)field.Data; + } + else if(field.Layout.Name == "ToAgentID") + { + ToAgentID = (LLUUID)field.Data; + } + else if(field.Layout.Name == "ParentEstateID") + { + ParentEstateID = (uint)field.Data; + } + else if(field.Layout.Name == "RegionID") + { + RegionID = (LLUUID)field.Data; + } + else if(field.Layout.Name == "Position") + { + Position = (LLVector3)field.Data; + } + else if(field.Layout.Name == "Offline") + { + Offline = (byte)field.Data; + } + else if(field.Layout.Name == "Dialog") + { + Dialog = (byte)field.Data; + } + else if(field.Layout.Name == "ID") + { + ID = (LLUUID)field.Data; + } + else if(field.Layout.Name == "Timestamp") + { + Timestamp = (uint)field.Data; + } + else if(field.Layout.Name == "FromAgentName") + { + FromAgentName = System.Text.Encoding.UTF8.GetString((byte[])field.Data).Replace("\0", ""); + } + else if(field.Layout.Name == "Message") + { + Message = System.Text.Encoding.UTF8.GetString((byte[])field.Data).Replace("\0", ""); + } + else if(field.Layout.Name == "BinaryBucket") + { + BinaryBucket = System.Text.Encoding.UTF8.GetString((byte[])field.Data).Replace("\0", ""); + } + } + } + + output = newline + FromAgentName + ": " + Message; + winChat.ReturnData(output,4,FromAgentName,FromAgentID.ToString()); + } } private void ChatIncoming(Packet packet, Simulator simulator) @@ -55,14 +142,16 @@ namespace SLChat if (packet.Layout.Name == "ChatFromSimulator") { string output = ""; - string message = ""; - byte audible = 0; - byte type = 0; - byte sourcetype = 0; - string name = ""; - LLUUID id = new LLUUID(); - byte command = 0; - LLUUID commandID = new LLUUID(); + string fromname = ""; //Name of source. + LLUUID sourceid = new LLUUID(); //UUID of source, object/avatar + LLUUID ownerid = new LLUUID(); //UUID of owner, if object UUID = owner of object, if avatar UUID = same as source + byte sourcetype = 0; //1 = avatar, 2 = object + byte chattype = 0; //0 = Whisper, 1 = Say, 2 = Shout, 3 = unknown, 4 = typing notification, 5 = chatbar open/close + byte audible = 0; //Audible: 1 if audible, 0 if beyond 20m (message is null) + LLVector3 position = new LLVector3(); //Region local position of source. + string message = ""; //Message from source + byte command = 0; //Unused? + LLUUID commandID = new LLUUID(); //Unused? ArrayList blocks; @@ -72,21 +161,25 @@ namespace SLChat { foreach (Field field in block.Fields) { - if (field.Layout.Name == "ID") + if (field.Layout.Name == "SourceID") { - id = (LLUUID)field.Data; + sourceid = (LLUUID)field.Data; } - else if(field.Layout.Name == "Name") + else if(field.Layout.Name == "OwnerID") { - name = System.Text.Encoding.UTF8.GetString((byte[])field.Data).Replace("\0", ""); + ownerid = (LLUUID)field.Data; + } + else if(field.Layout.Name == "FromName") + { + fromname = System.Text.Encoding.UTF8.GetString((byte[])field.Data).Replace("\0", ""); } else if(field.Layout.Name == "SourceType") { sourcetype = (byte)field.Data; } - else if(field.Layout.Name == "Type") + else if(field.Layout.Name == "ChatType") { - type = (byte)field.Data; + chattype = (byte)field.Data; } else if(field.Layout.Name == "Audible") { @@ -96,6 +189,10 @@ namespace SLChat { message = System.Text.Encoding.UTF8.GetString((byte[])field.Data).Replace("\0", ""); } + else if(field.Layout.Name == "Position") + { + position = (LLVector3)field.Data; + } else if(field.Layout.Name == "Command") { command = (byte)field.Data; @@ -110,19 +207,19 @@ namespace SLChat if(message!="") { //If we haven't recieved a blank message - if(name != firstname + " " + lastname) + if(fromname != firstname + " " + lastname) { //If the name and first name is not ours //so we don't get our own talkback with our name. - output = newline + name + ": " + message; - winChat.ReturnData(output,3,name,id.ToString()); + output = newline + fromname + ": " + message; + winChat.ReturnData(output,3,fromname,sourceid.ToString()); }else{ //Now if it IS our text, we want to replace //the name with "You", this makes it easier //to distinguish our own text. - name = "You"; - output = newline + name + ": " + message; - winChat.ReturnData(output,3,name,id.ToString()); + fromname = "You"; + output = newline + fromname + ": " + message; + winChat.ReturnData(output,3,fromname,sourceid.ToString()); } } } @@ -136,11 +233,10 @@ namespace SLChat //Double checking on name. if(firstname != "" & lastname != "" & password != "") { - client.Network.RegisterCallback("ChatFromSimulator", new PacketCallback(ChatIncoming)); Hashtable loginParams = NetworkManager.DefaultLoginValues(firstname, lastname, password, - "00:00:00:00:00:00", "last", 1, 11, 11, 11, "Win", "0", "SLChat", "ozspade@slinked.net"); - + "00:00:00:00:00:00", loginLocation, 1, 11, 11, 11, "Win", "0", "SLChat", "ozspade@slinked.net"); + //uri:Ahern&195&233&30 // An example of how to pass additional options to the login server // Request information on the Root Inventory Folder, and Inventory Skeleton diff --git a/applications/SLChat/SLChat.csproj b/applications/SLChat/SLChat.csproj index 42f30c45..6df6dff4 100644 --- a/applications/SLChat/SLChat.csproj +++ b/applications/SLChat/SLChat.csproj @@ -24,41 +24,31 @@ False - - False - ..\..\libsecondlife-cs\bin\Debug\libsecondlife.dll - - - D:\Oz's Files\Second Life Stuff\libsecondlife\libsecondlife-cs\bin\Debug\XmlRpcCS.dll + + D:\Oz's Files\Second Life Stuff\libsecondlife\libsecondlife-cs\bin\Debug\libsecondlife.dll False - - D:\Oz's Files\Second Life Stuff\libsecondlife\libsecondlife-cs\Inventory\Inventory\bin\Debug\Inventory.dll + + D:\Oz's Files\Second Life Stuff\libsecondlife\libsecondlife-cs\bin\Debug\JSON.dll + False + + + D:\Oz's Files\Second Life Stuff\libsecondlife\libsecondlife-cs\bin\Debug\XmlRpcCS.dll False - - Form - - - Form - + + - - Form - + - - Form - - winLogin.cs @@ -68,15 +58,10 @@ winIM.cs - - winInventory.cs - winAbout.cs - - Form - + winAbout.cs diff --git a/applications/SLChat/bin/Debug/JSON.dll b/applications/SLChat/bin/Debug/JSON.dll index 2ada87b0f74707f9d94bf0c9d464b277da70f246..2a92985f3dfbe9b3bca355248abc813b5bca5b91 100644 GIT binary patch delta 68 zcmZp8z}WDBaY6?(d-REo-Ag?LPJcb%%ATp@vNEaNu)3~o)Gc$Ox&AYeD^2;0P}(z>i_@% delta 68 zcmZp8z}WDBaY6_4spp3_b}#i1kl{FfyY|9Ir_FU2*6Xk{FmHD7yul2TohBb=@{etH@!g{Y06_2_VE_OC diff --git a/applications/SLChat/bin/Debug/SLChat.exe b/applications/SLChat/bin/Debug/SLChat.exe index 32823b9d62b01d93c7b1abcc954dd0ef2efdab68..cac237e81fb706f7cc64b8b02f12af93de0b9f23 100644 GIT binary patch literal 49152 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 DN?J%^ literal 40960 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 G@IL|VAnTz3 diff --git a/applications/SLChat/bin/Debug/XmlRpcCS.dll b/applications/SLChat/bin/Debug/XmlRpcCS.dll index 8a0ee5986567cec5f40f3010ac3a94a0ac1d1214..b5a08e3bda6aae2af877e76fc711da4eeacbdcc7 100644 GIT binary patch delta 233 zcmZoTz|?SnX+j4xd-REo-D|yA;yI%^H`{pg38)wt8@QQUI9upix;dNcnpn7)=vq3P zx$0UtIyo7;7?_%wxjAjli;m+LI8njRe0=^Dk2!f=yKPz1es8{$Rl=zQG|`0t2$+Dl z9EdYofVhN#At=}-c=d~k%$-YQ9G5K74>$3)blhB1BEZ8P%^Az)bQcCYnfiQ=rCz1hZ_Pe8@O#lphK#N1NX(9Fb4*TmSwS=Z6R z&{WsV$;H{i$;I5<#LRMYUUVG4K&47YubY^U^9s@IJKfhyGB@AJD&f=tn&`p+1WZ6& z4#XKPKwQGW5ESeZyw&B7XGd{zF)%U!>CMv{iWwON zCUZCG@|rN{F&HygGFUJeFqlquZCVQy|J-CKj3N%Sz=J_xvU#&9s`||z89R73Gfw!= F4*+cELb3n= diff --git a/applications/SLChat/bin/Debug/keywords.txt b/applications/SLChat/bin/Debug/keywords.txt index 6f8c8b68..1c2ab208 100644 --- a/applications/SLChat/bin/Debug/keywords.txt +++ b/applications/SLChat/bin/Debug/keywords.txt @@ -1,1509 +1,1511 @@ -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 -ChatMessage -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 -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 -UUIDSoundTriggerFar -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 -XPos -YPos -ZPos -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 -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 -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 -ChangeInventoryItemFlags -Force -TransactionBlock -PowersMask -Stamp -RelatedID -TotalCredits -State -TextureIndex -SimPaused -InviteeID -ParcelReclaim -Money -PathTwist -AuthBuyerID -Color -SourceType -World -QueryData -Users -SysOS -Notes -AvatarID -FounderID -StipendEstimate -LocationLookAt -Sound -Cover -TextureEntry -SquareMetersCommitted -ChannelID -Dwell -North -AgentUpdate -PickGodDelete -UpdateInventoryItemAsset -HostName -PriceParcelClaim -ParcelClaim -ProfileHollow -Count -South -Entry -ObjectUpdateCompressed -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 -IMViaEMail -StartExpungeProcessAck -RentPrice -GenericMessage -ChildAgentAlive -SpawnPointBlock -AttachmentBlock -RecallData -OfficerData -GroupOfficer -ObjectMaterial -OwnerName -AvatarNotesReply -CacheID -OwnerMask +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 diff --git a/applications/SLChat/bin/Debug/libsecondlife.dll b/applications/SLChat/bin/Debug/libsecondlife.dll index c65d3090c4c8a54820afc4440e5f233ae06460e2..3b37704837323a46fb0131521cc3f186029af52c 100644 GIT binary patch literal 86016 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 A*lF#exlB}uojK9iQd_H*j>YN8v`dWI~ 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 literal 102400 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 diff --git a/applications/SLChat/bin/Debug/protocol.txt b/applications/SLChat/bin/Debug/protocol.txt index bb39cfc5..e3e5f36c 100644 --- a/applications/SLChat/bin/Debug/protocol.txt +++ b/applications/SLChat/bin/Debug/protocol.txt @@ -1 +1,10232 @@ -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 } + { 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 } + } +} diff --git a/applications/SLChat/winAbout.Designer.cs b/applications/SLChat/winAbout.Designer.cs index 5da32bfb..f1e60d3f 100644 --- a/applications/SLChat/winAbout.Designer.cs +++ b/applications/SLChat/winAbout.Designer.cs @@ -37,7 +37,7 @@ namespace SLChat private void InitializeComponent() { this.grpLabels = new System.Windows.Forms.GroupBox(); - this.lblCreditsNames = new System.Windows.Forms.Label(); + this.rCredits = new System.Windows.Forms.RichTextBox(); this.lblCredits = new System.Windows.Forms.Label(); this.lblURL = new System.Windows.Forms.Label(); this.lblLib = new System.Windows.Forms.Label(); @@ -49,7 +49,7 @@ namespace SLChat // // grpLabels // - this.grpLabels.Controls.Add(this.lblCreditsNames); + this.grpLabels.Controls.Add(this.rCredits); this.grpLabels.Controls.Add(this.lblCredits); this.grpLabels.Controls.Add(this.lblURL); this.grpLabels.Controls.Add(this.lblLib); @@ -62,50 +62,50 @@ namespace SLChat this.grpLabels.TabStop = false; this.grpLabels.Text = "About This Program:"; // - // lblCreditsNames + // rCredits // - this.lblCreditsNames.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblCreditsNames.Location = new System.Drawing.Point(6, 131); - this.lblCreditsNames.Name = "lblCreditsNames"; - this.lblCreditsNames.Size = new System.Drawing.Size(260, 85); - this.lblCreditsNames.TabIndex = 4; - this.lblCreditsNames.Text = "Oz Spade"; + this.rCredits.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rCredits.Location = new System.Drawing.Point(6, 134); + this.rCredits.Name = "rCredits"; + this.rCredits.Size = new System.Drawing.Size(263, 79); + this.rCredits.TabIndex = 4; + this.rCredits.Text = "Oz Spade"; // // lblCredits // this.lblCredits.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblCredits.Location = new System.Drawing.Point(83, 101); + this.lblCredits.Location = new System.Drawing.Point(7, 111); this.lblCredits.Name = "lblCredits"; - this.lblCredits.Size = new System.Drawing.Size(75, 30); + this.lblCredits.Size = new System.Drawing.Size(75, 20); this.lblCredits.TabIndex = 3; this.lblCredits.Text = "Credits:"; // // lblURL // - this.lblURL.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblURL.Location = new System.Drawing.Point(74, 73); + this.lblURL.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblURL.Location = new System.Drawing.Point(19, 51); this.lblURL.Name = "lblURL"; - this.lblURL.Size = new System.Drawing.Size(94, 18); + this.lblURL.Size = new System.Drawing.Size(241, 20); this.lblURL.TabIndex = 2; - this.lblURL.Text = "URL goes here"; + this.lblURL.Text = "http://slwiki.slinked.net/index.php?title=SLChat"; // // lblLib // this.lblLib.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblLib.Location = new System.Drawing.Point(50, 51); + this.lblLib.Location = new System.Drawing.Point(54, 71); this.lblLib.Name = "lblLib"; - this.lblLib.Size = new System.Drawing.Size(216, 22); + this.lblLib.Size = new System.Drawing.Size(162, 40); this.lblLib.TabIndex = 1; - this.lblLib.Text = "Created using libsecondlife"; + this.lblLib.Text = "Created using libsecondlife (http://libsecondlife.org)"; // // lblName // this.lblName.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblName.Location = new System.Drawing.Point(83, 26); + this.lblName.Location = new System.Drawing.Point(63, 26); this.lblName.Name = "lblName"; - this.lblName.Size = new System.Drawing.Size(75, 25); + this.lblName.Size = new System.Drawing.Size(133, 25); this.lblName.TabIndex = 0; - this.lblName.Text = "SLChat:"; + this.lblName.Text = "SLChat 0.0.0.1"; // // btnClose // @@ -123,13 +123,13 @@ namespace SLChat this.lblRandomQuote.Name = "lblRandomQuote"; this.lblRandomQuote.Size = new System.Drawing.Size(196, 16); this.lblRandomQuote.TabIndex = 2; - this.lblRandomQuote.Text = "You\'re going to have to cheat."; + this.lblRandomQuote.Text = "But how can the snowmen talk?"; // // winAbout // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(289, 262); + this.ClientSize = new System.Drawing.Size(291, 264); this.Controls.Add(this.lblRandomQuote); this.Controls.Add(this.btnClose); this.Controls.Add(this.grpLabels); @@ -143,9 +143,9 @@ namespace SLChat this.grpLabels.ResumeLayout(false); this.ResumeLayout(false); } + private System.Windows.Forms.RichTextBox rCredits; private System.Windows.Forms.Label lblRandomQuote; private System.Windows.Forms.GroupBox grpLabels; - private System.Windows.Forms.Label lblCreditsNames; private System.Windows.Forms.Label lblCredits; private System.Windows.Forms.Label lblURL; private System.Windows.Forms.Label lblLib; diff --git a/applications/SLChat/winAbout.cs b/applications/SLChat/winAbout.cs index 27cc50b4..533f4fd7 100644 --- a/applications/SLChat/winAbout.cs +++ b/applications/SLChat/winAbout.cs @@ -27,6 +27,7 @@ namespace SLChat // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); + rCredits.Text = "Oz Spade, Baba Yamamoto"; // // TODO: Add constructor code after the InitializeComponent() call. diff --git a/applications/SLChat/winChat.cs b/applications/SLChat/winChat.cs index ce8776e8..3fa45929 100644 --- a/applications/SLChat/winChat.cs +++ b/applications/SLChat/winChat.cs @@ -18,7 +18,7 @@ using System.Xml.XPath; using System.IO; using System.Threading; using libsecondlife; -using libsecondlife.InventorySystem; +//using libsecondlife.InventorySystem; namespace SLChat { @@ -33,9 +33,10 @@ namespace SLChat { public static winLogin winLog; //Login Window. public static NetCom net; //NetCom calls. - public static winInventory winInv; //Inventory window. + //public static winInventory winInv; //Inventory window. public static winAbout winAboot; //About window. - public static Thread loginthread; + public static ChatScreen winCht; + //public static Thread loginthread; public bool aboutVisible; //Is the about window visible? public bool loginVisible; //Is the login window visible? Probably a better way of checking this. public bool loggedin; //Are we logged in? false and true @@ -47,14 +48,17 @@ namespace SLChat int ChatLeng; //Length of rChatHistory, used for buggy ChatEffects. //Used to toggle auto-scrolling, making it easier to //copy text and such from rChatHistory. - bool chatAutoScroll; + bool chatAutoScroll = true; //Stores residents who have spoken Name and Key //used for printing key to text (and later things). Hashtable userHash = new Hashtable(); + IMwin[] arrIM = new IMwin[4]; + public int tabCount; public ChatScreen(winLogin Load) { winLog = Load; + winCht = this; // // The InitializeComponent() call is required for Windows Forms designer support. // @@ -110,12 +114,16 @@ namespace SLChat this.toolStrip = new System.Windows.Forms.ToolStrip(); this.toolStripBtnIM = new System.Windows.Forms.ToolStripButton(); this.txtChatEntry = new System.Windows.Forms.TextBox(); + this.tabMain = new System.Windows.Forms.TabControl(); + this.tabLocalChat = new System.Windows.Forms.TabPage(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); this.splitContainer1.SuspendLayout(); this.cntxListNames.SuspendLayout(); this.menuStrip1.SuspendLayout(); this.toolStrip.SuspendLayout(); + this.tabMain.SuspendLayout(); + this.tabLocalChat.SuspendLayout(); this.SuspendLayout(); // // rChatHistory @@ -125,10 +133,10 @@ namespace SLChat | System.Windows.Forms.AnchorStyles.Right))); this.rChatHistory.AutoWordSelection = true; this.rChatHistory.BackColor = System.Drawing.Color.White; - this.rChatHistory.Location = new System.Drawing.Point(3, 8); + this.rChatHistory.Location = new System.Drawing.Point(3, 3); this.rChatHistory.Name = "rChatHistory"; this.rChatHistory.ReadOnly = true; - this.rChatHistory.Size = new System.Drawing.Size(404, 274); + this.rChatHistory.Size = new System.Drawing.Size(421, 329); this.rChatHistory.TabIndex = 3; this.rChatHistory.Text = ""; this.rChatHistory.LostFocus += new System.EventHandler(this.rChatHistory_LostFocus); @@ -140,7 +148,7 @@ namespace SLChat this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.splitContainer1.Location = new System.Drawing.Point(6, 52); + this.splitContainer1.Location = new System.Drawing.Point(-4, 6); this.splitContainer1.Name = "splitContainer1"; // // splitContainer1.Panel1 @@ -150,8 +158,8 @@ namespace SLChat // splitContainer1.Panel2 // this.splitContainer1.Panel2.Controls.Add(this.listNames); - this.splitContainer1.Size = new System.Drawing.Size(564, 285); - this.splitContainer1.SplitterDistance = 410; + this.splitContainer1.Size = new System.Drawing.Size(589, 340); + this.splitContainer1.SplitterDistance = 427; this.splitContainer1.TabIndex = 5; // // listNames @@ -161,9 +169,9 @@ namespace SLChat | System.Windows.Forms.AnchorStyles.Right))); this.listNames.ContextMenuStrip = this.cntxListNames; this.listNames.FormattingEnabled = true; - this.listNames.Location = new System.Drawing.Point(3, 8); + this.listNames.Location = new System.Drawing.Point(2, 3); this.listNames.Name = "listNames"; - this.listNames.Size = new System.Drawing.Size(144, 264); + this.listNames.Size = new System.Drawing.Size(152, 329); this.listNames.TabIndex = 2; // // cntxListNames @@ -204,7 +212,7 @@ namespace SLChat this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; - this.menuStrip1.Size = new System.Drawing.Size(579, 24); + this.menuStrip1.Size = new System.Drawing.Size(589, 24); this.menuStrip1.TabIndex = 4; this.menuStrip1.Text = "menuStrip1"; // @@ -248,15 +256,14 @@ namespace SLChat // aboutToolStripMenuItem // this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; - this.aboutToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.aboutToolStripMenuItem.Size = new System.Drawing.Size(103, 22); this.aboutToolStripMenuItem.Text = "&About"; this.aboutToolStripMenuItem.Click += new System.EventHandler(this.AboutToolStripMenuItemClick); // // btnSend // - this.btnSend.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.btnSend.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.btnSend.Location = new System.Drawing.Point(491, 343); + this.btnSend.Location = new System.Drawing.Point(505, 352); this.btnSend.Name = "btnSend"; this.btnSend.Size = new System.Drawing.Size(73, 29); this.btnSend.TabIndex = 1; @@ -272,7 +279,7 @@ namespace SLChat this.toolStrip.Location = new System.Drawing.Point(0, 24); this.toolStrip.Name = "toolStrip"; this.toolStrip.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; - this.toolStrip.Size = new System.Drawing.Size(579, 25); + this.toolStrip.Size = new System.Drawing.Size(589, 25); this.toolStrip.Stretch = true; this.toolStrip.TabIndex = 6; this.toolStrip.Text = "toolStrip"; @@ -289,24 +296,44 @@ namespace SLChat // // txtChatEntry // - this.txtChatEntry.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.txtChatEntry.Location = new System.Drawing.Point(9, 343); + this.txtChatEntry.Location = new System.Drawing.Point(3, 357); + this.txtChatEntry.MaxLength = 977; this.txtChatEntry.Name = "txtChatEntry"; - this.txtChatEntry.Size = new System.Drawing.Size(479, 21); + this.txtChatEntry.Size = new System.Drawing.Size(496, 21); this.txtChatEntry.TabIndex = 8; this.txtChatEntry.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtChatEntry_KeyPress); // + // tabMain + // + this.tabMain.Appearance = System.Windows.Forms.TabAppearance.Buttons; + this.tabMain.Controls.Add(this.tabLocalChat); + this.tabMain.Location = new System.Drawing.Point(0, 52); + this.tabMain.Name = "tabMain"; + this.tabMain.SelectedIndex = 0; + this.tabMain.Size = new System.Drawing.Size(589, 413); + this.tabMain.TabIndex = 9; + // + // tabLocalChat + // + this.tabLocalChat.Controls.Add(this.splitContainer1); + this.tabLocalChat.Controls.Add(this.txtChatEntry); + this.tabLocalChat.Controls.Add(this.btnSend); + this.tabLocalChat.Location = new System.Drawing.Point(4, 25); + this.tabLocalChat.Name = "tabLocalChat"; + this.tabLocalChat.Padding = new System.Windows.Forms.Padding(3); + this.tabLocalChat.Size = new System.Drawing.Size(581, 384); + this.tabLocalChat.TabIndex = 0; + this.tabLocalChat.Text = "Local Chat"; + this.tabLocalChat.UseVisualStyleBackColor = true; + // // ChatScreen // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(579, 393); - this.Controls.Add(this.txtChatEntry); + this.ClientSize = new System.Drawing.Size(589, 462); this.Controls.Add(this.toolStrip); - this.Controls.Add(this.btnSend); - this.Controls.Add(this.splitContainer1); this.Controls.Add(this.menuStrip1); + this.Controls.Add(this.tabMain); this.MainMenuStrip = this.menuStrip1; this.MinimumSize = new System.Drawing.Size(400, 300); this.Name = "ChatScreen"; @@ -320,9 +347,14 @@ namespace SLChat this.menuStrip1.PerformLayout(); this.toolStrip.ResumeLayout(false); this.toolStrip.PerformLayout(); + this.tabMain.ResumeLayout(false); + this.tabLocalChat.ResumeLayout(false); + this.tabLocalChat.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); } + private System.Windows.Forms.TabPage tabLocalChat; + public System.Windows.Forms.TabControl tabMain; private System.Windows.Forms.ToolStripButton toolStripBtnIM; private System.Windows.Forms.ToolStrip toolStrip; private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; @@ -342,7 +374,7 @@ namespace SLChat private System.Windows.Forms.MenuStrip menuStrip1; private System.Windows.Forms.SplitContainer splitContainer1; - public void callLogin(string firstname, string lastname, string password) + public void callLogin(string firstname, string lastname, string password, string logLocation) { this.Text = "SLChat: "+firstname+" "+lastname; fname = firstname; @@ -353,12 +385,14 @@ namespace SLChat if(firstlog==true) { firstlog = false; - net = new NetCom(firstname, lastname, password, this); - loginthread = new Thread(new ThreadStart(net.Login)); - loginthread.Start(); + net = new NetCom(firstname, lastname, password, logLocation, this); + //loginthread = new Thread(new ThreadStart(net.Login)); + //loginthread.Start(); + net.Login(); }else{ - loginthread = new Thread(new ThreadStart(net.Login)); - loginthread.Start(); + //loginthread = new Thread(new ThreadStart(net.Login)); + //loginthread.Start(); + net.Login(); } } @@ -504,10 +538,10 @@ namespace SLChat if(loggedin==false) { //Cleanup thread call just incase. - if(loginthread.IsAlive) - { - loginthread.Abort(); - } + //if(loginthread.IsAlive) + //{ + // loginthread.Abort(); + //} Application.Exit(); } //System.Windows.Forms.Application.Exit() @@ -607,29 +641,7 @@ namespace SLChat winIM IM = new winIM(); IM.Show(); } - public delegate void SetStringDel(string s); - void SetToolStripMenuItemText(string v) - { - if (!InvokeRequired) - { - loginToolStripMenuItem.Text = v; - } - else - { - Invoke(new SetStringDel(SetToolStripMenuItemText), new object[] { v }); - } - } - void AddToHistory(string v) - { - if (!InvokeRequired) - { - rChatHistory.Text += v; - } - else - { - Invoke(new SetStringDel(AddToHistory), new object[] { v }); - } - } + public void ReturnData(string data, int type, string extra1, string extra2) { //This is how we get data back from our NetCom.cs file @@ -640,17 +652,17 @@ namespace SLChat //Reply Type: Login if(extra1!="error") { - SetToolStripMenuItemText("Logout"); + loginToolStripMenuItem.Text = "Logout"; //string loginReply = Login(firstname, lastname, password); //string loginReply = "OMG WHATS: ON YUR FACE?! Yes yes yes cabam shamzaameiawml" + newline; - AddToHistory(data + newline); + rChatHistory.Text += data + newline; //ChatEffects(loginReply,1); //string text2 = "Bob Smith: AHWIWEAM W!"; //rChatHistory.Text += text2 + newline; //ChatEffects(18,loginReply.Length,1); loggedin = true; }else if(extra1=="error"){ - AddToHistory(data + newline); + rChatHistory.Text += data + newline; loggedin = false; } }else if(type==2){ @@ -660,10 +672,10 @@ namespace SLChat rChatHistory.Text += data; loggedin = false; //Cleanup thread call just incase. - if(loginthread.IsAlive) - { - loginthread.Abort(); - } + //if(loginthread.IsAlive) + //{ + // loginthread.Abort(); + //} }else if(type==3){ //Reply Type: Chat @@ -678,6 +690,23 @@ namespace SLChat //Printing actual chat. rChatHistory.Text += data; //ChatEffects(name.Length,output.Length,2); + }else if(type==4){ + //Reply Type: IM + + for(int i=0;i public partial class winIM { + public static winIM that; + RichTextBox rChatThing = new System.Windows.Forms.RichTextBox(); + IMwin[] arrIM = new IMwin[4]; + public int tabCount; + public winIM() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); - + that = this; // // TODO: Add constructor code after the InitializeComponent() call. // @@ -32,10 +41,137 @@ namespace SLChat void BtnSendClick(object sender, System.EventArgs e) { - string title = "Oz Spade"; - TabPage myTabPage = new TabPage(title); - tabMain.TabPages.Add(myTabPage); - myTabPage.Controls.Add(new RichTextBox()); + for(int i=0;i=0) + { + arrIM[i].Text(txtIMEntry.Text); + }*/ + } + + void BtnCreateClick(object sender, System.EventArgs e) + { + CreateTab(); + } + + public void CreateTab() + { + int i = tabCount; + arrIM[i] = new IMwin(); + that.txtIMEntry.Text = arrIM.Length.ToString(); + arrIM[i].Tabs(); + tabCount++; + } + + public class IMwin + { + public string name; + + public IMwin() + { + + } + + public void Tabs() + { + //that.txtIMEntry.Text = "test"; + this.tabNext = new System.Windows.Forms.TabPage(); + this.txtIMThing = new System.Windows.Forms.TextBox(); + this.btnDel = new System.Windows.Forms.Button(); + this.btnTes = new System.Windows.Forms.Button(); + this.tabNext.SuspendLayout(); + // + // tabGroups + // + this.tabNext.Controls.Add(this.btnTes); + this.tabNext.Controls.Add(this.btnDel); + this.tabNext.Location = new System.Drawing.Point(4, 22); + this.tabNext.Name = "tabNext"; + this.tabNext.Padding = new System.Windows.Forms.Padding(3); + this.tabNext.Size = new System.Drawing.Size(421, 170); + this.tabNext.TabIndex = 0; + this.tabNext.Text = "Next"; + this.tabNext.UseVisualStyleBackColor = true; + // + // txtIMEntry + // + this.txtIMThing.Location = new System.Drawing.Point(3, 6); + this.txtIMThing.Name = "txtIMThing"; + this.txtIMThing.Size = new System.Drawing.Size(412, 160); + this.txtIMThing.TabIndex = 1; + // + // button1 + // + this.btnDel.Location = new System.Drawing.Point(290, 125); + this.btnDel.Name = "btnDel"; + this.btnDel.Size = new System.Drawing.Size(108, 28); + this.btnDel.TabIndex = 1; + this.btnDel.Text = "Delete"; + this.btnDel.UseVisualStyleBackColor = true; + this.btnDel.Click += new System.EventHandler(this.BtnDelClick); + // + // button2 + // + this.btnTes.Location = new System.Drawing.Point(178, 125); + this.btnTes.Name = "btnTes"; + this.btnTes.Size = new System.Drawing.Size(106, 28); + this.btnTes.TabIndex = 2; + this.btnTes.Text = "Test"; + this.btnTes.UseVisualStyleBackColor = true; + this.btnTes.Click += new System.EventHandler(this.BtnTesClick); + + this.tabNext.Controls.Add(this.txtIMThing); + that.tabMain.Controls.Add(this.tabNext); + this.tabNext.ResumeLayout(false); + + /* + string title = "Oz Spade"; + TabPage myTabPage = new TabPage(title); + tabMain.TabPages.Add(myTabPage); + myTabPage.Controls.Add(rChatThing);*/ + } + private System.Windows.Forms.Button btnDel; + private System.Windows.Forms.Button btnTes; + private System.Windows.Forms.TextBox txtIMThing; + private System.Windows.Forms.TabPage tabNext; + + void BtnTesClick(object sender, System.EventArgs e) + { + name = "Oz Spade"; + this.tabNext.Text = name; + } + + void BtnDelClick(object sender, System.EventArgs e) + { + that.tabMain.Controls.Remove(this.tabNext); + Array.Clear(that.arrIM,that.tabMain.SelectedIndex,1); + that.tabCount--; + } + + public void Text(string txt) + { + txtIMThing.Text = txt; + if(!this.tabNext.Visible) + { + this.tabNext.Text = name + " (N)"; + }else{ + this.tabNext.Text = name; + } + } } } } diff --git a/applications/SLChat/winLogin.cs b/applications/SLChat/winLogin.cs index 4a503d86..e55389aa 100644 --- a/applications/SLChat/winLogin.cs +++ b/applications/SLChat/winLogin.cs @@ -1,4 +1,6 @@ using System; +using System.IO; +using System.Security.Cryptography; using System.Drawing; using System.Collections; using System.ComponentModel; @@ -22,7 +24,6 @@ namespace SLChat private System.Windows.Forms.StatusBar mainStatusBar; private System.Windows.Forms.Panel LoginPanel; - public bool loggedin = false; private System.Windows.Forms.GroupBox grpLogin; private System.Windows.Forms.Button btnLogin; private System.Windows.Forms.TextBox txtfirstname; @@ -30,14 +31,22 @@ namespace SLChat private System.Windows.Forms.TextBox txtpassword; public bool exitApp = false; public string accountid; - public bool chatCreated; - public static ChatScreen winChat; + public bool chatCreated; //Used to check if we've created the chat window or not + public static ChatScreen winChat; //Easy calling to the chat window. + //These are used for our settings loading/saving + //to see if we have changed our settings since they were last loaded + public string setFirstName; + public string setLastName; + public string setLLocation; //Login Location + public bool setSaveLogin; //Save Login check box + public winLogin() { // // Required for Windows Form Designer support // InitializeComponent(); + // // TODO: Add any constructor code after InitializeComponent call @@ -69,6 +78,11 @@ namespace SLChat this.mainStatusBar = new System.Windows.Forms.StatusBar(); this.LoginPanel = new System.Windows.Forms.Panel(); this.grpLogin = new System.Windows.Forms.GroupBox(); + this.button1 = new System.Windows.Forms.Button(); + this.chkSaveLogin = new System.Windows.Forms.CheckBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.cmbLocation = new System.Windows.Forms.ComboBox(); this.btnCancel = new System.Windows.Forms.Button(); this.txtpassword = new System.Windows.Forms.TextBox(); this.txtlastname = new System.Windows.Forms.TextBox(); @@ -80,9 +94,9 @@ namespace SLChat // // mainStatusBar // - this.mainStatusBar.Location = new System.Drawing.Point(0, 170); + this.mainStatusBar.Location = new System.Drawing.Point(0, 167); this.mainStatusBar.Name = "mainStatusBar"; - this.mainStatusBar.Size = new System.Drawing.Size(174, 23); + this.mainStatusBar.Size = new System.Drawing.Size(312, 23); this.mainStatusBar.TabIndex = 2; // // LoginPanel @@ -91,33 +105,94 @@ namespace SLChat this.LoginPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.LoginPanel.Location = new System.Drawing.Point(0, 0); this.LoginPanel.Name = "LoginPanel"; - this.LoginPanel.Size = new System.Drawing.Size(174, 193); + this.LoginPanel.Size = new System.Drawing.Size(312, 190); this.LoginPanel.TabIndex = 3; this.LoginPanel.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.LoginPanel_Keypress); // // grpLogin // this.grpLogin.Anchor = System.Windows.Forms.AnchorStyles.None; + this.grpLogin.Controls.Add(this.button1); + this.grpLogin.Controls.Add(this.chkSaveLogin); + this.grpLogin.Controls.Add(this.label2); + this.grpLogin.Controls.Add(this.label1); + this.grpLogin.Controls.Add(this.cmbLocation); this.grpLogin.Controls.Add(this.btnCancel); this.grpLogin.Controls.Add(this.txtpassword); this.grpLogin.Controls.Add(this.txtlastname); this.grpLogin.Controls.Add(this.txtfirstname); this.grpLogin.Controls.Add(this.btnLogin); this.grpLogin.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.grpLogin.Location = new System.Drawing.Point(12, 4); + this.grpLogin.Location = new System.Drawing.Point(2, 3); this.grpLogin.Name = "grpLogin"; - this.grpLogin.Size = new System.Drawing.Size(150, 160); + this.grpLogin.Size = new System.Drawing.Size(307, 160); this.grpLogin.TabIndex = 0; this.grpLogin.TabStop = false; this.grpLogin.Text = "Sign In"; // + // button1 + // + this.button1.Location = new System.Drawing.Point(106, 118); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(39, 34); + this.button1.TabIndex = 9; + this.button1.Text = "button1"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Visible = false; + this.button1.Click += new System.EventHandler(this.Button1Click); + // + // chkSaveLogin + // + this.chkSaveLogin.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.chkSaveLogin.Location = new System.Drawing.Point(10, 118); + this.chkSaveLogin.Name = "chkSaveLogin"; + this.chkSaveLogin.Size = new System.Drawing.Size(120, 28); + this.chkSaveLogin.TabIndex = 8; + this.chkSaveLogin.Text = "Save Login Info"; + this.chkSaveLogin.UseVisualStyleBackColor = true; + // + // label2 + // + this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.label2.Location = new System.Drawing.Point(154, 59); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(138, 20); + this.label2.TabIndex = 7; + this.label2.Text = "Location:"; + // + // label1 + // + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.label1.Location = new System.Drawing.Point(9, 59); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(138, 20); + this.label1.TabIndex = 6; + this.label1.Text = "Password:"; + // + // cmbLocation + // + this.cmbLocation.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.cmbLocation.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cmbLocation.FormattingEnabled = true; + this.cmbLocation.Items.AddRange(new object[] { + "Home", + "Last"}); + this.cmbLocation.Location = new System.Drawing.Point(153, 80); + this.cmbLocation.Name = "cmbLocation"; + this.cmbLocation.Size = new System.Drawing.Size(140, 24); + this.cmbLocation.TabIndex = 3; + this.cmbLocation.Text = "Last"; + // // btnCancel // this.btnCancel.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnCancel.Location = new System.Drawing.Point(77, 121); + this.btnCancel.Location = new System.Drawing.Point(226, 119); this.btnCancel.Name = "btnCancel"; this.btnCancel.Size = new System.Drawing.Size(66, 33); - this.btnCancel.TabIndex = 4; + this.btnCancel.TabIndex = 5; this.btnCancel.Text = "&Cancel"; this.btnCancel.UseVisualStyleBackColor = true; this.btnCancel.Click += new System.EventHandler(this.btnCancelClick); @@ -126,7 +201,7 @@ namespace SLChat // this.txtpassword.Anchor = System.Windows.Forms.AnchorStyles.Top; this.txtpassword.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtpassword.Location = new System.Drawing.Point(6, 92); + this.txtpassword.Location = new System.Drawing.Point(9, 80); this.txtpassword.Name = "txtpassword"; this.txtpassword.PasswordChar = '*'; this.txtpassword.Size = new System.Drawing.Size(138, 22); @@ -136,7 +211,7 @@ namespace SLChat // this.txtlastname.Anchor = System.Windows.Forms.AnchorStyles.Top; this.txtlastname.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtlastname.Location = new System.Drawing.Point(6, 64); + this.txtlastname.Location = new System.Drawing.Point(154, 34); this.txtlastname.Name = "txtlastname"; this.txtlastname.Size = new System.Drawing.Size(138, 22); this.txtlastname.TabIndex = 1; @@ -147,7 +222,7 @@ namespace SLChat // this.txtfirstname.Anchor = System.Windows.Forms.AnchorStyles.Top; this.txtfirstname.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtfirstname.Location = new System.Drawing.Point(6, 36); + this.txtfirstname.Location = new System.Drawing.Point(9, 34); this.txtfirstname.Name = "txtfirstname"; this.txtfirstname.Size = new System.Drawing.Size(138, 22); this.txtfirstname.TabIndex = 0; @@ -158,31 +233,35 @@ namespace SLChat // this.btnLogin.Anchor = System.Windows.Forms.AnchorStyles.Top; this.btnLogin.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnLogin.Location = new System.Drawing.Point(6, 120); + this.btnLogin.Location = new System.Drawing.Point(153, 118); this.btnLogin.Name = "btnLogin"; this.btnLogin.Size = new System.Drawing.Size(65, 34); - this.btnLogin.TabIndex = 3; + this.btnLogin.TabIndex = 4; this.btnLogin.Text = "&Login"; this.btnLogin.Click += new System.EventHandler(this.btnLogin_Click); // // winLogin // this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); - this.ClientSize = new System.Drawing.Size(174, 193); + this.ClientSize = new System.Drawing.Size(312, 190); this.Controls.Add(this.mainStatusBar); this.Controls.Add(this.LoginPanel); this.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); - this.MinimumSize = new System.Drawing.Size(182, 223); + this.MaximizeBox = false; this.Name = "winLogin"; this.Text = "SLChat - Login"; + this.Closing += new System.ComponentModel.CancelEventHandler(this.OnClosing); this.Load += new System.EventHandler(this.winLogin_Load); - //TODO: make this.Closing work. See "OnClosing" - this.Closing += new CancelEventHandler(this.OnClosing); this.LoginPanel.ResumeLayout(false); this.grpLogin.ResumeLayout(false); this.grpLogin.PerformLayout(); this.ResumeLayout(false); } + private System.Windows.Forms.Button button1; + private System.Windows.Forms.CheckBox chkSaveLogin; + private System.Windows.Forms.ComboBox cmbLocation; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; private System.Windows.Forms.Button btnCancel; #endregion @@ -196,7 +275,8 @@ namespace SLChat { try { - + //Try to load the login settings. + LoadLoginSettings(); } catch (Exception error) { @@ -209,8 +289,26 @@ namespace SLChat { //Make sure our fields aren't blank (could possibly be //handled better to specify which one is blank). - if(txtlastname.Text != "" & txtfirstname.Text != "" & txtpassword.Text != "") + if(txtlastname.Text != "" & txtfirstname.Text != "" & txtpassword.Text != "" & cmbLocation.Text != "") { + //Save our settings on the following conditions: + //The user has checked the appropriet checkbox + //The content has changed from last being loaded. + if(chkSaveLogin.Checked != false) + { + //If the checkbox is checked + if(chkSaveLogin.Checked != setSaveLogin | txtfirstname.Text != setFirstName | txtlastname.Text != setLastName | cmbLocation.Text != setLLocation) + { + //If there have been any changes from when + //the settings were last loaded. + SaveLoginSettings(); + } + }else{ + //If unchecked, delete the login settings + //no point in having unused information remain. + DeleteLoginSettings(); + } + //Check if we've already created the chatscreen //and react approprietly. if(chatCreated==false){ @@ -229,11 +327,12 @@ namespace SLChat //to login. if(winChat.loggedin==false) { + string logLocation = cmbLocation.Text.ToLower(); //Why not call Login directly from netcom? //Well we want winChat to have the easiest access //to NetCom and creating a bunch of instances //doesn't seem desirable, so we go through winChat. - winChat.callLogin(txtfirstname.Text,txtlastname.Text,txtpassword.Text); + winChat.callLogin(txtfirstname.Text,txtlastname.Text,txtpassword.Text,logLocation); winChat.loginVisible = false; this.Hide(); } @@ -296,5 +395,202 @@ namespace SLChat e.Handled = true; } } + + public void SaveLoginSettings() + { + //Saving our login settings + //pick whatever filename with .xml extension + string filename = "settings.xml"; + + XmlDocument xmlDoc = new XmlDocument(); + + try + { + xmlDoc.Load(filename); + } + catch(System.IO.FileNotFoundException) + { + //if file is not found, create a new xml file + XmlTextWriter xmlWriter = new XmlTextWriter(filename, System.Text.Encoding.UTF8); + xmlWriter.Formatting = Formatting.Indented; + xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); + xmlWriter.WriteStartElement("SLChatSettings"); + //If WriteProcessingInstruction is used as above, + //Do not use WriteEndElement() here + //xmlWriter.WriteEndElement(); + //it will cause the <Root> to be <Root /> + xmlWriter.Close(); + xmlDoc.Load(filename); + } + + XmlNode root = xmlDoc.DocumentElement; + XmlNodeList nodeList = xmlDoc.GetElementsByTagName("LoginSettings"); + if(nodeList.Count!=0){ + root.RemoveChild(nodeList[0]); + } + XmlElement loginSettings = xmlDoc.CreateElement("LoginSettings"); + string strSettings = ""+ + ""+ + ""+ + ""; + loginSettings.InnerXml = strSettings; + + root.AppendChild(loginSettings); + + xmlDoc.Save(filename); + } + + public void LoadLoginSettings() + { + //Load our login settings. + + string filename = "settings.xml"; + + XmlDocument xmlDoc = new XmlDocument(); + + try + { + xmlDoc.Load(filename); + } + catch(System.IO.FileNotFoundException) + { + return; + } + + XmlNode root = xmlDoc.DocumentElement; + XmlNodeList nodeList = xmlDoc.GetElementsByTagName("LoginSettings"); + if(nodeList.Count!=0){ + XmlNodeList nodeSLogin = xmlDoc.GetElementsByTagName("SaveLoginInfo"); + if(nodeSLogin[0].Attributes["value"].InnerText=="true"){ + //There may be a better way to get the values of each element + //but I could not find one. - Oz + XmlNodeList nodeFName = xmlDoc.GetElementsByTagName("FirstName"); + txtfirstname.Text = setFirstName = nodeFName[0].Attributes["value"].InnerText; + XmlNodeList nodeLName = xmlDoc.GetElementsByTagName("LastName"); + txtlastname.Text = setLastName = nodeLName[0].Attributes["value"].InnerText; + XmlNodeList nodeLLocation = xmlDoc.GetElementsByTagName("LoginLocation"); + cmbLocation.Text = setLLocation = nodeLLocation[0].Attributes["value"].InnerText; + chkSaveLogin.Checked = setSaveLogin = true; + }else{ + chkSaveLogin.Checked = setSaveLogin = false; + + } + } + + } + + public void DeleteLoginSettings() + { + //Delete our login settings. + + string filename = "settings.xml"; + + XmlDocument xmlDoc = new XmlDocument(); + + try + { + xmlDoc.Load(filename); + } + catch(System.IO.FileNotFoundException) + { + return; + } + XmlNode root = xmlDoc.DocumentElement; + XmlNodeList nodeList = xmlDoc.GetElementsByTagName("LoginSettings"); + if(nodeList.Count!=0){ + //Simply remove that NodeList that composes our "LoginSettings" + root.RemoveChild(nodeList[0]); + } + xmlDoc.Save(filename); + } + + /* + * The below commented out code was basicly saving the login + * settings to a .ini (or really a .txt file), I'm leaving this + * incase its needed for now, although this seems unlikely. + * - Oz + * + public void SaveSettings() + { + string path = @"settings.ini"; + // This text is added only once to the file. + if (!File.Exists(path)) + { + // Create a file to write to. + using (StreamWriter sw = File.CreateText(path)) + { + sw.WriteLine("SLChat Settings"); + } + } + + //string s = txtpassword.Text; + //SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider(); + //sha1.ComputeHash(s); + + // This text is always added, making the file longer over time + // if it is not deleted. + using (StreamWriter sw = File.AppendText(path)) + { + sw.WriteLine("savesettings="+chkSaveLogin.CheckState.ToString()); + sw.WriteLine("firstname="+txtfirstname.Text); + sw.WriteLine("lastname="+txtlastname.Text); + //sw.WriteLine("password="+sha1); + sw.WriteLine("loginlocation="+cmbLocation.Text); + } + } + + public void DeleteSettings() + { + string path = @"settings.ini"; + FileInfo file = new FileInfo(path); + if(File.Exists(path)) + { + file.Delete(); + } + } + + + public void LoadSettings() + { + string path = @"settings.ini"; + // This text is added only once to the file. + if (File.Exists(path)) + { + // Open the file to read from. + using (StreamReader sr = File.OpenText(path)) + { + string s = ""; + while ((s = sr.ReadLine()) != null) + { + char cher = '='; + string[] split = s.Split(cher); + if(split[0]=="savesettings") + { + if(split[1]=="Checked") + { + chkSaveLogin.Checked = true; + } + }else if(split[0]=="firstname") + { + txtfirstname.Text = split[1]; + }else if(split[0]=="lastname"){ + txtlastname.Text = split[1]; + }else if(split[0]=="loginlocation"){ + cmbLocation.Text = split[1]; + } + } + } + } + }*/ + + //This is a hidden button used to call the IM window + //which I'm messing around with, this was so I didn't have + //to login to load an IM window each time. This serves no + //actual purpose other than testing. - Oz + void Button1Click(object sender, System.EventArgs e) + { + winIM IM = new winIM(); + IM.Show(); + } } }