Compare commits

..

5 Commits

Author SHA1 Message Date
Ciaran Fisher 1db8004f3e Merge pull request #39 from ciribob/minimum-distance
Minimum distance
2018-04-16 22:17:50 +01:00
Ciaran Fisher 58731f3d84 Bug Fix 2018-04-16 22:16:27 +01:00
Ciaran Fisher ce2cb5fad0 Merge pull request #38 from ciribob/minimum-distance
Minimum distance
2018-04-15 18:30:07 +01:00
Ciaran Fisher 71b54491fc Release 1.73 2018-04-15 18:28:38 +01:00
Ciaran Fisher 7ca6af38fc Version bump 2018-04-15 18:23:24 +01:00
7 changed files with 17 additions and 167 deletions
+17 -167
View File
@@ -16,15 +16,8 @@
- jmontleon - https://github.com/jmontleon
- emilianomolina - https://github.com/emilianomolina
Version: 1.72 - 18/02/2018
- Bug fix for crate spam
- Improved JTAC Performance - priority & targeting
- Added JTAC report for in view
- Added ability to set maximum group size that can be carried
- Added new sling load crates
- Fixed bug where crates and / or groups would disappear
- Fixed bug where count in zone wouldn't work for mission crates
- Delayed config of F10 menu and other scheduled functions so they can be overwritten by mission if a user wants
Version: 1.73 - 15/04/2018
- Allow minimum distance from friendly logistics to be set
]]
ctld = {} -- DONT REMOVE!
@@ -117,9 +110,6 @@ ctld.AASystemLimitBLUE = 20 -- Blue side limit
--END AA SYSTEM CONFIG --
-- ***************** JTAC CONFIGURATION *****************
ctld.laser_codes = { 1113, 1688, 1322} -- Put here the available laser codes. The first value is the default for RED and the second for BLUE
ctld.deployedJTACs = {} --Store deployed JTAC units here
ctld.JTACCommandMenuPath = {}
ctld.JTAC_LIMIT_RED = 10 -- max number of JTAC Crates for the RED Side
ctld.JTAC_LIMIT_BLUE = 10 -- max number of JTAC Crates for the BLUE Side
@@ -133,7 +123,6 @@ ctld.JTAC_smokeOn_BLUE = true -- enables marking of target with smoke for BLUE f
ctld.JTAC_smokeColour_RED = 4 -- RED side smoke colour -- Green = 0 , Red = 1, White = 2, Orange = 3, Blue = 4
ctld.JTAC_smokeColour_BLUE = 1 -- BLUE side smoke colour -- Green = 0 , Red = 1, White = 2, Orange = 3, Blue = 4
ctld.JTAC_smokeColous = {"Green", "Red", "White", "Orange", "Blue", "No smoke"}
ctld.JTAC_jtacStatusF10 = true -- enables F10 JTAC Status menu
@@ -2895,7 +2884,7 @@ function ctld.unpackCrates(_arguments)
local _crate = ctld.getClosestCrate(_heli, _crates)
if ctld.inLogisticsZone(_heli) == true or ctld.farEnoughFromLogisticZone(_heli) == true then
if ctld.inLogisticsZone(_heli) == true or ctld.farEnoughFromLogisticZone(_heli) == false then
ctld.displayMessageToGroup(_heli, "You can't unpack that here! Take it to where it's needed!", 20)
@@ -2971,10 +2960,11 @@ function ctld.unpackCrates(_arguments)
if ctld.isJTACUnitType(_crate.details.unit) and ctld.JTAC_dropEnabled then
local _side = _heli:getCoalition()
local _code = ctld.jtacGetLaserCodeBySide(_side)
local _code = table.remove(ctld.jtacGeneratedLaserCodes, 1)
--put to the end
table.insert(ctld.jtacGeneratedLaserCodes, _code)
ctld.CreateJTAC(_spawnedGroups:getName(), _code)
ctld.JTACAutoLase(_spawnedGroups:getName(), _code) --(_jtacGroupName, _laserCode, _smoke, _lock, _colour)
end
end
@@ -4413,8 +4403,9 @@ function ctld.farEnoughFromLogisticZone(_heli)
--get distance
local _dist = ctld.getDistance(_heliPoint, _logistic:getPoint())
-- env.info("DIST ".._dist)
if _dist <= ctld.minimumDeployDistance then
-- env.info("TOO CLOSE ".._dist)
_farEnough = false
end
end
@@ -4920,120 +4911,7 @@ ctld.jtacCurrentTargets = {}
ctld.jtacRadioAdded = {} --keeps track of who's had the radio command added
ctld.jtacGeneratedLaserCodes = {} -- keeps track of generated codes, cycles when they run out
ctld.jtacLaserPointCodes = {}
ctld.jtacColor = {}
function ctld.CreateJTAC(group, code)
local _side = ctld.getGroup(group)[1]:getCoalition()
ctld.jtacLaserPointCodes[group] = code
if _side == 1 then
ctld.jtacColor[group] = ctld.JTAC_smokeColour_RED
else
ctld.jtacColor[group] = ctld.JTAC_smokeColour_BLUE
end
ctld.JTACAutoLase(group, code)
if ctld.deployedJTACs[_side] == nil then
ctld.deployedJTACs[_side] = {}
end
table.insert(ctld.deployedJTACs[_side], group)
ctld.refreshJTACMenu(_side)
end
function ctld.changeLaserCode(_args)
local _SelectedLazingCode = tonumber(_args[2])
if tonumber(ctld.jtacLaserPointCodes[_args[1]]) ~= _SelectedLazingCode then
--TODO: check unit's life
ctld.JTACAutoLaseStop(_args[1])
local _smoke
if _args[3] == 1 then
_smoke = ctld.JTAC_smokeOn_RED
else
_smoke = ctld.JTAC_smokeOn_BLUE
end
timer.scheduleFunction(ctld.timerJTACAutoLase, { _args[1], _SelectedLazingCode, _smoke, ctld.JTAC_lock, ctld.jtacColor[_args[1]]}, timer.getTime() + 5) --TODO: check interval
ctld.notifyCoalition(_args[1]..": Changing laser code to ".. _SelectedLazingCode, 10, _args[3])
ctld.jtacLaserPointCodes[_args[1]] = _SelectedLazingCode
else
ctld.notifyCoalition(_args[1]..": I'm already lazing with code ".. _SelectedLazingCode, 10, _args[3])
end
end
function ctld.changeJTACColor(_args)
if ctld.GetColorName(ctld.jtacColor[_args[1]]) ~= _args[2] then
ctld.JTACAutoLaseStop(_args[1])
local _smoke
if _args[3] == 1 then
_smoke = ctld.JTAC_smokeOn_RED
else
_smoke = ctld.JTAC_smokeOn_BLUE
end
local _Color = -1 -- no smoke?
if _args[2] == "Green" then
_Color = 0
elseif _args[2] == "Red" then
_Color = 1
elseif _args[2] == "White" then
_Color = 2
elseif _args[2] == "Orange" then
_Color = 3
elseif _args[2] == "Blue" then
_Color = 4
end
timer.scheduleFunction(ctld.timerJTACAutoLase, { _args[1], ctld.jtacLaserPointCodes[_args[1]], _smoke, ctld.JTAC_lock, _Color }, timer.getTime() + 5) --TODO: check interval
ctld.notifyCoalition(_args[1]..": Changing color to ".._args[2], 10, _args[3])
ctld.jtacColor[_args[1]] = _Color
else
ctld.notifyCoalition(_args[1]..": Smoke color is already ".._args[2]..".", 10, _args[3])
end
end
function ctld.refreshJTACMenu(_side)
if ctld.JTACCommandMenuPath[tostring(_side)] ~= nil then
missionCommands.removeItemForCoalition(_side, ctld.JTACCommandMenuPath[tostring(_side)])
end
local _JTACMenu
if next(ctld.deployedJTACs[_side]) ~= nil then
_JTACMenu = missionCommands.addSubMenuForCoalition(_side, "JTAC Command", nil)
else
return
end
ctld.JTACCommandMenuPath[tostring(_side)] = _JTACMenu
local itemNo = 0
--Add one menu item foreach deployed JTAC unit?
local _JTACMenuItem = {}
local _JTACMenuItemLaser = {}
local _JTACMenuItemColor = {}
for _, _JTACGroup in pairs(ctld.deployedJTACs[_side]) do
_JTACMenuItem[itemNo] = missionCommands.addSubMenuForCoalition(_side, _JTACGroup, _JTACMenu)
--Add laser code submenus
_JTACMenuItemLaser[itemNo] = missionCommands.addSubMenuForCoalition(_side, "Change laser code", _JTACMenuItem[itemNo])
for _, _laseCode in pairs(ctld.laser_codes) do
missionCommands.addCommandForCoalition(_side, "to ".._laseCode, _JTACMenuItemLaser[itemNo], ctld.changeLaserCode, { _JTACGroup, _laseCode, _side})
end
--Add color change submenus
_JTACMenuItemColor[itemNo] = missionCommands.addSubMenuForCoalition(_side, "Change smoke color", _JTACMenuItem[itemNo])
for _, _smokeColor in pairs(ctld.JTAC_smokeColous) do
missionCommands.addCommandForCoalition(_side, "to ".._smokeColor, _JTACMenuItemColor[itemNo], ctld.changeJTACColor, { _JTACGroup, _smokeColor, _side})
end
itemNo = itemNo + 1
end
end
function ctld.JTACAutoLase(_jtacGroupName, _laserCode, _smoke, _lock, _colour)
@@ -5049,6 +4927,8 @@ function ctld.JTACAutoLase(_jtacGroupName, _laserCode, _smoke, _lock, _colour)
end
ctld.jtacLaserPointCodes[_jtacGroupName] = _laserCode
local _jtacGroup = ctld.getGroup(_jtacGroupName)
local _jtacUnit
@@ -5080,18 +4960,8 @@ function ctld.JTACAutoLase(_jtacGroupName, _laserCode, _smoke, _lock, _colour)
if ctld.jtacUnits[_jtacGroupName] ~= nil then
local _side = ctld.jtacUnits[_jtacGroupName].side
ctld.notifyCoalition("JTAC Group " .. _jtacGroupName .. " KIA!", 10, _side)
ctld.deployedJTACs[_side] = {}
for _jtacGroupName, _jtacDetails in pairs(ctld.jtacUnits) do
_jtacUnit = Unit.getByName(_jtacDetails.name)
if _jtacUnit ~= nil and _jtacUnit:getLife() > 0 and _jtacUnit:getCoalition() == _side then
table.insert(ctld.deployedJTACs[_side], _jtacGroupName)
end
end
ctld.refreshJTACMenu(ctld.jtacUnits[_jtacGroupName].side)
end
ctld.notifyCoalition("JTAC Group " .. _jtacGroupName .. " KIA!", 10, ctld.jtacUnits[_jtacGroupName].side)
end
--remove from list
ctld.jtacUnits[_jtacGroupName] = nil
@@ -5174,7 +5044,7 @@ function ctld.JTACAutoLase(_jtacGroupName, _laserCode, _smoke, _lock, _colour)
-- store current target for easy lookup
ctld.jtacCurrentTargets[_jtacGroupName] = { name = _enemyUnit:getName(), unitType = _enemyUnit:getTypeName(), unitId = _enemyUnit:getID() }
ctld.notifyCoalition(_jtacGroupName .. " lasing new target " .. _enemyUnit:getTypeName() .. '. CODE: ' .. _laserCode .. ctld.getPositionString(_enemyUnit) .. ". Smoke: " .. ctld.GetColorName(_colour), 10, _jtacUnit:getCoalition())
ctld.notifyCoalition(_jtacGroupName .. " lasing new target " .. _enemyUnit:getTypeName() .. '. CODE: ' .. _laserCode .. ctld.getPositionString(_enemyUnit), 10, _jtacUnit:getCoalition())
-- create smoke
if _smoke == true then
@@ -5601,8 +5471,6 @@ function ctld.getJTACStatus(_args)
if _jtacUnit ~= nil and _jtacUnit:getLife() > 0 and _jtacUnit:isActive() == true and _jtacUnit:getCoalition() == _side then
local _enemyUnit = ctld.getCurrentUnit(_jtacUnit, _jtacGroupName)
local _jtacColor = ctld.jtacColor[_jtacGroupName]
local _laserCode = ctld.jtacLaserPointCodes[_jtacGroupName]
@@ -5611,7 +5479,7 @@ function ctld.getJTACStatus(_args)
end
if _enemyUnit ~= nil and _enemyUnit:getLife() > 0 and _enemyUnit:isActive() == true then
_message = _message .. "" .. _jtacGroupName .. " targeting " .. _enemyUnit:getTypeName() .. " CODE: " .. _laserCode .. ctld.getPositionString(_enemyUnit) ..". Visual indication: " .. ctld.GetColorName(_jtacColor).. " smoke." .. "\n"
_message = _message .. "" .. _jtacGroupName .. " targeting " .. _enemyUnit:getTypeName() .. " CODE: " .. _laserCode .. ctld.getPositionString(_enemyUnit) .. "\n"
local _list = ctld.listNearbyEnemies(_jtacUnit)
@@ -5638,21 +5506,7 @@ function ctld.getJTACStatus(_args)
ctld.notifyCoalition(_message, 10, _side)
end
function ctld.GetColorName(_Color)
local _ColorName = "No"
if _Color == 0 then
_ColorName = "Green"
elseif _Color == 1 then
_ColorName = "Red"
elseif _Color == 2 then
_ColorName = "White"
elseif _Color == 3 then
_ColorName = "Orange"
elseif _Color == 4 then
_ColorName = "Blue"
end
return _ColorName
end
function ctld.isInfantry(_unit)
@@ -5716,10 +5570,6 @@ function ctld.generateLaserCode()
end
end
function ctld.jtacGetLaserCodeBySide(_side)
return ctld.laser_codes[_side]
end
function ctld.containsDigit(_number, _numberToFind)
local _thisNumber = _number
@@ -6229,4 +6079,4 @@ env.info("CTLD READY")
-- for key, value in pairs(getmetatable(_spawnedCrate)) do
-- env.info(tostring(key))
-- env.info(tostring(value))
-- end
-- end
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.