[PAID] XSC_Evidence - Immersive Forensic Evidence System

XSC_Evidence - Immersive Forensic Evidence System

XSC_Evidence is a system that introduces immersive forensic evidence, specifically designed for law enforcement roleplay. XSC_Evidence brings realistic crime scene investigation to your server, with a huge focus on server performance.

:video_camera: Showcase Video: Preview
:shopping_cart: Purchase here: XSCripts Tebex
:question: Support & Questions: XSCripts Discord

Features

  • Dynamic Evidence
    Supports different evidence types (bullet casings, blood, fingerprints, and gunshot residue) with supporting metadata for each evidence type.
  • Custom Evidence Marker Props
    This resource comes with custom evidence props for each evidence type
  • Immersive Forensics
    Collect, analyze, and reveal evidence types using job-restricted tools. (Magnifying Glass, Blacklight, and GSR Swab)
  • Highly Configurable
    Each aspect of this script is configurable, including the ability to add additional evidence types.
  • Optimized for Performance on Large Servers
    Resource usage between 0.00ms and 0.01ms

Configuration

This script is fully configurable with the ability to add new types of evidence. See below for the example config.

Example config.lua
Config = {}

-- General Settings
Config.Debug = true                 -- Enable debug logging
Config.Locale = 'en'                -- Locale for translations
Config.RevealTimer = 2              -- Minutes before magnifying glass/blacklight auto-disables
Config.AntiSpamCooldown = 2000      -- Cooldown for evidence anti-spam (ms)
Config.AllowedJobs = {              -- Jobs allowed to use magnifying glass/blacklight
    'police',
    'bcso',
    'fib',
}
Config.EvidenceRadius = 1.0         -- Radius for evidence pickup zones
Config.RevealDistances = {          -- Evidence reveal/detection distances (meters)
    casings = 15.0,                 -- For magnifying glass (casings)
    blood = 15.0,                   -- For blacklight (blood)
    fingerprints = 15.0             -- For blacklight (fingerprints)
}

-- Marker Settings
Config.UseMarker = false            -- Show markers for evidence (true/false) [THIS IS RESOURCE INTENSIVE]
Config.Marker = {
    casing = {type = 1, size = 0.25, color = {0, 150, 255, 180}, duration = 1},         -- Blue
    blood = {type = 1, size = 0.25, color = {180, 0, 180, 180}, duration = 30},         -- Purple
    fingerprint = {type = 1, size = 0.25, color = {255, 255, 0, 180}, duration = 30}    -- Yellow
}

-- Evidence Collection and Processing Progress Bars
Config.CollectionDuration = 2000          -- ms for evidence collection progress bar
Config.ProcessingDuration = 3000          -- ms for evidence analysis progress bar

-- Evidence Bag Item
Config.EvidenceBagItem = 'evidence_bag'   -- Item required to collect evidence

-- GSR Residue Settings
Config.GSRDuration = 1800                 -- 30 minutes
Config.GSRClearSwimTime = 30              -- seconds swimming to clear GSR
Config.GSRVehicleCheck = true             -- Enable/disable vehicle GSR checks
Config.VehicleGSR = {
    enableTarget = false                  -- Enables ox_targeting to collect GSR from vehicles
}

-- Evidence Prop Settings
Config.EvidencePropCasing = 'sign_casings'              -- Prop to spawn for casing evidence
Config.EvidencePropBlood = 'sign_blood'                 -- Prop to spawn for blood evidence
Config.EvidencePropFingerprint = 'sign_fingerprint'     -- Prop to spawn for fingerprint evidence

Config.EvidenceTypes = {  -- Evidence types and their properties
    blood = {
        label = 'Blood Sample',
        item = 'blood',
        icon = 'fa-solid fa-droplet',
        collectAnim = 'amb@medic@standing@kneel@idle_a',
        collectAnimDict = 'idle_a',
        processAnim = 'mini@repair',
        processAnimDict = 'fixing_a_ped',
        color = {255,0,0},
        meta = {
            dna_id = true,
            timestamp = true,
            location = true
        }
    },
    casings = {
        label = 'Bullet Casings',
        item = 'casings',
        icon = 'fa-solid fa-gun',
        collectAnim = 'amb@medic@standing@kneel@idle_a',
        collectAnimDict = 'idle_a',
        processAnim = 'mini@repair',
        processAnimDict = 'fixing_a_ped',
        color = {200,200,0},
        meta = {
            weapon = true,
            timestamp = true,
            location = true
        }
    },
    gsr = {
        label = 'GSR',
        item = 'gsr',
        icon = 'fa-solid fa-mound',
        collectAnim = 'mini@repair',
        collectAnimDict = 'fixing_a_ped',
        processAnim = 'mini@repair',
        processAnimDict = 'fixing_a_ped',
        color = {128,128,128},
        meta = {
            timestamp = true,
            location = true
        }
    },
    fingerprints = {
        label = 'Fingerprints',
        item = 'fingerprints',
        icon = 'fa-solid fa-fingerprint',
        collectAnim = 'amb@medic@standing@kneel@idle_a',
        collectAnimDict = 'idle_a',
        processAnim = 'mini@repair',
        processAnimDict = 'fixing_a_ped',
        color = {0,255,255},
        meta = {
            fingerprint_id = true,
            timestamp = true,
            location = true
        }
    }
}

return Config

Join Our Discord Server

For the fastest support and to connect with other XSCripts users, join our Discord community!
Join XSCripts Discord

Code is accessible Partially
Subscription-based No
Lines (approximately) 1600+
Requirements QBCore
Support XSCripts Discord
1 Like

This is so much more optimised than most evidence scripts and the way youve done the models for each individual piece on the ground as an optimised prop is so good. huge vouch for this!

1 Like

Thank you!

your tebex Please fix any issues