mirror of
https://github.com/iTracerFacer/DCS_MissionDev.git
synced 2025-12-03 04:14:46 +00:00
yeah
This commit is contained in:
parent
f084e5e815
commit
06413684ca
@ -1,8 +1,16 @@
|
||||
-- This script takes Layouts orginally created by Redkite: https://www.youtube.com/user/RedKiteRender/
|
||||
-- and rotates through the layouts to spawn them on the carrier deck.
|
||||
-- Adds a menu item to clear the deck of all spawned objects.
|
||||
-- Adds menu items to spawn the layouts on the deck.
|
||||
|
||||
local RotateLayoutInterval = 900 -- Time in seconds to rotate through the layouts
|
||||
|
||||
local shipName = "CVN-72 Abraham Lincoln" -- Replace with the actual name of your ship
|
||||
local shipUnit = Unit.getByName(shipName)
|
||||
shipID = shipUnit:getID()
|
||||
env.info(shipName .. ": " .. shipID)
|
||||
|
||||
|
||||
local RotateLayoutInterval = 300 -- Time in seconds to rotate through the layouts
|
||||
|
||||
|
||||
local function CarrierCleanDeck()
|
||||
@ -2555,6 +2563,7 @@ local carrierLayouts = {
|
||||
|
||||
local currentLayoutIndex = 1
|
||||
|
||||
|
||||
local function cycleCarrierLayouts()
|
||||
-- Clean the deck before changing the layout
|
||||
CarrierCleanDeck()
|
||||
@ -2568,12 +2577,40 @@ local function cycleCarrierLayouts()
|
||||
-- Move to the next layout in the list
|
||||
currentLayoutIndex = currentLayoutIndex % #carrierLayouts + 1
|
||||
|
||||
-- Schedule the next execution in 15 minutes (900 seconds)
|
||||
-- Schedule the next layout change
|
||||
timer.scheduleFunction(cycleCarrierLayouts, nil, timer.getTime() + RotateLayoutInterval)
|
||||
end
|
||||
|
||||
-- Start the cycle
|
||||
cycleCarrierLayouts()
|
||||
|
||||
CarrierMenu = MENU_MISSION:New("Carrier Operations", missionMenu)
|
||||
CarrierLayoutCleanDeck = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Clear Deck", CarrierMenu, CarrierCleanDeck)
|
||||
CarrierMenu = MENU_MISSION:New("Carrier Operations", missionMenu)
|
||||
CarrierLayouts = MENU_MISSION:New("Carrier Layouts", CarrierMenu)
|
||||
|
||||
CarrierLayoutCleanDeck = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Total Clear Deck", CarrierLayouts, CarrierCleanDeck)
|
||||
CarrierClearDeck8Spawns = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Clear Deck 8 Spawns", CarrierLayouts, CarrierClearDeck8Spawns)
|
||||
CarrierBlockedDeck8Spawns = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Blocked Deck 8 Spawns", CarrierLayouts, CarrierBlockedDeck8Spawns)
|
||||
CarrierClearDeck4Spawns = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Clear Deck 4 Spawns", CarrierLayouts, CarrierClearDeck4Spawns)
|
||||
CarrierBlockedDeck4Spawns = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Blocked Deck 4 Spawns", CarrierLayouts, CarrierBlockedDeck4Spawns)
|
||||
CarrierCleanDeck16Spawns = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Clean Deck 16 Spawns", CarrierLayouts, CarrierCleanDeck16Spawns)
|
||||
CarrierBlockedDeck16Spawns = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Blocked Deck 16 Spawns", CarrierLayouts, CarrierBlockedDeck16Spawns)
|
||||
CarrierMassRecoveryCat2Tomcats = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Mass Recovery Cat 2 Tomcats", CarrierLayouts, CarrierMassRecoveryCat2Tomcats)
|
||||
|
||||
CarrierChangeIntervalMenu = MENU_MISSION:New("Change Rotate Interval", CarrierLayouts)
|
||||
|
||||
-- Function to change the rotate layout interval
|
||||
local function ChangeRotateLayoutInterval(newIntervalMinutes)
|
||||
RotateLayoutInterval = newIntervalMinutes * 60 -- Convert minutes to seconds
|
||||
MESSAGE:New("Rotate layout interval set to " .. newIntervalMinutes .. " minutes.", 15):ToAll()
|
||||
end
|
||||
|
||||
-- Add the menu items to change the interval
|
||||
CarrierChangeInterval15 = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Set Rotate Interval to 15 Minutes", CarrierChangeIntervalMenu, ChangeRotateLayoutInterval, 15)
|
||||
CarrierChangeInterval30 = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Set Rotate Interval to 30 Minutes", CarrierChangeIntervalMenu, ChangeRotateLayoutInterval, 30)
|
||||
CarrierChangeInterval60 = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Set Rotate Interval to 60 Minutes", CarrierChangeIntervalMenu, ChangeRotateLayoutInterval, 60)
|
||||
CarrierChangeInterval120 = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Set Rotate Interval to 2 Hours", CarrierChangeIntervalMenu, ChangeRotateLayoutInterval, 120)
|
||||
CarrierChangeInterval240 = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Set Rotate Interval to 4 Hours", CarrierChangeIntervalMenu, ChangeRotateLayoutInterval, 240)
|
||||
CarrierChangeInterval480 = MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Set Rotate Interval to 8 Hours", CarrierChangeIntervalMenu, ChangeRotateLayoutInterval, 480)
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,9 +1,6 @@
|
||||
|
||||
|
||||
BlueAWACS = SPAWN:New("BLUE EWR AWACS")
|
||||
:InitLimit(1, 99)
|
||||
:InitRepeatOnLanding()
|
||||
:SpawnScheduled(30, 0.5)
|
||||
|
||||
|
||||
RedAWACS = SPAWN:New("RED EWR AWACS")
|
||||
:InitLimit(1, 99)
|
||||
|
||||
@ -12,10 +12,7 @@ local RedDefaultCAP = 1
|
||||
local BlueA2ADefaultOverhead = 1
|
||||
local BlueDefaultCAP = 1
|
||||
|
||||
local shipName = "CVN-72 Abraham Lincoln" -- Replace with the actual name of your ship
|
||||
local shipUnit = Unit.getByName(shipName)
|
||||
shipID = shipUnit:getID()
|
||||
env.info(shipName .. ": " .. shipID)
|
||||
|
||||
|
||||
-- Create the main mission menu.
|
||||
missionMenu = MENU_MISSION:New("Mission Menu")
|
||||
@ -52,7 +49,7 @@ BLUEA2ADispatcher:SetDefaultLandingAtRunway()
|
||||
BLUEA2ADispatcher:SetDefaultTakeoffInAir()
|
||||
BLUEA2ADispatcher:SetTacticalDisplay(TAC_DISPLAY)
|
||||
BLUEA2ADispatcher:SetDefaultFuelThreshold( 0.20 )
|
||||
BLUEA2ADispatcher:SetRefreshTimeInterval( 300 )
|
||||
BLUEA2ADispatcher:SetRefreshTimeInterval( 900 )
|
||||
BLUEA2ADispatcher:SetDefaultOverhead(BlueA2ADefaultOverhead)
|
||||
BLUEA2ADispatcher:SetDisengageRadius( 100000 )
|
||||
BLUEA2ADispatcher:SetEngageRadius( 50000 )
|
||||
@ -64,7 +61,7 @@ RedA2ADispatcher:SetDefaultLandingAtRunway()
|
||||
RedA2ADispatcher:SetDefaultTakeoffInAir()
|
||||
RedA2ADispatcher:SetTacticalDisplay(TAC_DISPLAY)
|
||||
RedA2ADispatcher:SetDefaultFuelThreshold( 0.20 )
|
||||
RedA2ADispatcher:SetRefreshTimeInterval( 300 )
|
||||
RedA2ADispatcher:SetRefreshTimeInterval( 900 )
|
||||
RedA2ADispatcher:SetDefaultOverhead(RedA2ADefaultOverhead)
|
||||
RedA2ADispatcher:SetDisengageRadius( 100000 )
|
||||
RedA2ADispatcher:SetEngageRadius( 50000 )
|
||||
|
||||
@ -166,8 +166,8 @@ 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",{"Red-FOB"},CTLD_CARGO.Enum.FOB, 4, 500, 3)
|
||||
blue_ctld:AddCratesCargo("Forward Ops Base",{"Blue-FOB"},CTLD_CARGO.Enum.FOB, 4, 500, 3)
|
||||
red_ctld:AddCratesCargo("Forward Ops Base",{"Red-FOB"},CTLD_CARGO.Enum.FOB, 4, 500, 5)
|
||||
blue_ctld:AddCratesCargo("Forward Ops Base",{"Blue-FOB"},CTLD_CARGO.Enum.FOB, 4, 500, 5)
|
||||
|
||||
-- AA Crates
|
||||
red_ctld:AddCratesCargo("SA-8",{"SA8"},CTLD_CARGO.Enum.CRATE, 4, 500, 10)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
--[[
|
||||
Script: Moose_DynamicGroundBattle.lua
|
||||
Written by: [F99th-TracerFacer]
|
||||
Version: 1.0.3
|
||||
Version: 1.0.4
|
||||
Date: 11 November 2024
|
||||
Updated: 12 Dec 2024
|
||||
Description: This script creates a dynamic ground battle between Red and Blue coalitions
|
||||
@ -98,7 +98,7 @@
|
||||
-- Due to some maps or locations where infantry moving is either not desired or has problems with the terrain you can disable infantry moving patrols.
|
||||
-- Set to false, infantry units will spawn, and never move from their spawn location. This could be considered a defensive position and probably a good idea.
|
||||
|
||||
local ENABLE_CAPTURE_ZONE_MESSAGES = false -- Enable or disable attack messages when a zone is attacked.
|
||||
local ENABLE_CAPTURE_ZONE_MESSAGES = true -- Enable or disable attack messages when a zone is attacked.
|
||||
local MOVING_ARMOR_PATROLS = true -- Units with armor will move to patrol zones if set to true. (default is true)
|
||||
local MOVING_INFANTRY_PATROLS = false -- Units with infantry will not move to patrol zones if set to false. (default is false, to many moving units can cause performance issues)
|
||||
local MOVING_UNITS_CAP = 10 -- Too many moving ground units can cause performance issues.
|
||||
@ -316,13 +316,13 @@ local function addMarkPoints(warehouses, coalition)
|
||||
if warehouse:GetCoalition() == 2 then
|
||||
details = "Warehouse: " .. warehouse:GetName() .. "\nThis warehouse needs to be protected.\n"
|
||||
else
|
||||
details = "Warehouse: " .. warehouse:GetName() .. "\nThis is a primary target as it is directly supplying enemy units.\n"
|
||||
details = "Warehouse: " .. warehouse:GetName() .. "\nThis is a primary target! Reduce the enmey capacity to replenish their units!\n"
|
||||
end
|
||||
elseif coalition == 1 then
|
||||
if warehouse:GetCoalition() == 1 then
|
||||
details = "Warehouse: " .. warehouse:GetName() .. "\nThis warehouse needs to be protected.\nNearby Units:\n"
|
||||
details = "Warehouse: " .. warehouse:GetName() .. "\nThis warehouse needs to be protected.\n"
|
||||
else
|
||||
details = "Warehouse: " .. warehouse:GetName() .. "\nThis is a primary target as it is directly supplying enemy units.\n"
|
||||
details = "Warehouse: " .. warehouse:GetName() .. "\nThis is a primary target! Reduce the enmey capacity to replenish their units!\n"
|
||||
end
|
||||
end
|
||||
else
|
||||
@ -381,14 +381,14 @@ function ZONE_CAPTURE_COALITION:OnEnterCaptured(From, Event, To)
|
||||
if Coalition == coalition.side.BLUE then
|
||||
self:UndrawZone()
|
||||
self:DrawZone(-1, {0, 0, 1}, 2) -- Draw the zone on the map for 30 seconds, blue color, and thickness 2
|
||||
if ENABLE_CAPTURE_ZONE_MESSAGES == true
|
||||
MESSAGE:New(string.format("%s has been captured by the USA", zoneName)), 6):ToAll()
|
||||
if ENABLE_CAPTURE_ZONE_MESSAGES == true then
|
||||
MESSAGE:New(string.format("%s has been captured by the USA", self:GetZoneName()), 6):ToAll()
|
||||
end
|
||||
else
|
||||
self:UndrawZone()
|
||||
self:DrawZone(-1, {1, 0, 0}, 2) -- Draw the zone on the map for 30 seconds, red color, and thickness 2
|
||||
if ENABLE_CAPTURE_ZONE_MESSAGES == true
|
||||
MESSAGE:New(string.format("%s has been captured by Russia", zoneName)), 6):ToAll()
|
||||
if ENABLE_CAPTURE_ZONE_MESSAGES == true then
|
||||
MESSAGE:New(string.format("%s has been captured by Russia", self:GetZoneName()), 6):ToAll()
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -743,6 +743,7 @@ local function AssignTasks(group, zoneStates)
|
||||
|
||||
group:PatrolZones(patrolZones, speed, formation, delayMin, delayMax)
|
||||
movingUnitsCount = movingUnitsCount + 1 -- Increment the counter when a unit starts moving
|
||||
MESSAGE:New("Moving Units Count: " .. movingUnitsCount, 10):ToAll()
|
||||
else
|
||||
env.info("AssignTasks: No suitable zone found for group " .. group:GetName())
|
||||
end
|
||||
@ -752,11 +753,23 @@ end
|
||||
-- Function to decrement the moving units counter when a unit stops moving
|
||||
local function OnUnitStopMoving()
|
||||
movingUnitsCount = movingUnitsCount - 1
|
||||
MESSAGE:New("Moving Units Count: " .. movingUnitsCount, 10):ToAll()
|
||||
end
|
||||
|
||||
-- Function to spawn infantry units from a template at a given location
|
||||
local function SpawnInfantryAtLocation(location)
|
||||
local spawnTemplate = SPAWN:New("InfantryTemplate") -- Replace "InfantryTemplate" with your actual template name
|
||||
local function SpawnInfantryAtLocation(location, coalition)
|
||||
local spawnTemplateName
|
||||
|
||||
if coalition == coalition.side.RED then
|
||||
spawnTemplateName = "RedInfantry1" -- Replace with your actual red coalition template name
|
||||
elseif coalition == coalition.side.BLUE then
|
||||
spawnTemplateName = "BlueInfantry1" -- Replace with your actual blue coalition template name
|
||||
else
|
||||
env.info("SpawnInfantryAtLocation: Invalid coalition")
|
||||
return
|
||||
end
|
||||
|
||||
local spawnTemplate = SPAWN:New(spawnTemplateName)
|
||||
spawnTemplate:SpawnFromCoordinate(location)
|
||||
end
|
||||
|
||||
@ -765,19 +778,21 @@ local function OnUnitReachedLastWaypoint(unit)
|
||||
OnUnitStopMoving()
|
||||
|
||||
local unitCoordinate = unit:GetCoordinate()
|
||||
SpawnInfantryAtLocation(unitCoordinate)
|
||||
local unitCoalition = unit:GetCoalition()
|
||||
SpawnInfantryAtLocation(unitCoordinate, unitCoalition)
|
||||
end
|
||||
|
||||
-- Event handler for waypoint reached
|
||||
-- Create an event handler class
|
||||
local EventHandler = EVENTHANDLER:New()
|
||||
|
||||
-- Define the event handler function for waypoint reached
|
||||
function EventHandler:OnEventWaypointReached(EventData)
|
||||
if EventData and EventData.IniUnit then
|
||||
OnUnitReachedLastWaypoint(EventData.IniUnit)
|
||||
end
|
||||
end
|
||||
|
||||
-- Set up the event handler globally
|
||||
-- Set up the event handler to handle the WaypointReached event
|
||||
EventHandler:HandleEvent(EVENTS.WaypointReached)
|
||||
|
||||
-- Function to check if a group contains infantry units
|
||||
|
||||
201
DCS_Syria/Battle for Rayak Valley/Moose_NavalGroup.lua
Normal file
201
DCS_Syria/Battle for Rayak Valley/Moose_NavalGroup.lua
Normal file
@ -0,0 +1,201 @@
|
||||
-- Expected Behavior
|
||||
-- CVN Will patrol designated patrol zones. Staying in the zone assigned.
|
||||
-- Player can designate which zone to move to.
|
||||
-- Plyaer can request turning into the wind.
|
||||
-- After turning into the wind, CVN should return to orignal coord then resume waypoints.
|
||||
|
||||
--
|
||||
---
|
||||
local msgTime = 15
|
||||
local SetCVNActivePatrolZone = 1 --if active waypoint is 1, steam between 1 and 2, if active is 2, steam between 2 and 3.
|
||||
|
||||
|
||||
local CVN_carrier_group = GROUP:FindByName("CVN-72 Abraham Lincoln Carrier Group") -- put the exact GROUP name of your carrier-group as set in the mission editor within the " "
|
||||
local CVN_beacon_unit = UNIT:FindByName("CVN-72 Abraham Lincoln")-- -- put the exact UNIT name of your carrier-unit as set in the mission editor within the " "
|
||||
local CVN_ICLS_Channel = 1 -- replace with the ICLS channel you want
|
||||
local CVN_ICLS_Name = "CVN" -- put the 3-letter ICLS identifier you want to use for the ICLS channel
|
||||
local CVN_TACAN_Channel = 72 -- replace with the TACAN channel you want
|
||||
local CVN_TACAN_Name = "CVN" -- put the 3-letter TACAN identifier you want to use for the TACAN channel
|
||||
local CVN_RecoveryWindowTime = 20 -- time in minutes for how long recovery will be open, feel free to change the number
|
||||
|
||||
|
||||
-- Functions to move ship to designated waypoint/zones
|
||||
local msgCVNPatrol = "Sending Carrier Group to Patrol Zone: "
|
||||
function SetCVNWayPoint1()
|
||||
SetCVNActivePatrolZone = 1
|
||||
MESSAGE:New(msgCVNPatrol .. SetCVNActivePatrolZone, msgTime):ToBlue()
|
||||
USERSOUND:New("ping.ogg"):ToCoalition(coalition.side.BLUE)
|
||||
BlueCVNGroup:GotoWaypoint(1)
|
||||
end
|
||||
|
||||
function SetCVNWayPoint2()
|
||||
SetCVNActivePatrolZone = 2
|
||||
MESSAGE:New(msgCVNPatrol .. SetCVNActivePatrolZone, msgTime):ToBlue()
|
||||
USERSOUND:New("ping.ogg"):ToCoalition(coalition.side.BLUE)
|
||||
BlueCVNGroup:GotoWaypoint(3)
|
||||
end
|
||||
|
||||
function SetCVNWayPoint3()
|
||||
SetCVNActivePatrolZone = 3
|
||||
MESSAGE:New(msgCVNPatrol .. SetCVNActivePatrolZone, msgTime):ToBlue()
|
||||
USERSOUND:New("ping.ogg"):ToCoalition(coalition.side.BLUE)
|
||||
BlueCVNGroup:GotoWaypoint(5)
|
||||
end
|
||||
|
||||
|
||||
if CVN_beacon_unit then
|
||||
BlueCVNGroup_Beacon = CVN_beacon_unit:GetBeacon()
|
||||
BlueCVNGroup_Beacon:ActivateICLS(CVN_ICLS_Channel,CVN_ICLS_Name)
|
||||
end
|
||||
SCHEDULER:New(nil,function()
|
||||
if CVN_beacon_unit then
|
||||
BlueCVNGroup_Beacon = CVN_beacon_unit:GetBeacon()
|
||||
BlueCVNGroup_Beacon:ActivateTACAN(CVN_TACAN_Channel,"X",CVN_TACAN_Name,true)
|
||||
end
|
||||
end,{},5,5*60)
|
||||
|
||||
-- Function to turn ship into the wind.
|
||||
function start_recovery()
|
||||
|
||||
if BlueCVNGroup:IsSteamingIntoWind() == true then
|
||||
MESSAGE:New(CVN_beacon_unit:GetName() .. " is currently launching/recovering aircraft, currently active recovery window closes at time " .. timerecovery_end, msgTime, "CVNNAVINFO",false):ToBlue()
|
||||
USERSOUND:New("ping.ogg"):ToCoalition(coalition.side.BLUE)
|
||||
else
|
||||
local timenow=timer.getAbsTime( )
|
||||
local timeend=timenow+CVN_RecoveryWindowTime*60 -- this sets the recovery window to 45 minutes, you can change the numbers as you wish
|
||||
local timerecovery_start = UTILS.SecondsToClock(timenow,true)
|
||||
timerecovery_end = UTILS.SecondsToClock(timeend,true)
|
||||
BlueCVNGroup:AddTurnIntoWind(timerecovery_start,timerecovery_end,25,true,-9)
|
||||
MESSAGE:New(CVN_beacon_unit:GetName().." is turning into the wind to begin " .. CVN_RecoveryWindowTime .. " mins of aircraft operations.\nLaunch/Recovery Window will be open from time " .. timerecovery_start .. " until " .. timerecovery_end, msgTime, "CVNNAVINFO",false):ToBlue()
|
||||
USERSOUND:New("ping.ogg"):ToCoalition(coalition.side.BLUE)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
BlueAwacs = nil
|
||||
Spawn_US_AWACS = SPAWN:New("BLUE EWR AWACS")
|
||||
:InitLimit(1,500)
|
||||
:InitRepeatOnLanding()
|
||||
|
||||
:OnSpawnGroup( function (SpawnGroup)
|
||||
BlueAwacs = SpawnGroup
|
||||
end
|
||||
):SpawnScheduled(30,.5)
|
||||
|
||||
function ResetAwacs()
|
||||
BlueAwacs:Destroy()
|
||||
MESSAGE:New("Resetting AWACS...", msgTime, "CVNNAVINFO",false):ToBlue()
|
||||
USERSOUND:New("ping.ogg"):ToCoalition(coalition.side.BLUE)
|
||||
end
|
||||
|
||||
-- Build the Menu
|
||||
local CarrierMovement = MENU_COALITION:New(coalition.side.BLUE, "Carrier Movement", CarrierMenu)
|
||||
MENU_COALITION_COMMAND:New(coalition.side.BLUE, "CVN Group - Patrol Zone 1", CarrierMovement, SetCVNWayPoint1)
|
||||
MENU_COALITION_COMMAND:New(coalition.side.BLUE, "CVN Group - Patrol Zone 2", CarrierMovement, SetCVNWayPoint3)
|
||||
MENU_COALITION_COMMAND:New(coalition.side.BLUE, "CVN Group - Patrol Zone 3", CarrierMovement, SetCVNWayPoint5)
|
||||
MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Reset AWACS", CarrierMovement,ResetAwacs)
|
||||
MENU_COALITION_COMMAND:New(coalition.side.BLUE, "Launch/Recover Aircraft (Turn carrier into the wind)", CarrierMovement, start_recovery)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- Create a NAVYGROUP object and activate the late activated group.
|
||||
BlueCVNGroup=NAVYGROUP:New("CVN-72 Abraham Lincoln Carrier Group")
|
||||
BlueCVNGroup:SetVerbosity(1)
|
||||
BlueCVNGroup:MarkWaypoints()
|
||||
|
||||
|
||||
|
||||
--- Function called each time the group passes a waypoint.
|
||||
function BlueCVNGroup:OnAfterPassingWaypoint(From, Event, To, Waypoint)
|
||||
local waypoint=Waypoint --Ops.OpsGroup#OPSGROUP.Waypoint
|
||||
|
||||
-- Debug info.
|
||||
local text=string.format(CVN_beacon_unit:GetName().." passed waypoint ID=%d (Index=%d) %d times", waypoint.uid, BlueCVNGroup:GetWaypointIndex(waypoint.uid), waypoint.npassed)
|
||||
MESSAGE:New(text, msgTime):ToBlue()
|
||||
USERSOUND:New("ping.ogg"):ToCoalition(coalition.side.BLUE)
|
||||
env.info(text)
|
||||
--- Patrol zone 1
|
||||
if SetCVNActivePatrolZone == 1 and waypoint == 1 then
|
||||
BlueCVNGroup:GotoWaypoint(2)
|
||||
end
|
||||
|
||||
if SetCVNActivePatrolZone == 1 and waypoint == 2 then
|
||||
BlueCVNGroup:GotoWaypoint(1)
|
||||
end
|
||||
---- Patrol zone 2
|
||||
if SetCVNActivePatrolZone == 2 and waypoint == 3 then
|
||||
BlueCVNGroup:GotoWaypoint(4)
|
||||
end
|
||||
|
||||
if SetCVNActivePatrolZone == 2 and waypoint == 4 then
|
||||
BlueCVNGroup:GotoWaypoint(3)
|
||||
end
|
||||
---- Patrol Zone 3
|
||||
if SetCVNActivePatrolZone == 3 and waypoint == 5 then
|
||||
BlueCVNGroup:GotoWaypoint(6)
|
||||
end
|
||||
|
||||
if SetCVNActivePatrolZone == 3 and waypoint == 6 then
|
||||
BlueCVNGroup:GotoWaypoint(5)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--- Function called when the group is cruising. This is the "normal" state when the group follows its waypoints.
|
||||
function BlueCVNGroup:OnAfterCruise(From, Event, To)
|
||||
local text=CVN_beacon_unit:GetName().." is cruising straight and steady."
|
||||
MESSAGE:New(text, msgTime):ToBlue()
|
||||
USERSOUND:New("ping.ogg"):ToCoalition(coalition.side.BLUE)
|
||||
env.info(text)
|
||||
end
|
||||
|
||||
--- Function called when the groups starts to turn.
|
||||
function BlueCVNGroup:OnAfterTurningStarted(From, Event, To)
|
||||
local text=CVN_beacon_unit:GetName().." has started turning!"
|
||||
MESSAGE:New(text, msgTime):ToBlue()
|
||||
USERSOUND:New("ping.ogg"):ToCoalition(coalition.side.BLUE)
|
||||
env.info(text)
|
||||
end
|
||||
|
||||
--- Function called when the group stopps to turn.
|
||||
function BlueCVNGroup:OnAfterTurningStopped(From, Event, To)
|
||||
local text=CVN_beacon_unit:GetName().." has stopped turning..proceeding to next waypoint."
|
||||
MESSAGE:New(text, msgTime):ToBlue()
|
||||
USERSOUND:New("ping.ogg"):ToCoalition(coalition.side.BLUE)
|
||||
env.info(text)
|
||||
end
|
||||
|
||||
-- Turn the carrier into the wind for a few mins
|
||||
function
|
||||
BlueCVNGroup:AddTurnIntoWind()
|
||||
USERSOUND:New("ping.ogg"):ToCoalition(coalition.side.BLUE)
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- Monitor entering and leaving zones.
|
||||
local ZoneSet=SET_ZONE:New():FilterPrefixes("CVN Patrol"):FilterOnce()
|
||||
|
||||
-- Set zones which are checked if the group enters or leaves it.
|
||||
BlueCVNGroup:SetCheckZones(ZoneSet)
|
||||
|
||||
--- Function called when the group enteres a zone.
|
||||
function BlueCVNGroup:OnAfterEnterZone(From, Event, To, Zone)
|
||||
local text=string.format(CVN_beacon_unit:GetName().." has entered patrol zone %s.", Zone:GetName())
|
||||
MESSAGE:New(text, msgTime):ToBlue()
|
||||
USERSOUND:New("ping.ogg"):ToCoalition(coalition.side.BLUE)
|
||||
env.info(text)
|
||||
end
|
||||
|
||||
--- Function called when the group leaves a zone.
|
||||
function BlueCVNGroup:OnAfterLeaveZone(From, Event, To, Zone)
|
||||
local text=string.format(CVN_beacon_unit:GetName().." left patrol zone %s.", Zone:GetName())
|
||||
MESSAGE:New(text, msgTime):ToBlue()
|
||||
USERSOUND:New("ping.ogg"):ToCoalition(coalition.side.BLUE)
|
||||
env.info(text)
|
||||
end
|
||||
60
resume.lua
Normal file
60
resume.lua
Normal file
@ -0,0 +1,60 @@
|
||||
Kenneth “Scott” Kalous
|
||||
kskalous@gmail.com • (945) 260-5398 • https://www.linkedin.com/in/kenneth-kalous-821a8b26/
|
||||
|
||||
Professional Summary
|
||||
Results-driven IT professional with over 20 years of experience in managing and supporting Windows Server operating systems and infrastructure. Proven expertise in SCCM and Adaptiva, providing enterprise-level solutions for a global organization supporting 250,000+ devices. Adept at implementing scalable IT infrastructure, optimizing system performance, and driving operational efficiency.
|
||||
|
||||
Key Skills
|
||||
• SCCM and Adaptiva Design and Administration.
|
||||
• Windows Server Management (2008/2012/2016/2019/2022)
|
||||
• IT Infrastructure Design & Optimization
|
||||
• Patch Management & Software Deployment
|
||||
• Active Directory & Group Policy Administration
|
||||
• C#, SQL, PowerShell Scripting & Automation
|
||||
• Incident & Problem Management (ITIL Framework)
|
||||
• Global IT Operations Support
|
||||
|
||||
Professional Experience
|
||||
Senior Systems Advisor II
|
||||
FedEx Services • 2016 – Current
|
||||
• Team Lead on the design, implementation, administration and maintenance of a federated global SCCM and Adaptiva infrastructure environment.
|
||||
• Ensured seamless operations for over 250,000 devices world wide supporting several hundred windows system administrators in diverse locations around the world.
|
||||
• Streamlined software distribution processes, reducing deployment times by 30% through effective SCCM and Adaptiva configurations.
|
||||
• Developed and maintained PowerShell scripts to automate repetitive tasks, improving team efficiency by 25%.
|
||||
• Collaborated with cross-functional teams to implement a comprehensive patch management strategy, achieving a 99% compliance rates.
|
||||
• Provided Tier 3 support for complex IT issues, resolving 95% of incidents within SLA.
|
||||
• Spearheaded the migration of legacy Windows Server systems to newer versions, enhancing system reliability and security.
|
||||
• Trained junior IT staff on Windows Server management, SCCM, Adaptiva and troubleshooting best practices.
|
||||
|
||||
IT Systems Administrator
|
||||
FedEx Services • 2005 – 2016
|
||||
• Managed a Windows Server environment supporting 50,000+ users, ensuring 99.9% up-time.
|
||||
• Implemented Group Policy Objects (GPOs) to standardize user environments and enforce security measures.
|
||||
• Coordinated server patching and upgrades, minimizing downtime and ensuring system compliance.
|
||||
• Trained junior IT staff on Windows Server management and troubleshooting best practices.
|
||||
• Analyzed system performance metrics, recommending and implementing upgrades that improved efficiency by 20%.
|
||||
|
||||
IT Support Specialist
|
||||
Kinko’s Office & Print • 2001 – 2005
|
||||
• Provided desktop and server support for Windows environments, resolving hardware and software issues efficiently.
|
||||
• Assisted in the roll-out of a new Active Directory structure, improving authentication and resource management.
|
||||
• Maintained detailed documentation for all IT processes and configurations, facilitating knowledge transfer.
|
||||
• Delivered exceptional end-user support, achieving a 98% satisfaction rate in customer surveys.
|
||||
|
||||
United States Navy
|
||||
Aviation Machinist Mate • 1990 – 2001
|
||||
After high school, I spent 10 years in the navy, working on airplanes mostly, but was always relied upon for my computer skills. The last 3 years of my Navy career was spent as an IT Support Specialist for a small squadron while stationed in Hawaii.
|
||||
|
||||
|
||||
|
||||
Education
|
||||
|
||||
|
||||
|
||||
Certifications
|
||||
• Microsoft Certified: MCSE
|
||||
|
||||
|
||||
Additional Information
|
||||
• Available for relocation and willing to travel for business needs.
|
||||
• Experience working in 24/7 high paced global support environments.
|
||||
Loading…
x
Reference in New Issue
Block a user