[{"data":1,"prerenderedAt":710},["ShallowReactive",2],{"/docs/base/jobs-base/features/player-documents":3,"/docs/base/jobs-base/features/player-documents-surround":696,"/docs/base/jobs-base/features/player-documents-implemented-suggestions":709},{"id":4,"title":5,"body":6,"description":685,"extension":686,"head":687,"implementedSuggestions":687,"meta":688,"navigation":689,"path":691,"schemaOrg":687,"seo":692,"sitemap":693,"stem":694,"__hash__":695},"docs/1.docs/base/2.jobs-base/2.features/5.player-documents.md","Player Documents",{"type":7,"value":8,"toc":673},"minimark",[9,14,23,38,51,55,69,88,92,98,155,162,166,188,359,365,369,420,423,432,436,446,459,605,623,626,631,638,641,647,669],[10,11,13],"h2",{"id":12},"identity-and-license-cards","Identity and license cards",[15,16,17,18,22],"p",{},"Open ",[19,20,21],"strong",{},"Player interactions → Documents → View identity"," or the license action in the Radial.\nThe identity card shows the selected character's name, date of birth, gender and height\nwhen supplied by the framework. The license card shows name, photo and selected held licenses.\nMissing information stays unavailable; an empty list does not create a license.",[15,24,25,26,29,30,33,34,37],{},"The portrait captures a local copy of the player's current appearance without hat or glasses.\nThe real ped is not changed. Photos are cached only on the viewing client for five minutes,\nwith up to 32 character entries; character unload and resource stop clear the cache.\nNo photo is uploaded or stored in a database. A neutral portrait remains if capture fails.\nBoth cards omit signatures. Long license lists scroll independently using the mouse wheel\nover the list, the visible scrollbar, or Tab followed by the arrow keys.\nThe bottom data zone restyles the respective card's fields. It does not generate a document number,\nexpiry date or check digits, and is not a validated ICAO machine-readable document.\nThere are no close buttons. Press ",[19,27,28],{},"Return / Enter"," or ",[19,31,32],{},"Escape"," to close a shared card.\nIt also closes automatically after ",[19,35,36],{},"60 seconds",". Moving it through configuration does not\nrestart that timer.",[39,40,43],"callout",{"color":41,"icon":42},"warning","i-lucide-info",[15,44,45,46,50],{},"This page describes the new document-card update. Install the update containing\n",[47,48,49],"code",{},"Config.PlayerIdentityCard"," and these exports before using the examples.\nOlder resource packages do not expose the new exports.",[10,52,54],{"id":53},"access-and-integrations","Access and integrations",[15,56,57,58,29,61,64,65,68],{},"Viewing your own document does not require a job inspection permission. Inspecting another\nplayer requires the corresponding ",[19,59,60],{},"identity",[19,62,63],{},"licenses"," permission, including the\nconfigured job, grade and duty rules. Both players must be within ",[19,66,67],{},"2.5 metres"," and in the\nsame routing bucket. The target must be restrained by Jobs Base (handcuffs or zip ties).\nThis also applies to Crime and Creator job profiles. The server rechecks the selected\ncharacter, restraints and access after provider work.\nDocument inspection does not ask for consent.",[15,70,71,72,75,76,79,80,83,84,87],{},"Native integrations for ",[47,73,74],{},"jsfour-idcard",", ",[47,77,78],{},"um-idcard"," and ",[47,81,82],{},"qbx_idcard"," remain available through\n",[47,85,86],{},"config/player_actions.lua",". An authorized native card opens its provider's interface.\nThe settings below apply to the shared card, not an external interface. Document inspection\ndoes not create, renew, consume or transfer card items and does not grant licenses.",[10,89,91],{"id":90},"presentowndocumentdocumenttype-recipientserverid","PresentOwnDocument(documentType, recipientServerId)",[15,93,94,95,97],{},"Shows the sender's own document on one nearby player's screen. The server chooses the\nauthenticated sender's character. No inspection grant is required; the sender cannot be\nrestrained. Both players must remain within ",[19,96,67],{}," in the same routing bucket.\nThe recipient must have no other focused NUI. Offers are single-use and bound to both\nplayers' current characters. Presentation uses the shared card interface.",[99,100,105],"pre",{"className":101,"code":102,"language":103,"meta":104,"style":104},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","local success, reason = exports[\"sky_jobs_base\"]:PresentOwnDocument(\"service\", recipientServerId)\n","lua","",[47,106,107],{"__ignoreMap":104},[108,109,112,116,120,123,126,129,133,135,138,142,145,147,150,152],"span",{"class":110,"line":111},"line",1,[108,113,115],{"class":114},"sMK4o","local",[108,117,119],{"class":118},"sTEyZ"," success, reason ",[108,121,122],{"class":114},"=",[108,124,125],{"class":118}," exports[",[108,127,128],{"class":114},"\"",[108,130,132],{"class":131},"sfazB","sky_jobs_base",[108,134,128],{"class":114},[108,136,137],{"class":118},"]:",[108,139,141],{"class":140},"s2Zo4","PresentOwnDocument",[108,143,144],{"class":118},"(",[108,146,128],{"class":114},[108,148,149],{"class":131},"service",[108,151,128],{"class":114},[108,153,154],{"class":118},", recipientServerId)\n",[15,156,157,158,161],{},"The radial also exposes these actions under ",[19,159,160],{},"Player interactions → Documents",".\nThis presents a document; it does not transfer an inventory item.",[10,163,165],{"id":164},"position-size-and-optional-branding","Position, size and optional branding",[15,167,168,169,172,173,176,177,180,181,183,184,187],{},"In ",[47,170,171],{},"/jobconfig",", choose ",[19,174,175],{},"Jobs Base → Player interactions → Identity card",".\nSaved configurator values take precedence over file defaults.\nIf ",[47,178,179],{},"Config.UseIngameConfigurator"," is disabled, edit ",[47,182,49],{}," in\n",[47,185,186],{},"sky_jobs_base/config/config.lua"," instead.",[189,190,191,204],"table",{},[192,193,194],"thead",{},[195,196,197,201],"tr",{},[198,199,200],"th",{},"Setting",[198,202,203],{},"Values and behaviour",[205,206,207,226,241,266,281,295,305,323],"tbody",{},[195,208,209,215],{},[210,211,212],"td",{},[47,213,214],{},"enabled",[210,216,217,218,221,222,225],{},"Master switch for Sky's document actions and exports; default ",[47,219,220],{},"true",". Set ",[47,223,224],{},"false"," when another resource owns your documents.",[195,227,228,233],{},[210,229,230],{},[47,231,232],{},"serviceEnabled",[210,234,235,236,221,238,240],{},"Service-card and service-number management switch; default ",[47,237,220],{},[47,239,224],{}," to keep identity/licenses while disabling service IDs.",[195,242,243,248],{},[210,244,245],{},[47,246,247],{},"position",[210,249,250,75,253,75,256,29,259,262,263,265],{},[47,251,252],{},"left",[47,254,255],{},"center",[47,257,258],{},"right",[47,260,261],{},"custom","; default ",[47,264,258],{},".",[195,267,268,276],{},[210,269,270,75,273],{},[47,271,272],{},"x",[47,274,275],{},"y",[210,277,278,279,265],{},"Card centre in screen percentages, 0–100; used for ",[47,280,261],{},[195,282,283,288],{},[210,284,285],{},[47,286,287],{},"scale",[210,289,290,291,294],{},"Size in percent, 50–150; default ",[47,292,293],{},"85",". It also fits smaller viewports.",[195,296,297,302],{},[210,298,299],{},[47,300,301],{},"issuer",[210,303,304],{},"Optional issuer name. Empty by default.",[195,306,307,312],{},[210,308,309],{},[47,310,311],{},"logo",[210,313,314,315,318,319,322],{},"Optional filename inside ",[47,316,317],{},"config/documents",", such as ",[47,320,321],{},"logo.svg",". Empty by default.",[195,324,325,330],{},[210,326,327],{},[47,328,329],{},"licenseTypes",[210,331,332,333,75,336,75,339,75,342,75,345,75,348,75,351,354,355,358],{},"Exact license type IDs visible on Sky's license card. Default: ",[47,334,335],{},"dmv",[47,337,338],{},"drive",[47,340,341],{},"drive_bike",[47,343,344],{},"drive_truck",[47,346,347],{},"driver",[47,349,350],{},"weapon",[47,352,353],{},"business",". Use ",[47,356,357],{},"{ \"*\" }"," for all held types; an empty list hides all.",[15,360,361,362,364],{},"Logo filenames cannot be URLs or directory paths. Use letters, numbers, hyphens or underscores\nfollowed by a file extension. No Sky logo, watermark or issuer text appears by default.\nLive configuration changes update an open shared card without changing its person or focus.\nDisabling a feature closes its open card and removes the related radial/target actions.\nThe server rejects disabled document requests and presentation offers. Independent external\nresources retain their own interfaces and actions.\nReopen the card after changing ",[47,363,329],{},". Filtering never grants or removes licenses,\nand does not change an external provider's own card contents.",[10,366,368],{"id":367},"editable-appearance","Editable appearance",[189,370,371,381],{},[192,372,373],{},[195,374,375,378],{},[198,376,377],{},"File",[198,379,380],{},"Purpose",[205,382,383,397,407],{},[195,384,385,390],{},[210,386,387],{},[47,388,389],{},"config/documents/identity.css",[210,391,392,393,396],{},"Both layouts, printed colours, typography, spacing and template dimensions. Use ",[47,394,395],{},".sky-license-card"," for license-specific changes.",[195,398,399,404],{},[210,400,401],{},[47,402,403],{},"config/documents/logo.svg",[210,405,406],{},"Replace the artwork, or add another local logo file and select it in configuration.",[195,408,409,414],{},[210,410,411],{},[47,412,413],{},"config/locales/\u003Clanguage>.lua",[210,415,416,417,265],{},"Card titles and field labels under ",[47,418,419],{},"Nui.playerActions",[15,421,422],{},"Editable CSS loads from the resource after the built-in default stylesheet.\nAfter changing CSS, fonts, artwork or locales, restart Jobs Base and its active dependent jobs\nthrough your normal update process. CSS and artwork changes need no frontend rebuild.\nChanging the Vue component's markup does require a frontend rebuild.",[15,424,425,426,431],{},"The client ",[427,428,430],"a",{"href":429},"/docs/base/jobs-base/client-exports/documents","document exports"," support own views,\nauthorized target inspection and showing your own document to one selected nearby player.",[10,433,435],{"id":434},"service-ids","Service IDs",[15,437,438,439,441,442,445],{},"The ",[47,440,149],{}," document shows the holder's ",[19,443,444],{},"actual employment department, rank and service number",".\nIt is unavailable for unemployed characters. Inspecting another player's service ID uses the\nexisting identity permission, distance and character checks. External native ID providers\nare not used for this document type.",[15,447,448,449,452,453,455,456,265],{},"Configure default styles in ",[47,450,451],{},"PlayerIdentityCard.serviceCards",", also available in ",[47,454,171],{},".\nAn exact job entry takes priority over ",[47,457,458],{},"*",[189,460,461,471],{},[192,462,463],{},[195,464,465,468],{},[198,466,467],{},"Field",[198,469,470],{},"Values",[205,472,473,486,505,526,539,549,560,570,591],{},[195,474,475,480],{},[210,476,477],{},[47,478,479],{},"job",[210,481,482,483,485],{},"Employment job name, or ",[47,484,458],{}," for the fallback.",[195,487,488,493],{},[210,489,490],{},[47,491,492],{},"template",[210,494,495,75,498,501,502,265],{},[47,496,497],{},"official",[47,499,500],{},"medical"," (photo on the right), or ",[47,503,504],{},"compact",[195,506,507,512],{},[210,508,509],{},[47,510,511],{},"background",[210,513,514,517,518,521,522,525],{},[47,515,516],{},"matte"," (matte paper, default), ",[47,519,520],{},"engraved"," (wave pattern) or ",[47,523,524],{},"tinted"," (stronger department colour). Independent of the field layout.",[195,527,528,533],{},[210,529,530],{},[47,531,532],{},"color",[210,534,535,536,265],{},"Six-digit hex accent and background colour, such as ",[47,537,538],{},"#3177b7",[195,540,541,546],{},[210,542,543],{},[47,544,545],{},"title",[210,547,548],{},"Optional department name; empty uses the registered job label.",[195,550,551,555],{},[210,552,553],{},[47,554,311],{},[210,556,557,558,265],{},"Optional local filename inside ",[47,559,317],{},[195,561,562,567],{},[210,563,564],{},[47,565,566],{},"prefix",[210,568,569],{},"Up to 12 ASCII letters, digits, spaces, hyphens or underscores. An empty default uses the job name.",[195,571,572,577],{},[210,573,574],{},[47,575,576],{},"format",[210,578,579,75,582,75,585,29,588,265],{},[47,580,581],{},"{prefix}-{number}",[47,583,584],{},"{prefix} {number}",[47,586,587],{},"{prefix}{number}",[47,589,590],{},"{number}",[195,592,593,598],{},[210,594,595],{},[47,596,597],{},"digits",[210,599,600,601,604],{},"Minimum number of digits, 1–8; default ",[47,602,603],{},"3",". Longer numbers are never truncated.",[15,606,607,610,611,614,615,622],{},[19,608,609],{},"Tablet → Boss Menu → Service numbers"," lets department management change only the\nprefix, number format and minimum digit count. ",[19,612,613],{},"Card templates, colours, logos and department\ntitles remain controlled by Config / Job Configurator."," Extra management payload fields\ncannot override these styles; stored presentation overrides are ignored.\nThis uses ",[19,616,617,618,621],{},"Manage members / ",[47,619,620],{},"MANAGE_MEMBERS","\n(permission 3)"," and the caller's current employment management context. A client-supplied\njob name cannot select another department; alternate gang contexts do not manage employment cards.",[15,624,625],{},"Saved Boss Menu number settings override only that department's number-format defaults.\nConcurrent edits reject stale revisions. Reopen the page to load the latest settings;\nreopen a service card to display the changed number format.",[627,628,630],"h3",{"id":629},"number-persistence-and-installation","Number persistence and installation",[15,632,633,634,637],{},"Numbers are assigned automatically on first service-card use and stored per ",[19,635,636],{},"character\nand job",", not player server ID. Reconnecting and leaving/rejoining the same job preserve\nthe number. Changing the prefix or format changes its presentation while retaining the\nunderlying number. Renaming the internal job key creates a different number scope.",[15,639,640],{},"Managers can assign or change a member's number on the same page, including offline members.\nEnter only the numeric part; the department format is applied automatically. Numbers must be\nintegers from 1 to 99999999 and unique within the department. Stale member edits are rejected;\nreassigning a number frees its previous value. Membership and number updates refresh open\nmanagement views while preserving draft input.",[15,642,643,644,646],{},"Creator employment jobs use the same management, roster and allocation owner. An exact job\nentry takes priority over ",[47,645,458],{},", whose fallback also covers newly created job names. Document\ninspection retains the Creator profile's document grants and the restrained-target requirement.",[15,648,649,650,79,653,656,657,660,661,664,665,668],{},"Install the new ",[47,651,652],{},"sky_jobs_service_card_settings",[47,654,655],{},"sky_jobs_service_numbers"," tables.\nThe automatic migration creates them when ",[47,658,659],{},"AutoExecuteQuery"," is enabled. Otherwise run\ntheir CREATE TABLE statements from the update's ",[47,662,663],{},"import.sql",".\n",[19,666,667],{},"Atomic number allocation requires oxmysql",", through the existing Jobs Base database facade.\nConcurrent requests for the same character can leave harmless gaps. Allocation does not overwrite existing member numbers.\nPhotos remain client-local and are never stored in these tables.",[670,671,672],"style",{},"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 .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":104,"searchDepth":111,"depth":674,"links":675},2,[676,677,678,679,680,681],{"id":12,"depth":674,"text":13},{"id":53,"depth":674,"text":54},{"id":90,"depth":674,"text":91},{"id":164,"depth":674,"text":165},{"id":367,"depth":674,"text":368},{"id":434,"depth":674,"text":435,"children":682},[683],{"id":629,"depth":684,"text":630},3,"View identity, license and service cards, customize their appearance, and configure department service numbers.","md",null,{},{"icon":690},"i-lucide-id-card","/docs/base/jobs-base/features/player-documents",{"title":5,"description":685},{"loc":691},"1.docs/base/2.jobs-base/2.features/5.player-documents","B6AQZLbT79mlHXaWEMb9H7iTb1hsoajzkjx-ec0C93w",[697,703],{"title":698,"path":699,"stem":700,"description":701,"icon":702,"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",{"title":704,"path":705,"stem":706,"children":-1,"description":707,"icon":708},"Client Exports","/docs/base/jobs-base/client-exports","1.docs/base/2.jobs-base/3.client-exports","Client-side exports provided by sky_jobs_base for radial menu, dispatch, and storage interactions.","i-lucide-monitor",[],1791771126902]