Face Implant & Clinics
On this page9
A face implant is a surgery. New face, new name, new voice — and everybody forgets that character. Money, items and job stay exactly where they were.
The basics
| Key | Default | Allowed | What it does |
|---|---|---|---|
Config.Implant.Enabled | true | true / false | The clinic and the implant exports, on or off. |
Price | 500000 | dollars | Price. A clinic entry or an export call may override it. |
Account | 'bank' | 'bank' · 'cash' · 'bank_or_cash' | Which account pays. bank_or_cash = bank if there is enough, else cash. On ESX, cash means money. |
CooldownDays | 60 | real days | Between two implants of the same character. |
AdminSetsCooldown | false | true / false | Whether an admin identity reset also starts the wait. |
Renaming
| Key | Default | Allowed | What it does |
|---|---|---|---|
Rename | true | true / false | Ask for a new first and last name. Skipped when the framework cannot rename. |
RequireNewName | true | true / false | The new full name must differ from the old one. |
NameRules.MinLength | 2 | characters | |
NameRules.MaxLength | 16 | characters | 16 is the ESX default size of users.firstname / users.lastname. |
NameRules.Pattern | "^[%a][%a '%-]*$" | a Lua pattern | Checked on the server. Letters, space, apostrophe and hyphen. |
NameRules.Capitalize | true | true / false | Upper-case the first letter. |
NameRules.Blocked | {} | list of words | Words not allowed inside a name, case-insensitive. |
Identity
| Key | Default | Allowed | What it does |
|---|---|---|---|
RotateVoice | true | true / false | Give the character a new voice frequency too. |
ReturnToSelector | false | true / false | Send the player back to the character selector after surgery. |
RemoveItems | {} | e.g. { 'id_card', 'driver_license' } | Items taken from the patient afterwards. Empty = they keep everything. |
StandaloneFree | true | true / false | Standalone servers have no money, so the surgery is free unless you wire Hooks.StandaloneCharge. |
NoEditorPolicy | 'skip' | 'skip' · 'block' | No usable face editor on the server: skip = new identity and name, face unchanged. block = the clinic refuses. |
Interaction and timing
| Key | Default | Allowed | What it does |
|---|---|---|---|
Interaction | 'auto' | 'auto' · 'target' · 'prompt' | How the player starts it. auto = the target script if one runs, else E. |
InteractDistance | 2.0 | metres | Distance from the clinic NPC or point at which the prompt shows. |
ClinicRadius | 5.0 | metres | The server refuses to begin or commit further away than this. |
PedSpawnDistance | 60.0 | metres | The clinic NPC only exists inside this range. |
TokenSeconds | 1200 (20 min) | seconds | How long a started implant stays valid — consent, editor and name form together. |
SurgerySeconds | 15 | seconds | Length of the surgery black screen. |
Clinics
One entry per clinic. price and account are optional per-clinic overrides.
Clinics = {
{
id = 'zonah',
label = 'Face Clinic',
coords = vector4(-449.67, -340.83, 34.50, 85.0),
ped = { model = 's_m_m_doctor_01', scenario = 'WORLD_HUMAN_CLIPBOARD' },
blip = { sprite = 61, color = 27, scale = 0.8, name = 'Face Clinic' },
-- price = 350000,
-- account = 'cash',
},
}| Field | Required | What it does |
|---|---|---|
id | yes | A unique key for this clinic. Used in logs. |
label | yes | Shown in the prompt and the UI. |
coords | yes | vector4(x, y, z, heading). Stand where you want the NPC and paste the numbers. |
ped | no | { model = …, scenario = … }, or false for no NPC — a marker plus E at coords instead. |
blip | no | { sprite, color, scale, name }, or false for a secret clinic with no map icon. |
price | no | Overrides Config.Implant.Price at this clinic. |
account | no | Overrides Config.Implant.Account at this clinic. |
The face editor
The implant opens whatever face editor your appearance script provides. Which one is
used comes from Config.AppearanceSystem.
| Appearance script | Face editor |
|---|---|
| illenium-appearance | full face editor |
| 17mov Character System | through its Skin module |
| qs-appearance | editor stub — we never call its own surgeon shop, which has its own price |
| rcore_clothing, crm-appearance | editor stub |
| fivem-appearance | illenium-style API |
| qb-clothing | no face-only editor |
| esx_skin / skinchanger | restricted face menu |
| none | nothing to open |
Where there is no usable editor, NoEditorPolicy decides: 'skip' gives the
character a new identity and name with the same face, 'block' makes the clinic
refuse the surgery.
See Appearance & Tattoo Scripts.
Admin commands
| Command | Level | What it does |
|---|---|---|
/recognition:freeimplant <id> <reason> | identity | Start a free implant for a player. |
recognition:implantcooldown <id|charKey> <days> <reason> | identity | Set or clear the wait. |
recognition:resetidentity <id|charKey> <reason> | identity | A free identity reset with no surgery. |
All three require a written reason when Config.Admin.RequireReason is on (the
default), and all three are written to the admin log and, optionally, to Discord.
For surgeon scripts
If you run your own surgery shop, plastic surgeon job or story event, call the server export instead of building a second clinic:
exports['5code-recognition']:StartFaceImplant(source, opts)Add your resource to ServerConfig.Api.TrustedResources first, and call it from
your server code after your own checks — never straight from a client event.
Signatures and options: Developers → Server Exports.
An interrupted surgery
The identity reset row is written before money moves. If the server crashes mid-surgery, the row is still there and the reset can be found and finished. Nothing is ever charged for a surgery that did not complete.