Skip to content

Install

Every folder in the model is named after the service its contents belong in. Drag the contents across, then delete the empty wrapper folder.

Folder Goes into Contains
ReplicatedStorage ReplicatedStorage RadioSystem: RadioConfig, Remotes
ServerScriptService ServerScriptService RadioServer (RadioClient, Assets and Modules hang off it)
ServerStorage ServerStorage RadioSystem: RadioAPI, Samples
StarterPack StarterPack Radio, the Tool
StarterPlayer StarterPlayer StarterPlayerScripts: RadioInterface, RadioAudio, RadioHandset, RadioAnimate
Workspace Workspace ChannelMonitor, a test speaker (optional)

Nothing can come apart

RadioClient, Assets and Modules are children of the RadioServer script, so moving or ungrouping it cannot separate it from what it needs. The same is true of RadioHandset: HandsetTemplate, UI, Icons, IconData, Menus and Settings are its children.

Setup checklist

Tick these off as you go. Your progress is saved in this browser.

  • Move each folder's contents into its service, using the table above
  • Delete the empty wrapper folders
  • Turn on Allow HTTP Requests (Game Settings → Security)
  • Press Play and read the boot report in Output. modules: should list TrafficLog, Roles, Coverage, Checkout, Safety, AlarmBridge, Paging, Console, Captions, Preferences, Handset, API.
  • Hold Left Ctrl and talk
  • Publish the talk animation (below)

Publishing the talk animation

The radio raises to the player's mouth while they transmit. Roblox will not play an animation in a live server unless it has been published to your own account, so this one step is yours.

  1. Insert R7 Talk Animations.rbxmx (supplied alongside the model) into Workspace. It contains two clips, TalkR6 and TalkR15.
  2. Build a rig: Avatar → Rig Builder → R6, then again for R15.
  3. Drop the matching clip into a folder named AnimSaves inside the rig.
  4. Select the rig, open the Animation Editor, and load the clip from the editor's folder list.
  5. ⋯ → Publish to Roblox, then copy the asset ID.
  6. Paste both IDs into RadioConfig:
Config.Animations = {
    Enabled = true,
    TalkR6  = "rbxassetid://0000000000",   -- your published R6 clip
    TalkR15 = "rbxassetid://0000000000",   -- your published R15 clip
    FadeSeconds = 0.2,
    OnlyInHand = true,
}

Skipping this is safe

Leave the IDs empty and the animation plays in Studio only. A live server warns once in Output and skips it. Nothing else is affected.