# Configuration > Configuration reference for ML Airdrop Category: AIRDROP · Source: https://miciomods.it/docs/ml-airdrop-configuration · Last updated: 2026-07-28 ## Overview - `shared/config.lua`: general behavior, auto events, in-world tag, blips, capture, limits, vehicles, history, notifications and skills. - `server/config_server.lua`: Discord webhooks, the log provider and the export allowlist. Planes, crates, loot tables, zones and flares start from the files in `shared/data`. The in-game admin panel edits them live and saves to the database, which then overrides those files. ## General **shared/config.lua** ```lua Config.Debug = false Config.locale = 'en' Config.UITheme = 'default' Config.InteractionMethod = 'textui' ``` - `Debug`: prints extra diagnostics to the server console. Keep it `false` in production. - `locale`: language code for translations, e.g. `en`. See the `locales/` folder for the codes that ship. - `UITheme`: visual theme for the loot panel, admin panel and in-world tag. One of `default`, `wasteland`, `cyberpunk`, `noir`, `fantasy`, `survival`. - `InteractionMethod`: how a landed crate is opened. `textui` shows an `[E]` prompt, `target` uses ox_target. ## Admin **shared/config.lua** ```lua Config.Admin = { AcePermission = nil, Command = 'airdrop', } ``` - `AcePermission`: dedicated ACE permission for the admin panel, e.g. `ml_airdrop.admin`. Leave `nil` to fall back to the ml_bridge permission check. - `Command`: chat command that opens the admin panel. ## Auto Events **shared/config.lua** ```lua Config.AutoEvents = { enabled = true, interval = { min = 30, max = 45 }, minPlayers = 2, announce = true, countdown = 30, } ``` - `enabled`: spawn timed global airdrops on their own. - `interval`: minutes between auto-drops, randomised between `min` and `max`. - `minPlayers`: skip the auto-drop when fewer players than this are online. - `announce`: broadcast an incoming-drop notification to everyone. - `countdown`: seconds of warning before the plane appears. ## Defaults **shared/config.lua** ```lua Config.Defaults = { plane = 'cargobob_titan', crate = 'random', zone = 'random', } ``` - `plane`: plane used for auto-events and any drop with no plane chosen. `random` picks a random enabled plane each time. - `crate` - `random` picks a weighted crate each drop, or set a specific crate id. - `zone` - `random` picks a weighted enabled zone each drop, or set a specific zone id. ## In-World Tag **shared/config.lua** ```lua Config.DUI = { enabled = true, maxActive = 6, distance = 30.0, sealDistance = nil, offsetZ = 0.7, scale = 1.0, } ``` - `enabled`: show the floating tag above each crate and vehicle drop. - `maxActive`: how many tags render at once. The nearest drops win when more are active. - `distance`: render distance in meters, fading near the edge. - `sealDistance`: optional larger render distance while a crate is still sealed, so the unlock countdown is readable from farther. `nil` uses `distance`. - `offsetZ`: height of the tag above the crate origin. - `scale`: tag size multiplier. ## Blips **shared/config.lua** ```lua Config.Blips = { plane = { enabled = true, sprite = 424, color = 5, scale = 0.9, label = 'Airdrop Plane' }, crate = { enabled = true, sprite = 478, color = 5, scale = 0.85, label = 'Airdrop' }, zoneRadius = { enabled = true, radius = 120.0, alpha = 70, color = 5 }, } ``` - `plane`: blip for the inbound aircraft while it flies in. - `crate`: blip on the landed crate or vehicle. - `zoneRadius`: search-area circle shown while a drop is inbound. `radius` in meters, `alpha` is its opacity. ## Loot Capture **shared/config.lua** ```lua Config.Capture = { holdTime = 1500, } ``` - `holdTime`: milliseconds a player must hold to capture one loot slot. ## Limits **shared/config.lua** ```lua Config.Limits = { maxConcurrentDrops = 3, locateAttempts = 25, minDistanceFromPlayers = 8.0, } ``` - `maxConcurrentDrops`: server-wide cap on active airdrops at once. - `locateAttempts`: candidate points tried before giving up on a zone. - `minDistanceFromPlayers`: a drop point must be at least this far from any player. ## Vehicle Claim **shared/config.lua** ```lua Config.VehicleClaim = { register = true, garage = 'pillboxgarage', claimFuel = 100, } ``` - `register` - `true` registers the claimed vehicle as an owned vehicle. `false` only hands over keys to the spawned vehicle. - `garage`: home garage stored on the owned vehicle. Customise the registration in `open/server.lua`, `OnVehicleClaimed`. - `claimFuel`: fuel level restored once claimed. The vehicle stays at 0 until then. ## History **shared/config.lua** ```lua Config.HistoryRetentionDays = 30 ``` - `HistoryRetentionDays`: days to keep drop history before it is pruned. `0` keeps it forever. ## Notifications **shared/config.lua** ```lua Config.Notifications = { onInbound = true, onLanded = true, } ``` - `onInbound`: toast when an airdrop is inbound. - `onLanded`: toast when an airdrop has landed. ## Skills **shared/config.lua** ```lua Config.Skills = { enabled = false, resource = 'ml_skills', category = 'personal', xp = 25, vehicleXp = 50, } ``` - `enabled`: award XP through ml_skills when a drop is looted or claimed. - `resource`: skills resource name, in case you run a fork. - `category`: default category credited when a crate sets no rewards of its own. It must exist in your ml_skills setup. - `xp`: default container XP budget when a crate sets no rewards. The budget is split across the loot slots, so every player earns for the slots they take. - `vehicleXp`: default XP budget for the player who claims a vehicle drop. A crate can override this with its own rewards, in one or more categories at once, set per crate in the admin panel. ## Minigames **shared/config.lua** ```lua Config.AirdropMiniGames = Config.AirdropMiniGames or {} ``` The minigame registry is filled by the adapter files in `open/minigames`. Add your own there and it becomes selectable as a crate open method. ## Server Config **server/config_server.lua** ```lua Config.DiscordWebhook = { Default = 'INSERT_WEBHOOK_LINK_HERE', Spawn = 'INSERT_WEBHOOK_LINK_HERE', Loot = 'INSERT_WEBHOOK_LINK_HERE', VehicleClaimed = 'INSERT_WEBHOOK_LINK_HERE', Despawn = 'INSERT_WEBHOOK_LINK_HERE', AdminTrigger = 'INSERT_WEBHOOK_LINK_HERE', AdminSave = 'INSERT_WEBHOOK_LINK_HERE', AdminDespawn = 'INSERT_WEBHOOK_LINK_HERE', AdminTeleport = 'INSERT_WEBHOOK_LINK_HERE', } Config.LogProvider = 'discord' Config.AdminExportResources = {} ``` - `DiscordWebhook`: one webhook per action, so each kind of event can go to its own channel. - `LogProvider`: where logs are sent through ml_bridge. One of `discord`, `fivemanage`, `ox_lib`, `both`, `all`. - `AdminExportResources`: resource names allowed to call the `TriggerAirdrop` export. Empty means only ml_airdrop itself can call it. > **TIP:** Disable A Log > > Leave an action on `INSERT_WEBHOOK_LINK_HERE` or empty to disable it. Empty actions fall back to `Default`.