# MPP - Commands Help On Chat Script V1.5.2 - Documentation

Shows a help text in Nearby Chat when a visitor types a command such as `/CommandsHelp`, or when another script asks for it (an **MPP - Action Button** on a help panel, for example). The help can be the built-in list of Sansar chat commands, your own text, or both. Optionally, the script also greets the avatars who enter the scene, with their name, their handle or a link to their web profile, plays a sound when someone arrives, and posts a Script Event at each arrival and each departure so that your other scripts can react.

This script is **standalone** - it does not require any other MPP script to function.

**New in V1.5:** an `Arrival/` group, all Off by default and independent of the greeting: a sound when an avatar enters the scene (from the object or everywhere, with a volume and a minimum interval), a Script Event at each arrival and one at each departure, carrying the avatar's UUID like an Action Button click. V1.5.1 also renames two groups of the Build panel (`Activation/` and `Help/`). Your settings are kept when you update: see "Updating from V1.4.0".

**New in V1.5.2:** NPCs. Sansar NPCs enter a scene like avatars, so the greeter used to announce them at every scene start. The new switch `Activation/Detect NPCs`, Off by default, makes the script ignore them: no greeting, no arrival sound or event, no answer to their help request. Turn it On to treat NPCs as visitors (see "NPCs").

---

## Quick Start

1. After purchase, the script is in your **Inventory** in Build mode. Add it to any object of your scene: a sign, a help panel, or a small object hidden out of sight.
2. Build and visit the scene, then type `/CommandsHelp` in Nearby Chat: the built-in help (the Sansar `%%` commands) is posted in the chat for everyone.
3. To add your own commands, paste them in `Help/Help Block` (several lines allowed). They are shown after the built-in help, under the separator line `-- Custom Command --`.
4. Optional: turn `Join Greeting/Enable Greeting` On to welcome visitors with "Hello! Type /CommandsHelp in Nearby Chat to see the scene commands."
5. Optional: pick a sound in `Arrival/Arrival Sound` to play a chime when someone arrives.

That is all most scenes need. The rest of this guide details every option.

---

## How It Works

Two ways to ask for the help, one help text, two ways to deliver it:

| Step | Settings | What happens |
|---|---|---|
| **Ask** | `Activation/Chat Command`, `Activation/Script Event Name` | A visitor types the command alone in Nearby Chat, or another script posts the Script Event |
| **Check** | `Activation/Cooldown Seconds` | A request that comes too soon after the previous one is refused (see "Cooldown") |
| **Build** | `Help/...` | The built-in help and/or your Help Block, in the order you chose, with the separator between them |
| **Deliver** | `Help/Whisper To Sender Only` | Posted to everyone in the scene (default), or sent in private to the avatar who asked |

Apart from the help, the script watches the avatars who enter and leave the scene: the **join greeting** (a chat message), the **arrival sound** and the **arrival and departure events** are three independent options, each with its own switch. Sansar NPCs are ignored by all three unless `Activation/Detect NPCs` is On (see "NPCs").

In the Build panel the settings are grouped by category: `Activation/`, `Help/`, `Join Greeting/`, `Arrival/` and `Debug/`.

---

## Triggers

### Chat command

`Activation/Chat Command` (default `/CommandsHelp`). The visitor types it **alone** in Nearby Chat. Case does not matter (`/commandshelp` works too) and spaces before and after are ignored, but a sentence that contains the command among other words is ignored. Leave it empty to disable the chat trigger.

### Script Event

With `Activation/Enable Script Event` On (default), the script also shows the help when another script posts the Script Event named in `Activation/Script Event Name` (default `show_commands_help`).

- **From an MPP - Action Button**: on the button, `Send as Command` On and `Command 1` = `show_commands_help`. The button tells which avatar clicked, so the help can be whispered to that avatar (see "Who Receives the Help").
- **From your own script**: post the event name. To identify the avatar, send the same data as Action Button: an object with a public text property named `ActivatorAvatarUuid` holding the avatar's UUID (see "Event Payload Interface" in the Action Button documentation). Without it, the help can only be posted to everyone.

