UODiamondCodex

Shout System

A server-wide global chat channel with a cooldown, per-player opt-out, region and ban restrictions, plus a separate staff-only channel. Source: UOD - System Shout.scp.

How it works

Shouting — FUNCTION shout (invoked via .sh <text>):

  • Blocked if the player has tag.shout_ban==1 (shout-banned).
  • Blocked in any region whose name matches *jail* (unless GM) or The Maze.
  • Strips accented/non-unicode characters via NOACCENTS.
  • Staff (account.plevel > 1) shout with no cooldown; their message is broadcast to all clients as [Staff] <name> shouts: ....
  • Players are rate-limited by the equipped timer item i_shout_memory (10-second cooldown). On a successful shout the message is broadcast to every client via show_shout, and a new i_shout_memory is equipped.

Receivingshow_shout prints the shout to each client unless that client has tag.shoutoff set, so players can mute the channel.

Staff channel — FUNCTION staff sends <args> to all clients through f_staff, which only displays it to accounts with plevel > 1 ([STAFF] <name> to staff: ...).

Commands / player-facing usage

Command Effect
.sh <text> Shout to the whole server (FUNCTION shshout)
.shouton Turn shout receiving back on (tag.shoutoff=0)
.shoutoff Mute the shout channel (tag.shoutoff=1)
staff <text> Staff-only broadcast (only plevel > 1 see it)

Key definitions

DEFNAME Role
shout Core shout logic (ban/region/cooldown checks + broadcast)
sh Short alias that calls shout
show_shout Per-client display respecting tag.shoutoff
i_shout_memory 10-second equipped cooldown timer
staff / f_staff Staff-only broadcast channel
tag.shout_ban Per-player flag disabling shouting
tag.shoutoff Per-player flag muting incoming shouts

Note: Colours come from def.sysshout, def.syschat, and def.sysgm. The player-branch code checks region The Maze for shouting; regions like Jail are matched case-insensitively.