Aide - Recherche - Membres - Calendrier
Version complète : Friend or Foe
3rd-Wing · Escadre virtuelle DCS > DCS (& LockOn) > 3rd Wing devs' zone
Blu3dr4g0n
Bonjour,

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 smile.gif

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

raven
juste une question (j'avoue ne pas avoir lu le code) car je n'ai pas compris l'objectif , tu veux implémenter une IFF sur un A-10C , c'est a dire une simulation d'un transpondeur sur le A10C ? ou un interrogateur sur le A10C ? je pense pas que le A10C puisse interroger il peut juste répondre (transpondeur) ... et les switch correspond à celà.... exemple
un F15C interroge un A10C si les codes sont corrects , réponse positive le A10C est vu ami et ne se prend pas un AMRAAM dans la tronche (en réalité IFF + NCTR qui est devenu une obligation en operation OTAN)
sinon pour les cibles sol , il 'y a l'elprs mais le principe est différent
merci par avance du complément
Blu3dr4g0n
CITATION(raven @ 26 May 2012, 22:16) *

juste une question (j'avoue ne pas avoir lu le code) car je n'ai pas compris l'objectif , tu veux implémenter une IFF sur un A-10C , c'est a dire une simulation d'un transpondeur sur le A10C ? ou un interrogateur sur le A10C ? je pense pas que le A10C puisse interroger il peut juste répondre (transpondeur) ... et les switch correspond à celà.... exemple
un F15C interroge un A10C si les codes sont corrects , réponse positive le A10C est vu ami et ne se prend pas un AMRAAM dans la tronche (en réalité IFF + NCTR qui est devenu une obligation en operation OTAN)
sinon pour les cibles sol , il 'y a l'elprs mais le principe est différent
merci par avance du complément


Bonjour Raven,
De façon générale, ce que je souhaitais mettre en place était l'obtention de l'information si la target que je ciblais sur mon TGP était amie ou ennemie.

Concernant l'IFF, je connais dans les grandes lignes le principe. Je parle de Friend or Foe car c'est plus parlant pour les gens smile.gif mais ce n'est pas la vrai fonctionnalité du IFF + NCTR que je cherche à simuler.

Concernant l'ELPRS, je le vois parfois sur mon TAD, mais jamais sur le TGP (une fois lorsque je m'entraînai au lâché de GBU12, je pouttrais des alliés car je ne prenais pas le temps de les identifier )

En synthèse, et pour faire très simple, quand sur mon TGP je cible, j'aimerais savoir s'il s'agit d'un ami ou ennemi. Si via l'ELPRS c'est possible je veux bien avoir un lien vers la doc qui en parle ^^
raven
ben sur les mission ou j'ai un humvee ou un bradley en jtac, je le vois avec une croix verte sur le TGP quand il est dans le champ de celui ci

je re testerais avec plus d'unité mais il me semblais que cela fonctionnais pas mal
SAUF que les fantassins ne peuvent pas être visible (certainement d'autre aussi), mais celà est logique par rapport à la liste des unités le supportant ,

concernant la fonction LOGETLOCKEDTARGET, que renvoie elle ? est ce que l'ID de la cible lockée est renvoyé ou la table est carement vide
CODE

_LoGetLockedTargetInformation    =LoGetLockedTargetInformation()
nb_cibles = #_LoGetLockedTargetInformation
Azrayen'
Blu3dr4g0n,

Ce que tu cherches à faire n'existe pas ou très peu (IRL) pour l'instant.

Ça fait partie des travaux du moment d'automatiser (via un D/L) l'acquisition de la position des blue forces, mais c'est loin d'être déployé. L'exemple des JTAC, premiers équipés, est pertinent.

L'identification des cibles au sol (ami, ennemi, neutre, civil...) reste l'une des grandes difficultés du métier. Si tu enlèves cette difficulté dans le simu (je pense que c'est possible, puisque le moteur du simu sait quelle unité appartient à quel camp), c'est une sorte d'avantage "indu" par rapport aux autres pilotes.
Blu3dr4g0n
Bonjour à tous,

Effectivement, après une bonne nuit de sommeil, j'ai bien réfléchi et, comme l'indique Azrayen, mon code ne prendrait pas en compte le fait que des unité ne disposent pas de l'ELPRS, ce qui enlèverait une partie de la tension de fin de mission pour cleaner l'espace des derniers ennemis restant (généralement camions de transports et autre).

Comme je suis sur une voie d'apprentissage / perfectinonement sur l'A10C, je souhaitais repousser cette phase "apprentissage des vehicules ennemi" à plus tard, mais finalement, mon code ressemblerait plus à "une triche" et serait peut-être utilisé pour fausser l'utilisation du simu à terme.

Grâce au EdModelViewer, je peux me faire une petite encyclopédie avec plusieurs vue du véhicule (des fiches existent déjà, mais pas avec plusieurs vue), y a plus qu'à smile.gif

Je laisse le code, ça donnera les bases à ceux qui veulent s'essayer au LUA sous DCS.

Bonne journée à tous
SandJo
Salut les gens,

Bon je vais être hors sujets, mais ce qui se dit dans ce post me fait vous demander s'il serait possible d'identifier et afficher une mention de la piste qui est choisie en atéro ILSN sur FC2 et plus tard sur FC3 ?

Je demande ça car on a pas cette info sur le F15 en mode ILSN. On ne sait donc pas quel piste est sélectionnée, surtout quand on commence à switcher et qu'on perd le fils. Un petit affichage de l'info momentanée comme les info de kill par exemple serait d'un grand confort.

De plus, si FC3 n'est qu'une simple transposition de FC3 dans World, il est à parier que ce sera toujours le cas..

Tchouss
SandJo

raven
CITATION(Blu3dr4g0n @ 27 May 2012, 10:54) *

Bonjour à tous,

Effectivement, après une bonne nuit de sommeil, j'ai bien réfléchi et, comme l'indique Azrayen, mon code ne prendrait pas en compte le fait que des unité ne disposent pas de l'ELPRS, ce qui enlèverait une partie de la tension de fin de mission pour cleaner l'espace des derniers ennemis restant (généralement camions de transports et autre).

Comme je suis sur une voie d'apprentissage / perfectinonement sur l'A10C, je souhaitais repousser cette phase "apprentissage des vehicules ennemi" à plus tard, mais finalement, mon code ressemblerait plus à "une triche" et serait peut-être utilisé pour fausser l'utilisation du simu à terme.

Grâce au EdModelViewer, je peux me faire une petite encyclopédie avec plusieurs vue du véhicule (des fiches existent déjà, mais pas avec plusieurs vue), y a plus qu'à smile.gif

Je laisse le code, ça donnera les bases à ceux qui veulent s'essayer au LUA sous DCS.

Bonne journée à tous

Ok, c'est ce que je t'avais indiqué/conseillé sur le post sur la recherche et l'identification de cible il y'a quelques temps, ceci étant dit pour la question concernant le LUA, je doit me refaire des exports sur BS2/A10C, je ferais des tests dédiés concernant la cible poursuivie TGP, SHKVAL via LoGetLockedTargetInformation pour voir si on peut les récupérer , j'ai toujours trouvé dommage de ne pas les afficher en plus des informations tacview ...
sinon pour FC3, je ne sais pas
@+
Blu3dr4g0n
CITATION(raven @ 27 May 2012, 12:51) *

je ferais des tests dédiés concernant la cible poursuivie TGP, SHKVAL via LoGetLockedTargetInformation pour voir si on peut les récupérer , j'ai toujours trouvé dommage de ne pas les afficher en plus des informations tacview ...


Salut,

Bon courage alors, le principal soucis que j'ai c'est justement que le LoGetLockedTargetInformation() ne se déclenche pas lorsque que "lock" (si on peut appeller ça locker) une cible en mode SPI pour le CCRP (peut-être une erreur de ma part).

J'ai commencé à me faire un petit book des ennemis basé du edModelViewer (voir ici) :
http://www.filehosting.org/file/details/34...ion_ennemie.pdf

Si vous avez à dispo un book similaire, ou une liste d'ennemie à connaître (je me base sur mes missions card pour le moment)

@+
raven
bonjour
le problème m’intéressant, j'ai fait quelques essais sur BS2 1.1.1.1 il semble que les fonctions suivantes ne renvoient rien (nil):
- LoGetRoute()
- LoGetSightingSystemInfo() accroché ou non
- LoGetLockedTargetInformation() accroché ou non
- LoGetTargetInformation()
c'est bien sur non exhaustif
après recherche sur le site ED ces fonctions sont valides pour FC2 mais pas pour les DCS BS1/2/A10C car le système d'export a évolué avec la complexification de l’avionique , on ne peut utiliser ces fonctions pour savoir ce qui est accroché
par contre on peut accéder à certain éléments de l'avionique via les GetDevice , mais malheureusement il semble que l'on ne puisse pas récupérer les données du CDU ni les données du PVI800 (mon cas), notamment les coordonnées affichées ....
Par contre, on peut exporter "graphiquement" le PVI ....
Conclusion , pour ton idée bluedragon , c'était pas gagné gap.gif

Blu3dr4g0n
CITATION(raven @ 29 May 2012, 09:51) *

Conclusion , pour ton idée bluedragon , c'était pas gagné gap.gif


Ouais merci d'avoir creusé ^^
Druid_ sur les forums ED m'a confirmé que ce n'était pas possible avec DCS A10C

M'enfin tant piche ^^ je me construit ma petite encyclopédie à dafaut smile.gif
raven
exact et c'est le cas depuis BS1 V1.0.1 , voir en haut de la page http://en.wiki.eagle.ru/wiki/Export_1_0_1
CITATION
It means that most functions from LockOn export are invalid now, sorry. Most of the common (no avionic or aircraft specific) functions are working.

il est plus puissant que FC2 car il permet quand même de récupérer l'état de la plupart des voyants !!
elle n'est pas à jour après faudra fouiner dans les Lua, je pense qu'Helios est basé la dessus, ce serait intéressant d'étudier le LUA
Blu3dr4g0n
Bonjour,

l'IFF fait des émules dans les forums ED depuis quelques temps.
J'ai trouvé ce post : http://forums.eagle.ru/showthread.php?t=88859 et celui là http://forums.eagle.ru/showthread.php?t=89801
C'est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquez ici.