Browse docs

Shop setup

Position the Sky Pets shop, preview camera, breed catalogue, supplies counter, and purchase settings.

The core includes a Vinewood pet-shop interior, a configured pet_shop interaction and a linked pet_supplies shop. The shop NPC lets players choose pets or supplies. The supplies counter uses the linked pet shop's proximity and preview placement.

These positions are shipped in source/shared/default_config.lua and set explicitly in config/config.lua. All shop and preview points are inside the bundled MLO. The entrance is only a landmark; players walk to the cashier to open the menu.

PointDefaultPurpose
Entrancevector3(-172.99, 238.32, 92.27)Street entrance, facing 355°; no menu opens here
Pet shop and supplies NPCvector3(-169.0462, 226.0295, 92.27)Cashier interaction for both menus, 2.5 m range
NPC heading355.0Seller faces the customer side of the counter
Dog previewvector4(-173.7047, 230.1512, 92.27, 355.0)Preview position in the clear aisle
Cameravector3(-173.4606, 232.9405, 93.42)Shop preview camera
Camera targetvector3(-173.7047, 230.1512, 92.67)Point the camera tracks
Field of view30.0Default preview framing

The MLO is part of sky_pets/stream/Petshop/; no separate map resource is required. The image above is an asset preview, so check placement and rendering in FiveM.

Create or edit a shop

Open /petsconfig, go to Shops & locations, and edit the shop row. Each pet shop has an ID, interaction coordinates and range, optional NPC data, a dog preview position, camera position, camera target, FOV and a list of breed IDs. Capture positions in the world, save, then reopen the shop to test the camera against the actual interior. Shop edits rebuild interaction points.

For file-based configuration, use per-field assignments in config/config.lua:

sky_pets/config/config.lua
Config.Shops.pet_shop.coords = vector3(-169.0462, 226.0295, 92.27)
Config.Shops.pet_shop.distance = 2.5
Config.Shops.pet_shop.interactionPed.heading = 355.0
Config.Shops.pet_shop.dog = vector4(-173.7047, 230.1512, 92.27, 355.0)
Config.Shops.pet_shop.camera = vector3(-173.4606, 232.9405, 93.42)
Config.Shops.pet_shop.target = vector3(-173.7047, 230.1512, 92.67)
Config.Shops.pet_shop.fov = 30.0
Config.Shops.pet_shop.breeds = {
    "rottweiler", "retriever", "husky", "shepherd",
    "pug", "poodle", "westy",
}

The example uses the shipped core breed IDs. pet_supplies shares the cashier point in the shipped defaults. Existing /petsconfig SQL settings can override these Lua positions for both pet_shop and pet_supplies. Update both entries in Shops & locations, or restart and run /petsconfig import to replace saved managed settings with the Lua configuration. The import affects other managed settings too, so review them before importing. Add-ons have their own breed registration and are not covered here.

Purchase and preview behavior

  • The preview supports configured coats and collars, camera rotation and zoom. A breed whose model or sitting animation fails to load cannot complete a valid preview.
  • Config.ShopPuppiesOnly = true maps adult shop entries to puppies; set it to false to offer the ages explicitly listed in the shop.
  • Prices come from server configuration. Config.BreedSettings.<id> can override a core breed's price and enabled state. The server validates breed, coat, collar, name, gender, proximity and configured price before charging Config.Account.
  • Names default to 2–24 characters. The server stores ownership and receipt data; a failed database write does not create a pet.
  • Supplies and clothing prices are configured separately in Supplies and ClothingPrices. The inventory must contain matching item IDs.

The shop's suppliesShop link controls the in-menu supplies route. Use the OpenShop and OpenSuppliesShop exports when another client resource needs to open a configured shop directly.