> For the complete documentation index, see [llms.txt](https://documentation.rcore.cz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.rcore.cz/paid-resources/rcore_clothing/integration/wais_multichar.md).

# wais\_multichar

Integration guide for `wais_multichar`.

***

## Step 1 - Config: detection

Open the wais multichar config and find:

```lua
Config.Skinchanger =
Config.Appearance =
```

Replace both lines with:

```lua
Config.Skinchanger = GetResourceState('skinchanger') == 'started' and GetResourceState('illenium-appearance') ~= "started" and GetResourceState('fivem-appearance') ~= "started" and GetResourceState('rcore_clothing') ~= "started" and true or false or false or false or false
Config.Appearance = GetResourceState('rcore_clothing') == 'started' and 'rcore_clothing' or GetResourceState('illenium-appearance') == 'started' and 'illenium-appearance' or GetResourceState('fivem-appearance') == 'started' and 'fivem-appearance' or GetResourceState('codem-appearance') == 'started' and 'codem-appearance' or false
```

***

## Step 2 - Server: get skin

Find `Config.GetPlayerSkin = function(requiredId, cb)` and replace it with:

```lua
Config.GetPlayerSkin = function(requiredId, cb)
    if GetResourceState('rcore_clothing') == 'started' then
        local skinData = exports["rcore_clothing"]:getSkinByIdentifier(requiredId)
        if skinData then
            cb(skinData.ped_model, skinData.skin)
        else
            cb(nil)
        end
        return
    end
```

***

## Step 3 - Client: set ped clothing

Find `Config.SetPedClothing = function(ped, skin)` and replace it with:

```lua
Config.SetPedClothing = function(ped, skin)
    if GetResourceState('rcore_clothing') == 'started' then
        exports['rcore_clothing']:setPedSkin(ped, skin)
        return
    end
```

***

## Step 4 - Client: character creator

Find this code block inside `Config.CreatedNewCharacter` (\~line 280):

```lua
            if GetResourceState('vms_charcreator') == 'started' then
                TriggerEvent('vms_charcreator:openCreator')
            end
        elseif Config.Appearance then
            TriggerEvent("esx_skin:openSaveableMenu", function() end, function() end)
        end
    elseif Config.Framework.Framework == "qbcore" then
        if GetResourceState('vms_charcreator') == 'started' then
            TriggerEvent('vms_charcreator:openCreator')
        end
```

Replace with:

```lua
            if GetResourceState('rcore_clothing') == 'started' then
                TriggerEvent('rcore_clothing:esx:charcreator')
            elseif GetResourceState('vms_charcreator') == 'started' then
                TriggerEvent('vms_charcreator:openCreator')
            end
        elseif Config.Appearance then
            TriggerEvent("esx_skin:openSaveableMenu", function() end, function() end)
        end
    elseif Config.Framework.Framework == "qbcore" then
        if GetResourceState('rcore_clothing') == 'started' then
            TriggerEvent('rcore_clothing:qb:charcreator')
        elseif GetResourceState('vms_charcreator') == 'started' then
            TriggerEvent('vms_charcreator:openCreator')
        end
```

***

## Step 5 - Client: character selected

Find:

```lua
Config.CharacterSelected = function(charid, skinData)
    SetEntityVisible(PlayerPedId(), true)

    if Config.Appearance then
        exports[Config.Appearance]:setPedAppearance(PlayerPedId(), skinData.skin)
```

Replace with:

```lua
Config.CharacterSelected = function(charid, skinData)
    SetEntityVisible(PlayerPedId(), true)

    if Config.Appearance then
        if GetResourceState('rcore_clothing') == 'started' then
            exports['rcore_clothing']:setPedSkin(PlayerPedId(), skinData.skin)
        else
            exports[Config.Appearance]:setPedAppearance(PlayerPedId(), skinData.skin)
        end
```
