Introduced LUA scripts plugins

In order to be able to customize the scripts that can be injected in the
mission, a __plugin.lst file is read and the scripts mentionned in this
file are injected (through DoScriptFile and not DoScript).

A mechanism checks if a standard script (Mist, JTACAutolase) has
already been loaded, to avoid loading them twice.
This commit is contained in:
David Pierron 2020-09-25 11:06:25 +02:00
parent 83f221c5e3
commit 84da44a27b

View File

@ -234,30 +234,29 @@ class Operation:
if self.game.settings.perf_smoke_gen: if self.game.settings.perf_smoke_gen:
self.visualgen.generate() self.visualgen.generate()
# Inject Lua Scripts # Inject Plugins Lua Scripts
load_mist = TriggerStart(comment="Load Mist Lua Framework") listOfPluginsScripts = []
with open("./resources/scripts/mist_4_3_74.lua") as f: try:
load_mist.add_action(DoScript(String(f.read()))) with open("./resources/scripts/plugins/__plugins.lst", "r") as a_file:
self.current_mission.triggerrules.triggers.append(load_mist) for line in a_file:
name = line.strip()
if not name.startswith( '#' ):
trigger = TriggerStart(comment="Load " + name)
listOfPluginsScripts.append(name)
fileref = self.current_mission.map_resource.add_resource_file("./resources/scripts/plugins/" + name)
trigger.add_action(DoScriptFile(fileref))
self.current_mission.triggerrules.triggers.append(trigger)
except Exception as e:
print(e)
# Load Ciribob's JTACAutoLase script # Inject Mist Script if not done already in the plugins
load_autolase = TriggerStart(comment="Load JTAC script") if not "mist.lua" in listOfPluginsScripts and not "mist_4_3_74.lua" in listOfPluginsScripts: # don't load mist twice
with open("./resources/scripts/JTACAutoLase.lua") as f: trigger = TriggerStart(comment="Load Mist Lua Framework")
fileref = self.current_mission.map_resource.add_resource_file("./resources/scripts/mist_4_3_74.lua")
script = f.read() trigger.add_action(DoScriptFile(fileref))
script = script + "\n" self.current_mission.triggerrules.triggers.append(trigger)
smoke = "true"
if hasattr(self.game.settings, "jtac_smoke_on"):
if not self.game.settings.jtac_smoke_on:
smoke = "false"
for jtac in jtacs:
script += f"\nJTACAutoLase('{jtac.unit_name}', {jtac.code}, {smoke}, 'vehicle')\n"
load_autolase.add_action(DoScript(String(script)))
self.current_mission.triggerrules.triggers.append(load_autolase)
# Inject Liberation script
load_dcs_libe = TriggerStart(comment="Load DCS Liberation Script") load_dcs_libe = TriggerStart(comment="Load DCS Liberation Script")
with open("./resources/scripts/dcs_liberation.lua") as f: with open("./resources/scripts/dcs_liberation.lua") as f:
script = f.read() script = f.read()
@ -268,6 +267,25 @@ class Operation:
load_dcs_libe.add_action(DoScript(String(script))) load_dcs_libe.add_action(DoScript(String(script)))
self.current_mission.triggerrules.triggers.append(load_dcs_libe) self.current_mission.triggerrules.triggers.append(load_dcs_libe)
# Load Ciribob's JTACAutoLase script if not done already in the plugins
if not "JTACAutoLase.lua" in listOfPluginsScripts: # don't load JTACAutoLase twice
load_autolase = TriggerStart(comment="Load JTAC script")
with open("./resources/scripts/JTACAutoLase.lua") as f:
script = f.read()
script = script + "\n"
smoke = "true"
if hasattr(self.game.settings, "jtac_smoke_on"):
if not self.game.settings.jtac_smoke_on:
smoke = "false"
for jtac in jtacs:
script += f"\nJTACAutoLase('{jtac.unit_name}', {jtac.code}, {smoke}, 'vehicle')\n"
load_autolase.add_action(DoScript(String(script)))
self.current_mission.triggerrules.triggers.append(load_autolase)
self.assign_channels_to_flights() self.assign_channels_to_flights()
kneeboard_generator = KneeboardGenerator(self.current_mission) kneeboard_generator = KneeboardGenerator(self.current_mission)