DUXPLIMA Documentation

Settings

The eight config files, the global switches, and the on-screen text.

The config files

FileHolds
Shared/Config/Settings.luauThe switches on this page
Shared/Config/Teams.luauThe officer and target matrix
Shared/Config/FreeForAll.luauThe no-teams alternative
Shared/Config/Actions.luauKeybinds, speeds, cooldowns
Shared/Config/Jail.luauLeave protection and fallback teams
Shared/Config/Admin.luauStaff and chat commands
Shared/Config/Golden.luauThe carry tool
Shared/Config/Localization.luauEvery string players see
Server/Config/Webhook.luauThe arrest log. Server side on purpose

Settings

FieldDefaultWhat it does
DebugfalseExtra [uxrHS] lines in Output
StudioMode"auto"Whether jail time saves. See below
DataStoreName"uxrHS_Jail_v2"Where jail data is stored
HandcuffToolName"Handcuff"The exact Tool name officers must hold
DisableComputerMobileUIfalseHide the on-screen button bar on computers

StudioMode

ValueBehaviour
"auto"Saves in a published game, fresh slate every Studio run
falseAlways saves. Needs API services enabled in Game Settings
trueNever saves

"auto" is the right default for building: you can arrest yourself repeatedly without an old sentence following you into the next test.

Switch to false only when you specifically want to test persistence in Studio.

DataStoreName

DataStoreName = "uxrHS_Jail_v2",

Changing it to a new name wipes everybody's jail data, which is a legitimate way to give your game a clean slate after a rules change.

Two places sharing a name share sentences, so a player jailed in your main game is still jailed when they enter your lobby, if the lobby also runs this system.

The tool name

HandcuffToolName = "Handcuff",

Matched letter for letter, capitals included. It is checked on the server for every action, so renaming the tool without renaming this setting disables the whole system quietly.

The on-screen button bar

DisableComputerMobileUI = false,

The name is precise: it hides the button bar on computers. Touch devices always see it, because on a phone it is the only way to act.

ValueComputerPhone
falseShownShown
trueHiddenShown

Set it to true if your officers prefer the keyboard and the bar is in the way. The billboard above the suspect's head is unaffected either way.

Localization

Config/Localization.luau holds every string a player reads. Translate the values; never rename the keys.

GroupContains
Top levelNone, EmptyReason, NoPermission
Jail HUDTimeRemaining, TimesUp, ArrestingOfficer, Infractions
ReasonsThe refusal messages, keyed by reason code
TimeFormatThe countdown units

Tokens

Some strings contain $Tokens replaced at runtime:

TokenBecomes
$TimeThe remaining sentence, formatted
$OfficerNameWho made the arrest
$InfractionsThe charge list
$PriceA developer product's live Robux price, in bail labels

Move a token around the sentence freely. Renaming or deleting one leaves the literal text on screen.

Time format

TimeFormat = { Day = "d ", Hour = "h ", Minute = "m ", Second = "s " },

Change the letters to translate. Keep the trailing spaces, or the countdown reads 1h5m3s.

Reason codes

Every refusal returns a code, and the code is looked up here for the message:

CodeDefault
NoPermissionNo permission
NoToolNo such tool
NeedToolHold your handcuffs first
BadStateYou can't do that right now
BadTargetInvalid target
BadTimeInvalid jail time
ReasonTooShortReason is too short
ReasonTooLongReason is too long
TooFarToo far away
CooldownPlease wait a moment
NotOwnedNot your suspect
StillJailedStill serving your sentence
NotJailedNot jailed
NoProfileData not loaded yet
NoBailBail isn't available
InsufficientNot enough money
TargetNotFoundPlayer not found
AmbiguousNameName matches several players

NotOwned is the one worth rewording for your game: it means somebody else has already cuffed that person, which Not your suspect says clearly enough for a police game and less clearly for anything else.

The interface

The client GUI is uxrHandcuffSystemGui in StarterGui. Its top-level frames:

FramePurpose
MobileFrame.ListFrameThe on-screen action bar
ArrestFrameThe arrest form
InfractionsFrameThe charge picker
SearchFrameThe confiscated item list
ArrestInfoFrameThe jailed player's HUD and bail buttons

Plus two billboards cloned onto every character: HandcuffBillboard on the root part, and HeadBillboard on the head.

Restyle any of them. The instance names are looked up individually and a missing one is skipped rather than erroring, which means a renamed label shows up as a quietly missing piece of text rather than a crash.

Where to start

You wantEdit
Different teamsConfig/Teams.luau
No teams at allConfig/FreeForAll.luau, set Enabled = true
Different keysConfig/Actions.luau
Longer sentencesMaxJailTime on each team pair
Staff powersConfig/Admin.luau
Another languageConfig/Localization.luau
An arrest logServer/Config/Webhook.luau