From 095c36b3ba07d7da512b1d65b71d5950c9cf8ad9 Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Sat, 31 Dec 2022 12:24:49 +0100 Subject: [PATCH 1/6] #AWACS * Block Helos from getting CAP assignments --- Moose Development/Moose/Ops/Awacs.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Moose Development/Moose/Ops/Awacs.lua b/Moose Development/Moose/Ops/Awacs.lua index 4b682296b..48e744c5f 100644 --- a/Moose Development/Moose/Ops/Awacs.lua +++ b/Moose Development/Moose/Ops/Awacs.lua @@ -499,7 +499,7 @@ do -- @field #AWACS AWACS = { ClassName = "AWACS", -- #string - version = "0.2.51", -- #string + version = "0.2.52", -- #string lid = "", -- #string coalition = coalition.side.BLUE, -- #number coalitiontxt = "blue", -- #string @@ -917,7 +917,7 @@ AWACS.TaskStatus = { --@field #boolean FromAI ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --- TODO-List 0.2.51 +-- TODO-List 0.2.52 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- -- DONE - WIP - Player tasking, VID @@ -2393,7 +2393,7 @@ function AWACS:_GetIdlePilots() self:T("Adding AI with Callsign: "..entry.CallSign) AIPilots[#AIPilots+1] = _entry end - elseif entry.IsPlayer and not entry.Blocked then + elseif entry.IsPlayer and (not entry.Blocked) and (not entry.Group:IsHelicopter()) then if (not entry.HasAssignedTask) or overridetask then -- must be idle, or? -- check last assignment local TNow = timer.getTime() From 9a949c02c51be187d4f7ae09d990d2c7813cd781 Mon Sep 17 00:00:00 2001 From: Frank Date: Sat, 31 Dec 2022 12:35:48 +0100 Subject: [PATCH 2/6] OPS - Fixed bug task for recoverytanker mission - Improved capturezone auftrag --- Moose Development/Moose/Ops/ArmyGroup.lua | 6 ++++-- Moose Development/Moose/Ops/FlightGroup.lua | 2 +- Moose Development/Moose/Ops/OpsGroup.lua | 4 ++-- Moose Development/Moose/Ops/OpsZone.lua | 17 ++++++++++++++++- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/Moose Development/Moose/Ops/ArmyGroup.lua b/Moose Development/Moose/Ops/ArmyGroup.lua index 044f916f8..4fba93277 100644 --- a/Moose Development/Moose/Ops/ArmyGroup.lua +++ b/Moose Development/Moose/Ops/ArmyGroup.lua @@ -726,7 +726,7 @@ function ARMYGROUP:Status() local mission=self:GetMissionCurrent() -- If mission, check if DCS task needs to be updated. - if mission and mission.updateDCSTask and mission:GetGroupStatus(self)==AUFTRAG.GroupStatus.EXECUTING then + if mission and mission.updateDCSTask then if mission.type==AUFTRAG.Type.CAPTUREZONE then @@ -734,7 +734,9 @@ function ARMYGROUP:Status() local Task=mission:GetGroupWaypointTask(self) -- Update task: Engage or get new zone. - self:_UpdateTask(Task, mission) + if mission:GetGroupStatus(self)==AUFTRAG.GroupStatus.EXECUTING or mission:GetGroupStatus(self)==AUFTRAG.GroupStatus.STARTED then + self:_UpdateTask(Task, mission) + end end diff --git a/Moose Development/Moose/Ops/FlightGroup.lua b/Moose Development/Moose/Ops/FlightGroup.lua index 6bcfcd5d1..0fa1882dd 100644 --- a/Moose Development/Moose/Ops/FlightGroup.lua +++ b/Moose Development/Moose/Ops/FlightGroup.lua @@ -943,7 +943,7 @@ function FLIGHTGROUP:Status() local DCSTask=mission:GetDCSMissionTask() --DCS#Task -- Get task. - local Task=self:GetTaskByID(mission.auftragsnummer) + local Task=mission:GetGroupWaypointTask(self) -- Reset current orbit task. self.controller:resetTask() diff --git a/Moose Development/Moose/Ops/OpsGroup.lua b/Moose Development/Moose/Ops/OpsGroup.lua index 7fddf424d..706c35e46 100644 --- a/Moose Development/Moose/Ops/OpsGroup.lua +++ b/Moose Development/Moose/Ops/OpsGroup.lua @@ -4438,8 +4438,8 @@ function OPSGROUP:_UpdateTask(Task, Mission) self:EngageTarget(targetgroup) else - -- Error Message. - self:E(self.lid..string.format("ERROR: Current zone not captured but no target group could be found. This should NOT happen!")) + -- Debug info. + self:T(self.lid..string.format("Zone %s not captured but no target group could be found. Should be captured in the next zone evaluation.", zoneCurr:GetName())) end else diff --git a/Moose Development/Moose/Ops/OpsZone.lua b/Moose Development/Moose/Ops/OpsZone.lua index 6a4749248..831f2a1b8 100644 --- a/Moose Development/Moose/Ops/OpsZone.lua +++ b/Moose Development/Moose/Ops/OpsZone.lua @@ -1041,6 +1041,10 @@ function OPSZONE:Scan() -- Add unit to set. self.ScanUnitSet:AddUnit(unit) + -- Debug: Had cases where a (red) unit was clearly not inside the zone but the scan did find it! + --local inzone=unit:IsInZone(self.zone) + --unit:GetCoordinate():MarkToAll(string.format("Unit %s inzone=%s", unit:GetName(), tostring(inzone))) + -- Get group of unit. local group=unit:GetGroup() @@ -1120,7 +1124,18 @@ function OPSZONE:Scan() -- Debug info. if self.verbose>=3 then - local text=string.format("Scan result Nred=%d, Nblue=%d, Nneutral=%d", Nred, Nblu, Nnut) + local text=string.format("Scan result Nred=%d, Nblue=%d, Nneutral=%d", Nred, Nblu, Nnut) + if self.verbose>=4 then + for _,_unit in pairs(self.ScanUnitSet:GetSet()) do + local unit=_unit --Wrapper.Unit#UNIT + text=text..string.format("\nUnit %s coalition=%s", unit:GetName(), unit:GetCoalitionName()) + end + + for _,_group in pairs(self.ScanGroupSet:GetSet()) do + local group=_group --Wrapper.Group#GROUP + text=text..string.format("\nGroup %s coalition=%s", group:GetName(), group:GetCoalitionName()) + end + end self:I(self.lid..text) end From 0340d17ab887f5ab093317d7ec7c8dacb118d633 Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Sat, 31 Dec 2022 15:56:01 +0100 Subject: [PATCH 3/6] #PLAYERTASKCONTROLLER * honing the menu build a bit --- Moose Development/Moose/Ops/PlayerTask.lua | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/Moose Development/Moose/Ops/PlayerTask.lua b/Moose Development/Moose/Ops/PlayerTask.lua index 3485cd4c1..6297744d1 100644 --- a/Moose Development/Moose/Ops/PlayerTask.lua +++ b/Moose Development/Moose/Ops/PlayerTask.lua @@ -1443,7 +1443,7 @@ PLAYERTASKCONTROLLER.Messages = { --- PLAYERTASK class version. -- @field #string version -PLAYERTASKCONTROLLER.version="0.1.54" +PLAYERTASKCONTROLLER.version="0.1.55" --- Create and run a new TASKCONTROLLER instance. -- @param #PLAYERTASKCONTROLLER self @@ -2821,6 +2821,7 @@ function PLAYERTASKCONTROLLER:_JoinTask(Group, Client, Task, Force) Task:AddClient(Client) local joined = self.gettext:GetEntry("PILOTJOINEDTASK",self.locale) -- PILOTJOINEDTASK = "%s, %s. You have been assigned %s task %03d", + --self:I(string.format("Task %s | TaskType %s | Number %s | Type %s",self.MenuName or self.Name, Task.TTSType, tonumber(Task.PlayerTaskNr),type(Task.PlayerTaskNr))) local text = string.format(joined,ttsplayername, self.MenuName or self.Name, Task.TTSType, Task.PlayerTaskNr) self:T(self.lid..text) if not self.NoScreenOutput then @@ -3300,6 +3301,9 @@ function PLAYERTASKCONTROLLER:_BuildMenus(Client,enforced,fromsuccess) joinorabort = true end + local tasktypes = self:_GetAvailableTaskTypes() + local taskpertype = self:_GetTasksPerType() + for _,_client in pairs(clients) do if _client and _client:IsAlive() then local client = _client -- Wrapper.Client#CLIENT @@ -3348,6 +3352,7 @@ function PLAYERTASKCONTROLLER:_BuildMenus(Client,enforced,fromsuccess) --self.PlayerMenu[playername]:RemoveSubMenus() --oldmenu = self.PlayerMenu[playername] --self.PlayerMenu[playername] = nil + self.PlayerMenu[playername]:RemoveSubMenus() self.PlayerMenu[playername] = MENU_GROUP_DELAYED:New(group,menuname,self.MenuParent) self.PlayerMenu[playername]:SetTag(newtag) self.PlayerMenu[playername].PTTimeStamp = timer.getAbsTime() @@ -3394,8 +3399,6 @@ function PLAYERTASKCONTROLLER:_BuildMenus(Client,enforced,fromsuccess) local abort = MENU_GROUP_COMMAND_DELAYED:New(group,menuabort,active,self._AbortTask,self,group,client):SetTag(newtag) if self.activehasinfomenu and self.taskinfomenu then self:T("Building Active-Info Menus for "..playername) - local tasktypes = self:_GetAvailableTaskTypes() - local taskpertype = self:_GetTasksPerType() if self.PlayerInfoMenu[playername] then self.PlayerInfoMenu[playername]:RemoveSubMenus(nil,oldtag) end @@ -3407,10 +3410,14 @@ function PLAYERTASKCONTROLLER:_BuildMenus(Client,enforced,fromsuccess) --- -- JOIN TASK MENU --- - local tasktypes = self:_GetAvailableTaskTypes() - local taskpertype = self:_GetTasksPerType() local menujoin = self.gettext:GetEntry("MENUJOIN",self.locale) + + if self.PlayerJoinMenu[playername] then + self.PlayerJoinMenu[playername]:RemoveSubMenus(nil,oldtag) + end + local joinmenu = MENU_GROUP_DELAYED:New(group,menujoin,topmenu):SetTag(newtag) + self.PlayerJoinMenu[playername] = joinmenu local ttypes = {} local taskmenu = {} @@ -3467,6 +3474,7 @@ function PLAYERTASKCONTROLLER:_BuildMenus(Client,enforced,fromsuccess) --- if rebuilddone then self.PlayerMenu[playername]:RemoveSubMenus(nil,oldtag) + self.PlayerMenu[playername]:Set() self.PlayerMenu[playername]:Refresh() end end From daa60ac501030f337342e542c7b35f57e576c8f2 Mon Sep 17 00:00:00 2001 From: Thomas <72444570+Applevangelist@users.noreply.github.com> Date: Sat, 31 Dec 2022 18:01:28 +0100 Subject: [PATCH 4/6] Update Auftrag.lua --- Moose Development/Moose/Ops/Auftrag.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Moose Development/Moose/Ops/Auftrag.lua b/Moose Development/Moose/Ops/Auftrag.lua index d83278c19..ebdf8c55b 100644 --- a/Moose Development/Moose/Ops/Auftrag.lua +++ b/Moose Development/Moose/Ops/Auftrag.lua @@ -1295,7 +1295,7 @@ function AUFTRAG:NewCAP(ZoneCAP, Altitude, Speed, Coordinate, Heading, Leg, Targ end -- Create ORBIT first. - local mission=AUFTRAG:NewORBIT(Coordinate or ZoneCAP:GetCoordinate(), Altitude or 10000, Speed, Heading, Leg) + local mission=AUFTRAG:NewORBIT(Coordinate or ZoneCAP:GetCoordinate(), Altitude or 10000, Speed or 350, Heading, Leg) -- Mission type CAP. mission.type=AUFTRAG.Type.CAP @@ -1309,6 +1309,7 @@ function AUFTRAG:NewCAP(ZoneCAP, Altitude, Speed, Coordinate, Heading, Leg, Targ mission.missionTask=ENUMS.MissionTask.CAP mission.optionROE=ENUMS.ROE.OpenFire mission.optionROT=ENUMS.ROT.EvadeFire + mission.missionSpeed = UTILS.KnotsToAltKIAS(Speed or 350,Altitude) mission.categories={AUFTRAG.Category.AIRCRAFT} From b769568df19d6c0b0e110df0244e455d189f95cc Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Sat, 31 Dec 2022 18:02:15 +0100 Subject: [PATCH 5/6] #FG - let planes not limp around --- Moose Development/Moose/Ops/FlightGroup.lua | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Moose Development/Moose/Ops/FlightGroup.lua b/Moose Development/Moose/Ops/FlightGroup.lua index 0fa1882dd..f0b6f1bd7 100644 --- a/Moose Development/Moose/Ops/FlightGroup.lua +++ b/Moose Development/Moose/Ops/FlightGroup.lua @@ -943,7 +943,7 @@ function FLIGHTGROUP:Status() local DCSTask=mission:GetDCSMissionTask() --DCS#Task -- Get task. - local Task=mission:GetGroupWaypointTask(self) + local Task=self:GetTaskByID(mission.auftragsnummer) -- Reset current orbit task. self.controller:resetTask() @@ -3773,9 +3773,16 @@ function FLIGHTGROUP:AddWaypoint(Coordinate, Speed, AfterWaypointWithID, Altitud -- Set waypoint index. local wpnumber=self:GetWaypointIndexAfterID(AfterWaypointWithID) - + -- Speed in knots. - Speed=Speed or self:GetSpeedCruise() + if not Speed or Speed < 10 then + + local mission = self:GetMissionCurrent() -- Ops.Auftrag#AUFTRAG + local speed = mission.missionSpeed + Speed = speed or self:GetSpeedCruise() + + end + --Speed=Speed or self:GetSpeedCruise() -- Alt type default is barometric (ASL). For helos we use radar (AGL). local alttype=COORDINATE.WaypointAltType.BARO From e3f9a27f879aeeaaa7d5d07499b6c30359ec4b06 Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Sat, 31 Dec 2022 18:07:35 +0100 Subject: [PATCH 6/6] # FF changes from today --- Moose Development/Moose/Ops/FlightGroup.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Moose Development/Moose/Ops/FlightGroup.lua b/Moose Development/Moose/Ops/FlightGroup.lua index f0b6f1bd7..12f2f05db 100644 --- a/Moose Development/Moose/Ops/FlightGroup.lua +++ b/Moose Development/Moose/Ops/FlightGroup.lua @@ -943,7 +943,7 @@ function FLIGHTGROUP:Status() local DCSTask=mission:GetDCSMissionTask() --DCS#Task -- Get task. - local Task=self:GetTaskByID(mission.auftragsnummer) + local Task=mission:GetGroupWaypointTask(self) -- Reset current orbit task. self.controller:resetTask()