[{"data":1,"prerenderedAt":653},["ShallowReactive",2],{"/docs/scripts/pets/setup/shop-setup":3,"/docs/scripts/pets/setup/shop-setup-surround":641,"/docs/scripts/pets/setup/shop-setup-implemented-suggestions":652},{"id":4,"title":5,"body":6,"description":631,"extension":632,"head":633,"implementedSuggestions":633,"meta":634,"navigation":635,"path":636,"schemaOrg":633,"seo":637,"sitemap":638,"stem":639,"__hash__":640},"docs/1.docs/scripts/5.pets/2.setup/3.shop-setup.md","Shop setup",{"type":7,"value":8,"toc":627},"minimark",[9,22,29,45,159,166,171,182,188,540,566,570,610,623],[10,11,12,13,17,18,21],"p",{},"The core includes a Vinewood pet-shop interior, a configured ",[14,15,16],"code",{},"pet_shop"," interaction and a linked ",[14,19,20],{},"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.",[10,23,24],{},[25,26],"img",{"alt":27,"src":28},"Interior of the included Vinewood Petshop MLO","/docs/pets/vinewood-petshop-interior.webp",[10,30,31,32,35,36,39,40,44],{},"These positions are shipped in ",[14,33,34],{},"source/shared/default_config.lua"," and set explicitly in ",[14,37,38],{},"config/config.lua",". All shop and preview points are ",[41,42,43],"strong",{},"inside the bundled MLO",". The entrance is only a landmark; players walk to the cashier to open the menu.",[46,47,48,64],"table",{},[49,50,51],"thead",{},[52,53,54,58,61],"tr",{},[55,56,57],"th",{},"Point",[55,59,60],{},"Default",[55,62,63],{},"Purpose",[65,66,67,81,94,107,120,133,146],"tbody",{},[52,68,69,73,78],{},[70,71,72],"td",{},"Entrance",[70,74,75],{},[14,76,77],{},"vector3(-172.99, 238.32, 92.27)",[70,79,80],{},"Street entrance, facing 355°; no menu opens here",[52,82,83,86,91],{},[70,84,85],{},"Pet shop and supplies NPC",[70,87,88],{},[14,89,90],{},"vector3(-169.0462, 226.0295, 92.27)",[70,92,93],{},"Cashier interaction for both menus, 2.5 m range",[52,95,96,99,104],{},[70,97,98],{},"NPC heading",[70,100,101],{},[14,102,103],{},"355.0",[70,105,106],{},"Seller faces the customer side of the counter",[52,108,109,112,117],{},[70,110,111],{},"Dog preview",[70,113,114],{},[14,115,116],{},"vector4(-173.7047, 230.1512, 92.27, 355.0)",[70,118,119],{},"Preview position in the clear aisle",[52,121,122,125,130],{},[70,123,124],{},"Camera",[70,126,127],{},[14,128,129],{},"vector3(-173.4606, 232.9405, 93.42)",[70,131,132],{},"Shop preview camera",[52,134,135,138,143],{},[70,136,137],{},"Camera target",[70,139,140],{},[14,141,142],{},"vector3(-173.7047, 230.1512, 92.67)",[70,144,145],{},"Point the camera tracks",[52,147,148,151,156],{},[70,149,150],{},"Field of view",[70,152,153],{},[14,154,155],{},"30.0",[70,157,158],{},"Default preview framing",[10,160,161,162,165],{},"The MLO is part of ",[14,163,164],{},"sky_pets/stream/Petshop/","; no separate map resource is required. The image above is an asset preview, so check placement and rendering in FiveM.",[167,168,170],"h2",{"id":169},"create-or-edit-a-shop","Create or edit a shop",[10,172,173,174,177,178,181],{},"Open ",[14,175,176],{},"/petsconfig",", go to ",[41,179,180],{},"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.",[10,183,184,185,187],{},"For file-based configuration, use per-field assignments in ",[14,186,38],{},":",[189,190,196],"pre",{"className":191,"code":192,"filename":193,"language":194,"meta":195,"style":195},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Config.Shops.pet_shop.coords = vector3(-169.0462, 226.0295, 92.27)\nConfig.Shops.pet_shop.distance = 2.5\nConfig.Shops.pet_shop.interactionPed.heading = 355.0\nConfig.Shops.pet_shop.dog = vector4(-173.7047, 230.1512, 92.27, 355.0)\nConfig.Shops.pet_shop.camera = vector3(-173.4606, 232.9405, 93.42)\nConfig.Shops.pet_shop.target = vector3(-173.7047, 230.1512, 92.67)\nConfig.Shops.pet_shop.fov = 30.0\nConfig.Shops.pet_shop.breeds = {\n    \"rottweiler\", \"retriever\", \"husky\", \"shepherd\",\n    \"pug\", \"poodle\", \"westy\",\n}\n","sky_pets/config/config.lua","lua","",[14,197,198,253,274,300,343,382,419,440,461,504,534],{"__ignoreMap":195},[199,200,203,207,211,214,216,218,221,225,229,232,235,239,242,245,247,250],"span",{"class":201,"line":202},"line",1,[199,204,206],{"class":205},"sTEyZ","Config.",[199,208,210],{"class":209},"sBMFI","Shops",[199,212,213],{"class":205},".",[199,215,16],{"class":209},[199,217,213],{"class":205},[199,219,220],{"class":209},"coords",[199,222,224],{"class":223},"sMK4o"," =",[199,226,228],{"class":227},"s2Zo4"," vector3",[199,230,231],{"class":205},"(",[199,233,234],{"class":223},"-",[199,236,238],{"class":237},"sbssI","169.0462",[199,240,241],{"class":205},", ",[199,243,244],{"class":237},"226.0295",[199,246,241],{"class":205},[199,248,249],{"class":237},"92.27",[199,251,252],{"class":205},")\n",[199,254,256,258,260,262,264,266,269,271],{"class":201,"line":255},2,[199,257,206],{"class":205},[199,259,210],{"class":209},[199,261,213],{"class":205},[199,263,16],{"class":209},[199,265,213],{"class":205},[199,267,268],{"class":209},"distance",[199,270,224],{"class":223},[199,272,273],{"class":237}," 2.5\n",[199,275,277,279,281,283,285,287,290,292,295,297],{"class":201,"line":276},3,[199,278,206],{"class":205},[199,280,210],{"class":209},[199,282,213],{"class":205},[199,284,16],{"class":209},[199,286,213],{"class":205},[199,288,289],{"class":209},"interactionPed",[199,291,213],{"class":205},[199,293,294],{"class":209},"heading",[199,296,224],{"class":223},[199,298,299],{"class":237}," 355.0\n",[199,301,303,305,307,309,311,313,316,318,321,323,325,328,330,333,335,337,339,341],{"class":201,"line":302},4,[199,304,206],{"class":205},[199,306,210],{"class":209},[199,308,213],{"class":205},[199,310,16],{"class":209},[199,312,213],{"class":205},[199,314,315],{"class":209},"dog",[199,317,224],{"class":223},[199,319,320],{"class":227}," vector4",[199,322,231],{"class":205},[199,324,234],{"class":223},[199,326,327],{"class":237},"173.7047",[199,329,241],{"class":205},[199,331,332],{"class":237},"230.1512",[199,334,241],{"class":205},[199,336,249],{"class":237},[199,338,241],{"class":205},[199,340,103],{"class":237},[199,342,252],{"class":205},[199,344,346,348,350,352,354,356,359,361,363,365,367,370,372,375,377,380],{"class":201,"line":345},5,[199,347,206],{"class":205},[199,349,210],{"class":209},[199,351,213],{"class":205},[199,353,16],{"class":209},[199,355,213],{"class":205},[199,357,358],{"class":209},"camera",[199,360,224],{"class":223},[199,362,228],{"class":227},[199,364,231],{"class":205},[199,366,234],{"class":223},[199,368,369],{"class":237},"173.4606",[199,371,241],{"class":205},[199,373,374],{"class":237},"232.9405",[199,376,241],{"class":205},[199,378,379],{"class":237},"93.42",[199,381,252],{"class":205},[199,383,385,387,389,391,393,395,398,400,402,404,406,408,410,412,414,417],{"class":201,"line":384},6,[199,386,206],{"class":205},[199,388,210],{"class":209},[199,390,213],{"class":205},[199,392,16],{"class":209},[199,394,213],{"class":205},[199,396,397],{"class":209},"target",[199,399,224],{"class":223},[199,401,228],{"class":227},[199,403,231],{"class":205},[199,405,234],{"class":223},[199,407,327],{"class":237},[199,409,241],{"class":205},[199,411,332],{"class":237},[199,413,241],{"class":205},[199,415,416],{"class":237},"92.67",[199,418,252],{"class":205},[199,420,422,424,426,428,430,432,435,437],{"class":201,"line":421},7,[199,423,206],{"class":205},[199,425,210],{"class":209},[199,427,213],{"class":205},[199,429,16],{"class":209},[199,431,213],{"class":205},[199,433,434],{"class":209},"fov",[199,436,224],{"class":223},[199,438,439],{"class":237}," 30.0\n",[199,441,443,445,447,449,451,453,456,458],{"class":201,"line":442},8,[199,444,206],{"class":205},[199,446,210],{"class":209},[199,448,213],{"class":205},[199,450,16],{"class":209},[199,452,213],{"class":205},[199,454,455],{"class":209},"breeds",[199,457,224],{"class":223},[199,459,460],{"class":205}," {\n",[199,462,464,467,471,474,476,478,481,483,485,487,490,492,494,496,499,501],{"class":201,"line":463},9,[199,465,466],{"class":223},"    \"",[199,468,470],{"class":469},"sfazB","rottweiler",[199,472,473],{"class":223},"\"",[199,475,241],{"class":205},[199,477,473],{"class":223},[199,479,480],{"class":469},"retriever",[199,482,473],{"class":223},[199,484,241],{"class":205},[199,486,473],{"class":223},[199,488,489],{"class":469},"husky",[199,491,473],{"class":223},[199,493,241],{"class":205},[199,495,473],{"class":223},[199,497,498],{"class":469},"shepherd",[199,500,473],{"class":223},[199,502,503],{"class":205},",\n",[199,505,507,509,512,514,516,518,521,523,525,527,530,532],{"class":201,"line":506},10,[199,508,466],{"class":223},[199,510,511],{"class":469},"pug",[199,513,473],{"class":223},[199,515,241],{"class":205},[199,517,473],{"class":223},[199,519,520],{"class":469},"poodle",[199,522,473],{"class":223},[199,524,241],{"class":205},[199,526,473],{"class":223},[199,528,529],{"class":469},"westy",[199,531,473],{"class":223},[199,533,503],{"class":205},[199,535,537],{"class":201,"line":536},11,[199,538,539],{"class":205},"}\n",[10,541,542,543,545,546,548,549,552,553,555,556,558,559,561,562,565],{},"The example uses the shipped core breed IDs. ",[14,544,20],{}," shares the cashier point in the shipped defaults. Existing ",[14,547,176],{}," SQL settings can override these Lua positions for ",[41,550,551],{},"both"," ",[14,554,16],{}," and ",[14,557,20],{},". Update both entries in ",[41,560,180],{},", or restart and run ",[14,563,564],{},"/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.",[167,567,569],{"id":568},"purchase-and-preview-behavior","Purchase and preview behavior",[571,572,573,577,587,597,600],"ul",{},[574,575,576],"li",{},"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.",[574,578,579,582,583,586],{},[14,580,581],{},"Config.ShopPuppiesOnly = true"," maps adult shop entries to puppies; set it to ",[14,584,585],{},"false"," to offer the ages explicitly listed in the shop.",[574,588,589,590,593,594,213],{},"Prices come from server configuration. ",[14,591,592],{},"Config.BreedSettings.\u003Cid>"," can override a core breed's price and enabled state. The server validates breed, coat, collar, name, gender, proximity and configured price before charging ",[14,595,596],{},"Config.Account",[574,598,599],{},"Names default to 2–24 characters. The server stores ownership and receipt data; a failed database write does not create a pet.",[574,601,602,603,555,606,609],{},"Supplies and clothing prices are configured separately in ",[41,604,605],{},"Supplies",[41,607,608],{},"ClothingPrices",". The inventory must contain matching item IDs.",[10,611,612,613,616,617,622],{},"The shop's ",[14,614,615],{},"suppliesShop"," link controls the in-menu supplies route. Use the ",[618,619,621],"a",{"href":620},"../reference/exports","OpenShop and OpenSuppliesShop exports"," when another client resource needs to open a configured shop directly.",[624,625,626],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":195,"searchDepth":202,"depth":255,"links":628},[629,630],{"id":169,"depth":255,"text":170},{"id":568,"depth":255,"text":569},"Position the Sky Pets shop, preview camera, breed catalogue, supplies counter, and purchase settings.","md",null,{},true,"/docs/scripts/pets/setup/shop-setup",{"title":5,"description":631},{"loc":636},"1.docs/scripts/5.pets/2.setup/3.shop-setup","Vxw2ow-9E32ukgid9O8pyFg9BZVcEWi72fdjltuDPIE",[642,647],{"title":643,"path":644,"stem":645,"description":646,"children":-1},"Configuration","/docs/scripts/pets/setup/configuration","1.docs/scripts/5.pets/2.setup/2.configuration","Configure Sky Pets with /petsconfig, Lua overrides, themes, breed prices, gameplay settings, and permissions.",{"title":648,"path":649,"stem":650,"description":651,"children":-1},"First steps","/docs/scripts/pets/setup/first-steps","1.docs/scripts/5.pets/2.setup/4.first-steps","Walk through the first pet purchase, companion controls, care, training, and persistence check.",[],1790206628047]