/qb-policejob

Primary LanguageLuaGNU General Public License v3.0GPL-3.0

qb-policejob

Police Job for QB-Core Framework 👮

This is an edited version of the official qb-policejob with added features.

For help, questions and other resources you can join my discord : Hi-Dev

If you like my work and want to support me : ko-fi

Features

New

  • Multiple locations
  • Tie players with a rope item and untie them with knife
  • Target ped interactions (Robplayer, Tie / Untie, Kidnap - Escort and Cuff for policejob only)
  • Updated the evidence stash
  • Change the duty with the menu
  • You can write comment on evidence bags
  • Added config option for block to see trough walls with thermal in heli
  • Added target and ped for police garage
  • Every garage has his own vehicle list
  • Changed the garage logic where you can choose the job level for a specific car
  • Moved the livery option into the car options
  • Added option for max mods for engine, brake, transmission, armour, turbo
  • Added target and ped for spawning and returning helicopter
  • Only 1 heli can be spawned by 1 player
  • Each officier can get 1 vehicle and return it from ped menu

v1.3.0

  • Added cuff, ziptie, broken handcuffs, cuffkeys, bolt cutter and flush cutter
  • You can cuff players with handcuffs and uncuff them with cuffkeys
  • You can only uncuff them from the side (front / back) where the cuffs are (same for zipties)
  • You can ziptie players and cut it with flush cutter
  • Illegals can use bolt cutter to cut the cuffs and will get broken cuffs

v1.3.1

  • When used cuff, you'll get cuff key and cuffs will be removed
  • When you use keys, it will be removed and give you cuffs again
  • Added vehicle livery menu
  • Added prices for police vehicles

v1.3.2 :

  • Added new prop item for zipties
  • Fixed the rob player when cuffed from front
  • Added configurable cufftypes into config where you can choose from wether the player can move with that kind handcuffs or not

v1.3.3

  • Fingerprint UI has been changed
  • Added evidence research option. Police can research filled evidence bags in lab and will see more info about the evidence
  • Changed depot and impound system for police. Able to use target on vehicle and charging for depot / impound
  • Citizens can access police impound and will see their own cars. When they pay the charge they can get their own vehicle
  • Added breakout option. When you enable this in config, the cuffed player will see a minigame and when they success they can escape.
  • Fixed the problem with negative amounts for depot / impound
  • Fixed warning with missing phrases
  • Animation fix for dead or in last stand players

Existing

  • Classical requirements like on duty/off duty, clothing, vehicle, stash etc.
  • Citizen ID based armory (Whitelisted)
  • Fingerprint test
  • Evidence locker (stash)
  • Whitelisted vehicles
  • Speed radars across the map
  • Stormram
  • Impounding player vehicle (permanent / for an amount of money)
  • Integrated jail system
  • Bullet casings
  • GSR
  • Blood drop
  • Evidence bag & Money bag
  • Police radar
  • Handcuff as an item (Can used via command too. Check Commands section.)
  • Emergency services can see each other on map

