[ ESX / QBCORE ] Wasabi's Evidence System

Wasabi’s ESX/QBCore Evidence System🔍

:shopping_cart:Buy Escrowed - $24.99

:shopping_cart:Buy Open Source - $49.99


Background

This script was created as an addition to my Advanced Police Job and has now grown in to it’s own resource that will accompany any police job quite nicely! I plan to add many things to this script such as meta data support across the 3-4 main inventories.


Features

  • Optimized with 0.00ms idle(0.01ms wielding gun)
  • Multiple crime lab locations
  • Can add any job to have the ability to process and collect evidence
  • Choice to let criminals destroy evidence
  • Fingerprint scanning for exposing identity to certain evidence(Configurable)
  • Ability to assign hands or gloves to not leave evidence(Configurable)
  • Configurable item requirement to destroy blood (By default Bleach Wipes)
  • Configurable auto delete of evidence from ground(By default enabled and set to 15 minutes)
  • Everything is configurable in regards to the information returned in evidence reports(Could easily implement your own parameters if you have any coding knowledge / examples included)
  • Gather blood, bullets, and fingerprints
  • Optional use of target system (Supports ox_target, qb-target, and qtarget out of the box)
  • Customizable strings for easy language support
  • Customizable notifications(Add your own)
  • Customizable Text UI(Add your own)
  • Supports both ESX and QBCore
  • Much more added all the time!

Frequent updates / feature additions planned so stay tuned!


Configuration

config.lua
local minutes, seconds = 60000, 1000
Config = {}

----------------------
-- General Settings --
----------------------
Config.PoliceJobs = { -- Police jobs/grades able to use evidence system
    ['police'] = 0, -- ['JOB_NAME'] = GRADE_LEVEL
--  ['sheriff'] = 2 -- Example
}
Config.CriminalsCanCleanEvidence = {
    enabled = false, -- Criminals are able to clean up bullets/blood when enabled
    requiredBloodCleanItem = 'bleachwipes', -- Item name required in inventory for criminals to wipe blood evidence
    removeBloodCleanItemOnUse = true, -- Remove item when clean blood
}
Config.MaxEvidence = 5 -- Max evidence that can be collected at once prior to going to evidence lab for analyzing
Config.FlashlightRange = 15 -- Default: 15 / Distance one can see evidence with flashlight (MUST BE ABOVE 2)
Config.AutoDestroy = 5 * minutes -- Auto destory evidence after so long (Default 5 * minutes / Set to false if no destroy)
Config.BloodProps = true -- Have prop on ground for blood splatter
Config.BossCanDeleteStorage = true -- Boss ranks can delete storage from storage(If enabled)

-----------------------
-- Evidence Settings --
-----------------------
Config.AnalyzingTime = 6 * seconds -- Time it takes to analyze evidence at the crime lab

Config.VehicleFingerPrinting = {
    enabled = true, -- Enable finger printing vehicle steering wheel?
    requiredItem = 'uvlight',
    removeOnUse = false -- Remove the finger printing device on use
}

Config.EvidenceReportData = { -- Data it provides in evidence reports
    -- Add custom parameters if desired and accomodate them in `client/cl_customize.lua` under OpenEvidenceReport()
    -- You can remove/add any of these OR re-order them to display to your likings!
    blood = { -- Will be displayed in evidence report in order they are placed in index
        {
            parameter = 'name', -- Argument for OpenEvidenceReport() function
            label = 'Name' -- Label to describe on form
        },

        {
            parameter = 'location', -- Street name(s) and zone names(defined in the Zones table of config.lua)
            label = 'Location'
        },

        {
            parameter = 'date', -- Server date of evidence drop
            label = 'Date'
        },

        {
            parameter = 'time', -- Server time of evidence drop
            label = 'Time'
        },

        {
            parameter = 'lab', -- Crime lab that processed evidence
            label = 'Crime Lab'
        },

--      {
--          parameter = 'bloodtype', -- Example of a custom parameter named 'bloodtype'
--          label = 'Blood Type' -- Using custom logic labeled in `client/cl_customize.lua` under GetBloodTypeFromCitizenId(citizenid) function (Works out of box if uncommented AND running QBCore)
--      },

--      {
--          parameter = 'custom', -- Example of a custom parameter named 'custom'
--          label = 'License #' -- Using logic from the 'data' table in `client/cl_customize.lua` under OpenEvidenceReport() function of identifier/citizenid
--      },


    },

    bullet = { -- Will be displayed in evidence report in order they are placed in index
        {
            parameter = 'name', -- Argument for OpenEvidenceReport() function
            label = 'Name:' -- Label to describe on form
        },
        {
            parameter = 'guntype',
            label = 'Bullet Type'
        },
        {
            parameter = 'location',
            label = 'Location'
        },
        {
            parameter = 'date',
            label = 'Date'
        },
        
        {
            parameter = 'time',
            label = 'Time'
        },

        {
            parameter = 'lab', -- Crime lab that processed evidence
            label = 'Crime Lab'
        },

--      {
--          parameter = 'custom', -- Example of a custom parameter named 'custom'
--          label = 'License #' -- Using logic from the 'data' table in `client/cl_customize.lua` under OpenEvidenceReport() function of identifier/citizenid
--      },
    },
    print = { -- Evidence related to finger prints
        {
            parameter = 'name', -- Argument for OpenEvidenceReport() function
            label = 'Name:' -- Label to describe on form
        },
        {
            parameter = 'plate',
            label = 'License Plate'
        },
        {
            parameter = 'location',
            label = 'Location'
        },
        {
            parameter = 'date',
            label = 'Date'
        },
        
        {
            parameter = 'time',
            label = 'Time'
        },

        {
            parameter = 'lab', -- Crime lab that processed evidence
            label = 'Crime Lab'
        },

--      {
--          parameter = 'custom', -- Example of a custom parameter named 'custom'
--          label = 'License #' -- Using logic from the 'data' table in `client/cl_customize.lua` under OpenEvidenceReport() function of identifier/citizenid
--      },
    },

}

