Logistics Plugin
A comprehensive logistics mission system for DCSServerBot with full DCS in-game integration. Create, manage, and track cargo delivery missions with F10 map markers, in-game chat commands, and automatic delivery detection.
Features
- Task Management: Create and manage logistics delivery tasks via Discord
- In-Game Integration: View and accept tasks via F10 menu or chat commands
- F10 Map Markers: Visual route markers showing pickup, delivery, waypoints with cargo/pilot/deadline info
- Auto-Completion: Automatic task completion when pilot lands at destination
- Logbook Integration: Completed tasks are credited to pilot’s logbook record
- Warehouse Queries: Query airbase/carrier inventory via Discord commands
- Coalition-Specific: All markers and tasks are coalition-restricted
- Discord Status Board: Real-time task status updates posted to a Discord channel
Requirements
- DCSServerBot v3.6+
- missionstats plugin must be enabled (provides
onMissionEventfor landing detection) - logbook plugin (optional) - enables pilot credit for completed deliveries
Installation
- Add
logisticstoopt_pluginsin yourconfig/main.yaml: ```yaml opt_plugins:- logistics ```
-
Restart DCSServerBot - the database tables will be created automatically
- (Optional) Configure the plugin in
config/plugins/logistics.yaml
Configuration
# config/plugins/logistics.yaml
DEFAULT:
enabled: true
status_channel: 123456789012345678 # Discord channel ID for status updates
publish_on_create: true # Post when task is created
publish_on_assign: true # Post when task is assigned to a pilot
publish_on_complete: true # Post when task is completed
publish_on_abandon: true # Post when task is abandoned
publish_on_cancel: true # Post when task is cancelled
marker_timeout: 30 # Seconds before temporary markers disappear
delivery:
proximity_threshold: 3000 # Detection radius in meters
require_landing: true # Require landing event for auto-complete
markers:
enabled: true
show_deadline: true
tasks:
auto_approve: false # Auto-approve Discord-created tasks
timeout_hours: 24 # Task expiration
stale_days: 7 # Auto-cancel pending/approved tasks after N days (0 to disable)
max_per_player: 1 # Max concurrent tasks per player
Discord Commands
Task Management (/logistics)
| Command | Description | Role |
|---|---|---|
/logistics create <server> <cargo> <source> <destination> [coalition] [priority] [deadline] | Create a logistics task | DCS Admin |
/logistics list [server] [status] | List tasks with filters | DCS |
/logistics view <task> | View task details | DCS |
/logistics assign <task> <player> | Assign task to a specific pilot | DCS Admin |
/logistics approve <task> | Approve pending task | DCS Admin |
/logistics deny <task> <reason> | Deny pending task | DCS Admin |
/logistics cancel <task> | Cancel any task | DCS Admin |
Warehouse Commands (/warehouse)
| Command | Description | Role |
|---|---|---|
/warehouse status <server> <airbase> | Query inventory at location | DCS |
/warehouse compare <server> <source> <destination> | Compare two locations | DCS |
Discord Status Board
The plugin can post task status updates to a designated Discord channel, providing real-time visibility into logistics operations.
Setup
- Create a dedicated channel for logistics status updates (e.g.,
#logistics-board) - Copy the channel ID and add it to your configuration:
DEFAULT: status_channel: 123456789012345678
What Gets Published
The status board posts are updated in-place (same Discord message) as task status changes:
| Event | Published When | Default |
|---|---|---|
publish_on_create | Task is created by admin | true |
publish_on_assign | Pilot accepts/is assigned the task | true |
publish_on_complete | Task is successfully completed | true |
publish_on_abandon | Pilot abandons the task | true |
publish_on_cancel | Admin cancels the task | true |
Each post shows the task ID, cargo, route, assigned pilot, and current status with color-coded embeds.
In-Game Chat Commands
| Command | Description |
|---|---|
-tasks | List available logistics tasks for your coalition |
-accept <id> | Accept/claim a logistics task (creates map markers) |
-plot all | Plot all available tasks on F10 map (30s timeout) |
-plot <id> | Plot specific task on F10 map (30s timeout) |
-mytask | Show your current assigned task |
-taskinfo <id> | View details of any visible task |
-deliver | Mark current task as delivered (manual) |
-abandon | Release task back to available pool |
F10 Menu Structure
Logistics/
+-- View Available Tasks (Show popup with available tasks)
+-- My Current Task (Show your assigned task details)
+-- Accept Task/ (Submenu with available tasks)
| +-- #1: Mk-82 -> Akrotiri
| +-- #2!: Fuel -> Illustrious (! = urgent)
| +-- ...
+-- Plot All Tasks (30s) (Show all task markers temporarily)
+-- Plot Task/ (Submenu to plot specific tasks)
| +-- #1: Mk-82 -> Akrotiri
| +-- #2!: Fuel -> Illustrious
| +-- ...
+-- Mark Delivered (Manual completion - when assigned)
+-- Abandon Task (Release task - when assigned)
F10 Map Markers
When a task is accepted (-accept) or plotted (-plot), coalition-specific markers appear on the F10 map:
- Source Marker:
[PICKUP #1] Airbase Name - Destination Marker:
[DELIVERY #1] Airbase Name Cargo: 10x Mk-82 Pilot: Maverick (or UNASSIGNED) Deadline: 14:30Z - Waypoint Markers:
[VIA 1] Waypoint Name - Route Lines: Yellow lines connecting source -> waypoints -> destination
- Info Text Box: Displayed at the midpoint of the first route segment with full task details:
TASK #1 From: Batumi To: Kutaisi Cargo: 10x Mk-82 Pilot: UNASSIGNED Deadline: 14:30Z
Marker Behavior:
-accept <id>: Creates permanent markers until task is completed/cancelled-plot all: Creates temporary markers for all available tasks (auto-remove after 30 seconds)-plot <id>: Creates temporary marker for specific task (auto-remove after 30 seconds)
Markers created via “Plot All Tasks” or “Plot Task” menu options automatically disappear after 30 seconds (configurable via marker_timeout).
Delivery Detection
Tasks are automatically completed when:
- Primary: Player lands at the destination airbase/FARP/carrier (detected via
S_EVENT_LAND) - Secondary: Player’s aircraft is within proximity threshold of destination position
- Fallback: Manual
-delivercommand or F10 menu “Mark Delivered”
Task Workflow
+---------+ +----------+ +----------+ +-----------+
| pending |---->| approved |---->| assigned |---->| completed |
+---------+ +----------+ +----------+ +-----------+
| | |
| | |
v v v
+--------+ +---------+ +-----------+
| denied | |cancelled| | failed |
+--------+ +---------+ +-----------+
- pending: Created by Discord command or player request, awaiting approval
- approved: Approved by admin, visible on map, available for acceptance
- assigned: Claimed by a pilot, shown with pilot name on markers
- in_progress: (Optional) Pilot has picked up cargo
- completed: Delivered successfully, credited to pilot’s logbook
- failed: Task failed (timeout, other issues)
- cancelled: Cancelled by admin
- denied: Request denied by admin
Task Assignment Rules
- One task per pilot: Each pilot can only have one active task at a time. Attempting to accept another task returns an error with your current task ID.
- No task stealing: Once a task is assigned, other pilots cannot claim it. The assigned pilot must either complete or abandon the task first.
- Abandoning tasks: Use
-abandonor the F10 menu to release a task back to the available pool for others to accept. - Admin override: Server admins can reassign tasks via
/logistics assignDiscord command.
Logbook Integration
When a logistics task is completed, the pilot receives credit in the logbook_logistics_completions table:
| Field | Description |
|---|---|
| player_ucid | Pilot’s unique ID |
| task_id | Completed task reference |
| cargo_type | What was delivered |
| source_name | Pickup location |
| destination_name | Delivery location |
| completed_at | Completion timestamp |
This data can be used for:
- Displaying logistics stats in
/logbook stats - Auto-granting qualifications (e.g., “Logistics Specialist” after 10 deliveries)
- Squadron statistics
Database Schema
The plugin creates the following tables:
logistics_tasks- Task definitions with status, positions, assignmentslogistics_tasks_history- Audit trail of task eventslogistics_markers- F10 marker ID tracking for cleanuplogbook_logistics_completions- Pilot delivery records
Migration from /stores
If you were using the /stores commands from the logbook plugin, note that logistics replaces that functionality entirely with a more comprehensive system. The old logbook_stores_requests table is preserved for reference but no longer actively used.
Troubleshooting
Markers not appearing
- Ensure the task has
source_positionanddestination_positionset - Verify player is on the correct coalition
- Check DCS.log for Lua errors
Auto-completion not working
- Ensure missionstats plugin is enabled (provides landing events)
- Check that destination name matches exactly or position is within threshold
- Try manual
-delivercommand as fallback
F10 menu not showing
- Player must be in a valid slot (not spectator)
- Check that player’s group_id is valid
- Verify the mission plugin’s menu system is working