### Several help texts in one scene

Place several copies of the script, each with its own chat command and event name: `/AdminHelp`, `/TeamHelp`, `/EventHelp`... Each copy has its own texts, cooldown and delivery mode.

---

## What Is Shown

The help is made of up to three parts:

- **Built-in help** (`Help/Show Default Help`, default On): the list of Sansar's own chat commands, shown exactly like this:

```
Type these into Nearby Chat. (Most can target a username, e.g. %%kick User-1234)

%%who -- list all users in scene
%%roles -- show your current role
%%kick <name> -- remove a user from the scene
%%mute <name> -- temporarily disable a user's mic
%%mega-on/off <name> -- give or remove megaphone access
%%broadcast-on/off <name> -- show or hide avatar across instances
%%backpack-on/off -- toggle backpack visibility
%%backpack-clear -- remove all spawned backpack items
%%muteall [seconds] -- mute everyone (optional delay)
%%unmuteall [seconds] -- unmute everyone (optional delay)
```

- **Your Help Block** (`Help/Help Block`): your own text, as many lines as you like. Empty lines are skipped when the help is sent line by line; with `Help/Send As Single Message` On, they are kept inside the message.
- **Separator** (`Help/Section Separator`, default `-- Custom Command --`): a line placed between the two, only when both are shown. Empty = no separator.

**Order.** By default: built-in help, separator, your Help Block. With `Help/Help Block First` On: your Help Block, separator, built-in help.

To show **only your own text**, turn `Help/Show Default Help` Off. With `Show Default Help` Off and an empty Help Block, the command does nothing.

### Line by line or in blocks

- `Help/Send As Single Message` Off (default): each line is a separate chat message, sent quickly one after the other.
- On: each part (built-in help, separator, your Help Block) is sent as one message. A part longer than `Help/Max Characters Per Message` (default 580, from 100 to 2000) is split into several messages, preferably between lines, so a line is only cut when it is itself longer than the limit.

---

## Who Receives the Help

`Help/Whisper To Sender Only`:

- **Off (default) - broadcast**: the help is posted in Nearby Chat for everyone in the scene.
- **On - whisper**: only the avatar who asked receives it, in private. The other visitors see nothing. A Script Event that does not say which avatar asked (see "Script Event") shows nothing in this mode.

---

## Cooldown

`Activation/Cooldown Seconds` (default 5, 0 = no cooldown, 86400 = 24 hours at most) is the minimum delay between two help displays:

- **Broadcast**: one delay for the whole scene. After the help was posted, the next request from anyone is refused until the delay is over, so a crowd typing the command does not flood the chat.
- **Whisper**: one delay **per avatar**. Each visitor can get the help in private without waiting for the others. The only shared limit is a safety pause of a tenth of a second after each help sent: a request from another avatar in that instant is ignored without a message (asking again works).

A request that would show nothing (no built-in help and an empty Help Block, or a whisper without a known avatar) is simply ignored and does not start the delay.

### Cooldown Notice

With `Activation/Cooldown Notice` On (default), an avatar whose request is refused receives a private message, only visible to them: by default "The help was just posted in the chat. You can ask again in 4 seconds." At most one message every 3 seconds per avatar, and none when the wait is under half a second.

Write your own text in `Activation/Cooldown Notice Text`: `{time}` becomes the remaining time with its unit ("4 seconds", "1 minute 5 seconds"), `{seconds}` the whole number of seconds. Leave the text empty, or turn the notice Off, to refuse in silence.

---

## Join Greeting

With `Join Greeting/Enable Greeting` On, a greeting is posted in Nearby Chat, **for everyone**, when an avatar enters the scene.

