[{"data":1,"prerenderedAt":915},["ShallowReactive",2],{"/docs/base/jobs-base/features/combined-jobs":3,"/docs/base/jobs-base/features/combined-jobs-surround":901,"/docs/base/jobs-base/features/combined-jobs-implemented-suggestions":914},{"id":4,"title":5,"body":6,"description":890,"extension":891,"head":892,"implementedSuggestions":892,"meta":893,"navigation":894,"path":896,"schemaOrg":892,"seo":897,"sitemap":898,"stem":899,"__hash__":900},"docs/1.docs/base/2.jobs-base/2.features/3.combined-jobs.md","Combined Jobs",{"type":7,"value":8,"toc":876},"minimark",[9,14,47,58,105,115,129,136,140,158,163,173,195,199,219,251,262,265,316,323,327,336,401,411,427,437,441,476,479,483,555,565,569,572,625,635,647,651,666,704,707,717,720,724,733,778,781,787,805,809,819,856,872],[10,11,13],"h2",{"id":12},"can-fd-treat-and-revive-players","Can FD treat and revive players?",[15,16,17,21,22,25,26,29,30,34,35,38,39,42,43,46],"p",{},[18,19,20],"strong",{},"Yes. Register your Fire Department's existing job in both Fire Jobs and Ambulance Jobs.","\nThe employee keeps their Fire job and gains access to Ambulance's medical features, including\n",[18,23,24],{},"Treat patient"," in the job radial menu (",[18,27,28],{},"G"," by default) and the normal treatment/revival flow.\nBoth ",[31,32,33],"code",{},"sky_firejob"," and ",[31,36,37],{},"sky_ambulancejob"," must be installed and running with ",[31,40,41],{},"sky_jobs_base"," and\n",[31,44,45],{},"sky_base",". Duty, grade/permission rules, treatment items, patient condition and other feature\nrequirements still apply.",[15,48,49,50,53,54,57],{},"For example, your FD employees have the job ",[31,51,52],{},"firefighter",", and your SAMS/EMS employees have\n",[31,55,56],{},"ambulance",". After setup:",[59,60,61,77],"table",{},[62,63,64],"thead",{},[65,66,67,71,74],"tr",{},[68,69,70],"th",{},"Employee's job",[68,72,73],{},"Fire features",[68,75,76],{},"Ambulance treatment and revival",[78,79,80,93],"tbody",{},[65,81,82,88,91],{},[83,84,85,87],"td",{},[31,86,52],{}," — registered in Fire and Ambulance",[83,89,90],{},"Yes",[83,92,90],{},[65,94,95,100,103],{},[83,96,97,99],{},[31,98,56],{}," — registered only in Ambulance",[83,101,102],{},"No",[83,104,90],{},[15,106,107,108,111,112,114],{},"The FD employee does ",[18,109,110],{},"not"," need to switch jobs or receive a second framework job. SAMS/EMS\nkeeps its existing ",[31,113,56],{}," entry, employees and organization.",[116,117,120],"callout",{"color":118,"icon":119},"info","i-lucide-info",[15,121,122,125,128],{},[18,123,124],{},"Adding the FD job to Ambulance Jobs enables medical access.",[31,126,127],{},"Config.PrimaryJobGroups"," only chooses which configuration supplies shared settings such as\nthe FD's society account and duty mapping. Setting it alone does not enable treatment.",[15,130,131,132,135],{},"Use versions of ",[18,133,134],{},"Jobs Base, Fire and Ambulance"," that include combined-job support. Older\nversions can hide actions/apps or overwrite catalogs when the same job is registered twice.",[10,137,139],{"id":138},"setup-fd-with-medical-features","Setup: FD with medical features",[15,141,142,143,145,146,149,150,153,154,157],{},"The example below uses ",[31,144,52],{}," as the FD's ",[18,147,148],{},"technical framework job name",". Replace it\nwith your actual name, such as ",[31,151,152],{},"jfrd"," or ",[31,155,156],{},"fire",". A display label such as “Los Santos Fire\nDepartment” is not the job name. The menu and field names below use the English UI.",[159,160,162],"h3",{"id":161},"_1-check-the-existing-fire-job","1. Check the existing Fire job",[15,164,165,166,172],{},"Open ",[18,167,168,171],{},[31,169,170],{},"/jobconfig"," → Fire Jobs → your FD entry → General",".",[15,174,175,176,179,180,182,183,186,187,190,191,194],{},"Check ",[18,177,178],{},"Job name",". In this example it is ",[31,181,52],{},". Note the ",[18,184,185],{},"Society account"," and,\nif used, ",[18,188,189],{},"Off-duty enabled"," / ",[18,192,193],{},"Off-duty job"," settings so you can use the same values below.",[159,196,198],{"id":197},"_2-add-that-same-job-to-ambulance","2. Add that same job to Ambulance",[15,200,165,201,206,207,210,211,214,215,218],{},[18,202,203,205],{},[31,204,170],{}," → Ambulance Jobs"," and create a ",[18,208,209],{},"New job",", or ",[18,212,213],{},"Duplicate"," an existing\nmedical entry. In the new entry's ",[18,216,217],{},"General"," section:",[220,221,222,232,237,245],"ul",{},[223,224,225,226,228,229,231],"li",{},"Set ",[18,227,178],{}," to ",[31,230,52],{}," — exactly the name from step 1.",[223,233,225,234,236],{},[18,235,185],{}," to the FD's existing account from step 1.",[223,238,239,240,34,242,244],{},"Match ",[18,241,189],{},[18,243,193],{}," to the Fire entry, if you use an off-duty job.",[223,246,247,250],{},[18,248,249],{},"Save"," the entry.",[15,252,253,259,260,172],{},[18,254,255,256,258],{},"Keep the original ",[31,257,56],{}," entry if SAMS/EMS still uses it."," Add an extra entry for the FD;\ndo not rename SAMS/EMS's existing entry to ",[31,261,52],{},[15,263,264],{},"Your configuration should now contain:",[59,266,267,279],{},[62,268,269],{},[65,270,271,274,276],{},[68,272,273],{},"Where",[68,275,178],{},[68,277,278],{},"Purpose",[78,280,281,293,305],{},[65,282,283,286,290],{},[83,284,285],{},"Fire Jobs",[83,287,288],{},[31,289,52],{},[83,291,292],{},"FD's Fire features",[65,294,295,298,302],{},[83,296,297],{},"Ambulance Jobs",[83,299,300],{},[31,301,52],{},[83,303,304],{},"Medical features for those same FD employees",[65,306,307,309,313],{},[83,308,297],{},[83,310,311],{},[31,312,56],{},[83,314,315],{},"Existing SAMS/EMS service",[15,317,318,319,322],{},"Adding the FD only to a hospital's ",[18,320,321],{},"additional jobs"," grants access to that location. It does\nnot replace this Ambulance job registration.",[159,324,326],{"id":325},"_3-keep-fire-in-charge-of-the-fds-shared-settings","3. Keep Fire in charge of the FD's shared settings",[15,328,329,330,335],{},"For this FD example, edit the existing table in ",[18,331,332],{},[31,333,334],{},"sky_jobs_base/config/config.lua",":",[337,338,343],"pre",{"className":339,"code":340,"language":341,"meta":342,"style":342},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Config.PrimaryJobGroups = {\n    [\"firefighter\"] = \"fire\",\n}\n","lua","",[31,344,345,365,395],{"__ignoreMap":342},[346,347,350,354,358,362],"span",{"class":348,"line":349},"line",1,[346,351,353],{"class":352},"sTEyZ","Config.",[346,355,357],{"class":356},"sBMFI","PrimaryJobGroups",[346,359,361],{"class":360},"sMK4o"," =",[346,363,364],{"class":352}," {\n",[346,366,368,371,374,377,379,382,385,388,390,392],{"class":348,"line":367},2,[346,369,370],{"class":352},"    [",[346,372,373],{"class":360},"\"",[346,375,52],{"class":376},"sfazB",[346,378,373],{"class":360},[346,380,381],{"class":352},"] ",[346,383,384],{"class":360},"=",[346,386,387],{"class":360}," \"",[346,389,156],{"class":376},[346,391,373],{"class":360},[346,393,394],{"class":352},",\n",[346,396,398],{"class":348,"line":397},3,[346,399,400],{"class":352},"}\n",[15,402,403,404,410],{},"Preserve any entries you already have for other jobs. This says: ",[18,405,406,407,409],{},"“For the job ",[31,408,52],{},",\nuse Fire's shared settings.”"," Medical access still comes from step 2.",[15,412,413,414,416,417,422,423,426],{},"If the actual FD job is ",[31,415,152],{},", the entry is ",[18,418,419],{},[31,420,421],{},"[\"jfrd\"] = \"fire\"",". The left side changes to\nyour job name; the right side stays ",[31,424,425],{},"\"fire\""," because it identifies Sky's Fire group.",[15,428,429,430,433,434,436],{},"This setting stays in Jobs Base's ",[31,431,432],{},"config.lua",", even when ",[31,435,170],{}," is enabled. After\nchanging it, restart Jobs Base and its dependent job resources, or restart the server.",[159,438,440],{"id":439},"_4-test-with-an-fd-employee-and-a-patient","4. Test with an FD employee and a patient",[442,443,444,453,460,473],"ol",{},[223,445,446,447,449,450,172],{},"Keep the employee's job set to ",[31,448,52],{}," and go ",[18,451,452],{},"on duty",[223,454,455,456,459],{},"Stand next to another player who needs treatment and ",[18,457,458],{},"look at that player",". The default\ntreatment distance is 2 metres.",[223,461,462,463,465,466,468,469,472],{},"Open the job radial with ",[18,464,28],{}," (or your configured key) and select ",[18,467,24],{},"\n(",[18,470,471],{},"Patient behandeln"," in German).",[223,474,475],{},"Use Ambulance's normal medical workflow and required items. Revival is available when the\npatient's condition and your treatment settings allow it.",[15,477,478],{},"You do not need to create a new hospital just to treat players. Hospital access, supply shops,\ngarages and emergency-call recipients can be configured separately below.",[10,480,482],{"id":481},"if-treat-patient-is-missing-or-unavailable","If Treat patient is missing or unavailable",[59,484,485,495],{},[62,486,487],{},[65,488,489,492],{},[68,490,491],{},"What to check",[68,493,494],{},"What to do",[78,496,497,511,519,527,539,547],{},[65,498,499,502],{},[83,500,501],{},"FD job registration",[83,503,504,505,507,508,510],{},"Under ",[18,506,297],{},", confirm there is a saved entry with the employee's exact ",[18,509,178],{},". A Fire entry or hospital access alone is insufficient.",[65,512,513,516],{},[83,514,515],{},"Duty",[83,517,518],{},"Go on duty. If you use an off-duty job, check that both entries use the same mapping and that the framework jobs and grades exist.",[65,520,521,524],{},[83,522,523],{},"Target and distance",[83,525,526],{},"Look at a nearby patient. The radial action depends on a player target; it is not a permanent button when looking into empty space. Move within the configured treatment distance.",[65,528,529,532],{},[83,530,531],{},"Radial or target setup",[83,533,534,535,538],{},"Jobs Base's ",[31,536,537],{},"Config.JobRadial.enabled"," must be enabled for the G menu. If your server uses target interactions instead, use its configured player interaction.",[65,540,541,544],{},[83,542,543],{},"Resource versions",[83,545,546],{},"Update Jobs Base, Fire and Ambulance together to versions with combined-job support. Changing start order does not add that support.",[65,548,549,552],{},[83,550,551],{},"Action appears but is blocked",[83,553,554],{},"Read its reason. Missing items, an ongoing treatment, an unsettled body or a patient who cannot be revived require the normal Ambulance treatment steps/settings.",[15,556,557,558,561,562,564],{},"The Ambulance job's ",[31,559,560],{},"countsAsMedic"," setting controls whether its on-duty employees count as\navailable medics for systems such as the deathscreen and AI medic. It is ",[18,563,110],{}," the switch\nthat grants treatment access.",[10,566,568],{"id":567},"what-does-primaryjobgroups-change","What does PrimaryJobGroups change?",[15,570,571],{},"Both registrations remain active. The selected group supplies the shared settings for that\none framework job:",[59,573,574,587],{},[62,575,576],{},[65,577,578,581],{},[68,579,580],{},"Setting",[68,582,583,584],{},"With ",[31,585,586],{},"[\"firefighter\"] = \"fire\"",[78,588,589,599,608,617],{},[65,590,591,594],{},[83,592,593],{},"Society account, management options, sharing rules and job visuals",[83,595,596,597],{},"Taken from the Fire entry for ",[31,598,52],{},[65,600,601,604],{},[83,602,603],{},"Duty/off-duty mapping",[83,605,596,606],{},[31,607,52],{},[65,609,610,613],{},[83,611,612],{},"Shared Dispatch and Training configuration",[83,614,596,615],{},[31,616,52],{},[65,618,619,622],{},[83,620,621],{},"Medical treatment and matching Ambulance apps/actions",[83,623,624],{},"Still available through the Ambulance registration, subject to their normal access rules",[15,626,627,628,631,632,634],{},"Choose ",[31,629,630],{},"\"ambulance\""," instead if the Ambulance entry should supply those shared settings.\nWithout a valid override, the alphabetically first registered group wins: for these two groups,\nthat is ",[31,633,56],{},". This is independent of start order once both registrations are loaded.\nIf the selected resource stops, the remaining registration supplies the shared settings until\nit returns. Matching society and off-duty values in both entries avoids a temporary switch to\nanother account or duty mapping.",[15,636,637,638,34,640,642,643,646],{},"This does not merge the separate ",[31,639,52],{},[31,641,56],{}," organizations or move employees\nbetween them. It combines features for the ",[18,644,645],{},"same job name"," registered in two resources.",[10,648,650],{"id":649},"optional-hospital-access-supplies-and-vehicles","Optional: hospital access, supplies and vehicles",[15,652,653,654,659,660,665],{},"Use ",[18,655,656],{},[31,657,658],{},"/firecreator"," for fire stations and ",[18,661,662],{},[31,663,664],{},"/hospitalcreator"," for hospitals. Assign locations\nand access to the intended jobs. Treatment access and access to a particular building are\nseparate decisions.",[59,667,668,680],{},[62,669,670],{},[65,671,672,677],{},[68,673,674,675],{},"Location used by ",[31,676,52],{},[68,678,679],{},"Where to configure its offers",[78,681,682,692],{},[65,683,684,687],{},[83,685,686],{},"Fire station",[83,688,689],{},[18,690,691],{},"Fire Jobs → firefighter → Shop / Vehicles",[65,693,694,699],{},[83,695,696,697],{},"Hospital owned by ",[31,698,52],{},[83,700,701],{},[18,702,703],{},"Ambulance Jobs → firefighter → Shop / Vehicles",[15,705,706],{},"Each location uses its creator group's job definition for shops, vehicles, trunk equipment,\ngarage rules and storage/locker limits. An additional job using someone else's location uses\nthat location owner's offers. Locations in the same group with the same owner job share that\njob's catalog.",[15,708,709,712,713,716],{},[18,710,711],{},"The catalogs are not automatically combined."," If FD employees should buy medical supplies\nat a fire station, add those supplies to the Fire entry's ",[18,714,715],{},"Shop",". The same applies to medical\nvehicles in a Fire garage. Duplicating an Ambulance entry copies its configured offers; review\nthem for the new job.",[15,718,719],{},"Existing purchased vehicles and stored items retain their station IDs. No SQL cleanup is\nneeded for combined jobs. Legacy integrations without creator context use the primary entry.",[10,721,723],{"id":722},"optional-send-medical-emergency-calls-to-fd","Optional: send medical emergency calls to FD",[15,725,726,727,732],{},"Medical access does not automatically add FD to the deathscreen's emergency-call recipients.\nIn ",[18,728,729,731],{},[31,730,170],{}," → Ambulance Jobs → Death Screen → Dispatch",", use actual framework job names:",[59,734,735,748],{},[62,736,737],{},[65,738,739,742,745],{},[68,740,741],{},"Desired behavior",[68,743,744],{},"Alerted jobs",[68,746,747],{},"Fallback jobs",[78,749,750,765],{},[65,751,752,755,762],{},[83,753,754],{},"Always alert SAMS/EMS and FD",[83,756,757,759,760],{},[31,758,56],{},", ",[31,761,52],{},[83,763,764],{},"Empty",[65,766,767,770,774],{},[83,768,769],{},"Alert SAMS/EMS; use FD if no living, on-duty SAMS/EMS responder is available",[83,771,772],{},[31,773,56],{},[83,775,776],{},[31,777,52],{},[15,779,780],{},"Replace both names with your actual jobs. The fallback decision is made when a patient requests\nhelp; the patient does not count as an available responder. An empty fallback list keeps normal\nrouting. Existing calls are not rerouted, and custom dispatch hooks can use their own routing.",[15,782,783,786],{},[18,784,785],{},"Fallback changes who receives the call. FD keeps its medical access even while SAMS/EMS is\nonline."," It does not make treatment conditional on SAMS/EMS availability.",[15,788,789,790,795,796,799,800,172],{},"For the modern Dispatch App, enable Jobs Base's ",[18,791,792],{},[31,793,794],{},"Config.Dispatch.enabled"," and configure\naccess for the actual FD job. With Fire selected as primary, configure the combined fleet's\nDispatch vehicles, channels and statuses in the ",[18,797,798],{},"Fire"," job entry. Legacy alert banners alone\ndo not enable the modern app. See the ",[801,802,804],"a",{"href":803},"/docs/base/jobs-base/features/emergency-dispatch","Dispatch setup guide",[10,806,808],{"id":807},"if-you-do-not-use-jobconfig","If you do not use /jobconfig",[15,810,583,811,814,815,818],{},[31,812,813],{},"Config.UseJobConfigurator = false"," in the relevant resource, edit that resource's\n",[31,816,817],{},"config/config.lua"," instead:",[442,820,821,836,849],{},[223,822,823,824,827,828,172],{},"Keep the FD entry with ",[31,825,826],{},"name = \"firefighter\""," in ",[18,829,830,832,833],{},[31,831,33],{}," → ",[31,834,835],{},"Config.Jobs",[223,837,838,839,228,841,848],{},"Add a complete job entry with that same ",[31,840,826],{},[18,842,843,845,846],{},[31,844,37],{}," →\n",[31,847,835],{},". Copy an existing medical entry as a starting point, keep the original\nSAMS/EMS entry, and adjust the society account, off-duty mapping and catalogs for FD.",[223,850,225,851,855],{},[18,852,853],{},[31,854,127],{}," in Jobs Base as shown above and restart the affected resources.",[15,857,858,859,34,862,865,866,868,869,871],{},"For optional call routing, the equivalent Ambulance fields are\n",[31,860,861],{},"Config.DeathScreen.Dispatch.jobs",[31,863,864],{},"Config.DeathScreen.Dispatch.fallbackJobs",".\nWhen ",[31,867,170],{}," is enabled, save jobs and call recipients there; editing plaintext defaults\ndoes not replace saved configurator values. ",[31,870,357],{}," always remains in Jobs Base's\nplaintext config.",[873,874,875],"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 .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":342,"searchDepth":349,"depth":367,"links":877},[878,879,885,886,887,888,889],{"id":12,"depth":367,"text":13},{"id":138,"depth":367,"text":139,"children":880},[881,882,883,884],{"id":161,"depth":397,"text":162},{"id":197,"depth":397,"text":198},{"id":325,"depth":397,"text":326},{"id":439,"depth":397,"text":440},{"id":481,"depth":367,"text":482},{"id":567,"depth":367,"text":568},{"id":649,"depth":367,"text":650},{"id":722,"depth":367,"text":723},{"id":807,"depth":367,"text":808},"Let your Fire Department treat and revive patients with Sky Ambulance while employees keep their existing Fire job.","md",null,{},{"icon":895},"i-lucide-combine","/docs/base/jobs-base/features/combined-jobs",{"title":5,"description":890},{"loc":896},"1.docs/base/2.jobs-base/2.features/3.combined-jobs","lSdbF9SFMgMaU6xSnS3WK4kBkMr1HIDZndgI0IAzYU4",[902,908],{"title":903,"path":904,"stem":905,"description":906,"icon":907,"children":-1},"Training & Qualifications","/docs/base/jobs-base/features/training","1.docs/base/2.jobs-base/2.features/2.training","Plan courses, manage sessions, record results, and maintain employee qualifications in the Jobs Base tablet.","i-lucide-graduation-cap",{"title":909,"path":910,"stem":911,"description":912,"icon":913,"children":-1},"File Explorer and Shared Documents","/docs/base/jobs-base/features/file-explorer-and-shared-documents","1.docs/base/2.jobs-base/2.features/4.file-explorer-and-shared-documents","Browse job records, print saved documents, and manage document access across installed Sky jobs.","i-lucide-folder-open",[],1790193247752]