asdfl;kasjdflkas

This commit is contained in:
iTracerFacer 2024-11-17 09:03:52 -06:00
parent 57f895c881
commit 4519810d86
8 changed files with 175 additions and 57 deletions

View File

@ -113,12 +113,6 @@ blue_ctld.EngineerSearch = 2000 -- Search radius for engineers.
["CH-47Fbl1"] = {type="CH-47Fbl1", crates=true, troops=true, cratelimit = 4, trooplimit = 31, length = 20, cargoweightlimit = 8000},
--]]
-- Custom Capabilities
blue_ctld:SetUnitCapabilities("UH-1H", true, true, 1, 10, 15, 6000)
red_ctld:SetUnitCapabilities("UH-1H", true, true, 1, 10, 15, 6000)
-- Start the CTLD Instances
red_ctld:Start(5)
blue_ctld:Start(5)
@ -143,27 +137,27 @@ red_ctld:AddTroopsCargo("Anti-Air (4)",{"Red-AA"},CTLD_CARGO.Enum.TROOPS, 4, 80,
blue_ctld:AddTroopsCargo("Anti-Air(4)",{"Blue-AA"},CTLD_CARGO.Enum.TROOPS, 4, 80, 10)
-- Add Engineers
red_ctld:AddTroopsCargo("Engineer Team (3)",{"Red-Eng"},CTLD_CARGO.Enum.ENGINEERS, 3, 80)
blue_ctld:AddTroopsCargo("Engineer Team (3)",{"Blue-Eng"},CTLD_CARGO.Enum.ENGINEERS, 3, 80)
--red_ctld:AddTroopsCargo("Engineer Team (3)",{"Red-Eng"},CTLD_CARGO.Enum.ENGINEERS, 3, 80)
--blue_ctld:AddTroopsCargo("Engineer Team (3)",{"Blue-Eng"},CTLD_CARGO.Enum.ENGINEERS, 3, 80)
-- Add Ammo Trucks
red_ctld:AddCratesCargo("Ammo Truck",{"Red-Ammo"},CTLD_CARGO.Enum.VEHICLE, 2, 2775, 10)
blue_ctld:AddCratesCargo("Ammo Truck",{"Blue-Ammo"},CTLD_CARGO.Enum.VEHICLE, 2, 2775, 10)
red_ctld:AddCratesCargo("Ammo Truck",{"Red-Ammo"},CTLD_CARGO.Enum.VEHICLE, 2, 500, 10)
blue_ctld:AddCratesCargo("Ammo Truck",{"Blue-Ammo"},CTLD_CARGO.Enum.VEHICLE, 2, 500, 10)
-- Add JTACs
--red_ctld:AddCratesCargo("JTAC",{"Red-JTAC"},CTLD_CARGO.Enum.VEHICLE, 1, 2775, 10) -- no soup for you commie bitches!
blue_ctld:AddCratesCargo("JTAC",{"Blue-JTAC"},CTLD_CARGO.Enum.VEHICLE, 1, 2775, 10)
blue_ctld:AddCratesCargo("JTAC",{"Blue-JTAC"},CTLD_CARGO.Enum.VEHICLE, 1, 500, 10)
-- Add HUMVEE
blue_ctld:AddCratesCargo("HUMVEE",{"Blue-HUMVEE"},CTLD_CARGO.Enum.VEHICLE, 1, 3000, 25)
blue_ctld:AddCratesCargo("HUMVEE",{"Blue-HUMVEE"},CTLD_CARGO.Enum.VEHICLE, 1, 500, 25)
-- Add Tanks
red_ctld:AddCratesCargo("T-90 (20000kg)",{"Red-T90"},CTLD_CARGO.Enum.VEHICLE, 1, 95000, 25)
blue_ctld:AddCratesCargo("M1A2 (20000kg)",{"Blue-M1A2"},CTLD_CARGO.Enum.VEHICLE, 1, 95000, 25)
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)
-- Add FOBs
red_ctld:AddCratesCargo("Forward Ops Base (500kg)",{"Red-FOB"},CTLD_CARGO.Enum.FOB, 4, 500, 8)
blue_ctld:AddCratesCargo("Forward Ops Base (500kg)",{"Blue-FOB"},CTLD_CARGO.Enum.FOB, 4, 500, 8)
red_ctld:AddCratesCargo("Forward Ops Base",{"Red-FOB"},CTLD_CARGO.Enum.FOB, 4, 500, 8)
blue_ctld:AddCratesCargo("Forward Ops Base",{"Blue-FOB"},CTLD_CARGO.Enum.FOB, 4, 500, 8)
-- AA Crates
red_ctld:AddCratesCargo("SA-8",{"SA8"},CTLD_CARGO.Enum.CRATE, 4, 500, 10)

