[{"data":1,"prerenderedAt":796},["ShallowReactive",2],{"/docs/base/jobs-base/client-exports/storage":3,"/docs/base/jobs-base/client-exports/storage-surround":784,"/docs/base/jobs-base/client-exports/storage-implemented-suggestions":795},{"id":4,"title":5,"body":6,"description":775,"extension":776,"head":777,"implementedSuggestions":777,"meta":778,"navigation":145,"path":779,"schemaOrg":777,"seo":780,"sitemap":781,"stem":782,"__hash__":783},"docs/1.docs/base/2.jobs-base/3.client-exports/6.storage.md","Storage",{"type":7,"value":8,"toc":768},"minimark",[9,17,21,29,86,184,190,232,301,307,437,746,764],[10,11,12],"p",{},[13,14,16],"a",{"href":15},"/docs/base/jobs-base/client-exports","All client exports",[18,19,5],"h2",{"id":20},"storage",[22,23,25],"h3",{"id":24},"getnearbytrunkproptargetmaxdistance",[26,27,28],"code",{},"getNearbyTrunkPropTarget(maxDistance)",[30,31,32,40,58],"ul",{},[33,34,35,39],"li",{},[36,37,38],"strong",{},"Purpose",": Finds the nearest managed trunk prop within the given distance.",[33,41,42,45,46],{},[36,43,44],{},"Arguments",":\n",[30,47,48],{},[33,49,50,53,54,57],{},[26,51,52],{},"maxDistance"," (",[26,55,56],{},"number",") — search radius in game units.",[33,59,60,63,64,67],{},[36,61,62],{},"Returns",": ",[26,65,66],{},"table | nil",[30,68,69,77],{},[33,70,71,53,74,76],{},[26,72,73],{},"distance",[26,75,56],{},") — distance to the prop.",[33,78,79,53,82,85],{},[26,80,81],{},"label",[26,83,84],{},"string",") — display label.",[87,88,93],"pre",{"className":89,"code":90,"language":91,"meta":92,"style":92},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","local target = exports[\"sky_jobs_base\"]:getNearbyTrunkPropTarget(5.0)\n\nif target then\n    print(target.label, target.distance)\nend\n","lua","",[26,94,95,140,147,159,178],{"__ignoreMap":92},[96,97,100,104,108,111,114,117,121,123,126,130,133,137],"span",{"class":98,"line":99},"line",1,[96,101,103],{"class":102},"sMK4o","local",[96,105,107],{"class":106},"sTEyZ"," target ",[96,109,110],{"class":102},"=",[96,112,113],{"class":106}," exports[",[96,115,116],{"class":102},"\"",[96,118,120],{"class":119},"sfazB","sky_jobs_base",[96,122,116],{"class":102},[96,124,125],{"class":106},"]:",[96,127,129],{"class":128},"s2Zo4","getNearbyTrunkPropTarget",[96,131,132],{"class":106},"(",[96,134,136],{"class":135},"sbssI","5.0",[96,138,139],{"class":106},")\n",[96,141,143],{"class":98,"line":142},2,[96,144,146],{"emptyLinePlaceholder":145},true,"\n",[96,148,150,154,156],{"class":98,"line":149},3,[96,151,153],{"class":152},"s7zQu","if",[96,155,107],{"class":106},[96,157,158],{"class":152},"then\n",[96,160,162,165,168,171,174,176],{"class":98,"line":161},4,[96,163,164],{"class":128},"    print",[96,166,167],{"class":106},"(target.",[96,169,81],{"class":170},"sBMFI",[96,172,173],{"class":106},", target.",[96,175,73],{"class":170},[96,177,139],{"class":106},[96,179,181],{"class":98,"line":180},5,[96,182,183],{"class":152},"end\n",[22,185,187],{"id":186},"removenearbytrunkpropmaxdistance",[26,188,189],{},"removeNearbyTrunkProp(maxDistance)",[30,191,192,197,210],{},[33,193,194,196],{},[36,195,38],{},": Removes the nearest managed trunk prop.",[33,198,199,45,201],{},[36,200,44],{},[30,202,203],{},[33,204,205,53,207,209],{},[26,206,52],{},[26,208,56],{},") — search radius.",[33,211,212,45,214],{},[36,213,62],{},[30,215,216,226],{},[33,217,218,221,222,225],{},[26,219,220],{},"boolean"," — ",[26,223,224],{},"true"," on success.",[33,227,228,231],{},[26,229,230],{},"string?"," — on failure, a locale key describing the error.",[87,233,235],{"className":89,"code":234,"language":91,"meta":92,"style":92},"local success, errorKey = exports[\"sky_jobs_base\"]:removeNearbyTrunkProp(5.0)\n\nif not success then\n    print(\"Failed:\", errorKey)\nend\n",[26,236,237,265,269,281,297],{"__ignoreMap":92},[96,238,239,241,244,246,248,250,252,254,256,259,261,263],{"class":98,"line":99},[96,240,103],{"class":102},[96,242,243],{"class":106}," success, errorKey ",[96,245,110],{"class":102},[96,247,113],{"class":106},[96,249,116],{"class":102},[96,251,120],{"class":119},[96,253,116],{"class":102},[96,255,125],{"class":106},[96,257,258],{"class":128},"removeNearbyTrunkProp",[96,260,132],{"class":106},[96,262,136],{"class":135},[96,264,139],{"class":106},[96,266,267],{"class":98,"line":142},[96,268,146],{"emptyLinePlaceholder":145},[96,270,271,273,276,279],{"class":98,"line":149},[96,272,153],{"class":152},[96,274,275],{"class":102}," not",[96,277,278],{"class":106}," success ",[96,280,158],{"class":152},[96,282,283,285,287,289,292,294],{"class":98,"line":161},[96,284,164],{"class":128},[96,286,132],{"class":106},[96,288,116],{"class":102},[96,290,291],{"class":119},"Failed:",[96,293,116],{"class":102},[96,295,296],{"class":106},", errorKey)\n",[96,298,299],{"class":98,"line":180},[96,300,183],{"class":152},[22,302,304],{"id":303},"starttrunkpropplacementprop-options",[26,305,306],{},"startTrunkPropPlacement(prop, options)",[30,308,309,314,427],{},[33,310,311,313],{},[36,312,38],{},": Starts the shared preview / place / cancel flow for a prop definition supplied by the calling client resource.",[33,315,316,45,318],{},[36,317,44],{},[30,319,320,340],{},[33,321,322,53,325,328,329,332,333,336,337,339],{},[26,323,324],{},"prop",[26,326,327],{},"table",") - prop definition with ",[26,330,331],{},"model"," (or ",[26,334,335],{},"name"," as its fallback), optional ",[26,338,81],{},", and optional preview settings.",[33,341,342,53,345,348,349],{},[26,343,344],{},"options",[26,346,347],{},"table?",") - optional placement settings:\n",[30,350,351,359,371,386,399,408,419],{},[33,352,353,53,356,358],{},[26,354,355],{},"placementToken",[26,357,230],{},") - token issued by the built-in registered PropItems item flow.",[33,360,361,53,364,366,367,370],{},[26,362,363],{},"placeCallback",[26,365,230],{},") - ",[26,368,369],{},"Sky.Cb"," server callback invoked after the shared prop is registered.",[33,372,373,53,376,378,379,381,382,385],{},[26,374,375],{},"placeContext",[26,377,347],{},") - payload passed to ",[26,380,363],{},"; Jobs Base adds the new ",[26,383,384],{},"propId"," before invoking it.",[33,387,388,53,391,394,395,398],{},[26,389,390],{},"amount",[26,392,393],{},"number?",") - finite number of placements the client may confirm; defaults to ",[26,396,397],{},"1",".",[33,400,401,53,404,407],{},[26,402,403],{},"unlimited",[26,405,406],{},"boolean?",") - keep placement mode open until the player cancels it.",[33,409,410,53,413,415,416,418],{},[26,411,412],{},"stopAfterPlace",[26,414,406],{},") - when ",[26,417,224],{},", placement mode closes after one successful placement.",[33,420,421,53,424,426],{},[26,422,423],{},"radialInteraction",[26,425,406],{},") - mark the preview for radial-only confirmation/removal flows.",[33,428,429,63,431,433,434,436],{},[36,430,62],{},[26,432,220],{}," - ",[26,435,224],{}," when placement mode started.",[438,439,440,562],"code-group",{},[87,441,444],{"className":89,"code":442,"filename":443,"language":91,"meta":92,"style":92},"Sky.Cb.Register(\"my_resource:confirmRepairCratePlacement\", function(source, context)\n    if not canUseRepairCrate(source, context) or not consumeRepairCrate(source) then\n        return { success = false }\n    end\n\n    return { success = true }\nend)\n","server.lua",[26,445,446,488,514,530,535,539,554],{"__ignoreMap":92},[96,447,448,451,454,456,459,461,463,466,468,471,474,476,480,483,486],{"class":98,"line":99},[96,449,450],{"class":106},"Sky.",[96,452,453],{"class":170},"Cb",[96,455,398],{"class":106},[96,457,458],{"class":128},"Register",[96,460,132],{"class":106},[96,462,116],{"class":102},[96,464,465],{"class":119},"my_resource:confirmRepairCratePlacement",[96,467,116],{"class":102},[96,469,470],{"class":106},", ",[96,472,473],{"class":152},"function",[96,475,132],{"class":102},[96,477,479],{"class":478},"sHdIc","source",[96,481,482],{"class":102},",",[96,484,485],{"class":478}," context",[96,487,139],{"class":102},[96,489,490,493,495,498,501,504,506,509,512],{"class":98,"line":142},[96,491,492],{"class":152},"    if",[96,494,275],{"class":102},[96,496,497],{"class":128}," canUseRepairCrate",[96,499,500],{"class":106},"(source, context) ",[96,502,503],{"class":102},"or",[96,505,275],{"class":102},[96,507,508],{"class":128}," consumeRepairCrate",[96,510,511],{"class":106},"(source) ",[96,513,158],{"class":152},[96,515,516,519,522,524,527],{"class":98,"line":149},[96,517,518],{"class":152},"        return",[96,520,521],{"class":106}," { success ",[96,523,110],{"class":102},[96,525,526],{"class":102}," false",[96,528,529],{"class":106}," }\n",[96,531,532],{"class":98,"line":161},[96,533,534],{"class":152},"    end\n",[96,536,537],{"class":98,"line":180},[96,538,146],{"emptyLinePlaceholder":145},[96,540,542,545,547,549,552],{"class":98,"line":541},6,[96,543,544],{"class":152},"    return",[96,546,521],{"class":106},[96,548,110],{"class":102},[96,550,551],{"class":102}," true",[96,553,529],{"class":106},[96,555,557,560],{"class":98,"line":556},7,[96,558,559],{"class":152},"end",[96,561,139],{"class":106},[87,563,566],{"className":89,"code":564,"filename":565,"language":91,"meta":92,"style":92},"RegisterNetEvent(\"my_resource:placeRepairCrate\", function(crateId)\n    exports[\"sky_jobs_base\"]:startTrunkPropPlacement({\n        name = \"repair_crate\",\n        label = \"Repair Crate\",\n        model = \"prop_box_wood02a_pu\",\n        streamDistance = 150.0,\n        removeDistance = 3.0\n    }, {\n        placeCallback = \"my_resource:confirmRepairCratePlacement\",\n        placeContext = { crateId = crateId },\n        stopAfterPlace = true\n    })\nend)\n","client.lua",[26,567,568,593,612,630,646,662,674,684,690,706,722,733,739],{"__ignoreMap":92},[96,569,570,573,575,577,580,582,584,586,588,591],{"class":98,"line":99},[96,571,572],{"class":128},"RegisterNetEvent",[96,574,132],{"class":106},[96,576,116],{"class":102},[96,578,579],{"class":119},"my_resource:placeRepairCrate",[96,581,116],{"class":102},[96,583,470],{"class":106},[96,585,473],{"class":152},[96,587,132],{"class":102},[96,589,590],{"class":478},"crateId",[96,592,139],{"class":102},[96,594,595,598,600,602,604,606,609],{"class":98,"line":142},[96,596,597],{"class":106},"    exports[",[96,599,116],{"class":102},[96,601,120],{"class":119},[96,603,116],{"class":102},[96,605,125],{"class":106},[96,607,608],{"class":128},"startTrunkPropPlacement",[96,610,611],{"class":106},"({\n",[96,613,614,617,619,622,625,627],{"class":98,"line":149},[96,615,616],{"class":106},"        name ",[96,618,110],{"class":102},[96,620,621],{"class":102}," \"",[96,623,624],{"class":119},"repair_crate",[96,626,116],{"class":102},[96,628,629],{"class":106},",\n",[96,631,632,635,637,639,642,644],{"class":98,"line":161},[96,633,634],{"class":106},"        label ",[96,636,110],{"class":102},[96,638,621],{"class":102},[96,640,641],{"class":119},"Repair Crate",[96,643,116],{"class":102},[96,645,629],{"class":106},[96,647,648,651,653,655,658,660],{"class":98,"line":180},[96,649,650],{"class":106},"        model ",[96,652,110],{"class":102},[96,654,621],{"class":102},[96,656,657],{"class":119},"prop_box_wood02a_pu",[96,659,116],{"class":102},[96,661,629],{"class":106},[96,663,664,667,669,672],{"class":98,"line":541},[96,665,666],{"class":106},"        streamDistance ",[96,668,110],{"class":102},[96,670,671],{"class":135}," 150.0",[96,673,629],{"class":106},[96,675,676,679,681],{"class":98,"line":556},[96,677,678],{"class":106},"        removeDistance ",[96,680,110],{"class":102},[96,682,683],{"class":135}," 3.0\n",[96,685,687],{"class":98,"line":686},8,[96,688,689],{"class":106},"    }, {\n",[96,691,693,696,698,700,702,704],{"class":98,"line":692},9,[96,694,695],{"class":106},"        placeCallback ",[96,697,110],{"class":102},[96,699,621],{"class":102},[96,701,465],{"class":119},[96,703,116],{"class":102},[96,705,629],{"class":106},[96,707,709,712,714,717,719],{"class":98,"line":708},10,[96,710,711],{"class":106},"        placeContext ",[96,713,110],{"class":102},[96,715,716],{"class":106}," { crateId ",[96,718,110],{"class":102},[96,720,721],{"class":106}," crateId },\n",[96,723,725,728,730],{"class":98,"line":724},11,[96,726,727],{"class":106},"        stopAfterPlace ",[96,729,110],{"class":102},[96,731,732],{"class":102}," true\n",[96,734,736],{"class":98,"line":735},12,[96,737,738],{"class":106},"    })\n",[96,740,742,744],{"class":98,"line":741},13,[96,743,559],{"class":152},[96,745,139],{"class":106},[747,748,751],"callout",{"color":749,"icon":750},"info","i-lucide-info",[10,752,753,754,756,757,759,760,763],{},"When ",[26,755,363],{}," is set, it must return ",[26,758,224],{}," or ",[26,761,762],{},"{ success = true }",". A rejected or invalid response removes the newly registered prop and ends placement. Canceling the preview does not invoke the callback.",[765,766,767],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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);}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":92,"searchDepth":99,"depth":142,"links":769},[770],{"id":20,"depth":142,"text":5,"children":771},[772,773,774],{"id":24,"depth":149,"text":28},{"id":186,"depth":149,"text":189},{"id":303,"depth":149,"text":306},"Reference for Storage in sky_jobs_base.","md",null,{},"/docs/base/jobs-base/client-exports/storage",{"title":5,"description":775},{"loc":779},"1.docs/base/2.jobs-base/3.client-exports/6.storage","WzmGvVkPWWXaq03xXgvY9zp_nd4z7_yYz0deMj3eOYE",[785,790],{"title":786,"path":787,"stem":788,"description":789,"children":-1},"Radial Menu","/docs/base/jobs-base/client-exports/radial-menu","1.docs/base/2.jobs-base/3.client-exports/5.radial-menu","Reference for Radial Menu in sky_jobs_base.",{"title":791,"path":792,"stem":793,"description":794,"children":-1},"External Garage Integration","/docs/base/jobs-base/client-exports/external-garage-integration","1.docs/base/2.jobs-base/3.client-exports/7.external-garage-integration","Reference for External Garage Integration in sky_jobs_base.",[],1791814188473]