Blinking SAM Search Radars (Full Version)

All Forums >> [New Releases from Matrix Games] >> Command: Modern Operations series >> Mods and Scenarios >> Lua Legion



Message


SeaQueen -> Blinking SAM Search Radars (7/5/2018 9:28:40 PM)

Hi Guys! I wrote some code for causing SAMS to "blink" their search radars randomly according to fixed intervals (e.g. 15 of the last 45 minutes).

First I created a "Scenario Start" event with a "Scenario Load" trigger, and a LUA action called, "Set Scenario Variables"

-- these variables control the fraction of the time a SAM site will emit

ScenEdit_SetKeyValue('TimeToEmit', '15')    -- minutes
ScenEdit_SetKeyValue('TotalTimeInterval', '30')  -- minutes

-- e.g. "15 of the last 30 minutes"

Next I created another LUA action to be fired at the scenario start called "Initialize SAM Emitting Times" This creates two tables which will be used later; samSiteList and timeEmitting. It then initializes the "timeEmitting" table with random values keyed to the guids stored in samSiteList.

-- contains the guid of each SAM site

samSiteList = {'4346229a-6bdd-4328-9e96-9243be190055',  '11de0af6-3989-4e80-bdbc-ff4b1015c6b7',  '2fd972c5-fa9c-47eb-ba92-5302bb4487eb'}  -- list of all SAM sites in the scenario which will "blink" their search radars

-- each SAM site will start in a different state of having emitted for 'm' minutes, this table will store that state
timeEmitting = {}

--gets  total time interval  
local t_max = tonumber(ScenEdit_GetKeyValue('TotalTimeInterval'))

for i, s in ipairs(samSiteList) do   
      timeEmitting[s]=  math.random(0, t_max)   -- randomizes the starting state of each SAM site
end 


Finally, I created an "Every Minute" trigger with another LUA action. That event determines which SAM sites need to be active and passive. The code which goes in the action is:

local emit_max = tonumber(ScenEdit_GetKeyValue('TimeToEmit'))   --- gets maximum emission time from the scenario variables
local t_max = tonumber(ScenEdit_GetKeyValue('TotalTimeInterval'))  -- gets maximum total time interval from the scenario variables


-- loops over the sites on the samSiteList (see Initialize SAM Emitting Times action)
-- determines if a SAM site has emitted for more than it's allocated emission time
-- if it has then it turns the site off
-- checks to see if the total interval has bee exceeded
-- if it has, it resets the interval to zero

for i, s in ipairs(samSiteList) do
    timeEmitting[s] = timeEmitting[s] + 1
    if ( timeEmitting[s] >=  emit_max) then
           ScenEdit_SetEMCON('Unit', s, 'Radar=Passive')
    else 
           ScenEdit_SetEMCON('Unit', s, 'Radar=Active')
    end

   if( timeEmitting[s]  >= t_max) then
           timeEmitting[s] = 0
   end 
end






tjhkkr -> RE: Blinking SAM Search Radars (7/24/2018 1:56:25 PM)

Thank you for this script!




ddural -> RE: Blinking SAM Search Radars (6/11/2019 5:06:57 PM)

I just ran this script through LUA. I didn't get any errors. When I hit start the radars do not come on.

ScenEdit_SetKeyValue('TimeToEmit', '1') -- minutes
ScenEdit_SetKeyValue('TotalTimeInterval', '2') -- minutes

samSiteList = {'4939521c-9fe9-46ce-9699-36e6de0664e9', 'ca804685-1715-4f6f-8852-e808a10fcc53', 'bcd1f243-0256-49ab-aa70-b85d4c459219'} -- list of all SAM sites in the scenario which will "blink" their search radars

-- each SAM site will start in a different state of having emitted for 'm' minutes, this table will store that state
timeEmitting = {}

--gets total time interval
local t_max = tonumber(ScenEdit_GetKeyValue('TotalTimeInterval'))

for i, s in ipairs(samSiteList) do
timeEmitting= math.random(0, t_max) -- randomizes the starting state of each SAM site
end
local emit_max = tonumber(ScenEdit_GetKeyValue('TimeToEmit')) --- gets maximum emission time from the scenario variables
local t_max = tonumber(ScenEdit_GetKeyValue('TotalTimeInterval')) -- gets maximum total time interval from the scenario variables


-- loops over the sites on the samSiteList (see Initialize SAM Emitting Times action)
-- determines if a SAM site has emitted for more than it's allocated emission time
-- if it has then it turns the site off
-- checks to see if the total interval has bee exceeded
-- if it has, it resets the interval to zero

for i, s in ipairs(samSiteList) do
timeEmitting = timeEmitting + 1
if ( timeEmitting >= emit_max) then
ScenEdit_SetEMCON('Unit', s, 'Radar=Passive')
else
ScenEdit_SetEMCON('Unit', s, 'Radar=Active')
end

if( timeEmitting >= t_max) then
timeEmitting = 0
end
end





SeaQueen -> RE: Blinking SAM Search Radars (6/12/2019 3:46:25 PM)

How did you set it up? Was there an initialization action at scenario start and an "every minute" action?

Did you add the guids of the SAMs you want to blink to the samSiteList array?




sarjen -> RE: Blinking SAM Search Radars (7/18/2019 12:23:01 PM)

I tried it too and it worked for me.




Page: [1]

Valid CSS!




Forum Software © ASPPlayground.NET Advanced Edition 2.4.5 ANSI
1.234375