EstateOwnerMessage

From libopenmetaverse - libomv - Developer Wiki

Jump to: navigation, search


Contents

Packet Format

EstateOwnerMessage packets take the following general form:

 
---- EstateOwnerMessage ----
 -- MethodData --
 Invoice: <a LLUUID, randomly generated and reused; see below for details>
 Method: <null-terminated ascii name of method>
 ParamList: 0 or more Parameter blocks
 Parameter: null-terminated ascii string, format and contents depend on method

 -- AgentData --
 AgentID: <LLUUID -- AgentID>
 SessionID: <LLUUID -- SessionID>

Generally speaking, SLProxy / Analyst can be used to dump out EstateOwnerMessage packets -- these can be correlated with user input as well as the debug output from the Second Life client to figure out what method names perform which function.

For each method name, it's important to note the number, order and meaning of the parameters in the ParamList.

Sometimes, the meaning of these values can be determined from context or by experimentation; for others, it requires a look a the disassembled code that generated that packet.

Conventions

  • All "Parameter" values are null-terminated ASCII strings.
  • When a UUID is sent as a Parameter, it is in "LLUID format" i.e. 00000000-0000-0000-0000-000000000000
  • B: a Boolean value is either "Y" or "N"
  • I: int means that a value is transmitted as an ASCII representation of an integer -- e.g '21'
  • Real numbers are sent as fixed point values: an optional negative sign, the integer component, a decimal point, and then 6 digits after the decimal. E.g. -105.000000. Often, the SecondLife client will round that value before displaying it, but it will transmit the exact number you type to the sim.
  • Invoices are generated at random by the viewer when they open the Estate UI; it is sent to the sim using the "getinfo" method; the same invoice UUID is reused until the UI is closed.

Methods, by tab

General

getinfo

Triggered by: Opening Estate/Region UI.
Invoice: Randomly generated by viewer, reused until UI is closed.
ParamList: empty

setregioninfo

Called by: LLPanelRegionGeneralInfo::sendUpdate(void) (Apply button)

ParamList:
Param: B   (Block Terraform?)
Param: B   (Block Fly?)
Param: B   (Allow Damage?) 
Param: B   (Allow Land Resell?)
Param: FF.FFFFFF  Agent Limit    -- note, these two values are clipped in the
Param: F.FFFFFF   Object Bonus      display, but not when sent over the wire
Param: II  (Maturity level -- 13 for "PG", 21 for "Mature"
Param: B   (Restrict Pushing?)
Param: B   (Allow Parcel Divide?)

teleporthomeuser

Called by:  LLPanelRegionGeneralInfo::onKickCommit ("Teleport Home One User")
ParamList:
 Param: UUID of kicker
 Param: UUID of kickee

teleporthomeallusers

Called by:  LLPanelRegionGeneralInfo::onKickAllCommit ("Teleport Home All Users")
ParamList:
 Param: UUID of kicker

simulatormessage

Called by:  LLPanelRegionGeneralInfo::onMessageCommit ("Send Message to Region")
ParamList:
 Param: -1   (unknown, but hard-coded into client)
 Param: -1   (unknown, but hard-coded into client)
 Param: AgentID in ASCII form
 Param: full name of Agent
 Param: text of message

Debug

setregiondebug

Called by: LLPanelRegionGeneralInfo::sendUpdate(void) (Apply button)
ParamList:
Param: B  (Disable scripts?)
Param: B  (Disable collisions?)
Param: B  (Disable pysics?)

colliders

sent in response to "Get Top Colliders..." button press

Param: 1  (unknown)

scripts

sent in response to "Get Top Scripts..." button press

Param: 6  (unknown)

restart

sent in response to "Restart Region" button press

Param: 120  (number of seconds to delay, could probably be changed)
  --or--
Param: -1   (cancel restart)

Texture

Called by: LLPanelRegionTextureInfo::sendUpdate The following four messages are sent in sequence, every time the Apply button is clicked:

texturebase

Param: "0 <uuid-of-base-texture-1 (low)>"
Param: "1 <uuid-of-base-texture-2>"
Param: "2 <uuid-of-base-texture-3>"
Param: "3 <uuid-of-base-texture-4 (high)>"

texturedetail

Param: "0 <uuid-of-detail-texture-1 (low)>"
Param: "1 <uuid-of-detail-texture-2>"
Param: "2 <uuid-of-detail-texture-3>"
Param: "3 <uuid-of-detail-texture-4 (high)>"

textureheights

Param: "0 FF.FFFFFF FF.FFFFFF"  (SW Low / High)
Param: "1 FF.FFFFFF FF.FFFFFF"  (NW Low / High)
Param: "2 FF.FFFFFF FF.FFFFFF"  (SE Low / High)
Param: "3 FF.FFFFFF FF.FFFFFF"  (NW Low / High)

texturecommit

(no params)

Terrain

When apply is clicked, the following message is sent:

setregionterrain

Param: FF.FFFFFF   (water height)
Param: FFF.FFFFFF  (terrain raise limit)
Param: FFF.FFFFFF  (terrain lower limit)
Param: B           (use estate sun)
Param: B           (fixed sun)
Param: F.FFFFFF    (Phase: ranges from 6 to 30)
Param: B           ?
Param: B           ?
Param: F.FFFFFF    ?

terrain

When "Download Raw Terrain" is clicked:

Param: "download filename"
Param: "/Users/bushing/Documents/terrain.raw"  (full pathname for destination)
 When "Upload Raw Terrain" is clicked:
Method: terrain
Param: "upload filename"
Param: "/Users/bushing/Documents/terrain.raw"  (full pathname for source)
 When "Bake Terrain" is clicked and confirmed:
Method: terrain
Param: "bake"

Estate

estateacccessdelta

Param: AgentID UUID (ascii)
Param: 256 (to add as Estate Manager) or 4 (Allowed residents) or 16 (Allowed groups) or 64 (Banned residents) 
Param: UUID of Avatar to add

estatechangeinfo

Param: "(unknown)" (probably name of estate)
Param: bitfield:
           0x10 use fixed sun
         0x8000 visible from mainland
        0x10000 mainland visible from here
       0x100000 allow direct teleport
       0x800000 deny no payment info on file
      0x1000000 deny payment info on file
      0x2000000 deny payment info used
Param: 0 (use global time) or from 6144 to 30720, based on Phase slider (if not using global time)

instantmessage

Send message to estate button:

Param: full name of Agent
Param: body of message

kick

Kick user from estate button:

Param: AvatarID of kickee

Covenant

To change covenant, drag a notecard onto text field, which sends:

estatechangecovenantid

Param: UUID of notecard

To reset, click reset, which sends:

Method: estatechangecovenantid
Param: null UUID

Other messages?

Most of the above was done using just SLProxy. Looking through the disassembly, it looks like there may have been a few I was not able to trigger using the client-side debug code.

telehub

Param: "spawnpoint remove"
Param:  Probably a spawnpoint specifier
--or--
Param: "spawnpoint add"

note: these might be godlike commands. hard to say.