---------------
-- Locations --
---------------
Config.EvidenceLabs = { -- Locations where Config.PoliceJobs can analyze evidence

-- Copy starting here to add new location
    LSPD = {

        label = 'LSPD', -- Label to display during certain situations/notifications

        analyze = {
            coords = vec3(483.63, -987.9, 30.68), -- Coords for location(If target is not enabled)
            range = 1.8, -- Range to show TextUI (If target is not enabled)
            label = '[E] - Analyze Evidence', -- TextUI string(If target is not enabled)
            target = {
                enabled = false, -- Enable Target? (Can be customized in cl_customize.lua the target system)
                label = 'Analyze Evidence',
                coords = vec3(483.63, -987.9, 30.68),
                heading = 181.42,
                width = 2.0,
                length = 1.0,
                minZ = 30.68-0.9,
                maxZ = 30.68+0.9
            }
        },

        storage = {
            enabled = true, -- Enable archive access in-game via storage location?
            coords = vec3(480.84, -984.55, 30.68), -- Coords for location(If target is not enabled)
            range = 1.8, -- Range to show TextUI (If target is not enabled)
            label = '[E] - Access Evidence Storage', -- TextUI string(If target is not enabled)
            target = {
                enabled = false, -- Enable Target? (Can be customized in cl_customize.lua the target system)
                label = 'Access Evidence Storage',
                coords = vec3(480.84, -984.55, 30.68),
                heading = 87.87,
                width = 2.0,
                length = 1.0,
                minZ = 30.68-0.9,
                maxZ = 30.68+0.9
            }
        },
                         ---------------------------------------------------------------------------------------------------------------------
        jobLock = false, -- Put job here if want this specific crime lab locked to only one job (Must be job listed in 'Config.PoliceJobs', --
                         -- leave as false if all Config.PoliceJobs can access)                                                             --
                         -- Can be string (ex. 'police' or table ex. {'police', 'sheriff'})                                                 --
                         ---------------------------------------------------------------------------------------------------------------------
    },
-- Stop copying here and paste below, and rename LSPD to something else and re-configure for additional locations


} 

Special Note For ESX Users: 100% functional/tested for ESX 1.2 and above; there is no guarantee at this time for older versions of es_extended!


Preview

Link to video(Just in case)


Please report any issues/requests via PM or the support server!


:shopping_cart:Buy Escrowed - $24.99

:shopping_cart:Buy Open Source - $49.99


My Other Releases:

Props:

Code is accessible Partially (Escrowed) / Open Source Option Avaliable
Subscription-based No
Lines (approximately) ~1000+
Requirements es_extended OR qb-core, ox_lib, oxmysql OR mysql-async, wasabi_bridge(included with purchase)
Support Yes
137 Likes

other big project !

Can be cool to add option for show name or not :slight_smile:

because it’s for me… win RP to see a name and lastname on bullet :stuck_out_tongue:

we can’t know if player used gloves or not. ^^

EDIT : i see in config… we can remove the name <3 you are the best

5 Likes

Most advanced script maker! Keep it going, WASABI!

1 Like

Cook scripts
It’s very amazing
Highly recommended script very helpful to my server

1 Like

Definitely gonna buy it at one point

1 Like

ROBBY YOU BLESSED US AGAIN!

Can’t wait to grab this and implement all the new features with PD & Ambulance

GREATEST OF ALL TIME!
This will go right along with ALL THE OTHER WASABI SCRIPTS SO PERFECT!
10/10 everytime

2 Likes

Best for pd rp

1 Like

Such a cool project

Wasabi makes cool scripts and some for free :sunglasses:

Wasabi = W :star_struck:

1 Like

Wow awesome job as always by wasabi

2 Likes

Looks amazing and i can’t wait to get it into my server and put it to action!

Another Wasabi W

2 Likes

This looks cool af ! Nice job <3

1 Like

just amazing thing!

2 Likes

A great additional RP for Police and Gangs. Wasabi’s scripts are really the best!

2 Likes

First of all a good script, I believe you put a lot of time, effort and nerves into creating something like this. You have my full support! Respect +

1 Like

Some of the best scripts on the market!!

1 Like

nice script :heart_eyes:

1 Like

A script still very good for rp. All the scripts are really great and ideal for rp. The support follows well in case of problem. Keep it up guys

2 Likes

Outstanding script creator and delivers amazing support everytime!!!
Keep making such great scripts bro🙌

2 Likes

One of the top scripter’s out there! Been using wasabi’s scripts for quite some time and recently got the advanced jobs and love them. Keep up the great work!

2 Likes

I would love to try this, looks amazing.

2 Likes