Edit me
QuickySitter uses link-message numbers in the range 90000 – 90500, identical to stock AVsitter 2. Stock numbers are unchanged from a sender’s perspective: a stock plugin’s link-message traffic works as-is in QuickySitter furniture. (Script-name probes are another matter: see Compatibility Matrix.)
This page lists the fork-specific numbers QuickySitter adds (in stock-unused ranges) and notes the stock numbers whose handler script moved or whose semantics changed slightly. For the complete stock AVsitter 2 reference, see avsitter2_link_message_reference.md in the QS repo (vendored copy of upstream).
Stock numbers used unchanged
90000-90014, 90030 (SWAP), 90033, 90045 (pose-played broadcast), 90050/90051 (menu pose pick), 90055/90056 (anim info), 90057 (helper move), 90060/90065/90070 (sit/unsit/permissions), 90075/90076 (oldschool helper), 90100/90101 (menu choice), 90150-90211, 90220 (play pose without opening the menu; [QS]prop handles it alongside 90200), 90230, 90298-90300, 90401-90500. From a sender’s perspective the contracts match stock.
Stock numbers whose handler script moved
| Num |
Stock home |
QuickySitter home |
Why |
90020 |
sent to scripts asking for [DUMP] |
sent from [QS]boot instead of adjuster |
[DUMP] ownership moved to boot |
90021 |
handled by [AV]adjuster |
handled by [QS]boot |
same: boot owns the cascade |
90022 |
handled by [AV]adjuster |
handled by [QS]boot |
same: boot owns the receiver |
Plugins still send 90022/90021 to LINK_THIS exactly like in stock; the listener just lives in a different script in the same prim.
Stock numbers with subtler semantic changes
| Num |
Change |
90301 |
sitB’s handler is stricter: it only refreshes the seated avatar when the saved pose is the one currently playing, compared by pose name (not by index) with a payload-shape check, and forwards pos/rot directly from the 90301 payload instead of re-reading LSD. Sender contract (name\|pos\|rot\|) unchanged. Stock plugins don’t send 90301 (it was sitA→sitB internal), so this is invisible externally. |
Stock numbers no longer routed
| Num |
Status |
90302 (“sitA sends initial notecard settings to sitB”) |
Removed. sitB reads qs:cfg:<ch> from LSD directly in state_entry. Incoming 90302 is silently ignored. |
90020 → sitB |
sitB is no longer a [DUMP] source (boot owns the dump). Incoming 90020 to sitB is silently ignored. |
Fork-specific numbers
All in stock-unused ranges. A stock-AVsitter plugin sending or receiving in these ranges would have collided with something, but the stock reference shows these slots as unused.
Boot self-check + reload (9002x)
| Num |
Direction |
Use |
90023 |
[QS]boot → all |
QS_BOOT_RELOAD. Emitted at the end of the seed cascade. [QS]sitB reloads its page state from LSD on receipt (the retired MENU_LIST is gone), and [QS]sitA reloads too, eliminating the manual-reset step after a notecard re-save. |
90024 |
[QS]boot → all |
QS_BOOT_WIPE. Broadcast before boot wipes the seeded LSD and resets, when a notecard re-save invalidates the seeded state. sitA/sitB flip their booted flag back to FALSE so pre-boot guards re-engage until QS_BOOT_RELOAD (90023) fires. |
See Boot Sequence.
Boot self-check probe (9007x)
| Num |
Direction |
Use |
90077 |
[QS]boot → [QS]sitB |
Boot self-check probe (“is the menu pipeline present?”). One-shot from boot’s state_entry. |
90078 |
[QS]sitB → [QS]boot |
Boot self-check reply. |
Plugin presence (9007x – 9009x)
Plugin presence is not a link-message handshake. Each plugin writes a qs:alive:<name> LSD flag in its state_entry (the offset plugin uses the inverted name qs:offset:alive); menu builders read those flags on demand, never caching. The only presence-related link-message is the census re-stamp:
| Num |
Direction |
Use |
90079 |
[QS]boot → all |
QS_ALIVE_CENSUS. boot wipes every qs:alive:* flag and broadcasts this; surviving plugins re-stamp their flag in response, so a removed plugin drops out without an inventory probe. |
90093 |
bidirectional |
hudproxy presence probe (the live HUD-presence HELLO; QSDUMP_HELLO 90095 and QS_SITB_HELLO 90078 are also live, for the dump cascade and the boot self-check respectively). See HUD Integration. |
90094 |
[QS]boot → all plugins |
QSDUMP probe: “if you’re DUMP-capable, announce yourself now.” |
90095 |
DUMP plugin → [QS]boot |
QSDUMP hello: “I respond to 90020 DUMP messages.” |
90096 |
plugin → [QS]sitA |
QSALIVE count/version/caps probe (not a presence handshake). See QSALIVE Discovery. |
90097 |
[QS]sitA (slot 0) → plugin |
QSALIVE count/version/caps reply, plus one unsolicited boot-announce. |
DUMP cascade ownership (9009x)
| Num |
Direction |
Use |
90098 |
[QS]adjuster → [QS]boot |
“Start dump for channel.” Replaces stock adjuster-owned [DUMP]. id is a mode marker: "quiet" for the ADJUSTMODE live-view dump (URL only, chat banners suppressed), "" (or "loud") for the operator-visible [DUMP]. The boot self-check (90077/90078) never dumps. |
90099 |
[QS]boot → self |
Dump tick: self-trigger between dump-line iterations. |
Quiet swap (9003x)
| Num |
Direction |
Use |
90031 |
menu source → [QS]sitA |
Quiet SWAP, like stock 90030 SWAP but suppresses the swap announcement. Fork addition; stock furniture has no 90031 sender. |
Plug-and-play plugin registry (9021x)
| Num |
Direction |
Use |
90204 |
[QS]adjuster → [QS]root-security |
QSADJ_ACL_SET: apply an Adjust-ACL level from the /5 adjust chat command, msg = "OWNER" / "GROUP" / "ALL". A stock-free slot inside the otherwise stock 90200 band. The adjuster sends it and writes qs:sec:adjust itself, both unconditionally, so the plugin’s RAM state cannot go stale and revert the level on the next census. Since 1.26. |
90212 |
plugin → [QS]sitB |
QSPLUG_REGISTER: msg = "<label>\|<click_chan>\|<scriptName>". Registers a runtime button into the [OPTIONS] top-level menu. sitB dedupes by scriptName. Click dispatch lands on <click_chan> with msg = <label>, id = <controller-key>. See Options Menu Plugins. |
90213 |
plugin → [QS]sitB |
QSADJ_REGISTER: msg = "<label>\|<click_chan>\|<scriptName>\|<flags>". Like QSPLUG_REGISTER but the button lands in the [ADJUST] submenu instead of [OPTIONS]. flags bit 0 = owner-only (rendered per the Adjust ACL, like [HELPER HUD]). RAM registry, re-announced by the plugin on QSALIVE_REPLY (90097) so it survives a re-seed. |
Personal pose offsets (9026x)
| Num |
Direction |
Use |
90214 |
[QS]adjuster → [QS]faces |
QSFACE_PICK: open the facial-anim picker for a sitter slot. msg = "<slot>\|<controller>\|<sitterAv>". Prim-local (sent LINK_THIS, and the receiver refuses a cross-prim sender), because the slot indexes the receiving prim’s own sitter list. Since 1.26. |
90215 |
[QS]adjuster → creator-only plugins |
QS_FINALIZE: broadcast by /5 cleanup just before the adjuster removes itself. Subscribers tear THEMSELVES down; the adjuster knows no plugin inventory names. Unheard when no such plugin is present. Since 1.26. |
90216 |
plugin → [QS]sitB |
QSADJ_UNREGISTER: drop a button registered via 90213. msg = <scriptName>, the same identity 90213 dedupes on. A plugin that deletes itself MUST send this first, otherwise its button outlives it and dispatches to a channel nobody listens on. Since 1.26. |
90238 |
[QS]sitB → hudadmin |
Click channel of the self-registered 💠 POSE HUD entry (attach mode menuplus). Same handler as the 90510 button, so it toggles. Since 1.26. |
90260 |
[QS]offset → [QS]sitA + hudproxy |
“Mirror this RAM-tier personal offset.” ZERO/ZERO is the delete sentinel. |
90261 |
[QS]sitA + hudproxy → [QS]offset |
“Push every RAM-tier cached offset for this (sitter, slot) pair to me.” |
90262 |
[QS]sitA, hudproxy, hudadmin, [QS]debug → [QS]offset |
“Save this offset for (sitter, slot, pose).” Magic name M#T! is the all-poses fallback. |
90263 |
[QS]adjuster → [QS]sitA + [QS]offset |
“Drop stale customs after [HELPER] [SAVE].” |
90264 |
hudadmin → [QS]offset |
“Wipe ALL personal offsets.” (hudproxy has no 90264 sender.) |
90265 |
[QS]offset → all [QS]sitA |
“Clear your RAM-tier mirror.” Paired with 90264. |
90266 |
[QS]adjuster + hudadmin → hudproxy |
“Flip QuickyHUD ADJUSTMODE remotely”: "On" / "Off". |
See Personal Pose Offsets.
Retired presence HELLOs (9008x – 9009x)
These per-plugin HELLO broadcasts were the original (pre-0.9951) presence mechanism. They were retired in 0.9951 and replaced by the qs:alive:* LSD flags + QS_ALIVE_CENSUS (90079) described above. The numbers are reserved and not reused; current scripts neither send nor listen for them.
| Num |
Was |
Replaced by |
90088 |
QS_OFFSET_HELLO: offset presence |
qs:offset:alive LSD flag (inverted name). |
90089 |
QS_PROP_HELLO: prop presence (gated [PROP]) |
qs:alive:prop LSD flag. |
90090 |
QS_FACES_HELLO: faces presence (gated [FACES]/[FACE]) |
qs:alive:faces LSD flag. |
90091 |
QS_ADJUSTER_HELLO: adjuster presence (gated [HELPER]) |
qs:alive:adjuster LSD flag. |
90092 |
QS_SELECT_HELLO: select presence (gated select routing) |
qs:alive:select LSD flag (sitB also keeps an [AV]select inventory fallback for stock-AVsitter compat). |
Re-Sync and dynamic props (9027x – 9028x)
| Num |
Direction |
Use |
90271 |
any in-prim source → [QS]sitA |
SYNC-pose Re-Sync trigger. See Re-Sync Protocol. |
90280 |
any in-prim source → [QS]prop |
QSPROP_ATTACH: dynamic prop register + rez without notecard entry. See HUD Integration. |
QuickyHUD-internal numbers (9027x)
These live entirely inside the QuickyHUD scripts (hudproxy ↔ hudadmin, both on the furniture prim). Listed here for range completeness; a stock plugin never sees them.
| Num |
Direction |
Use |
90272 |
hudproxy → hudadmin |
SELECT_OPEN_DIALOG: render the SELECT (swap-target) picker. |
90273 |
hudadmin → hudproxy |
SELECT_PICKED: the chosen target token. |
90274 |
hudproxy → hudadmin |
ATTACH_FOR_ADJUST: ensure the operator has a HUD attached when ADJUSTMODE goes On. |
90275 |
any source → hudproxy |
QSANIM_OCCUPANT: animesh dummy occupant hook. See Animesh Adjust Dummies. |
90276 |
hudproxy → linkset |
ADJUSTMODE_CHANGED: the mode flipped, msg = "On" / "Off". Fired from the single choke point every flip passes through. hudadmin uses the "Off" edge to retire HUDs that only existed for ADJUSTMODE. Nobody listens on stock AVsitter, so the broadcast is compat-neutral there. Since 1.26. |
Compatibility summary
- Stock plugin in QuickySitter furniture: ✅ link-message traffic works unchanged; plugins relying on
[AV]sitA script-name probes degrade. See Compatibility Matrix.
- QuickySitter scripts in stock-AVsitter furniture: ❌ doesn’t work, because sitA/sitB expect
qs:cfg/qs:sitter/qs:p:* LSD keys that boot writes during seed; stock furniture has no [QS]boot. This is intentional, not a goal of the fork.
See also: Compatibility Matrix, LSD Keys.