Installation

  • Copy images from images folder to your inventory images folder

  • Add the below items to your qb-core\shared\items.lua

	['broken_handcuffs'] 			 = {['name'] = 'broken_handcuffs', 			    ['label'] = 'Broken Handcuffs', 		['weight'] = 100, 		['type'] = 'item', 		['image'] = 'broken_handcuffs.png', 	['unique'] = false, 	['useable'] = false, 	['shouldClose'] = true,	   ['combinable'] = nil,   ['description'] = 'It\'s broken, maybe you can repair it?'},
	['cuffkeys'] 				 	 = {['name'] = 'cuffkeys', 			    		['label'] = 'Cuff Keys', 				['weight'] = 75, 		['type'] = 'item', 		['image'] = 'cuffkeys.png', 			['unique'] = false, 	['useable'] = true, 	['shouldClose'] = true,	   ['combinable'] = nil,   ['description'] = 'Set them free !'},
	['ziptie'] 				 	 	 = {['name'] = 'ziptie', 			    		['label'] = 'ZipTie', 					['weight'] = 50, 		['type'] = 'item', 		['image'] = 'ziptie.png', 				['unique'] = false, 	['useable'] = true, 	['shouldClose'] = true,	   ['combinable'] = nil,   ['description'] = 'Comes in handy when people misbehave. Maybe it can be used for something else?'},
	['flush_cutter'] 				 = {['name'] = 'flush_cutter', 			    	['label'] = 'Flush Cutter', 			['weight'] = 50, 		['type'] = 'item', 		['image'] = 'flush_cutter.png', 		['unique'] = false, 	['useable'] = true, 	['shouldClose'] = true,	   ['combinable'] = nil,   ['description'] = 'Comes in handy when you want to cut zipties..'},
	['bolt_cutter'] 				 = {['name'] = 'bolt_cutter', 			    	['label'] = 'Bolt Cutter', 				['weight'] = 50, 		['type'] = 'item', 		['image'] = 'bolt_cutter.png', 			['unique'] = false, 	['useable'] = true, 	['shouldClose'] = true,	   ['combinable'] = nil,   ['description'] = 'Wanna cut some metal items ?'},

  • Update the filled evidence bag in you qb-core/shared
    ['filled_evidence_bag']             = {['name'] = 'filled_evidence_bag',               ['label'] = 'Evidence Bag',              ['weight'] = 200,          ['type'] = 'item',         ['image'] = 'evidence.png',                ['unique'] = true,          ['useable'] = true,     ['shouldClose'] = true,     ['combinable'] = nil,   ['description'] = 'A filled evidence bag to see who committed the crime >:('},
  • Update the filled evidence bag in your qb-inventory
else if (itemData.name == "filled_evidence_bag") {
    $(".item-info-title").html("<p>" + itemData.label + "</p>");
        if (itemData.info.type == "casing") {
            if (itemData.info.evidenceNote != null) {
                $(".item-info-description").html(
                    "<p><strong>Evidence material: </strong><span>" + itemData.info.label + "</span></p>" +
                    "<p><strong>Type number: </strong><span>" + itemData.info.ammotype + "</span></p>" +
                    "<p><strong>Caliber: </strong><span>" + itemData.info.ammolabel + "</span></p>" +
                    "<p><strong>Serial: </strong><span>" + itemData.info.serie + "</span></p>" +
                    "<p><strong>Crime scene: </strong><span>" + itemData.info.street + "</span></p>" +
                    "<br /><p><strong>Note Writer: </strong><span>" + itemData.info.noteWrite + "</span></p>" +
                    "<p><strong>Note: </strong><span>" + itemData.info.evidenceNote + "</span></p>"
                );
            } else {
                $(".item-info-description").html(
                    "<p><strong>Evidence material: </strong><span>" + itemData.info.label + "</span></p>" +
                    "<p><strong>Type number: </strong><span>" + itemData.info.ammotype + "</span></p>" +
                    "<p><strong>Caliber: </strong><span>" + itemData.info.ammolabel + "</span></p>" +
                    "<p><strong>Serial: </strong><span>" + itemData.info.serie + "</span></p>" +
                    "<p><strong>Crime scene: </strong><span>" + itemData.info.street + "</span></p>" +
                    "<br /><p>" + itemData.description +"</p>"
                );
            }
        } else if (itemData.info.type == "blood") {
            if (itemData.info.evidenceNote != null) {
                $(".item-info-description").html(
                    "<p><strong>Evidence material: </strong><span>" + itemData.info.label +"</span></p>" +
                    "<p><strong>Blood type: </strong><span>" + itemData.info.bloodtype +"</span></p>" +
                    "<p><strong>DNA Code: </strong><span>" + itemData.info.dnalabel +"</span></p>" +
                    "<p><strong>Crime scene: </strong><span>" + itemData.info.street +"</span></p>" +
                    "</br><p><strong>Note Writer: </strong><span>" + itemData.info.noteWrite + "</span></p>" +
                    "<p><strong>Note: </strong><span>" + itemData.info.evidenceNote + "</span></p>"
                );
            } else {
                $(".item-info-description").html(
                    "<p><strong>Evidence material: </strong><span>" + itemData.info.label +"</span></p>" +
                    "<p><strong>Blood type: </strong><span>" + itemData.info.bloodtype +"</span></p>" +
                    "<p><strong>DNA Code: </strong><span>" + itemData.info.dnalabel +"</span></p>" +
                    "<p><strong>Crime scene: </strong><span>" + itemData.info.street +"</span></p>" +
                    "<br /><p>" + itemData.description + "</p>"
                );
            }
        } else if (itemData.info.type == "fingerprint") {
            if (itemData.info.evidenceNote != null) {
                $(".item-info-description").html(
                    "<p><strong>Evidence material: </strong><span>" + itemData.info.label + "</span></p>" +
                    "<p><strong>Fingerprint: </strong><span>" + itemData.info.fingerprint + "</span></p>" +
                    "<p><strong>Crime Scene: </strong><span>" + itemData.info.street + "</span></p>" +
                    "</br><p><strong>Note Writer: </strong><span>" + itemData.info.noteWrite + "</span></p>" +
                    "<p><strong>Note: </strong><span>" + itemData.info.evidenceNote + "</span></p>"
                );
            } else {
                $(".item-info-description").html(
                    "<p><strong>Evidence material: </strong><span>" + itemData.info.label + "</span></p>" +
                    "<p><strong>Fingerprint: </strong><span>" + itemData.info.fingerprint + "</span></p>" +
                    "<p><strong>Crime Scene: </strong><span>" + itemData.info.street + "</span></p>" +
                    "<br /><p>" + itemData.description + "</p>"
                );
            }

        } else if (itemData.info.type == "dna") {
            if (itemData.info.evidenceNote != null) {
                $(".item-info-description").html(
                    "<p><strong>Evidence material: </strong><span>" + itemData.info.label + "</span></p>" +
                    "<p><strong>DNA Code: </strong><span>" + itemData.info.dnalabel + "</span></p>" +
                    "</br><p><strong>Note Writer: </strong><span>" + itemData.info.noteWrite + "</span></p>" +
                    "<p><strong>Note: </strong><span>" + itemData.info.evidenceNote + "</span></p>"
                );
            } else {
                $(".item-info-description").html(
                    "<p><strong>Evidence material: </strong><span>" + itemData.info.label + "</span></p>" +
                    "<p><strong>DNA Code: </strong><span>" + itemData.info.dnalabel + "</span></p>" +
                    "<br /><p>" + itemData.description + "</p>"
                );
            }
        }
    }

