pawOverview & Setup

A robust, expandable battle pet system for FiveM:

  • Turn-based pet battles vs wild pets, NPC trainers, or other players

  • Wild pet encounters + capture

  • Summon/dismiss pets that follow you

  • Server-authoritative with validation and optimized packets

  • Config-driven species/info/abilities

  • Profile persistence via oxmysql or JSON

Quick Start

1

Install

Drop hoff-battlebuddies into your resources and add this to your server.cfg as the last ensure:

ensure hoff-battlebuddies

Edit config.lua or leave the defaults. Abilities are set up in sh_abilities.lua.

2

Install ox_lib (if you don't have it already)

ox_lib is an incredibly useful function library used across many resources, and required for Battle Buddies. I suggest downloading the communityox version as it is actively maintained.

https://github.com/communityox/ox_lib/releases/latest/arrow-up-right

3

Add items

Add the provided items to your server's items definitions (examples below).

  • For QBCore: resources/[qb]/qb-core/shared/items.lua

  • For ox_inventory: .../ox_inventory/data/items.lua

Items

QB-Core

-- Battle Pet Items
battlepet_journal            = { name = "battlepet_journal", label = "Pet Journal", weight = 500, type = "item", image = "battlepet_journal.png", unique = true, useable = true, shouldClose = true, description = "Use: Open your pet journal." },
battlepet_bandage            = { name = "battlepet_bandage", label = "Pet Bandage", weight = 200, type = "item", image = "battlepet_bandage.png", unique = false, useable = true, shouldClose = true, description = "Use: Heal your pet team to full health." },
battlepet_badge              = { name = "battlepet_badge", label = "Pet Battle Badge", weight = 100, type = "item", image = "battlepet_badge.png", unique = false, useable = false, shouldClose = true, description = "A badge awarded for defeating a pet trainer." },
battlepet_cage               = { name = "battlepet_cage", label = "Pet Cage (Empty)", weight = 500, type = "item", image = "battlepet_cage.png", unique = false, useable = false, shouldClose = true, description = "An empty pet cage used to trap wild pets." },
battlepet_caged_boar         = { name = "battlepet_caged_boar", label = "Pet Cage (Boar)", weight = 500, type = "item", image = "battlepet_caged_boar.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_cat          = { name = "battlepet_caged_cat", label = "Pet Cage (Silver Tabby)", weight = 500, type = "item", image = "battlepet_caged_cat.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_cow          = { name = "battlepet_caged_cow", label = "Pet Cage (Cow)", weight = 500, type = "item", image = "battlepet_caged_cow.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_coyote       = { name = "battlepet_caged_coyote", label = "Pet Cage (Coyote)", weight = 500, type = "item", image = "battlepet_caged_coyote.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_deer         = { name = "battlepet_caged_deer", label = "Pet Cage (Deer)", weight = 500, type = "item", image = "battlepet_caged_deer.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_hen          = { name = "battlepet_caged_hen", label = "Pet Cage (Hen)", weight = 500, type = "item", image = "battlepet_caged_hen.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_husky        = { name = "battlepet_caged_husky", label = "Pet Cage (Husky)", weight = 500, type = "item", image = "battlepet_caged_husky.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_mountainlion = { name = "battlepet_caged_mountainlion", label = "Pet Cage (Mountain Lion)", weight = 500, type = "item", image = "battlepet_caged_mountainlion.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_panther      = { name = "battlepet_caged_panther", label = "Pet Cage (Panther)", weight = 500, type = "item", image = "battlepet_caged_panther.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_pig          = { name = "battlepet_caged_pig", label = "Pet Cage (Pig)", weight = 500, type = "item", image = "battlepet_caged_pig.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_poodle       = { name = "battlepet_caged_poodle", label = "Pet Cage (Poodle)", weight = 500, type = "item", image = "battlepet_caged_poodle.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_pug          = { name = "battlepet_caged_pug", label = "Pet Cage (Pug)", weight = 500, type = "item", image = "battlepet_caged_pug.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_rabbit       = { name = "battlepet_caged_rabbit", label = "Pet Cage (Rabbit)", weight = 500, type = "item", image = "battlepet_caged_rabbit.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_rat          = { name = "battlepet_caged_rat", label = "Pet Cage (Rat)", weight = 500, type = "item", image = "battlepet_caged_rat.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_retriever    = { name = "battlepet_caged_retriever", label = "Pet Cage (Golden Retriever)", weight = 500, type = "item", image = "battlepet_caged_retriever.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_rottweiler   = { name = "battlepet_caged_rottweiler", label = "Pet Cage (Rottweiler)", weight = 500, type = "item", image = "battlepet_caged_rottweiler.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_shepherd     = { name = "battlepet_caged_shepherd", label = "Pet Cage (Shepherd)", weight = 500, type = "item", image = "battlepet_caged_shepherd.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_terrier      = { name = "battlepet_caged_terrier", label = "Pet Cage (Terrier)", weight = 500, type = "item", image = "battlepet_caged_terrier.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },

-- Popcorn RP Raccoon
-- https://popcornrp-store.tebex.io/package/6477354
battlepet_caged_raccoon      = { name = "battlepet_caged_raccoon", label = "Pet Cage (Raccoon)", weight = 500, type = "item", image = "battlepet_caged_raccoon.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },

-- Popcorn RP Otter
-- https://popcornrp-store.tebex.io/package/6710454
battlepet_caged_otter      = { name = "battlepet_caged_otter", label = "Pet Cage (Otter)", weight = 500, type = "item", image = "battlepet_caged_otter.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },

-- Popcorn RP Free Pets
-- https://github.com/alberttheprince/popcornrp-pets
battlepet_caged_robot_dog      = { name = "battlepet_caged_robot_dog", label = "Pet Cage (Robot Dog)", weight = 500, type = "item", image = "battlepet_caged_robot_dog.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_armadillo      = { name = "battlepet_caged_armadillo", label = "Pet Cage (Armadillo)", weight = 500, type = "item", image = "battlepet_caged_armadillo.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_chowchow      = { name = "battlepet_caged_chowchow", label = "Pet Cage (Chow Chow)", weight = 500, type = "item", image = "battlepet_caged_chowchow.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_cockroach     = { name = "battlepet_caged_cockroach", label = "Pet Cage (Cockroach)", weight = 500, type = "item", image = "battlepet_caged_cockroach.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_dalmatian     = { name = "battlepet_caged_dalmatian", label = "Pet Cage (Dalmatian)", weight = 500, type = "item", image = "battlepet_caged_dalmatian.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_doberman      = { name = "battlepet_caged_doberman", label = "Pet Cage (Doberman)", weight = 500, type = "item", image = "battlepet_caged_doberman.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_k9_male       = { name = "battlepet_caged_k9_male", label = "Pet Cage (K9 Male)", weight = 500, type = "item", image = "battlepet_caged_k9_male.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },
battlepet_caged_tarantula     = { name = "battlepet_caged_tarantula", label = "Pet Cage (Tarantula)", weight = 500, type = "item", image = "battlepet_caged_tarantula.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },

-- Popcorn RP Alligator
-- https://popcornrp-store.tebex.io/package/6828221
battlepet_caged_alligator     = { name = "battlepet_caged_alligator", label = "Pet Cage (Alligator)", weight = 500, type = "item", image = "battlepet_caged_alligator.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },

-- Popcorn RP Capybara
-- https://popcornrp-store.tebex.io/package/6774743
battlepet_caged_capybara      = { name = "battlepet_caged_capybara", label = "Pet Cage (Capybara)", weight = 500, type = "item", image = "battlepet_caged_capybara.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },

-- Popcorn RP English Bulldog
-- https://popcornrp-store.tebex.io/package/6461327
battlepet_caged_englishbulldog = { name = "battlepet_caged_englishbulldog", label = "Pet Cage (English Bulldog)", weight = 500, type = "item", image = "battlepet_caged_englishbulldog.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },

-- Popcorn RP Hippo
-- https://popcornrp-store.tebex.io/package/6807423
battlepet_caged_hippo         = { name = "battlepet_caged_hippo", label = "Pet Cage (Hippo)", weight = 500, type = "item", image = "battlepet_caged_hippo.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },

-- Popcorn RP Arctic Fox
-- https://popcornrp-store.tebex.io/package/6551883
battlepet_caged_arcticfox     = { name = "battlepet_caged_arcticfox", label = "Pet Cage (Arctic Fox)", weight = 500, type = "item", image = "battlepet_caged_arcticfox.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },

-- Popcorn RP Husky Puppy
-- https://popcornrp-store.tebex.io/package/6895935
battlepet_caged_huskypuppy    = { name = "battlepet_caged_huskypuppy", label = "Pet Cage (Husky Puppy)", weight = 500, type = "item", image = "battlepet_caged_huskypuppy.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },

-- Popcorn RP Malinois / German Shepherd - Puppy
-- https://popcornrp-store.tebex.io/package/6896027
battlepet_caged_malsheppuppy  = { name = "battlepet_caged_malsheppuppy", label = "Pet Cage (Malinois Puppy)", weight = 500, type = "item", image = "battlepet_caged_malsheppuppy.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },

-- Popcorn RP Pygmy Hippo
-- https://popcornrp-store.tebex.io/package/7059803
battlepet_caged_pygmyhippo    = { name = "battlepet_caged_pygmyhippo", label = "Pet Cage (Pygmy Hippo)", weight = 500, type = "item", image = "battlepet_caged_pygmyhippo.png", unique = true, useable = true, shouldClose = true, description = "Use: Add this pet to your collection." },

Ox Inventory

Last updated