| Setting | Default | What it does |
|---|---|---|
| Join Greeting/Enable Greeting | Off | Turns the greeting on |
| Join Greeting/Cooldown Minutes | 10 | Minimum delay between two greetings, for the whole scene (0 to 120; 0 = greet every arrival). Avatars who arrive during the delay are not greeted |
| Join Greeting/Message | "Hello! Type {trigger} in Nearby Chat to see the scene commands." | The greeting text |
| Join Greeting/Include Name | Off | Adds the arriving avatar's display name |
| Join Greeting/Include Handle | Off | Adds the arriving avatar's handle, as `@handle` |
| Join Greeting/Include Profile URL | Off | Adds a link to the arriving avatar's web profile (`https://www.sansar.com/profiles/<handle>`) |
| Join Greeting/Profile URL Label | "Profile: " | Text placed before that link when it is added at the end |

**Tokens** in the message:

- `{trigger}` is replaced by your chat command (`/CommandsHelp`).
- `{name}`, `{handle}` and `{profileurl}` are replaced by the arriving avatar's name, handle and profile link, **only when the matching Include switch is On** (otherwise they become empty).

**When the message contains neither `{name}` nor `{handle}`**, the Include switches still work:

- The name and/or the handle are placed before the message: `Anna (@anna) - Hello! Type /CommandsHelp in Nearby Chat to see the scene commands.`
- The profile link is added at the end, after the label: `... commands. Profile: https://www.sansar.com/profiles/anna`

If the message contains `{name}` or `{handle}`, nothing is placed before it: write both tokens to show both, for example `Welcome {name} ({handle})!`.

Double spaces, and a space left before a comma, a period or a colon, are cleaned up. If your message uses a token, keep the matching Include switch On: otherwise the text around the token stays (for example empty brackets `()` or a space before `!`). A display name that ends with "- Sansar" (Sansar staff accounts) is shown as "Name Sansar", so the chat does not turn it into a link.

---

## Arrival Sound and Events

The `Arrival/` group reacts to the avatars who enter and leave the scene, independently of the join greeting (which can be On or Off). Everything in it is **Off by default**: with the defaults, the script behaves exactly as V1.4.0.

### Arrival sound

A sound played for everyone in the scene when an avatar arrives - a chime, a door, a bird.

| Setting | Default | What it does |
|---|---|---|
| Arrival/Arrival Sound | (none) | A sound from your inventory. Empty = no sound |
| Arrival/Sound Volume | 100 | Loudness from 0 to 200 percent (100 = the sound as recorded, 0 = no sound) |
| Arrival/Sound Everywhere | Off | Off = the sound comes from the object that carries the script, louder near it and fainter far away. On = everyone hears it at the same level, wherever they are in the scene |
| Arrival/Sound Min Interval Seconds | 2 | Minimum delay between two sounds, for the whole scene (0 to 60). Avatars who arrive during the delay trigger no sound: a group that arrives together is one chime, not ten. 0 = a sound at every arrival |

- The delay starts when a sound is actually played.
- The avatar who arrives may not hear their own arrival sound: their client is still loading at that moment. The visitors already in the scene hear it.
- Place the object near the spawn point, or turn `Sound Everywhere` On, so the sound is heard where it matters.

### Arrival and departure events

Two Script Events that other scripts can listen to, to react to the comings and goings: a lamp that lights up, a counter, a door, a script of your own.

| Setting | Default | What it does |
|---|---|---|
| Arrival/Send Arrival Event | Off | Posts the Script Event below each time an avatar enters the scene |
| Arrival/Arrival Event Name | "mpp_avatar_arrived" | Name of that Script Event |
| Arrival/Send Departure Event | Off | Posts the Script Event below each time an avatar leaves the scene |
| Arrival/Departure Event Name | "mpp_avatar_left" | Name of that Script Event |

