I'm just going to post about this because it's a pretty common question and I figured it may be worth covering how to work with the natives that effect character appearances. As well as how to apply those specific values.

Loading Freemode Models Client Side

There are two types of models that you should load on connection complete. Here is the code that I use on client-side to simply load these models.

alt.on('connectionComplete', () => {
	alt.loadModel('mp_f_freemode_01');
	alt.loadModel('mp_m_freemode_01');
});
How to load free-mode models on client-side.

Adjusting Server Side Player Model

After loading these models you need to set the player model on server-side to either one of these specific models.

This can be done by adjusting the Player's model property.

player.model = `mp_f_freemode_01`;
How to set a player model on server-side.

Adjusting Face Features Client Side

Face Values

The face values can only be set when you set all pedHeadBlendData to zero first. After setting the headBlendData to zero you can apply different face combinations.

native.setPedHeadBlendData(scriptIDOfPed, 0, 0, 0, 0, 0, 0, 0, 0, 0, false);
Setting Ped Face Values to Zero

After setting this value you can then apply a mixture of faces to obtain the face you want in-game. Valid face and skin values range from 0-45. While the blend data is -1 to 1.

Here's a list of all the arguments for the above function in order.

ped_number
shapeFirstID_number
shapeSecondID_number
0
skinFirstID_number
skinSecondID_number
0
blendShapeMix_number
blendSkinMix_number
0
false
setPedHeadBlendData Parameters

Hairstyles, Colors, etc.

Hair is a combination of a head overlay or a tattoo and multiple natives.

Here's a list of all head overlays / tattoos for player hair styles.

GTA:V Hair Overlay Values
GTA:V Hair Overlay Values. GitHub Gist: instantly share code, notes, and snippets.

Here is an additional list where I physically named all of the hairstyles and color names but they are not correct by any means.

GTA:V Incorrect Hairstyle Names and Colors
GTA:V Incorrect Hairstyle Names and Colors. GitHub Gist: instantly share code, notes, and snippets.

Apply Hair Styles

You can apply hairstyles by using setPedComponentVariation.

native.setPedComponentVariation(scriptIDOfPed, 2, hairIndex, hairTexture, 0);

Applying Hair Color

Hair color has its very own native. Which can be accessed with setPedHairColor.

I recommend colors 0-63.

native.setPedHairColor(scriptIDOfPed, color1, color2);

Applying Hair Overlay for Proper Skin Under Hair

One thing a lot of server owners often overlook in their code is the head overlays for tattoos and such. It's very important that you apply these as they'll give hair the look it deserves.

Please note that you must use getHashKey on both collection and overlay strings.

native.addPedDecorationFromHashes(pedOrPlayer, collection, overlay);

Eyes

Eyes are actually really easy to adjust. It actually has its very own natived.

native.setPedEyeColor(pedOrPlayer, colorIndex);

Face Structure

Structure has to do with applying slight tweaks to the player's overall face appearance. For example if you want a slightly turned up nose this is where you would adjust that.

Here's a list of Face Structures with IDs

GTA:V Face Structure List
GTA:V Face Structure List. GitHub Gist: instantly share code, notes, and snippets.

What I do is keep all of the values in an array when it's ready to be applied. Here's an example of how to use the Face Feature native to apply changes.

native.setPedFaceFeature(pedOrPlayer, structure.id, structure.value);

It's pretty simple. Make sure to keep your values between -1 and 1. Anything below or above those values will result in non-synced player changes.

Makeup, Facial Hair, etc.

These can all be done through setPedHeadOverlay. This specific native will let you apply various features from makeup, facial hair, blemishes, etc.

Here's a full list of overlays with their minimum and maximum values.

GTA:V Ped Head Overlays
GTA:V Ped Head Overlays. GitHub Gist: instantly share code, notes, and snippets.

These can be applied with the following native:

 native.setPedHeadOverlay(pedOrPlayer, overlayID, overlayIndex, opacity);
 native.setPedHeadOverlayColor(pedOrPlayer, overlayID, 2, color1, color2);

Tattoos

Tattoos are the final bit of information for character editing. These are done similar to the hair overlays. I recommend applying tattoos last. All collection and overlay names must use getHashKey to be applied correctly.

native.addPedDecorationFromHashes(pedOrPlayer, collection, overlay);

Here's a list of all tattoos

GTA:V Tattoos List
GTA:V Tattoos List. GitHub Gist: instantly share code, notes, and snippets.