An enhanced version of the built-in Dresser component. Works with both citizens and humans, built-in and custom player controllers.

📣 Features

Body attributes networked and updated in real time across all clients
Clothing sources are now easier to grasp for beginners
A new hybrid (Manual & OwnerUser at the same time) clothing source
Parallel workshop clothing loading


Clothing Sources
  • Manual - Dress using hand-picked built-in clothing items or clothing straight from the workshop
  • LocalUser - Each client sees their own avatar; you can change your avatar in s&box's main menu
  • OwnerUser - All clients see the network owner's avatar of the GameObject where Dresser+ is attached
  • Hybrid - Start from the network owner's avatar, strip selected clothing categories, and add hand-picked clothing on top
Hybrid Source
  1. Set Source to Hybrid
  2. Add categories to StrippedCategories (e.g. Hat, Jacket, Skin) to remove those slots from the owner's outfit
  3. Add your own items to Clothing or WorkshopClothing to dress your client specific clothes
Extremely useful for gamemodes where players keep their identity but wear role-specific equipment, like uniforms or team gear.

Body Attributes
  • ManualHeight - Body height scale
  • ManualAge - Skin aging intensity (smooth to wrinkled) - ONLY ON CITIZENS
  • ManualTint - Skin color along the tint spectrum - ONLY ON CITIZENS
Editable in Manual and Hybrid modes. Changes are synced and propagate immediately via OnManualChange.

Workshop Clothing
  • Retrieves clothing from workshop packages using their identifiers
  • Fetched and mounted asynchronously at dress time
Editable in Manual and Hybrid modes. A warning will be logged if the package could not be fetched or mounted.


📖 Installation

  • Install the DresserPlus library straight from your Library Manager in your s&box editor
       OR
  • Download the DresserPlus.cs C# script and move it to your project's Code/ folder
Once you've done either one of those, add the Dresser Plus component to a GameObject with a Citizen or Human body.
Set the
BodyTarget to the body's SkinnedModelRenderer (auto-detected from children if left empty), pick a clothing source, and you're done.


🛜 API

// Apply with current settings
await dresser.Apply();

// Apply with new clothing items (e.g. to set different clothes depending on a var in your code)
await dresser.Apply( myClothingList );

// Strip all clothing and reset body attributes
dresser.Clear();

// Cancel an in-progress async dressing operation
dresser.CancelDressing();

// Check if currently dressing
if ( dresser.IsDressing ) { /* ... */ }

⚙️ Properties

  • BodyTarget - The SkinnedModelRenderer of the body to dress (auto-detected if empty)
  • Source - Which clothing source to use
  • RemoveUnownedItems - Strip items not in the owner's Steam Inventory (OwnerUser/Hybrid only)
  • ApplyHeightScale - Whether height scaling is active
  • ManualHeight - Body height scale, 0.5 to 1.5 (Manual/Hybrid only)
  • ManualAge - Skin aging, 0 to 1 (Manual/Hybrid only)
  • ManualTint - Skin color blend, 0 to 1 (Manual/Hybrid only)
  • Clothing - List of clothing entries (Manual/Hybrid only)
  • WorkshopClothing - Workshop package identifiers to fetch (Manual/Hybrid only)
  • StrippedCategories - Clothing categories to remove from the owner's avatar (Hybrid only)

📄 Source Code

GitHub
GitHub - noxtgm/dresser-plus: An enhanced version of the citizen and human dresser component.
An enhanced version of the citizen and human dresser component. - noxtgm/dresser-plus