[{"data":1,"prerenderedAt":434},["ShallowReactive",2],{"navigation_docs":3,"-client-addons-locker":145,"-client-addons-locker-surround":429},[4,27,41,93],{"title":5,"path":6,"stem":7,"children":8,"icon":26},"Getting Started","\u002Fgetting-started","1.getting-started\u002F0.index",[9,10,14,18,22],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Framework Architecture","\u002Fgetting-started\u002Farchitecture","1.getting-started\u002F1.architecture",{"title":15,"path":16,"stem":17},"Module Reference","\u002Fgetting-started\u002Fmodule-reference","1.getting-started\u002F2.module-reference",{"title":19,"path":20,"stem":21},"Development Guide","\u002Fgetting-started\u002Fdevelopment","1.getting-started\u002F3.development",{"title":23,"path":24,"stem":25},"SurrealDB Setup","\u002Fgetting-started\u002Fsurrealdb-setup","1.getting-started\u002F4.surrealdb-setup","i-lucide-rocket",{"title":28,"path":29,"stem":30,"children":31},"Forge Server Extension","\u002Fserver-extension","2.server-extension\u002F0.index",[32,33,37],{"title":28,"path":29,"stem":30},{"title":34,"path":35,"stem":36},"Forge Server API Reference","\u002Fserver-extension\u002Fapi-reference","2.server-extension\u002F1.api-reference",{"title":38,"path":39,"stem":40},"Forge Server Usage Examples","\u002Fserver-extension\u002Fusage-examples","2.server-extension\u002F2.usage-examples",{"title":42,"path":43,"stem":44,"children":45,"icon":92},"Server Modules","\u002Fserver-modules","3.server-modules\u002F0.index",[46,48,52,56,60,64,68,72,76,80,84,88],{"title":47,"path":43,"stem":44},"Server Module Guides",{"title":49,"path":50,"stem":51},"Actor Usage Guide","\u002Fserver-modules\u002Factor","3.server-modules\u002F1.actor",{"title":53,"path":54,"stem":55},"Store Usage Guide","\u002Fserver-modules\u002Fstore","3.server-modules\u002F10.store",{"title":57,"path":58,"stem":59},"Task Usage Guide","\u002Fserver-modules\u002Ftask","3.server-modules\u002F11.task",{"title":61,"path":62,"stem":63},"Bank Usage Guide","\u002Fserver-modules\u002Fbank","3.server-modules\u002F2.bank",{"title":65,"path":66,"stem":67},"CAD Usage Guide","\u002Fserver-modules\u002Fcad","3.server-modules\u002F3.cad",{"title":69,"path":70,"stem":71},"Economy Usage Guide","\u002Fserver-modules\u002Feconomy","3.server-modules\u002F4.economy",{"title":73,"path":74,"stem":75},"Garage Usage Guide","\u002Fserver-modules\u002Fgarage","3.server-modules\u002F5.garage",{"title":77,"path":78,"stem":79},"Locker Usage Guide","\u002Fserver-modules\u002Flocker","3.server-modules\u002F6.locker",{"title":81,"path":82,"stem":83},"Organization Usage Guide","\u002Fserver-modules\u002Forganization","3.server-modules\u002F7.organization",{"title":85,"path":86,"stem":87},"Owned Storage Usage Guide","\u002Fserver-modules\u002Fowned-storage","3.server-modules\u002F8.owned-storage",{"title":89,"path":90,"stem":91},"Phone Usage Guide","\u002Fserver-modules\u002Fphone","3.server-modules\u002F9.phone","i-lucide-layers-3",{"title":94,"path":95,"stem":96,"children":97,"icon":144},"Client Addons","\u002Fclient-addons","4.client-addons\u002F0.index",[98,100,104,108,112,116,120,124,128,132,136,140],{"title":99,"path":95,"stem":96},"Client Usage Guide",{"title":101,"path":102,"stem":103},"Client Main Usage Guide","\u002Fclient-addons\u002Fmain","4.client-addons\u002F1.main",{"title":105,"path":106,"stem":107},"Client Phone Usage Guide","\u002Fclient-addons\u002Fphone","4.client-addons\u002F10.phone",{"title":109,"path":110,"stem":111},"Client Store Usage Guide","\u002Fclient-addons\u002Fstore","4.client-addons\u002F11.store",{"title":113,"path":114,"stem":115},"Client Common Usage Guide","\u002Fclient-addons\u002Fcommon","4.client-addons\u002F2.common",{"title":117,"path":118,"stem":119},"Client Actor Usage Guide","\u002Fclient-addons\u002Factor","4.client-addons\u002F3.actor",{"title":121,"path":122,"stem":123},"Client Bank Usage Guide","\u002Fclient-addons\u002Fbank","4.client-addons\u002F4.bank",{"title":125,"path":126,"stem":127},"Client CAD Usage Guide","\u002Fclient-addons\u002Fcad","4.client-addons\u002F5.cad",{"title":129,"path":130,"stem":131},"Client Garage Usage Guide","\u002Fclient-addons\u002Fgarage","4.client-addons\u002F6.garage",{"title":133,"path":134,"stem":135},"Client Locker Usage Guide","\u002Fclient-addons\u002Flocker","4.client-addons\u002F7.locker",{"title":137,"path":138,"stem":139},"Client Notifications Usage Guide","\u002Fclient-addons\u002Fnotifications","4.client-addons\u002F8.notifications",{"title":141,"path":142,"stem":143},"Client Organization Usage Guide","\u002Fclient-addons\u002Forganization","4.client-addons\u002F9.organization","i-lucide-monitor-smartphone",{"id":146,"title":133,"body":147,"description":157,"extension":423,"links":424,"meta":425,"navigation":426,"path":134,"seo":427,"stem":135,"__hash__":428},"docs\u002F4.client-addons\u002F7.locker.md",{"type":148,"value":149,"toc":415},"minimark",[150,154,158,163,174,182,185,208,212,223,226,239,242,253,257,264,267,327,330,339,343,346,363,366,370,380,383,392,396,411],[151,152,133],"h1",{"id":153},"client-locker-usage-guide",[155,156,157],"p",{},"The client locker addon manages personal locker display state, local locker\ncontainer behavior, and virtual arsenal unlock state.",[159,160,162],"h2",{"id":161},"repositories","Repositories",[155,164,165,169,170,173],{},[166,167,168],"code",{},"forge_client_locker_fnc_initRepository"," creates ",[166,171,172],{},"GVAR(LockerRepository)",".",[155,175,176,169,179,173],{},[166,177,178],{},"forge_client_locker_fnc_initVARepository",[166,180,181],{},"GVAR(VARepository)",[155,183,184],{},"Initialize locker state:",[186,187,192],"pre",{"className":188,"code":189,"language":190,"meta":191,"style":191},"language-sqf shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","GVAR(LockerRepository) call [\"init\", []];\nGVAR(VARepository) call [\"init\", []];\n","sqf","",[166,193,194,202],{"__ignoreMap":191},[195,196,199],"span",{"class":197,"line":198},"line",1,[195,200,201],{},"GVAR(LockerRepository) call [\"init\", []];\n",[195,203,205],{"class":197,"line":204},2,[195,206,207],{},"GVAR(VARepository) call [\"init\", []];\n",[159,209,211],{"id":210},"locker-container-flow","Locker Container Flow",[155,213,214,215,218,219,222],{},"The repository searches mission namespace variables whose names contain\n",[166,216,217],{},"locker"," and refer to objects. For each server\u002Fmission locker object, it creates\na local ",[166,220,221],{},"Box_NATO_Equip_F"," at the same position and attaches container event\nhandlers.",[155,224,225],{},"On container open:",[227,228,229,233,236],"ul",{},[230,231,232],"li",{},"the local container is cleared",[230,234,235],{},"cached locker items are inserted into the container",[230,237,238],{},"over-capacity warnings are emitted when the item count is above 25",[155,240,241],{},"On container close:",[227,243,244,247,250],{},[230,245,246],{},"cargo, nested container items, and weapon attachments are read back",[230,248,249],{},"the new locker map is sent to the server with the override request",[230,251,252],{},"the local repository cache is updated",[159,254,256],{"id":255},"virtual-arsenal-flow","Virtual Arsenal Flow",[155,258,259,260,263],{},"The virtual arsenal repository creates a local ",[166,261,262],{},"FORGE_Locker_Box"," and requests\nvirtual arsenal unlocks from the server.",[155,265,266],{},"As sync data arrives, it applies unlocks through ACE Arsenal:",[268,269,270,283],"table",{},[271,272,273],"thead",{},[274,275,276,280],"tr",{},[277,278,279],"th",{},"Data key",[277,281,282],{},"Client behavior",[284,285,286,297,307,317],"tbody",{},[274,287,288,294],{},[289,290,291],"td",{},[166,292,293],{},"items",[289,295,296],{},"Add virtual items.",[274,298,299,304],{},[289,300,301],{},[166,302,303],{},"weapons",[289,305,306],{},"Add virtual weapons.",[274,308,309,314],{},[289,310,311],{},[166,312,313],{},"magazines",[289,315,316],{},"Add virtual magazines.",[274,318,319,324],{},[289,320,321],{},[166,322,323],{},"backpacks",[289,325,326],{},"Add virtual backpacks.",[155,328,329],{},"The actor menu opens the virtual locker with:",[186,331,333],{"className":188,"code":332,"language":190,"meta":191,"style":191},"[FORGE_Locker_Box, player, false] spawn ace_arsenal_fnc_openBox;\n",[166,334,335],{"__ignoreMap":191},[195,336,337],{"class":197,"line":198},[195,338,332],{},[159,340,342],{"id":341},"server-events","Server Events",[155,344,345],{},"The client repository sends requests for:",[227,347,348,351,354,357,360],{},[230,349,350],{},"locker initialization",[230,352,353],{},"locker save",[230,355,356],{},"locker override after container close",[230,358,359],{},"virtual arsenal initialization",[230,361,362],{},"virtual arsenal save",[155,364,365],{},"The server locker addon and extension own the saved locker and virtual arsenal\nstate.",[159,367,369],{"id":368},"mission-setup","Mission Setup",[155,371,372,373,376,377,379],{},"Mission locker objects must be placed into ",[166,374,375],{},"missionNamespace"," with a variable\nname containing ",[166,378,217],{},". The client creates local interactive containers from\nthose authoritative mission objects.",[155,381,382],{},"Example:",[186,384,386],{"className":188,"code":385,"language":190,"meta":191,"style":191},"missionNamespace setVariable [\"forge_locker_alpha\", _lockerObject, true];\n",[166,387,388],{"__ignoreMap":191},[195,389,390],{"class":197,"line":198},[195,391,385],{},[159,393,395],{"id":394},"related-guides","Related Guides",[227,397,398,403,407],{},[230,399,400],{},[401,402,77],"a",{"href":78},[230,404,405],{},[401,406,85],{"href":86},[230,408,409],{},[401,410,117],{"href":118},[412,413,414],"style",{},"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":191,"searchDepth":204,"depth":204,"links":416},[417,418,419,420,421,422],{"id":161,"depth":204,"text":162},{"id":210,"depth":204,"text":211},{"id":255,"depth":204,"text":256},{"id":341,"depth":204,"text":342},{"id":368,"depth":204,"text":369},{"id":394,"depth":204,"text":395},"md",null,{},true,{"title":133,"description":157},"Xg6JIHaku-KiLc15y67lo3EujW_Zj6YTuSIMClw5vsM",[430,432],{"title":129,"path":130,"stem":131,"description":431,"children":-1},"The client garage addon provides player vehicle storage UI, vehicle\nstore\u002Fretrieve actions, selected nearby vehicle service requests, vehicle\ncontext building, and the virtual garage view.",{"title":137,"path":138,"stem":139,"description":433,"children":-1},"The client notifications addon owns the notification HUD, notification sound,\nand local notification service used by Forge client and server modules.",1776806627742]