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