mirror of
https://github.com/weyne85/DML.git
synced 2025-10-29 16:57:49 +00:00
1.1.6
Bug fixes autoCsar Beta williePete Beta
This commit is contained in:
112
modules/autoCSAR.lua
Normal file
112
modules/autoCSAR.lua
Normal file
@@ -0,0 +1,112 @@
|
||||
autoCSAR = {}
|
||||
autoCSAR.version = "1.0.0"
|
||||
autoCSAR.requiredLibs = {
|
||||
"dcsCommon", -- always
|
||||
"cfxZones", -- Zones, of course
|
||||
}
|
||||
autoCSAR.killDelay = 2 * 60
|
||||
autoCSAR.counter = 31 -- any nuber is good, to kick-off counting
|
||||
--[[--
|
||||
VERSION HISTORY
|
||||
1.0.0 - Initial Version
|
||||
--]]--
|
||||
|
||||
function autoCSAR.removeGuy(args)
|
||||
local theGuy = args.theGuy
|
||||
if theGuy and theGuy:isExist() then
|
||||
Unit.destroy(theGuy)
|
||||
end
|
||||
end
|
||||
|
||||
function autoCSAR.createNewCSAR(theUnit)
|
||||
if not csarManager then
|
||||
trigger.action.outText("+++aCSAR: CSAR Manager not loaded, aborting", 30)
|
||||
-- return
|
||||
end
|
||||
-- enter with unit from landing_after_eject event
|
||||
-- unit has no group
|
||||
local coa = theUnit:getCoalition()
|
||||
if coa == 0 then -- neutral
|
||||
trigger.action.outText("Neutal Pilot made it safely to ground.", 30)
|
||||
return
|
||||
end
|
||||
if coa == 1 and not autoCSAR.redCSAR then
|
||||
return -- we don't do red
|
||||
end
|
||||
if coa == 2 and not autoCSAR.blueCSAR then
|
||||
return -- no blue rescue
|
||||
end
|
||||
|
||||
-- for later expansion
|
||||
local theGroup = theUnit:getGroup()
|
||||
if theGroup then
|
||||
trigger.action.outText("We have a group for <" .. theUnit:getName() .. ">", 30)
|
||||
end
|
||||
|
||||
-- create a CSAR mission now
|
||||
csarManager.createCSARForParachutist(theUnit, "Xray-" .. autoCSAR.counter)
|
||||
autoCSAR.counter = autoCSAR.counter + 1
|
||||
|
||||
-- schedule removal of pilot
|
||||
local args = {}
|
||||
args.theGuy = theUnit
|
||||
timer.scheduleFunction(autoCSAR.removeGuy, args, timer.getTime() + autoCSAR.killDelay)
|
||||
end
|
||||
|
||||
function autoCSAR:onEvent(event)
|
||||
if event.id == 31 then -- landing_after_eject
|
||||
if event.initiator then
|
||||
autoCSAR.createNewCSAR(event.initiator)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function autoCSAR.readConfigZone()
|
||||
local theZone = cfxZones.getZoneByName("autoCSARConfig")
|
||||
if not theZone then
|
||||
theZone = cfxZones.createSimpleZone("autoCSARConfig")
|
||||
if autoCSAR.verbose then
|
||||
trigger.action.outText("+++aCSAR: NO config zone!", 30)
|
||||
end
|
||||
end
|
||||
|
||||
autoCSAR.redCSAR = cfxZones.getBoolFromZoneProperty(theZone, "red", true)
|
||||
if cfxZones.hasProperty(theZone, "redCSAR") then
|
||||
autoCSAR.redCSAR = cfxZones.getBoolFromZoneProperty(theZone, "redCSAR", true)
|
||||
end
|
||||
|
||||
autoCSAR.blueCSAR = cfxZones.getBoolFromZoneProperty(theZone, "blue", true)
|
||||
if cfxZones.hasProperty(theZone, "blueCSAR") then
|
||||
autoCSAR.blueCSAR = cfxZones.getBoolFromZoneProperty(theZone, "blueCSAR", true)
|
||||
end
|
||||
|
||||
if autoCSAR.verbose then
|
||||
trigger.action.outText("+++aCSAR: read config", 30)
|
||||
end
|
||||
end
|
||||
|
||||
function autoCSAR.start()
|
||||
-- lib check
|
||||
if not dcsCommon.libCheck then
|
||||
trigger.action.outText("cfx autoCSAR requires dcsCommon", 30)
|
||||
return false
|
||||
end
|
||||
if not dcsCommon.libCheck("cfx autoCSAR", autoCSAR.requiredLibs) then
|
||||
return false
|
||||
end
|
||||
|
||||
-- read config
|
||||
autoCSAR.readConfigZone()
|
||||
|
||||
-- connect event handler
|
||||
world.addEventHandler(autoCSAR)
|
||||
|
||||
trigger.action.outText("cfx autoCSAR v" .. autoCSAR.version .. " started.", 30)
|
||||
return true
|
||||
end
|
||||
|
||||
-- let's go!
|
||||
if not autoCSAR.start() then
|
||||
trigger.action.outText("cfx autoCSAR aborted: missing libraries", 30)
|
||||
autoCSAR = nil
|
||||
end
|
||||
Reference in New Issue
Block a user