Je cherche à rajouter un petit composant à mon DCS:A10C 1.1.1.1 via un bout de code LUA à savoir la détermination d'une cible amie ou ennemie (un peu le rôle de l'IFF qui n'est pas implémenté).
J'ai commencé mon code, mais je me gratte la tête car :
1- Je ne sais pas comment récupérer les infos de la cible que j'ai locké (en la définissant comme SPI pour le CCRP) => je ne sais pas comment faire pour "trapper" le fait que la cible est locké (la fonction LoGetLockedTargetInformation() ne fonctionne pas ...)
2- Je ne sais pas comment récupérer l'état du switch IFF (console de gauche au dessus de la molette de selection des bandes)
Avez vous des idées ?
En PJ mon code à placer dans "C:\jeux\DCS A-10C\Config\Export\BlueDragonIFF.lua" pour tester et à activer en rajoutant dofile("./Config/Export/BlueDragonIFF.lua"); dans le fichier Export.lua.
Merci
CODE
-- BlueDragon IFF for DCS:A10C
-- Copyright (C) 2012 - http://www.3rd-wing.net
-- http://www.3rd-wing.net/index.php?showuser=2983
-- Headers
dofile("./Config/World/World.lua") -- Required to get mission date
dofile("./Scripts/Database/wsTypes.lua") -- Required to get object types definitions
BlueDragonIFF=
{
-- Version
Version = 0.1,
--Logs
LogLevel = 2, --Niveau 0 / 1 / 2 [OFF / Warning / Full]
LogFileName = lfs.writedir() .. "Logs\\BlueDragonIFF_"..os.date("!%Y-%m-%d_%H%M%S",now)..".log", --Nom du log au format <nomfichier_date>.log
LogFilePtr = nil,
-- ___________
--/ LOGSTART()\
------------------------------------------------------------------------------
-- Fonction d'ouverture et initialisation du log
------------------------------------------------------------------------------
LogStart = function(self)
self.LogFilePtr = io.open(self.LogFileName, "w+");
self:LogWrite(0, "BlueDragon IFF for DCS:A10C - V"..self.Version);
self:LogWrite(0, "Copyright (C) 2012 - http://www.3rd-wing.net");
self:LogWrite(0, "Version : "..self.Version);
self:LogWrite(0, "");
local Player = LoGetObjectById(LoGetPlayerPlaneId());
self:LogWrite(0, "Joueur : "..LoGetPilotName().." | ID : "..LoGetPlayerPlaneId());
self:LogWrite(2, "Country : "..Player.Country);
self:LogWrite(2, "Coalition : "..Player.Coalition);
end,
-- ___________
--/ LOGWRITE()\
------------------------------------------------------------------------------
--Fonction d'écriture de message dans le log
-- DebugLevel : Number
-- message : String
------------------------------------------------------------------------------
LogWrite = function(self, DebugLevel, message)
if (DebugLevel <= self.LogLevel) then
self.LogFilePtr:write("["..os.date("!%H:%M:%SZ",now).."] "..message.."\n");
end
end,
-- ___________
-- / LOGCLOSE()\
------------------------------------------------------------------------------
-- Fonction d'ouverture et initialisation du log
------------------------------------------------------------------------------
LogClose=function(self)
self:LogWrite(2, "Fermeture du log");
self.LogFilePtr:flush();
self.LogFilePtr:close();
end,
-- _______________
-- / TargetUpdate()\
------------------------------------------------------------------------------
-- Fonction de mise à jour des infos de la cible (IFF)
------------------------------------------------------------------------------
TargetUpdate=function(self)
local Target = LoGetObjectById(LoGetLockedTargetInformation()["ID"]);
if (Target ~= nil) then
self:LogWrite(2, "--LockedTarget");
self:LogWrite(2, "Name : "..Target.Name);
self:LogWrite(2, "Country : "..Target.Country);
self:LogWrite(2, "Coalition : "..Target.Coalition);
end
end,
}
--=============================================================
-- (Hook) Appel 1 fois juste avant le démarrage de la mission
--=============================================================
do
local PrevLuaExportStart=LuaExportStart;
LuaExportStart=function()
BlueDragonIFF:LogStart();
if PrevLuaExportStart then PrevLuaExportStart();
end
end
end
--=============================================================
-- (Hook) Appel avant chaque frame de la simulation
--=============================================================
do
local PrevLuaExportBeforeNextFrame=LuaExportBeforeNextFrame;
LuaExportBeforeNextFrame=function()
if PrevLuaExportBeforeNextFrame then PrevLuaExportBeforeNextFrame();
end
end
end
--=============================================================
-- (Hook) Appel apres chaque frame de la simulation
--=============================================================
do
local PrevLuaExportAfterNextFrame=LuaExportAfterNextFrame;
LuaExportAfterNextFrame=function()
if LoGetLockedTargetInformation() ~= nil then BlueDragonIFF:TargetUpdate();
end
if PrevLuaExportAfterNextFrame then PrevLuaExportAfterNextFrame();
end
end
end
--=============================================================
-- (Hook) Appel apres la fin de la mission
--=============================================================
do
local PrevLuaExportStop=LuaExportStop;
LuaExportStop=function()
BlueDragonIFF:LogClose();
if PrevLuaExportStop then PrevLuaExportStop();
end
end
end