Adding Locations
Spawn Points & Maps
Map Configuration Structure
Each map follows this structure:
mapName = {
menu = {
menuId = 'map_selection_external', -- or 'map_selection_interior'
title = 'Display Name',
icon = 'fa-solid fa-icon-name',
description = 'Brief tactical description',
image = 'https://your-image-url.jpg',
},
recommendedSet = {
SoldierRec = 16, -- Recommended enemy count
SoldierMax = 30, -- Maximum enemy count
hostageRec = 1, -- Recommended hostage count
hostageMax = 10, -- Maximum hostage count
},
vehicleSpawns = {
{coords = vector4(x, y, z, heading), vehicle = 'vehicle_name'},
},
polyZone = {
-- Defines the playable area boundary
vector3(x, y, z),
-- Add more points to define the polygon
},
playerSpawns = {
vector4(x, y, z, heading), -- Player spawn points
},
guardCoords = {
vector4(x, y, z, heading), -- Enemy spawn locations
}
}Adding New Maps
Choose Category: Decide if it's external or interior
Set Menu Info: Configure the menu display options
Define Boundaries: Create a polygon zone for the playable area
Add Spawn Points: Place player and enemy spawn coordinates
Test Balance: Adjust recommended enemy/hostage counts
Coordinate Tools
Use
/coordscommand (if available) to get current positionFormat:
vector4(x, y, z, heading)for spawnsFormat:
vector3(x, y, z)for polygon zones
Interior Maps
Interior maps may include additional mapData configuration:
mapData = {
get = function()
return exports['bob74_ipl']:GetInteriorObject()
end,
setup = function(interior)
-- Configure interior settings
interior.Style.Set(interior.Style.modern)
end
}IPL Integration
Many interiors use the bob74_ipl resource for loading. Ensure it's installed and started before your training resource.
Small Interiors
Small interiors are simpler configurations for quick training scenarios:
smallInteriorName = {
spawnCoords = vector3(x, y, z), -- Single spawn point inside
guardCoords = {
vector4(x, y, z, heading), -- Enemy positions
},
mapData = {
-- Optional IPL configuration
}
}Last updated