1 line
14 KiB
JSON

[{"data":1,"prerenderedAt":718},["ShallowReactive",2],{"navigation_docs":3,"-client-addons-phone":145,"-client-addons-phone-surround":713},[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":105,"body":147,"description":157,"extension":707,"links":708,"meta":709,"navigation":710,"path":106,"seo":711,"stem":107,"__hash__":712},"docs\u002F4.client-addons\u002F10.phone.md",{"type":148,"value":149,"toc":691},"minimark",[150,154,158,163,180,195,199,202,209,228,232,241,244,248,253,308,312,383,387,449,453,505,509,651,655,672,676,687],[151,152,105],"h1",{"id":153},"client-phone-usage-guide",[155,156,157],"p",{},"The client phone addon provides the in-game phone UI for contacts, SMS\nmessages, email, and local utility apps such as notes, calendar events, world\nclocks, and alarms.",[159,160,162],"h2",{"id":161},"open-phone-ui","Open Phone UI",[164,165,170],"pre",{"className":166,"code":167,"language":168,"meta":169,"style":169},"language-sqf shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","call forge_client_phone_fnc_openUI;\n","sqf","",[171,172,173],"code",{"__ignoreMap":169},[174,175,178],"span",{"class":176,"line":177},"line",1,[174,179,167],{},[155,181,182,183,186,187,190,191,194],{},"The phone UI creates ",[171,184,185],{},"RscPhone",", loads ",[171,188,189],{},"ui\u002F_site\u002Findex.html",", and routes\nbrowser alerts through ",[171,192,193],{},"forge_client_phone_fnc_handleUIEvents",".",[159,196,198],{"id":197},"state-ownership","State Ownership",[155,200,201],{},"Contacts, messages, and emails are server-owned and requested through the\nserver phone addon.",[155,203,204,205,208],{},"Local utility app state is stored in ",[171,206,207],{},"profileNamespace",":",[210,211,212,216,219,222,225],"ul",{},[213,214,215],"li",{},"notes",[213,217,218],{},"calendar events",[213,220,221],{},"world clocks",[213,223,224],{},"alarms",[213,226,227],{},"theme\u002Fpreferences",[159,229,231],{"id":230},"phone-class","Phone Class",[155,233,234,237,238,194],{},[171,235,236],{},"forge_client_phone_fnc_initClass"," creates ",[171,239,240],{},"GVAR(PhoneClass)",[155,242,243],{},"The phone class currently owns local notes, events, and settings helpers.\nContacts, messages, and emails continue to use server-backed request\u002Fresponse\nevents.",[159,245,247],{"id":246},"browser-events","Browser Events",[249,250,252],"h3",{"id":251},"session-and-preferences","Session and Preferences",[254,255,256,269],"table",{},[257,258,259],"thead",{},[260,261,262,266],"tr",{},[263,264,265],"th",{},"Event",[263,267,268],{},"Client behavior",[270,271,272,286,296],"tbody",{},[260,273,274,280],{},[275,276,277],"td",{},[171,278,279],{},"phone::get::player",[275,281,282,283,194],{},"Send player UID to browser with ",[171,284,285],{},"setPlayerUid",[260,287,288,293],{},[275,289,290],{},[171,291,292],{},"phone::get::theme",[275,294,295],{},"Send saved light\u002Fdark theme to browser.",[260,297,298,303],{},[275,299,300],{},[171,301,302],{},"phone::set::theme",[275,304,305,306,194],{},"Save theme preference to ",[171,307,207],{},[249,309,311],{"id":310},"contacts","Contacts",[254,313,314,322],{},[257,315,316],{},[260,317,318,320],{},[263,319,265],{},[263,321,268],{},[270,323,324,334,344,354,363,373],{},[260,325,326,331],{},[275,327,328],{},[171,329,330],{},"phone::get::contacts",[275,332,333],{},"Load cached contacts and request server refresh.",[260,335,336,341],{},[275,337,338],{},[171,339,340],{},"phone::refresh::contacts",[275,342,343],{},"Request contacts from server.",[260,345,346,351],{},[275,347,348],{},[171,349,350],{},"phone::add::contact",[275,352,353],{},"Add contact by phone number.",[260,355,356,361],{},[275,357,358],{},[171,359,360],{},"phone::add::contact::by::phone",[275,362,353],{},[260,364,365,370],{},[275,366,367],{},[171,368,369],{},"phone::add::contact::by::email",[275,371,372],{},"Add contact by email.",[260,374,375,380],{},[275,376,377],{},[171,378,379],{},"phone::remove::contact",[275,381,382],{},"Remove contact by UID.",[249,384,386],{"id":385},"messages","Messages",[254,388,389,397],{},[257,390,391],{},[260,392,393,395],{},[263,394,265],{},[263,396,268],{},[270,398,399,409,419,429,439],{},[260,400,401,406],{},[275,402,403],{},[171,404,405],{},"phone::get::messages",[275,407,408],{},"Request messages from server.",[260,410,411,416],{},[275,412,413],{},[171,414,415],{},"phone::get::message::thread",[275,417,418],{},"Request thread with another UID.",[260,420,421,426],{},[275,422,423],{},[171,424,425],{},"phone::send::message",[275,427,428],{},"Send SMS through server.",[260,430,431,436],{},[275,432,433],{},[171,434,435],{},"phone::mark::message::read",[275,437,438],{},"Mark message read on server.",[260,440,441,446],{},[275,442,443],{},[171,444,445],{},"phone::delete::message",[275,447,448],{},"Delete message on server.",[249,450,452],{"id":451},"email","Email",[254,454,455,463],{},[257,456,457],{},[260,458,459,461],{},[263,460,265],{},[263,462,268],{},[270,464,465,475,485,495],{},[260,466,467,472],{},[275,468,469],{},[171,470,471],{},"phone::get::emails",[275,473,474],{},"Request emails from server.",[260,476,477,482],{},[275,478,479],{},[171,480,481],{},"phone::send::email",[275,483,484],{},"Send email through server.",[260,486,487,492],{},[275,488,489],{},[171,490,491],{},"phone::mark::email::read",[275,493,494],{},"Mark email read on server.",[260,496,497,502],{},[275,498,499],{},[171,500,501],{},"phone::delete::email",[275,503,504],{},"Delete email on server.",[249,506,508],{"id":507},"local-utility-apps","Local Utility Apps",[254,510,511,519],{},[257,512,513],{},[260,514,515,517],{},[263,516,265],{},[263,518,268],{},[270,520,521,531,541,551,561,571,581,591,601,611,621,631,641],{},[260,522,523,528],{},[275,524,525],{},[171,526,527],{},"phone::get::notes",[275,529,530],{},"Load local notes.",[260,532,533,538],{},[275,534,535],{},[171,536,537],{},"phone::save::note",[275,539,540],{},"Save local note.",[260,542,543,548],{},[275,544,545],{},[171,546,547],{},"phone::delete::note",[275,549,550],{},"Delete local note.",[260,552,553,558],{},[275,554,555],{},[171,556,557],{},"phone::get::events",[275,559,560],{},"Load local calendar events.",[260,562,563,568],{},[275,564,565],{},[171,566,567],{},"phone::save::event",[275,569,570],{},"Save local calendar event.",[260,572,573,578],{},[275,574,575],{},[171,576,577],{},"phone::delete::event",[275,579,580],{},"Delete local calendar event.",[260,582,583,588],{},[275,584,585],{},[171,586,587],{},"phone::get::clocks",[275,589,590],{},"Load local world clocks.",[260,592,593,598],{},[275,594,595],{},[171,596,597],{},"phone::save::clock",[275,599,600],{},"Save local world clock.",[260,602,603,608],{},[275,604,605],{},[171,606,607],{},"phone::delete::clock",[275,609,610],{},"Delete local world clock.",[260,612,613,618],{},[275,614,615],{},[171,616,617],{},"phone::get::alarms",[275,619,620],{},"Load local alarms.",[260,622,623,628],{},[275,624,625],{},[171,626,627],{},"phone::save::alarm",[275,629,630],{},"Save local alarm.",[260,632,633,638],{},[275,634,635],{},[171,636,637],{},"phone::delete::alarm",[275,639,640],{},"Delete local alarm.",[260,642,643,648],{},[275,644,645],{},[171,646,647],{},"phone::toggle::alarm",[275,649,650],{},"Toggle local alarm enabled state.",[159,652,654],{"id":653},"usage-rules","Usage Rules",[210,656,657,660,666,669],{},[213,658,659],{},"Send contact, message, and email mutations to the server phone addon.",[213,661,662,663,665],{},"Keep local-only utility apps in ",[171,664,207],{}," until they are migrated to\nserver-backed storage.",[213,667,668],{},"Do not treat local phone utility state as shared multiplayer state.",[213,670,671],{},"Validate required UID, phone, email, subject, and message fields before\nsending server requests.",[159,673,675],{"id":674},"related-guides","Related Guides",[210,677,678,683],{},[213,679,680],{},[681,682,89],"a",{"href":90},[213,684,685],{},[681,686,137],{"href":138},[688,689,690],"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":169,"searchDepth":692,"depth":692,"links":693},2,[694,695,696,697,705,706],{"id":161,"depth":692,"text":162},{"id":197,"depth":692,"text":198},{"id":230,"depth":692,"text":231},{"id":246,"depth":692,"text":247,"children":698},[699,701,702,703,704],{"id":251,"depth":700,"text":252},3,{"id":310,"depth":700,"text":311},{"id":385,"depth":700,"text":386},{"id":451,"depth":700,"text":452},{"id":507,"depth":700,"text":508},{"id":653,"depth":692,"text":654},{"id":674,"depth":692,"text":675},"md",null,{},true,{"title":105,"description":157},"0NTtS9Y0Ou2ZP0DjQSKm3TT1mcZwqsRjnA5q7p__qdo",[714,716],{"title":101,"path":102,"stem":103,"description":715,"children":-1},"The client main addon provides the shared mod identity, version metadata,\nCBA settings, and macro foundation used by the Forge client addons.",{"title":109,"path":110,"stem":111,"description":717,"children":-1},"The client store addon provides the storefront browser UI for catalog browsing,\ncategory hydration, payment source display, cart handling, and checkout\nrequests.",1776806627742]