Skip to the content
Docs

Scanning & Scoring

On this page12

Two tables run the core loop: Config.Scan decides when and how fast the bars fill, Config.Scoring decides what they are worth.

How a scan starts

KeyDefaultAllowedWhat it does
Config.StartMode'menu''menu' · 'prompt' · 'target'menu = the menu key opens a small menu on the left (below). prompt = arrow over the head plus Recognize [E]. target = an option in your target script. Only menu lets players print camera recordings.
Config.Keys.Menu'F3'any FiveM key nameOpens the menu (menu mode).
Config.Keys.Scan'E'any FiveM key nameStops the scan of the person you look at. In prompt mode it also starts one.
Config.Keys.Next'RIGHT'any FiveM key nameNext person when several are in front of you.
Config.Keys.Prev'LEFT'any FiveM key namePrevious person.
Config.Prompt.PickedColorgreen{r, g, b, a}Arrow colour of the people picked in the menu.
Config.Hud.Overheadtruetrue / falseA small ring with the % above the head of every person you scan.

The menu (menu mode)

  1. Press F3. A small box opens on the left with four options: Scan person to memory, Recognize, Camera recordings and Stop looking. Choose with the UP / DOWN arrows and press Enter. The number keys do nothing here: on most servers 1-5 are the inventory hotbar.
  2. After Scan person to memory or Recognize, arrows appear over the people you face. LEFT / RIGHT move the orange one, SPACE picks up to Scan.MaxParallel people (green), ENTER starts them all at once — with nobody picked, the orange one. BACKSPACE goes back, then closes. You can keep walking while the menu is open.
  3. Scan person to memory runs the normal scan (a quick recognition first, then the learning). Recognize is the 2–3 second look only: if you know the person the answer shows above their head, otherwise "You don't know him" — it never turns into a full scan and never saves anything. Recognize is not available when Config.QuickLook.Enabled = false.
  4. Camera recordings lists what your hidden camera recorded in the last 24 hours, ready to print. See Devices & Reports.
  5. Stop looking ends every scan and quiet look of yours at once. What was learned is saved as usual. The option is gray while nothing is running.

To start, only you have to face the person (within 90°); they may look anywhere — their face is simply not learned until they look at you.

Players can rebind all of these in GTA Settings → Key Bindings → FiveM.

Config.Scan — conditions

KeyDefaultAllowedWhat it does
Distance5.0metresYou learn what you see within this distance (and a scan can start).
KeepDistance7.0metresThe scan stays open within this distance. Between Distance and KeepDistance you only hear him. Further than this, the scan waits LeaveGraceSeconds, then ends.
CameraDistance7.0metresThe learning distance while the scanner wears an active hidden camera.
FacingHalfAngle60.030.0–90.0His face is only learned while he looks within this many degrees of you. To start a scan he may look anywhere: only the scanner must face him (the widest AngleBands band, 90°).
AngleBandssee belowlistYour body angle to him (never the camera) sets how fast you learn what you see. The widest band is also how far you may be turned to start a scan.
OnFootOnlytruetrue / falseBoth players must be out of a vehicle.
MaxHeightDiff2.0metresSame-floor check. Stops scanning someone on the balcony above you.
MaxCandidates81–8How many people are offered at once (arrows drawn).
lua
AngleBands = {
    { upTo = 25, speed = 1.0 },   -- 0-25 deg: full speed
    { upTo = 70, speed = 0.5 },   -- 25-70 deg: half
    { upTo = 90, speed = 0.25 },  -- 70-90 deg: a quarter
},                                -- over 90 deg: seeing stops

Config.Scan — speed

lua
CueSeconds = { face = 90, clothing = 60, tattoo = 60, voice = 45 },

Seconds for one bar to go from 0 to 100 %, for a stranger, in daylight, with no camera. Set a cue to false to switch it off for the whole server — it then shows as not available rather than empty.

CueDefaultCounts
face90seconds of looking, while the face is visible
clothing60seconds of looking
tattoo60seconds of looking, while a tattooed zone is bare
voice45seconds of actual speech

Everything that makes a scan slower (night, rain, fog, distance) is Config.Environment, further down this page. Everything that makes it faster is familiarity (Memory & Familiarity) and the hidden camera (Devices & Reports).

Config.Scan — ending and saving

KeyDefaultAllowedWhat it does
LeaveGraceSeconds30secondsHow long a scan waits after the target left KeepDistance before it ends. Coming back in time continues it.
GraceSeconds15secondsHow long a scan waits while it cannot run at all (the target is in a car, down, invisible or ragdolled) before it ends.
MinSavePct501–100A scan that ends early is only saved if it reached this %. Also the minimum for a camera memory.
KeyPressStopstruetrue / falsePressing the scan key during a scan stops it and keeps what was learned (the save rule still applies).
MaxSeconds300secondsLongest possible scan. After that it ends with the save rule. A scan also ends by itself once every bar it can learn is full.

Config.Scan — anti-spam

