EstateOwnerMessage
From libsecondlife
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.