1 line
11 KiB
JSON

[{"data":1,"prerenderedAt":338},["ShallowReactive",2],{"navigation_docs":3,"-server-modules-economy":145,"-server-modules-economy-surround":333},[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":69,"body":147,"description":157,"extension":327,"links":328,"meta":329,"navigation":330,"path":70,"seo":331,"stem":71,"__hash__":332},"docs\u002F3.server-modules\u002F4.economy.md",{"type":148,"value":149,"toc":318},"minimark",[150,154,158,163,196,200,203,214,225,229,232,235,251,261,264,268,271,278,293,296,300,307,311,314],[151,152,69],"h1",{"id":153},"economy-usage-guide",[155,156,157],"p",{},"The economy server addon owns Arma-world service behavior for fuel, medical,\nand repair interactions. It does not own money state. Money mutations go\nthrough extension-backed bank and organization hot state before the world\neffect is applied.",[159,160,162],"h2",{"id":161},"dependencies","Dependencies",[164,165,166,174,180,186],"ul",{},[167,168,169,173],"li",{},[170,171,172],"code",{},"forge_server_common"," for logging, formatting, and player lookup.",[167,175,176,179],{},[170,177,178],{},"forge_server_bank"," for personal medical billing.",[167,181,182,185],{},[170,183,184],{},"forge_server_org"," for organization-funded services and medical fallback\ndebt.",[167,187,188,191,192,195],{},[170,189,190],{},"forge_client_actor"," and ",[170,193,194],{},"forge_client_notifications"," for targeted client\nresponses.",[159,197,199],{"id":198},"fuel","Fuel",[155,201,202],{},"Fuel is organization-funded.",[155,204,205,206,209,210,213],{},"When refueling stops, ",[170,207,208],{},"fnc_initFEconomyStore.sqf"," calculates the fuel delta and\ncost, charges the player's organization through ",[170,211,212],{},"OrgStore chargeCheckout",", and\nsyncs the organization patch to online members. If organization funds cannot\ncover the refuel, the vehicle is rolled back to the fuel level it had when the\nsession started.",[155,215,216,217,220,221,224],{},"Garage UI refuel requests use the server ",[170,218,219],{},"RefuelService"," event. The fuel store\ncalculates missing fuel from the vehicle config ",[170,222,223],{},"fuelCapacity",", charges the\nplayer's organization, and fills the vehicle only after the organization charge\nsucceeds.",[159,226,228],{"id":227},"repair","Repair",[155,230,231],{},"Repair is organization-funded.",[155,233,234],{},"Use the repair service event:",[236,237,242],"pre",{"className":238,"code":239,"language":240,"meta":241,"style":241},"language-sqf shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[QEGVAR(economy,RepairService), [_target, _unit, _cost]] call CBA_fnc_serverEvent;\n","sqf","",[170,243,244],{"__ignoreMap":241},[245,246,249],"span",{"class":247,"line":248},"line",1,[245,250,239],{},[155,252,253,256,257,260],{},[170,254,255],{},"_cost"," is optional. Passing ",[170,258,259],{},"-1"," uses the configured service repair cost.\nThe target is only repaired after the organization charge succeeds.",[155,262,263],{},"The client garage UI forwards selected nearby vehicle repair requests through\nthe same event.",[159,265,267],{"id":266},"medical","Medical",[155,269,270],{},"Medical is player-funded first.",[155,272,273,274,277],{},"When a heal is requested, ",[170,275,276],{},"fnc_initMEconomyStore.sqf"," uses this billing order:",[279,280,281,284,287,290],"ol",{},[167,282,283],{},"Charge the player's bank balance when it can cover the medical fee.",[167,285,286],{},"Otherwise charge the player's cash when it can cover the fee.",[167,288,289],{},"If neither personal balance can cover the fee, charge organization funds.",[167,291,292],{},"When organization funds cover the fallback charge, record the same amount as\ndebt on the player's organization credit line.",[155,294,295],{},"The heal only completes after one of those charges succeeds. If personal\nbilling is unavailable, the heal does not fall back to organization funds\nbecause the server cannot verify that the player is unable to cover the fee.",[159,297,299],{"id":298},"medical-debt-repayment","Medical Debt Repayment",[155,301,302,303,306],{},"Medical fallback debt uses the existing organization credit-line repayment\nflow. The organization treasury is reduced when the service is rendered, and\nthe player's credit-line ",[170,304,305],{},"amount_due"," increases by the medical fee. When the\nplayer repays through the bank credit-line repayment action, player bank funds\nare moved back into the organization treasury.",[159,308,310],{"id":309},"hot-cache-boundary","Hot-Cache Boundary",[155,312,313],{},"The economy addon should stay server-authoritative for world effects such as\nvehicle fuel, vehicle repair, healing, respawn placement, and death inventory\nmovement. Bank and organization balances should continue to mutate through the\nextension-backed hot-cache services.",[315,316,317],"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":241,"searchDepth":319,"depth":319,"links":320},2,[321,322,323,324,325,326],{"id":161,"depth":319,"text":162},{"id":198,"depth":319,"text":199},{"id":227,"depth":319,"text":228},{"id":266,"depth":319,"text":267},{"id":298,"depth":319,"text":299},{"id":309,"depth":319,"text":310},"md",null,{},true,{"title":69,"description":157},"lJi1fhh3OVngURwg54r03VgJ7l-YhNr9VR2saYNlGOE",[334,336],{"title":65,"path":66,"stem":67,"description":335,"children":-1},"The CAD module stores transient operational state for dispatch activity,\nassignments, dispatch orders, support requests, group profiles, grouped views,\nand hydrated UI payloads. CAD state is in-memory and follows the active server\nor mission lifecycle.",{"title":73,"path":74,"stem":75,"description":337,"children":-1},"The garage module stores physical player vehicles. Each record keeps the\nvehicle classname, generated plate UUID, fuel, overall damage, and detailed hit\npoint damage.",1776806627742]