TC ScriptDocumentation

Exports et API

Exports serveur et client de tc-forensic avec leurs signatures : preuves, profils, enquêtes, analyses, appareil photo.

Les exports s'appellent avec exports['tc-forensic']:Nom(...).

Sans risque d'exception

Les exports serveur sont protégés : en cas d'erreur, ils renvoient nil / false et n'émettent jamais d'exception dans ton script.

#Exports serveur

#Joueurs et droits

SignatureRôle
IsAuthorized(src)true si le joueur est d'un job police et en service
IsPoliceJob(jobName)true si le job est reconnu police (Vision : par le core ; ailleurs : Config.Police.jobs)
HasGloves(src)Le joueur porte-t-il des gants ?

#Traces et preuves

SignatureRôle
DropFingerprint(src, coords, surface, extraMeta)Dépose l'empreinte du joueur src (sauf gants). coords : vector3 ou {x,y,z} (défaut : position du joueur). Retourne la preuve ou nil
DropBlood(src, coords)Dépose une tache de sang avec l'ADN du personnage src
CreateEvidence(evType, coords, metadata, reason)Crée une preuve. Types : casing, blood, fingerprint, gunpowder, gsr, fragment, bullet_impact. metadata : table libre (dnaHash, fpHash, caliber, plate…)
GetEvidence(id)Preuve par numéro (même collectée), métadonnées décodées
GetCasingsNear(coords, radius)Douilles actuellement au sol dans un rayon

#ADN, empreintes, fichier

SignatureRôle
GetHash(identifier, kind)Code d'un personnage. kind : 'dna', 'fp' ou 'gsr'
GetProfile(identifier)Profil au fichier (nil si jamais enregistré)
RegisterProfile(identifier, kind, by)Enregistre directement un personnage au fichier (ex. à l'incarcération). kind : 'dna', 'fp' ou 'both'
RemoveProfile(identifier)Retire un profil
ResolveHash(kind, hash)Résout un code : { known, registered, person, npc }
IsGsrPositive(identifierOrSrc)Test de résidus de tir sans item : renvoie positif (bool), nombre de traces
WashHands(identifierOrSrc)Efface les résidus de tir (douche, lavage des mains…)

#Enquêtes

SignatureRôle
CreateCase(data)Crée une enquête. data = { title, category, priority (1-3), summary, location, coords, lead = src } (lead facultatif)
GetCase(id)Lit un dossier
SetCaseStatus(id, status)status : open, active, suspended, solved ou closed
AddCaseNote(id, body, authorName, kind)kind : 'note', 'event' ou 'system'
AddPersonToCase(id, identifier, role, notes)Rattache une personne
AddVehicleToCase(id, plate, notes)Rattache un véhicule
AttachToCase(id, kind, refId, label)kind : 'evidence', 'analysis', 'photo' ou 'folder'
GetCasesForPerson(identifier)Enquêtes où apparaît un personnage : { id, title, status, role }
GetCasesForPlate(plate)Enquêtes liées à une plaque

#Laboratoire et photos

SignatureRôle
GetAnalysis(id)Analyse (résultat complet si terminée)
GetPhotoInfo(id)Informations d'une photo, sans l'image
OpenCamera(src)Ouvre le viseur de l'appareil photo chez un joueur, sans vérifier l'item
ShowPhoto(src, photoId)Affiche une photo à un joueur, sans lui donner l'item

#Exports client

SignatureRôle
IsAuthorized()Le joueur local est-il autorisé ?
OpenEnquete(tab)Ouvre la tablette d'enquêtes. tab : 'dashboard', 'cases', 'people', 'fichier', 'lab' ou 'evidence'
OpenCamera() / CloseCamera()Ouvre / ferme le viseur de l'appareil photo
IsCameraActive()État du viseur
ViewPhoto(photoId)Affiche une photo que le joueur possède ou a le droit de voir
LeaveFingerprint(surface, coords)Laisse l'empreinte du joueur local (sauf gants) : coffre forcé, caisse, distributeur… coords facultatif (à moins de 6 m du joueur). Retourne { ok, id, gloves }

#Exemples

server.lua
-- Un braquage blesse un joueur : du sang sur la scène
exports['tc-forensic']:DropBlood(src, GetEntityCoords(GetPlayerPed(src)))

-- Créer une enquête automatiquement après une fusillade
local id = exports['tc-forensic']:CreateCase({
    title = 'Fusillade — Strawberry', category = 'Fusillade', priority = 2,
    summary = 'Détonations signalées.', location = 'Strawberry Ave',
})
exports['tc-forensic']:AddCaseNote(id, 'Dossier ouvert automatiquement.', 'Système', 'system')

-- Réserver une action à la police en service
if not exports['tc-forensic']:IsAuthorized(src) then return end
client.lua
-- Un coffre-fort forcé laisse l'empreinte du cambrioleur
local r = exports['tc-forensic']:LeaveFingerprint('coffre')
Dernière mise à jour : 7 novembre 2026© 2026 TC Script