mirror of
https://github.com/mrSkortch/MissionScriptingTools.git
synced 2025-08-15 10:47:23 +00:00
added 4 funcs for 3.5
This commit is contained in:
parent
2b29f19fd1
commit
b5bd16b3b1
189
mist.lua
189
mist.lua
@ -1,10 +1,17 @@
|
|||||||
|
--[[
|
||||||
|
v27
|
||||||
|
added mist.flagFunc.group_alive
|
||||||
|
added mist.flagFunc.group_dead
|
||||||
|
added mist.flagFunc.group_alive_less_than
|
||||||
|
added mist.flagFunc.group_dead_less_than
|
||||||
|
]]
|
||||||
|
|
||||||
--MiST Mission Scripting Tools
|
--MiST Mission Scripting Tools
|
||||||
mist = {}
|
mist = {}
|
||||||
|
|
||||||
-- don't change these
|
-- don't change these
|
||||||
mist.majorVersion = 3
|
mist.majorVersion = 3
|
||||||
mist.minorVersion = 4
|
mist.minorVersion = 5
|
||||||
mist.build = 27
|
mist.build = 27
|
||||||
|
|
||||||
--------------------------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------------------
|
||||||
@ -2420,6 +2427,178 @@ toggle = boolean or nil
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
mist.flagFunc.group_alive = function(vars)
|
||||||
|
--[[vars
|
||||||
|
groupName
|
||||||
|
flag
|
||||||
|
toggle
|
||||||
|
interval
|
||||||
|
stopFlag
|
||||||
|
|
||||||
|
]]
|
||||||
|
local type_tbl = {
|
||||||
|
[{'group', 'groupname', 'gp', 'groupName'}] = 'string',
|
||||||
|
flag = 'number',
|
||||||
|
stopflag = {'number', 'nil'},
|
||||||
|
interval = {'number', 'nil'},
|
||||||
|
toggle = {'boolean', 'nil'},
|
||||||
|
}
|
||||||
|
|
||||||
|
local err, errmsg = mist.utils.typeCheck('mist.flagFunc.group_alive', type_tbl, vars)
|
||||||
|
assert(err, errmsg)
|
||||||
|
|
||||||
|
local groupName = vars.groupName or vars.group or vars.gp or vars.Groupname
|
||||||
|
local flag = vars.flag
|
||||||
|
local stopflag = vars.stopflag or -1
|
||||||
|
local interval = vars.interval or 1
|
||||||
|
local toggle = vars.toggle or nil
|
||||||
|
|
||||||
|
|
||||||
|
if stopflag == -1 or (type(trigger.misc.getUserFlag(stopflag)) == 'number' and trigger.misc.getUserFlag(stopflag) == 0) or (type(trigger.misc.getUserFlag(stopflag)) == 'boolean' and trigger.misc.getUserFlag(stopflag) == false) then
|
||||||
|
if Group.getByName(groupName) and Group.getByName(groupName):isActive() then
|
||||||
|
if trigger.misc.getUserFlag(flag) == 0 then
|
||||||
|
trigger.action.setUserFlag(flag, true)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if toggle then
|
||||||
|
trigger.action.setUserFlag(flag, false)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if (type(trigger.misc.getUserFlag(stopflag)) == 'number' and trigger.misc.getUserFlag(stopflag) == 0) or (type(trigger.misc.getUserFlag(stopflag)) == 'boolean' and trigger.misc.getUserFlag(stopflag) == false) then
|
||||||
|
mist.scheduleFunction(mist.flagFunc.group_alive, {{groupName = groupName, flag = flag, stopflag = stopflag, interval = interval, toggle = toggle}}, timer.getTime() + interval)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
mist.flagFunc.group_dead = function(vars)
|
||||||
|
local type_tbl = {
|
||||||
|
[{'group', 'groupname', 'gp', 'groupName'}] = 'string',
|
||||||
|
flag = 'number',
|
||||||
|
stopflag = {'number', 'nil'},
|
||||||
|
interval = {'number', 'nil'},
|
||||||
|
toggle = {'boolean', 'nil'},
|
||||||
|
}
|
||||||
|
|
||||||
|
local err, errmsg = mist.utils.typeCheck('mist.flagFunc.group_dead', type_tbl, vars)
|
||||||
|
assert(err, errmsg)
|
||||||
|
|
||||||
|
local groupName = vars.groupName or vars.group or vars.gp or vars.Groupname
|
||||||
|
local flag = vars.flag
|
||||||
|
local stopflag = vars.stopflag or -1
|
||||||
|
local interval = vars.interval or 1
|
||||||
|
local toggle = vars.toggle or nil
|
||||||
|
|
||||||
|
|
||||||
|
if stopflag == -1 or (type(trigger.misc.getUserFlag(stopflag)) == 'number' and trigger.misc.getUserFlag(stopflag) == 0) or (type(trigger.misc.getUserFlag(stopflag)) == 'boolean' and trigger.misc.getUserFlag(stopflag) == false) then
|
||||||
|
if not Group.getByName(groupName) then
|
||||||
|
if trigger.misc.getUserFlag(flag) == 0 then
|
||||||
|
trigger.action.setUserFlag(flag, true)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if toggle then
|
||||||
|
trigger.action.setUserFlag(flag, false)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if (type(trigger.misc.getUserFlag(stopflag)) == 'number' and trigger.misc.getUserFlag(stopflag) == 0) or (type(trigger.misc.getUserFlag(stopflag)) == 'boolean' and trigger.misc.getUserFlag(stopflag) == false) then
|
||||||
|
mist.scheduleFunction(mist.flagFunc.group_dead, {{groupName = groupName, flag = flag, stopflag = stopflag, interval = interval, toggle = toggle}}, timer.getTime() + interval)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
mist.flagFunc.group_alive_less_than = function(vars)
|
||||||
|
env.info('aliveless')
|
||||||
|
local type_tbl = {
|
||||||
|
[{'group', 'groupname', 'gp', 'groupName'}] = 'string',
|
||||||
|
percent = 'number',
|
||||||
|
flag = 'number',
|
||||||
|
stopflag = {'number', 'nil'},
|
||||||
|
interval = {'number', 'nil'},
|
||||||
|
toggle = {'boolean', 'nil'},
|
||||||
|
}
|
||||||
|
|
||||||
|
local err, errmsg = mist.utils.typeCheck('mist.flagFunc.group_alive_less_than', type_tbl, vars)
|
||||||
|
assert(err, errmsg)
|
||||||
|
|
||||||
|
local groupName = vars.groupName or vars.group or vars.gp or vars.Groupname
|
||||||
|
local flag = vars.flag
|
||||||
|
local percent = vars.percent
|
||||||
|
local stopflag = vars.stopflag or -1
|
||||||
|
local interval = vars.interval or 1
|
||||||
|
local toggle = vars.toggle or nil
|
||||||
|
|
||||||
|
|
||||||
|
if stopflag == -1 or (type(trigger.misc.getUserFlag(stopflag)) == 'number' and trigger.misc.getUserFlag(stopflag) == 0) or (type(trigger.misc.getUserFlag(stopflag)) == 'boolean' and trigger.misc.getUserFlag(stopflag) == false) then
|
||||||
|
if Group.getByName(groupName) and Group.getByName(groupName):isActive() then
|
||||||
|
if Group.getByName(groupName):getSize()/Group.getByName(groupName):getInitialSize() < percent/100 then
|
||||||
|
if trigger.misc.getUserFlag(flag) == 0 then
|
||||||
|
trigger.action.setUserFlag(flag, true)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if toggle then
|
||||||
|
trigger.action.setUserFlag(flag, false)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if trigger.misc.getUserFlag(flag) == 0 then
|
||||||
|
trigger.action.setUserFlag(flag, true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if (type(trigger.misc.getUserFlag(stopflag)) == 'number' and trigger.misc.getUserFlag(stopflag) == 0) or (type(trigger.misc.getUserFlag(stopflag)) == 'boolean' and trigger.misc.getUserFlag(stopflag) == false) then
|
||||||
|
mist.scheduleFunction(mist.flagFunc.group_alive_less_than, {{groupName = groupName, flag = flag, stopflag = stopflag, interval = interval, toggle = toggle, percent = percent}}, timer.getTime() + interval)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
mist.flagFunc.group_alive_more_than = function(vars)
|
||||||
|
local type_tbl = {
|
||||||
|
[{'group', 'groupname', 'gp', 'groupName'}] = 'string',
|
||||||
|
percent = 'number',
|
||||||
|
flag = 'number',
|
||||||
|
stopflag = {'number', 'nil'},
|
||||||
|
interval = {'number', 'nil'},
|
||||||
|
toggle = {'boolean', 'nil'},
|
||||||
|
}
|
||||||
|
|
||||||
|
local err, errmsg = mist.utils.typeCheck('mist.flagFunc.group_alive_more_than', type_tbl, vars)
|
||||||
|
assert(err, errmsg)
|
||||||
|
|
||||||
|
local groupName = vars.groupName or vars.group or vars.gp or vars.Groupname
|
||||||
|
local flag = vars.flag
|
||||||
|
local percent = vars.percent
|
||||||
|
local stopflag = vars.stopflag or -1
|
||||||
|
local interval = vars.interval or 1
|
||||||
|
local toggle = vars.toggle or nil
|
||||||
|
|
||||||
|
|
||||||
|
if stopflag == -1 or (type(trigger.misc.getUserFlag(stopflag)) == 'number' and trigger.misc.getUserFlag(stopflag) == 0) or (type(trigger.misc.getUserFlag(stopflag)) == 'boolean' and trigger.misc.getUserFlag(stopflag) == false) then
|
||||||
|
if Group.getByName(groupName) and Group.getByName(groupName):isActive() then
|
||||||
|
if Group.getByName(groupName):getSize()/Group.getByName(groupName):getInitialSize() > percent/100 then
|
||||||
|
if trigger.misc.getUserFlag(flag) == 0 then
|
||||||
|
trigger.action.setUserFlag(flag, true)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if toggle and trigger.misc.getUserFlag(flag) == 1 then
|
||||||
|
trigger.action.setUserFlag(flag, false)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else --- just in case
|
||||||
|
if toggle and trigger.misc.getUserFlag(flag) == 1 then
|
||||||
|
trigger.action.setUserFlag(flag, false)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if (type(trigger.misc.getUserFlag(stopflag)) == 'number' and trigger.misc.getUserFlag(stopflag) == 0) or (type(trigger.misc.getUserFlag(stopflag)) == 'boolean' and trigger.misc.getUserFlag(stopflag) == false) then
|
||||||
|
mist.scheduleFunction(mist.flagFunc.group_alive_more_than, {{groupName = groupName, flag = flag, stopflag = stopflag, interval = interval, toggle = toggle, percent = percent}}, timer.getTime() + interval)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--Gets the average position of a group of units (by name)
|
--Gets the average position of a group of units (by name)
|
||||||
mist.getAvgPos = function(unitNames)
|
mist.getAvgPos = function(unitNames)
|
||||||
local avgX, avgY, avgZ, totNum = 0, 0, 0, 0
|
local avgX, avgY, avgZ, totNum = 0, 0, 0, 0
|
||||||
@ -2732,9 +2911,9 @@ mist.fixedWing.buildWP = function(point, WPtype, speed, alt, altType)
|
|||||||
|
|
||||||
if altType then
|
if altType then
|
||||||
altType = string.lower(altType)
|
altType = string.lower(altType)
|
||||||
if altType == 'radio' or 'agl' then
|
if altType == 'radio' or altType == 'agl' then
|
||||||
wp.alt_type = 'RADIO'
|
wp.alt_type = 'RADIO'
|
||||||
elseif altType == 'baro' or 'asl' then
|
elseif altType == 'baro' or altType == 'asl' then
|
||||||
wp.alt_type = 'BARO'
|
wp.alt_type = 'BARO'
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@ -2791,9 +2970,9 @@ mist.heli.buildWP = function(point, WPtype, speed, alt, altType)
|
|||||||
|
|
||||||
if altType then
|
if altType then
|
||||||
altType = string.lower(altType)
|
altType = string.lower(altType)
|
||||||
if altType == 'radio' or 'agl' then
|
if altType == 'radio' or altType == 'agl' then
|
||||||
wp.alt_type = 'RADIO'
|
wp.alt_type = 'RADIO'
|
||||||
elseif altType == 'baro' or 'asl' then
|
elseif altType == 'baro' or altType == 'asl' then
|
||||||
wp.alt_type = 'BARO'
|
wp.alt_type = 'BARO'
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user