mirror of
https://github.com/iTracerFacer/DCS_MissionDev.git
synced 2025-12-03 04:14:46 +00:00
Finally got MOOSE_CTLD building FOBs like it was supposed to.
This commit is contained in:
parent
02253148df
commit
53f810a6b5
Binary file not shown.
Binary file not shown.
@ -2,6 +2,16 @@
|
|||||||
--[ Created by: F99th-TracerFacer
|
--[ Created by: F99th-TracerFacer
|
||||||
--[ Date: Nov2024
|
--[ Date: Nov2024
|
||||||
|
|
||||||
|
local pointsAwardedTroopsDeployed = 1
|
||||||
|
local pointsAwardedTroopsExtracted = 1
|
||||||
|
local pointsAwardedTroopsPickedup = 1
|
||||||
|
local pointsAwardedTroopsRTB = 1
|
||||||
|
local pointsAwardedCrateDropped = 1
|
||||||
|
local pointsAwardedCrateBuilt = 1
|
||||||
|
local pointsAwardedCrateRepair = 1
|
||||||
|
local msgTime = 10
|
||||||
|
|
||||||
|
|
||||||
-- Setup CTLD for Red and Blue Coalitions
|
-- Setup CTLD for Red and Blue Coalitions
|
||||||
local red_helos = SET_GROUP:New():FilterCoalitions("red"):FilterCategoryHelicopter():FilterStart()
|
local red_helos = SET_GROUP:New():FilterCoalitions("red"):FilterCategoryHelicopter():FilterStart()
|
||||||
local red_ctld = CTLD:New(coalition.side.RED)
|
local red_ctld = CTLD:New(coalition.side.RED)
|
||||||
@ -156,30 +166,30 @@ red_ctld:AddCratesCargo("T-90",{"Red-T90"},CTLD_CARGO.Enum.VEHICLE, 1, 8500, 25)
|
|||||||
blue_ctld:AddCratesCargo("M1A2",{"Blue-M1A2"},CTLD_CARGO.Enum.VEHICLE, 1, 8500, 25)
|
blue_ctld:AddCratesCargo("M1A2",{"Blue-M1A2"},CTLD_CARGO.Enum.VEHICLE, 1, 8500, 25)
|
||||||
|
|
||||||
-- Add FOBs
|
-- Add FOBs
|
||||||
red_ctld:AddCratesCargo("Forward Ops Base",{"Red-FOB"},CTLD_CARGO.Enum.FOB, 4, 500, 8)
|
red_ctld:AddCratesCargo("Forward Ops Base",{"Red-FOB"},CTLD_CARGO.Enum.FOB, 4, 500, 3)
|
||||||
blue_ctld:AddCratesCargo("Forward Ops Base",{"Blue-FOB"},CTLD_CARGO.Enum.FOB, 4, 500, 8)
|
blue_ctld:AddCratesCargo("Forward Ops Base",{"Blue-FOB"},CTLD_CARGO.Enum.FOB, 4, 500, 3)
|
||||||
|
|
||||||
-- AA Crates
|
-- AA Crates
|
||||||
red_ctld:AddCratesCargo("SA-8",{"SA8"},CTLD_CARGO.Enum.CRATE, 4, 500, 10)
|
red_ctld:AddCratesCargo("SA-8",{"SA8"},CTLD_CARGO.Enum.CRATE, 4, 500, 10)
|
||||||
red_ctld:AddCratesCargo("SA-6",{"SA6"},CTLD_CARGO.Enum.CRATE, 4, 500, 10)
|
red_ctld:AddCratesCargo("SA-6",{"SA6"},CTLD_CARGO.Enum.CRATE, 4, 500, 10)
|
||||||
red_ctld:AddCratesCargo("SA-10",{"SA10"},CTLD_CARGO.Enum.CRATE, 6, 500, 10)
|
red_ctld:AddCratesCargo("SA-10",{"SA10"},CTLD_CARGO.Enum.CRATE, 6, 500, 10)
|
||||||
|
|
||||||
blue_ctld:AddCratesCargo("Linebacker",{"LINEBACKER"},CTLD_CARGO.Enum.CRATE, 2, 500, 10)
|
blue_ctld:AddCratesCargo("Linebacker",{"LINEBACKER"},CTLD_CARGO.Enum.CRATE, 2, 500, 5)
|
||||||
blue_ctld:AddCratesCargo("Hawk Site",{"HAWK"},CTLD_CARGO.Enum.CRATE, 4, 500, 10)
|
blue_ctld:AddCratesCargo("Hawk Site",{"HAWK"},CTLD_CARGO.Enum.CRATE, 4, 500, 4)
|
||||||
blue_ctld:AddCratesCargo("Patriot Site",{"PATRIOT"},CTLD_CARGO.Enum.CRATE, 6, 500, 10)
|
blue_ctld:AddCratesCargo("Patriot Site",{"PATRIOT"},CTLD_CARGO.Enum.CRATE, 12, 500, 4)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Add 6 Red Load Zones
|
-- Add 6 Red Load Zones that are active but have no beacon.
|
||||||
red_ctld:AddCTLDZone("RedLoadZone1", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Red, true, false)
|
red_ctld:AddCTLDZone("RedLoadZone1", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Red, true, false)
|
||||||
red_ctld:AddCTLDZone("RedLoadZone2", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Red, true, false)
|
red_ctld:AddCTLDZone("RedLoadZone2", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Red, true, false)
|
||||||
red_ctld:AddCTLDZone("RedLoadZone3", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Red, true, false)
|
red_ctld:AddCTLDZone("RedLoadZone3", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Red, true, false)
|
||||||
red_ctld:AddCTLDZone("RedLoadZone4", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Red, true, false)
|
red_ctld:AddCTLDZone("RedLoadZone4", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Red, true, false)
|
||||||
red_ctld:AddCTLDZone("RedLoadZone5", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Red, true, false)
|
red_ctld:AddCTLDZone("RedLoadZone5", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Red, true, false)
|
||||||
red_ctld:AddCTLDZone("RedLoadZone6", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Red, true, false)
|
red_ctld:AddCTLDZone("RedLoadZone6", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Red, true, false)
|
||||||
|
|
||||||
-- Add 6 Blue Load Zones
|
-- Add 6 Blue Load Zones that are active but have no beacon.
|
||||||
blue_ctld:AddCTLDZone("BlueLoadZone1", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Blue, true, false)
|
blue_ctld:AddCTLDZone("BlueLoadZone1", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Blue, true, false)
|
||||||
blue_ctld:AddCTLDZone("BlueLoadZone2", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Blue, true, false)
|
blue_ctld:AddCTLDZone("BlueLoadZone2", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Blue, true, false)
|
||||||
blue_ctld:AddCTLDZone("BlueLoadZone3", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Blue, true, false)
|
blue_ctld:AddCTLDZone("BlueLoadZone3", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Blue, true, false)
|
||||||
@ -188,7 +198,6 @@ blue_ctld:AddCTLDZone("BlueLoadZone5", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Blue,
|
|||||||
blue_ctld:AddCTLDZone("BlueLoadZone6", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Blue, true, false)
|
blue_ctld:AddCTLDZone("BlueLoadZone6", CTLD.CargoZoneType.LOAD, SMOKECOLOR.Blue, true, false)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function blue_ctld:OnAfterTroopsDeployed(From,Event,To,Group,Unit,Troops)
|
function blue_ctld:OnAfterTroopsDeployed(From,Event,To,Group,Unit,Troops)
|
||||||
if Unit then
|
if Unit then
|
||||||
local PlayerName = Unit:GetPlayerName()
|
local PlayerName = Unit:GetPlayerName()
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
local ENABLE_SAMS = false -- used for testing purposes. Set to true to enable SAMs, false to disable.
|
local ENABLE_SAMS = true -- used for testing purposes. Set to true to enable SAMs, false to disable.
|
||||||
local TAC_DISPLAY = true -- Set to false to disable Tacview display for AI flights (default = false)
|
local TAC_DISPLAY = false -- Set to false to disable Tacview display for AI flights (default = false)
|
||||||
|
|
||||||
-- How many red/blue aircraft are in the air by default.
|
-- How many red/blue aircraft are in the air by default.
|
||||||
local RedA2ADefaultOverhead = 1.5
|
local RedA2ADefaultOverhead = 1.5
|
||||||
|
|||||||
70
Moose_.lua
70
Moose_.lua
@ -1,4 +1,4 @@
|
|||||||
env.info('*** MOOSE GITHUB Commit Hash ID: 2024-11-11T12:19:49+01:00-fb2ba1dea086b6ae987e67ab7386ced9d6ce33a8 ***')
|
env.info('*** MOOSE GITHUB Commit Hash ID: 2024-11-18T18:36:47+01:00-75e80a00913b1f49ef1140350f0a2de989939ace ***')
|
||||||
if not MOOSE_DEVELOPMENT_FOLDER then
|
if not MOOSE_DEVELOPMENT_FOLDER then
|
||||||
MOOSE_DEVELOPMENT_FOLDER='Scripts'
|
MOOSE_DEVELOPMENT_FOLDER='Scripts'
|
||||||
end
|
end
|
||||||
@ -7458,6 +7458,7 @@ if not Event.IniUnit then
|
|||||||
Event.IniUnit=CLIENT:FindByName(Event.IniDCSUnitName,'',true)
|
Event.IniUnit=CLIENT:FindByName(Event.IniDCSUnitName,'',true)
|
||||||
end
|
end
|
||||||
Event.IniDCSGroupName=Event.IniUnit and Event.IniUnit.GroupName or""
|
Event.IniDCSGroupName=Event.IniUnit and Event.IniUnit.GroupName or""
|
||||||
|
Event.IniGroupName=Event.IniDCSGroupName
|
||||||
if Event.IniDCSGroup and Event.IniDCSGroup:isExist()then
|
if Event.IniDCSGroup and Event.IniDCSGroup:isExist()then
|
||||||
Event.IniDCSGroupName=Event.IniDCSGroup:getName()
|
Event.IniDCSGroupName=Event.IniDCSGroup:getName()
|
||||||
Event.IniGroup=GROUP:FindByName(Event.IniDCSGroupName)
|
Event.IniGroup=GROUP:FindByName(Event.IniDCSGroupName)
|
||||||
@ -106176,6 +106177,9 @@ or Target:IsInstanceOf("SET_STATIC")
|
|||||||
or Target:IsInstanceOf("SCENERY")
|
or Target:IsInstanceOf("SCENERY")
|
||||||
or Target:IsInstanceOf("SET_SCENERY")then
|
or Target:IsInstanceOf("SET_SCENERY")then
|
||||||
auftrag=AUFTRAG.Type.BOMBING
|
auftrag=AUFTRAG.Type.BOMBING
|
||||||
|
elseif Target:IsInstanceOf("OPSZONE")
|
||||||
|
or Target:IsInstanceOf("SET_OPSZONE")then
|
||||||
|
auftrag=AUFTRAG.Type.CAPTUREZONE
|
||||||
end
|
end
|
||||||
if group then
|
if group then
|
||||||
local category=group:GetCategory()
|
local category=group:GetCategory()
|
||||||
@ -106208,6 +106212,26 @@ end
|
|||||||
end
|
end
|
||||||
return auftrag
|
return auftrag
|
||||||
end
|
end
|
||||||
|
function PLAYERTASK:_CheckCaptureOpsZoneSuccess(OpsZone,CaptureSquadGroupNamePrefix,Coalition,CheckClientInZone)
|
||||||
|
local isClientInZone=true
|
||||||
|
if CheckClientInZone then
|
||||||
|
isClientInZone=false
|
||||||
|
for _,client in ipairs(self:GetClientObjects())do
|
||||||
|
local clientCoord=client:GetCoordinate()
|
||||||
|
if OpsZone.zone:IsCoordinateInZone(clientCoord)then
|
||||||
|
isClientInZone=true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local isCaptureGroupInZone=false
|
||||||
|
OpsZone:GetScannedGroupSet():ForEachGroup(function(group)
|
||||||
|
if string.find(group:GetName(),CaptureSquadGroupNamePrefix)then
|
||||||
|
isCaptureGroupInZone=true
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
return OpsZone:GetOwner()==Coalition and isClientInZone and isCaptureGroupInZone
|
||||||
|
end
|
||||||
function PLAYERTASK:_SetController(Controller)
|
function PLAYERTASK:_SetController(Controller)
|
||||||
self:T(self.lid.."_SetController")
|
self:T(self.lid.."_SetController")
|
||||||
self.TaskController=Controller
|
self.TaskController=Controller
|
||||||
@ -106292,6 +106316,34 @@ end,task:GetTarget()
|
|||||||
)
|
)
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
function PLAYERTASK:AddOpsZoneCaptureSuccessCondition(CaptureSquadGroupNamePrefix,Coalition)
|
||||||
|
local task=self
|
||||||
|
task:AddConditionSuccess(
|
||||||
|
function(target)
|
||||||
|
if target:IsInstanceOf("OPSZONE")then
|
||||||
|
return task:_CheckCaptureOpsZoneSuccess(target,CaptureSquadGroupNamePrefix,Coalition,true)
|
||||||
|
elseif target:IsInstanceOf("SET_OPSZONE")then
|
||||||
|
local successes=0
|
||||||
|
local isClientInZone=false
|
||||||
|
target:ForEachZone(function(opszone)
|
||||||
|
if task:_CheckCaptureOpsZoneSuccess(opszone,CaptureSquadGroupNamePrefix,Coalition)then
|
||||||
|
successes=successes+1
|
||||||
|
end
|
||||||
|
for _,client in ipairs(task:GetClientObjects())do
|
||||||
|
local clientCoord=client:GetCoordinate()
|
||||||
|
if opszone.zone:IsCoordinateInZone(clientCoord)then
|
||||||
|
isClientInZone=true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
return successes==target:Count()and isClientInZone
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end,task:GetTarget()
|
||||||
|
)
|
||||||
|
return self
|
||||||
|
end
|
||||||
function PLAYERTASK:AddReconSuccessCondition(MinDistance)
|
function PLAYERTASK:AddReconSuccessCondition(MinDistance)
|
||||||
local task=self
|
local task=self
|
||||||
task:AddConditionSuccess(
|
task:AddConditionSuccess(
|
||||||
@ -106310,6 +106362,19 @@ return false
|
|||||||
end,task:GetTarget())
|
end,task:GetTarget())
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
function PLAYERTASK:AddTimeLimitFailureCondition(TimeLimit)
|
||||||
|
local task=self
|
||||||
|
TimeLimit=TimeLimit or 0
|
||||||
|
task.StartTime=-1
|
||||||
|
task:AddConditionFailure(
|
||||||
|
function()
|
||||||
|
if task.StartTime==-1 then
|
||||||
|
task.StartTime=timer.getTime()
|
||||||
|
end
|
||||||
|
return TimeLimit>0 and timer.getTime()-task.StartTime>TimeLimit
|
||||||
|
end)
|
||||||
|
return self
|
||||||
|
end
|
||||||
function PLAYERTASK:AddNextTaskAfterSuccess(Task)
|
function PLAYERTASK:AddNextTaskAfterSuccess(Task)
|
||||||
self:T(self.lid.."AddNextTaskAfterSuccess")
|
self:T(self.lid.."AddNextTaskAfterSuccess")
|
||||||
table.insert(self.NextTaskSuccess,Task)
|
table.insert(self.NextTaskSuccess,Task)
|
||||||
@ -106721,6 +106786,7 @@ PLAYERTASKCONTROLLER.Scores={
|
|||||||
[AUFTRAG.Type.RECON]=100,
|
[AUFTRAG.Type.RECON]=100,
|
||||||
[AUFTRAG.Type.ESCORT]=100,
|
[AUFTRAG.Type.ESCORT]=100,
|
||||||
[AUFTRAG.Type.CAP]=100,
|
[AUFTRAG.Type.CAP]=100,
|
||||||
|
[AUFTRAG.Type.CAPTUREZONE]=100,
|
||||||
}
|
}
|
||||||
PLAYERTASKCONTROLLER.SeadAttributes={
|
PLAYERTASKCONTROLLER.SeadAttributes={
|
||||||
SAM=GROUP.Attribute.GROUND_SAM,
|
SAM=GROUP.Attribute.GROUND_SAM,
|
||||||
@ -123137,7 +123203,7 @@ timer.scheduleFunction(os.remove,filename,timer.getTime()+1)
|
|||||||
timer.scheduleFunction(os.remove,filenvbs,timer.getTime()+1)
|
timer.scheduleFunction(os.remove,filenvbs,timer.getTime()+1)
|
||||||
self:T("MSRS vbs and batch file removed")
|
self:T("MSRS vbs and batch file removed")
|
||||||
elseif self.UsePowerShell==true then
|
elseif self.UsePowerShell==true then
|
||||||
local pwsh=string.format('powershell.exe -ExecutionPolicy Unrestricted -WindowStyle Hidden -Command "%s"',filename)
|
local pwsh=string.format('start /min "" powershell.exe -ExecutionPolicy Unrestricted -WindowStyle Hidden -Command "%s"',filename)
|
||||||
if string.len(pwsh)>255 then
|
if string.len(pwsh)>255 then
|
||||||
self:E("[MSRS] - pwsh string too long")
|
self:E("[MSRS] - pwsh string too long")
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user