BasePart or Model once - at startup or whenever the feature initializes - and Trace handles the per-player exemption logic for you. As soon as a player enters the zone, the configured checks are suspended; as soon as they leave, the exceptions are removed. You do not need to track players yourself.
Common use cases include launch pads, speed booster pads, vehicle tracks, conveyor belts, and any scripted area where the anticheat would otherwise detect elevated speed or unexpected position changes.
RegisterMovementZone
Register a Workspace part or model as a movement zone.Signature
Parameters
BasePart | Model
required
The part or model in Workspace that defines the zone boundary. Zone detection uses the oriented
bounding box of the instance, so rotated parts and models work correctly without any extra
configuration. For
Model instances, Trace uses the complete model bounding box.table
required
Configuration for the zone. All fields within the table are optional.
string?
A stable identifier for the zone. Use this to reference the zone later with
SetMovementZoneEnabled, UnregisterMovementZone, or other management calls. If omitted,
Trace generates a unique ID automatically and returns it.string?
A human-readable description of the zone. Written to Trace’s moderation logs.
{string}?
The anticheat checks to suspend for players inside the zone. Valid values are
"Teleport",
"Velocity", "Fling", "Fly", and "Noclip". Omit to suspend all five checks.number?
Seconds to keep exceptions active after a player leaves the zone boundary. Use this for launch
pads or any zone where the movement effect (an upward velocity, for example) continues after
the player is physically outside the area.
number?
Studs to expand every side of the zone bounding box. Useful when the visible part is slightly
smaller than the area you want to protect, or to give players a small buffer near the edges.
Returns
string?
The identifier for the registered zone - either the
Id you provided or a generated one. Store
this value if you need to manage the zone later. Returns nil on failure.string?
A description of what went wrong. Only present when
zoneId is nil.Example
If the registered part or model is destroyed or removed from Workspace, Trace automatically
unregisters the zone. You do not need to call
UnregisterMovementZone in a Destroying
connection, though doing so is harmless.Zone management functions
SetMovementZoneEnabled
Temporarily disable or re-enable a zone without unregistering it. Disabled zones do not grant exceptions to players inside them.Signature
Parameters
string | BasePart | Model
required
The zone to target. Pass the
zoneId string returned by RegisterMovementZone, or the
original BasePart or Model instance used when the zone was registered.boolean
required
true to enable the zone; false to disable it.Returns
boolean
true if the zone was found and its state updated successfully.Example
UnregisterMovementZone
Permanently remove a zone. Players currently inside the zone immediately lose their zone-based exceptions.Signature
Parameters
string | BasePart | Model
required
The zone to remove. Pass the
zoneId string returned by RegisterMovementZone, or the
original BasePart or Model instance used when the zone was registered.Returns
boolean
true if the zone was found and successfully removed.Example
GetMovementZones
Return a list of summaries for all currently registered zones. Useful for debugging or building admin tooling.Signature
Returns
{table}
An array of zone summary tables, one entry per registered zone. Each summary includes at
minimum the zone’s
Id and Enabled state.