Nouvelle version de CDC2 « Cap et distance cible sur coordonnées bullseye »
-
Pour ceux que cela intéresse, cette nouvelle version se connecte à DCS pour obtenir automatiquement les coordonnées de notre avion. Il ne reste plus qu’à positionner la cible pour connaitre le cap à prendre et sa distance. Cela rend je pense l’utilitaire un peu plus opérationnel, surtout pour les modules ne gérant pas le bullseye.A noter que j’aurais pu demander à DCS de fournir les coordonnées de toutes les unités ennemies présentes sur la carte, mais d’une part ce serait tricher et d’autre part cela ne pourrait pas fonctionner sur les serveurs qui activent l’anti-cheat (je n’ai pas vérifié mais cela doit être le cas sur les serveurs VEAF).
Téléchargement : https://mega.nz/file/u0YkABiY#cKsnvkRya60-TXaTNsadloypOXHq_n9VR7Cqv388-3I
Nécessite l’ajout de deux lignes dans le fichier « Export.lua » : lire attentivement le chapitre installation dans le manuel.
Merci d’avance pour d’éventuels commentaires de la part de ceux qui voudront bien tester. -
Salut @Orion !
Ça a l’air bien chouette comme outil, bravo.
Je regardais un peu ton manuel, avec comme objectif de distribuer ton logiciel dans un paquet OvGME, sur un de nos repositories VEAF, et le seul point “bloquant” est l’édition du fichier
export.lua
qui nécessite une action de l’utilisateur.Tu sais que le même genre de mécanisme (callback) existe dans une version plus moderne avec les “hooks” ?
Au départ c’était fait pour les serveurs, mais ça fonctionne aussi en solo, et en tant que client d’un serveur (SRS l’utilise, ainsi que Tacview et le mod Scratchpad).Est-ce que ça te tenterait d’essayer de porter ton script lua vers ce mécanisme de “hook” ? Si ça marche, ton code serait totalement isolé et autonome (plus besoin d’éditer un quelconque fichier à la main) et du coup ça serait très facile à utiliser sous forme de mod dans un paquet OvGME.
Reste à voir si ça fonctionne aussi bien en multi (d’ailleurs, est-ce que tu as testé ta version “export” dans ce mode ?).
En tout cas chapeau, belle initiative.
Il ne reste plus qu’à partager le code en open-source et tu auras tout mon respect -
@zip merci pour tes encouragements. Je vais regarder de plus près ce que tu me conseilles. Si j’ai des difficultés je te demanderai des éclaircissements.
-
Salut @zip.
Tout d’abord je n’ai pas répondu à deux questions :
- Oui, la solution “export” fonctionne parfaitement sur les serveurs VEAF.
- Ok pour partager une partie de mon code, en l’occurrence la mise en œuvre des lois sinus et cosinus sur un triangle quelconque et l’astuce que j’ai choisi pour résoudre l’instabilité des équations lorsque l’un des angles à déterminer est obtus. Pour le reste je ne développerai pas ici les raisons de ne pas partager mais je peux te les communiquer par oral.
Concernant la possibilité d’utiliser un hook, cette solution me semble effectivement séduisante car, outre le fait de ne plus avoir à bidouiller le fichier export.lua, mon processus serait totalement isolé, sans crainte d’interférence avec d’autres mods.
Toutefois, si j’ai bien compris, je dois fournir à mon script de hook un point d’entrée dans mon programme, en l’occurrence une fonction. Dans l’absolu c’est faisable mais ce serait un coup d’épée dans l’eau car, sauf erreur, Windows ne permet pas d’appeler une fonction exportée à partir d’un EXE.
Je dois donc transformer mon EXE en DLL. Jusqu’ici c’est faisable. Cependant j’aimerais être sûr de pouvoir récupérer les informations de DCS dont j’ai besoin, à savoir la latitude et la longitude de mon avion. Dans la solution “export” je fais appel à la fonction LoGetSelfData(), est-ce que je pourrai l’invoquer dans mon script de hook ? Soit :
local status,cdc = pcall(require,'cdc') ... function cdcCallbacks.onSimulationFrame() local v = Export.LoGetSelfData() cdc.getSelfLatLong(string.format("%f;%f", v.LatLongAlt.Lat, v.LatLongAlt.Long)) end ...
cdc étant ma DLL et getSelfLatLong ma fonction d’entrée.
Il se peut toutefois que je n’aie pas totalement compris.
-
Salut @orion ; on pourra en parler un peu ensemble si tu veux à l’occasion mais le fait de passer par un hook ne t’oblige pas à changer le fonctionnement de ton script.
Tu peux toujours avoir une socket qui communique avec ton programme, exactement comme avec l’export.
La seule différence est le point d’entrée dans ton lua : pour l’export, c’est dans un module dédié à ça (les exports) et pour les hooks dans un autre (dédié aux callbacks sur évènement).
Pour ce qui est d’utiliser une socket pour communiquer avec un programme, regarde du côté de Perun, c’est exactement ce qu’ils font.Pour le partage de tes sources, je te laisse bien sûr libre de faire ce que tu veux.
Perso, je suis pour l’ouverture et le partage, qui permet (outre de faire profiter de tes lumières à d’autres, comme tu as pu profiter de leur code pour apprendre de ton côté) de bénéficier parfois du travail des autres qui t’aident dans ton projet ou corrigent un souci. -
Salut @zip ,
Effectivement ça marche. Et merci pour tes lumières !
La solution “hook” est ici :https://mega.nz/file/DgZEUTKT#b7p9vvwDrHcdZTFtXTZ2ZhNPXPh4Wk7fPLJvS-jtJo8