- One event per avatar, at **every** arrival and every departure: no delay between two events.
- Each event carries the avatar's **UUID**, with the same data as an **MPP - Action Button** click (`ActivatorAvatarUuid`, see "Event Payload Interface" in the Action Button documentation). A script that already listens to an Action Button can listen to arrivals and departures the same way, and knows which avatar it was.
- For the departure, the avatar is already gone when the event is sent: the script remembers the UUID of each avatar from its arrival (and of the avatars already present when the scene starts). If the avatar could not be read, the event is still posted, with an empty UUID.
- A switch On with an empty event name sends nothing, with a warning in the script console at start.
- **Examples.** Set `Arrival Event Name` to `mpp_lamp_all_on` and `Departure Event Name` to `mpp_lamp_all_off` to switch every **MPP - Light Switch** lamp of the scene on when someone arrives and off when they leave. Set `Arrival Event Name` to the `Activation/Script Event Name` of a second Commands Help object in whisper mode to send the help in private to each arriving avatar. Or listen to `mpp_avatar_arrived` in your own script with `SubscribeToScriptEvent`.
- A script that answers the arrival event by writing to the arriving avatar (a private message, a window) may act before that avatar's client has finished loading, and the message can be missed. For the arriving avatar, the join greeting is the safe choice: it is posted to everyone and stays in the chat.

---

## NPCs

Sansar NPCs (non-player characters) are in the scene when it starts, and scripts see them exactly like avatars. Without this setting the greeter would welcome them at every scene start, the arrival sound would play, the arrival event would fire, and the greeting cooldown would be spent on them before the first real visitor.

`Activation/Detect NPCs` (default Off):

- **Off**: NPCs are ignored by the whole script: no greeting, no arrival sound, no arrival or departure event, and a help request coming from an NPC gets no answer. Real visitors are handled as usual.
- **On**: NPCs count as visitors, as in V1.5.1: greeted, announced, and able to trigger the help.

The script recognizes an NPC by its handle: `npc-` followed by 32 characters (digits and letters a to f), for example `npc-47fd9b2b74454649aedef8d8fe5550ac`. Sansar gives scripts no other sign. A visitor whose handle merely starts with `npc-` (like `npc-fan`) is not an NPC. With `Debug/Debug Logging` On, each ignored NPC is written to the script console.

---

## Editor Properties Reference (30 total)

### Activation
| Property | Type | Default | Description |
|---|---|---|---|
| Activation/Chat Command | string | "/CommandsHelp" | Chat command that shows the help, typed alone (case-insensitive). Empty = no chat trigger |
| Activation/Enable Script Event | bool | On | Also shows the help when another script posts the event below |
| Activation/Script Event Name | string | "show_commands_help" | Name of that Script Event |
| Activation/Cooldown Seconds | number | 5 | Minimum delay between two help displays (0 = none, 86400 at most). Broadcast: whole scene. Whisper: per avatar |
| Activation/Cooldown Notice | bool | On | Private "please wait" message for a refused request |
| Activation/Cooldown Notice Text | string | "The help was just posted in the chat. You can ask again in {time}." | Text of that message; `{time}` and `{seconds}` are replaced, empty = no message |
| Activation/Detect NPCs | bool | Off | Off = NPCs (handle `npc-...`) are ignored by the greeting, the arrival sound and events and the help. On = they count as visitors |

### Help
| Property | Type | Default | Description |
|---|---|---|---|
| Help/Whisper To Sender Only | bool | Off | On = private help for the avatar who asked. Off = posted to everyone |
| Help/Show Default Help | bool | On | Shows the built-in list of Sansar commands |
| Help/Help Block | string | "" | Your own help text, several lines allowed |
| Help/Help Block First | bool | Off | Your Help Block before the built-in help |
| Help/Section Separator | string | "-- Custom Command --" | Line between the two parts when both are shown. Empty = none |
| Help/Send As Single Message | bool | Off | One message per part instead of one per line |
| Help/Max Characters Per Message | integer, 100-2000 | 580 | Longer parts are split (Send As Single Message only) |

