-- ***************************************************************************** -- ** Set_Client ** -- ********************************************************* Set_CLIENT = SET_CLIENT:New():FilterOnce() Set_CLIENT:HandleEvent(EVENTS.Refueling) Set_CLIENT:HandleEvent(EVENTS.RefuelingStop) Set_CLIENT:HandleEvent(EVENTS.PlayerEnterAircraft) function Set_CLIENT:OnEventPlayerEnterAircraft(EventData) if (EventData.IniGroup) then local clientSetting = SETTINGS:Set( EventData.IniPlayerName) clientSetting:SetImperial() clientSetting:SetA2G_MGRS() clientSetting:SetMenutextShort(true) if type(InterceptArray) == 'table' then for index, objIntercept in ipairs(InterceptArray) do if (objIntercept.menus[EventData.IniUnit:GetCoalition()]) then MENU_GROUP_COMMAND:New( EventData.IniGroup, "High Aspect", objIntercept.menus[EventData.IniUnit:GetCoalition()], StartInterceptTraining, {EventData.IniUnit:GetName(),index,-20,20} ) MENU_GROUP_COMMAND:New( EventData.IniGroup, "Medium Aspect Left", objIntercept.menus[EventData.IniUnit:GetCoalition()], StartInterceptTraining, {EventData.IniUnit:GetName(),index,20,50} ) MENU_GROUP_COMMAND:New( EventData.IniGroup, "Medium Aspect Right", objIntercept.menus[EventData.IniUnit:GetCoalition()], StartInterceptTraining, {EventData.IniUnit:GetName(),index,-50,-20} ) MENU_GROUP_COMMAND:New( EventData.IniGroup, "Low Aspect Left", objIntercept.menus[EventData.IniUnit:GetCoalition()], StartInterceptTraining, {EventData.IniUnit:GetName(),index,50,80} ) MENU_GROUP_COMMAND:New( EventData.IniGroup, "Low Aspect Right", objIntercept.menus[EventData.IniUnit:GetCoalition()], StartInterceptTraining, {EventData.IniUnit:GetName(),index,-80,-50} ) end end end jtff_log.debug(string.format("Add QRA Menu for group [%s], player name [%s]",EventData.IniGroupName , EventData.IniPlayerName),"QRA") if type(QRAArray) == 'table' then for index, objQRA in ipairs(QRAArray) do if (MenuCoalitionQRA[EventData.IniUnit:GetCoalition()]) and (objQRA.customconfig.type == JTFF_QRA.Type.TangoAuto) then objQRA.menu[EventData.IniUnit:GetCoalition()] = MENU_GROUP_COMMAND:New( EventData.IniGroup, "Trigger " .. objQRA.customconfig.name, MenuCoalitionQRA[EventData.IniUnit:GetCoalition()], QRATrigger, { objQRA, EventData.IniUnit:GetName(), index, } ) end end end jtff_log.debug(string.format("Add Tanker Menu for group [%s], player name [%s]",EventData.IniGroupName , EventData.IniPlayerName),"TANKER") if EventData.IniUnit:GetCoalition() == coalition.side.BLUE then MENU_GROUP_COMMAND:New( EventData.IniGroup, "Nearest Tanker Info", MenuCoalitionTankerBlue, NearestTankerInfo, { EventData.IniUnit, EventData.IniGroup} ) MENU_GROUP_COMMAND:New( EventData.IniGroup, "All Tankers Info", MenuCoalitionTankerBlue, AllTankersInfo, {EventData.IniUnit,EventData.IniGroup} ) else MENU_GROUP_COMMAND:New( EventData.IniGroup, "Nearest Tanker Info", MenuCoalitionTankerRed, NearestTankerInfo, { EventData.IniUnit, EventData.IniGroup} ) MENU_GROUP_COMMAND:New( EventData.IniGroup, "All Tankers Info", MenuCoalitionTankerRed, AllTankersInfo, {EventData.IniUnit,EventData.IniGroup} ) end local GroupMenu = MENU_GROUP:New( EventData.IniGroup, "My Group settings" ) jtff_log.debug(string.format("Add Immortal Menu for group [%s], player name [%s]",EventData.IniGroupName , EventData.IniPlayerName),"GENERAL") BASE:SetState( EventData.IniGroup, "isImmortal", false ) MENU_GROUP_COMMAND:New( EventData.IniGroup, "Switch immortal status", GroupMenu, switchGroupImmortalStatus, EventData.IniGroup ) if #AIRBOSSArray > 0 then MENU_GROUP_COMMAND:New( EventData.IniGroup, "Switch Airboss subtitles", GroupMenu, switchGroupAirbossSubtitlesStatus, EventData.IniGroup ) end end end function Set_CLIENT:OnEventRefueling(EventData) if (EventData.initiator) then local client = CLIENT:Find(EventData.initiator) local clientUnit = UNIT:Find(EventData.initiator) local clientFuel = clientUnit:GetFuel() * clientUnit:GetDesc().fuelMassMax local tankerUnit = getNearestTankerfromPlayerUnit(clientUnit) local tankerUnitName = 'unknown' if (type(tankerUnit) ~= 'nil') then tankerUnitName = tankerUnit:GetName() end jtff_log.trace(string.format("[%s] Start to refuel at the tanker [%s], current fuel : %.0f Lbs",client:GetPlayer() , tankerUnitName, UTILS.kg2lbs(clientFuel)),"TANKER") BASE:SetState( client, "Fuel", clientFuel ) end end function Set_CLIENT:OnEventRefuelingStop(EventData) if (EventData.initiator) then local client = CLIENT:Find(EventData.initiator) local clientUnit = UNIT:Find(EventData.initiator) local clientFuel = clientUnit:GetFuel() * clientUnit:GetDesc().fuelMassMax local tankerUnit = getNearestTankerfromPlayerUnit(clientUnit) local tankerUnitName = 'unknown' if (type(tankerUnit) ~= 'nil') then tankerUnitName = tankerUnit:GetName() end local clientFuelTaken = clientFuel - BASE:GetState(client,"Fuel") BASE:SetState( client, "Fuel", clientFuel ) jtff_log.trace(string.format("[%s] Stop to refuel at the tanker [%s], taken %.0f Lbs",client:GetPlayer() , tankerUnitName, UTILS.kg2lbs(clientFuelTaken)),"TANKER") if (type(dcsbot) ~= 'nil') then local title = string.format('End of Air refuel !') local description = string.format("[%s] Stop to refuel at the tanker [%s], taken %.0f Lbs",client:GetPlayer() , tankerUnitName, UTILS.kg2lbs(clientFuelTaken)) local img = 'https://cdn10.picryl.com/photo/2004/10/03/a-us-navy-usn-f-14b-tomcat-aircraft-assigned-to-fighter-squadron-one-zero-three-f5f749-1024.jpg' local fields = { ['Pilot'] = client:GetPlayer(), ['Tanker'] = tankerUnitName, ['RefuelQty'] = UTILS.kg2lbs(clientFuelTaken) } local footer = 'Sorry, tomcats took it all again...' dcsbot.sendEmbed(title, description, img, fields, footer) end end end Set_CLIENT_Bleu = SET_CLIENT:New():FilterCoalitions(coalition.side.BLUE):FilterOnce() jtff_log.debug(string.format("Nbre Blue Client : %i", Set_CLIENT_Bleu:Count()),"GENERAL") Set_CLIENT_Red = SET_CLIENT:New():FilterCoalitions(coalition.side.RED):FilterOnce() jtff_log.debug(string.format("Nbre Red Client : %i", Set_CLIENT_Red:Count()),"GENERAL")