Dependencies

Commands

  • /spikestrip - Places spike strip on ground.
  • /pobject [pion/barier/schotten/tent/light/delete] - Places or deletes an object on/from ground.
  • /cuff - Cuffs/Uncuffs nearby player
  • /escort - Escorts nearby plyer.
  • /callsign [text] - Sets the player a callsign on database.
  • /clearcasings - Clears nearby bullet casings.
  • /jail [id] [time] - Sends a player to the jail.
  • /unjail [id] - Takes the player out of jail.
  • /clearblood - Clears nearby blood drops.
  • /seizecash - Seizes nearby player's cash. (Puts in money bag)
  • /sc - Puts soft cuff on nearby player.
  • /cam [cam] - Shows the selected security cam display.
  • /flagplate [plate] [reason] - Flags the vehicle.
  • /unflagplate [plate] - Removes the flag of a vehicle.
  • /plateinfo [plate] - Displays if a vehicle is marked or not.
  • /depot [price] - Depots nearby vehicle. Player can take it after paying the cost.
  • /impound - Impounds nearby vehicle permanently.
  • /paytow [id] - Makes payment to the tow driver.
  • /paylawyer [id] - Makes payment to the lawyer.
  • /radar - Toggles the police radar.
  • /911 [message] - Sends a report to emergency services.
  • /911r [id] - Used to respond the emergency alerts.
  • /911a [message] - Sends an anonymous report to emergency services (gives no location).
  • /anklet - Places anklet (tracking device) on nearby player.
  • /removeanklet [citizenid] - Removes the anklet from player.
  • /ebutton - Used to respond an emergency alert.
  • /takedrivinglicense - Takes the driving license from nearby player.
  • /takedna [id] - Takes a DNA sample from the player.

Manual

  • Download the script and put it in the [qb] directory.
  • Add the following code to your server.cfg/resouces.cfg
ensure qb-core
ensure qb-policejob