### Join Greeting
| Property | Type | Default | Description |
|---|---|---|---|
| Join Greeting/Enable Greeting | bool | Off | Greets arriving avatars in Nearby Chat, for everyone |
| Join Greeting/Cooldown Minutes | integer, 0-120 | 10 | Minimum delay between two greetings, for the whole scene |
| Join Greeting/Message | string | "Hello! Type {trigger} in Nearby Chat to see the scene commands." | Greeting text, with `{trigger}`, `{name}`, `{handle}`, `{profileurl}` |
| Join Greeting/Include Name | bool | Off | Adds the avatar's display name |
| Join Greeting/Include Handle | bool | Off | Adds the avatar's `@handle` |
| Join Greeting/Include Profile URL | bool | Off | Adds the avatar's web profile link |
| Join Greeting/Profile URL Label | string | "Profile: " | Text before the link when it is added at the end |

### Arrival
| Property | Type | Default | Description |
|---|---|---|---|
| Arrival/Arrival Sound | SoundResource | (none) | Sound played when an avatar enters the scene. Empty = no sound |
| Arrival/Sound Volume | integer, 0-200 | 100 | Loudness in percent (0 = no sound) |
| Arrival/Sound Everywhere | bool | Off | Off = from the object, On = same level everywhere |
| Arrival/Sound Min Interval Seconds | number, 0-60 | 2 | Minimum delay between two arrival sounds, for the whole scene (0 = every arrival) |
| Arrival/Send Arrival Event | bool | Off | Posts a Script Event at each arrival, with the avatar UUID |
| Arrival/Arrival Event Name | string | "mpp_avatar_arrived" | Name of the arrival event |
| Arrival/Send Departure Event | bool | Off | Posts a Script Event at each departure, with the avatar UUID |
| Arrival/Departure Event Name | string | "mpp_avatar_left" | Name of the departure event |

### Debug
| Property | Type | Default | Description |
|---|---|---|---|
| Debug/Debug Logging | bool | Off | Writes accepted and refused help requests, the avatars, the greetings, the arrival sounds and the arrival and departure events to the script console |

---

## Version Notes

| Version | What changed |
|---|---|
| V1.3.4 | Script Event trigger, compatible with MPP - Action Button |
| V1.3.6 | Join greeting with the arriving avatar's name, handle and profile link (`{name}`, `{handle}`, `{profileurl}`) |
| V1.3.8 | Cleaner greeting prefix (no unwanted link), safer plain-text separator |
| V1.4.0 | Settings labelled and grouped in the Build panel; cooldown per avatar in whisper mode; private "please wait" message for a refused request; Debug Logging; more robust sending (an avatar who leaves during the help, a busy chat) |
| V1.5.0 | `Arrival/` group: arrival sound (from the object or everywhere, volume, minimum interval) and arrival and departure Script Events with the avatar UUID, all Off by default (never sold, merged into V1.5.1) |
| V1.5.1 | Groups renamed `Activation/` (was `Trigger/`) and `Help/` (was `Message/`), `Enable Script Event` (was `Script Event Trigger`). Same settings, same values |
| **V1.5.2** (this version) | `Activation/Detect NPCs` (Off by default): NPCs are ignored by the greeting, the arrival sound, the arrival and departure events and the help requests. Nothing else changes |

### Updating from V1.5.1

- **Your values carry over**: nothing changes in the existing settings.
- **One new setting**, `Activation/Detect NPCs`, Off: NPCs present in your scene are no longer greeted or announced, and no longer spend the greeting cooldown. Turn it On to keep the V1.5.1 behaviour.

### Updating from V1.4.0

