mirror of
https://github.com/iTracerFacer/DCS_MissionDev.git
synced 2025-12-03 04:14:46 +00:00
DO it
This commit is contained in:
parent
06413684ca
commit
ec4f5e375a
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.core.resources/.root/3.tree
Normal file
BIN
.metadata/.plugins/org.eclipse.core.resources/.root/3.tree
Normal file
Binary file not shown.
Binary file not shown.
@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.dltk.core.codeComplete.visibilityCheck=enabled
|
||||
@ -0,0 +1,5 @@
|
||||
eclipse.preferences.version=1
|
||||
sourceHoverBackgroundColor=255,255,225
|
||||
sourceHoverBackgroundColor.SystemDefault=true
|
||||
useAnnotationsPrefPage=true
|
||||
useQuickDiffPrefPage=true
|
||||
@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.team.ui.first_time=false
|
||||
@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
overviewRuler_migration=migrated_3.1
|
||||
BIN
.metadata/.plugins/org.eclipse.dltk.core/1484524933.index
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/1484524933.index
Normal file
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/1502499027.index
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/1502499027.index
Normal file
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/1505386533.index
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/1505386533.index
Normal file
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/1747788129.index
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/1747788129.index
Normal file
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/1939285624.index
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/1939285624.index
Normal file
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/2538043997.index
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/2538043997.index
Normal file
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/2768864900.index
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/2768864900.index
Normal file
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/329329841.index
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/329329841.index
Normal file
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/3688405372.index
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/3688405372.index
Normal file
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/4554018.index
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/4554018.index
Normal file
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/567655800.index
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/567655800.index
Normal file
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/640583989.index
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/640583989.index
Normal file
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/998229636.index
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/998229636.index
Normal file
Binary file not shown.
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/cache/2838196607/2210315311/5.idx
vendored
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/cache/2838196607/2210315311/5.idx
vendored
Normal file
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/cache/2838196607/2846345860/7.idx
vendored
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/cache/2838196607/2846345860/7.idx
vendored
Normal file
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/cache/2838196607/336605292/3.idx
vendored
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/cache/2838196607/336605292/3.idx
vendored
Normal file
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/cache/2838196607/3672975892/1.idx
vendored
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/cache/2838196607/3672975892/1.idx
vendored
Normal file
Binary file not shown.
19
.metadata/.plugins/org.eclipse.dltk.core/cache/index
vendored
Normal file
19
.metadata/.plugins/org.eclipse.dltk.core/cache/index
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="ASCII"?>
|
||||
<cache:CacheIndex xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:cache="http://eclipse.org/dltk/cache_model" lastIndex="8" environment="org.eclipse.dltk.core.environment.localEnvironment">
|
||||
<entries path="C:/DCS_MissionDev/DCS_Caucasus/src/SSB_UnlockPlanesAtBlueBases.lua" timestamp="1648616270843" lastAccessTime="1759264286559"/>
|
||||
<entries path="C:/DCS_MissionDev/DCS_Caucasus/src" timestamp="1648616270843" lastAccessTime="1759264286560">
|
||||
<attributes name=".dltk.core.archive.cache.lastaccess" location="2838196607/3672975892/1.idx"/>
|
||||
</entries>
|
||||
<entries path="C:/DCS_MissionDev/DCS_Normandy/dogfight/moose_dogfight.lua" timestamp="1695308345613" lastAccessTime="1759264286561"/>
|
||||
<entries path="C:/DCS_MissionDev/DCS_Normandy/dogfight" timestamp="1695306817872" lastAccessTime="1759264286561">
|
||||
<attributes name=".dltk.core.archive.cache.lastaccess" location="2838196607/336605292/3.idx"/>
|
||||
</entries>
|
||||
<entries path="C:/DCS_MissionDev/DCS_Afgainistan/src/main.lua" timestamp="1728252263857" lastAccessTime="1759264286564"/>
|
||||
<entries path="C:/DCS_MissionDev/DCS_Afgainistan/src" timestamp="1728252263857" lastAccessTime="1759264286564">
|
||||
<attributes name=".dltk.core.archive.cache.lastaccess" location="2838196607/2210315311/5.idx"/>
|
||||
</entries>
|
||||
<entries path="C:/DCS_MissionDev/Moose_Framework/src/main.lua" timestamp="1695307917816" lastAccessTime="1759264286989"/>
|
||||
<entries path="C:/DCS_MissionDev/Moose_Framework/src" timestamp="1695307917816" lastAccessTime="1759264286990">
|
||||
<attributes name=".dltk.core.archive.cache.lastaccess" location="2838196607/2846345860/7.idx"/>
|
||||
</entries>
|
||||
</cache:CacheIndex>
|
||||
BIN
.metadata/.plugins/org.eclipse.dltk.core/customTimeStamps
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/customTimeStamps
Normal file
Binary file not shown.
BIN
.metadata/.plugins/org.eclipse.dltk.core/externalLibsTimeStamps
Normal file
BIN
.metadata/.plugins/org.eclipse.dltk.core/externalLibsTimeStamps
Normal file
Binary file not shown.
@ -0,0 +1,2 @@
|
||||
C:\DCS_MissionDev\.metadata\.plugins\org.eclipse.dltk.core\2538043997.index
|
||||
C:\DCS_MissionDev\.metadata\.plugins\org.eclipse.dltk.core\1505386533.index
|
||||
@ -7,4 +7,6 @@
|
||||
<item value="1" key="rootMode"/>
|
||||
<item value="false" key="linkWithEditor"/>
|
||||
</section>
|
||||
<section name="completion_proposal_size">
|
||||
</section>
|
||||
</section>
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="ASCII"?>
|
||||
<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_y6YEcaQ9Ee-dJ6jf0FqBhw" elementId="org.eclipse.e4.legacy.ide.application" contributorURI="platform:/plugin/org.eclipse.ui.workbench" selectedElement="_y6YEcqQ9Ee-dJ6jf0FqBhw" bindingContexts="_y6YEeKQ9Ee-dJ6jf0FqBhw">
|
||||
<persistedState key="memento" value="<?xml version="1.0" encoding="UTF-8"?>
<workbench>
<mruList/>
</workbench>"/>
|
||||
<persistedState key="memento" value="<?xml version="1.0" encoding="UTF-8"?>
<workbench>
<mruList>
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.ldt.ui.editor" name="Moose_SiegeofUshuaia.lua" tooltip="DCS_Falklands/Siege of Ushuaia/Moose_SiegeofUshuaia.lua">
<persistable path="/DCS_Falklands/Siege of Ushuaia/Moose_SiegeofUshuaia.lua"/>
</file>
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.ldt.ui.editor" name="moose_battleforgaza.lua" tooltip="DCS_Sinai/Battle for Gaza/moose_battleforgaza.lua">
<persistable path="/DCS_Sinai/Battle for Gaza/moose_battleforgaza.lua"/>
</file>
</mruList>
</workbench>"/>
|
||||
<tags>activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration</tags>
|
||||
<tags>ModelMigrationProcessor.001</tags>
|
||||
<children xsi:type="basic:TrimmedWindow" xmi:id="_y6YEcqQ9Ee-dJ6jf0FqBhw" elementId="IDEWindow" contributorURI="platform:/plugin/org.eclipse.ui.workbench" selectedElement="_zNXR46Q9Ee-dJ6jf0FqBhw" x="696" y="205" width="1024" height="768">
|
||||
<children xsi:type="basic:TrimmedWindow" xmi:id="_y6YEcqQ9Ee-dJ6jf0FqBhw" elementId="IDEWindow" contributorURI="platform:/plugin/org.eclipse.ui.workbench" selectedElement="_zNXR46Q9Ee-dJ6jf0FqBhw" x="2552" y="0" width="2576" height="1388">
|
||||
<persistedState key="coolBarVisible" value="true"/>
|
||||
<persistedState key="perspectiveBarVisible" value="true"/>
|
||||
<persistedState key="isRestored" value="true"/>
|
||||
@ -39,7 +39,7 @@
|
||||
<tags>persp.perspSC:org.eclipse.debug.ui.DebugPerspective</tags>
|
||||
<tags>persp.actionSet:org.eclipse.debug.ui.launchActionSet</tags>
|
||||
<children xsi:type="basic:PartSashContainer" xmi:id="_zNa8QaQ9Ee-dJ6jf0FqBhw" selectedElement="_zNa8QqQ9Ee-dJ6jf0FqBhw" horizontal="true">
|
||||
<children xsi:type="basic:PartSashContainer" xmi:id="_zNa8QqQ9Ee-dJ6jf0FqBhw" containerData="2600" selectedElement="_zNa8Q6Q9Ee-dJ6jf0FqBhw">
|
||||
<children xsi:type="basic:PartSashContainer" xmi:id="_zNa8QqQ9Ee-dJ6jf0FqBhw" containerData="1789" selectedElement="_zNa8Q6Q9Ee-dJ6jf0FqBhw">
|
||||
<children xsi:type="basic:PartStack" xmi:id="_zNa8Q6Q9Ee-dJ6jf0FqBhw" elementId="topLeft" containerData="5000" selectedElement="_zNa8RKQ9Ee-dJ6jf0FqBhw">
|
||||
<tags>active</tags>
|
||||
<children xsi:type="advanced:Placeholder" xmi:id="_zNa8RKQ9Ee-dJ6jf0FqBhw" elementId="org.eclipse.dltk.ui.ScriptExplorer" ref="_zNUOkKQ9Ee-dJ6jf0FqBhw" closeable="true">
|
||||
@ -66,7 +66,7 @@
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
<children xsi:type="basic:PartSashContainer" xmi:id="_zNa8SqQ9Ee-dJ6jf0FqBhw" containerData="7400">
|
||||
<children xsi:type="basic:PartSashContainer" xmi:id="_zNa8SqQ9Ee-dJ6jf0FqBhw" containerData="8211" selectedElement="_zNa8S6Q9Ee-dJ6jf0FqBhw">
|
||||
<children xsi:type="advanced:Placeholder" xmi:id="_zNa8S6Q9Ee-dJ6jf0FqBhw" elementId="org.eclipse.ui.editorss" containerData="6600" ref="_zNP9IKQ9Ee-dJ6jf0FqBhw"/>
|
||||
<children xsi:type="basic:PartStack" xmi:id="_zNa8TKQ9Ee-dJ6jf0FqBhw" elementId="bottomRight" containerData="3400" selectedElement="_zNa8TaQ9Ee-dJ6jf0FqBhw">
|
||||
<children xsi:type="advanced:Placeholder" xmi:id="_zNa8TaQ9Ee-dJ6jf0FqBhw" elementId="org.eclipse.ui.views.ProblemView" ref="_zNVctKQ9Ee-dJ6jf0FqBhw" closeable="true">
|
||||
@ -200,10 +200,16 @@
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
<sharedElements xsi:type="advanced:Area" xmi:id="_zNP9IKQ9Ee-dJ6jf0FqBhw" elementId="org.eclipse.ui.editorss">
|
||||
<children xsi:type="basic:PartStack" xmi:id="_zNP9IaQ9Ee-dJ6jf0FqBhw" elementId="org.eclipse.e4.primaryDataStack">
|
||||
<sharedElements xsi:type="advanced:Area" xmi:id="_zNP9IKQ9Ee-dJ6jf0FqBhw" elementId="org.eclipse.ui.editorss" selectedElement="_zNP9IaQ9Ee-dJ6jf0FqBhw">
|
||||
<children xsi:type="basic:PartStack" xmi:id="_zNP9IaQ9Ee-dJ6jf0FqBhw" elementId="org.eclipse.e4.primaryDataStack" selectedElement="_bZT-QJ49EfCrAJ_fZ8joTw">
|
||||
<tags>org.eclipse.e4.primaryDataStack</tags>
|
||||
<tags>EditorStack</tags>
|
||||
<children xsi:type="basic:Part" xmi:id="_bZT-QJ49EfCrAJ_fZ8joTw" elementId="org.eclipse.e4.ui.compatibility.editor" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor" label="Moose_SiegeofUshuaia" iconURI="platform:/plugin/org.eclipse.ldt.ui/icons/obj16/lua-logo.gif" closeable="true">
|
||||
<persistedState key="memento" value="<?xml version="1.0" encoding="UTF-8"?>
<editor id="org.eclipse.ldt.ui.editor" name="Moose_SiegeofUshuaia.lua" partName="Moose_SiegeofUshuaia" title="Moose_SiegeofUshuaia" tooltip="DCS_Falklands/Siege of Ushuaia/Moose_SiegeofUshuaia.lua">
<input factoryID="org.eclipse.ui.part.FileEditorInputFactory" path="/DCS_Falklands/Siege of Ushuaia/Moose_SiegeofUshuaia.lua"/>
<editorState selectionHorizontalPixel="0" selectionLength="0" selectionOffset="2891" selectionTopPixel="960"/>
</editor>"/>
|
||||
<tags>Editor</tags>
|
||||
<tags>org.eclipse.ldt.ui.editor</tags>
|
||||
<tags>removeOnHide</tags>
|
||||
</children>
|
||||
</children>
|
||||
</sharedElements>
|
||||
<sharedElements xsi:type="basic:Part" xmi:id="_zNUOkKQ9Ee-dJ6jf0FqBhw" elementId="org.eclipse.dltk.ui.ScriptExplorer" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Script Explorer" iconURI="platform:/plugin/org.eclipse.dltk.ui/icons/full/eview16/package.png" tooltip="" closeable="true">
|
||||
@ -353,7 +359,7 @@
|
||||
</children>
|
||||
<children xsi:type="menu:ToolBar" xmi:id="_zP6PkKQ9Ee-dJ6jf0FqBhw" elementId="org.eclipse.ui.workbench.file">
|
||||
<tags>Draggable</tags>
|
||||
<children xsi:type="menu:HandledToolItem" xmi:id="_zP958KQ9Ee-dJ6jf0FqBhw" elementId="print" visible="false" iconURI="platform:/plugin/org.eclipse.ui/icons/full/etool16/print_edit.png" tooltip="Print" enabled="false" command="_y8AcV6Q9Ee-dJ6jf0FqBhw"/>
|
||||
<children xsi:type="menu:HandledToolItem" xmi:id="_PsHMwJ48EfCrAJ_fZ8joTw" elementId="print" visible="false" iconURI="platform:/plugin/org.eclipse.ui/icons/full/etool16/print_edit.png" tooltip="Print" command="_y8AcV6Q9Ee-dJ6jf0FqBhw"/>
|
||||
</children>
|
||||
<children xsi:type="menu:ToolBar" xmi:id="_zP6PkaQ9Ee-dJ6jf0FqBhw" elementId="group.edit" toBeRendered="false">
|
||||
<tags>toolbarSeparator</tags>
|
||||
@ -381,7 +387,7 @@
|
||||
</children>
|
||||
<children xsi:type="menu:ToolBar" xmi:id="_zP6PmKQ9Ee-dJ6jf0FqBhw" elementId="org.eclipse.ui.workbench.navigate">
|
||||
<tags>Draggable</tags>
|
||||
<children xsi:type="menu:HandledToolItem" xmi:id="_zP-hA6Q9Ee-dJ6jf0FqBhw" elementId="org.eclipse.ui.window.pinEditor" visible="false" iconURI="platform:/plugin/org.eclipse.ui/icons/full/etool16/pin_editor.png" tooltip="Pin Editor" type="Check" command="_y7-m8KQ9Ee-dJ6jf0FqBhw"/>
|
||||
<children xsi:type="menu:HandledToolItem" xmi:id="_PsKQEp48EfCrAJ_fZ8joTw" elementId="org.eclipse.ui.window.pinEditor" visible="false" iconURI="platform:/plugin/org.eclipse.ui/icons/full/etool16/pin_editor.png" tooltip="Pin Editor" type="Check" command="_y7-m8KQ9Ee-dJ6jf0FqBhw"/>
|
||||
</children>
|
||||
<children xsi:type="menu:ToolBar" xmi:id="_zP6PmaQ9Ee-dJ6jf0FqBhw" elementId="group.editor" toBeRendered="false">
|
||||
<tags>toolbarSeparator</tags>
|
||||
|
||||
@ -1,3 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<section name="Workbench">
|
||||
<list key="org.eclipse.ui.internal.wizards.datatransfer.SmartImportRootWizardPage.knownSources">
|
||||
<item value="C:\DCS_MissionDev"/>
|
||||
</list>
|
||||
<list key="installedFeatures">
|
||||
<item value="org.eclipse.dltk.core:5.9.0.201803230529"/>
|
||||
<item value="org.eclipse.emf.common:2.14.0.v20180308-1144"/>
|
||||
<item value="org.eclipse.emf.ecore:2.14.0.v20180213-0937"/>
|
||||
<item value="org.eclipse.help:2.2.200.v20180308-0630"/>
|
||||
<item value="org.eclipse.ldt.core:1.4.2.201804031433"/>
|
||||
<item value="org.eclipse.ldt.lua52:1.4.2.201804031433"/>
|
||||
<item value="org.eclipse.ldt.product:1.4.2.201804031433"/>
|
||||
<item value="org.eclipse.ldt:1.4.2.201804031433"/>
|
||||
<item value="org.eclipse.platform:4.8.0.v20180308-0630"/>
|
||||
<item value="org.eclipse.rcp:4.8.0.v20180308-0630"/>
|
||||
</list>
|
||||
</section>
|
||||
|
||||
@ -1,5 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<section name="Workbench">
|
||||
<section name="WorkbenchPreferenceDialogSettings">
|
||||
<item value="657" key="DIALOG_X_ORIGIN"/>
|
||||
<item value="0" key="DIALOG_Y_ORIGIN"/>
|
||||
</section>
|
||||
<section name="org.eclipse.ui.internal.QuickAccess">
|
||||
<item value="-1" key="dialogHeight"/>
|
||||
<item value="-1" key="dialogWidth"/>
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
#Sat Nov 16 11:11:18 CST 2024
|
||||
#Tue Sep 30 15:30:00 CDT 2025
|
||||
org.eclipse.core.runtime=2
|
||||
org.eclipse.platform=4.8.0.v20180308-0630
|
||||
|
||||
BIN
DCS_Kola/F99th-Operation_Polar_Shield_1.0.0.miz
Normal file
BIN
DCS_Kola/F99th-Operation_Polar_Shield_1.0.0.miz
Normal file
Binary file not shown.
Binary file not shown.
239
DCS_Kola/Operation_Polar_Shield/Moose_CaptureZones.lua
Normal file
239
DCS_Kola/Operation_Polar_Shield/Moose_CaptureZones.lua
Normal file
@ -0,0 +1,239 @@
|
||||
-- Setup Capture Missions & Zones
|
||||
|
||||
|
||||
-- Setup BLUE Missions
|
||||
do -- Missions
|
||||
|
||||
US_Mission_Capture_Airfields = MISSION:New( US_CC, "Capture the Airfields", "Primary",
|
||||
"Capture the Air Bases marked on your F10 map.\n" ..
|
||||
"Destroy enemy ground forces in the surrounding area, " ..
|
||||
"then occupy each capture zone with a platoon.\n " ..
|
||||
"Your orders are to hold position until all capture zones are taken.\n" ..
|
||||
"Use the map (F10) for a clear indication of the location of each capture zone.\n" ..
|
||||
"Note that heavy resistance can be expected at the airbases!\n"
|
||||
, coalition.side.BLUE)
|
||||
|
||||
US_Score = SCORING:New( "Capture Airfields" )
|
||||
|
||||
US_Mission_Capture_Airfields:AddScoring( US_Score )
|
||||
|
||||
US_Mission_Capture_Airfields:Start()
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- Red Airbases (from TADC configuration)
|
||||
env.info("[DEBUG] Initializing Capture Zone: Kilpyavr")
|
||||
CaptureZone_Kilpyavr = ZONE:New( "Capture Kilpyavr" )
|
||||
ZoneCapture_Kilpyavr = ZONE_CAPTURE_COALITION:New( CaptureZone_Kilpyavr, coalition.side.RED )
|
||||
-- SetMarkReadOnly method not available in this MOOSE version - feature disabled
|
||||
ZoneCapture_Kilpyavr:__Guard( 1 )
|
||||
ZoneCapture_Kilpyavr:Start( 30, 30 )
|
||||
env.info("[DEBUG] Kilpyavr zone initialization complete")
|
||||
|
||||
env.info("[DEBUG] Initializing Capture Zone: Severomorsk-1")
|
||||
CaptureZone_Severomorsk_1 = ZONE:New( "Capture Severomorsk-1" )
|
||||
ZoneCapture_Severomorsk_1 = ZONE_CAPTURE_COALITION:New( CaptureZone_Severomorsk_1, coalition.side.RED )
|
||||
-- SetMarkReadOnly method not available in this MOOSE version - feature disabled
|
||||
ZoneCapture_Severomorsk_1:__Guard( 1 )
|
||||
ZoneCapture_Severomorsk_1:Start( 30, 30 )
|
||||
env.info("[DEBUG] Severomorsk-1 zone initialization complete")
|
||||
|
||||
env.info("[DEBUG] Initializing Capture Zone: Severomorsk-3")
|
||||
CaptureZone_Severomorsk_3 = ZONE:New( "Capture Severomorsk-3" )
|
||||
ZoneCapture_Severomorsk_3 = ZONE_CAPTURE_COALITION:New( CaptureZone_Severomorsk_3, coalition.side.RED )
|
||||
-- SetMarkReadOnly method not available in this MOOSE version - feature disabled
|
||||
ZoneCapture_Severomorsk_3:__Guard( 1 )
|
||||
ZoneCapture_Severomorsk_3:Start( 30, 30 )
|
||||
env.info("[DEBUG] Severomorsk-3 zone initialization complete")
|
||||
|
||||
env.info("[DEBUG] Initializing Capture Zone: Murmansk International")
|
||||
CaptureZone_Murmansk_International = ZONE:New( "Capture Murmansk International" )
|
||||
ZoneCapture_Murmansk_International = ZONE_CAPTURE_COALITION:New( CaptureZone_Murmansk_International, coalition.side.RED )
|
||||
-- SetMarkReadOnly method not available in this MOOSE version - feature disabled
|
||||
ZoneCapture_Murmansk_International:__Guard( 1 )
|
||||
ZoneCapture_Murmansk_International:Start( 30, 30 )
|
||||
env.info("[DEBUG] Murmansk International zone initialization complete")
|
||||
|
||||
env.info("[DEBUG] Initializing Capture Zone: Monchegorsk")
|
||||
CaptureZone_Monchegorsk = ZONE:New( "Capture Monchegorsk" )
|
||||
ZoneCapture_Monchegorsk = ZONE_CAPTURE_COALITION:New( CaptureZone_Monchegorsk, coalition.side.RED )
|
||||
-- SetMarkReadOnly method not available in this MOOSE version - feature disabled
|
||||
ZoneCapture_Monchegorsk:__Guard( 1 )
|
||||
ZoneCapture_Monchegorsk:Start( 30, 30 )
|
||||
env.info("[DEBUG] Monchegorsk zone initialization complete")
|
||||
|
||||
env.info("[DEBUG] Initializing Capture Zone: Olenya")
|
||||
CaptureZone_Olenya = ZONE:New( "Capture Olenya" )
|
||||
ZoneCapture_Olenya = ZONE_CAPTURE_COALITION:New( CaptureZone_Olenya, coalition.side.RED )
|
||||
-- SetMarkReadOnly method not available in this MOOSE version - feature disabled
|
||||
ZoneCapture_Olenya:__Guard( 1 )
|
||||
ZoneCapture_Olenya:Start( 30, 30 )
|
||||
env.info("[DEBUG] Olenya zone initialization complete")
|
||||
|
||||
env.info("[DEBUG] Initializing Capture Zone: Afrikanda")
|
||||
CaptureZone_Afrikanda = ZONE:New( "Capture Afrikanda" )
|
||||
ZoneCapture_Afrikanda = ZONE_CAPTURE_COALITION:New( CaptureZone_Afrikanda, coalition.side.RED )
|
||||
-- SetMarkReadOnly method not available in this MOOSE version - feature disabled
|
||||
ZoneCapture_Afrikanda:__Guard( 1 )
|
||||
ZoneCapture_Afrikanda:Start( 30, 30 )
|
||||
env.info("[DEBUG] Afrikanda zone initialization complete")
|
||||
|
||||
env.info("[DEBUG] Initializing Capture Zone: The Mountain")
|
||||
CaptureZone_The_Mountain = ZONE:New( "Capture The Mountain" )
|
||||
ZoneCapture_The_Mountain = ZONE_CAPTURE_COALITION:New( CaptureZone_The_Mountain, coalition.side.RED )
|
||||
-- SetMarkReadOnly method not available in this MOOSE version - feature disabled
|
||||
ZoneCapture_The_Mountain:__Guard( 1 )
|
||||
ZoneCapture_The_Mountain:Start( 30, 30 )
|
||||
env.info("[DEBUG] The Mountain zone initialization complete")
|
||||
|
||||
env.info("[DEBUG] Initializing Capture Zone: The River")
|
||||
CaptureZone_The_River = ZONE:New( "Capture The River" )
|
||||
ZoneCapture_The_River = ZONE_CAPTURE_COALITION:New( CaptureZone_The_River, coalition.side.RED )
|
||||
-- SetMarkReadOnly method not available in this MOOSE version - feature disabled
|
||||
ZoneCapture_The_River:__Guard( 1 )
|
||||
ZoneCapture_The_River:Start( 30, 30 )
|
||||
env.info("[DEBUG] The River zone initialization complete")
|
||||
|
||||
env.info("[DEBUG] Initializing Capture Zone: The Gulf")
|
||||
CaptureZone_The_Gulf = ZONE:New( "Capture The Gulf" )
|
||||
ZoneCapture_The_Gulf = ZONE_CAPTURE_COALITION:New( CaptureZone_The_Gulf, coalition.side.RED )
|
||||
-- SetMarkReadOnly method not available in this MOOSE version - feature disabled
|
||||
ZoneCapture_The_Gulf:__Guard( 1 )
|
||||
ZoneCapture_The_Gulf:Start( 30, 30 )
|
||||
env.info("[DEBUG] The Gulf zone initialization complete")
|
||||
|
||||
|
||||
|
||||
-- Event handler functions - define them separately for each zone
|
||||
local function OnEnterGuarded(ZoneCapture, From, Event, To)
|
||||
if From ~= To then
|
||||
local Coalition = ZoneCapture:GetCoalition()
|
||||
if Coalition == coalition.side.BLUE then
|
||||
ZoneCapture:Smoke( SMOKECOLOR.Blue )
|
||||
US_CC:MessageTypeToCoalition( string.format( "%s is under protection of the USA", ZoneCapture:GetZoneName() ), MESSAGE.Type.Information )
|
||||
RU_CC:MessageTypeToCoalition( string.format( "%s is under protection of the USA", ZoneCapture:GetZoneName() ), MESSAGE.Type.Information )
|
||||
else
|
||||
ZoneCapture:Smoke( SMOKECOLOR.Red )
|
||||
RU_CC:MessageTypeToCoalition( string.format( "%s is under protection of Russia", ZoneCapture:GetZoneName() ), MESSAGE.Type.Information )
|
||||
US_CC:MessageTypeToCoalition( string.format( "%s is under protection of Russia", ZoneCapture:GetZoneName() ), MESSAGE.Type.Information )
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function OnEnterEmpty(ZoneCapture)
|
||||
ZoneCapture:Smoke( SMOKECOLOR.Green )
|
||||
US_CC:MessageTypeToCoalition( string.format( "%s is unprotected, and can be captured!", ZoneCapture:GetZoneName() ), MESSAGE.Type.Information )
|
||||
RU_CC:MessageTypeToCoalition( string.format( "%s is unprotected, and can be captured!", ZoneCapture:GetZoneName() ), MESSAGE.Type.Information )
|
||||
end
|
||||
|
||||
local function OnEnterAttacked(ZoneCapture)
|
||||
ZoneCapture:Smoke( SMOKECOLOR.White )
|
||||
local Coalition = ZoneCapture:GetCoalition()
|
||||
if Coalition == coalition.side.BLUE then
|
||||
US_CC:MessageTypeToCoalition( string.format( "%s is under attack by Russia", ZoneCapture:GetZoneName() ), MESSAGE.Type.Information )
|
||||
RU_CC:MessageTypeToCoalition( string.format( "We are attacking %s", ZoneCapture:GetZoneName() ), MESSAGE.Type.Information )
|
||||
else
|
||||
RU_CC:MessageTypeToCoalition( string.format( "%s is under attack by the USA", ZoneCapture:GetZoneName() ), MESSAGE.Type.Information )
|
||||
US_CC:MessageTypeToCoalition( string.format( "We are attacking %s", ZoneCapture:GetZoneName() ), MESSAGE.Type.Information )
|
||||
end
|
||||
end
|
||||
|
||||
local function OnEnterCaptured(ZoneCapture)
|
||||
local Coalition = ZoneCapture:GetCoalition()
|
||||
if Coalition == coalition.side.BLUE then
|
||||
RU_CC:MessageTypeToCoalition( string.format( "%s is captured by the USA, we lost it!", ZoneCapture:GetZoneName() ), MESSAGE.Type.Information )
|
||||
US_CC:MessageTypeToCoalition( string.format( "We captured %s, Excellent job!", ZoneCapture:GetZoneName() ), MESSAGE.Type.Information )
|
||||
else
|
||||
US_CC:MessageTypeToCoalition( string.format( "%s is captured by Russia, we lost it!", ZoneCapture:GetZoneName() ), MESSAGE.Type.Information )
|
||||
RU_CC:MessageTypeToCoalition( string.format( "We captured %s, Excellent job!", ZoneCapture:GetZoneName() ), MESSAGE.Type.Information )
|
||||
end
|
||||
|
||||
ZoneCapture:AddScore( "Captured", "Zone captured: Extra points granted.", 200 )
|
||||
ZoneCapture:__Guard( 30 )
|
||||
end
|
||||
|
||||
-- Apply event handlers to all zone capture objects
|
||||
local zoneCaptureObjects = {
|
||||
ZoneCapture_Kilpyavr,
|
||||
ZoneCapture_Severomorsk_1,
|
||||
ZoneCapture_Severomorsk_3,
|
||||
ZoneCapture_Murmansk_International,
|
||||
ZoneCapture_Monchegorsk,
|
||||
ZoneCapture_Olenya,
|
||||
ZoneCapture_Afrikanda,
|
||||
ZoneCapture_The_Mountain,
|
||||
ZoneCapture_The_River,
|
||||
ZoneCapture_The_Gulf
|
||||
}
|
||||
|
||||
-- Set up event handlers for each zone with proper MOOSE methods and debugging
|
||||
local zoneNames = {
|
||||
"Kilpyavr", "Severomorsk-1", "Severomorsk-3", "Murmansk International",
|
||||
"Monchegorsk", "Olenya", "Afrikanda", "The Mountain", "The River", "The Gulf"
|
||||
}
|
||||
|
||||
for i, zoneCapture in ipairs(zoneCaptureObjects) do
|
||||
if zoneCapture then
|
||||
local zoneName = zoneNames[i] or ("Zone " .. i)
|
||||
|
||||
-- Proper MOOSE event handlers for ZONE_CAPTURE_COALITION
|
||||
zoneCapture.OnEnterGuarded = OnEnterGuarded
|
||||
zoneCapture.OnEnterEmpty = OnEnterEmpty
|
||||
zoneCapture.OnEnterAttacked = OnEnterAttacked
|
||||
zoneCapture.OnEnterCaptured = OnEnterCaptured
|
||||
|
||||
-- Debug: Check if the underlying zone exists
|
||||
local success, zone = pcall(function() return zoneCapture:GetZone() end)
|
||||
if success and zone then
|
||||
env.info("✓ Zone 'Capture " .. zoneName .. "' successfully created and linked")
|
||||
|
||||
-- Try to make zone borders visible with different approach
|
||||
local drawSuccess, drawError = pcall(function()
|
||||
zone:DrawZone(-1, {1, 0, 0}, 0.5, {1, 0, 0}, 0.2, 2, true)
|
||||
end)
|
||||
|
||||
if not drawSuccess then
|
||||
env.info("⚠ Zone 'Capture " .. zoneName .. "' border drawing failed: " .. tostring(drawError))
|
||||
-- Alternative: Try simpler zone marking
|
||||
pcall(function()
|
||||
zone:SmokeZone(SMOKECOLOR.Red, 30)
|
||||
end)
|
||||
else
|
||||
env.info("✓ Zone 'Capture " .. zoneName .. "' border drawn successfully")
|
||||
end
|
||||
else
|
||||
env.info("✗ ERROR: Zone 'Capture " .. zoneName .. "' not found in mission editor!")
|
||||
env.info(" Make sure you have a trigger zone named exactly: 'Capture " .. zoneName .. "'")
|
||||
end
|
||||
else
|
||||
env.info("✗ ERROR: Zone capture object " .. i .. " (" .. (zoneNames[i] or "Unknown") .. ") is nil!")
|
||||
end
|
||||
end
|
||||
|
||||
-- Additional specific check for Olenya
|
||||
env.info("=== OLENYA SPECIFIC DEBUG ===")
|
||||
if ZoneCapture_Olenya then
|
||||
env.info("✓ ZoneCapture_Olenya object exists")
|
||||
local success, result = pcall(function() return ZoneCapture_Olenya:GetZoneName() end)
|
||||
if success then
|
||||
env.info("✓ Zone name: " .. tostring(result))
|
||||
else
|
||||
env.info("✗ Could not get zone name: " .. tostring(result))
|
||||
end
|
||||
|
||||
local success2, zone = pcall(function() return ZoneCapture_Olenya:GetZone() end)
|
||||
if success2 and zone then
|
||||
env.info("✓ Underlying zone object exists")
|
||||
local coord = zone:GetCoordinate()
|
||||
if coord then
|
||||
env.info("✓ Zone coordinate: " .. coord:ToStringLLDMS())
|
||||
end
|
||||
else
|
||||
env.info("✗ Underlying zone object missing: " .. tostring(zone))
|
||||
end
|
||||
else
|
||||
env.info("✗ ZoneCapture_Olenya object is nil!")
|
||||
end
|
||||
|
||||
295
DCS_Kola/Operation_Polar_Shield/Moose_OperationPolarShield.lua
Normal file
295
DCS_Kola/Operation_Polar_Shield/Moose_OperationPolarShield.lua
Normal file
@ -0,0 +1,295 @@
|
||||
|
||||
-- Operation Polar Shield Mission Script using MOOSE
|
||||
|
||||
|
||||
-- Set Spawn Limits - These limits can be adjusted to change the number of ground units that will spawn for each type.
|
||||
-- These are max units, not groups. For example, the manpad group in the mission editor is 2 units. So if MAX_RU_MANPADS = 10, then 5 groups of manpads will spawn.
|
||||
-- So you have to knnow how many units are in each group to set these limits effectively.
|
||||
|
||||
MAX_RU_MANPADS = 10 -- Each group has 2 units, so 10 = 5 groups of 2.
|
||||
MAX_RU_AAA = 25 -- Each group has 1 units, so 25 = 25 groups of 1.
|
||||
MAX_RU_TANK_T90 = 10 -- The rest of these groups have 1 unit each.
|
||||
MAX_RU_TANK_T55 = 10
|
||||
MAX_RU_IFV = 35
|
||||
MAX_RU_IFV_Technicals = 45
|
||||
MAX_RU_SA08 = 5
|
||||
MAX_RU_SA19 = 5
|
||||
MAX_RU_SA15 = 5
|
||||
-- MAX_RU_ARTY = 10 -- Disabled lower regardless of this setting. Will fix later.
|
||||
|
||||
|
||||
-- Build Command Center and Mission for Blue Coalition
|
||||
local blueHQ = GROUP:FindByName("BLUEHQ")
|
||||
if blueHQ then
|
||||
US_CC = COMMANDCENTER:New(blueHQ, "USA HQ")
|
||||
US_Mission = MISSION:New(US_CC, "Operation Polar Hammer", "Primary", "", coalition.side.BLUE)
|
||||
US_Score = SCORING:New("Operation Polar Hammer")
|
||||
--US_Mission:AddScoring(US_Score)
|
||||
--US_Mission:Start()
|
||||
env.info("Blue Coalition Command Center and Mission started successfully")
|
||||
else
|
||||
env.info("ERROR: BLUEHQ group not found! Blue mission will not start.")
|
||||
end
|
||||
|
||||
--Build Command Center and Mission Red
|
||||
local redHQ = GROUP:FindByName("REDHQ")
|
||||
if redHQ then
|
||||
RU_CC = COMMANDCENTER:New(redHQ, "Russia HQ")
|
||||
RU_Mission = MISSION:New(RU_CC, "Operation Polar Shield", "Primary", "Destroy the City of Ushuaia and its supporting FARPS", coalition.side.RED)
|
||||
--RU_Score = SCORING:New("Operation Polar Shield")
|
||||
--RU_Mission:AddScoring(RU_Score)
|
||||
RU_Mission:Start()
|
||||
env.info("Red Coalition Command Center and Mission started successfully")
|
||||
else
|
||||
env.info("ERROR: REDHQ group not found! Red mission will not start.")
|
||||
end
|
||||
|
||||
-- Table of Zones to spread red ground forces randomly around.
|
||||
RandomSpawnZoneTable = {
|
||||
ZONE:New("sp-1"), ZONE:New("sp-2"), ZONE:New("sp-3"), ZONE:New("sp-4"), ZONE:New("sp-5"),
|
||||
ZONE:New("sp-6"), ZONE:New("sp-7"), ZONE:New("sp-8"), ZONE:New("sp-9"), ZONE:New("sp-10"),
|
||||
ZONE:New("sp-11"), ZONE:New("sp-12"), ZONE:New("sp-13"), ZONE:New("sp-14"), ZONE:New("sp-15"),
|
||||
ZONE:New("sp-16"), ZONE:New("sp-17"), ZONE:New("sp-18"), ZONE:New("sp-19"), ZONE:New("sp-20"),
|
||||
ZONE:New("sp-21"), ZONE:New("sp-22"), ZONE:New("sp-23"), ZONE:New("sp-24"), ZONE:New("sp-25"),
|
||||
ZONE:New("sp-26"), ZONE:New("sp-27"), ZONE:New("sp-28"), ZONE:New("sp-29"), ZONE:New("sp-30"),
|
||||
ZONE:New("sp-31"), ZONE:New("sp-32"), ZONE:New("sp-33"), ZONE:New("sp-34"), ZONE:New("sp-35"),
|
||||
ZONE:New("sp-36"), ZONE:New("sp-37"), ZONE:New("sp-38"), ZONE:New("sp-39"), ZONE:New("sp-40"),
|
||||
ZONE:New("sp-41"), ZONE:New("sp-42"), ZONE:New("sp-43"), ZONE:New("sp-44"), ZONE:New("sp-45"),
|
||||
ZONE:New("sp-46"), ZONE:New("sp-47"), ZONE:New("sp-48"), ZONE:New("sp-49"), ZONE:New("sp-50"),
|
||||
ZONE:New("sp-51"), ZONE:New("sp-52"), ZONE:New("sp-53"), ZONE:New("sp-54"), ZONE:New("sp-55"),
|
||||
ZONE:New("sp-56"), ZONE:New("sp-57"), ZONE:New("sp-58"), ZONE:New("sp-59"), ZONE:New("sp-60"),
|
||||
ZONE:New("sp-61"), ZONE:New("sp-62"), ZONE:New("sp-63"), ZONE:New("sp-64"), ZONE:New("sp-65"),
|
||||
ZONE:New("sp-66"), ZONE:New("sp-67"), ZONE:New("sp-68"), ZONE:New("sp-69"), ZONE:New("sp-70"),
|
||||
ZONE:New("sp-71"), ZONE:New("sp-72"), ZONE:New("sp-73"), ZONE:New("sp-74"), ZONE:New("sp-75"),
|
||||
ZONE:New("sp-76"), ZONE:New("sp-77"), ZONE:New("sp-78"), ZONE:New("sp-79"), ZONE:New("sp-80"),
|
||||
ZONE:New("sp-81"), ZONE:New("sp-82"), ZONE:New("sp-83"), ZONE:New("sp-84"), ZONE:New("sp-85"),
|
||||
ZONE:New("sp-86"), ZONE:New("sp-87"), ZONE:New("sp-88"), ZONE:New("sp-89"), ZONE:New("sp-90"),
|
||||
ZONE:New("sp-91"), ZONE:New("sp-92"), ZONE:New("sp-93"), ZONE:New("sp-94"), ZONE:New("sp-95"),
|
||||
ZONE:New("sp-96"), ZONE:New("sp-97"), ZONE:New("sp-98"), ZONE:New("sp-99"), ZONE:New("sp-100"),
|
||||
ZONE:New("sp-101"), ZONE:New("sp-102"), ZONE:New("sp-103"), ZONE:New("sp-104"), ZONE:New("sp-105"),
|
||||
ZONE:New("sp-106"), ZONE:New("sp-107"), ZONE:New("sp-108"), ZONE:New("sp-109"), ZONE:New("sp-110"),
|
||||
ZONE:New("sp-111"), ZONE:New("sp-112"), ZONE:New("sp-113"), ZONE:New("sp-114"), ZONE:New("sp-115"),
|
||||
ZONE:New("sp-116"), ZONE:New("sp-117"), ZONE:New("sp-118"), ZONE:New("sp-119"), ZONE:New("sp-120"),
|
||||
ZONE:New("sp-121"), ZONE:New("sp-122"), ZONE:New("sp-123"), ZONE:New("sp-124"), ZONE:New("sp-125"),
|
||||
ZONE:New("sp-126"), ZONE:New("sp-127"), ZONE:New("sp-128"), ZONE:New("sp-129"), ZONE:New("sp-130"),
|
||||
ZONE:New("sp-131"), ZONE:New("sp-132"), ZONE:New("sp-133"), ZONE:New("sp-134"), ZONE:New("sp-135"),
|
||||
ZONE:New("sp-136"), ZONE:New("sp-137"), ZONE:New("sp-138"), ZONE:New("sp-139"), ZONE:New("sp-140"),
|
||||
ZONE:New("sp-141"), ZONE:New("sp-142"), ZONE:New("sp-143"), ZONE:New("sp-144"), ZONE:New("sp-145"),
|
||||
ZONE:New("sp-146"), ZONE:New("sp-147"), ZONE:New("sp-148"), ZONE:New("sp-149"), ZONE:New("sp-150"),
|
||||
ZONE:New("sp-151"), ZONE:New("sp-152"), ZONE:New("sp-153"), ZONE:New("sp-154"), ZONE:New("sp-155"),
|
||||
ZONE:New("sp-156"), ZONE:New("sp-157"), ZONE:New("sp-158"), ZONE:New("sp-159"), ZONE:New("sp-160"),
|
||||
ZONE:New("sp-161"), ZONE:New("sp-162"), ZONE:New("sp-163"), ZONE:New("sp-164"), ZONE:New("sp-165"),
|
||||
ZONE:New("sp-166"), ZONE:New("sp-167"), ZONE:New("sp-168"), ZONE:New("sp-169"), ZONE:New("sp-170"),
|
||||
ZONE:New("sp-171"), ZONE:New("sp-172"), ZONE:New("sp-173"), ZONE:New("sp-174"), ZONE:New("sp-175"),
|
||||
ZONE:New("sp-176"), ZONE:New("sp-177"), ZONE:New("sp-178"), ZONE:New("sp-179"), ZONE:New("sp-180"),
|
||||
ZONE:New("sp-181"), ZONE:New("sp-182"), ZONE:New("sp-183"), ZONE:New("sp-184"), ZONE:New("sp-185"),
|
||||
ZONE:New("sp-186"), ZONE:New("sp-187"), ZONE:New("sp-188"), ZONE:New("sp-189"), ZONE:New("sp-190"),
|
||||
ZONE:New("sp-191"), ZONE:New("sp-192"), ZONE:New("sp-193"), ZONE:New("sp-194"), ZONE:New("sp-195"),
|
||||
ZONE:New("sp-196"), ZONE:New("sp-197"), ZONE:New("sp-198"), ZONE:New("sp-199"), ZONE:New("sp-200"),
|
||||
ZONE:New("sp-201"), ZONE:New("sp-202"), ZONE:New("sp-203"), ZONE:New("sp-204"), ZONE:New("sp-205"),
|
||||
ZONE:New("sp-206"), ZONE:New("sp-207"), ZONE:New("sp-208"), ZONE:New("sp-209"), ZONE:New("sp-210"),
|
||||
ZONE:New("sp-211"), ZONE:New("sp-212"), ZONE:New("sp-213"), ZONE:New("sp-214"), ZONE:New("sp-215"),
|
||||
ZONE:New("sp-216"), ZONE:New("sp-217"), ZONE:New("sp-218"), ZONE:New("sp-219"), ZONE:New("sp-220"),
|
||||
ZONE:New("sp-221"), ZONE:New("sp-222"), ZONE:New("sp-223"), ZONE:New("sp-224"), ZONE:New("sp-225"),
|
||||
ZONE:New("sp-226"), ZONE:New("sp-227"), ZONE:New("sp-228"), ZONE:New("sp-229"), ZONE:New("sp-230"),
|
||||
ZONE:New("sp-231"), ZONE:New("sp-232"), ZONE:New("sp-233"), ZONE:New("sp-234"), ZONE:New("sp-235"),
|
||||
ZONE:New("sp-236"), ZONE:New("sp-237"), ZONE:New("sp-238"), ZONE:New("sp-239"), ZONE:New("sp-240"),
|
||||
ZONE:New("sp-241"), ZONE:New("sp-242"), ZONE:New("sp-243"), ZONE:New("sp-244"), ZONE:New("sp-245"),
|
||||
ZONE:New("sp-246"), ZONE:New("sp-247"), ZONE:New("sp-248"), ZONE:New("sp-249"), ZONE:New("sp-250"),
|
||||
ZONE:New("sp-251"), ZONE:New("sp-252"), ZONE:New("sp-253"), ZONE:New("sp-254"), ZONE:New("sp-255"),
|
||||
ZONE:New("sp-256"), ZONE:New("sp-257"), ZONE:New("sp-258"), ZONE:New("sp-259"), ZONE:New("sp-260"),
|
||||
ZONE:New("sp-261"), ZONE:New("sp-262"), ZONE:New("sp-263"), ZONE:New("sp-264"), ZONE:New("sp-265"),
|
||||
ZONE:New("sp-266"), ZONE:New("sp-267"), ZONE:New("sp-268"), ZONE:New("sp-269"), ZONE:New("sp-270"),
|
||||
ZONE:New("sp-271"), ZONE:New("sp-272"), ZONE:New("sp-273"), ZONE:New("sp-274"), ZONE:New("sp-275"),
|
||||
ZONE:New("sp-276"), ZONE:New("sp-277"), ZONE:New("sp-278"), ZONE:New("sp-279"), ZONE:New("sp-280"),
|
||||
ZONE:New("sp-281"), ZONE:New("sp-282"), ZONE:New("sp-283"), ZONE:New("sp-284"), ZONE:New("sp-285"),
|
||||
ZONE:New("sp-286"), ZONE:New("sp-287"), ZONE:New("sp-288"), ZONE:New("sp-289"), ZONE:New("sp-290"),
|
||||
ZONE:New("sp-291"), ZONE:New("sp-292"), ZONE:New("sp-293"), ZONE:New("sp-294"), ZONE:New("sp-295"),
|
||||
ZONE:New("sp-296"), ZONE:New("sp-297"), ZONE:New("sp-298"), ZONE:New("sp-299"), ZONE:New("sp-300"),
|
||||
ZONE:New("sp-301"), ZONE:New("sp-302"), ZONE:New("sp-303"), ZONE:New("sp-304"), ZONE:New("sp-305"),
|
||||
ZONE:New("sp-306"), ZONE:New("sp-307"), ZONE:New("sp-308"), ZONE:New("sp-309"), ZONE:New("sp-310"),
|
||||
ZONE:New("sp-311"), ZONE:New("sp-312"), ZONE:New("sp-313"), ZONE:New("sp-314"), ZONE:New("sp-315"),
|
||||
ZONE:New("sp-316"), ZONE:New("sp-317"), ZONE:New("sp-318"), ZONE:New("sp-319"), ZONE:New("sp-320"),
|
||||
ZONE:New("sp-321"), ZONE:New("sp-322"), ZONE:New("sp-323"), ZONE:New("sp-324"), ZONE:New("sp-325"),
|
||||
ZONE:New("sp-326"), ZONE:New("sp-327"), ZONE:New("sp-328"), ZONE:New("sp-329"), ZONE:New("sp-330"),
|
||||
ZONE:New("sp-331"), ZONE:New("sp-332"), ZONE:New("sp-333"), ZONE:New("sp-334"), ZONE:New("sp-335"),
|
||||
ZONE:New("sp-336"), ZONE:New("sp-337"), ZONE:New("sp-338"), ZONE:New("sp-339"), ZONE:New("sp-340"),
|
||||
ZONE:New("sp-341"), ZONE:New("sp-342"), ZONE:New("sp-343"), ZONE:New("sp-344"), ZONE:New("sp-345"),
|
||||
ZONE:New("sp-346"), ZONE:New("sp-347"), ZONE:New("sp-348"), ZONE:New("sp-349"), ZONE:New("sp-350"),
|
||||
ZONE:New("sp-351"), ZONE:New("sp-352"), ZONE:New("sp-353"), ZONE:New("sp-354"), ZONE:New("sp-355"),
|
||||
ZONE:New("sp-356"), ZONE:New("sp-357"), ZONE:New("sp-358"), ZONE:New("sp-359"), ZONE:New("sp-360"),
|
||||
ZONE:New("sp-361"), ZONE:New("sp-362"), ZONE:New("sp-363"), ZONE:New("sp-364"), ZONE:New("sp-365"),
|
||||
ZONE:New("sp-366"), ZONE:New("sp-367"), ZONE:New("sp-368"), ZONE:New("sp-369"), ZONE:New("sp-370"),
|
||||
ZONE:New("sp-371"), ZONE:New("sp-372"), ZONE:New("sp-373"), ZONE:New("sp-374"), ZONE:New("sp-375"),
|
||||
ZONE:New("sp-376"), ZONE:New("sp-377"), ZONE:New("sp-378"), ZONE:New("sp-379"), ZONE:New("sp-380"),
|
||||
ZONE:New("sp-381"), ZONE:New("sp-382"), ZONE:New("sp-383"), ZONE:New("sp-384"), ZONE:New("sp-385"),
|
||||
ZONE:New("sp-386"), ZONE:New("sp-387"), ZONE:New("sp-388"), ZONE:New("sp-389"), ZONE:New("sp-390"),
|
||||
ZONE:New("sp-391"), ZONE:New("sp-392"), ZONE:New("sp-393"), ZONE:New("sp-394"), ZONE:New("sp-395"),
|
||||
ZONE:New("sp-396"), ZONE:New("sp-397"), ZONE:New("sp-398"), ZONE:New("sp-399"), ZONE:New("sp-400"),
|
||||
ZONE:New("sp-401"), ZONE:New("sp-402"), ZONE:New("sp-403"), ZONE:New("sp-404"), ZONE:New("sp-405"),
|
||||
ZONE:New("sp-406"), ZONE:New("sp-407"), ZONE:New("sp-408"), ZONE:New("sp-409"), ZONE:New("sp-410"),
|
||||
ZONE:New("sp-411"), ZONE:New("sp-412"), ZONE:New("sp-413"), ZONE:New("sp-414"), ZONE:New("sp-415"),
|
||||
ZONE:New("sp-416"), ZONE:New("sp-417"), ZONE:New("sp-418"), ZONE:New("sp-419"), ZONE:New("sp-420"),
|
||||
ZONE:New("sp-421"), ZONE:New("sp-422"), ZONE:New("sp-423"), ZONE:New("sp-424"), ZONE:New("sp-425"),
|
||||
ZONE:New("sp-426"), ZONE:New("sp-427"), ZONE:New("sp-428"), ZONE:New("sp-429"), ZONE:New("sp-430"),
|
||||
ZONE:New("sp-431"), ZONE:New("sp-432"), ZONE:New("sp-433"), ZONE:New("sp-434"), ZONE:New("sp-435"),
|
||||
ZONE:New("sp-436"), ZONE:New("sp-437"), ZONE:New("sp-438"), ZONE:New("sp-439"), ZONE:New("sp-440"),
|
||||
ZONE:New("sp-441"), ZONE:New("sp-442"), ZONE:New("sp-443"), ZONE:New("sp-444"), ZONE:New("sp-445"),
|
||||
ZONE:New("sp-446"), ZONE:New("sp-447"), ZONE:New("sp-448"), ZONE:New("sp-449"), ZONE:New("sp-450"),
|
||||
ZONE:New("sp-451"), ZONE:New("sp-452"), ZONE:New("sp-453"), ZONE:New("sp-454"), ZONE:New("sp-455"),
|
||||
ZONE:New("sp-456"), ZONE:New("sp-457"), ZONE:New("sp-458"), ZONE:New("sp-459"), ZONE:New("sp-460"),
|
||||
ZONE:New("sp-461"), ZONE:New("sp-462"), ZONE:New("sp-463"), ZONE:New("sp-464"), ZONE:New("sp-465"),
|
||||
ZONE:New("sp-466"), ZONE:New("sp-467"), ZONE:New("sp-468"), ZONE:New("sp-469"), ZONE:New("sp-470"),
|
||||
ZONE:New("sp-471"), ZONE:New("sp-472"), ZONE:New("sp-473"), ZONE:New("sp-474"), ZONE:New("sp-475"),
|
||||
ZONE:New("sp-476"), ZONE:New("sp-477"), ZONE:New("sp-478"), ZONE:New("sp-479"), ZONE:New("sp-480"),
|
||||
ZONE:New("sp-481"), ZONE:New("sp-482"), ZONE:New("sp-483"), ZONE:New("sp-484"), ZONE:New("sp-485"),
|
||||
ZONE:New("sp-486"), ZONE:New("sp-487"), ZONE:New("sp-488"), ZONE:New("sp-489"), ZONE:New("sp-490"),
|
||||
ZONE:New("sp-491"), ZONE:New("sp-492"), ZONE:New("sp-493"), ZONE:New("sp-494"), ZONE:New("sp-495"),
|
||||
ZONE:New("sp-496"), ZONE:New("sp-497"), ZONE:New("sp-498"), ZONE:New("sp-499"), ZONE:New("sp-500"),
|
||||
ZONE:New("sp-501"), ZONE:New("sp-502"), ZONE:New("sp-503"), ZONE:New("sp-504"), ZONE:New("sp-505"),
|
||||
ZONE:New("sp-506"), ZONE:New("sp-507"), ZONE:New("sp-508"), ZONE:New("sp-509"), ZONE:New("sp-510"),
|
||||
ZONE:New("sp-511"), ZONE:New("sp-512"), ZONE:New("sp-513"), ZONE:New("sp-514"), ZONE:New("sp-515"),
|
||||
ZONE:New("sp-516"), ZONE:New("sp-517"), ZONE:New("sp-518"), ZONE:New("sp-519"), ZONE:New("sp-520"),
|
||||
ZONE:New("sp-521"), ZONE:New("sp-522"), ZONE:New("sp-523"), ZONE:New("sp-524"), ZONE:New("sp-525"),
|
||||
ZONE:New("sp-526"), ZONE:New("sp-527"), ZONE:New("sp-528"), ZONE:New("sp-529"), ZONE:New("sp-530"),
|
||||
ZONE:New("sp-531"), ZONE:New("sp-532"), ZONE:New("sp-533"), ZONE:New("sp-534"), ZONE:New("sp-535"),
|
||||
ZONE:New("sp-536"), ZONE:New("sp-537"), ZONE:New("sp-538"), ZONE:New("sp-539"), ZONE:New("sp-540"),
|
||||
ZONE:New("sp-541"), ZONE:New("sp-542"), ZONE:New("sp-543"), ZONE:New("sp-544"), ZONE:New("sp-545"),
|
||||
ZONE:New("sp-546"), ZONE:New("sp-547"), ZONE:New("sp-548"), ZONE:New("sp-549"), ZONE:New("sp-550"),
|
||||
ZONE:New("sp-551"), ZONE:New("sp-552"), ZONE:New("sp-553"), ZONE:New("sp-554"), ZONE:New("sp-555"),
|
||||
ZONE:New("sp-556"), ZONE:New("sp-557"), ZONE:New("sp-558"), ZONE:New("sp-559"), ZONE:New("sp-560"),
|
||||
ZONE:New("sp-561"), ZONE:New("sp-562"), ZONE:New("sp-563"), ZONE:New("sp-564"), ZONE:New("sp-565"),
|
||||
ZONE:New("sp-566"), ZONE:New("sp-567"), ZONE:New("sp-568"), ZONE:New("sp-569"), ZONE:New("sp-570"),
|
||||
ZONE:New("sp-571"), ZONE:New("sp-572"), ZONE:New("sp-573"), ZONE:New("sp-574"), ZONE:New("sp-575"),
|
||||
ZONE:New("sp-576"), ZONE:New("sp-577"), ZONE:New("sp-578"), ZONE:New("sp-579"), ZONE:New("sp-580"),
|
||||
ZONE:New("sp-581"), ZONE:New("sp-582"), ZONE:New("sp-583"), ZONE:New("sp-584"), ZONE:New("sp-585"),
|
||||
ZONE:New("sp-586"), ZONE:New("sp-587"), ZONE:New("sp-588"), ZONE:New("sp-589"), ZONE:New("sp-590"),
|
||||
ZONE:New("sp-591"), ZONE:New("sp-592"), ZONE:New("sp-593"), ZONE:New("sp-594"), ZONE:New("sp-595"),
|
||||
ZONE:New("sp-596"), ZONE:New("sp-597"), ZONE:New("sp-598"), ZONE:New("sp-599"), ZONE:New("sp-600"),
|
||||
ZONE:New("sp-601"), ZONE:New("sp-602"), ZONE:New("sp-603"), ZONE:New("sp-604"), ZONE:New("sp-605"),
|
||||
ZONE:New("sp-606"), ZONE:New("sp-607"), ZONE:New("sp-608"), ZONE:New("sp-609"), ZONE:New("sp-610"),
|
||||
ZONE:New("sp-611"), ZONE:New("sp-612"), ZONE:New("sp-613"), ZONE:New("sp-614"), ZONE:New("sp-615"),
|
||||
ZONE:New("sp-616"), ZONE:New("sp-617"), ZONE:New("sp-618"), ZONE:New("sp-619"), ZONE:New("sp-620"),
|
||||
ZONE:New("sp-621"), ZONE:New("sp-622"), ZONE:New("sp-623"), ZONE:New("sp-624"), ZONE:New("sp-625"),
|
||||
ZONE:New("sp-626"), ZONE:New("sp-627"), ZONE:New("sp-628"), ZONE:New("sp-629"), ZONE:New("sp-630"),
|
||||
ZONE:New("sp-631"), ZONE:New("sp-632"), ZONE:New("sp-633"), ZONE:New("sp-634"), ZONE:New("sp-635"),
|
||||
ZONE:New("sp-636"), ZONE:New("sp-637"), ZONE:New("sp-638"), ZONE:New("sp-639"), ZONE:New("sp-640"),
|
||||
ZONE:New("sp-641"), ZONE:New("sp-642"), ZONE:New("sp-643"), ZONE:New("sp-644"), ZONE:New("sp-645"),
|
||||
ZONE:New("sp-646"), ZONE:New("sp-647"), ZONE:New("sp-648"), ZONE:New("sp-649"), ZONE:New("sp-650"),
|
||||
ZONE:New("sp-651"), ZONE:New("sp-652"), ZONE:New("sp-653"), ZONE:New("sp-654"), ZONE:New("sp-655"),
|
||||
ZONE:New("sp-656"), ZONE:New("sp-657"), ZONE:New("sp-658"), ZONE:New("sp-659"), ZONE:New("sp-660"),
|
||||
ZONE:New("sp-661"), ZONE:New("sp-662"), ZONE:New("sp-663"), ZONE:New("sp-664"), ZONE:New("sp-665"),
|
||||
ZONE:New("sp-666"), ZONE:New("sp-667"), ZONE:New("sp-668"), ZONE:New("sp-669"), ZONE:New("sp-670"),
|
||||
ZONE:New("sp-671"), ZONE:New("sp-672"), ZONE:New("sp-673"), ZONE:New("sp-674"), ZONE:New("sp-675"),
|
||||
ZONE:New("sp-676"), ZONE:New("sp-677"), ZONE:New("sp-678"), ZONE:New("sp-679"), ZONE:New("sp-680"),
|
||||
ZONE:New("sp-681"), ZONE:New("sp-682"), ZONE:New("sp-683"), ZONE:New("sp-684"), ZONE:New("sp-685"),
|
||||
ZONE:New("sp-686"), ZONE:New("sp-687"), ZONE:New("sp-688"), ZONE:New("sp-689"), ZONE:New("sp-690"),
|
||||
ZONE:New("sp-691"), ZONE:New("sp-692"), ZONE:New("sp-693"), ZONE:New("sp-694"), ZONE:New("sp-695"),
|
||||
ZONE:New("sp-696"), ZONE:New("sp-697"), ZONE:New("sp-698"), ZONE:New("sp-699"), ZONE:New("sp-700")
|
||||
}
|
||||
|
||||
|
||||
-- Spawn Ground Units for Red Coalition
|
||||
|
||||
env.info("=== GROUND UNIT SPAWN DEBUG ===")
|
||||
env.info("MAX_RU_MANPADS: " .. MAX_RU_MANPADS)
|
||||
env.info("RandomSpawnZoneTable size: " .. #RandomSpawnZoneTable)
|
||||
|
||||
-- Check if template groups exist
|
||||
local templateGroups = {
|
||||
"RU_MANPADS-1", "RU_AAA-1", "RU_TANK_T90", "RU_TANK_T55",
|
||||
"RU_IFV-1", "RU_IFV-Technicals", "RU_SA-08", "RU_SA-19", "RU_SA-15"
|
||||
}
|
||||
|
||||
for _, templateName in pairs(templateGroups) do
|
||||
local template = GROUP:FindByName(templateName)
|
||||
if template then
|
||||
env.info("✓ Found template: " .. templateName)
|
||||
else
|
||||
env.info("✗ Missing template: " .. templateName)
|
||||
end
|
||||
end
|
||||
|
||||
-- Check spawn zones
|
||||
local validZones = 0
|
||||
for i, zone in pairs(RandomSpawnZoneTable) do
|
||||
if zone then
|
||||
validZones = validZones + 1
|
||||
else
|
||||
env.info("✗ Invalid zone at index " .. i)
|
||||
end
|
||||
end
|
||||
env.info("Valid spawn zones: " .. validZones .. "/" .. #RandomSpawnZoneTable)
|
||||
|
||||
-- MANPADS Systems
|
||||
env.info("Spawning MANPADS...")
|
||||
RandomSpawns_RU_MANPADS = SPAWN:New( "RU_MANPADS-1" )
|
||||
:InitLimit( MAX_RU_MANPADS, MAX_RU_MANPADS )
|
||||
:InitRandomizeZones( RandomSpawnZoneTable )
|
||||
:SpawnScheduled( .1, .5 )
|
||||
|
||||
-- Anti-Aircraft Artillery
|
||||
env.info("Spawning AAA...")
|
||||
RandomSpawns_RU_AAA = SPAWN:New( "RU_AAA-1" )
|
||||
:InitLimit( MAX_RU_AAA, MAX_RU_AAA )
|
||||
:InitRandomizeZones( RandomSpawnZoneTable )
|
||||
:SpawnScheduled( .1, .5 )
|
||||
|
||||
-- Main Battle Tanks
|
||||
env.info("Spawning T-90 tanks...")
|
||||
RandomSpawns_RU_TANK_T90 = SPAWN:New( "RU_TANK_T90" )
|
||||
:InitLimit( MAX_RU_TANK_T90, MAX_RU_TANK_T90 )
|
||||
:InitRandomizeZones( RandomSpawnZoneTable )
|
||||
:SpawnScheduled( .1, .5 )
|
||||
|
||||
env.info("Spawning T-55 tanks...")
|
||||
RandomSpawns_RU_TANK_T55 = SPAWN:New( "RU_TANK_T55" )
|
||||
:InitLimit( MAX_RU_TANK_T55, MAX_RU_TANK_T55 )
|
||||
:InitRandomizeZones( RandomSpawnZoneTable )
|
||||
:SpawnScheduled( .1, .5 )
|
||||
|
||||
-- Infantry Fighting Vehicles
|
||||
env.info("Spawning IFVs...")
|
||||
RandomSpawns_RU_IFV = SPAWN:New( "RU_IFV-1" )
|
||||
:InitLimit( MAX_RU_IFV, MAX_RU_IFV )
|
||||
:InitRandomizeZones( RandomSpawnZoneTable )
|
||||
:SpawnScheduled( .1, .5 )
|
||||
|
||||
env.info("Spawning Technical vehicles...")
|
||||
RandomSpawns_RU_IFV_Technicals = SPAWN:New( "RU_IFV-Technicals" )
|
||||
:InitLimit( MAX_RU_IFV_Technicals, MAX_RU_IFV_Technicals )
|
||||
:InitRandomizeZones( RandomSpawnZoneTable )
|
||||
:SpawnScheduled( .1, .5 )
|
||||
|
||||
-- Short Range SAM Systems
|
||||
env.info("Spawning SA-08 SAMs...")
|
||||
RandomSpawns_RU_SA08 = SPAWN:New( "RU_SA-08" )
|
||||
:InitLimit( MAX_RU_SA08, MAX_RU_SA08 )
|
||||
:InitRandomizeZones( RandomSpawnZoneTable )
|
||||
:SpawnScheduled( .1, .5 )
|
||||
|
||||
-- Medium Range SAM Systems
|
||||
env.info("Spawning SA-19 SAMs...")
|
||||
RandomSpawns_RU_SA19 = SPAWN:New( "RU_SA-19" )
|
||||
:InitLimit( MAX_RU_SA19, MAX_RU_SA19 )
|
||||
:InitRandomizeZones( RandomSpawnZoneTable )
|
||||
:SpawnScheduled( .1, .5 )
|
||||
|
||||
-- Long Range SAM Systems
|
||||
env.info("Spawning SA-15 SAMs...")
|
||||
RandomSpawns_RU_SA15 = SPAWN:New( "RU_SA-15" )
|
||||
:InitLimit( MAX_RU_SA15, MAX_RU_SA15 )
|
||||
:InitRandomizeZones( RandomSpawnZoneTable )
|
||||
:SpawnScheduled( .1, .5 )
|
||||
|
||||
|
||||
-- Artillery Systems
|
||||
--[[
|
||||
RandomSpawns_RU_ARTY = SPAWN:New( "RU_ARTY-1" )
|
||||
:InitLimit( MAX_RU_ARTY, MAX_RU_ARTY )
|
||||
:InitRandomizeTemplate( RandomSpawnZoneTable )
|
||||
:InitRandomizeZones( RandomSpawnZoneTable )
|
||||
:SpawnScheduled( .1, .5 )
|
||||
--]]
|
||||
|
||||
env.info("Red Ground Forces Spawned")
|
||||
1449
DCS_Kola/Operation_Polar_Shield/Moose_OperationPolarShield_TADC.lua
Normal file
1449
DCS_Kola/Operation_Polar_Shield/Moose_OperationPolarShield_TADC.lua
Normal file
File diff suppressed because it is too large
Load Diff
213
DCS_Kola/Operation_Polar_Shield/OnBirthMessage.lua
Normal file
213
DCS_Kola/Operation_Polar_Shield/OnBirthMessage.lua
Normal file
@ -0,0 +1,213 @@
|
||||
-- Immediate test to confirm script is loading
|
||||
env.info("=== OnBirthMessage.lua LOADING ===")
|
||||
trigger.action.outText("OnBirthMessage script is loading...", 10)
|
||||
|
||||
-- Player preferences storage
|
||||
local playerWelcomeSettings = {}
|
||||
local processedPlayers = {} -- Track players to prevent double processing
|
||||
|
||||
-- F10 Menu Functions
|
||||
local function enableWelcomeMessage(playerUnitID, playerName)
|
||||
env.info("OnBirthMessage: enableWelcomeMessage called for " .. playerName)
|
||||
playerWelcomeSettings[playerName] = true
|
||||
trigger.action.outTextForUnit(playerUnitID, "✅ Welcome messages ENABLED", 10)
|
||||
env.info("OnBirthMessage: Enabled for " .. playerName)
|
||||
end
|
||||
|
||||
local function disableWelcomeMessage(playerUnitID, playerName)
|
||||
env.info("OnBirthMessage: disableWelcomeMessage called for " .. playerName)
|
||||
playerWelcomeSettings[playerName] = false
|
||||
trigger.action.outTextForUnit(playerUnitID, "❌ Welcome messages DISABLED", 10)
|
||||
env.info("OnBirthMessage: Disabled for " .. playerName)
|
||||
end
|
||||
|
||||
local function addWelcomeMenuForPlayer(playerUnit, playerName)
|
||||
env.info("OnBirthMessage: Adding menu for " .. playerName)
|
||||
|
||||
local success, errorMsg = pcall(function()
|
||||
local playerGroup = playerUnit:getGroup()
|
||||
local playerUnitID = playerUnit:getID()
|
||||
local groupID = playerGroup:getID()
|
||||
|
||||
env.info("OnBirthMessage: Group ID: " .. groupID .. ", Unit ID: " .. playerUnitID)
|
||||
|
||||
-- Remove existing menus to prevent duplicates
|
||||
env.info("OnBirthMessage: Cleaning up existing menus")
|
||||
missionCommands.removeItemForGroup(groupID, {"Welcome Messages", "Enable Welcome Message"})
|
||||
missionCommands.removeItemForGroup(groupID, {"Welcome Messages", "Disable Welcome Message"})
|
||||
missionCommands.removeItemForGroup(groupID, {"Welcome Messages", "Test Menu Works"})
|
||||
missionCommands.removeItemForGroup(groupID, {"Welcome Messages"})
|
||||
|
||||
-- Create main menu
|
||||
env.info("OnBirthMessage: Creating new menu")
|
||||
missionCommands.addSubMenuForGroup(groupID, "Welcome Messages")
|
||||
|
||||
-- Add commands with simpler functions to avoid freezing
|
||||
missionCommands.addCommandForGroup(groupID, "Enable Welcome Message", {"Welcome Messages"},
|
||||
function()
|
||||
playerWelcomeSettings[playerName] = true
|
||||
trigger.action.outTextForGroup(groupID, "✅ Welcome messages ENABLED for " .. playerName, 10)
|
||||
end)
|
||||
|
||||
missionCommands.addCommandForGroup(groupID, "Disable Welcome Message", {"Welcome Messages"},
|
||||
function()
|
||||
playerWelcomeSettings[playerName] = false
|
||||
trigger.action.outTextForGroup(groupID, "❌ Welcome messages DISABLED for " .. playerName, 10)
|
||||
end)
|
||||
|
||||
-- Add a test command
|
||||
missionCommands.addCommandForGroup(groupID, "Test Menu Works", {"Welcome Messages"},
|
||||
function()
|
||||
trigger.action.outTextForGroup(groupID, "✅ F10 Menu is working for " .. playerName, 10)
|
||||
end)
|
||||
|
||||
env.info("OnBirthMessage: Menu added successfully for " .. playerName)
|
||||
end)
|
||||
|
||||
if not success then
|
||||
env.info("OnBirthMessage: Menu creation failed: " .. tostring(errorMsg))
|
||||
end
|
||||
end
|
||||
|
||||
onPlayerJoin = {}
|
||||
function onPlayerJoin:onEvent(event)
|
||||
env.info("OnBirthMessage: Event triggered - ID: " .. tostring(event.id))
|
||||
|
||||
-- Trigger on both BIRTH and ENGINE_STARTUP events for better coverage
|
||||
if (event.id == world.event.S_EVENT_BIRTH or event.id == world.event.S_EVENT_ENGINE_STARTUP) then
|
||||
env.info("OnBirthMessage: Correct event type detected")
|
||||
|
||||
if event.initiator then
|
||||
env.info("OnBirthMessage: Initiator exists")
|
||||
local playerName = event.initiator:getPlayerName()
|
||||
if playerName then
|
||||
env.info("OnBirthMessage: Player name found: " .. playerName)
|
||||
|
||||
-- Check if we've already processed this player to prevent doubles
|
||||
local playerKey = playerName .. "_" .. event.id
|
||||
if processedPlayers[playerKey] then
|
||||
env.info("OnBirthMessage: Already processed " .. playerName .. " for event " .. event.id .. " - skipping")
|
||||
return
|
||||
end
|
||||
processedPlayers[playerKey] = true
|
||||
|
||||
-- Add error handling to prevent script crashes
|
||||
local success, errorMsg = pcall(function()
|
||||
local playerGroup = event.initiator:getGroup()
|
||||
local playerUnit = playerGroup:getUnit(1)
|
||||
local playerSide = playerGroup:getCoalition()
|
||||
local playerID = playerGroup:getID()
|
||||
local playerAircraft = playerUnit:getTypeName()
|
||||
local playerUnitID = playerUnit:getID()
|
||||
|
||||
-- Debug message to confirm script is running
|
||||
env.info("OnBirthMessage: Player " .. playerName .. " joined in " .. playerAircraft .. " (Coalition: " .. playerSide .. ")")
|
||||
|
||||
-- Send immediate test message
|
||||
trigger.action.outTextForUnit(playerUnitID, "OnBirthMessage: Script detected you joining as " .. playerName, 15)
|
||||
|
||||
-- Initialize player preference if not set (default to enabled)
|
||||
if playerWelcomeSettings[playerName] == nil then
|
||||
playerWelcomeSettings[playerName] = true
|
||||
end
|
||||
|
||||
-- Add F10 menu for welcome message control (only once per player)
|
||||
env.info("OnBirthMessage: About to create menu for " .. playerName)
|
||||
addWelcomeMenuForPlayer(playerUnit, playerName)
|
||||
|
||||
-- Only show welcome message if player has it enabled
|
||||
if not playerWelcomeSettings[playerName] then
|
||||
env.info("OnBirthMessage: Skipping welcome message for " .. playerName .. " (disabled by player)")
|
||||
return
|
||||
end
|
||||
|
||||
-- Prepare welcome message content
|
||||
local MissionName =
|
||||
"=====[ Fighting 99th - Operation Polar Shield / Polar Hammer]===="
|
||||
|
||||
local Discord =
|
||||
"Please join our Discord Server @ https://discord.gg/WDZqAzAs for improved comms and a better mission experience!\n" ..
|
||||
"You can turn off this message in the F10 menu under 'Welcome Messages'.\n"
|
||||
|
||||
local ObjectiveRed =
|
||||
"==============[ OPERATION POLAR SHIELD ]=============\n" ..
|
||||
"🛡️ DEFENSIVE MISSION - HOLD THE ARCTIC FRONTIER 🛡️\n\n" ..
|
||||
"SITUATION: Russian forces have secured key strategic positions across the Kola Peninsula. Your mission is to maintain this defensive shield against NATO's 'Polar Hammer' offensive operations.\n\n" ..
|
||||
"PRIMARY OBJECTIVES:\n" ..
|
||||
"🎯 CAP - Maintain air superiority over the RED BORDER zone\n" ..
|
||||
"🎯 INTERCEPT - Eliminate all NATO penetrations of Russian airspace\n" ..
|
||||
"🎯 DEFEND - Protect airbases: Severomorsk, Murmansk, Olenya, Kilpyavr, Monchegorsk, Afrikanda\n\n" ..
|
||||
"⚠️ INTELLIGENCE BRIEFING ⚠️\n" ..
|
||||
"• Advanced TADC system provides automated threat response\n" ..
|
||||
"• Persistent CAP flights maintain 24/7 border patrol\n" ..
|
||||
"• AI squadrons will launch coordinated intercepts\n" ..
|
||||
"• EWR network provides early warning coverage\n\n" ..
|
||||
"WEATHER: Arctic conditions - limited visibility, icing risk\n" ..
|
||||
"TERRAIN: Mountainous, frozen terrain - emergency landing sites scarce\n\n"
|
||||
|
||||
local ObjectiveBlue =
|
||||
"==============[ OPERATION POLAR HAMMER ]=============\n" ..
|
||||
"⚔️ OFFENSIVE MISSION - BREAK THE RUSSIAN SHIELD ⚔️\n\n" ..
|
||||
"SITUATION: Russian forces have established a defensive 'Polar Shield' across the Kola Peninsula. NATO forces must execute 'Polar Hammer' - a coordinated offensive to break Russian air superiority and penetrate their defensive perimeter.\n\n" ..
|
||||
"PRIMARY OBJECTIVES:\n" ..
|
||||
"🎯 CAP - Establish air superiority within the RED BORDER zone\n" ..
|
||||
"🎯 SWEEP - Clear Russian interceptors and defensive CAP flights\n" ..
|
||||
"🎯 SEAD - Suppress Russian EWR network and SAM systems\n" ..
|
||||
"🎯 STRIKE - Attack Russian airbases and defensive positions\n\n" ..
|
||||
"⚠️ INTELLIGENCE BRIEFING ⚠️\n" ..
|
||||
"• Enemy operates advanced Tactical Air Defense Controller (TADC)\n" ..
|
||||
"• Expect coordinated multi-squadron intercepts\n" ..
|
||||
"• Russians maintain persistent CAP along border zones\n" ..
|
||||
"• Enemy response times: ~15 seconds from detection\n" ..
|
||||
"• Multiple threats will trigger proportional defensive response\n\n" ..
|
||||
"WEATHER: Arctic conditions - limited visibility, icing risk\n" ..
|
||||
"TERRAIN: Mountainous, frozen terrain - plan fuel carefully\n\n" ..
|
||||
"🔥 BREAK THE SHIELD - EXECUTE POLAR HAMMER! 🔥\n\n"
|
||||
|
||||
local TacticalInfo =
|
||||
"================[ TACTICAL NOTES ]===============\n" ..
|
||||
"RED SMOKE : Target areas or supply zones\n" ..
|
||||
"BLUE SMOKE : Friendly pickup/drop zones\n" ..
|
||||
"GREEN SMOKE: Medical evacuation points\n\n" ..
|
||||
"COMMS: Use proper brevity codes for air-to-air combat\n" ..
|
||||
"FUEL: Monitor fuel carefully in Arctic conditions\n\n"
|
||||
|
||||
local EndBrief = "==============[ END MISSION BRIEF ]==============\n\n"
|
||||
|
||||
-- Send appropriate message to each coalition (only to the individual player)
|
||||
env.info("OnBirthMessage: Sending welcome message to " .. playerName)
|
||||
|
||||
if playerSide == coalition.side.BLUE then --blue team
|
||||
trigger.action.outTextForUnit(playerUnitID, "" .. MissionName .. "\n\n" .. "Welcome to the Arctic Theater, " .. playerName .. "!" .. "\n\n" .. Discord .. "\n\n" .. ObjectiveBlue .. TacticalInfo .. EndBrief, 45)
|
||||
env.info("OnBirthMessage: Blue team message sent to " .. playerName)
|
||||
elseif playerSide == coalition.side.RED then -- red team
|
||||
trigger.action.outTextForUnit(playerUnitID, "" .. MissionName .. "\n\n" .. "Добро пожаловать, " .. playerName .. "!" .. "\n\n" .. Discord .. "\n\n" .. ObjectiveRed .. TacticalInfo .. EndBrief, 45)
|
||||
env.info("OnBirthMessage: Red team message sent to " .. playerName)
|
||||
else
|
||||
env.info("OnBirthMessage: Unknown coalition for " .. playerName .. " (coalition=" .. playerSide .. ")")
|
||||
end
|
||||
|
||||
-- trigger.action.outSoundForGroup(playerID, "l10n/DEFAULT/battlemusic.ogg") -- Damn Cry Babbies
|
||||
end)
|
||||
|
||||
if not success then
|
||||
env.info("OnBirthMessage Error: " .. tostring(errorMsg))
|
||||
end
|
||||
else
|
||||
env.info("OnBirthMessage: No player name found")
|
||||
end
|
||||
else
|
||||
env.info("OnBirthMessage: No initiator found")
|
||||
end
|
||||
else
|
||||
-- Uncomment next line if you want to see all events (very spammy)
|
||||
-- env.info("OnBirthMessage: Ignoring event ID: " .. tostring(event.id))
|
||||
end
|
||||
end
|
||||
|
||||
-- Register event handler
|
||||
env.info("OnBirthMessage: Registering event handler...")
|
||||
world.addEventHandler(onPlayerJoin)
|
||||
env.info("OnBirthMessage: Event handler registered successfully")
|
||||
env.info("=== OnBirthMessage.lua LOADED SUCCESSFULLY ===")
|
||||
trigger.action.outText("OnBirthMessage script loaded - check for welcome messages when joining aircraft", 15)
|
||||
69
DCS_Kola/Operation_Polar_Shield/test.lua
Normal file
69
DCS_Kola/Operation_Polar_Shield/test.lua
Normal file
@ -0,0 +1,69 @@
|
||||
-- Add this at the very beginning after MOOSE loads
|
||||
env.info("=== MOOSE DEBUG INFO ===")
|
||||
env.info("MOOSE loaded: " .. tostring(MOOSE ~= nil))
|
||||
env.info("OPS available: " .. tostring(OPS ~= nil))
|
||||
env.info("_G.OPS available: " .. tostring(_G.OPS ~= nil))
|
||||
|
||||
-- Check what's in the global namespace
|
||||
for k,v in pairs(_G) do
|
||||
if string.find(k, "OPS") then
|
||||
env.info("Found OPS-related: " .. k .. " = " .. tostring(v))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- Debug airbase availability
|
||||
env.info("=== AIRBASE DEBUG ===")
|
||||
env.info("AIRBASE table exists: " .. tostring(AIRBASE ~= nil))
|
||||
|
||||
if AIRBASE then
|
||||
env.info("AIRBASE.Kola exists: " .. tostring(AIRBASE.Kola ~= nil))
|
||||
|
||||
-- List all airbases found on the map
|
||||
env.info("=== ALL AIRBASES ON MAP ===")
|
||||
|
||||
-- Method 1: Try using SET_AIRBASE to get all airbases
|
||||
if SET_AIRBASE then
|
||||
env.info("Using SET_AIRBASE method...")
|
||||
local airbaseSet = SET_AIRBASE:New():FilterOnce()
|
||||
if airbaseSet then
|
||||
local count = airbaseSet:Count()
|
||||
env.info("Total airbases found: " .. count)
|
||||
airbaseSet:ForEach(function(airbase)
|
||||
if airbase then
|
||||
local name = airbase:GetName()
|
||||
local coalition = airbase:GetCoalition()
|
||||
local coalitionName = "Unknown"
|
||||
if coalition == 0 then coalitionName = "Neutral"
|
||||
elseif coalition == 1 then coalitionName = "Red"
|
||||
elseif coalition == 2 then coalitionName = "Blue"
|
||||
end
|
||||
env.info("Airbase: '" .. name .. "' (" .. coalitionName .. ")")
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
-- Method 2: Try specific airbase names we expect
|
||||
env.info("=== TESTING SPECIFIC AIRBASES ===")
|
||||
local testNames = {
|
||||
"Severomorsk-1", "Severomorsk-3", "Kilpyavr", "Murmansk",
|
||||
"Monchegorsk", "Olenya", "Afrikanda"
|
||||
}
|
||||
|
||||
for _, name in pairs(testNames) do
|
||||
local airbase = AIRBASE:FindByName(name)
|
||||
env.info(name .. ": " .. tostring(airbase ~= nil))
|
||||
if airbase then
|
||||
env.info(" - Coalition: " .. airbase:GetCoalition())
|
||||
end
|
||||
end
|
||||
|
||||
-- Alternative method - check AIRBASE.Kola if it exists
|
||||
if AIRBASE.Kola then
|
||||
env.info("=== AIRBASE.Kola CONSTANTS ===")
|
||||
for k,v in pairs(AIRBASE.Kola) do
|
||||
env.info("AIRBASE.Kola." .. k .. " = " .. tostring(v))
|
||||
end
|
||||
end
|
||||
end
|
||||
8858
Moose_.lua
8858
Moose_.lua
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user