In-Game Logging
A set of Lua scripts run inside your Roblox game and talk to the dashboard: logging joins, leaves and gameplay, screening new accounts, and running lockdowns and events triggered from the moderator panel.
Setup
- Get the scripts. Open a Support ticket and ask for the SCP:RP in-game scripts. Staff send you the current version of each one.
- Generate an ingest key. Settings → Game Join Logs → Generate Key. It is shown exactly once — copy it now.
- Copy the three constants the same panel shows you: the dashboard URL, your guild ID, and the key.
- Paste them into the top of each script you use, replacing the placeholders.
- Paste each script into SCP:RP's Server Addons as its own addon, exactly as you received it.
The dashboard URL must be reachable from the public internet. These scripts run on Roblox's servers, not on your machine — localhost and private network addresses will never work. If your dashboard is only reachable over a private network, in-game logging cannot reach it.
The ingest key is a credential. Anyone holding it can post fake join, leave and gameplay events into your logs. Never commit it to a repository, paste it in a public channel, or leave it in a screenshot. If it leaks, regenerate it and update your scripts.
The scripts
| Script | What it does |
|---|---|
logger | Every in-game log in one addon: joins, leaves, kills, deaths, spawns, team changes, tool use, interactions and light switches. Joins are screened for account age: under 7 days is logged and kicked automatically, under 30 days is flagged for review, older is cleared. Both thresholds are constants at the top of the file. In-game chat is no longer logged, because SCP:RP stopped giving addons access to it on 31 October 2026. |
lockdown-controller | Runs the lockdown protocols — sounds, lighting, banners and PA announcements. Each protocol is fetched whole from the dashboard, tracks and holds included, and picks up renames and edits on its next poll, within a few seconds. Also sends the session heartbeat. |
event-controller | Runs pre-made site events. Sequences are fetched from the dashboard at boot rather than living in the file. |
system-controller | Runs System Events — typed announcements and scripted sequences from the toolbox, composed on the dashboard. Separate from the event controller, so a typed announcement can talk over a running event. Stop in the toolbox cuts a sequence short and resets the lighting. |
The logger kicks people automatically. Accounts under 7 days old are removed as they join, with no staff confirmation. This is an anti-raid measure and it will catch genuine new players. Raise or lower MINIMUM_ACCOUNT_AGE to suit your community, or set it to 0 to log without kicking.
Live session feed in Discord
Management → Settings → Live Session Feed posts a status message in a channel you pick and keeps editing it as the game reports in: status, players and how full the server is, the session's peak, uptime, the active lockdown protocol and site event, staff on duty, the session poll and the game server itself. It needs the logger or a controller running, because those send the heartbeat.
It can also rename a channel to show the status — 🖥️ | Game Server: {dot} {status} reads
🖥️ | Game Server: 🔴 Offline until the game comes online. {players} and {max}
work too. Use a voice channel if you want capitals and spaces.
The channel name lags behind the message. Discord lets a bot rename a channel only twice every ten minutes, so the name changes at most every five and a half minutes. The message updates within about 20 seconds.
Who can trigger what
- Lockdowns —
events.protocols, Manage Server, or staff-level access. See Lockdown Protocols. - Events —
events.trigger, Manage Server, or staff-level access. See Site Events. - Renaming either —
events.designations, the Head Event Host's grant.
In game, staff open :addoncommands, where the event and lockdown controllers add a button for
every event and protocol; Stand down: all clear stands everything down. Each press goes to the
dashboard, which checks it against your permits through Bloxlink and against the lists under
Management → Settings → In-game Commands, where the owner can allow specific
Roblox or Discord users. Anyone else gets an alert in game, and every use is written to the audit log.
Triggers have cooldowns. One person waits 20 seconds between lockdowns or events, and the same one cannot run again for a minute. System Events announcements wait 10 and 30 seconds. Stop-all and the all-clear are never held up by the per-person wait.
Commands travel as action names, never as raw command strings. Each queued command is drained exactly once, so multiple game servers polling at the same time cannot double-run one. Anything not collected within 60 seconds expires.
Known issues
Paste the scripts as you received them. Every addon must stay under 16 KiB — Roblox's script box truncates a longer paste silently, and the symptom is a script that loads but never polls.