Skip to content

Tips & IM Commands

Useful conventions and IM-based commands that are not part of the official RLV script API but are widely supported by RLV/RLVa viewers.

Info

The commands on this page are typed directly into IM windows by avatars โ€” they are not sent via llOwnerSay() from scripts. They were introduced by Marine Kelley in RLV 2.9.19 as convenience features.


IM Commands

These commands work when typed directly into a private (P2P) IM window with another avatar. They do not work in group chat, conferences, or local chat.

@list

@list

Added: RLV 2.9.19

When typed in an IM window, the viewer replies with the complete list of RLV restrictions the user is currently under. The response appears in the IM window but is only visible to the sender.

Use case: Mutual debugging โ€” lets a trusted person see what restrictions are active without needing a scripted device.

Note

This is equivalent to the "List RLV restrictions" menu item in the RLV submenu of the IM window.

@stopim

@stopim

Added: RLV 2.9.19

When typed in an IM window, closes the user's IM window for that conversation. Only works if the user is currently under a @startim restriction (preventing them from starting new IM sessions). If the user is not under @startim, the sender receives feedback that the command had no effect.

Use case: Allows the other party to end the conversation on their terms โ€” useful in power-exchange or M/s dynamics where the dominant controls when communication ends.

@version (via IM)

@version

Documented: v1.0a

When typed in an IM window, the viewer replies with its RLV version string. The reply appears in the IM window but neither the command nor the response shows in the user's IM window (stealthy). Some viewers (e.g. Firestorm) may show an auto-reply if that feature is enabled.

@getblacklist (via IM)

@getblacklist

Documented: v2.8

When typed in an IM window, the viewer replies with the contents of the user's command blacklist. Same stealth behavior as @version.


IM Menu Shortcuts

RLV 2.9.19+ adds a small menu button in IM windows with these shortcuts:

Menu Item Sends
Version @version
Get Blacklist @getblacklist
List Restrictions @list
Close IM @stopim

These menu entries are only available in P2P conversations (not group chat, conferences, or local chat).


Exception Syntax

Many RLV commands support an exception pattern that allows fine-grained control. The syntax uses : to specify what the exception applies to, and add/rem (or n/y) to enable or disable it.

Pattern

@<command>:<target>=<add/rem>
Component Values Description
command Any restriction command The base restriction (e.g. sendim, recvchat, tplure)
target UUID, group name, channel number, or "allgroups" What the exception applies to
add / n โ€” Enables the exception (allows the action)
rem / y โ€” Removes the exception (reverts to restriction)

Examples

Allow IMs to a specific person:

@sendim:fcf9eafc-a6b4-4de9-bda7-c44ddb649895=add

Allow chat on channel 5:

@sendchannel:5=add

Allow teleport offers from one avatar:

@tplure:fcf9eafc-a6b4-4de9-bda7-c44ddb649895=add

Allow hearing chat from a specific avatar:

@recvchat:fcf9eafc-a6b4-4de9-bda7-c44ddb649895=add

Allow all group IMs (v2.9.29+):

@sendim:allgroups=add
@recvim:allgroups=add

Why =add/=rem instead of =n/=y?

The =n/=y and =add/=rem syntaxes are functionally identical. The distinction exists purely for readability in scripts:

  • =n / =y โ†’ used for rules (e.g. @sendchat=n)
  • =add / =rem โ†’ used for exceptions (e.g. @sendim:UUID=add)

Using =add/=rem for exceptions makes scripts clearer about intent.


Multi-Command Messages

Since RLV v1.10, multiple commands can be sent in a single llOwnerSay() call, separated by commas. Only one @ sign is needed at the start.

llOwnerSay("@sendchat=n,recvchat=n,sendim=n");

Warning

Do not put @ before each command โ€” only the first one should have it: - Correct: @sendchat=n,recvchat=n - Incorrect: @sendchat=n,@recvchat=n (subsequent commands will fail)


Negative Channels

Since RLV v1.23a (@versionnum โ‰ฅ 1230001), channel numbers can be negative. Negative channels are useful for:

  • Security: Prevents the user from spoofing responses (they can't send on negative channels via normal chat)
  • Anti-cheat: The viewer can't easily intercept or fake replies on negative channels

Limitations: - Negative channels: max 255 characters - Positive channels: max 1023 characters

// Secure version check (user can't spoof the reply)
llOwnerSay("@version=-999");

Unofficial Commands

These commands are not part of the official RLV specification but are supported by some viewers.

@allowidle ๐Ÿงช

@allowidle=<y/n>

Unofficial โ€” requires RLVaExperimentalCommands (Firestorm 7.2.5.81383).

When prevented, the user is unable to disable the automatic Away/AFK idle indicator. If the idle timeout has been set to zero, the default timeout of 30 minutes is used.

Warning

Not part of the official RLV spec. Support varies by viewer.


Garbage Collector

RLV periodically checks all active rules and removes ones linked to objects that no longer exist nearby. This means:

  • Rules from unworn objects are automatically cleaned up when the avatar teleports
  • Rules from derezzed objects persist until the garbage collector runs
  • This is why scripts must resend their restrictions in on_rez() โ€” the old rules may have been garbage-collected

See also: Version Checking | Chat & IM | Viewer Control