KeyDefaultAllowedWhat it does
MaxParallel31–5How many people one player can scan at the same time. 1 = one at a time. A quick look that already answered and keeps listening uses a slot, but gives way when a new scan needs it; real scans never do.
MaxScannersPerTarget31–10How many players may scan the same person at once.
PairCooldownSeconds600–3600Seconds before the same pair can be scanned again after a finished full scan. Quick looks use Config.QuickLook.CooldownSeconds.
StaleSlotSeconds105–60When a target's slots are full, a scan that has gained nothing for this long (or whose seeing bars are all full) is finished to free a slot.

Config.QuickLook — recognizing someone you remember

Somebody your character already remembers is recognized after a short look instead of a full scan: for about two seconds it looks like any scan, then the answer shows — Recognized with the memory's label at 80 % or more, Not sure with only the % below that. After the answer the look goes quiet (no bars, no pose): the person's voice is added when they talk, and what you keep seeing is learned and saved. A stranger, or a masked person no memory matches, gets the normal full scan. The thinking pose only plays while memorizing someone new.

KeyDefaultAllowedWhat it does
Enabledtruetrue / falsefalse = every scan is a full scan, decided at the end (the pre-quick-look behaviour).
Seconds2.00.5–10Seconds of looking before the answer shows (plus about 0.3 s of network).
UseEnvironmenttruetrue / falseNight, rain, fog and the edge of the distance make the look longer, like the bars.
MaxLookSeconds3.00.5–10However dark it is, the look never takes longer than this. The self-test warns above 3.0.
VoiceSeconds2.00.5–10Seconds of hearing the person talk before a remembered voice counts in full.
VoiceDistance20.03–50After the answer, how far away the person's voice can still be counted. Their own voice range (whisper / normal / shout) is always the real limit.
NeedIdentityCuetruetrue / falseClothes alone never answer: the face, the same voice or the remembered tattoos must confirm. false is not recommended (two people in the same outfit could be told apart).
IdentityMinPct251–100An identity cue must confirm at least this % on its own.
MaxDecisions31–10How many times one look may pick a memory again (the mask came off).
MaxRechecks101–50How many times a waiting look may re-check its memory (voice heard, tattoos or face uncovered).
DecisionsPerFrame21–10Quick-look decisions per server frame (spreads the cost when many press E at once).
IdleSeconds18030–600After the answer the quiet look ends by itself when nothing new was learned for this long and the voice cannot rise any more.
MaxSeconds60030–3600Longest quiet look after the answer.
ListenTickEvery21–4A quiet look with nothing left to see, or whose person you have not looked at for 15 s, is checked every Nth server tick.
CommitEverySeconds6015–600While learning after the answer, save at least this often.
CommitMinGain51–50...and only when a bar gained at least this many points since the last save.
CooldownSeconds50–3600Seconds before the same person can be looked at again after a quick look (also after "You don't know him"). Not after a quiet look made room for a new one: starting on that person again carries on at once.
ResumeInScenetruetrue / falseA look on somebody whose quick-look result is still showing continues it at once (no new two-second look). A quiet look only ends for someone else when all MaxParallel slots are in use — then the oldest one is saved and ends.
SaveUnsurefalsetrue / falseA "Not sure" that never reached 80: false = walking away changes nothing in the memory; true = keep what was seen without restarting the timer. Masked memories are kept either way.

Worked example. You met Bob bare-faced (face 100 + clothes 100 = 80 %). Today he wears a cap and sunglasses: Not sure 54 % (50 % for a woman) — the cap and glasses hide half the face and also count as a clothing change (Config.Clothing.FaceItemsOnce = false). He takes the glasses off: 70 %. The cap too: Recognized 80 %. Or he just starts talking and you remember his voice: +10 points every half second of speech, Recognized after about 1.5 s.

Config.Scan — technical timings

KeyDefaultWhat it does
TickMs500How often the server updates a running scan.
CandidateIntervalMs300How often the game looks for people in front of you.
LosIntervalMs400How often line of sight to the selected person is checked.
LosFlags17What blocks the view: 1 world + 16 objects. People and cars never block.
HeartbeatMs, HeartbeatTimeoutMs, FocusBadTicks, PositionTolerance, AngleTolerance, BadTicksToCancel, RemoteReadEvery, EnvEverysee config.luaSync timings and lag allowances between the two players' games.

Config.Scoring

lua
Points = { voice = 40, clothing = 40, face = 40, tattoo = 20 },

Reliability R = the sum of each cue's points × that cue's %, capped at Cap. With the defaults, any two of voice, clothing and face at 100 % give exactly 80 — the act line.

