# Installation

## 1. Log in to your keymaster account

Connect via this site: <https://keymaster.fivem.net/> with your CFX account to which your purchase was made on the store <https://www.var-fivem.com/>

## 2. Download resource

<figure><img src="/files/MHam34YMy9E6VoyfnB3Q" alt=""><figcaption><p>Go to the Granted Assets category and download the most recent version of the Creator </p></figcaption></figure>

## 3. Edit the scripts to align with the standard core resources

{% tabs %}
{% tab title="ESX" %}

## @esx\_skin &#x20;

If you not using multicharacter and using esx\_skin you need change this

* Open **@esx\_skin/client/main.lua**
* Replace `TriggerEvent("skinchanger:loadSkin", { sex = 0 }, OpenSaveableMenu)` with `TriggerEvent('Creator:Init')`

## @esx\_identity&#x20;

* Perform the same modification in **@esx\_identity/server/main.lua**
* Locate the lines `TriggerClientEvent("esx_identity:showRegisterIdentity", xPlayer.source)`  and replace it with `TriggerClientEvent('Creator:Init', xPlayer.source)`&#x20;

## @esx\_multicharacter

*<mark style="color:green;">If you using multicharacter you need to change only this</mark>*

1. Open **@esx\_multicharacter/client/main.lua**
2. Search `esx:playerLoaded` event and replace it with the code below
3. Search all trigger `TriggerEvent("esx_identity:showRegisterIdentity")`
4. Replace it by `TriggerEvent("Creator:Init")`

```lua
RegisterNetEvent('esx:playerLoaded')
AddEventHandler('esx:playerLoaded', function(playerData, isNew, skin)
	local spawn = playerData.coords or Config.Spawn
	if isNew or not skin or #skin == 1 then
		skin = Config.Default[playerData.sex]
		skin.sex = playerData.sex == "m" and 0 or 1
		local model = skin.sex == 0 and mp_m_freemode_01 or mp_f_freemode_01
		RequestModel(model)
		while not HasModelLoaded(model) do
			RequestModel(model)
			Wait(0)
		end
		SetPlayerModel(PlayerId(), model)
		ResetEntityAlpha(PlayerPedId())
		SetModelAsNoLongerNeeded(model)
		TriggerEvent('skinchanger:loadSkin', skin, function()
			ResetEntityAlpha(PlayerPedId())
			SetPedAoBlobRendering(PlayerPedId(), true)
			TriggerEvent("Creator:Init")
		end)
	end
	if not isNew then
		DoScreenFadeOut(100)
	end
	SetCamActive(cam, false)
	RenderScriptCams(false, false, 0, true, true)
	cam = nil
	SetEntityCoordsNoOffset(PlayerPedId(), spawn.x, spawn.y, spawn.z, false, false, false, true)
	SetEntityHeading(PlayerPedId(), spawn.heading)
	if not isNew then 
		TriggerEvent('skinchanger:loadSkin', skin or Characters[spawned].skin) 
		Wait(400)
		DoScreenFadeIn(400)
		repeat Wait(200) until not IsScreenFadedOut()
	end
	TriggerServerEvent('esx:onPlayerSpawn')
	TriggerEvent('esx:onPlayerSpawn')
	TriggerEvent('playerSpawned')
	TriggerEvent('esx:restoreLoadout')
	Characters, hidePlayers = {}, false
end)
```

{% endtab %}

{% tab title="QB-Core" %}

## @qb-multicharacter

If you using qb-multicharacter you need change this

1. Open **@qb-multicharacter/client/main.lua**
2. Add this `NuiCallback` with the other

```lua
-- NUI Callbacks

RegisterNUICallback('Creator:SendToInit', function(data, cb)
    DeleteEntity(charPed)
    SetNuiFocus(false, false)
    DoScreenFadeOut(500)
    TriggerServerEvent('qb-multicharacter:server:createCharacter', data)
    Wait(500)
    TriggerServerEvent('QBCore:Server:OnPlayerLoaded')
    TriggerEvent('QBCore:Client:OnPlayerLoaded')
    Wait(500)
    SetNuiFocus(false, false)
    ShutdownLoadingScreenNui()
    SetEntityVisible(PlayerPedId(), true)
    Wait(500)
    DoScreenFadeIn(250)
    TriggerEvent('qb-weathersync:client:EnableSync')
    TriggerEvent("Creator:Init", data.cid)

    cb("ok")
end)
```

3. Open **@qb-multicharacter/server/main.lua**
4. **Edit** `qb-multicharacter:server:createCharacter` event by

```lua
RegisterNetEvent('qb-multicharacter:server:createCharacter', function(data)
    local src = source
    local newData = {}
    newData.cid = data.cid
    newData.charinfo = data
    if QBCore.Player.Login(src, false, newData) then
        repeat
            Wait(10)
        until hasDonePreloading[src]
        if GetResourceState('qb-apartments') == 'started' and Apartments.Starting then
            local randbucket = (GetPlayerPed(src) .. math.random(1,999))
            SetPlayerRoutingBucket(src, randbucket)
            print('^2[qb-core]^7 '..GetPlayerName(src)..' has successfully loaded!')
            QBCore.Commands.Refresh(src)
            loadHouseData(src)
            TriggerClientEvent("qb-multicharacter:client:closeNUI", src)
            TriggerClientEvent('apartments:client:setupSpawnUI', src, newData)
            GiveStarterItems(src)
        else
            print('^2[qb-core]^7 '..GetPlayerName(src)..' has successfully loaded!')
            QBCore.Commands.Refresh(src)
            loadHouseData(src)
            TriggerClientEvent("qb-multicharacter:client:closeNUIdefault", src)
            QBCore.Player.DeleteCharacter(src, QBCore.Functions.GetPlayer(src).PlayerData.citizenid)
            GiveStarterItems(src)
        end
    end
end)
```

3. Open **@qb-multicharacter/html/index.html**
4. At line **333**, remove this code and replace it with the code below:

```javascript
this.registerData.firstname = undefined
this.registerData.lastname = undefined
this.registerData.nationality = undefined
this.registerData.gender = undefined
this.registerData.date = (new Date(Date.now() - (new Date()).getTimezoneOffset() * 60000)).toISOString().substr(0, 10)

this.show.characters = false
this.show.register = true
```

```javascript
axios.post('https://qb-multicharacter/Creator:SendToInit', { cid: this.selectedCharacter });

this.show.characters = false
```

## @qb-apartaments

* If you have qb-apartments, open the configuration file of this script and set the following

```lua
Apartments.Starting = false
```

{% endtab %}
{% endtabs %}

## 4. Launch your resource

Once the download is complete, unzip the file and drag it into the resources folder of your server.

{% hint style="warning" %}
If you added the resource while your server was already running, remember to do the refresh command and then ensure the resource.
{% endhint %}

```powershell
refresh
```

```
ensure Var-Creator
```

{% hint style="danger" %}
If you have any problem with your player's skin replace your skinchanger if you are on esx with this one
{% endhint %}

{% file src="/files/1edVgOgthwcszK3TIfGh" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.var-fivem.com/character-creator/installation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
