From 97809cdb6568f440f1a0986217e15d210ab2e258 Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Thu, 14 Sep 2023 12:35:43 +0200 Subject: [PATCH] #PLAYERTASKCONTROLLER * Fix a problem that sometimes the object event is called prior to the SET_CLIENT event for players joining, leading to false negatives on specifically filtered SET_CLIENT objects --- Moose Development/Moose/Core/Set.lua | 8 +++++--- Moose Development/Moose/Ops/PlayerTask.lua | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Moose Development/Moose/Core/Set.lua b/Moose Development/Moose/Core/Set.lua index 60236095d..056ce9e58 100644 --- a/Moose Development/Moose/Core/Set.lua +++ b/Moose Development/Moose/Core/Set.lua @@ -860,8 +860,10 @@ do -- SET_BASE self:F3( Object ) local outcome = false local name = Object:GetName() + --self:I("SET_BASE: Objectname = "..name) self:ForEach( function(object) + --self:I("SET_BASE: In set objectname = "..object:GetName()) if object:GetName() == name then outcome = true end @@ -4330,7 +4332,6 @@ do -- SET_CLIENT function SET_CLIENT:FilterStart() if _DATABASE then - self:_FilterStart() self:HandleEvent( EVENTS.Birth, self._EventOnBirth ) self:HandleEvent( EVENTS.Dead, self._EventOnDeadOrCrash ) self:HandleEvent( EVENTS.Crash, self._EventOnDeadOrCrash ) @@ -4339,6 +4340,7 @@ do -- SET_CLIENT local timing = self.ZoneTimerInterval or 30 self.ZoneTimer:Start(timing,timing) end + self:_FilterStart() end return self @@ -4574,9 +4576,9 @@ do -- SET_CLIENT if self.Filter.Callsigns then local MClientCallsigns = false local callsign = MClient:GetCallsign() - --self:T(callsign) + --self:I(callsign) for _,_Callsign in pairs(self.Filter.Callsigns) do - if callsign and string.find(callsign,_Callsign) then + if callsign and string.find(callsign,_Callsign,1,true) then MClientCallsigns = true end end diff --git a/Moose Development/Moose/Ops/PlayerTask.lua b/Moose Development/Moose/Ops/PlayerTask.lua index 190bc8976..15c2581ff 100644 --- a/Moose Development/Moose/Ops/PlayerTask.lua +++ b/Moose Development/Moose/Ops/PlayerTask.lua @@ -98,7 +98,7 @@ PLAYERTASK = { --- PLAYERTASK class version. -- @field #string version -PLAYERTASK.version="0.1.19" +PLAYERTASK.version="0.1.20" --- Generic task condition. -- @type PLAYERTASK.Condition @@ -2195,7 +2195,8 @@ function PLAYERTASKCONTROLLER:_EventHandler(EventData) end elseif EventData.id == EVENTS.PlayerEnterAircraft and EventData.IniCoalition == self.Coalition then if EventData.IniPlayerName and EventData.IniGroup then - if self.IsClientSet and self.ClientSet:IsNotInSet(CLIENT:FindByName(EventData.IniUnitName)) then + --if self.IsClientSet and self.ClientSet:IsNotInSet(CLIENT:FindByName(EventData.IniUnitName)) then + if self.IsClientSet and (not self.ClientSet:IsIncludeObject(CLIENT:FindByName(EventData.IniUnitName))) then self:T(self.lid.."Client not in SET: "..EventData.IniPlayerName) return self end @@ -4063,7 +4064,8 @@ function PLAYERTASKCONTROLLER:onafterStart(From, Event, To) self:HandleEvent(EVENTS.Ejection, self._EventHandler) self:HandleEvent(EVENTS.Crash, self._EventHandler) self:HandleEvent(EVENTS.PilotDead, self._EventHandler) - self:HandleEvent(EVENTS.PlayerEnterAircraft, self._EventHandler) + self:HandleEvent(EVENTS.PlayerEnterAircraft, self._EventHandler) + self:SetEventPriority(5) return self end