Configuration Reference
Current configuration map and defaults for oxide-animalcontroljob, including job flow, progression, animal behavior, visuals, and o-link-dependent settings.
Reference for the current oxide-animalcontroljob config layout.
Config File Map
| File | Purpose |
|---|---|
shared/config.lua | Core toggles, menu mode, summary mode, enums |
shared/config/job.lua | Crew, payment, complaints, timer, and call settings |
shared/config/levels.lua | Level thresholds and rewards |
shared/config/locations.lua | Office locations and shelter delivery point |
shared/config/events.lua | Dispatch event list |
shared/config/vehicles.lua | Animal control truck settings |
shared/config/animals.lua | Animal models, tranquilizer, stealth, per-type behavior, loading |
shared/config/props.lua | Bait, deceased bag, and animation settings |
shared/config/visuals.lua | NPCs, blips, reporting NPC, safety zones, waypoints |
shared/config/tutorials.lua | Tutorial definitions |
shared/config/outfits.lua | Optional on-duty uniform (off by default) |
server/main.lua | Server-side rate limits |
General Settings
File: shared/config.lua
| Setting | Type | Default | Description |
|---|---|---|---|
Config.Debug | boolean | false | Enables debug logging |
Config.usePhone | boolean | true | Sends service messages through o-link.phone instead of notification-only flow |
Config.shiftSummary | string | 'text' | 'nui' for popup summary when menu mode is not 'menu', 'text' for phone or toast summary |
Config.menuStyle | string | 'nui' | 'nui' for the Vue menu, 'menu' for olink.menu |
Config.MaxSlotsPerLocation | number | 3 | Max concurrent shifts at an office |
Enums
ShiftState
idlewaitingon_callworking
JobType
aggressive_animalstray_capturewildlife_removaldeceased_pickup
Job Settings
File: shared/config/job.lua
Crew
| Setting | Default | Description |
|---|---|---|
Config.Crew.maxSize | 2 | Crew size limit |
Config.Crew.inviteTimeout | 60 | Crew invite expiry in seconds |
Config.Crew.coopBonusPercent | 0.15 | Co-op bonus added to completed jobs |
Payment
| Setting | Default | Description |
|---|---|---|
Config.Payment.distanceBonusPerUnit | 0.30 | Distance bonus multiplier |
Config.Payment.speedBonusAmount | 25 | Bonus when finishing before timer expiry |
Config.Payment.vehicleDestroyFine | 200 | Cash fine when the truck is destroyed |
Config.Payment.streakBonusPerDay | 10 | Daily streak bonus amount |
Config.Payment.maxStreakDays | 7 | Daily streak cap |
Config.Payment.gasFeePercent | 0.05 | Gross-pay gas deduction |
Config.Payment.taxPercent | 0.10 | Gross-pay tax deduction |
Config.Payment.payoutAccount | 'bank' | Account net shift pay is deposited to ('bank', 'cash', 'dirty', etc.) |
Config.Payment.fineAccount | 'cash' | Account vehicle-destroy and animal-kill fines are taken from |
Base pay by job type
Config.Payment.basePay = {
[JobType.AGGRESSIVE_ANIMAL] = 85,
[JobType.STRAY_CAPTURE] = 70,
[JobType.WILDLIFE_REMOVAL] = 110,
[JobType.DECEASED_PICKUP] = 55,
}Complaints
| Setting | Default | Description |
|---|---|---|
Config.Complaints.maxComplaints | 3 | Complaints before timeout |
Config.Complaints.timeoutMinutes | 30 | Timeout duration |
Config.Complaints.animalEscapePenalty | 1 | Complaints added on animal escape |
Config.Complaints.animalKillPenalty | 1 | Complaints added on animal kill |
Config.Complaints.animalKillFine | 150 | Cash fine on animal kill |
Config.Complaints.vehicleDestroyPenalty | 1 | Complaints added on vehicle destruction |
Config.Complaints.deathPenalty | 1 | Complaints added on death or down |
Config.Complaints.decayPerJob | 1 | Complaints removed per completed job |
Timer
| Setting | Default | Description |
|---|---|---|
Config.Timer.baseTime | 90 | Base mission time in seconds |
Config.Timer.timePerDistanceUnit | 0.20 | Added seconds per unit from call acceptance to event |
Config.Timer.expiredPenalty | 0.85 | Pay multiplier for late completion |
Current timer formula:
timeLimit = Config.Timer.baseTime + math.floor(distance * Config.Timer.timePerDistanceUnit)Calls
| Setting | Default | Description |
|---|---|---|
Config.Calls.minIntervalSeconds | 15 | Minimum delay between dispatches |
Config.Calls.maxIntervalSeconds | 45 | Maximum delay between dispatches |
Config.Calls.responseTimeSeconds | 30 | Accept or decline window |
Config.Calls.maxMissedCalls | 3 | Misses or declines before auto clock-out |
Levels
File: shared/config/levels.lua
Each level entry defines:
titlerequiredJobspayMultipliertipChancetipRange
Default progression is 5 levels from Volunteer through Chief Officer.
Locations
File: shared/config/locations.lua
Shelter delivery point
Config.ShelterDeliveryPoint = vector3(-1139.70, -319.82, 37.67)This is used for all live animal transport jobs that require shelter delivery.
Office fields
Each Config.Locations entry contains:
namecoordsheadingvehicleSpawnmenuCamera
The default package ships with 1 office.
Events
File: shared/config/events.lua
Each event defines a dispatchable animal report.
| Field | Description |
|---|---|
type | One of the JobType values |
label | Locale key for the job label |
animalModel | GTA animal model name |
coords | Event spawn position and heading |
reportingNpc | Whether to spawn a reporting civilian NPC |
requiresDelivery | Whether the animal must be delivered to the shelter |
animalWaypoints | (Wildlife removal only) Array of patrol waypoints |
The default package contains 55 events. Dispatch groups events by shared scene coordinates to reduce repeated locations back-to-back.
Event count by type
| Job Type | Events |
|---|---|
| Aggressive Animal | 13 |
| Stray Capture | 15 |
| Wildlife Removal | 5 |
| Deceased Pickup | 22 |
Debug override
Set Config.DebugForceJobType to a JobType constant to restrict dispatch to a single job type for testing. Set it to nil for normal operation.
Config.DebugForceJobType = nilVehicle
File: shared/config/vehicles.lua
| Setting | Default | Description |
|---|---|---|
Config.Vehicle.model | 'kennel' | Animal control truck model |
Config.Vehicle.healthCheckInterval | 1000 | Health monitor interval in ms |
Config.Vehicle.destroyedThreshold | 150 | Engine-health destruction threshold |
Config.Vehicle.damageChargeRate | 0.50 | Damage deduction per body-health point under threshold |
Config.Vehicle.damageChargeThreshold | 950 | Body-health threshold for clock-out damage charges |
Config.Vehicle.livery | -1 | Optional livery index for models that ship multiple liveries (-1 = model default) |
Config.Vehicle.extras | nil | Optional { [extraId] = enabled } map to force-toggle vehicle extras (decals, replacement-model parts). nil applies none |
Animals
File: shared/config/animals.lua
Animal models
Config.Animals maps model names to display name and health values. The default package includes 14 animal models (dogs, cats, coyote, mountain lion, panther, deer).
Tranquilizer
| Setting | Default | Description |
|---|---|---|
Config.Tranquilizer.weaponHash | 'WEAPON_G2' | Weapon hash for the dart gun |
Config.Tranquilizer.weaponItem | 'weapon_g2' | Inventory item name for the tranq gun |
Config.Tranquilizer.ammoItem | 'ammo_pistol' | Inventory item name for ammo — change this to match your inventory (QBCore: 'pistol_ammo', ox_inventory on ESX/QBX: 'ammo-9') |
Config.Tranquilizer.ammoPerCall | 5 | Darts in each ammo pack (one free pack is handed out at clock-in) |
Config.Tranquilizer.sedationDuration | 30000 | Sedation duration in ms |
Config.Tranquilizer.ammoResupplyCost | 50 | Cost per additional ammo pack (deducted from shift pay) |
Config.Tranquilizer.maxAmmoResupplies | 5 | Max additional packs per shift (first pack at clock-in is free) |
Stealth detection
| Setting | Default | Description |
|---|---|---|
Config.Stealth.useNativeStealth | true | Use native crouch detection |
Config.Stealth.fallbackSpookChance | 0.35 | Spook chance when not using native stealth |
Config.Stealth.fallbackSafeChance | 0.70 | Safe chance when using fallback mode |
Animal behavior
Per-job behavior settings live in Config.AnimalBehavior. Each job type defines:
- task type
- detection and escape radii
- spook and flee distances
- wander behavior
- NPC reaction radii
Animal loading
| Setting | Default | Description |
|---|---|---|
Config.AnimalLoading.loadDuration | 5000 | Loading progress bar duration in ms |
Config.AnimalLoading.unloadDuration | 4000 | Unloading progress bar duration in ms |
Config.AnimalLoading.loadRange | 3.0 | Max distance from animal to begin loading |
Config.AnimalLoading.shelterRange | 15.0 | Max distance from shelter to unload |
Config.AnimalLoading.vehicleAttachOffset | vec3(0.0, -1.5, 0.5) | Offset inside the vehicle cargo area where the loaded animal attaches |
Config.AnimalLoading.vehicleAttachRotation | vec3(0.0, 0.0, 0.0) | Rotation applied to the loaded animal at the attach offset |
Props
File: shared/config/props.lua
This file controls:
- bait prop model and placement range
- bait scent particle effect
- bait player attachment offsets
- deceased bag model and durations
- deceased bag carry animation
- capture, bait placement, load, and unload progress bar animations
Primary props:
bait(dog bowl)deceasedBag(bin bag)
Visuals
File: shared/config/visuals.lua
NPC and blips
Config.NpcModelConfig.NpcScenarioConfig.BlipConfig.EventBlipConfig.DeliveryBlip
Reporting NPC models
Config.ReportingNpcModels contains 16 possible civilian models for the person who reported the animal incident.
Reporting NPC behavior
Config.ReportingNPC controls:
- stand offset from animal
- animation cycle (beckoning, frightened, hand gestures)
- thank-you animation
- far-away scenario
- animation distance threshold
Safety zones
Config.SafetyZone controls:
- whether safety zones run (
enabled) - the slow-traffic rings around active job scenes (
speedZones— each entry sets a radius and a speed)
Waypoints
Config.Waypoints controls marker height, scaling, and render timing.
Outfits
File: shared/config/outfits.lua
Optional on-duty uniform applied through o-link.clothing when the player clocks in and reverted on clock-out / death / disconnect.
| Setting | Default | Description |
|---|---|---|
Config.uniformsEnabled | false | Master switch — leave false to disable the uniform feature entirely |
Config.AnimalControlOutfitMale | { components, props } | Component/prop drawable + texture IDs applied to male peds |
Config.AnimalControlOutfitFemale | { components, props } | Component/prop drawable + texture IDs applied to female peds |
The default values are placeholders (drawable = 0, texture = 0) — replace them with valid IDs from your clothing pack before enabling. The previous appearance is snapshotted on apply and restored on revert via o-link.clothing.SetAppearance / o-link.clothing.Revert.
Tutorials
File: shared/config/tutorials.lua
Config.Tutorials contains 16 first-time guidance prompts. Each entry defines:
icontitlebodypositionduration
Server Rate Limits
File: server/main.lua
Current rate-limited actions include:
clockInclockOutacceptCallrejectCallcompleteJobcrewInviterespondToInvitepropSyncrequestSedationrequestCalmrequestCapturerequestLoadrequestCollectrequestLoadDeceasedrequestBaitPlacerequestAmmoanimalWokeUpbaitReturnedupdateAnimalupdateReportingNpcupdateVehiclevehicleDestroyedanimalEscapedanimalKilledapplyUniformremoveUniform