diff --git a/applications/SLChat/SLChat.csproj b/applications/SLChat/SLChat.csproj
index ee812b94..42f30c45 100644
--- a/applications/SLChat/SLChat.csproj
+++ b/applications/SLChat/SLChat.csproj
@@ -24,6 +24,10 @@
False
+
+ False
+ ..\..\libsecondlife-cs\bin\Debug\libsecondlife.dll
+
@@ -33,10 +37,6 @@
D:\Oz's Files\Second Life Stuff\libsecondlife\libsecondlife-cs\bin\Debug\XmlRpcCS.dll
False
-
- 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
False
@@ -44,12 +44,20 @@
-
-
+
+ Form
+
+
+ Form
+
-
+
+ Form
+
-
+
+ Form
+
winLogin.cs
@@ -66,7 +74,9 @@
winAbout.cs
-
+
+ Form
+
winAbout.cs
diff --git a/applications/SLChat/bin/Debug/SLChat.exe b/applications/SLChat/bin/Debug/SLChat.exe
index e1276e63..32823b9d 100644
Binary files a/applications/SLChat/bin/Debug/SLChat.exe and b/applications/SLChat/bin/Debug/SLChat.exe differ
diff --git a/applications/SLChat/bin/Debug/libsecondlife.dll b/applications/SLChat/bin/Debug/libsecondlife.dll
index c104d14c..c65d3090 100644
Binary files a/applications/SLChat/bin/Debug/libsecondlife.dll and b/applications/SLChat/bin/Debug/libsecondlife.dll differ
diff --git a/applications/SLChat/winChat.cs b/applications/SLChat/winChat.cs
index 587ab6c5..ce8776e8 100644
--- a/applications/SLChat/winChat.cs
+++ b/applications/SLChat/winChat.cs
@@ -607,7 +607,29 @@ 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
@@ -618,17 +640,17 @@ namespace SLChat
//Reply Type: Login
if(extra1!="error")
{
- loginToolStripMenuItem.Text = "Logout";
+ SetToolStripMenuItemText("Logout");
//string loginReply = Login(firstname, lastname, password);
//string loginReply = "OMG WHATS: ON YUR FACE?! Yes yes yes cabam shamzaameiawml" + newline;
- rChatHistory.Text += data + newline;
+ AddToHistory(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"){
- rChatHistory.Text += data + newline;
+ AddToHistory(data + newline);
loggedin = false;
}
}else if(type==2){
diff --git a/applications/SLIRC/Program.cs b/applications/SLIRC/Program.cs
new file mode 100644
index 00000000..54df3d2f
--- /dev/null
+++ b/applications/SLIRC/Program.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace SLIRC
+{
+ static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new frmSLIRC());
+ }
+ }
+}
\ No newline at end of file
diff --git a/applications/SLIRC/Properties/AssemblyInfo.cs b/applications/SLIRC/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..55e298bd
--- /dev/null
+++ b/applications/SLIRC/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("SLIRC")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Thearis Systems/RedWire Virtual")]
+[assembly: AssemblyProduct("SLIRC")]
+[assembly: AssemblyCopyright("Copyright © Thearis Systems/RedWire Virtual 2006")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("d8888e7d-b69e-455a-83d0-7ff4bed18b81")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/applications/SLIRC/Properties/Resources.Designer.cs b/applications/SLIRC/Properties/Resources.Designer.cs
new file mode 100644
index 00000000..63297449
--- /dev/null
+++ b/applications/SLIRC/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.42
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace SLIRC.Properties
+{
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SLIRC.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/applications/SLIRC/Properties/Resources.resx b/applications/SLIRC/Properties/Resources.resx
new file mode 100644
index 00000000..ffecec85
--- /dev/null
+++ b/applications/SLIRC/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/applications/SLIRC/Properties/Settings.Designer.cs b/applications/SLIRC/Properties/Settings.Designer.cs
new file mode 100644
index 00000000..4e5b1d24
--- /dev/null
+++ b/applications/SLIRC/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.42
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace SLIRC.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/applications/SLIRC/Properties/Settings.settings b/applications/SLIRC/Properties/Settings.settings
new file mode 100644
index 00000000..abf36c5d
--- /dev/null
+++ b/applications/SLIRC/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/applications/SLIRC/SLIRC.csproj b/applications/SLIRC/SLIRC.csproj
new file mode 100644
index 00000000..cb25b52d
--- /dev/null
+++ b/applications/SLIRC/SLIRC.csproj
@@ -0,0 +1,88 @@
+
+
+ Debug
+ AnyCPU
+ 8.0.50727
+ 2.0
+ {8855EB2F-BC4C-485A-A577-0989EB16BFDC}
+ WinExe
+ Properties
+ SLIRC
+ SLIRC
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ False
+ ..\..\Desktop\SmartIrc4net-0.3.5\bin\net\debug\Meebey.SmartIrc4net.dll
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ frmSLIRC.cs
+
+
+
+
+ Designer
+ frmSLIRC.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+ {D9CDEDFB-8169-4B03-B57F-0DF638F044EC}
+ libsecondlife
+
+
+
+
+
\ No newline at end of file
diff --git a/applications/SLIRC/bin/Debug/Meebey.SmartIrc4net.dll b/applications/SLIRC/bin/Debug/Meebey.SmartIrc4net.dll
new file mode 100644
index 00000000..66285b5e
Binary files /dev/null and b/applications/SLIRC/bin/Debug/Meebey.SmartIrc4net.dll differ
diff --git a/applications/SLIRC/bin/Debug/Meebey.SmartIrc4net.pdb b/applications/SLIRC/bin/Debug/Meebey.SmartIrc4net.pdb
new file mode 100644
index 00000000..6316130a
Binary files /dev/null and b/applications/SLIRC/bin/Debug/Meebey.SmartIrc4net.pdb differ
diff --git a/applications/SLIRC/bin/Debug/Meebey.SmartIrc4net.xml b/applications/SLIRC/bin/Debug/Meebey.SmartIrc4net.xml
new file mode 100644
index 00000000..b924702f
--- /dev/null
+++ b/applications/SLIRC/bin/Debug/Meebey.SmartIrc4net.xml
@@ -0,0 +1,661 @@
+
+
+
+ Meebey.SmartIrc4net
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Initializes the message queues, read and write thread
+
+
+
+
+
+
+ Reconnects to the server
+
+
+ If there was no active connection
+
+
+ The connection failed
+
+
+ If there is already an active connection
+
+
+
+
+ Disconnects from the server
+
+
+ If there was no active connection
+
+
+
+
+ Raised when a \r\n terminated line is read from the socket
+
+
+
+
+ Raised when a \r\n terminated line is written to the socket
+
+
+
+
+ Raised before the connect attempt
+
+
+
+
+ Raised on successful connect
+
+
+
+
+ Raised before the connection is closed
+
+
+
+
+ Raised when the connection is closed
+
+
+
+
+ Raised when the connection got into an error state
+
+
+
+
+
+ The current address of the connection
+
+
+
+
+ The address list of the connection
+
+
+
+
+ Which port is used for the connection
+
+
+
+
+ By default nothing is done when the library looses the connection
+ to the server.
+ Default: false
+
+
+ true, if the library should reconnect on lost connections
+ false, if the library should not take care of it
+
+
+
+
+ If the library should retry to connect when the connection fails.
+ Default: false
+
+
+ true, if the library should retry to connect
+ false, if the library should not retry
+
+
+
+
+ Delay between retry attempts in Connect() in seconds.
+ Default: 30
+
+
+
+
+ To prevent flooding the IRC server, it's required to delay each
+ message, given in milliseconds.
+ Default: 200
+
+
+
+
+ On successful registration on the IRC network, this is set to true.
+
+
+
+
+ On successful connect to the IRC server, this is set to true.
+
+
+
+
+ The SmartIrc4net version number
+
+
+
+
+ The full SmartIrc4net version
+
+
+
+
+ Encoding which is used for reading and writing to the socket
+ Default: ISO-8859-1
+
+
+
+
+ Timeout in seconds for receiving data from the socket
+ Default: 600
+
+
+
+
+ Timeout in seconds for sending data to the socket
+ Default: 600
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Enables/disables the active channel sync feature
+
+ true, to enable
+
+
+
+ Sets the ctcp version that should be replied on ctcp version request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Checks if the passed nickname is valid according to the RFC
+ Use with caution, many IRC servers are not conform with this!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/applications/SLIRC/bin/Debug/SLIRC.exe b/applications/SLIRC/bin/Debug/SLIRC.exe
new file mode 100644
index 00000000..0748fac1
Binary files /dev/null and b/applications/SLIRC/bin/Debug/SLIRC.exe differ
diff --git a/applications/SLIRC/bin/Debug/SLIRC.pdb b/applications/SLIRC/bin/Debug/SLIRC.pdb
new file mode 100644
index 00000000..3944ba02
Binary files /dev/null and b/applications/SLIRC/bin/Debug/SLIRC.pdb differ
diff --git a/applications/SLIRC/bin/Debug/SLIRC.vshost.exe b/applications/SLIRC/bin/Debug/SLIRC.vshost.exe
new file mode 100644
index 00000000..ce3f102c
Binary files /dev/null and b/applications/SLIRC/bin/Debug/SLIRC.vshost.exe differ
diff --git a/applications/SLIRC/bin/Debug/keywords.txt b/applications/SLIRC/bin/Debug/keywords.txt
new file mode 100644
index 00000000..1c2ab208
--- /dev/null
+++ b/applications/SLIRC/bin/Debug/keywords.txt
@@ -0,0 +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
+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/SLIRC/bin/Debug/libsecondlife.dll b/applications/SLIRC/bin/Debug/libsecondlife.dll
new file mode 100644
index 00000000..c65d3090
Binary files /dev/null and b/applications/SLIRC/bin/Debug/libsecondlife.dll differ
diff --git a/applications/SLIRC/bin/Debug/libsecondlife.pdb b/applications/SLIRC/bin/Debug/libsecondlife.pdb
new file mode 100644
index 00000000..831cfcae
Binary files /dev/null and b/applications/SLIRC/bin/Debug/libsecondlife.pdb differ
diff --git a/applications/SLIRC/bin/Debug/protocol.txt b/applications/SLIRC/bin/Debug/protocol.txt
new file mode 100644
index 00000000..e3e5f36c
--- /dev/null
+++ b/applications/SLIRC/bin/Debug/protocol.txt
@@ -0,0 +1,10232 @@
+// 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/SLIRC/bin/Release/Meebey.SmartIrc4net.dll b/applications/SLIRC/bin/Release/Meebey.SmartIrc4net.dll
new file mode 100644
index 00000000..66285b5e
Binary files /dev/null and b/applications/SLIRC/bin/Release/Meebey.SmartIrc4net.dll differ
diff --git a/applications/SLIRC/bin/Release/Meebey.SmartIrc4net.pdb b/applications/SLIRC/bin/Release/Meebey.SmartIrc4net.pdb
new file mode 100644
index 00000000..6316130a
Binary files /dev/null and b/applications/SLIRC/bin/Release/Meebey.SmartIrc4net.pdb differ
diff --git a/applications/SLIRC/bin/Release/Meebey.SmartIrc4net.xml b/applications/SLIRC/bin/Release/Meebey.SmartIrc4net.xml
new file mode 100644
index 00000000..b924702f
--- /dev/null
+++ b/applications/SLIRC/bin/Release/Meebey.SmartIrc4net.xml
@@ -0,0 +1,661 @@
+
+
+
+ Meebey.SmartIrc4net
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Initializes the message queues, read and write thread
+
+
+
+
+
+
+ Reconnects to the server
+
+
+ If there was no active connection
+
+
+ The connection failed
+
+
+ If there is already an active connection
+
+
+
+
+ Disconnects from the server
+
+
+ If there was no active connection
+
+
+
+
+ Raised when a \r\n terminated line is read from the socket
+
+
+
+
+ Raised when a \r\n terminated line is written to the socket
+
+
+
+
+ Raised before the connect attempt
+
+
+
+
+ Raised on successful connect
+
+
+
+
+ Raised before the connection is closed
+
+
+
+
+ Raised when the connection is closed
+
+
+
+
+ Raised when the connection got into an error state
+
+
+
+
+
+ The current address of the connection
+
+
+
+
+ The address list of the connection
+
+
+
+
+ Which port is used for the connection
+
+
+
+
+ By default nothing is done when the library looses the connection
+ to the server.
+ Default: false
+
+
+ true, if the library should reconnect on lost connections
+ false, if the library should not take care of it
+
+
+
+
+ If the library should retry to connect when the connection fails.
+ Default: false
+
+
+ true, if the library should retry to connect
+ false, if the library should not retry
+
+
+
+
+ Delay between retry attempts in Connect() in seconds.
+ Default: 30
+
+
+
+
+ To prevent flooding the IRC server, it's required to delay each
+ message, given in milliseconds.
+ Default: 200
+
+
+
+
+ On successful registration on the IRC network, this is set to true.
+
+
+
+
+ On successful connect to the IRC server, this is set to true.
+
+
+
+
+ The SmartIrc4net version number
+
+
+
+
+ The full SmartIrc4net version
+
+
+
+
+ Encoding which is used for reading and writing to the socket
+ Default: ISO-8859-1
+
+
+
+
+ Timeout in seconds for receiving data from the socket
+ Default: 600
+
+
+
+
+ Timeout in seconds for sending data to the socket
+ Default: 600
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Enables/disables the active channel sync feature
+
+ true, to enable
+
+
+
+ Sets the ctcp version that should be replied on ctcp version request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Checks if the passed nickname is valid according to the RFC
+ Use with caution, many IRC servers are not conform with this!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/applications/SLIRC/bin/Release/SLIRC.exe b/applications/SLIRC/bin/Release/SLIRC.exe
new file mode 100644
index 00000000..732f1f7f
Binary files /dev/null and b/applications/SLIRC/bin/Release/SLIRC.exe differ
diff --git a/applications/SLIRC/bin/Release/SLIRC.pdb b/applications/SLIRC/bin/Release/SLIRC.pdb
new file mode 100644
index 00000000..c25feaa6
Binary files /dev/null and b/applications/SLIRC/bin/Release/SLIRC.pdb differ
diff --git a/applications/SLIRC/bin/Release/libsecondlife.dll b/applications/SLIRC/bin/Release/libsecondlife.dll
new file mode 100644
index 00000000..c8ace110
Binary files /dev/null and b/applications/SLIRC/bin/Release/libsecondlife.dll differ
diff --git a/applications/SLIRC/frmSLIRC.Designer.cs b/applications/SLIRC/frmSLIRC.Designer.cs
new file mode 100644
index 00000000..a4b97c73
--- /dev/null
+++ b/applications/SLIRC/frmSLIRC.Designer.cs
@@ -0,0 +1,261 @@
+namespace SLIRC
+{
+ partial class frmSLIRC
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ ircclient.Disconnect();
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.grpLogin = new System.Windows.Forms.GroupBox();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.txtPassword = new System.Windows.Forms.TextBox();
+ this.txtLastName = new System.Windows.Forms.TextBox();
+ this.cmdConnect = new System.Windows.Forms.Button();
+ this.txtFirstName = new System.Windows.Forms.TextBox();
+ this.lstLog = new System.Windows.Forms.ListBox();
+ this.lstAllowedUsers = new System.Windows.Forms.ListBox();
+ this.txtServerName = new System.Windows.Forms.TextBox();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.txtPort = new System.Windows.Forms.TextBox();
+ this.txtChannel = new System.Windows.Forms.TextBox();
+ this.btnJoin = new System.Windows.Forms.Button();
+ this.txtMessage = new System.Windows.Forms.TextBox();
+ this.btnSay = new System.Windows.Forms.Button();
+ this.grpLogin.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // grpLogin
+ //
+ this.grpLogin.Controls.Add(this.label3);
+ this.grpLogin.Controls.Add(this.label2);
+ this.grpLogin.Controls.Add(this.label1);
+ this.grpLogin.Controls.Add(this.txtPassword);
+ this.grpLogin.Controls.Add(this.txtLastName);
+ this.grpLogin.Controls.Add(this.cmdConnect);
+ this.grpLogin.Controls.Add(this.txtFirstName);
+ this.grpLogin.Enabled = false;
+ this.grpLogin.Location = new System.Drawing.Point(2, 242);
+ this.grpLogin.Name = "grpLogin";
+ this.grpLogin.Size = new System.Drawing.Size(560, 77);
+ this.grpLogin.TabIndex = 51;
+ this.grpLogin.TabStop = false;
+ //
+ // label3
+ //
+ this.label3.Location = new System.Drawing.Point(280, 24);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(120, 16);
+ this.label3.TabIndex = 50;
+ this.label3.Text = "Password";
+ //
+ // label2
+ //
+ this.label2.Location = new System.Drawing.Point(152, 24);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(120, 16);
+ this.label2.TabIndex = 50;
+ this.label2.Text = "Last Name";
+ //
+ // label1
+ //
+ this.label1.Location = new System.Drawing.Point(16, 24);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(120, 16);
+ this.label1.TabIndex = 50;
+ this.label1.Text = "First Name";
+ //
+ // txtPassword
+ //
+ this.txtPassword.Location = new System.Drawing.Point(280, 40);
+ this.txtPassword.Name = "txtPassword";
+ this.txtPassword.PasswordChar = '*';
+ this.txtPassword.Size = new System.Drawing.Size(120, 20);
+ this.txtPassword.TabIndex = 2;
+ //
+ // txtLastName
+ //
+ this.txtLastName.Location = new System.Drawing.Point(152, 40);
+ this.txtLastName.Name = "txtLastName";
+ this.txtLastName.Size = new System.Drawing.Size(112, 20);
+ this.txtLastName.TabIndex = 1;
+ //
+ // cmdConnect
+ //
+ this.cmdConnect.Location = new System.Drawing.Point(424, 40);
+ this.cmdConnect.Name = "cmdConnect";
+ this.cmdConnect.Size = new System.Drawing.Size(120, 24);
+ this.cmdConnect.TabIndex = 3;
+ this.cmdConnect.Text = "Connect";
+ this.cmdConnect.Click += new System.EventHandler(this.cmdConnect_Click);
+ //
+ // txtFirstName
+ //
+ this.txtFirstName.Location = new System.Drawing.Point(16, 40);
+ this.txtFirstName.Name = "txtFirstName";
+ this.txtFirstName.Size = new System.Drawing.Size(120, 20);
+ this.txtFirstName.TabIndex = 0;
+ //
+ // lstLog
+ //
+ this.lstLog.Enabled = false;
+ this.lstLog.FormattingEnabled = true;
+ this.lstLog.Location = new System.Drawing.Point(19, 11);
+ this.lstLog.Name = "lstLog";
+ this.lstLog.Size = new System.Drawing.Size(315, 225);
+ this.lstLog.TabIndex = 52;
+ //
+ // lstAllowedUsers
+ //
+ this.lstAllowedUsers.Enabled = false;
+ this.lstAllowedUsers.FormattingEnabled = true;
+ this.lstAllowedUsers.Location = new System.Drawing.Point(349, 13);
+ this.lstAllowedUsers.Name = "lstAllowedUsers";
+ this.lstAllowedUsers.Size = new System.Drawing.Size(212, 108);
+ this.lstAllowedUsers.TabIndex = 53;
+ //
+ // txtServerName
+ //
+ this.txtServerName.Location = new System.Drawing.Point(349, 141);
+ this.txtServerName.Name = "txtServerName";
+ this.txtServerName.Size = new System.Drawing.Size(130, 20);
+ this.txtServerName.TabIndex = 54;
+ this.txtServerName.Text = "irc.freenode.org";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(351, 125);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(69, 13);
+ this.label4.TabIndex = 55;
+ this.label4.Text = "Server Name";
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(483, 124);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(26, 13);
+ this.label5.TabIndex = 55;
+ this.label5.Text = "Port";
+ //
+ // txtPort
+ //
+ this.txtPort.Location = new System.Drawing.Point(486, 141);
+ this.txtPort.Name = "txtPort";
+ this.txtPort.Size = new System.Drawing.Size(60, 20);
+ this.txtPort.TabIndex = 56;
+ this.txtPort.Text = "6667";
+ //
+ // txtChannel
+ //
+ this.txtChannel.Location = new System.Drawing.Point(349, 167);
+ this.txtChannel.Name = "txtChannel";
+ this.txtChannel.Size = new System.Drawing.Size(130, 20);
+ this.txtChannel.TabIndex = 54;
+ this.txtChannel.Text = "#secondlifelug";
+ //
+ // btnJoin
+ //
+ this.btnJoin.Enabled = false;
+ this.btnJoin.Location = new System.Drawing.Point(487, 167);
+ this.btnJoin.Name = "btnJoin";
+ this.btnJoin.Size = new System.Drawing.Size(58, 20);
+ this.btnJoin.TabIndex = 57;
+ this.btnJoin.Text = "Join";
+ this.btnJoin.UseVisualStyleBackColor = true;
+ this.btnJoin.Click += new System.EventHandler(this.btnJoin_Click);
+ //
+ // txtMessage
+ //
+ this.txtMessage.Enabled = false;
+ this.txtMessage.Location = new System.Drawing.Point(350, 199);
+ this.txtMessage.Name = "txtMessage";
+ this.txtMessage.Size = new System.Drawing.Size(194, 20);
+ this.txtMessage.TabIndex = 58;
+ //
+ // btnSay
+ //
+ this.btnSay.Enabled = false;
+ this.btnSay.Location = new System.Drawing.Point(470, 219);
+ this.btnSay.Name = "btnSay";
+ this.btnSay.Size = new System.Drawing.Size(74, 25);
+ this.btnSay.TabIndex = 59;
+ this.btnSay.Text = "Say";
+ this.btnSay.UseVisualStyleBackColor = true;
+ //
+ // frmSLIRC
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(566, 393);
+ this.Controls.Add(this.btnSay);
+ this.Controls.Add(this.txtMessage);
+ this.Controls.Add(this.btnJoin);
+ this.Controls.Add(this.txtPort);
+ this.Controls.Add(this.label5);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.txtChannel);
+ this.Controls.Add(this.txtServerName);
+ this.Controls.Add(this.lstAllowedUsers);
+ this.Controls.Add(this.lstLog);
+ this.Controls.Add(this.grpLogin);
+ this.Name = "frmSLIRC";
+ this.Text = "Second Life <-> IRC";
+ this.Load += new System.EventHandler(this.frmSLIRC_Load);
+ this.grpLogin.ResumeLayout(false);
+ this.grpLogin.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.GroupBox grpLogin;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.TextBox txtPassword;
+ private System.Windows.Forms.TextBox txtLastName;
+ private System.Windows.Forms.Button cmdConnect;
+ private System.Windows.Forms.TextBox txtFirstName;
+ private System.Windows.Forms.ListBox lstLog;
+ private System.Windows.Forms.ListBox lstAllowedUsers;
+ private System.Windows.Forms.TextBox txtServerName;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.TextBox txtPort;
+ private System.Windows.Forms.TextBox txtChannel;
+ private System.Windows.Forms.Button btnJoin;
+ private System.Windows.Forms.TextBox txtMessage;
+ private System.Windows.Forms.Button btnSay;
+ }
+}
+
diff --git a/applications/SLIRC/frmSLIRC.cs b/applications/SLIRC/frmSLIRC.cs
new file mode 100644
index 00000000..509b5ce2
--- /dev/null
+++ b/applications/SLIRC/frmSLIRC.cs
@@ -0,0 +1,145 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using System.Collections;
+using System.Threading;
+using libsecondlife;
+using Meebey.SmartIrc4net;
+namespace SLIRC
+{
+ public partial class frmSLIRC : Form
+ {
+ private SecondLife client;
+ private IrcClient ircclient;
+ public frmSLIRC()
+ {
+ InitializeComponent();
+ ircclient = new IrcClient();
+ }
+ public void Listen()
+ {
+ ircclient.Listen();
+ }
+ private void cmdConnect_Click(object sender, EventArgs e)
+ {
+ if (cmdConnect.Text == "Connect")
+ {
+ cmdConnect.Text = "Disconnect";
+ txtFirstName.Enabled = txtLastName.Enabled = txtPassword.Enabled = false;
+
+ Hashtable loginParams = NetworkManager.DefaultLoginValues(txtFirstName.Text,
+ txtLastName.Text, txtPassword.Text, "00:00:00:00:00:00", "last", 1, 50, 50, 50,
+ "Win", "0", "accountant", "jhurliman@wsu.edu");
+ if (client.Network.Login(loginParams))
+ {
+ LogMessage("Logged into Second Life");
+ lstAllowedUsers.Enabled = lstLog.Enabled = btnJoin.Enabled = btnSay.Enabled = true;
+ ircclient.OnChannelMessage += new IrcEventHandler(ircclient_OnChannelMessage);
+ //Connect to IRC server, yaydey yadah
+ try
+ {
+ ircclient.Connect(new string[] { txtServerName.Text }, int.Parse(txtPort.Text));
+ LogMessage("Connected to IRC Server.");
+ ircclient.Login(client.Avatar.FirstName + client.Avatar.LastName, "SLIRC Gateway");
+ ircclient.RfcJoin(txtChannel.Text);
+ LogMessage("Logged in");
+
+ Thread t = new Thread(Listen);
+ t.Start();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show("OH NOES! " + ex.Message);
+ }
+
+ }
+ else
+ {
+ MessageBox.Show(this, "Error logging in: " + client.Network.LoginError);
+ cmdConnect.Text = "Connect";
+ lstAllowedUsers.Enabled = lstLog.Enabled = btnJoin.Enabled = btnSay.Enabled = false;
+ txtFirstName.Enabled = txtLastName.Enabled = txtPassword.Enabled = true;
+ }
+ }
+ else
+ {
+ cmdConnect.Text = "Connect";
+ lstAllowedUsers.Enabled = lstLog.Enabled = btnJoin.Enabled = btnSay.Enabled = false;
+ txtFirstName.Enabled = txtLastName.Enabled = txtPassword.Enabled = true;
+ client.Network.Logout();
+ }
+
+ }
+
+ void ircclient_OnChannelMessage(object sender, IrcEventArgs e)
+ {
+ LogMessage(e.Data.Nick + ": " + e.Data.Message);
+ //From IRC -> Inject to SL
+ client.Avatar.Say(e.Data.Nick + ": " + e.Data.Message, 0);
+ }
+
+ private void frmSLIRC_Load(object sender, EventArgs e)
+ {
+ try
+ {
+ client = new SecondLife("keywords.txt", "protocol.txt");
+ client.Avatar.OnChat += new ChatCallback(Avatar_OnChat);
+ grpLogin.Enabled = true;
+ }
+ catch (Exception error)
+ {
+ MessageBox.Show(this, error.ToString());
+ }
+ }
+ private delegate void SingleStringDelegate(string s);
+ void LogMessage(string msg)
+ {
+ if (!this.InvokeRequired)
+ {
+ lstLog.Items.Add(msg);
+ }
+ else
+ {
+ Invoke(new SingleStringDelegate(LogMessage), new object[] { msg });
+ }
+ }
+ void AddToAllowedList(string name)
+ {
+ if (!this.InvokeRequired)
+ {
+ lstAllowedUsers.Items.Add(name);
+ }
+ else
+ {
+ Invoke(new SingleStringDelegate(AddToAllowedList), new object[] { name });
+ }
+ }
+ void Avatar_OnChat(string message, byte audible, byte type, byte sourcetype, string name, LLUUID id, byte command, LLUUID commandID)
+ {
+ if (message.Equals("addme"))
+ {
+ //Add to the list
+ LogMessage("Adding " + name + " to the allowed list");
+ AddToAllowedList(name);
+ }
+ else
+ {
+ if (lstAllowedUsers.Items.Contains(name) && audible == 1)
+ {
+ LogMessage(name + ": " + message);
+ ircclient.SendMessage(SendType.Message, ircclient.GetChannels()[0], name + " : " + message);
+ }
+ }
+ }
+
+ private void btnJoin_Click(object sender, EventArgs e)
+ {
+ ircclient.RfcJoin(txtChannel.Text);
+ LogMessage("Joining " + txtChannel.Text);
+ }
+ }
+}
\ No newline at end of file
diff --git a/applications/SLIRC/frmSLIRC.resx b/applications/SLIRC/frmSLIRC.resx
new file mode 100644
index 00000000..ff31a6db
--- /dev/null
+++ b/applications/SLIRC/frmSLIRC.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/applications/SLIRC/obj/Debug/SLIRC.Properties.Resources.resources b/applications/SLIRC/obj/Debug/SLIRC.Properties.Resources.resources
new file mode 100644
index 00000000..06c24d06
Binary files /dev/null and b/applications/SLIRC/obj/Debug/SLIRC.Properties.Resources.resources differ
diff --git a/applications/SLIRC/obj/Debug/SLIRC.csproj.GenerateResource.Cache b/applications/SLIRC/obj/Debug/SLIRC.csproj.GenerateResource.Cache
new file mode 100644
index 00000000..aba83e57
Binary files /dev/null and b/applications/SLIRC/obj/Debug/SLIRC.csproj.GenerateResource.Cache differ
diff --git a/applications/SLIRC/obj/Debug/SLIRC.exe b/applications/SLIRC/obj/Debug/SLIRC.exe
new file mode 100644
index 00000000..0748fac1
Binary files /dev/null and b/applications/SLIRC/obj/Debug/SLIRC.exe differ
diff --git a/applications/SLIRC/obj/Debug/SLIRC.frmSLIRC.resources b/applications/SLIRC/obj/Debug/SLIRC.frmSLIRC.resources
new file mode 100644
index 00000000..06c24d06
Binary files /dev/null and b/applications/SLIRC/obj/Debug/SLIRC.frmSLIRC.resources differ
diff --git a/applications/SLIRC/obj/Debug/SLIRC.pdb b/applications/SLIRC/obj/Debug/SLIRC.pdb
new file mode 100644
index 00000000..3944ba02
Binary files /dev/null and b/applications/SLIRC/obj/Debug/SLIRC.pdb differ
diff --git a/applications/SLIRC/obj/Release/ResolveAssemblyReference.cache b/applications/SLIRC/obj/Release/ResolveAssemblyReference.cache
new file mode 100644
index 00000000..af3d3a19
Binary files /dev/null and b/applications/SLIRC/obj/Release/ResolveAssemblyReference.cache differ
diff --git a/applications/SLIRC/obj/Release/SLIRC.Properties.Resources.resources b/applications/SLIRC/obj/Release/SLIRC.Properties.Resources.resources
new file mode 100644
index 00000000..06c24d06
Binary files /dev/null and b/applications/SLIRC/obj/Release/SLIRC.Properties.Resources.resources differ
diff --git a/applications/SLIRC/obj/Release/SLIRC.csproj.GenerateResource.Cache b/applications/SLIRC/obj/Release/SLIRC.csproj.GenerateResource.Cache
new file mode 100644
index 00000000..c64d6d5b
Binary files /dev/null and b/applications/SLIRC/obj/Release/SLIRC.csproj.GenerateResource.Cache differ
diff --git a/applications/SLIRC/obj/Release/SLIRC.exe b/applications/SLIRC/obj/Release/SLIRC.exe
new file mode 100644
index 00000000..732f1f7f
Binary files /dev/null and b/applications/SLIRC/obj/Release/SLIRC.exe differ
diff --git a/applications/SLIRC/obj/Release/SLIRC.frmSLIRC.resources b/applications/SLIRC/obj/Release/SLIRC.frmSLIRC.resources
new file mode 100644
index 00000000..06c24d06
Binary files /dev/null and b/applications/SLIRC/obj/Release/SLIRC.frmSLIRC.resources differ
diff --git a/applications/SLIRC/obj/Release/build.force b/applications/SLIRC/obj/Release/build.force
new file mode 100644
index 00000000..e69de29b
diff --git a/applications/SLIRC/obj/SLIRC.csproj.FileList.txt b/applications/SLIRC/obj/SLIRC.csproj.FileList.txt
new file mode 100644
index 00000000..9f6bd7e2
--- /dev/null
+++ b/applications/SLIRC/obj/SLIRC.csproj.FileList.txt
@@ -0,0 +1,25 @@
+bin\Release\SLIRC.exe
+bin\Release\SLIRC.pdb
+bin\Release\libsecondlife.dll
+bin\Release\Meebey.SmartIrc4net.dll
+bin\Release\Meebey.SmartIrc4net.pdb
+bin\Release\Meebey.SmartIrc4net.xml
+obj\Release\ResolveAssemblyReference.cache
+obj\Release\SLIRC.frmSLIRC.resources
+obj\Release\SLIRC.Properties.Resources.resources
+obj\Release\SLIRC.csproj.GenerateResource.Cache
+obj\Release\SLIRC.exe
+obj\Release\SLIRC.pdb
+obj\Debug\ResolveAssemblyReference.cache
+obj\Debug\SLIRC.frmSLIRC.resources
+obj\Debug\SLIRC.Properties.Resources.resources
+obj\Debug\SLIRC.csproj.GenerateResource.Cache
+bin\Debug\SLIRC.exe
+bin\Debug\SLIRC.pdb
+bin\Debug\libsecondlife.dll
+bin\Debug\Meebey.SmartIrc4net.dll
+bin\Debug\Meebey.SmartIrc4net.pdb
+bin\Debug\Meebey.SmartIrc4net.xml
+bin\Debug\libsecondlife.pdb
+obj\Debug\SLIRC.exe
+obj\Debug\SLIRC.pdb