[{"data":1,"prerenderedAt":406},["ShallowReactive",2],{"/docs/base/jobs-base/server-exports/duty":3,"/docs/base/jobs-base/server-exports/duty-surround":394,"/docs/base/jobs-base/server-exports/duty-implemented-suggestions":405},{"id":4,"title":5,"body":6,"description":385,"extension":386,"head":387,"implementedSuggestions":387,"meta":388,"navigation":160,"path":389,"schemaOrg":387,"seo":390,"sitemap":391,"stem":392,"__hash__":393},"docs/1.docs/base/2.jobs-base/4.server-exports/13.duty.md","Duty",{"type":7,"value":8,"toc":378},"minimark",[9,17,21,24,32,96,201,207,236,266,272,304,371,374],[10,11,12],"p",{},[13,14,16],"a",{"href":15},"/docs/base/jobs-base/server-exports","All server exports",[18,19,5],"h2",{"id":20},"duty",[10,22,23],{},"These exports allow external resources (e.g. admin menus, multijob scripts) to read and change a player's duty state.",[25,26,28],"h3",{"id":27},"setplayerdutyplayerid-onduty",[29,30,31],"code",{},"setPlayerDuty(playerId, onDuty)",[33,34,35,43,81],"ul",{},[36,37,38,42],"li",{},[39,40,41],"strong",{},"Purpose",": Sets a player's duty state externally. Runs the full duty pipeline: on/off-duty job switch, duty event for all job scripts, and salary work-time session handling — exactly as if the player toggled duty themselves.",[36,44,45,48,49],{},[39,46,47],{},"Arguments",":\n",[33,50,51,64],{},[36,52,53,56,57,60,61],{},[29,54,55],{},"playerId"," (",[29,58,59],{},"number",") — the server ID of the player. ",[39,62,63],{},"Required.",[36,65,66,56,69,72,73,76,77,80],{},[29,67,68],{},"onDuty",[29,70,71],{},"boolean",") — ",[29,74,75],{},"true"," to set on duty, ",[29,78,79],{},"false"," to set off duty.",[36,82,83,86,87,89,90,92,93,95],{},[39,84,85],{},"Returns",": ",[29,88,71],{}," — ",[29,91,75],{}," when the resulting duty state matches the request, ",[29,94,79],{}," when the player is invalid or their job cannot go on duty.",[97,98,103],"pre",{"className":99,"code":100,"language":101,"meta":102,"style":102},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","-- Force a player off duty (e.g. from an admin menu)\nlocal ok = exports[\"sky_jobs_base\"]:setPlayerDuty(playerId, false)\n\nif not ok then\n    print(\"Player is not on a duty-capable job\")\nend\n","lua","",[29,104,105,114,155,162,177,195],{"__ignoreMap":102},[106,107,110],"span",{"class":108,"line":109},"line",1,[106,111,113],{"class":112},"sHwdD","-- Force a player off duty (e.g. from an admin menu)\n",[106,115,117,121,125,128,131,134,138,140,143,147,150,152],{"class":108,"line":116},2,[106,118,120],{"class":119},"sMK4o","local",[106,122,124],{"class":123},"sTEyZ"," ok ",[106,126,127],{"class":119},"=",[106,129,130],{"class":123}," exports[",[106,132,133],{"class":119},"\"",[106,135,137],{"class":136},"sfazB","sky_jobs_base",[106,139,133],{"class":119},[106,141,142],{"class":123},"]:",[106,144,146],{"class":145},"s2Zo4","setPlayerDuty",[106,148,149],{"class":123},"(playerId, ",[106,151,79],{"class":119},[106,153,154],{"class":123},")\n",[106,156,158],{"class":108,"line":157},3,[106,159,161],{"emptyLinePlaceholder":160},true,"\n",[106,163,165,169,172,174],{"class":108,"line":164},4,[106,166,168],{"class":167},"s7zQu","if",[106,170,171],{"class":119}," not",[106,173,124],{"class":123},[106,175,176],{"class":167},"then\n",[106,178,180,183,186,188,191,193],{"class":108,"line":179},5,[106,181,182],{"class":145},"    print",[106,184,185],{"class":123},"(",[106,187,133],{"class":119},[106,189,190],{"class":136},"Player is not on a duty-capable job",[106,192,133],{"class":119},[106,194,154],{"class":123},[106,196,198],{"class":108,"line":197},6,[106,199,200],{"class":167},"end\n",[25,202,204],{"id":203},"isplayerondutyplayerid",[29,205,206],{},"isPlayerOnDuty(playerId)",[33,208,209,214,227],{},[36,210,211,213],{},[39,212,41],{},": Checks whether a player is currently on duty.",[36,215,216,48,218],{},[39,217,47],{},[33,219,220],{},[36,221,222,56,224,226],{},[29,223,55],{},[29,225,59],{},") — the server ID of the player.",[36,228,229,86,231,89,233,235],{},[39,230,85],{},[29,232,71],{},[29,234,75],{}," if on duty.",[97,237,239],{"className":99,"code":238,"language":101,"meta":102,"style":102},"local onDuty = exports[\"sky_jobs_base\"]:isPlayerOnDuty(playerId)\n",[29,240,241],{"__ignoreMap":102},[106,242,243,245,248,250,252,254,256,258,260,263],{"class":108,"line":109},[106,244,120],{"class":119},[106,246,247],{"class":123}," onDuty ",[106,249,127],{"class":119},[106,251,130],{"class":123},[106,253,133],{"class":119},[106,255,137],{"class":136},[106,257,133],{"class":119},[106,259,142],{"class":123},[106,261,262],{"class":145},"isPlayerOnDuty",[106,264,265],{"class":123},"(playerId)\n",[25,267,269],{"id":268},"getondutyplayersjobname",[29,270,271],{},"getOnDutyPlayers(jobName)",[33,273,274,279,296],{},[36,275,276,278],{},[39,277,41],{},": Returns all currently on-duty players of a job.",[36,280,281,48,283],{},[39,282,47],{},[33,284,285],{},[36,286,287,56,290,293,294],{},[29,288,289],{},"jobName",[29,291,292],{},"string",") — the job name. ",[39,295,63],{},[36,297,298,86,300,303],{},[39,299,85],{},[29,301,302],{},"number[]"," — array of server IDs.",[97,305,307],{"className":99,"code":306,"language":101,"meta":102,"style":102},"local medics = exports[\"sky_jobs_base\"]:getOnDutyPlayers(\"ambulance\")\nprint((\"%d medics on duty\"):format(#medics))\n",[29,308,309,342],{"__ignoreMap":102},[106,310,311,313,316,318,320,322,324,326,328,331,333,335,338,340],{"class":108,"line":109},[106,312,120],{"class":119},[106,314,315],{"class":123}," medics ",[106,317,127],{"class":119},[106,319,130],{"class":123},[106,321,133],{"class":119},[106,323,137],{"class":136},[106,325,133],{"class":119},[106,327,142],{"class":123},[106,329,330],{"class":145},"getOnDutyPlayers",[106,332,185],{"class":123},[106,334,133],{"class":119},[106,336,337],{"class":136},"ambulance",[106,339,133],{"class":119},[106,341,154],{"class":123},[106,343,344,347,350,352,355,357,360,363,365,368],{"class":108,"line":116},[106,345,346],{"class":145},"print",[106,348,349],{"class":123},"((",[106,351,133],{"class":119},[106,353,354],{"class":136},"%d medics on duty",[106,356,133],{"class":119},[106,358,359],{"class":123},"):",[106,361,362],{"class":145},"format",[106,364,185],{"class":123},[106,366,367],{"class":119},"#",[106,369,370],{"class":123},"medics))\n",[372,373],"br",{},[375,376,377],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}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 .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 .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":102,"searchDepth":109,"depth":116,"links":379},[380],{"id":20,"depth":116,"text":5,"children":381},[382,383,384],{"id":27,"depth":157,"text":31},{"id":203,"depth":157,"text":206},{"id":268,"depth":157,"text":271},"Reference for Duty in sky_jobs_base.","md",null,{},"/docs/base/jobs-base/server-exports/duty",{"title":5,"description":385},{"loc":389},"1.docs/base/2.jobs-base/4.server-exports/13.duty","sET6TKE16ybXQq1-Vbn1ImmKUkzReefmkGfumKU3VDc",[395,400],{"title":396,"path":397,"stem":398,"description":399,"children":-1},"Salary","/docs/base/jobs-base/server-exports/salary","1.docs/base/2.jobs-base/4.server-exports/12.salary","Reference for Salary in sky_jobs_base.",{"title":401,"path":402,"stem":403,"description":404,"children":-1},"Players & Members","/docs/base/jobs-base/server-exports/players-members","1.docs/base/2.jobs-base/4.server-exports/14.players-members","Reference for Players & Members in sky_jobs_base.",[],1791814183555]