Merge remote-tracking branch 'upstream/develop' into develop
39
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
name: Build
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build:
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
- name: Set up Python 3.8
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.8
|
||||||
|
|
||||||
|
- name: Install environment
|
||||||
|
run: |
|
||||||
|
py -m venv ./venv
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
./venv/scripts/activate
|
||||||
|
pip install -r requirements.txt
|
||||||
|
# For some reason the shiboken2.abi3.dll is not found properly, so I copy it instead
|
||||||
|
Copy-Item .\venv\Lib\site-packages\shiboken2\shiboken2.abi3.dll .\venv\Lib\site-packages\PySide2\ -Force
|
||||||
|
|
||||||
|
- name: Build binaries
|
||||||
|
run: |
|
||||||
|
./venv/scripts/activate
|
||||||
|
$env:PYTHONPATH=".;./pydcs"
|
||||||
|
pyinstaller pyinstaller.spec
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: dcs_liberation
|
||||||
|
path: dist/
|
||||||
4
.gitmodules
vendored
@ -1,4 +1,4 @@
|
|||||||
[submodule "pydcs"]
|
[submodule "pydcs"]
|
||||||
path = pydcs
|
path = pydcs
|
||||||
url = https://github.com/khopa/dcs
|
url = https://github.com/pydcs/dcs
|
||||||
branch = dataexport
|
branch = master
|
||||||
|
|||||||
17
changelog.md
@ -1,5 +1,18 @@
|
|||||||
# 2.x.x
|
# 2.1.3
|
||||||
* **[Mission Generator]** Use inline loading of the JSON.lua library, and save to either %LIBERATION_EXPORT_DIR%, to %TEMP%, or to DCS working directory
|
|
||||||
|
## Features/Improvements :
|
||||||
|
* **[Units/Factions]** Added A-10C_2 to USA 2005 and Bluefor modern factions
|
||||||
|
* **[UI]** Limit number of aircraft that can be bought to the number of available parking slots.
|
||||||
|
* **[Mission Generator]** Use inline loading of the JSON.lua library, and save to either %LIBERATION_EXPORT_DIR%, or to DCS working directory
|
||||||
|
|
||||||
|
## Changes :
|
||||||
|
* **[Units/Factions]** Bluefor generic factions will now use the new "Combined Joint Task Forces Blue" country in the generated mission instead of "USA"
|
||||||
|
|
||||||
|
## Fixes :
|
||||||
|
* **[UI]** Fixed icon for Viggen
|
||||||
|
* **[UI]** Added icons for some ground units
|
||||||
|
* **[Misc]** Fixed issue with Chinese characters in pydcs preventing generating the mission. (Take Off button not working) (thanks to spark135246)
|
||||||
|
* **[Misc]** Fixed an error causing with ATC frequency preventing generating the mission. (Take Off button not working) (thanks to danalbert)
|
||||||
|
|
||||||
# 2.1.2
|
# 2.1.2
|
||||||
|
|
||||||
|
|||||||
@ -192,6 +192,7 @@ PRICES = {
|
|||||||
|
|
||||||
A_10A: 16,
|
A_10A: 16,
|
||||||
A_10C: 22,
|
A_10C: 22,
|
||||||
|
A_10C_2: 24,
|
||||||
|
|
||||||
# heli
|
# heli
|
||||||
Ka_50: 13,
|
Ka_50: 13,
|
||||||
@ -498,6 +499,7 @@ UNIT_BY_TASK = {
|
|||||||
AJS37,
|
AJS37,
|
||||||
A_10A,
|
A_10A,
|
||||||
A_10C,
|
A_10C,
|
||||||
|
A_10C_2,
|
||||||
Su_17M4,
|
Su_17M4,
|
||||||
Su_25,
|
Su_25,
|
||||||
Su_25T,
|
Su_25T,
|
||||||
@ -957,6 +959,7 @@ PLANE_PAYLOAD_OVERRIDES = {
|
|||||||
},
|
},
|
||||||
A_10A: COMMON_OVERRIDE,
|
A_10A: COMMON_OVERRIDE,
|
||||||
A_10C: COMMON_OVERRIDE,
|
A_10C: COMMON_OVERRIDE,
|
||||||
|
A_10C_2: COMMON_OVERRIDE,
|
||||||
AV8BNA: COMMON_OVERRIDE,
|
AV8BNA: COMMON_OVERRIDE,
|
||||||
C_101CC: COMMON_OVERRIDE,
|
C_101CC: COMMON_OVERRIDE,
|
||||||
F_5E_3: COMMON_OVERRIDE,
|
F_5E_3: COMMON_OVERRIDE,
|
||||||
|
|||||||
@ -4,7 +4,7 @@ from dcs.ships import *
|
|||||||
from dcs.vehicles import *
|
from dcs.vehicles import *
|
||||||
|
|
||||||
BLUEFOR_COLDWAR = {
|
BLUEFOR_COLDWAR = {
|
||||||
"country": "USA",
|
"country": "Combined Joint Task Forces Blue",
|
||||||
"side": "blue",
|
"side": "blue",
|
||||||
"units": [
|
"units": [
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@ from dcs.vehicles import *
|
|||||||
from pydcs_extensions.a4ec.a4ec import A_4E_C
|
from pydcs_extensions.a4ec.a4ec import A_4E_C
|
||||||
|
|
||||||
BLUEFOR_COLDWAR_A4 = {
|
BLUEFOR_COLDWAR_A4 = {
|
||||||
"country": "USA",
|
"country": "Combined Joint Task Forces Blue",
|
||||||
"side": "blue",
|
"side": "blue",
|
||||||
"units": [
|
"units": [
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@ from dcs.ships import *
|
|||||||
from dcs.vehicles import *
|
from dcs.vehicles import *
|
||||||
|
|
||||||
BLUEFOR_MODERN = {
|
BLUEFOR_MODERN = {
|
||||||
"country": "USA",
|
"country": "Combined Joint Task Forces Blue",
|
||||||
"side": "blue",
|
"side": "blue",
|
||||||
"units": [
|
"units": [
|
||||||
|
|
||||||
@ -20,6 +20,7 @@ BLUEFOR_MODERN = {
|
|||||||
Su_25T,
|
Su_25T,
|
||||||
A_10A,
|
A_10A,
|
||||||
A_10C,
|
A_10C,
|
||||||
|
A_10C_2,
|
||||||
AV8BNA,
|
AV8BNA,
|
||||||
AJS37,
|
AJS37,
|
||||||
|
|
||||||
|
|||||||
@ -13,6 +13,7 @@ USA_2005 = {
|
|||||||
FA_18C_hornet,
|
FA_18C_hornet,
|
||||||
F_16C_50,
|
F_16C_50,
|
||||||
A_10C,
|
A_10C,
|
||||||
|
A_10C_2,
|
||||||
AV8BNA,
|
AV8BNA,
|
||||||
MQ_9_Reaper,
|
MQ_9_Reaper,
|
||||||
|
|
||||||
|
|||||||
@ -236,9 +236,9 @@ class Operation:
|
|||||||
|
|
||||||
# Inject Plugins Lua Scripts
|
# Inject Plugins Lua Scripts
|
||||||
listOfPluginsScripts = []
|
listOfPluginsScripts = []
|
||||||
try:
|
plugin_file_path = Path("./resources/scripts/plugins/__plugins.lst")
|
||||||
with open("./resources/scripts/plugins/__plugins.lst", "r") as a_file:
|
if plugin_file_path.exists():
|
||||||
for line in a_file:
|
for line in plugin_file_path.read_text().splitlines():
|
||||||
name = line.strip()
|
name = line.strip()
|
||||||
if not name.startswith( '#' ):
|
if not name.startswith( '#' ):
|
||||||
trigger = TriggerStart(comment="Load " + name)
|
trigger = TriggerStart(comment="Load " + name)
|
||||||
@ -246,8 +246,9 @@ class Operation:
|
|||||||
fileref = self.current_mission.map_resource.add_resource_file("./resources/scripts/plugins/" + name)
|
fileref = self.current_mission.map_resource.add_resource_file("./resources/scripts/plugins/" + name)
|
||||||
trigger.add_action(DoScriptFile(fileref))
|
trigger.add_action(DoScriptFile(fileref))
|
||||||
self.current_mission.triggerrules.triggers.append(trigger)
|
self.current_mission.triggerrules.triggers.append(trigger)
|
||||||
except Exception as e:
|
else:
|
||||||
print(e)
|
logging.info(
|
||||||
|
f"Not loading plugins, {plugin_file_path} does not exist")
|
||||||
|
|
||||||
# Inject Mist Script if not done already in the plugins
|
# Inject Mist Script if not done already in the plugins
|
||||||
if not "mist.lua" in listOfPluginsScripts and not "mist_4_3_74.lua" in listOfPluginsScripts: # don't load the script twice
|
if not "mist.lua" in listOfPluginsScripts and not "mist_4_3_74.lua" in listOfPluginsScripts: # don't load the script twice
|
||||||
@ -263,31 +264,38 @@ class Operation:
|
|||||||
trigger.add_action(DoScriptFile(fileref))
|
trigger.add_action(DoScriptFile(fileref))
|
||||||
self.current_mission.triggerrules.triggers.append(trigger)
|
self.current_mission.triggerrules.triggers.append(trigger)
|
||||||
|
|
||||||
|
# Inject Ciribob's JTACAutoLase if not done already in the plugins
|
||||||
|
if not "JTACAutoLase.lua" in listOfPluginsScripts : # don't load the script twice
|
||||||
|
trigger = TriggerStart(comment="Load JTACAutoLase.lua script")
|
||||||
|
fileref = self.current_mission.map_resource.add_resource_file("./resources/scripts/JTACAutoLase.lua")
|
||||||
|
trigger.add_action(DoScriptFile(fileref))
|
||||||
|
self.current_mission.triggerrules.triggers.append(trigger)
|
||||||
|
|
||||||
# set a LUA table with data from Liberation that we want to set
|
# set a LUA table with data from Liberation that we want to set
|
||||||
# at the moment it contains Liberation's install path, and an overridable definition for the JTACAutoLase function
|
# at the moment it contains Liberation's install path, and an overridable definition for the JTACAutoLase function
|
||||||
# later, we'll add data about the units and points having been generated, in order to facilitate the configuration of the plugin lua scripts
|
# later, we'll add data about the units and points having been generated, in order to facilitate the configuration of the plugin lua scripts
|
||||||
state_location = "[[" + os.path.abspath("state.json") + "]]"
|
state_location = "[[" + os.path.abspath("state.json") + "]]"
|
||||||
lua = """
|
lua = """
|
||||||
-- setting configuration table
|
-- setting configuration table
|
||||||
env.info("DCSLiberation|: setting configuration table")
|
env.info("DCSLiberation|: setting configuration table")
|
||||||
|
|
||||||
-- all data in this table is overridable.
|
-- all data in this table is overridable.
|
||||||
dcsLiberation = {}
|
dcsLiberation = {}
|
||||||
|
|
||||||
-- the base location for state.json; if non-existent, it'll be replaced with LIBERATION_EXPORT_DIR, TEMP, or DCS working directory
|
-- the base location for state.json; if non-existent, it'll be replaced with LIBERATION_EXPORT_DIR, TEMP, or DCS working directory
|
||||||
dcsLiberation.installPath=""" + state_location + """
|
dcsLiberation.installPath=""" + state_location + """
|
||||||
|
|
||||||
-- you can override dcsLiberation.JTACAutoLase to make it use your own function ; it will be called with these parameters : ({jtac.unit_name}, {jtac.code}, {smoke}, 'vehicle') for all JTACs
|
-- you can override dcsLiberation.JTACAutoLase to make it use your own function ; it will be called with these parameters : ({jtac.unit_name}, {jtac.code}, {smoke}, 'vehicle') for all JTACs
|
||||||
if ctld then
|
if ctld then
|
||||||
dcsLiberation.JTACAutoLase=ctld.JTACAutoLase
|
dcsLiberation.JTACAutoLase=ctld.JTACAutoLase
|
||||||
elseif JTACAutoLase then
|
elseif JTACAutoLase then
|
||||||
dcsLiberation.JTACAutoLase=JTACAutoLase
|
dcsLiberation.JTACAutoLase=JTACAutoLase
|
||||||
end
|
end
|
||||||
|
|
||||||
-- later, we'll add more data to the table
|
-- later, we'll add more data to the table
|
||||||
--dcsLiberation.POIs = {}
|
--dcsLiberation.POIs = {}
|
||||||
--dcsLiberation.BASEs = {}
|
--dcsLiberation.BASEs = {}
|
||||||
--dcsLiberation.JTACs = {}
|
--dcsLiberation.JTACs = {}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
trigger = TriggerStart(comment="Set DCS Liberation data")
|
trigger = TriggerStart(comment="Set DCS Liberation data")
|
||||||
@ -301,13 +309,6 @@ end
|
|||||||
trigger.add_action(DoScriptFile(fileref))
|
trigger.add_action(DoScriptFile(fileref))
|
||||||
self.current_mission.triggerrules.triggers.append(trigger)
|
self.current_mission.triggerrules.triggers.append(trigger)
|
||||||
|
|
||||||
# Inject Ciribob's JTACAutoLase if not done already in the plugins
|
|
||||||
if not "JTACAutoLase.lua" in listOfPluginsScripts : # don't load the script twice
|
|
||||||
trigger = TriggerStart(comment="Load JTACAutoLase.lua script")
|
|
||||||
fileref = self.current_mission.map_resource.add_resource_file("./resources/scripts/JTACAutoLase.lua")
|
|
||||||
trigger.add_action(DoScriptFile(fileref))
|
|
||||||
self.current_mission.triggerrules.triggers.append(trigger)
|
|
||||||
|
|
||||||
# add a configuration for JTACAutoLase and start lasing for all JTACs
|
# add a configuration for JTACAutoLase and start lasing for all JTACs
|
||||||
smoke = "true"
|
smoke = "true"
|
||||||
if hasattr(self.game.settings, "jtac_smoke_on"):
|
if hasattr(self.game.settings, "jtac_smoke_on"):
|
||||||
@ -315,9 +316,10 @@ end
|
|||||||
smoke = "false"
|
smoke = "false"
|
||||||
|
|
||||||
lua = """
|
lua = """
|
||||||
-- setting and starting JTACs
|
-- setting and starting JTACs
|
||||||
env.info("DCSLiberation|: setting and starting JTACs")
|
env.info("DCSLiberation|: setting and starting JTACs")
|
||||||
"""
|
"""
|
||||||
|
|
||||||
for jtac in jtacs:
|
for jtac in jtacs:
|
||||||
lua += f"if dcsLiberation.JTACAutoLase then dcsLiberation.JTACAutoLase('{jtac.unit_name}', {jtac.code}, {smoke}, 'vehicle') end\n"
|
lua += f"if dcsLiberation.JTACAutoLase then dcsLiberation.JTACAutoLase('{jtac.unit_name}', {jtac.code}, {smoke}, 'vehicle') end\n"
|
||||||
|
|
||||||
|
|||||||
@ -279,13 +279,15 @@ class CommonRadioChannelAllocator(RadioChannelAllocator):
|
|||||||
last_channel = flight.num_radio_channels(radio_id)
|
last_channel = flight.num_radio_channels(radio_id)
|
||||||
channel_alloc = iter(range(first_channel, last_channel + 1))
|
channel_alloc = iter(range(first_channel, last_channel + 1))
|
||||||
|
|
||||||
flight.assign_channel(radio_id, next(channel_alloc), flight.departure.atc)
|
if flight.departure.atc is not None:
|
||||||
|
flight.assign_channel(radio_id, next(channel_alloc),
|
||||||
|
flight.departure.atc)
|
||||||
|
|
||||||
# TODO: If there ever are multiple AWACS, limit to mission relevant.
|
# TODO: If there ever are multiple AWACS, limit to mission relevant.
|
||||||
for awacs in air_support.awacs:
|
for awacs in air_support.awacs:
|
||||||
flight.assign_channel(radio_id, next(channel_alloc), awacs.freq)
|
flight.assign_channel(radio_id, next(channel_alloc), awacs.freq)
|
||||||
|
|
||||||
if flight.arrival != flight.departure:
|
if flight.arrival != flight.departure and flight.arrival.atc is not None:
|
||||||
flight.assign_channel(radio_id, next(channel_alloc),
|
flight.assign_channel(radio_id, next(channel_alloc),
|
||||||
flight.arrival.atc)
|
flight.arrival.atc)
|
||||||
|
|
||||||
@ -295,7 +297,7 @@ class CommonRadioChannelAllocator(RadioChannelAllocator):
|
|||||||
flight.assign_channel(
|
flight.assign_channel(
|
||||||
radio_id, next(channel_alloc), tanker.freq)
|
radio_id, next(channel_alloc), tanker.freq)
|
||||||
|
|
||||||
if flight.divert is not None:
|
if flight.divert is not None and flight.divert.atc is not None:
|
||||||
flight.assign_channel(radio_id, next(channel_alloc),
|
flight.assign_channel(radio_id, next(channel_alloc),
|
||||||
flight.divert.atc)
|
flight.divert.atc)
|
||||||
except StopIteration:
|
except StopIteration:
|
||||||
|
|||||||
@ -99,6 +99,7 @@ CAS_CAPABLE = [
|
|||||||
|
|
||||||
A_10A,
|
A_10A,
|
||||||
A_10C,
|
A_10C,
|
||||||
|
A_10C_2,
|
||||||
AV8BNA,
|
AV8BNA,
|
||||||
|
|
||||||
F_86F_Sabre,
|
F_86F_Sabre,
|
||||||
@ -197,6 +198,7 @@ STRIKE_CAPABLE = [
|
|||||||
|
|
||||||
A_10A,
|
A_10A,
|
||||||
A_10C,
|
A_10C,
|
||||||
|
A_10C_2,
|
||||||
AV8BNA,
|
AV8BNA,
|
||||||
|
|
||||||
F_86F_Sabre,
|
F_86F_Sabre,
|
||||||
@ -244,6 +246,7 @@ ANTISHIP_CAPABLE = [
|
|||||||
F_16A,
|
F_16A,
|
||||||
F_16C_50,
|
F_16C_50,
|
||||||
A_10C,
|
A_10C,
|
||||||
|
A_10C_2,
|
||||||
A_10A,
|
A_10A,
|
||||||
|
|
||||||
Tornado_IDS,
|
Tornado_IDS,
|
||||||
|
|||||||
2
pydcs
@ -1 +1 @@
|
|||||||
Subproject commit 7b7c0322856c43ed8d1c7d29b2e30121129af048
|
Subproject commit ceea62a8e0731c21b3e1a3e90682aa0affc168f1
|
||||||
@ -8,7 +8,7 @@ from game.event import UnitsDeliveryEvent, FrontlineAttackEvent
|
|||||||
from theater.theatergroundobject import CATEGORY_MAP
|
from theater.theatergroundobject import CATEGORY_MAP
|
||||||
from userdata.liberation_theme import get_theme_icons
|
from userdata.liberation_theme import get_theme_icons
|
||||||
|
|
||||||
VERSION_STRING = "2.1.2"
|
VERSION_STRING = "2.1.3"
|
||||||
|
|
||||||
URLS : Dict[str, str] = {
|
URLS : Dict[str, str] = {
|
||||||
"Manual": "https://github.com/khopa/dcs_liberation/wiki",
|
"Manual": "https://github.com/khopa/dcs_liberation/wiki",
|
||||||
@ -139,6 +139,7 @@ def load_aircraft_icons():
|
|||||||
AIRCRAFT_ICONS[aircraft[:-7]] = QPixmap(os.path.join("./resources/ui/units/aircrafts/", aircraft))
|
AIRCRAFT_ICONS[aircraft[:-7]] = QPixmap(os.path.join("./resources/ui/units/aircrafts/", aircraft))
|
||||||
AIRCRAFT_ICONS["F-16C_50"] = AIRCRAFT_ICONS["F-16C"]
|
AIRCRAFT_ICONS["F-16C_50"] = AIRCRAFT_ICONS["F-16C"]
|
||||||
AIRCRAFT_ICONS["FA-18C_hornet"] = AIRCRAFT_ICONS["FA-18C"]
|
AIRCRAFT_ICONS["FA-18C_hornet"] = AIRCRAFT_ICONS["FA-18C"]
|
||||||
|
AIRCRAFT_ICONS["A-10C_2"] = AIRCRAFT_ICONS["A-10C"]
|
||||||
|
|
||||||
|
|
||||||
def load_vehicle_icons():
|
def load_vehicle_icons():
|
||||||
|
|||||||
219
resources/customized_payloads/A-10C_2.lua
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
local unitPayloads = {
|
||||||
|
["name"] = "A-10C II",
|
||||||
|
["payloads"] = {
|
||||||
|
[1] = {
|
||||||
|
["name"] = "New Payload",
|
||||||
|
["pylons"] = {
|
||||||
|
[1] = {
|
||||||
|
["CLSID"] = "{LAU-131x3 - 7 AGR-20A}",
|
||||||
|
["num"] = 8,
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
["CLSID"] = "{LAU-131x3 - 7 AGR-20 M282}",
|
||||||
|
["num"] = 9,
|
||||||
|
},
|
||||||
|
[3] = {
|
||||||
|
["CLSID"] = "{LAU-131x3 - 7 AGR-20A}",
|
||||||
|
["num"] = 4,
|
||||||
|
},
|
||||||
|
[4] = {
|
||||||
|
["CLSID"] = "{LAU-131x3 - 7 AGR-20 M282}",
|
||||||
|
["num"] = 3,
|
||||||
|
},
|
||||||
|
[5] = {
|
||||||
|
["CLSID"] = "{LAU-131 - 7 AGR-20A}",
|
||||||
|
["num"] = 2,
|
||||||
|
},
|
||||||
|
[6] = {
|
||||||
|
["CLSID"] = "{LAU-131 - 7 AGR-20A}",
|
||||||
|
["num"] = 10,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
["tasks"] = {
|
||||||
|
[1] = 31,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
["name"] = "CAP",
|
||||||
|
["pylons"] = {
|
||||||
|
[1] = {
|
||||||
|
["CLSID"] = "{DB434044-F5D0-4F1F-9BA9-B73027E18DD3}",
|
||||||
|
["num"] = 11,
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
["CLSID"] = "{DB434044-F5D0-4F1F-9BA9-B73027E18DD3}",
|
||||||
|
["num"] = 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
["tasks"] = {
|
||||||
|
[1] = 31,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[3] = {
|
||||||
|
["name"] = "CAS",
|
||||||
|
["pylons"] = {
|
||||||
|
[1] = {
|
||||||
|
["CLSID"] = "ALQ_184",
|
||||||
|
["num"] = 1,
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
["CLSID"] = "{DB434044-F5D0-4F1F-9BA9-B73027E18DD3}",
|
||||||
|
["num"] = 11,
|
||||||
|
},
|
||||||
|
[3] = {
|
||||||
|
["CLSID"] = "{A111396E-D3E8-4b9c-8AC9-2432489304D5}",
|
||||||
|
["num"] = 10,
|
||||||
|
},
|
||||||
|
[4] = {
|
||||||
|
["CLSID"] = "{LAU-131 - 7 AGR-20 M282}",
|
||||||
|
["num"] = 8,
|
||||||
|
},
|
||||||
|
[5] = {
|
||||||
|
["CLSID"] = "{E6A6262A-CA08-4B3D-B030-E1A993B98453}",
|
||||||
|
["num"] = 9,
|
||||||
|
},
|
||||||
|
[6] = {
|
||||||
|
["CLSID"] = "{E6A6262A-CA08-4B3D-B030-E1A993B98452}",
|
||||||
|
["num"] = 3,
|
||||||
|
},
|
||||||
|
[7] = {
|
||||||
|
["CLSID"] = "{LAU-131 - 7 AGR-20 M282}",
|
||||||
|
["num"] = 4,
|
||||||
|
},
|
||||||
|
[8] = {
|
||||||
|
["CLSID"] = "{LAU-131 - 7 AGR-20A}",
|
||||||
|
["num"] = 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
["tasks"] = {
|
||||||
|
[1] = 31,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[4] = {
|
||||||
|
["name"] = "STRIKE",
|
||||||
|
["pylons"] = {
|
||||||
|
[1] = {
|
||||||
|
["CLSID"] = "{DB434044-F5D0-4F1F-9BA9-B73027E18DD3}",
|
||||||
|
["num"] = 11,
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
["CLSID"] = "ALQ_184",
|
||||||
|
["num"] = 1,
|
||||||
|
},
|
||||||
|
[3] = {
|
||||||
|
["CLSID"] = "{A111396E-D3E8-4b9c-8AC9-2432489304D5}",
|
||||||
|
["num"] = 10,
|
||||||
|
},
|
||||||
|
[4] = {
|
||||||
|
["CLSID"] = "{GBU-38}",
|
||||||
|
["num"] = 8,
|
||||||
|
},
|
||||||
|
[5] = {
|
||||||
|
["CLSID"] = "{GBU-38}",
|
||||||
|
["num"] = 7,
|
||||||
|
},
|
||||||
|
[6] = {
|
||||||
|
["CLSID"] = "{GBU-38}",
|
||||||
|
["num"] = 4,
|
||||||
|
},
|
||||||
|
[7] = {
|
||||||
|
["CLSID"] = "{69DC8AE7-8F77-427B-B8AA-B19D3F478B66}",
|
||||||
|
["num"] = 3,
|
||||||
|
},
|
||||||
|
[8] = {
|
||||||
|
["CLSID"] = "{69DC8AE7-8F77-427B-B8AA-B19D3F478B66}",
|
||||||
|
["num"] = 9,
|
||||||
|
},
|
||||||
|
[9] = {
|
||||||
|
["CLSID"] = "{GBU-38}",
|
||||||
|
["num"] = 5,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
["tasks"] = {
|
||||||
|
[1] = 31,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[5] = {
|
||||||
|
["name"] = "ANTISHIP",
|
||||||
|
["pylons"] = {
|
||||||
|
[1] = {
|
||||||
|
["CLSID"] = "{DB434044-F5D0-4F1F-9BA9-B73027E18DD3}",
|
||||||
|
["num"] = 11,
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
["CLSID"] = "ALQ_184",
|
||||||
|
["num"] = 1,
|
||||||
|
},
|
||||||
|
[3] = {
|
||||||
|
["CLSID"] = "{A111396E-D3E8-4b9c-8AC9-2432489304D5}",
|
||||||
|
["num"] = 10,
|
||||||
|
},
|
||||||
|
[4] = {
|
||||||
|
["CLSID"] = "{DAC53A2F-79CA-42FF-A77A-F5649B601308}",
|
||||||
|
["num"] = 9,
|
||||||
|
},
|
||||||
|
[5] = {
|
||||||
|
["CLSID"] = "{DAC53A2F-79CA-42FF-A77A-F5649B601308}",
|
||||||
|
["num"] = 3,
|
||||||
|
},
|
||||||
|
[6] = {
|
||||||
|
["CLSID"] = "{LAU-131 - 7 AGR-20 M282}",
|
||||||
|
["num"] = 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
["tasks"] = {
|
||||||
|
[1] = 31,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[6] = {
|
||||||
|
["name"] = "SEAD",
|
||||||
|
["pylons"] = {
|
||||||
|
[1] = {
|
||||||
|
["CLSID"] = "{DB434044-F5D0-4F1F-9BA9-B73027E18DD3}",
|
||||||
|
["num"] = 11,
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
["CLSID"] = "ALQ_184",
|
||||||
|
["num"] = 1,
|
||||||
|
},
|
||||||
|
[3] = {
|
||||||
|
["CLSID"] = "{A111396E-D3E8-4b9c-8AC9-2432489304D5}",
|
||||||
|
["num"] = 10,
|
||||||
|
},
|
||||||
|
[4] = {
|
||||||
|
["CLSID"] = "{DAC53A2F-79CA-42FF-A77A-F5649B601308}",
|
||||||
|
["num"] = 9,
|
||||||
|
},
|
||||||
|
[5] = {
|
||||||
|
["CLSID"] = "{DAC53A2F-79CA-42FF-A77A-F5649B601308}",
|
||||||
|
["num"] = 3,
|
||||||
|
},
|
||||||
|
[6] = {
|
||||||
|
["CLSID"] = "{LAU-131 - 7 AGR-20 M282}",
|
||||||
|
["num"] = 2,
|
||||||
|
},
|
||||||
|
[7] = {
|
||||||
|
["CLSID"] = "{GBU-38}",
|
||||||
|
["num"] = 7,
|
||||||
|
},
|
||||||
|
[8] = {
|
||||||
|
["CLSID"] = "{GBU-38}",
|
||||||
|
["num"] = 5,
|
||||||
|
},
|
||||||
|
[9] = {
|
||||||
|
["CLSID"] = "{GBU-38}",
|
||||||
|
["num"] = 8,
|
||||||
|
},
|
||||||
|
[10] = {
|
||||||
|
["CLSID"] = "{GBU-38}",
|
||||||
|
["num"] = 4,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
["tasks"] = {
|
||||||
|
[1] = 31,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
["unitType"] = "A-10C_2",
|
||||||
|
}
|
||||||
|
return unitPayloads
|
||||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/2S6 Tunguska_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/Bofors 40 mm_24.jpg
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
resources/ui/units/vehicles/Gepard_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/HAWK ANMPG-46 TR_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/HAWK ANMPQ-50 SR_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/HAWK M192 LN_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/HQ-7 Mobile Launcher_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/HQ-7 Mobile Radar_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/M-163 Vulcan_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/M1097 Avenger_24.jpg
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
resources/ui/units/vehicles/M1A2_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/M2A2_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/M48 Chaparral_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/M6 Linebacker_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/M818_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/Marder_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/Osa 9A33 ln_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/Roland ADS_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/Roland Radar_24.jpg
Normal file
|
After Width: | Height: | Size: 1014 B |
BIN
resources/ui/units/vehicles/T-80UD_24.jpg
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
resources/ui/units/vehicles/ZU-23 Ural_24.jpg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ui/units/vehicles/ZU-23_24.jpg
Normal file
|
After Width: | Height: | Size: 1.0 KiB |