DRS Fingerprint

v1.3.2 drs_fingerprint
Ver na loja

Leitor biométrico fixo para as esquadras. O agente identifica uma pessoa pela impressão digital e vê no ecrã a foto, o nome, os dados pessoais, os mandados ativos, se está presa e o número de ocorrências e multas — com um botão para abrir logo o perfil no MDT. Funciona com Qbox, QBCore e ESX.

#Requisitos

RecursoObrigatório
oxmysqlSim
Qbox, QBCore ou ESXSim (deteção automática)
drs_mdtRecomendado — foto, mandados, ocorrências, multas e "Abrir no MDT"
drs_prisonNão — mostra se a pessoa está presa
drs_policejobNão — verificação de serviço

Sem o drs_mdt, o leitor mostra só a identificação (nome, data de nascimento, sexo, nacionalidade e impressão digital).

#Instalação

  1. Coloca drs_fingerprint em resources.
  2. Adiciona ao server.cfg, depois do drs_mdt:
server.cfg
ensure oxmysql
ensure qb-core
ensure drs_mdt
ensure drs_fingerprint
  1. A tabela drs_fingerprint_log (registo de todas as leituras) é criada sozinha.
  2. Ajusta as posições dos terminais em Config.Terminals e os empregos em Config.Jobs.

#Como usar

  1. O agente de serviço vai ao terminal (marcador azul) e carrega em E.
  2. A pessoa a identificar fica junto ao terminal (a menos de Config.TargetDistance metros).
  3. O agente carrega em "Iniciar leitura"; a pessoa põe o dedo no sensor (com animação) durante Config.ScanSeconds segundos.
  4. O ecrã mostra a identificação:
DadoDe onde vem
FotoPerfil do drs_mdt
Nome, ID, data de nascimento, sexo, nacionalidadePersonagem (framework)
Impressão digitalmetadata.fingerprint (no ESX é gerado um código fixo a partir do identificador)
Mandados ativosdrs_mdt
Está presa?drs_prison
N.º de ocorrências e de multasdrs_mdt
  1. "Abrir no MDT" fecha o terminal e abre o perfil da pessoa no drs_mdt.

Se a pessoa ainda não tiver foto no MDT, é tirado o mugshot automático (Config.AutoMugshot).

#Terminais

config.lua
Config.Terminals = {
    { label = 'Leitor biométrico — Mission Row', coords = vector3(460.97, -989.18, 24.92) },
    { label = 'Leitor biométrico — Paleto Bay',  coords = vector3(-447.30, 6013.80, 31.72) },
}

Podes pôr quantos quiseres (esquadras, prisão, tribunal). Com Config.Blip definido, aparecem no mapa.

#Opções principais

OpçãoPor defeitoDescrição
Config.Locale'pt'Idioma: pt ou en
Config.Jobspolice = 0, sheriff = 0Empregos e cargo mínimo
Config.RequireDutytrueSó de serviço
Config.UseDistance1.5Distância do agente ao terminal
Config.TargetDistance2.5Distância da pessoa ao terminal
Config.ScanSeconds3Duração da leitura
Config.AutoMugshottrueMugshot automático se não houver foto
Config.BlipfalseBlip no mapa
Config.Webhook''Webhook do Discord para as leituras

#Configuração completa

config.lua
Config = {}

-- Idioma / Language: 'pt' ou 'en'
Config.Locale = 'pt'
Config.Framework = 'auto'
Config.UseOxNotify = false
Config.StaffGroups = { 'god', 'admin', 'superadmin' }
Config.Debug = false

-- Quem usa o terminal: emprego = cargo mínimo / Who can use the terminal: job = minimum grade
Config.Jobs = { police = 0, sheriff = 0 }
Config.RequireDuty = true

-- ------------------------------------------------------------------ terminais / terminals
-- Leitores fixos nas esquadras / Fixed readers at the stations
Config.Terminals = {
    { label = 'Leitor biométrico — Mission Row', coords = vector3(460.97, -989.18, 24.92) },
    { label = 'Leitor biométrico — Paleto Bay',  coords = vector3(-447.30, 6013.80, 31.72) },
}
Config.UseDistance = 1.5          -- agente → terminal / officer → terminal
-- A pessoa a identificar tem de estar junto ao terminal / The person to identify must be next to the terminal
Config.TargetDistance = 2.5
Config.ScanSeconds = 3            -- duração da leitura / scan time
Config.Marker = { type = 2, size = 0.3, color = { 59, 130, 246, 180 }, drawDistance = 10.0 }
Config.Blip = false               -- { sprite = 480, color = 3, scale = 0.6 }

-- Tirar o mugshot automático (drs_mdt) se a pessoa ainda não tiver foto / Automatic mugshot (drs_mdt) when there is no photo
Config.AutoMugshot = true

-- Webhook do Discord para registar as leituras / Discord webhook to log scans
Config.Webhook = ''

#Integrações (ficheiro aberto)

O server/editable.lua não é encriptado:

FunçãoPara que serve
Hooks.OnDutySaber se o agente está de serviço (usa o drs_policejob se existir)
Hooks.IdentityDados da pessoa: nome, data de nascimento, sexo, nacionalidade e impressão digital
Hooks.RecordDados extra: foto, mandados, ocorrências, multas (drs_mdt) e prisão (drs_prison)
Hooks.MugshotMugshot automático

Se usas outro MDT, adapta o Hooks.Record para ir buscar os dados ao teu.

#Resolução de problemas

O marcador não aparece — precisas de um emprego de Config.Jobs e de estar de serviço.

"Não está ninguém junto ao leitor" — a pessoa tem de estar a menos de Config.TargetDistance metros do terminal (não do agente).

Não aparecem a foto nem os mandados — o drs_mdt tem de estar a correr e arrancar antes do drs_fingerprint.

A impressão digital aparece vazia — no QBCore/Qbox vem do metadata.fingerprint da personagem; personagens muito antigas podem não a ter.