A FiveM hunting script on a QBCore server needs more than the resource folder. Kevin Scripts' Hunting Job expects qb-target, qb-menu, a QBCore inventory that still opens shops the older way, a hunting metadata field on every player, a hunting rifle weapon, and twenty entries in your shared items list. The same studio's Bounty Contracts is lighter: qb-target, PolyZone, qb-inventory, a phone, and one item. This guide covers both, because they are the two Kevin Scripts jobs that hand a player a weapon and send them out of town.
Everything below comes from the kevin-hunting and kevin-bounties folders in the downloads: the manifests, config.lua, readme.md and the client and server Lua. We read the code; we did not run either job on a live server, so treat this as a guide to the files rather than a play test.
Which build this is
Both resources are the studio's QBCore releases from August 2022. Kevin Scripts has since retired them from its own store, so the copies sold here are the last builds it shipped and will not get further updates. Neither folder checks for Qbox or ESX: both call exports['qb-core']:GetCoreObject() at the top of every file.
Both manifests list dependency '/assetpacks', and both put config.lua and every client and server Lua file under escrow_ignore, so all of the code is open to edit. Several fixes below rely on that.
Part one: the Hunting Job
What the hunting script needs
The readme names QBCore, qb-target and qb-inventory or lj-inventory. The code adds two more:
- qb-menu, which draws the hunter's main menu and the sell menus.
- ps-dispatch, only if
Config.UseAlertsstays on. The readme gives two functions,IllegalHuntingandBigFoot, to paste intoclient/cl_extraalerts.lua, and two dispatch codes,anoncallandanoncall2, forserver/sv_dispatchcodes.lua.
The shop opens with inventory:server:OpenInventory and a shop type, the way qb-inventory worked before its 2.0 rewrite and the way lj-inventory still does. On a newer qb-inventory that event is gone, so the "Buy Supplies" option needs rewriting against your inventory's shop function.
Items, weapon and metadata
- Copy the PNGs from
images/into your inventory's image folder, and setConfig.InventoryData.pathto match. It ships pointing atlj-inventory/html/images/; the menus build their icons from that path. - Add the readme's item block to
qb-core/shared/items.lua:weapon_huntingrifle, four tiers each ofdeer,boar,coyoteandmtlion(for exampledeer1todeer4),bigfoot,huntingbaitandhunterslogo. Onlyhuntingbaitis usable. - Add
weapon_huntingrifletoqb-core/shared/weapons.lua, withAMMO_SNIPER. - Add
PlayerData.metadata['hunting'] = PlayerData.metadata['hunting'] or 0inqb-core/server/player.lua, with the other metadata defaults. Every reward compares and adds to this number, so skipping it breaks the first kill. - Optional lines go in qb-weapons (durability), qb-smallresources (weapon draw and recoil) and, if your HUD hides it, the sniper scope.
The rifle model itself is not in the folder. The readme points to a separate weapon resource, started with ensure huntingrifle.
How a hunt runs
A ped stands at Config.PedLocation, near Paleto Bay by default. Through qb-target the player opens a menu with five options: buy supplies, sell carcasses, go hunting, check reputation, and close. Choosing "Go Hunting" unlocks the grounds for that player.
Bait is the trigger. Using huntingbait inside one of Config.HuntingZones (CMSW, MTCHIL and PALFOR out of the box) plants it. The script refuses bait in water, in a vehicle, outside a zone, or while one bait is already down. After a random wait, an animal spawns within about 100 metres and heads for the bait. It bolts if the player gets within Config.AnimalFleeDistanceFromPLayer, 15 metres by default. The kill is picked up through qb-target as a carcass item, and the player carries or drags it out.
To add a zone, stand in it and type getzone. The command prints the game's zone name to the client console (F8), and that name goes into Config.HuntingZones.
Set Config.UseJob to true to limit bait to one job, named by Config.HuntingJobName (hunter). The readme includes an LS Hunters job block for qb-core/shared/jobs.lua.
While the rifle is drawn, a client loop stops it firing at another player and puts the weapon away, so it stays a hunting tool.
Reputation, rarity and Bigfoot
Each carcass lands as tier 1 to 4 and adds reputation, from Config.OneStarRep up to Config.FourStarRep. Tier 4 is the protected animal; when one drops, Config.FourStarAlertChance (30%) decides whether police get a dispatch call.
Read the rarity settings carefully before tuning them. The server checks one roll against ...2Chance, then ...3Chance, then ...4Chance in that order, so each value works as a running ceiling, not a separate percentage. With the shipped low-reputation numbers (10, 15, 5), a tier 2 comes up 10% of the time, a tier 3 5%, and a tier 4 never. Give the three keys rising values if you want all four tiers in play.
The ladder has the same kind of catch. Players below Config.MidRep (1000) use the low odds, and players at or above it use the mid odds. The HighRep branch comes after the mid check and is never reached, so the high-reputation odds do nothing in this build. Reordering two elseif lines per animal in server/server.lua fixes it.
Config.UseBigFoot lets Bigfoot replace the animal on Config.BigFootChance (5%) of spawns. With Config.UseBigFootNightOnly that only happens between in-game hours 1 and 4, and a kill has a 50% chance to call police. Sell-all pays for Bigfoot from Config.StoreInfo. The single "Sell Big Foot" button reads Config.BigFoot, which the config never defines, so either keep Config.UseSellAll on or point that line at Config.StoreInfo.
One smaller thing: Config.Items declares five slots but lists six goods, so check that whiskey appears in the shop.
Part two: Bounty Contracts
Setting up the bounty contract
- Add the
bounty-contractitem from the readme toqb-core/shared/items.lua, and copyimage/bounty-contract.pnginto qb-inventory's images. - Paste the readme's
bounty-contractblock intoqb-inventory/html/js/app.jsnext to thestickynotecase. That is what shows the target's name, last-seen street, bounty and crime on hover. Without it, the item is a blank card. - Set
Config.Phonetoqborgks. All mail and notifications go through qb-phone or GKS Phone, so a server with neither needs those calls changed. - Move
Config.DeskPedLocationandConfig.DeskPedif you want a different start point or handler.
How a contract plays
The player talks to the handler. About six seconds later a phone mail arrives; ten seconds after that the bounty-contract item lands in their inventory and a circle with a 150-metre radius marks the area. The item is information, not an action: it is set to not usable.
Entering the area spawns the target from Config.TargetPeds with extra armour and health, plus goons from Config.GoonPeds at each GoonLocations point when SpawnGoons is 'true' (a string, quotes included). Goons carry Config.GoonWeapon with 90% accuracy by default. Within about 35 metres the target turns and runs. If the player lets it get 200 metres away, the contract fails.
After the kill, the player searches the body through qb-target, then goes back to the handler to collect. The reward is cash, rolled per location from BountyPay (450 to 800 at all four shipped spots), and the contract item is taken back.
Things to know before going live
- The cooldown is server-wide.
Config.CoolDown(10 minutes) is one flag on the server, so a contract taken by anyone blocks the next for everyone. Config.CallTimeris unused. The waits before the mail and the contract are fixed inclient/client.lua.- The failure path calls a server function on the client.
FailedMsgends withTriggerClientEvent, which does not exist client-side, so after a failed contract the player's state may not reset until they relog. Replacing that line withTriggerEvent('kevin-bounties:client:Clean')is the fix.
Choosing a FiveM hunting script or bounty job
The Hunting Job suits a QBCore server that wants a long-running legal grind with reputation, police tie-ins for protected kills, and a Bigfoot story for players to chase. Budget time for the item and metadata edits, and fix the two ladder issues above if rarity matters to your economy. Bounty Contracts is a short armed job for players who want PvE combat without a robbery, and its open code makes the fixes above quick edits.
Both are sold here as Kevin Scripts last shipped them for QBCore. For the studio's drug work, our coke script comparison sets its Coke Processing against Pug's business, and the Kevin Scripts page lists the rest of the line, including the Bank Truck Robbery for crews who want more guarded NPCs.
Sources
- [[QBCore] Hunting release thread, Cfx.re forum (August 2022)](https://forum.cfx.re/t/qbcore-hunting/4899412)
- Bounty Contracts release thread, Cfx.re forum (August 2022)
- KevinGirardx on GitHub
- qb-target repository
- PolyZone repository