Sky-Systems offers a variety of high-quality FiveM scripts that can enhance the gameplay experience on your server. In this guide, we'll walk you through the process of installing a Sky-Systems script, step-by-step.
For a job resource you need the current versions of all three resources from the same CFX Portal account:
sky_base
sky_jobs_base
the job resource, for example sky_ambulancejob
Job Creator (sky_jobcreator) uses the same two libraries and requires oxmysql plus ESX, QBCore or Qbox. Select it in the setup guide below when you install it. Its installation guide and first-job walkthrough cover creating your own jobs.
Your framework, SQL adapter, inventory, target system and other integrations selected in sky_base/config must already be installed and started. Do not rename any Sky resource folder.
Anticheat requirement: If Resource Protection is enabled, you must whitelist all installed Sky resources, including sky_base, sky_jobs_base and every installed Sky product. This applies to Electron and other anticheats; blocked requests/responses can disrupt the callback system. Follow the Resource Protection setup guide before testing.
Select the Sky resources installed on your server. sky_base and sky_jobs_base remain selected
because every job system depends on them. The generated plan combines the correct start order,
inventory locations, command and filesystem permissions, and the important checks for each selected resource.
Interactive installer
Build your setup plan
Select every Sky job system you own. The guide keeps both required bases selected and generates the correct start order, item paths, and resource-specific checks.
Required foundations
These resources are always installed first and cannot be deselected.
2 required
sky_baseRequiredFramework, inventory, database, target, and integration bridge.
sky_jobs_baseRequiredShared jobs, tablet, garage, storage, dispatch, and player interactions.
Your generated guide
Install 2 resources in this order
Updates with your selection
server.cfgCommand and file permissions + start order
# Place the configured framework, SQL, inventory, target, and integrations above this block.
# Required command-permission bootstrap (must be before ensure sky_base)
add_ace resource.sky_base command.add_ace allow
# Allow Sky Base to save files for the installed resources
add_filesystem_permission sky_base write sky_jobs_base
# Sky resources in dependency order
ensure sky_base
ensure sky_jobs_base
Download matching current versions from the same CFX Portal account.
Review every Sky Base integration selector: framework, garage, progress bar, SQL, locale, phone, licenses, billing, keys, fuel, inventory, banking, and target.
Keep Config.AutoExecuteQuery enabled in Jobs Base and every selected job, or import each matching current import.sql exactly once.
Set framework job salaries to 0, or disable the Jobs Base salary system.
Review Config.CommandPermissions in Jobs Base for /jobconfig, /setboss, and the shared restraint commands.
2
Install items and images
sky_jobs_base/config/inventory — shared item README and supplied icons. Review the enabled restraint, tablet, GPS-jammer, and prop-placement item requirements. Open definitions
Select a job system above to add its job-specific inventory folder.
-- sky_jobs_base
['handcuffs'] = {
label = 'Handcuffs',
weight = 250,
stack = true,
close = true,
description = 'Metal handcuffs for restraining suspects'
},
['handcuffs_keys'] = {
label = 'Handcuff Keys',
weight = 100,
stack = true,
close = true,
description = 'Keys used to remove metal handcuffs'
},
['zipties'] = {
label = 'Zipties',
weight = 100,
stack = true,
close = true,
description = 'Plastic zipties for restraining suspects'
},
['wire_cutter'] = {
label = 'Wire Cutter',
weight = 800,
stack = true,
close = true,
description = 'Tool used to cut restraints'
},
['legcuffs'] = {
label = 'Leg Cuffs',
weight = 300,
stack = true,
close = true,
description = 'Leg restraints that slow down a restrained suspect'
},
['headbag'] = {
label = 'Head Bag',
weight = 250,
stack = true,
close = true,
description = 'Bag used to cover a restrained suspect'
},
['drug_test_kit'] = {
label = 'Drug Test Kit',
weight = 100,
stack = true,
close = true,
description = 'A rapid screening test for active drug influence'
},
['advanced_drug_test_kit'] = {
label = 'Advanced Drug Test Kit',
weight = 150,
stack = true,
close = true,
description = 'A medical screening test that identifies active substances and dose amounts'
},
['fake_drug_sample_clean'] = {
label = 'Clean Fake Drug Sample',
weight = 100,
stack = true,
close = true,
description = "A transferable clean sample that falsifies the carrier's next drug test after use"
},
['printer_paper'] = {
consume = 0,
label = 'Printer Paper',
weight = 100,
stack = true,
close = true,
description = 'Paper used to refill configured job printers'
},
['job_document'] = {
label = 'Document',
weight = 10,
stack = false,
close = true,
consume = 0,
description = 'A printed copy of a job record.',
client = { image = 'job_document.png' },
},
['printer_ink'] = {
label = 'Printer Ink',
weight = 200,
stack = true,
close = true,
consume = 0,
description = 'A replacement cartridge for job printers.',
client = { image = 'printer_ink.png' },
},
['sky_briefcase'] = {
label = 'Briefcase',
weight = 1500,
stack = false,
close = false,
consume = 0,
description = 'A lockable case for documents and work materials.',
client = { image = 'sky_briefcase.png' },
buttons = require '@sky_jobs_base.config.inventory.ox_briefcase_buttons',
},
['sky_case_folder'] = {
label = 'Case Folder',
weight = 450,
stack = false,
close = false,
consume = 0,
description = 'A folder for case files and loose documents.',
client = { image = 'sky_case_folder.png' },
},
['gps'] = {
label = 'GPS',
weight = 150,
stack = true,
close = true,
consume = 0,
description = 'Required by enabled employee location tracking',
},
['gps_jammer'] = {
label = 'GPS Jammer',
weight = 300,
stack = true,
close = true,
consume = 0,
description = 'Disables a tracked employee GPS signal',
},
['tablet'] = {
label = 'Job Tablet',
weight = 800,
stack = false,
close = true,
consume = 0,
description = 'Opens the shared job tablet',
},
['bodycam'] = {
label = 'Bodycam',
weight = 500,
stack = true,
close = true,
consume = 0,
description = 'Wearable body camera for officer footage'
},
['job_traffic_cone'] = {
label = 'Traffic Cone',
weight = 1000,
stack = true,
close = true,
consume = 0,
description = 'Placeable job traffic cone',
},
['job_worklight_stand'] = {
label = 'Worklight Stand',
weight = 3000,
stack = true,
close = true,
consume = 0,
description = 'Placeable worklight stand',
},
['job_worklight'] = {
label = 'Worklight',
weight = 2000,
stack = true,
close = true,
consume = 0,
description = 'Placeable portable worklight',
},
['police_barrier'] = {
label = 'Police Barrier',
weight = 3000,
stack = true,
close = true,
consume = 0,
description = 'Placeable police barrier',
},
['police_road_barrier'] = {
label = 'Police Road Barrier',
weight = 5000,
stack = true,
close = true,
consume = 0,
description = 'Placeable road barrier',
},
['police_evidence_marker'] = {
label = 'Evidence Marker',
weight = 100,
stack = true,
close = true,
consume = 0,
description = 'Placeable police evidence marker',
},
['police_stinger_spikes'] = {
label = 'Spike Strip',
weight = 3000,
stack = true,
close = true,
consume = 0,
description = 'Placeable police spike strip',
},
['police_checkpoint_tent'] = {
label = 'Checkpoint Tent',
weight = 5000,
stack = true,
close = true,
consume = 0,
description = 'Placeable police checkpoint tent',
},
['ambulance_barrier'] = {
label = 'Medical Barrier',
weight = 3000,
stack = true,
close = true,
consume = 0,
description = 'Placeable medical barrier',
},
['ambulance_medical_crate'] = {
label = 'Medical Crate',
weight = 3000,
stack = true,
close = true,
consume = 0,
description = 'Placeable medical equipment crate',
},
['ambulance_defibrillator'] = {
label = 'Placeable Defibrillator',
weight = 4000,
stack = true,
close = true,
consume = 0,
description = 'Medical defibrillator prop for scene placement',
},
['ambulance_medical_bag'] = {
label = 'Placeable Medical Bag',
weight = 2000,
stack = true,
close = true,
consume = 0,
description = 'Medical bag prop for scene placement',
},
Review optional items, configured item keys, and non-bundled images before pasting.
3
Complete each selected resource
Anticheat with Resource Protection enabled: You must whitelist sky_base, sky_jobs_base and every selected Sky resource in the anticheat's resource whitelist. This applies to Electron and other anticheats; blocked callback communication can prevent actions from completing. Required whitelist setup.
Select at least one optional resource to generate its checklist.
4
Restart and verify before players join
Perform a full server restart and resolve every dependency, entitlement, SQL, and missing-item error.
Open /jobconfig for installed specialist jobs before placing stations or workshops.
Grant framework-job boss permissions with /setboss.
Jobs Base restraint administration: /admincuff ID handcuffs/admincuff ID zipties/adminuncuff ID Open shared commands
Test one complete workflow per resource, including its duty, storage, garage, tablet, or organization access where applicable.
With the script, you will receive a sky_base resource in the CFX Portal. This is a library that our scripts use for better performance, faster configuration, and less setup. Install the sky_base first by uploading it to your resources folder.
Navigate to the config folder inside sky_base. Select your framework, SQL adapter, inventory, target, banking, vehicle keys, fuel, phone, billing and language integrations. This configuration applies globally to all Sky scripts. For more information, visit the sky_base documentation page.
Do not continue until the selected integration resources start without errors. A wrong integration selection can look like a job-script problem later.
Download the script from the CFX Portal and upload it to your resources folder. Note that sometimes after downloading from the CFX Portal, the resource folder is packed within another folder with the same name. Ensure you place the folder on your server that contains the fxmanifest file.
Sky Jobs Base and the job resources use Config.AutoExecuteQuery = true by default and create or migrate their tables automatically. In that default setup, do not additionally import import.sql.
For job resources, import the included import.sql manually before first start only when you explicitly disable their automatic queries. Never import SQL from an older resource version over newer tables.
Job Creator: when its Config.AutoExecuteQuery = true, leave Creator's SQL files unimported and let startup finish the migration. If you disable that switch in sky_jobcreator/config/config.lua, execute the matching sky_jobcreator/import.sql before startup. On QBCore or Qbox, also execute sky_jobcreator/import_gangs.sql; on ESX, use only import.sql and leave gang tables untouched. Keep existing jobs, grades, memberships and balances.
Only when installing sky_jobcreator: open server.cfg and add this line near the top, before the existing framework startup line (ensure es_extended, ensure qb-core or ensure qbx_core):
server.cfg
add_unsafe_worker_permission sky_jobcreator
Keep Config.AutoInstallFramework = true in sky_jobcreator/config/config.lua for automatic framework-hook installation. The worker permission lets that installer update recognised framework files and save their originals beside Creator in .sky_jobscreator-installer-backups/. It is separate from administrator ACEs and Sky Base's filesystem permissions. See the official FiveM worker-permission reference.
Keep the framework, database connector and selected providers in their normal dependency order, then use:
On QBCore/Qbox, put the character-selection/login resource after Creator. On Qbox, add set qbx:cleanPlayerGroups "false" before ensure qbx_core so memberships survive until Creator's saved definitions load. Start other installed Sky jobs after their two libraries; keep DOJ before Police and Ambulance before Crime when those integrations are used.
Before startup, disable any ensure jobs_creator or ensure hex_jobscreator lines and remove those legacy creators from automatically ensured groups. Keep their files and database records for supported migration, but keep both resources stopped: Creator's installer refuses to run while either is active.
Perform a full server restart after adding the worker permission. If the installer reports changed framework files, restart the whole server once more to load those changes. Resolve installation or database errors before creating jobs. Follow the Creator migration guide when importing an existing supported Jaksam installation.
Sky Base needs permission to save files inside other Sky resources. Current FiveM server artifacts
block these writes unless you explicitly allow them. See the
FiveM filesystem permissions documentation.
Add one line for each installed resource to server.cfg, before ensure sky_base and the other
Sky resources. Keep only the lines for resources you actually install:
Each line allows sky_base to write files in the named resource. Perform a full server restart
after adding or changing these permissions; restarting a single resource does not apply them.
Keep existing files in each resource's data folder when updating.
The database-based versions of sky_dailyrewards (3.3.3+), sky_battlepass (3.0.5+),
sky_coinsystem (2.4.5+) and sky_shops (1.0.11+)
do not need a Sky Base filesystem write permission. They install their schemas automatically through
Sky.DB.Migrate. Use current sky_base and oxmysql, and back up the database before upgrading.
Daily Rewards, Battle Pass and Shops import their old JSON files once: preserve the old data folder
through the first start, wait for the migration-complete message, then retain it as a backup. Follow
the resource's update guide: Daily Rewards,
Battle Pass,
Coinsystem or
Shops.
Free Phone (sky_phone) uses its own bridge and file storage, so it does not require a Sky Base
filesystem permission. Follow its installation guide.
Add this ACE entry to your server.cfgbeforeensure sky_base. It gives sky_base permission to wire configured command access automatically on server start:
server.cfg
add_ace resource.sky_base command.add_ace allow
Without this line, admin commands like /jobconfig, /setboss, and /revive cannot be granted to any player and only the server console will be able to use them.
The actual per-command permissions are defined in each resource's Config.CommandPermissions.
For every configured group, Sky Base grants both the native command.<command> object and the
resource runtime object such as sky_policejob.<command>. See each job's permissions page for details.
Job Creator administrators need both sky_jobcreator.jobcreator and sky_jobs_base.jobconfig. The default groups are god, superadmin and admin. If you use a custom group, add its exact name to Config.CommandPermissions.jobcreator in sky_jobcreator/config/config.lua and Config.CommandPermissions.jobconfig in sky_jobs_base/config/config.lua. Employee rank rights and the worker permission do not grant editor access. Open the editor with /jobcreator or /jobscreator after restarting.
Free Phone is standalone: the Sky Base entry above does not configure Phone access.
Before ensure sky_phone, add add_ace resource.sky_phone command.add_ace allow and
add_ace resource.sky_phone command.remove_ace allow, then verify administrator ACE membership.
Phone does not need resource capabilities for add_principal or remove_principal.
Follow the Phone permission guide.
Navigate to the resource's config folder and review at least the language, enabled systems, command permissions and advanced/static settings. Most job and station settings are created later through /jobconfig.
For CodeM Inventory V2, select the codem-inventoryv2 item tab and follow the
CodeM V2 setup. V2 uses the codemv2 Sky Base adapter,
data/items.lua definitions and a separate codem-inventory-images resource.
Open the selected resource's Inventory Items reference page and add every item used by the
systems you enable in the format required by your inventory. Ready-to-copy shared restraint
definitions are on the Jobs Base Inventory Items
page; copy the available shared icons from sky_jobs_base/config/inventory. Job-specific items and
icons remain in that job resource's config/inventory folder.
Item keys are configurable. If you change a key in the job configuration, use the same key in your inventory definition. Some optional systems add their own items; the resource-specific installation page separates required and optional items.
configuring the shared media provider used by tablet uploads;
installing an external wheelchair vehicle model;
using a metadata-capable inventory for police evidence;
disabling duplicate framework salaries;
granting the highest grade with /setboss;
creating jobs, hospitals, stations and workshops with /jobconfig.
For Job Creator, use /jobcreator to create the job, ranks, workplace locations and enabled features. It uses shared Jobs Base items, including document/printer items when printing is enabled; there is no separate Creator inventory-item or model pack to install. Register any custom items, vehicles or props selected for your job with their owning providers. See Create your first job.
For tablet or report features that upload images or videos, select FiveManage, Qbox CDN, or a registered custom adapter in sky_jobs_base/config/webhooks.lua. Keep all provider secrets server-side, then perform a full server restart. See Media Providers for configuration and the custom adapter contract.
Save your changes and perform a full server restart. Check the console for dependency, entitlement, SQL and missing-item errors before players connect. Do not rely on restarting a single resource as the installation test.
Remove Conflicting Resources:
Our scripts replace the default framework resources for the same job. For example, sky_ambulancejob replaces esx_ambulancejob, qb-ambulancejob, qbx-ambulancejob, andqbx-medical. Make sure to stop and remove the original resources from your server.cfg before starting ours. The scripts will warn you in the server console if a conflict is detected.
CFX Portal Account:
Ensure that your server has a key from the same CFX Portal account the resource was purchased with. Otherwise, you will encounter the error: "You lack the required entitlement to use ..."
Do Not Rename Scripts:
Do not rename the scripts. Renaming them will break their functionality.
Keep Dependency Versions Together:
When updating a job resource, also update sky_base and sky_jobs_base from the same delivery. Mixed versions can expose incompatible APIs.
Do Not Run Two Salary Systems:
Sky Jobs Base pays configured salaries. Set framework job-grade salaries to 0, or disable Config.Salary.enabled in sky_jobs_base if another payroll system should remain responsible.
The framework, SQL adapter, inventory, target and configured integrations start before sky_base.
sky_base, sky_jobs_base and the job resource start in this order without console errors.
Automatic database migration completed, or the matching current import.sql was imported once when automatic queries are disabled.
Every enabled system's inventory items and images were installed.
ACE permissions are present before ensure sky_base.
If Job Creator is installed, its worker permission is before framework startup, conflicting creators are stopped, and any installer-requested second full restart is complete.
Filesystem write permissions cover Jobs Base and every installed Sky Base resource and were applied with a full server restart.
/jobconfig lists installed specialist job resources; Creator administrators can open /jobcreator and save a planned job/rank change.
The highest intended boss grade was granted with /setboss.
Framework salaries and Sky Jobs Base salaries are not both active.
A full restart and one end-to-end job workflow were tested.
That's it! You've successfully installed a Sky-Systems script on your FiveM server.
This error message indicates that the script files may have been corrupted during the download process or that the .fxap file wasn't uploaded to your server. To resolve this issue, try the following steps:
Verify that the .fxap file is present in the sky_scriptname folder within the resources folder on your server.
Try deleting the sky_scriptname folder from your server and uploading it again using your FTP client.
If the issue persists, try using a different FTP client to upload the script files to your server.
If you see this error message, it may indicate an issue with your CFX Portal account. Try restarting your FiveM server and verifying your CFX Portal account to resolve this issue.