View File

@ -0,0 +1,90 @@
-- Define the red and blue zones
local redZones = {
ZONE:New("FrontLine1"),
ZONE:New("FrontLine2"),
ZONE:New("FrontLine3"),
ZONE:New("FrontLine4"),
ZONE:New("FrontLine5"),
ZONE:New("FrontLine6"),
ZONE:New("FrontLine7"),
ZONE:New("FrontLine8")
}
local blueZones = {
ZONE:New("FrontLine9"),
ZONE:New("FrontLine10"),
ZONE:New("FrontLine11"),
ZONE:New("FrontLine12"),
ZONE:New("FrontLine13"),
ZONE:New("FrontLine14"),
ZONE:New("FrontLine15"),
ZONE:New("FrontLine16")
}
-- Combine the redZones and blueZones tables into one table
local combinedZones = {}
for _, zone in ipairs(redZones) do
table.insert(combinedZones, zone)
end
for _, zone in ipairs(blueZones) do
table.insert(combinedZones, zone)
end
-- Create a detection area using the Blue_Drone group and the combined zones
local droneDetection = DETECTION_UNITS:New(Blue_Drone)
droneDetection:SetAcceptZones(combinedZones)
droneDetection:Start()
-- Function to present target options to the player
local function RequestTargetOptions()
if not droneDetection then
MESSAGE:New("Drone detection is not initialized", 10):ToAll()
return
end
local detectedTargets = droneDetection:GetDetectedSet()
if not detectedTargets or #detectedTargets == 0 then
MESSAGE:New("No targets detected", 10):ToAll()
return
end
MESSAGE:New("Targets Detected, use menu again to select.", 10):ToAll()
local targetMenu = MENU_COALITION:New(coalition.side.BLUE, "Select Target", nil)
for i, target in ipairs(detectedTargets) do
local targetName = target:GetName()
MENU_COALITION_COMMAND:New(coalition.side.BLUE, targetName, targetMenu, function()
PresentActionOptions(target)
end)
end
end
-- Function to present action options for a selected target
local function PresentActionOptions(target)
local actionMenu = MENU_COALITION:New(coalition.side.BLUE, "Select Action for " .. target:GetName(), nil)
MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Smoke (Red)", actionMenu, function()
target:SmokeTarget(SMOKECOLOR.Red)
end)
MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Smoke (Green)", actionMenu, function()
target:SmokeTarget(SMOKECOLOR.Green)
end)
MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Lase (Code 1688)", actionMenu, function()
target:LaseTarget(1688)
end)
MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Flare (Red)", actionMenu, function()
target:FlareTarget(FLARECOLOR.Red)
end)
MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Flare (Green)", actionMenu, function()
target:FlareTarget(FLARECOLOR.Green)
end)
end
-- Create the main mission menu
missionMenu = MENU_MISSION:New("Mission Menu")
-- Create the Drone Menu for the player to interact with the drone
local DroneMenu = MENU_COALITION:New(coalition.side.BLUE, "Drone Ops", missionMenu)
MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Request Target Options", DroneMenu, RequestTargetOptions)

View File

