2024-01-01 22:47:10 +00:00

126 lines
4.8 KiB
Lua

-------------------------------------------------------------------------
-- LoadSave 100 - Basics
-------------------------------------------------------------------------
-- Documentation
--
-- https://flightcontrol-master.github.io/MOOSE_DOCS_DEVELOP/Documentation/Utilities.Utils.html##(UTILS).LoadSetOfGroups and below
-- https://flightcontrol-master.github.io/MOOSE_DOCS_DEVELOP/Documentation/Utilities.Utils.html##(UTILS).SaveSetOfGroups and below
--
-------------------------------------------------------------------------
-- Join the game master slot. The group and static positions are saved.
-- Some units are destroyed after 30 seconds. Then, re-run the mission to
-- see the effect of the reload.
-- Adjust the below Filepath to your file path. Mission Scripting
-- environment must be(!) desanitized!
-------------------------------------------------------------------------
-- Date: December 2022
-------------------------------------------------------------------------
-- We create a SET_GROUP (SAMs) and a SET_STATIC (Bunkers) for saving
local RedSAMSet = SET_GROUP:New():FilterCategoryGround():FilterCoalitions("red"):FilterPrefixes({"Red SAM"}):FilterOnce()
local RedStaticSet = SET_STATIC:New():FilterCoalitions("red"):FilterPrefixes({"Red"}):FilterOnce()
-- We need the name list for the "StationaryList" methods
local RedSAMNames = RedSAMSet:GetSetNames()
local RedStaticNames = RedStaticSet:GetSetNames()
-- adjust to your PC
local Filepath = "C:\\Users\\post\\Saved Games\\DCS\\Missions\\SaveLoadTest\\"
local Filename = "RedGround.csv"
local SetFilename = "SetRedGround.csv"
local FilenameRandoms = "RedRandoms.csv"
local FilenameStatics = "RedStatics.csv"
local Saveinterval = 30
-- Save SAMs with SaveStationaryListOfGroups
function SaveRedSAM(list,Path,Fname)
if UTILS.SaveStationaryListOfGroups(list,Path,Fname,true) then
BASE:I("***** Red Ground positions saved successfully!")
else
BASE:I("***** Error saving Red Ground positions!")
end
end
local TimerSaveRedSAM = TIMER:New(SaveRedSAM,RedSAMNames,Filepath,Filename)
TimerSaveRedSAM:Start(15,Saveinterval)
-- Save SAMs with SaveSetOfGroups
function SaveRedSAMSet(set,Path,Fname)
if UTILS.SaveSetOfGroups(set,Path,Fname,true) then
BASE:I("***** Red Ground positions [SET] saved successfully!")
else
BASE:I("***** Error saving Red Ground positions [SET]!")
end
end
local TimerSaveRedSAM = TIMER:New(SaveRedSAMSet,RedSAMSet,Filepath,SetFilename)
TimerSaveRedSAM:Start(16,Saveinterval)
-- Reload SAMs with LoadStationaryListOfGroups
function LoadRedSAM(Path,Fname)
if UTILS.LoadStationaryListOfGroups(Path,Fname,true,true,true,5) then
BASE:I("***** Red Ground positions loaded successfully!")
else
BASE:I("***** Error loading Red Ground positions!")
end
end
local TimerLoadRedSAM = TIMER:New(LoadRedSAM,Filepath,Filename)
TimerLoadRedSAM:Start(10)
-- Reload SAMs with LoadSetOfGroups
-- This is intended for groups which are spawned *during* the mission, i.e. the templates need to be set to late activated
-- Left as example here, but not used in the demo
function LoadRedSAMSet(Path,Fname)
if UTILS.LoadSetOfGroups(Path,Fname,true,true,true,2,0.6) then
BASE:I("***** Red Ground positions loaded successfully!")
else
BASE:I("***** Error loading Red Ground positions!")
end
end
-- Save Red Statics with SaveStationaryListOfStatics
function SaveRedStatics(list,Path,Fname)
if UTILS.SaveStationaryListOfStatics(list,Path,Fname) then
BASE:I("***** Red Static positions saved successfully!")
else
BASE:I("***** Error saving Red Ground positions!")
end
end
local TimerSaveRedStatics = TIMER:New(SaveRedStatics,RedStaticNames,Filepath,FilenameStatics)
TimerSaveRedStatics:Start(17,Saveinterval)
-- Reload Red Statics with LoadStationaryListOfStatics
function LoadRedStatics(Path,Fname)
if UTILS.LoadStationaryListOfStatics(Path,Fname,true,true,true,6,0.75) then
BASE:I("***** Red Static positions loaded successfully!")
else
BASE:I("***** Error loading Red Ground positions!")
end
end
local TimerLoadRedStatics = TIMER:New(LoadRedStatics,Filepath,FilenameStatics)
TimerLoadRedStatics:Start(11)
-- Destroy some units so we see the effect of the reload later
function Destruction()
local bunker = STATIC:FindByName("Red Bunker-3-1")
local bcoord = bunker:GetCoordinate()
if bcoord then
bcoord:Explosion(1000)
end
local radar1 = UNIT:FindByName("Red SAM SA-10-2")
local radar2 = UNIT:FindByName("Red SAM SA-10-1")
if radar1 and radar2 then
local rcoord1 = radar1:GetCoordinate()
local rcoord2 = radar2:GetCoordinate()
if rcoord1 and rcoord2 then
rcoord1:Explosion(100)
rcoord2:Explosion(100)
end
end
end
local DestructionTimer = TIMER:New(Destruction)
DestructionTimer:Start(30)