Koja Scripts
JOBS

Missions

File: shared/config.lua → Config.Missions

Missions

File: shared/config.luaConfig.Missions

An array of mission definitions. Each entry describes a complete job location with its tasks, rewards, and metadata.

Mission fields

KeyTypeDescription
idstringUnique mission identifier.
labelstringDisplay name shown in the UI.
locationtableLocation metadata and spawn point.
rewardstableMoney and XP awarded on completion.
informationtableUI metadata (description, tags, image, etc).
maintaskstablePrimary tasks (must be completed).
minitaskstableSecondary bonus tasks.

location

KeyTypeDescription
roadstringStreet / area name.
citystringCity name.
coordsvec3Primary world coordinates.

rewards

KeyTypeDescription
moneynumberCash reward.
xpnumberExperience points reward.

information

KeyTypeDescription
descriptionstringShort description shown in the mission list.
durationstringEstimated duration label (e.g. '15m').
levelnumberMinimum level required.
imagestringPath to the background image.
tagstableArray of tag strings (e.g. {'Easy', 'Regular'}).

Task types

maintasks

Primary tasks that define the core activity of a mission.

cuttinggrass

KeyTypeDescription
enabledbooleanWhether the task is active.
labelstringTask display name.
mowerModelstringProp model for the lawnmower.
zonestableArray of vec3 grass zone positions.

minitasks

Optional secondary tasks that provide bonus rewards.

cuttinghedge

KeyTypeDescription
enabledbooleanWhether the task is active.
labelstringTask display name.
hedgeModelstringProp model for the hedge.
zonestableArray of vec3 hedge positions.

plantflowers

KeyTypeDescription
enabledbooleanWhether the task is active.
labelstringTask display name.
flowerModelstringProp model for the flower.
zonestableArray of vec3 flower positions.

garbage

KeyTypeDescription
enabledbooleanWhether the task is active.
labelstringTask display name.
garbageModelstringProp model for the garbage bag.
zonestableArray of vec3 garbage spawn points.
dumpstertableDumpster object (see below).

dumpster

KeyTypeDescription
coordsvec4Position and heading.
modelstringProp model for the dumpster.

Full example

Config.Missions = {
    {
        id = 'mirrorpark_1',
        label = 'Mission Park',
        location = {
            road = 'Mirror Park',
            city = 'Los Santos',
            coords = vec3(1270.99, -648.16, 67.94),
        },
        rewards = { money = 450, xp = 150 },
        information = {
            description = 'Mow the lawns around Mirror Park.',
            duration = '15m',
            level = 1,
            image = './images/bg1.webp',
            tags = { 'Easy', 'Regular' },
        },
        maintasks = {
            cuttinggrass = {
                enabled = true,
                label = 'Mow the lawn',
                mowerModel = 'prop_lawnmower_01',
                zones = { vec3(...), vec3(...) }
            },
        },
        minitasks = {
            cuttinghedge = {
                enabled = true,
                label = 'Trim the hedges',
                hedgeModel = 'prop_bush_neat_08',
                zones = { vec3(...), vec3(...) }
            },
            plantflowers = {
                enabled = true,
                label = 'Plant and water flowers',
                flowerModel = 'prop_flower_01',
                zones = { vec3(...) }
            },
            garbage = {
                enabled = true,
                label = 'Collect garbage',
                garbageModel = 'prop_ld_rub_binbag_01',
                zones = { vec3(...) },
                dumpster = {
                    coords = vec4(1252.65, -667.51, 67.62, 116.35),
                    model = 'prop_cs_dumpster_01a'
                },
            }
        }
    },
}

Missions System

File: shared/config.luaConfig.MissionSystem

Controls how missions are distributed among players on the server.

Fields

KeyTypeDefaultDescription
Modestring'buckets'Mission distribution mode (see below).
BaseBucketIdnumber5000Starting routing bucket ID used for virtual worlds.

Modes

'global_lock'

First come, first served. When a player starts a mission, that mission is locked on the map and unavailable to others until completed or abandoned.

'buckets'

Every player (or party) enters their own routing bucket (virtual world). Multiple players can run the same mission simultaneously without interfering with each other.

Example

Config.MissionSystem = {
    Mode = 'buckets',
    BaseBucketId = 5000
}
  • Company — Defines the gardener company — its name, NPC, map blip, job requirement, parking spots, vehicles, and equipment offsets.
  • Database — File: shared/config.lua → Config.Database
  • Locale & Debug — Key Type Default Description ------- --------- ------- ------------------------------------------------------------------- Debug boolean true Enables debug mode.
  • Levels — Controls the leveling progression for the gardener job.
  • Skills — Defines the entire skill tree displayed in the Upgrades panel.
  • Uniforms — File: shared/config.lua → Config.Uniforms
  • Configuration — back to the section overview