Shared Configuration

The sh_config.lua file is the core configuration file shared between the client and the server. It contains the most important settings for the script.

⚙️ Core Settings & Framework Bridges

Define the core behavior, which framework is used, the notification system, target system, and other resource integrations (dispatch, clothing, vehicle keys). The script is designed to be plug-and-play across major frameworks.

  framework = 'qbx', -- 'qb', 'qbx', 'esx'
  notify = 'ox_lib', -- 'ox_lib', 'bs-advnotifications'
  interaction = 'ox_target', -- 'ox_target', 'qb-target', 'qbx-target'
  phone = 'none', -- '17mov_phone', 'lb_phone', 'none'
  dispatch = 'qb_dispatch', -- 'qb_dispatch', 'ps_dispatch', 'cd_dispatch', 'none'
  clothingBridge = 'illenium-appearance', -- 'illenium-appearance', 'qb-clothing', 'esx_skin', 'none'
  vehicleKeys = 'qbx_vehiclekeys', -- 'qb-vehiclekeys', 'qbx_vehiclekeys', 'qs-vehiclekeys'
 
  jobName = 'crimescenecleaner',

⌨️ Keybinds & Commands

Set up default keybindings for opening the dashboard and toggling task displays, as well as admin commands for managing scenes and bonuses.

  binds = {
    dashboard = {
      key = 'F7',
      label = 'Open Job Dashboard',
    },
    toggleTasks = {
      key = 'F6',
      label = 'Toggle Crime Scene Tasks',
    },
  },
 
  sceneManagerCommand = 'scenemanager',
  bonusManagerCommand = 'bonusmanager',

📋 Job & Spawning Logic

Configure how the job behaves, including how many scenes/tasks are generated per route, and the rendering distance for outlines.

  job = {
    spawnClearRadius = 5.0,
    scenesPerJob = { min = 4, max = 6 },
    tasksPerScene = { min = 4, max = 6 },
    scene = {
      taskLoadDistance = 150.0,
      outlineRenderDistance = 20.0
    }
  },

🏢 Base Location

Settings for the main job headquarters, including the boss NPC location, blip details, and the spawn coordinates/models for the cleaning vans.

  base = {
    blip = {
      sprite = 366,
      color = 0x00BFFFFF,
      scale = 0.8,
      label = 'Crime Scene Cleaner Job',
    },
    ped = {
      model = 's_m_y_dwservice_02',
      coords = vec4(844.52, -2118.31, 29.52, 93.47),
    },
    vehicle = {
      model = 'burritocsc',
      spawnCoords = {
        vec4(836.38, -2119.26, 28.35, 174.44),
        -- ...
      },
      color = { primary = 111, secondary = 111 },
    },
  },

🛠️ Tasks Configuration

Configure every individual task (minigame) available in the job. You can set the EXP and money payout, blip styling, and the UI text (tutorials, controls, and steps) shown to the player during the task.

  tasks = {
    ['clean_blood'] = {
      label = 'Clean Blood',
      description = 'Clean all blood stains from the crime scene.',
      exp = 50,
      payment = 100,
      
      blip = { ... },
      ui = { ... }
    },
    -- ...
  },

📈 Upgrades

Define the available skill upgrades that players can purchase with their earned EXP and money. These upgrades provide multipliers that reduce task time or increase efficiency.

  upgrades = {
    {
      id = "clean_blood",
      name = "Detergent Kit",
      description = "Reduces the time needed to clean blood stains.",
      icon = "SprayBottle",
      maxLevel = 3,
      costs = {
        [1] = { xp = 100, cash = 1000 },
        [2] = { xp = 300, cash = 2500 },
        [3] = { xp = 600, cash = 5000 },
      },
      multiplier = { [1] = 0.8, [2] = 0.6, [3] = 0.4 }
    },
    -- ...
  },