- **Your values carry over**: the 21 settings of V1.4.0 keep their internal names and their values. Only two group names and one label change in the Build panel: `Trigger/` is now `Activation/`, `Message/` is now `Help/`, and `Script Event Trigger` is now `Enable Script Event`.
- **Nine new settings**, all Off or empty: `Activation/Detect NPCs` and the eight `Arrival/` settings. Until you use them, the script behaves as V1.4.0 (no sound, no event), with one difference: NPCs are no longer greeted or announced (see "NPCs").
- As with any update, take a screenshot of the Build panel first, update one object and check that its settings are still there before doing the others.

### Updating from V1.3.8

- **Your values carry over**: the settings keep their internal names, only their labels change (for example `UserBlockFirst` is now `Help/Help Block First`). Take a screenshot of the Build panel first, update one object and check that its settings are still there.
- **Whisper mode**: the cooldown is now per avatar. In V1.3.8, one visitor's request blocked everybody else for the whole delay, without a word.
- **Cooldown Notice** is On by default: a refused request now gets a private "please wait" message. Turn `Activation/Cooldown Notice` Off to keep the V1.3.8 silence.
- **Cooldown Seconds** now stops at 86400 (24 hours): a larger value counts as 24 hours.
- **Twelve new settings** since V1.3.8: `Activation/Cooldown Notice`, `Activation/Cooldown Notice Text`, `Activation/Detect NPCs`, `Debug/Debug Logging` and the eight `Arrival/` settings, all at their defaults. The others are the same as in V1.3.8. NPCs are no longer greeted (see "NPCs").

---

## Recipes

**A - A help command for everyone.** Defaults are enough: add the script to any object, paste your own commands in `Help/Help Block`.

**B - A private help for each visitor.** `Help/Whisper To Sender Only` On. Each visitor who types the command gets the help in private; the chat stays clean for the others.

**C - A "Help" button.** Put an MPP - Action Button on a panel: `Send as Command` On, `Command 1` = `show_commands_help`. With `Whisper To Sender Only` On, the help goes to the avatar who clicked.

**D - Your own commands only.** `Help/Show Default Help` Off, your text in `Help/Help Block`. Useful for a game, a roleplay or a shop with its own chat commands.

**E - Welcome visitors by name.** `Join Greeting/Enable Greeting` On, `Include Name` On, and for example `Join Greeting/Message` = `Welcome {name}! Type {trigger} for the scene commands.` Set `Cooldown Minutes` to 0 to greet every arrival, or keep 10 in a busy hub.

**F - Separate help texts for visitors and staff.** Visitor copy: `/CommandsHelp`, `Help/Show Default Help` Off, and your visitor commands in `Help/Help Block`. Staff copy: `Activation/Chat Command` = `/AdminHelp`, `Show Default Help` On (the Sansar `%%` commands), your staff notes in its Help Block, `Whisper To Sender Only` On. Give it another `Activation/Script Event Name`, or turn its `Activation/Enable Script Event` Off, so that a help button does not show both. The command is not restricted: a visitor who types `/AdminHelp` receives that help in private too.

**G - A chime when someone arrives.** Pick a sound in `Arrival/Arrival Sound`, put the object near the spawn point (or turn `Sound Everywhere` On). Keep `Sound Min Interval Seconds` at 2 so a group arriving together rings once.

**H - Lamps that light up for your visitors.** `Arrival/Send Arrival Event` On with `Arrival Event Name` = `mpp_lamp_all_on`, `Send Departure Event` On with `Departure Event Name` = `mpp_lamp_all_off`, and MPP - Light Switch on the lamps (`Events/Enable Script Events` On, prefix `mpp_lamp`). The lamps switch on when someone enters and off when they leave.

**I - Your own script reacts to arrivals.** Keep the default names (`mpp_avatar_arrived`, `mpp_avatar_left`) and subscribe to them in your script: the event data holds the avatar UUID in `ActivatorAvatarUuid`, like an Action Button click.

---

## Troubleshooting

