Server Configuration (sv_config.lua)

The config/sv_config.lua file holds strictly server-side parameters, including administrative permission groups and the daily/weekly quest reward pools.


🛡️ Admin Permissions

Defines which ACE group is allowed to open the in-game management tools (/oiltaskmanager and /oilbonusmanager):

return {
  adminPermission = 'group.admin',
  -- ...
  • When the server starts, server/functions.lua grants the internal oilfieldjob.admin permission to this group:
    ExecuteCommand(('add_ace %s %s allow'):format(serverConfig.adminPermission, 'oilfieldjob.admin'))
  • If your server uses a different admin group (such as group.superadmin, group.god, or role.admin), change adminPermission to match your server's permissions.

🎯 Quests System

The script features an automated, server-side quest system that generates 4 daily quests and 4 weekly quests for each worker from a configurable pool.

Quest Pools Structure

  quests = {
    dailyPool = {
      -- 14+ daily quests
    },
    weeklyPool = {
      -- 15+ weekly quests
    },
  },

Objective Types Reference

Objective TypeRequired ParametersDescription
tasks_completedtarget = numberComplete any number of oil field tasks across any sites
earn_moneytarget = numberEarn a total dollar amount from job route payouts
work_hourstarget = numberSpend cumulative hours on active duty shifts
repeat_tasktaskId = string, target = numberComplete a specific minigame task a specified number of times
compositegoals = { ... }Multi-objective challenge requiring multiple goals to be satisfied

Supported taskId Values for repeat_task

  • 'grind_rust' — Rust Removal
  • 'drive_bolt' — Pipeline Flange Assembly
  • 'turn_valve' — Valve Regulation
  • 'weld_pipe' — Pipeline Welding
  • 'cut_pipe' — Pipeline Cutting
  • 'technicalbox' — Technical Box Repair

📅 Daily Quests Examples

Daily quests automatically refresh at midnight (23:59:59 local server time).

1. General Tasks Completion

{
  id = 'complete_tasks_10',
  label = 'Finish 10 tasks',
  description = 'Complete any 10 oil field tasks today to prove your efficiency.',
  reward = { exp = 130, money = 480 },
  objective = {
    type = 'tasks_completed',
    target = 10,
  },
},

2. Earnings Target

{
  id = 'earn_money_1600',
  label = 'Earn $1,600',
  description = 'Deliver enough work to cross $1,600 payout today.',
  reward = { exp = 210, money = 780 },
  objective = {
    type = 'earn_money',
    target = 1600,
  },
},

3. Work Shift Hours

{
  id = 'work_hours_1_5',
  label = 'Work 1.5 hours',
  description = 'Stay on duty for a total of 1.5 hours during this shift.',
  reward = { exp = 140, money = 420 },
  objective = {
    type = 'work_hours',
    target = 1.5,
  },
},

4. Specific Task Repetition

{
  id = 'repeat_task_weld_pipe_8',
  label = 'Weld 8 pipeline seams',
  description = 'Successfully weld 8 pipeline joints.',
  reward = { exp = 145, money = 520 },
  objective = {
    type = 'repeat_task',
    taskId = 'weld_pipe',
    target = 8,
  },
},

5. Composite Multi-Goal Quest

{
  id = 'mixed_daily_cleaner_master',
  label = 'Oil Worker Master',
  description = 'Complete 12 tasks, work 2 hours, and earn $1,800 in a single day.',
  reward = { exp = 320, money = 1200 },
  objective = {
    type = 'composite',
    goals = {
      { type = 'tasks_completed', target = 12 },
      { type = 'work_hours', target = 2 },
      { type = 'earn_money', target = 1800 },
    },
  },
},

📆 Weekly Quests

Weekly quests reset every Sunday at midnight (23:59:59), rolling over on Monday morning. They offer substantial payouts and EXP rewards:

{
  id = 'earn_money_17000',
  label = 'Earn $17,000',
  description = 'Complete a top-tier week with $17,000 earned.',
  reward = { exp = 2100, money = 7400 },
  objective = {
    type = 'earn_money',
    target = 17000,
  },
},
{
  id = 'mixed_tasks_hard',
  label = 'Balanced week plus',
  description = 'Complete 65 tasks, work 12 hours, and earn $10,000 total.',
  reward = { exp = 2050, money = 7000 },
  objective = {
    type = 'composite',
    goals = {
      { type = 'tasks_completed', target = 65 },
      { type = 'work_hours', target = 12 },
      { type = 'earn_money', target = 10000 },
    },
  },
},

TIP: Quest progress is persistently stored in the bs_oilfield_playerquests database table and automatically synchronizes with the in-game tablet UI in real-time.