Companion Pets
Adopt a dog or a cat at the shelter, or win over a stray with treats. It follows you, rides in your car and is still yours after a restart.
Players adopt a dog or a cat at the animal shelter, or win over a stray with treats, and it follows them around. They tell it to sit, stay or come, feed it, rename it and take it for a ride in the car. The pet is saved to the database: it's still theirs after a logout, a server restart or their own death.
No pet-shop MLO needed. Every pet, shelter and stray uses the game's own animals and base-map spots.
Features
- Shelter with a worker and a map blip: pick a breed, name it, pay the fee. Pet food is sold there too.
- 6 breeds out of the box: husky, golden retriever, shepherd, westie, pug and cat. Prices and the list are in
config.lua. - Strays wander at three spots (Grove Street, Sandy Shores, Paleto Bay). Treats build your bond with one; at full bond it's yours for free. Each player's bond is saved.
- Orders: follow, sit, stay, come, feed, rename, send home, release. From the
/petmenu, a key you bind, or shortcuts like/pet sit. - Car rides: the pet takes a free passenger seat when you get in while it's following, and hops out with you. Bikes, boats and aircraft are skipped.
/pet carseats it in or out by hand. Turn rides off or change seats inConfig.CarRides. - Hunger and bond: hunger drops while the pet is out; feeding brings it back and builds bond, and so does time together. A starving pet sits and won't follow until it's fed. Nothing dies.
- Downed owner: the pet lies down beside you until you're back up, then follows again. The menu keeps working after a death.
- Never lost: a pet that gets left behind or stuck is brought back to you; one that's culled is respawned by the server.
- Server-authoritative: prices are set on the server, adopting, feeding and treats are distance-checked, names are filtered, and hunger and bond are worked out on the server from the time a pet spends out. The client never sends them.
- Spawned by the server: pets are created by the server, not by a player's client.
- Admin:
/petadminlists pets near you, brings one back to its owner, or deletes it. - Built and run on Qbox. QBCore is supported through the framework bridge. ox_inventory or the framework's inventory. ox_target is supported but optional for the shelter and strays.
- Pets are companions only: no K9 work and no attacking. One pet per character.
Requirements
- ox_lib
- oxmysql
- Qbox (
qbx_core), or QBCore (qb-core) through the framework bridge - ox_inventory, or QBCore's inventory
- ox_target supported
Install
- Put the
rr-petsfolder in your resources. - Add the pet food item to your inventory:
ox_inventory (ox_inventory/data/items.lua): ``lua ['pet_food'] = { label = 'Pet Food', weight = 200, stack = true, close = true, description = 'A bag of kibble. Dogs and cats both like it.' }, ``
qb-core (qb-core/shared/items.lua): ``lua pet_food = { name = 'pet_food', label = 'Pet Food', weight = 200, type = 'item', image = 'pet_food.png', unique = false, useable = false, shouldClose = true, description = 'A bag of kibble. Dogs and cats both like it.' }, ` Add an image called pet_food.png` to your inventory's image folder if you want one.
- In
server.cfg, after ox_lib, oxmysql, your framework and your inventory:
`` ensure rr-pets ``
- Start the server. The two tables (
rr_pets,rr_pet_strays_bond) create themselves.sql/install.sqlis included if you'd rather import them yourself. - Optional: give your admins the admin command:
`` add_ace group.admin rr.pets.admin allow ``
The console prints [rr-pets] v1.0.0 ready when it's running, or one line saying what's missing (the framework, or the pet food item).
Commands
| Command | Who | What |
|---|---|---|
/pet | everyone | The pet menu (bind a key to it in Settings > Key Bindings > FiveM) |
/pet call · follow · sit · stay · come · feed · car · home | everyone | Shortcuts for radial menus and key binds |
/petadmin | rr.pets.admin ace | Pets near you: bring one back to its owner, or delete it |
Other resources can use exports['rr-pets']:OpenMenu(), exports['rr-pets']:Do('sit') and exports['rr-pets']:GetPet().
How it plays
- Adopt at the shelter: the worker offers all six breeds, the owner names the pet and pays the fee. One pet per character.
- Strays: three spots around the map. Treats build bond until the stray is yours for free.
- Food: pet food is sold at the shelter. Hunger drops while the pet is out and bond grows as you feed it and spend time together.
- Payment comes from cash or bank, with a fallback to the other account.
- Questions about setup go in a ticket on our Discord.
Last updated 2026-11-02