Character Scale Menu
Usage / Exports
Usage / Exports
suty-scalemenu exposes both scale-management exports for external scripts AND scale natives for advanced integration. Most users won't need to call these — the in-game NPC and admin commands cover the standard flows.
Common exports
-- Get the player's current scale
local scale = exports['suty-scalemenu']:GetMyScale()
-- Set your own scale (subject to permission checks)
exports['suty-scalemenu']:SetMyScale(0.85)
-- Server-side: set any player's scale
exports['suty-scalemenu']:SetPlayerScale(targetSrc, 0.85)
-- Check if a player has bypass
local hasBypass = exports['suty-scalemenu']:HasBypass(targetSrc)
-- Grant / revoke bypass per player
exports['suty-scalemenu']:GrantBypass(targetSrc)
exports['suty-scalemenu']:RevokeBypass(targetSrc)
Integration hooks
If your custom script needs to temporarily reset a player's scale (e.g. a custom barber chair animation that needs default ped size):
exports['suty-scalemenu']:ForceDefaultScale(targetSrc, true)
-- ... do animation ...
exports['suty-scalemenu']:ForceDefaultScale(targetSrc, false)
The script's own ScaleResetZones feature uses this internally for barber chairs.
State bags
The current effective scale is published via player state-bag:
local scale = Player(serverId).state.scale
Read-only — to change it, use the exports above (the server-side write also handles persistence + sync).
When to use exports vs commands
| Use case | Use |
|---|---|
| Player-driven UI in your own script | Exports |
| Admin action / debugging | /scalemenu /scaleset |
| Temporary disable for an anim | ForceDefaultScale export |
| Reading current scale (read-only) | State-bag |