| Symptom | Check |
|---|---|
| Nothing happens when I type the command | Typed alone in **Nearby** Chat, with nothing else in the line? Same spelling as `Activation/Chat Command` (case does not matter)? `Show Default Help` Off with an empty Help Block shows nothing |
| "You can ask again in..." | The cooldown is running. In broadcast mode, the help was just posted in the chat for everyone: scroll up. Lower `Activation/Cooldown Seconds` if needed |
| The help button does nothing | On the Action Button: `Send as Command` On and the same event name as `Activation/Script Event Name` (`show_commands_help`)? `Activation/Enable Script Event` On? |
| Whisper mode: the button or my script shows nothing | The event must say which avatar asked (an Action Button does). Otherwise use broadcast mode |
| The help is cut into several messages | `Send As Single Message` On and a part longer than `Max Characters Per Message`: normal, the chat has a length limit |
| No greeting for some arrivals | `Join Greeting/Cooldown Minutes`: one greeting per delay for the whole scene. Set it to 0 to greet everyone |
| The greeting shows no name or handle | The matching `Include` switch must be On, even when the message contains `{name}` or `{handle}`. If the message contains one of these two tokens, write the other one too, or it is not shown |
| No arrival sound | A sound chosen in `Arrival/Arrival Sound`? `Sound Volume` above 0? Two arrivals within `Sound Min Interval Seconds` give one sound. The arriving avatar may not hear it (client still loading): check with an avatar already in the scene. Too faint: move the object near the spawn point, raise the volume, or turn `Sound Everywhere` On |
| The arrival event does nothing | `Arrival/Send Arrival Event` On, and the name matches exactly what the other script listens to (a Light Switch: `mpp_lamp_all_on` with `Events/Enable Script Events` On)? An empty name sends nothing (warning at start) |
| The departure event has no avatar UUID | The avatar could not be read at its arrival (or at scene start): the event is still posted, with an empty UUID |
| The greeter announces my NPCs when the scene starts | `Activation/Detect NPCs` must be Off (the default since V1.5.2). NPCs are recognized by their `npc-` handle: turn `Debug/Debug Logging` On to see them ignored in the script console |
| I want my NPCs to be greeted or announced | Turn `Activation/Detect NPCs` On |
| Settings look different after updating the script | Only the labels changed; the values stay (see "Updating from V1.4.0") |
| I want to know what the script does | Turn `Debug/Debug Logging` On and open the script console: every request, greeting, sound and event is written there |

---

## Limits

- The help is posted in **Nearby Chat**: visitors see it in their chat window.
- The greeting is always posted for everyone; it cannot be private.
- The greeting cooldown, the arrival sound interval and, in broadcast mode, the help cooldown are shared by the whole scene.
- The arrival sound and the events fire the moment the avatar enters, while their own client may still be loading: a sound or a private message aimed at the arriving avatar can be missed by them. Everyone else gets them.
- NPCs are recognized by their handle (`npc-` followed by 32 characters), the only sign Sansar gives scripts. If Sansar changed that format, NPCs would count as visitors again until the script is updated.
- Some of the Sansar `%%` commands of the built-in help only work for the scene's owner and the roles they grant; the list is shown to everyone.

---

## Related MPP Items

| Item | What it adds |
|---|---|
| **Action Button Script** (V1.7.1) | Turn any object into a "Help" button that shows this help with `Send as Command`. Store: https://www.sansar.com/store/listings/3e1a3546-6c79-4527-bc1e-78d02648d19e/action-button-script |
| **Light Switch Script** (V1.5.3) | Lamps switched by click, chat or script events, including the arrival and departure events of this script; list its `/lamp` commands in your Help Block. Store: https://www.sansar.com/store/listings/7379d48c-2b6f-45f6-b6f1-205ce95aec1c/light-switch-script |

---

*MPP - My Pretty Pixels. Commands Help On Chat Script V1.5.2 (script `MPP - Commands Help On Chat`). Store: https://www.sansar.com/store/listings/fea2df6b-21ce-48eb-94fc-4b7a7aad2777/commands-help-on-chat-script*
