mirror of
https://github.com/ciribob/DCS-CTLD.git
synced 2025-08-15 06:17:22 +00:00
Changed extract to keep group details
Extracted troops when dropped again keep original group name, group ID, unit names and unit id Updated test mission to add a trigger for testing this
This commit is contained in:
184
CTLD.lua
184
CTLD.lua
@@ -293,9 +293,9 @@ function ctld.spawnGroupAtTrigger(_groupSide, _number, _triggerName, _searchRadi
|
|||||||
local _alt = land.getHeight(_pos2)
|
local _alt = land.getHeight(_pos2)
|
||||||
local _pos3 = { x = _pos2.x, y = _alt, z = _pos2.y }
|
local _pos3 = { x = _pos2.x, y = _alt, z = _pos2.y }
|
||||||
|
|
||||||
local _types = ctld.generateTroopTypes(_groupSide,_number)
|
local _groupDetails = ctld.generateTroopTypes(_groupSide,_number,_country)
|
||||||
|
|
||||||
local _droppedTroops = ctld.spawnDroppedGroup(_country,_groupSide,_pos3, _types, false,_searchRadius);
|
local _droppedTroops = ctld.spawnDroppedGroup(_pos3, _groupDetails, false,_searchRadius);
|
||||||
|
|
||||||
if _groupSide == 1 then
|
if _groupSide == 1 then
|
||||||
|
|
||||||
@@ -464,14 +464,14 @@ function ctld.troopsOnboard(_heli,_troops)
|
|||||||
|
|
||||||
if _troops then
|
if _troops then
|
||||||
|
|
||||||
if _onboard.troops ~= nil and #_onboard.troops > 0 then
|
if _onboard.troops ~= nil and _onboard.troops.units ~= nil and #_onboard.troops.units > 0 then
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|
||||||
if _onboard.vehicles ~= nil and #_onboard.vehicles > 0 then
|
if _onboard.vehicles ~= nil and _onboard.vehicles.units ~= nil and #_onboard.vehicles.units > 0 then
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
return false
|
return false
|
||||||
@@ -503,9 +503,9 @@ function ctld.deployTroops(_heli,_troops)
|
|||||||
-- deloy troops
|
-- deloy troops
|
||||||
if _troops then
|
if _troops then
|
||||||
|
|
||||||
if _onboard.troops ~= nil and #_onboard.troops > 0 then
|
if _onboard.troops ~= nil and #_onboard.troops.units > 0 then
|
||||||
|
|
||||||
local _droppedTroops = ctld.spawnDroppedGroup(_heli:getCountry(),_heli:getCoalition(),_heli:getPoint(), _onboard.troops, false)
|
local _droppedTroops = ctld.spawnDroppedGroup(_heli:getPoint(), _onboard.troops, false)
|
||||||
|
|
||||||
if _heli:getCoalition() == 1 then
|
if _heli:getCoalition() == 1 then
|
||||||
|
|
||||||
@@ -515,14 +515,14 @@ function ctld.deployTroops(_heli,_troops)
|
|||||||
table.insert(ctld.droppedTroopsBLUE, _droppedTroops:getName())
|
table.insert(ctld.droppedTroopsBLUE, _droppedTroops:getName())
|
||||||
end
|
end
|
||||||
|
|
||||||
ctld.inTransitTroops[_heli:getName()].troops = {}
|
ctld.inTransitTroops[_heli:getName()].troops = nil
|
||||||
trigger.action.outTextForCoalition(_heli:getCoalition(), ctld.getPlayerNameOrType(_heli) .. " dropped troops from " .. _heli:getTypeName() .. " into combat", 10)
|
trigger.action.outTextForCoalition(_heli:getCoalition(), ctld.getPlayerNameOrType(_heli) .. " dropped troops from " .. _heli:getTypeName() .. " into combat", 10)
|
||||||
|
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if _onboard.vehicles ~= nil and #_onboard.vehicles > 0 then
|
if _onboard.vehicles ~= nil and #_onboard.vehicles.units > 0 then
|
||||||
|
|
||||||
local _droppedVehicles = ctld.spawnDroppedGroup(_heli:getCountry(),_heli:getCoalition(),_heli:getPoint(), _onboard.vehicles, true)
|
local _droppedVehicles = ctld.spawnDroppedGroup(_heli:getPoint(), _onboard.vehicles, true)
|
||||||
|
|
||||||
if _heli:getCoalition() == 1 then
|
if _heli:getCoalition() == 1 then
|
||||||
|
|
||||||
@@ -532,7 +532,7 @@ function ctld.deployTroops(_heli,_troops)
|
|||||||
table.insert(ctld.droppedVehiclesBLUE, _droppedVehicles:getName())
|
table.insert(ctld.droppedVehiclesBLUE, _droppedVehicles:getName())
|
||||||
end
|
end
|
||||||
|
|
||||||
ctld.inTransitTroops[_heli:getName()].vehicles = {}
|
ctld.inTransitTroops[_heli:getName()].vehicles = nil
|
||||||
|
|
||||||
trigger.action.outTextForCoalition(_heli:getCoalition(),ctld.getPlayerNameOrType(_heli) .. " dropped vehicles from " .. _heli:getTypeName() .. " into combat", 10)
|
trigger.action.outTextForCoalition(_heli:getCoalition(),ctld.getPlayerNameOrType(_heli) .. " dropped vehicles from " .. _heli:getTypeName() .. " into combat", 10)
|
||||||
|
|
||||||
@@ -543,7 +543,7 @@ end
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
function ctld.generateTroopTypes(_side,_count)
|
function ctld.generateTroopTypes(_side,_count, _country)
|
||||||
|
|
||||||
local _troops = {}
|
local _troops = {}
|
||||||
|
|
||||||
@@ -569,10 +569,16 @@ function ctld.generateTroopTypes(_side,_count)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
_troops[_i] = _unitType
|
local _unitId = mist.getNextUnitId()
|
||||||
|
|
||||||
|
_troops[_i] = {type = _unitType, unitId = _unitId, name = string.format("Dropped %s #%i",_unitType,_unitId)}
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return _troops
|
local _groupId = mist.getNextGroupId()
|
||||||
|
local _details = {units = _troops, groupId = _groupId, groupName = string.format("Dropped Group %i",_groupId), side=_side, country=_country}
|
||||||
|
|
||||||
|
return _details
|
||||||
end
|
end
|
||||||
|
|
||||||
-- load troops onto vehicle
|
-- load troops onto vehicle
|
||||||
@@ -594,15 +600,13 @@ function ctld.loadTroops(_heli,_troops, _number)
|
|||||||
|
|
||||||
if _troops then
|
if _troops then
|
||||||
|
|
||||||
_onboard.troops = ctld.generateTroopTypes(_heli:getCoalition(),_number)
|
_onboard.troops = ctld.generateTroopTypes(_heli:getCoalition(),_number,_heli:getCountry())
|
||||||
|
|
||||||
trigger.action.outTextForCoalition(_heli:getCoalition(), ctld.getPlayerNameOrType(_heli) .. " loaded ".._number.." troops into " .. _heli:getTypeName(), 10)
|
trigger.action.outTextForCoalition(_heli:getCoalition(), ctld.getPlayerNameOrType(_heli) .. " loaded ".._number.." troops into " .. _heli:getTypeName(), 10)
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
for _i, _type in ipairs(ctld.vehiclesForTransport) do
|
_onboard.vehicles = ctld.generateVehiclesForTransport(_heli:getCoalition(), _heli:getCountry())
|
||||||
_onboard.vehicles[_i] = _type
|
|
||||||
end
|
|
||||||
|
|
||||||
local _count = #ctld.vehiclesForTransport
|
local _count = #ctld.vehiclesForTransport
|
||||||
|
|
||||||
@@ -614,6 +618,26 @@ function ctld.loadTroops(_heli,_troops, _number)
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function ctld.generateVehiclesForTransport(_side,_country)
|
||||||
|
|
||||||
|
local _vehicles = {}
|
||||||
|
|
||||||
|
for _i, _type in ipairs(ctld.vehiclesForTransport) do
|
||||||
|
|
||||||
|
local _unitId= mist.getNextUnitId()
|
||||||
|
|
||||||
|
_vehicles[_i] = {type = _type, unitId = _unitId, name = string.format("Dropped %s #%i",_type,_unitId)}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local _groupId = mist.getNextGroupId()
|
||||||
|
local _details = {units = _vehicles, groupId = _groupId, groupName = string.format("Dropped Group %i",_groupId), side=_side, country=_country }
|
||||||
|
|
||||||
|
return _details
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
function ctld.loadUnloadTroops(_args)
|
function ctld.loadUnloadTroops(_args)
|
||||||
|
|
||||||
local _heli = ctld.getTransportUnit(_args[1])
|
local _heli = ctld.getTransportUnit(_args[1])
|
||||||
@@ -625,15 +649,49 @@ function ctld.loadUnloadTroops(_args)
|
|||||||
|
|
||||||
local _inZone = ctld.inPickupZone(_heli)
|
local _inZone = ctld.inPickupZone(_heli)
|
||||||
|
|
||||||
|
-- first check for extractable troops regardless of if we're in a zone or not
|
||||||
|
|
||||||
|
-- if not ctld.troopsOnboard(_heli,_troops) then
|
||||||
|
--
|
||||||
|
-- local _extract
|
||||||
|
--
|
||||||
|
-- if _troops then
|
||||||
|
-- if _heli:getCoalition() == 1 then
|
||||||
|
--
|
||||||
|
-- _extract = ctld.findNearestGroup(_heli, ctld.droppedTroopsRED)
|
||||||
|
-- else
|
||||||
|
--
|
||||||
|
-- _extract = ctld.findNearestGroup(_heli, ctld.droppedTroopsBLUE)
|
||||||
|
-- end
|
||||||
|
-- else
|
||||||
|
--
|
||||||
|
-- if _heli:getCoalition() == 1 then
|
||||||
|
--
|
||||||
|
-- _extract = ctld.findNearestGroup(_heli, ctld.droppedVehiclesRED)
|
||||||
|
-- else
|
||||||
|
--
|
||||||
|
-- _extract = ctld.findNearestGroup(_heli, ctld.droppedVehiclesBLUE)
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- if _extract ~= nil then
|
||||||
|
-- -- search for nearest troops to pickup
|
||||||
|
-- ctld.extractTroops(_heli,_troops)
|
||||||
|
--
|
||||||
|
-- return -- stop
|
||||||
|
-- end
|
||||||
|
-- end
|
||||||
|
|
||||||
if _inZone == true and ctld.troopsOnboard(_heli,_troops) then
|
if _inZone == true and ctld.troopsOnboard(_heli,_troops) then
|
||||||
|
|
||||||
if _troops then
|
if _troops then
|
||||||
ctld.displayMessageToGroup(_heli, "Dropped troops back to base", 20)
|
ctld.displayMessageToGroup(_heli, "Dropped troops back to base", 20)
|
||||||
ctld.inTransitTroops[_heli:getName()].troops = {}
|
ctld.inTransitTroops[_heli:getName()].troops = nil
|
||||||
|
|
||||||
else
|
else
|
||||||
ctld.displayMessageToGroup(_heli, "Dropped vehicles back to base", 20)
|
ctld.displayMessageToGroup(_heli, "Dropped vehicles back to base", 20)
|
||||||
ctld.inTransitTroops[_heli:getName()].vehicles = {}
|
ctld.inTransitTroops[_heli:getName()].vehicles = nil
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -644,12 +702,11 @@ function ctld.loadUnloadTroops(_args)
|
|||||||
elseif _inZone == true and not ctld.troopsOnboard(_heli,_troops) then
|
elseif _inZone == true and not ctld.troopsOnboard(_heli,_troops) then
|
||||||
|
|
||||||
ctld.loadTroops(_heli,_troops)
|
ctld.loadTroops(_heli,_troops)
|
||||||
|
|
||||||
else
|
else
|
||||||
-- search for nearest troops to pickup
|
-- search for nearest troops to pickup
|
||||||
ctld.extractTroops(_heli,_troops)
|
ctld.extractTroops(_heli,_troops)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function ctld.extractTroops(_heli,_troops)
|
function ctld.extractTroops(_heli,_troops)
|
||||||
@@ -658,7 +715,7 @@ function ctld.extractTroops(_heli,_troops)
|
|||||||
local _onboard = ctld.inTransitTroops[_heli:getName()]
|
local _onboard = ctld.inTransitTroops[_heli:getName()]
|
||||||
|
|
||||||
if _onboard == nil then
|
if _onboard == nil then
|
||||||
_onboard = { troops = {}, vehicles = {} }
|
_onboard = { troops = nil, vehicles = nil }
|
||||||
end
|
end
|
||||||
|
|
||||||
if _troops then
|
if _troops then
|
||||||
@@ -673,7 +730,7 @@ function ctld.extractTroops(_heli,_troops)
|
|||||||
|
|
||||||
if _extractTroops ~= nil then
|
if _extractTroops ~= nil then
|
||||||
|
|
||||||
_onboard.troops = _extractTroops.types
|
_onboard.troops = _extractTroops.details
|
||||||
|
|
||||||
trigger.action.outTextForCoalition(_heli:getCoalition(), ctld.getPlayerNameOrType(_heli) .. " extracted troops in " .. _heli:getTypeName() .. " from combat", 10)
|
trigger.action.outTextForCoalition(_heli:getCoalition(), ctld.getPlayerNameOrType(_heli) .. " extracted troops in " .. _heli:getTypeName() .. " from combat", 10)
|
||||||
|
|
||||||
@@ -687,7 +744,7 @@ function ctld.extractTroops(_heli,_troops)
|
|||||||
_extractTroops.group:destroy()
|
_extractTroops.group:destroy()
|
||||||
|
|
||||||
else
|
else
|
||||||
_onboard.troops = {}
|
_onboard.troops = nil
|
||||||
ctld.displayMessageToGroup(_heli, "No extractable troops nearby and not in a pickup zone", 20)
|
ctld.displayMessageToGroup(_heli, "No extractable troops nearby and not in a pickup zone", 20)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -707,7 +764,7 @@ function ctld.extractTroops(_heli,_troops)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if _extractVehicles ~= nil then
|
if _extractVehicles ~= nil then
|
||||||
_onboard.vehicles = _extractVehicles.types
|
_onboard.vehicles = _extractVehicles.details
|
||||||
|
|
||||||
if _heli:getCoalition() == 1 then
|
if _heli:getCoalition() == 1 then
|
||||||
|
|
||||||
@@ -724,7 +781,7 @@ function ctld.extractTroops(_heli,_troops)
|
|||||||
|
|
||||||
|
|
||||||
else
|
else
|
||||||
_onboard.vehicles = {}
|
_onboard.vehicles = nil
|
||||||
ctld.displayMessageToGroup(_heli, "No extractable vehicles nearby and not in a pickup zone", 20)
|
ctld.displayMessageToGroup(_heli, "No extractable vehicles nearby and not in a pickup zone", 20)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -738,10 +795,6 @@ end
|
|||||||
function ctld.checkTroopStatus(_args)
|
function ctld.checkTroopStatus(_args)
|
||||||
|
|
||||||
--list onboard troops, if c130
|
--list onboard troops, if c130
|
||||||
|
|
||||||
-- trigger.action.outText("Troop Status".._args[1],10)
|
|
||||||
|
|
||||||
|
|
||||||
local _heli = ctld.getTransportUnit(_args[1])
|
local _heli = ctld.getTransportUnit(_args[1])
|
||||||
|
|
||||||
if _heli == nil then
|
if _heli == nil then
|
||||||
@@ -753,17 +806,17 @@ function ctld.checkTroopStatus(_args)
|
|||||||
if _onboard == nil then
|
if _onboard == nil then
|
||||||
ctld.displayMessageToGroup(_heli, "No troops onboard", 10)
|
ctld.displayMessageToGroup(_heli, "No troops onboard", 10)
|
||||||
else
|
else
|
||||||
local _troops = #_onboard.troops
|
local _troops = _onboard.troops
|
||||||
local _vehicles = #_onboard.vehicles
|
local _vehicles = _onboard.vehicles
|
||||||
|
|
||||||
local _txt = ""
|
local _txt = ""
|
||||||
|
|
||||||
if _troops > 0 then
|
if _troops ~= nil and _troops.units ~= nil and #_troops.units > 0 then
|
||||||
_txt = _txt .. " " .. _troops .. " troops onboard\n"
|
_txt = _txt .. " " .. #_troops.units .. " troops onboard\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
if _vehicles > 0 then
|
if _vehicles ~= nil and _vehicles.units ~= nil and #_vehicles.units > 0 then
|
||||||
_txt = _txt .. " " .. _vehicles .. " vehicles onboard\n"
|
_txt = _txt .. " " .. #_vehicles.units .. " vehicles onboard\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
if _txt ~= "" then
|
if _txt ~= "" then
|
||||||
@@ -1122,12 +1175,19 @@ function ctld.spawnCrateGroup(_heli, _positions, _types)
|
|||||||
|
|
||||||
if #_positions == 1 then
|
if #_positions == 1 then
|
||||||
|
|
||||||
_group.units[1] = ctld.createUnit(_positions[1].x + 5, _positions[1].z + 5, 120, _types[1])
|
local _unitId = mist.getNextUnitId()
|
||||||
|
local _details = {type= _types[1], unitId = _unitId, name = string.format("Unpacked %s #%i",_types[1],_unitId)}
|
||||||
|
|
||||||
|
_group.units[1] = ctld.createUnit(_positions[1].x + 5, _positions[1].z + 5, 120, _details)
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
for _i, _pos in ipairs(_positions) do
|
for _i, _pos in ipairs(_positions) do
|
||||||
_group.units[_i] = ctld.createUnit(_pos.x + 5, _pos.z + 5, 120, _types[_i])
|
|
||||||
|
local _unitId = mist.getNextUnitId()
|
||||||
|
local _details = {type= _types[_i], unitId = _unitId, name = string.format("Unpacked %s #%i",_types[_i],_unitId)}
|
||||||
|
|
||||||
|
_group.units[_i] = ctld.createUnit(_pos.x + 5, _pos.z + 5, 120, _details)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1146,15 +1206,13 @@ end
|
|||||||
|
|
||||||
|
|
||||||
-- spawn normal group
|
-- spawn normal group
|
||||||
function ctld.spawnDroppedGroup(_country,_side,_point, _types, _spawnBehind,_maxSearch)
|
function ctld.spawnDroppedGroup(_point, _details, _spawnBehind,_maxSearch)
|
||||||
|
|
||||||
local _id = mist.getNextGroupId()
|
local _groupName = _details.groupName
|
||||||
|
|
||||||
local _groupName = "Dropped Group #" .. _id
|
|
||||||
|
|
||||||
local _group = {
|
local _group = {
|
||||||
["visible"] = false,
|
["visible"] = false,
|
||||||
["groupId"] = _id,
|
["groupId"] = _details.groupId,
|
||||||
["hidden"] = false,
|
["hidden"] = false,
|
||||||
["units"] = {},
|
["units"] = {},
|
||||||
-- ["y"] = _positions[1].z,
|
-- ["y"] = _positions[1].z,
|
||||||
@@ -1170,13 +1228,13 @@ function ctld.spawnDroppedGroup(_country,_side,_point, _types, _spawnBehind,_max
|
|||||||
|
|
||||||
local _pos = _point
|
local _pos = _point
|
||||||
|
|
||||||
for _i, _type in ipairs(_types) do
|
for _i, _detail in ipairs(_details.units) do
|
||||||
|
|
||||||
local _angle = math.pi * 2 * (_i - 1) / #_types
|
local _angle = math.pi * 2 * (_i - 1) / #_details.units
|
||||||
local _xOffset = math.cos(_angle) * 30
|
local _xOffset = math.cos(_angle) * 30
|
||||||
local _yOffset = math.sin(_angle) * 30
|
local _yOffset = math.sin(_angle) * 30
|
||||||
|
|
||||||
_group.units[_i] = ctld.createUnit(_pos.x + _xOffset, _pos.z + _yOffset, _angle, _type)
|
_group.units[_i] = ctld.createUnit(_pos.x + _xOffset, _pos.z + _yOffset, _angle, _detail)
|
||||||
end
|
end
|
||||||
|
|
||||||
else
|
else
|
||||||
@@ -1189,12 +1247,12 @@ function ctld.spawnDroppedGroup(_country,_side,_point, _types, _spawnBehind,_max
|
|||||||
local _yOffset = math.sin(_angle) * 30
|
local _yOffset = math.sin(_angle) * 30
|
||||||
|
|
||||||
|
|
||||||
for _i, _type in ipairs(_types) do
|
for _i, _detail in ipairs(_details.units) do
|
||||||
_group.units[_i] = ctld.createUnit(_pos.x - (_xOffset + 10 * _i), _pos.z - (_yOffset + 10 * _i), _angle, _type)
|
_group.units[_i] = ctld.createUnit(_pos.x - (_xOffset + 10 * _i), _pos.z - (_yOffset + 10 * _i), _angle,_detail)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local _spawnedGroup = coalition.addGroup(_country, Group.Category.GROUND, _group)
|
local _spawnedGroup = coalition.addGroup(_details.country, Group.Category.GROUND, _group)
|
||||||
|
|
||||||
|
|
||||||
-- find nearest enemy and head there
|
-- find nearest enemy and head there
|
||||||
@@ -1202,7 +1260,7 @@ function ctld.spawnDroppedGroup(_country,_side,_point, _types, _spawnBehind,_max
|
|||||||
_maxSearch = ctld.maximumSearchDistance
|
_maxSearch = ctld.maximumSearchDistance
|
||||||
end
|
end
|
||||||
|
|
||||||
local _enemyPos = ctld.findNearestEnemy(_side,_point,_maxSearch)
|
local _enemyPos = ctld.findNearestEnemy(_details.side,_point,_maxSearch)
|
||||||
|
|
||||||
ctld.orderGroupToMoveToPoint(_spawnedGroup:getUnit(1), _enemyPos)
|
ctld.orderGroupToMoveToPoint(_spawnedGroup:getUnit(1), _enemyPos)
|
||||||
|
|
||||||
@@ -1270,7 +1328,7 @@ end
|
|||||||
|
|
||||||
function ctld.findNearestGroup(_heli, _groups)
|
function ctld.findNearestGroup(_heli, _groups)
|
||||||
|
|
||||||
local _closestGroupTypes = {}
|
local _closestGroupDetails = {}
|
||||||
local _closestGroup = nil
|
local _closestGroup = nil
|
||||||
|
|
||||||
local _closestGroupDist = ctld.maxExtractDistance
|
local _closestGroupDist = ctld.maxExtractDistance
|
||||||
@@ -1288,7 +1346,7 @@ function ctld.findNearestGroup(_heli, _groups)
|
|||||||
|
|
||||||
local _leader = nil
|
local _leader = nil
|
||||||
|
|
||||||
local _unitTypes = {}
|
local _groupDetails = { groupId = _group:getID(), groupName = _group:getName(), side = _group:getCoalition(), units = {} }
|
||||||
|
|
||||||
-- find alive leader
|
-- find alive leader
|
||||||
for x = 1, #_units do
|
for x = 1, #_units do
|
||||||
@@ -1296,9 +1354,13 @@ function ctld.findNearestGroup(_heli, _groups)
|
|||||||
|
|
||||||
if _leader == nil then
|
if _leader == nil then
|
||||||
_leader = _units[x]
|
_leader = _units[x]
|
||||||
|
-- set country based on leader
|
||||||
|
_groupDetails.country = _leader:getCountry()
|
||||||
end
|
end
|
||||||
|
|
||||||
table.insert(_unitTypes, _units[x]:getTypeName())
|
local _unitDetails = {type = _units[x]:getTypeName(), unitId = _units[x]:getID(), name = _units[x]:getName() }
|
||||||
|
|
||||||
|
table.insert(_groupDetails.units, _unitDetails)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1307,7 +1369,7 @@ function ctld.findNearestGroup(_heli, _groups)
|
|||||||
local _dist = ctld.getDistance(_heliPoint, _leaderPos)
|
local _dist = ctld.getDistance(_heliPoint, _leaderPos)
|
||||||
if _dist < _closestGroupDist then
|
if _dist < _closestGroupDist then
|
||||||
_closestGroupDist = _dist
|
_closestGroupDist = _dist
|
||||||
_closestGroupTypes = _unitTypes
|
_closestGroupDetails = _groupDetails
|
||||||
_closestGroup = _group
|
_closestGroup = _group
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -1318,7 +1380,7 @@ function ctld.findNearestGroup(_heli, _groups)
|
|||||||
|
|
||||||
if _closestGroup ~= nil then
|
if _closestGroup ~= nil then
|
||||||
|
|
||||||
return { group = _closestGroup, types = _closestGroupTypes }
|
return { group = _closestGroup, details = _closestGroupDetails }
|
||||||
else
|
else
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@@ -1326,17 +1388,13 @@ function ctld.findNearestGroup(_heli, _groups)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function ctld.createUnit(_x, _y, _angle, _type)
|
function ctld.createUnit(_x, _y, _angle, _details)
|
||||||
|
|
||||||
local _id = mist.getNextUnitId();
|
|
||||||
|
|
||||||
local _name = string.format("%s #%s", _type, _id)
|
|
||||||
|
|
||||||
local _newUnit = {
|
local _newUnit = {
|
||||||
["y"] = _y,
|
["y"] = _y,
|
||||||
["type"] = _type,
|
["type"] = _details.type,
|
||||||
["name"] = _name,
|
["name"] = _details.name,
|
||||||
["unitId"] = _id,
|
["unitId"] = _details.unitId,
|
||||||
["heading"] = _angle,
|
["heading"] = _angle,
|
||||||
["playerCanDrive"] = true,
|
["playerCanDrive"] = true,
|
||||||
["skill"] = "Excellent",
|
["skill"] = "Excellent",
|
||||||
|
|||||||
Binary file not shown.
BIN
test-mission.miz
BIN
test-mission.miz
Binary file not shown.
Reference in New Issue
Block a user