KeyDefaultAllowedWhat it does
Points.voice40any numberPoints the voice cue is worth at 100 %.
Points.clothing40any numberClothing at 100 %.
Points.face40any numberFace at 100 %.
Points.tattoo20any numberTattoos at 100 %.
Cap1001–100Highest possible reliability.
ActThreshold801–100The line a player needs to act on a recognition. Never forced — it is logged in proofs for admins.
GreenAt801–100A single cue shows green from this %.
FakeVoiceFactor0.500.0–1.0A voice that came out of a voice changer is worth this share of the voice points.
ClothingColorMatch0.600.0–1.0The same clothing item in another colour counts as this share of a match.
RecallFullPct501–100In recognise mode: a cue remembered at this % or more can be fully confirmed by a good look now. A weaker memory confirms less.

The fake-voice rule in practice

FakeVoiceFactor = 0.50 means a voice heard through a changer is worth 20 of the 40 voice points. But:

  • The voice bar still fills to 100. Bars show what you observed, and you observed a voice.
  • The device still links two crimes to each other — one changer, one fake voice, forever.
  • Only the score and the memory saved from it use the halved points.

The recall rule in practice

RecallFullPct = 50 is what lets a second, better meeting upgrade a weak memory. A cue you remembered at 50 % or better can be fully confirmed by a clear look now; a cue you barely caught confirms proportionally less. Combined with Config.Memory.UpgradeOnRecognize, a 66 % / 2-hour memory becomes a 100 % / 5-day memory the moment you get a proper look at the person.

Prompt and arrows

KeyDefaultAllowedWhat it does
Config.Prompt.Arrow'sprite''sprite' · 'marker' · 'none'What is drawn over the selected person's head.
Config.Prompt.HelpSlot00 · 1Floating help slot. Use 1 if another script already uses slot 0.
Config.Prompt.HeadOffset0.450.2–1.0Metres above the head.
Config.Prompt.SelectedColor{230, 126, 59, 230}RGBA, 0–255Arrow colour of the selected person.
Config.Prompt.OtherColor{134, 141, 151, 150}RGBA, 0–255Arrow colour of the other people you could pick.
Config.Prompt.ShowOtherstruetrue / falseDraw smaller grey arrows over the other candidates.

Emotes

EmoteWhenDefault commandFallback animation
thinkingwhile memorizing someone new (never for a quick look at someone you remember)thinkmisscarsteal4@aliens / rehearsal_base_idle_director
writingwitness statementnotepadmissheistdockssetup1clipboard@base / base
sweepmagnetic scanner(none)amb@world_human_security_shine_torch@male@base / base
mirrormirror checkadjustmissmic4 / michael_tux_fidget

Each entry takes command (the emote name for your emote script, or false to always use the animation), dict, clip and flag (49 = loop, upper body only, the player can still walk).

Weather and light — Config.Environment

Scanning is slower at night, in rain or fog, and at the edge of the scan distance. A flashlight helps. Only the visual cues slow down — the voice is never slowed.

A factor of 0.60 means the bars fill at 60 % speed, so the scan takes 1.67× longer.

KeyDefaultAllowedWhat it does
Enabledtruetrue / falseMaster switch. false = everything at full speed.
Night.FromHour / .ToHour21 / 60–23Game-clock hours that count as night. Outdoors only.
Night.Factor0.600.05–1.0Night speed. 90 s face scan → 150 s.
Flashlight.Factor0.850.05–1.0Replaces the night factor when a flashlight is on the person. 90 s → 106 s.
Flashlight.ConeDeg35degreesHow wide the light cone counts.
Flashlight.Weapons{ 'WEAPON_FLASHLIGHT' }weapon namesWhich weapons count as a flashlight.
Rain.Threshold0.300.0–1.0Rain level from which it counts as rain. Outdoors only.
Rain.Factor0.800.05–1.090 s → 113 s.
Fog.Factor0.700.05–1.090 s → 129 s. Rain and fog multiply.
Fog.Weathers{ 'FOGGY', 'BLIZZARD', 'HALLOWEEN' }weather namesWhich weather types count as fog.
Interior.Factor1.000.05–1.0Inside a building: night, rain and fog are ignored and this is used.
EdgeDistance.FromPct0.700.0–1.0From this share of the scan distance (0.70 × 5 m = 3.5 m) the bars start slowing.
EdgeDistance.Factor0.750.05–1.0Speed at the very edge.
Tolerance0.150.0–1.0A small allowance for weather and light differences between the two players' games. Leave as is.
MinFactor0.350.05–1.0The total visual factor never drops below this, so every scan can still finish inside MaxSeconds.

Worst case with the defaults — night, rain and fog together — hits the MinFactor floor at 257 s, comfortably inside the 300 s MaxSeconds.

Non-freemode peds

Players using a ped-menu or addon model instead of a normal MP character:

KeyDefaultAllowedWhat it does
Config.NonFreemode.Policy'model''model' · 'unrecognizable' · 'always'model = the model itself is the face, all 12 clothing parts count, no tattoos. unrecognizable = only the voice counts (max 40 %, so nothing is ever saved). always = like model, but masks and hats never hide the face.
Config.NonFreemode.Overrides{}['a_c_chop'] = 'unrecognizable'Per-model policy.