Simple OOB listing using Lua in 1.11.sr7 (Full Version)

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



Message


michaelm75au -> Simple OOB listing using Lua in 1.11.sr7 (2/11/2017 12:00:35 AM)

With the additional Lua in this build, you can create some OOB listings.Change the side's name to the one needed. The results are also in the new Lua history (Logs folder) if too long for the Lua output window.

-- get all units on a side
-- extract the base they are assigned to
-- report by base
local s = VP_GetSide({name='strategic air command'})
local function split(str, pat)
local t = {}
local fpat = "(.-)" .. pat
local last_end = 1
local s, e, cap = str:find(fpat, 1)
while s do
if s ~= 1 or cap ~= "" then
table.insert(t,cap)
end
last_end = e+1
s, e, cap = str:find(fpat, last_end)
end
if last_end <= #str then
cap = str:sub(last_end)
table.insert(t, cap)
end
return t
end
local function sortName(a,b)
return(ScenEdit_GetUnit({guid=a}).name<ScenEdit_GetUnit({guid=b}).name)
end
local function orderedPairs(t,f)
local array = {}
for n in pairs(t) do array[#array +1] = n end
table.sort(array,f)
local index = 0
return function ()
index = index + 1
return array[index],t[array[index]]
end
end
-- main logic
local base = {}
for k,v in pairs(s.units)
do
local unit = ScenEdit_GetUnit({guid=v.guid})
if unit.base ~= nil then
local b = unit.base
if b.group ~= nil then
-- has a parent group; use it rather than the group members
if base[b.group.guid] == nil and b.group.guid ~= v.guid then
base[b.group.guid] = v.guid
elseif b.group.guid ~= v.guid then
base[b.group.guid] = base[b.group.guid] .. ',' .. v.guid
end
elseif base[b.guid] == nil and b.guid ~= v.guid then
base[b.guid] = v.guid
elseif b.guid ~= v.guid then
base[b.guid] = base[b.guid] .. ',' .. v.guid
end
elseif unit.group ~= nil then
local b = unit.group
if base[b.guid] == nil and b.guid ~= v.guid then
base[b.guid] = v.guid
elseif b.guid ~= v.guid then
base[b.guid] = base[b.guid] .. ',' .. v.guid
end
else
-- units not based somewhere
if base['xindependent'] == nil then
base['xindependent'] = v.guid
else
base['xindependent'] = base['xindependent'] .. ',' .. v.guid
end
end
end
local k,v
for k,v in orderedPairs(base)
do
print('\n')
if k == 'xindependent' then
print('Un-based units');
else
print('Base: ' .. ScenEdit_GetUnit({guid=k}).name);
end
local k1,v1
local t = split(v,',')
if t ~= nil then
-- group like names together
table.sort(t, sortName)
for k1,v1 in pairs(t)
do
if v1 == k then next(t) end
local unit = ScenEdit_GetUnit({guid=v1})
if unit.condition ~= nil then
print(string.format(" %s (%s)",unit.name, unit.condition));
else
print(string.format(" %s ",unit.name));
end
end
end
end




michaelm75au -> Example (2/11/2017 12:01:22 AM)

Base: RAF Upper Heyford
40th Bombardment Wing #1 (Readying)
40th Bombardment Wing #10 (Readying)
40th Bombardment Wing #11 (Readying)
40th Bombardment Wing #12 (Readying)
40th Bombardment Wing #13 (Readying)
40th Bombardment Wing #14 (Readying)
40th Bombardment Wing #15 (Readying)
40th Bombardment Wing #16 (Readying)
40th Bombardment Wing #17 (Readying)
40th Bombardment Wing #18 (Readying)
40th Bombardment Wing #19 (Readying)
40th Bombardment Wing #2 (Readying)
40th Bombardment Wing #20 (Readying)
40th Bombardment Wing #21 (Airborne)
40th Bombardment Wing #22 (Airborne)
40th Bombardment Wing #23 (Readying)
40th Bombardment Wing #24 (Readying)
40th Bombardment Wing #25 (Readying)
40th Bombardment Wing #26 (Readying)
40th Bombardment Wing #27 (Readying)
40th Bombardment Wing #28 (Readying)
40th Bombardment Wing #29 (Readying)
40th Bombardment Wing #3 (Readying)
40th Bombardment Wing #30 (Readying)
40th Bombardment Wing #31 (Readying)
40th Bombardment Wing #32 (Readying)
40th Bombardment Wing #35 (Airborne)
40th Bombardment Wing #4 (Readying)
40th Bombardment Wing #7 (Readying)
40th Bombardment Wing #9 (Readying)


Base: RAF Fairford
310th Bombardment Wing #1 (Readying)
310th Bombardment Wing #10 (Readying)
310th Bombardment Wing #11 (Readying)
310th Bombardment Wing #12 (Readying)
310th Bombardment Wing #13 (Airborne)
310th Bombardment Wing #14 (Readying)
310th Bombardment Wing #15 (Refuelling)
310th Bombardment Wing #16 (Readying)
310th Bombardment Wing #17 (Readying)
310th Bombardment Wing #18 (Readying)
310th Bombardment Wing #2 (Readying)
310th Bombardment Wing #22 (Readying)
310th Bombardment Wing #23 (Readying)
310th Bombardment Wing #24 (Readying)
310th Bombardment Wing #25 (Airborne)
310th Bombardment Wing #26 (Airborne)
310th Bombardment Wing #27 (Airborne)
310th Bombardment Wing #28 (Airborne)
310th Bombardment Wing #29 (Readying)
310th Bombardment Wing #30 (Refuelling)
310th Bombardment Wing #31 (Readying)
310th Bombardment Wing #32 (Readying)
310th Bombardment Wing #33 (Parked)
310th Bombardment Wing #34 (Airborne)
310th Bombardment Wing #35 (Parked)
310th Bombardment Wing #4 (Refuelling)
310th Bombardment Wing #6 (Airborne)
310th Bombardment Wing #7 (Airborne)
310th Bombardment Wing #8 (Airborne)
310th Bombardment Wing #9 (Readying)


Base: RAF Kinloss
106th Air Refueling Group #1 (Parked)
106th Air Refueling Group #10 (Readying)
106th Air Refueling Group #11 (Parked)
106th Air Refueling Group #12 (Airborne)
106th Air Refueling Group #13 (Airborne)
106th Air Refueling Group #14 (Airborne)
106th Air Refueling Group #15 (Readying)
106th Air Refueling Group #16 (Airborne)
106th Air Refueling Group #17 (Parked)
106th Air Refueling Group #18 (Parked)
106th Air Refueling Group #19 (Parked)
106th Air Refueling Group #2 (Parked)
106th Air Refueling Group #20 (Airborne)
106th Air Refueling Group #21 (Airborne)
106th Air Refueling Group #22 (Airborne)
106th Air Refueling Group #23 (Airborne)
106th Air Refueling Group #24 (Airborne)
106th Air Refueling Group #25 (Parked)
106th Air Refueling Group #26 (Readying)
106th Air Refueling Group #27 (Airborne)
106th Air Refueling Group #28 (Readying)
106th Air Refueling Group #29 (Returning to base)
106th Air Refueling Group #3 (Parked)
106th Air Refueling Group #30 (Offloading fuel)
106th Air Refueling Group #31 (Parked)
106th Air Refueling Group #32 (Readying)
106th Air Refueling Group #33 (Readying)
106th Air Refueling Group #34 (Parked)
106th Air Refueling Group #35 (Airborne)
106th Air Refueling Group #36 (Airborne)
106th Air Refueling Group #37 (Readying)
106th Air Refueling Group #38 (Parked)
106th Air Refueling Group #39 (Parked)
106th Air Refueling Group #4 (Parked)
106th Air Refueling Group #5 (Parked)
106th Air Refueling Group #6 (Parked)
106th Air Refueling Group #7 (Parked)
106th Air Refueling Group #8 (Parked)
106th Air Refueling Group #9 (Parked)


Un-based units
RAF Fairford
RAF Kinloss
RAF Upper Heyford




Rory Noonan -> RE: Example (2/11/2017 12:03:48 AM)

You magnificent bastard.

Thank you! [&o]




michaelm75au -> RE: Example (2/11/2017 12:09:02 AM)

You could also set this up as a Special Event to be run whenever needed - should just print to the log. But the script console window still needs to open in the background.




Page: [1]

Valid CSS!




Forum Software © ASPPlayground.NET Advanced Edition 2.4.5 ANSI
0.796875