@ -139,16 +139,20 @@ local redZones = {
ZONE:New("FrontLine3"),
ZONE:New("FrontLine4"),
ZONE:New("FrontLine5"),
ZONE:New("FrontLine6")
ZONE:New("FrontLine6"),
ZONE:New("FrontLine7"),
ZONE:New("FrontLine8")
}
local blueZones = {
ZONE:New("FrontLine7"),
ZONE:New("FrontLine8"),
ZONE:New("FrontLine9"),
ZONE:New("FrontLine10"),
ZONE:New("FrontLine11"),
ZONE:New("FrontLine12")
ZONE:New("FrontLine12"),
ZONE:New("FrontLine13"),
ZONE:New("FrontLine14"),
ZONE:New("FrontLine15"),
ZONE:New("FrontLine16")
}
-- Define warehouses for each side. These warehouses will be used to calculate the spawn frequency of ground units.
@ -317,15 +321,19 @@ function ZONE_CAPTURE_COALITION:OnEnterGuarded(From, Event, To)
-- Draw zone DARK BLUE for guarded
self:UndrawZone()
self:DrawZone(-1, {0, 0, 0.5}, 2) -- Draw the zone on the map for 30 seconds, dark blue color, and thickness 2
US_CC:MessageTypeToCoalition(string.format("%s is under protection of the USA", self:GetZoneName()), MESSAGE.Type.Information)
RU_CC:MessageTypeToCoalition(string.format("%s is under protection of the USA", self:GetZoneName()), MESSAGE.Type.Information)
if ENABLE_CAPTURE_ZONE_MESSAGES then
US_CC:MessageTypeToCoalition(string.format("%s is under protection of the USA", self:GetZoneName()), MESSAGE.Type.Information)
RU_CC:MessageTypeToCoalition(string.format("%s is under protection of the USA", self:GetZoneName()), MESSAGE.Type.Information)
end
else
self:Smoke(SMOKECOLOR.Red)
-- Draw zone DARK RED for guarded
self:UndrawZone()
self:DrawZone(-1, {0.5, 0, 0}, 2) -- Draw the zone on the map for 30 seconds, dark red color, and thickness 2
RU_CC:MessageTypeToCoalition(string.format("%s is under protection of Russia", self:GetZoneName()), MESSAGE.Type.Information)
US_CC:MessageTypeToCoalition(string.format("%s is under protection of Russia", self:GetZoneName()), MESSAGE.Type.Information)
if ENABLE_CAPTURE_ZONE_MESSAGES then
RU_CC:MessageTypeToCoalition(string.format("%s is under protection of Russia", self:GetZoneName()), MESSAGE.Type.Information)
US_CC:MessageTypeToCoalition(string.format("%s is under protection of Russia", self:GetZoneName()), MESSAGE.Type.Information)
end
end
end
end
@ -340,8 +348,10 @@ function ZONE_CAPTURE_COALITION:OnEnterEmpty(From, Event, To)
self:Smoke(SMOKECOLOR.Green)
self:UndrawZone()
self:DrawZone(-1, {0, 1, 0}, 2) -- Draw the zone on the map for 30 seconds, green color, and thickness 2
US_CC:MessageTypeToCoalition(string.format("%s is now empty", self:GetZoneName()), MESSAGE.Type.Information)
RU_CC:MessageTypeToCoalition(string.format("%s is now empty", self:GetZoneName()), MESSAGE.Type.Information)
if ENABLE_CAPTURE_ZONE_MESSAGES then
US_CC:MessageTypeToCoalition(string.format("%s is now empty", self:GetZoneName()), MESSAGE.Type.Information)
RU_CC:MessageTypeToCoalition(string.format("%s is now empty", self:GetZoneName()), MESSAGE.Type.Information)
end
end
end
@ -358,14 +368,18 @@ function ZONE_CAPTURE_COALITION:OnEnterAttacked(From, Event, To)
-- Draw the zone orange for contested
self:UndrawZone()
self:DrawZone(-1, {1, 0.5, 0}, 2) -- Draw the zone on the map for 30 seconds, orange color, and thickness 2
US_CC:MessageTypeToCoalition(string.format("%s is under attack by Russia", self:GetZoneName()), MESSAGE.Type.Information)
RU_CC:MessageTypeToCoalition(string.format("%s is attacking the USA", self:GetZoneName()), MESSAGE.Type.Information)
if ENABLE_CAPTURE_ZONE_MESSAGES then
US_CC:MessageTypeToCoalition(string.format("%s is under attack by Russia", self:GetZoneName()), MESSAGE.Type.Information)
RU_CC:MessageTypeToCoalition(string.format("%s is attacking the USA", self:GetZoneName()), MESSAGE.Type.Information)
end
else
self:Smoke(SMOKECOLOR.Red)
self:UndrawZone()
self:DrawZone(-1, {1, 0.5, 0}, 2) -- Draw the zone on the map for 30 seconds, orange color, and thickness 2
RU_CC:MessageTypeToCoalition(string.format("%s is under attack by the USA", self:GetZoneName()), MESSAGE.Type.Information)
US_CC:MessageTypeToCoalition(string.format("%s is attacking Russia", self:GetZoneName()), MESSAGE.Type.Information)
if ENABLE_CAPTURE_ZONE_MESSAGES then
RU_CC:MessageTypeToCoalition(string.format("%s is under attack by the USA", self:GetZoneName()), MESSAGE.Type.Information)
US_CC:MessageTypeToCoalition(string.format("%s is attacking Russia", self:GetZoneName()), MESSAGE.Type.Information)
end
end
end
end
@ -380,8 +394,10 @@ function ZONE_CAPTURE_COALITION:OnEnterNeutral(From, Event, To)
self:Smoke(SMOKECOLOR.Green)
self:UndrawZone()
self:DrawZone(-1, {0, 1, 0}, 2) -- Draw the zone on the map for 30 seconds, green color, and thickness 2
US_CC:MessageTypeToCoalition(string.format("%s is now neutral", self:GetZoneName()), MESSAGE.Type.Information)
RU_CC:MessageTypeToCoalition(string.format("%s is now neutral", self:GetZoneName()), MESSAGE.Type.Information)
if ENABLE_CAPTURE_ZONE_MESSAGES then
US_CC:MessageTypeToCoalition(string.format("%s is now neutral", self:GetZoneName()), MESSAGE.Type.Information)
RU_CC:MessageTypeToCoalition(string.format("%s is now neutral", self:GetZoneName()), MESSAGE.Type.Information)
end
end
end
@ -897,10 +913,16 @@ local function checkWinCondition()
SOUND:New("MotherRussia.ogg"):ToAll()
return true
end
return false
end
end
-- Function to toggle capture zone messages
local function ToggleCaptureZoneMessages()
ENABLE_CAPTURE_ZONE_MESSAGES = not ENABLE_CAPTURE_ZONE_MESSAGES
local status = ENABLE_CAPTURE_ZONE_MESSAGES and "enabled" or "disabled"
MESSAGE:New("Capture zone messages are now " .. status, 15):ToAll()
end
-- Timer function to periodically check the win condition
local function monitorWinCondition()
if not checkWinCondition() then
@ -918,8 +940,17 @@ SCHEDULER:New(nil, MonitorWarehouses, {}, 0, 120)
-- Scheduler to assign tasks to groups periodically
SCHEDULER:New(nil, AssignTasksToGroups, {}, 0, ASSIGN_TASKS_SCHED) -- Check every 600 seconds (10 minutes) - Adjust as needed
-- Create a mission menu
local missionMenu = MENU_MISSION:New("Warehouse Monitoring")
-- Add a menu item to run the MonitorWarehouses function
MENU_MISSION_COMMAND:New("Check Warehouse Status", missionMenu, MonitorWarehouses)
-- Add a menu item to toggle capture zone messages under the sub menu
MENU_MISSION_COMMAND:New("Toggle Capture Zone Messages", missionMenu, ToggleCaptureZoneMessages)

