Kartik Scripts

Contracts

Board rules live in _settings.lua. Each contract has its own file.

Board rules, _settings.lua

SettingDefaultWhat it does
perRoll15Contracts each gang gets on its board
rollEveryHours24Hours until a new board. Completed and cooldown states reset
oneActivePerGangfalseOnly one contract running per gang
oneActivePerPlayertrueA player can only run one contract at a time
timeoutMinutes60Default time limit
cooldownMinutes10Wait after a contract fails or expires
countWholeGangtrueFor count contracts, any member's actions count. Off = only the starter's
failOnDeathfalseDying fails scripted contracts
rewardTo'completer'Item and weapon rewards go to the 'completer' or the 'starter'. Money, XP and vehicles always go to the gang
itemsTo'player''player': items and weapons go to that player. 'stash': they go to the gang hideout stash (the player gets them instead if the stash is full or locked)
maxTravelSpeed85.0Anti-teleport check between steps
introDialogtrueShow the briefing when starting
closeTabletOnStarttrueClose the tablet when starting
hudtrueShow the contract HUD
blipScale0.85Contract blip size
interactRadius2.0Contract interaction range

Guards

SettingDefaultWhat it does
guards.accuracy35Enemy NPC accuracy (0–100)
guards.armour25Enemy armour (0–100)
guards.weaponsSNS pistol, SNS Mk2, Vintage pistol, PistolWeapons they carry
guards.ammo200Ammo
guards.retaskMs1200How often they look for targets
guards.engageRange320.0Guards only chase players within this range

Contract files

Each contract file lets you change its text, level, XP, rewards and timings, or turn it off. The objectives and locations are tied to its mission script, so only change those if you know what you're doing.

Fields you can safely change

FieldExampleWhat it does
label'Relay Run'Name on the tablet
description'Take the cargo van…'Briefing text
level1Gang level needed
xp300Gang XP for finishing
timeoutMinutes12Time limit for this contract
cooldownMinutes10Cooldown for this contract
enabledfalseRemove the contract from boards
imageURLImage on the contract card
rewardssee belowWhat the gang earns

Rewards

rewards = {
    { kind = 'cash', amount = 15000, label = '$15,000', rarity = 'purple' },
    { kind = 'weapon', name = 'weapon_pistol', amount = 1, label = 'Pistol', rarity = 'red' },
},
FieldMeaning
kindcash or dirty (gang treasury), item or weapon (player), xp (gang), vehicle (gang garage)
nameItem, weapon or vehicle model
amountHow many or how much
labelText on the card
rarityCard colour: blue, purple or red

Locations

Scripted contracts have a params section with spawn points, drop points, vehicle and NPC models. You can move locations by changing their vec4(x, y, z, heading) coordinates. Keep the same number of entries.

Some contracts also set the props and animations used for their interactions:

ContractParamDefaultWhat it does
Stash RecoverylootPropprop_cs_heist_bag_02The stash bag on the ground
Coastal DroppickupPropprop_box_wood02aThe package crate on the beach
Armored ScorebreachAnimDrill animation + drill propAnimation (and hand prop) while cracking the truck's rear doors

Updating from 2.1.0? lootPed, pickupPed and breachPed were replaced by the params above. Copy the new keys from the fresh config files.

Items a step takes

A step with take removes items from the player when it is done. Point it at params so the item and amount can be changed in Admin → Contracts:

steps = {
    { name = 'deliver', at = 'dropPoint', radius = 10.0, take = { itemParam = 'item', amountParam = 'amount' } },
},
params = {
    item = 'packed_weed',
    amount = 50,
},

A fixed take = { item = 'weed', amount = 50 } still works. When it matches params.item and params.amount, it follows them too.

Count contracts (Tag Run, Clean Sweep, Corner Hustle, Hold the Block, Wash Cycle) have objective.target, which you can change. Don't change objective.event or objective.type.


Included contracts

FileType
armored_score.luaScripted
clean_sweep.luaCount (remove tags)
coastal_drop.luaScripted
convoy_ambush.luaScripted
corner_hustle.luaCount (drug sales)
hold_the_block.luaCount (hotspot captures)
lab_raid.luaScripted
relay_run.luaScripted
stash_recovery.luaScripted
street_scout.luaScripted
tag_run.luaCount (sprays)
van_snatch.luaScripted
wash_cycle.luaCount (money laundered)
weed_runner.luaScripted

Other resources can add their own contracts too. See External contracts.

After changing contracts, restart the resource, then press Re-roll all gangs in Admin → Contracts so boards pick up the changes.

On this page