View File

@ -95,6 +95,10 @@ local RED_AA_ZONES = {
-- Schedule RED AA spawns using the calculated frequencies
-- Must allow enough room for an entire group to spawn. If the group only has 1 unit and you put 5, 5 will spawn,
-- but if the group has 5 units, and you put 5, only 1 will spawn..if you only put 4, it will never spawn.
-- If you put 10, 2 of them will spawn, etc etc.
RED_SA08 = SPAWN:New("RED EWR SA08")
:InitRandomizeZones(RED_AA_ZONES)
:InitLimit(5, 5)
@ -112,23 +116,18 @@ RED_SA11 = SPAWN:New("RED EWR AA SA112-1")
:InitLimit(48, 48)
:SpawnScheduled(1, 0.5)
-- There are 12 units in this group. Need space for each one in the numbers. So if I want 4 SA11s i'm just rounding up to 48
-- There are 11 units in this group. Need space for each one in the numbers. So if I want 4 SA11s i'm just rounding up to 44
RED_SA06 = SPAWN:New("RED EWR SA6")
:InitRandomizeZones(RED_AA_ZONES)
:InitLimit(48, 48)
:InitLimit(44, 44)
:SpawnScheduled(1, 0.5)
-- There are 12 units in this group. Need space for each one in the numbers. So if I want 4 SA11s i'm just rounding up to 48
RED_SA02 = SPAWN:New("RED EWR SA2")
:InitRandomizeZones(RED_AA_ZONES)
:InitLimit(48, 48)
:InitLimit(90, 90)
:SpawnScheduled(1, 0.5)
-- Setup AI A2A Dispatchers
--Red
--Blue
-- Setup Air Dispatchers for RED and BLUE
BLUEBorderZone = ZONE_POLYGON:New( "BLUE BORDER", GROUP:FindByName( "BLUE BORDER" ) )
BLUEA2ADispatcher = AI_A2A_GCICAP:New( { "BLUE EWR" }, { "FIGHTER SWEEP BLUE" }, { "BLUE BORDER" }, BLUEBorderZone )
BLUEA2ADispatcher:SetDefaultLandingAtEngineShutdown()
@ -171,10 +170,11 @@ BostDispatcher:SetDefaultFuelThreshold( 0.20 )
BostDispatcher:SetRefreshTimeInterval( 300 )
BostDispatcher:SetDefaultOverhead(BlueA2ADefaultOverhead)
-- There are 12 units in this group. Need space for each one in the numbers. So if I want 4 SA11s i'm just rounding up to 48
Blue_Drone = SPAWN:New("BLUE DRONE")
:InitLimit(1, 25)
:SpawnScheduled(600, 0.5)
:InitLimit(1, 99)
:SpawnScheduled(1, 0.5)
-- Create the main mission menu.
missionMenu = MENU_MISSION:New("Mission Menu")

View File

@ -69,7 +69,7 @@ function Blue_IntelSoundSettingOn()
Blue_Intel_Sound_Setting = true
end
local INTELMenu = MENU_COALITION:New(coalition.side.BLUE,"INTEL HQ")
local INTELMenu = MENU_COALITION:New(coalition.side.BLUE,"INTEL HQ", missionMenu)
MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Display Messages (ON)", INTELMenu, Blue_IntelMessageSettingOn)
MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Display Messages (OFF)", INTELMenu, Blue_IntelMessageSettingOff)
MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Disable Morse Code Sound", INTELMenu, Blue_IntelSoundSettingOff)
@ -135,8 +135,11 @@ function Red_IntelSoundSettingOn()
Red_Intel_Sound_Setting = true
end
local RedINTELMenu = MENU_COALITION:New(coalition.side.RED,"INTEL HQ")
MENU_COALITION_COMMAND:New(coalition.side.RED, "Dispaly Messages (ON)",RedINTELMenu,Red_IntelMessageSettingOn)
MENU_COALITION_COMMAND:New(coalition.side.RED, "Dispaly Messages (OFF)",RedINTELMenu,Red_IntelMessageSettingOff)
-- Create the "INTEL HQ" submenu under "Tanker & Other Settings"
local RedINTELMenu = MENU_COALITION:New(coalition.side.RED, "INTEL HQ", missionMenu)
-- Add menu items to the "INTEL HQ" submenu
MENU_COALITION_COMMAND:New(coalition.side.RED, "Display Messages (ON)", RedINTELMenu, Red_IntelMessageSettingOn)
MENU_COALITION_COMMAND:New(coalition.side.RED, "Display Messages (OFF)", RedINTELMenu, Red_IntelMessageSettingOff)
MENU_COALITION_COMMAND:New(coalition.side.RED, "Disable Morse Code Sound", RedINTELMenu, Red_IntelSoundSettingOff)
MENU_COALITION_COMMAND:New(coalition.side.RED, "Enable Morse Code Sound", RedINTELMenu, Red_IntelSoundSettingOn)
MENU_COALITION_COMMAND:New(coalition.side.RED, "Enable Morse Code Sound", RedINTELMenu, Red_IntelSoundSettingOn)

View File

@ -45,7 +45,7 @@ function SpawnTankerMPRS()
end
-- Create a mission menu for requesting the tankers
MenuCoalitionBlue = MENU_COALITION:New(coalition.side.BLUE, "Request TANKER")
MenuCoalitionBlue = MENU_COALITION:New(coalition.side.BLUE, "Request TANKER", missionMenu)
MenuCoalitionBlueTanker = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Launch TANKER 135", MenuCoalitionBlue, SpawnTanker)
MenuCoalitionBlueTankerMPRS = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Launch TANKER 135 MPRS", MenuCoalitionBlue, SpawnTankerMPRS)