Avro
PILOTE PRO
- Messages
- 1 937
- Réactions
- 269
Bonjour,
Je vous propose un tuto pour utiliser des LVAR en lieu et place des commandes standards de notre simulateur.
Pour simplifier la compréhension de ce tuto, nous allons repartir de celui de mameloose qui utilise des offsets libres de la bibliothèque SDK pour simuler des appuis de touches claviers ou des fonctions standards du simualteur.
Sioc touches claviers et fonctions précises
àla place nous utiliserons ces offsets pour déclencher des scripts LUA. Ces scripts communiqueront avec notre simulateur via des LVAR.
C'est quoi LUA ?
C'est un langage simple permettant de définir des actions à générer dans le simulateur en fonction par exemple de lutlisation d'un joystick et de valeurs retournées par le simulateur. Imaginons que je veuille simuler un instructeur dans mon avion préféré. Je vais par exemple détecter que je tire sur le manche, je lis la vitesse de mon appareil, si ma vitesse est inférieur à 120 kts, je déclenche un son, une phrase préenregistrée de mon instructeur minvitant à attendre la VR. LUA me permet de faire ça et bien d'autres choses.
Pourquoi des LVAR ?
Les addons récents d'avion sur P3D ont des interactions pilote-avion plus riches que celles utilisées par les avions par défaut. Pour connaitre les LVAR de votre appareil fétiche, je vous invite à suivre ce qui suit:
Il faut déjà aller dans votre super add-on préféré.
Entrer dans FSUIPC (ça vous savez faire)
et aller dans Keypress
presser SET
et appuyer sur une combin'aison de touche du clavier inutilisée (genre CTR+$ ... etc)
les touches apparaissent dans la fenêtre.
Dans la liste déroulante "control send when key pressed"
Selectionner "List local panel Vars"
Presser CONFIRM en bas
Ensuite il faut aller dans l'onglet LOGGING
activer "Button & key operation"
et "send to console"
la fenêtre console souvre.
En mode fenètré réduit pour voir la console et FSX
fermer FSUIPC
Dans le cockpit appuyer sur la combin'aison de touche prédéfinie avant
Cela fait apparaitre une longue liste de L:vars dans la console.
Retourner dans FSUIPC LOGGING et STOP pour arrêter le log.
Pour retouver la liste, il faut aller dans le dossier de FSUIPC
FSX>MODULE>
Là on trouve un fichier FSUIPC4x.log
Pour ce tuto, j'utiliserai le CRJ 700 dAerosoft. et voici un petit extrait des 2737 LVAR de cet appareil :
=============== Début de lextrait du tuto de mameloose ===============
Il existe dans le SDK quelques variables qui permettent de simuler jusqu'à 9 joysticks comprenant chacun 32 boutons !
Ce qui veut dire qu'il est possible au total de simuler 288 touches !! Eh oui !
Petite mise en pratique
Ici dans le SDK le premier joystick virtuel est l'offset $3340 de longueur 4
Pour pouvoir contrôler cette variable, il suffit d'utiliser la fonction SETBIT et CLEARBIT pour chaque bouton
à savoir que le premier bouton commence au bit 0
1- déclarer la variable et un bouton
comme précédemment, j'ouvre un code vierge et EDIT NEWVAR
ok on a deja vu tout ca avant ; la variable du joy est declarée et j'ai mis un simple bouton sur l'entrée n°5 de la master
2- définir le rôle du bouton !
dans cet exemple je vais utiliser le bouton n°5 de notre joystick virtuel (donc le bit n°4)
clic droit sur le bouton et NEWCOMMANDE
comme on a vu précédemment fonction IF (si mon inter est fermé =1)
reclic droit et NEWCOMMAND
alors je simule le bit 4 pour le joystick
et maintenant le contraire fonction ELSE donc, clic droit sur LE BOUTON ET NEW COMMANDE
VOILA !! à partir de la on se dit c'est fini ! eh ben non
=============== Fin de lextrait du tuto de mameloose ===============
Je vais créer un fichier texte en utilisant un bloc-notes. Pour ma part, j'utilise Notepad++
Les textes apès -- sont des commentaires optionnels. Par exemple :
-- bouton 17 est là pour me souvenir que c'est l'entrée 17 de ma carte I/O qui est testée.
Je sauvegarde ce fichier dans mon répertoire Modules de P3D en lui donnant lextension .lua Je lai appelé dans ce tuto Crj700.lua
Que fait le script ?
Il lit l'offset 3340 (readUB) et la valeur est stocké dans la variable bar (j'aurais pu lui donner un autre nom ). Avant que je nappuie sur mon bouton, la valeur de l'offset, et par conséquent la variable bar, est de 0. Quand j'appuie sur le bouton, cette variable passe temporairement à 1.
if bar > 0 permet dexécuter une ou plusieurs instructions écrites à la suite du test et avant le terme end.
ipc.writeLvar permet décrire une LVAR qui sera interprêté par mon simulateur. Encore faut-il que la LVAR soit connue par laddon de mon avion (L:ASCRJ_LSP_BARO_STD) et que la valeur soit interprétable. Ici la LVAR permet, quand la valeur est à 1 de passer la valeur de QNH à 1013.25 mb.
On va lancer maintenant le simulateur. Dans le menu Add-ons, FSUIPC (version enregistrée), je crée un profil spécifique pour mon CRJ-700 et je clique sur le bouton. Il est détecté en Joy n° 64 Btn n° 4 que jassocie au script LUA Crj700.lua de mon répertoire Modules. C'est tout
Je vous propose un tuto pour utiliser des LVAR en lieu et place des commandes standards de notre simulateur.
Pour simplifier la compréhension de ce tuto, nous allons repartir de celui de mameloose qui utilise des offsets libres de la bibliothèque SDK pour simuler des appuis de touches claviers ou des fonctions standards du simualteur.
Sioc touches claviers et fonctions précises
àla place nous utiliserons ces offsets pour déclencher des scripts LUA. Ces scripts communiqueront avec notre simulateur via des LVAR.
C'est quoi LUA ?
C'est un langage simple permettant de définir des actions à générer dans le simulateur en fonction par exemple de lutlisation d'un joystick et de valeurs retournées par le simulateur. Imaginons que je veuille simuler un instructeur dans mon avion préféré. Je vais par exemple détecter que je tire sur le manche, je lis la vitesse de mon appareil, si ma vitesse est inférieur à 120 kts, je déclenche un son, une phrase préenregistrée de mon instructeur minvitant à attendre la VR. LUA me permet de faire ça et bien d'autres choses.
Pourquoi des LVAR ?
Les addons récents d'avion sur P3D ont des interactions pilote-avion plus riches que celles utilisées par les avions par défaut. Pour connaitre les LVAR de votre appareil fétiche, je vous invite à suivre ce qui suit:
Il faut déjà aller dans votre super add-on préféré.
Entrer dans FSUIPC (ça vous savez faire)
et aller dans Keypress
presser SET
et appuyer sur une combin'aison de touche du clavier inutilisée (genre CTR+$ ... etc)
les touches apparaissent dans la fenêtre.
Dans la liste déroulante "control send when key pressed"
Selectionner "List local panel Vars"
Presser CONFIRM en bas
Ensuite il faut aller dans l'onglet LOGGING
activer "Button & key operation"
et "send to console"
la fenêtre console souvre.
En mode fenètré réduit pour voir la console et FSX
fermer FSUIPC
Dans le cockpit appuyer sur la combin'aison de touche prédéfinie avant
Cela fait apparaitre une longue liste de L:vars dans la console.
Retourner dans FSUIPC LOGGING et STOP pour arrêter le log.
Pour retouver la liste, il faut aller dans le dossier de FSUIPC
FSX>MODULE>
Là on trouve un fichier FSUIPC4x.log
Pour ce tuto, j'utiliserai le CRJ 700 dAerosoft. et voici un petit extrait des 2737 LVAR de cet appareil :
Code:
L:ASCRJ_EICAS = 1.000000
L:ASCRJ_DSPL_CONT = 1.000000
L:ASCRJ_ISI_STD = 0.000000
L:ASCRJ_ISI_PLUS = 0.000000
L:ASCRJ_ISI_MINUS = 0.000000
L:ASCRJ_ISI_CAGE = 0.000000
L:ASCRJ_ISI_KNOB_CHANGE = 0.000000
L:ASCRJ_LSP_BRG1 = 0.000000
L:ASCRJ_RSP_BRG1 = 0.000000
L:ASCRJ_LSP_BRG2 = 0.000000
L:ASCRJ_RSP_BRG2 = 0.000000
L:ASCRJ_LSP_FORMAT_CHANGE = 0.000000
L:ASCRJ_RSP_FORMAT_CHANGE = 0.000000
L:ASCRJ_LSP_RANGE_CHANGE = 0.000000
L:ASCRJ_RSP_RANGE_CHANGE = 0.000000
L:ASCRJ_LSP_NAV_SOURCE_CHANGE = 0.000000
L:ASCRJ_RSP_NAV_SOURCE_CHANGE = 0.000000
L:ASCRJ_LSP_NAV_SOURCE_XSIDE = 0.000000
L:ASCRJ_RSP_NAV_SOURCE_XSIDE = 0.000000
L:ASCRJ_LSP_RA_TEST_BTN = 0.000000
L:ASCRJ_RSP_RA_TEST_BTN = 0.000000
L:ASCRJ_LSP_BARO_CHANGE = 0.000000
L:ASCRJ_RSP_BARO_CHANGE = 0.000000
L:ASCRJ_LSP_BARO_STD = 0.000000
L:ASCRJ_RSP_BARO_STD = 0.000000
L:ASCRJ_LSP_PFD_MODE = 1.000000
L:ASCRJ_RSP_PFD_MODE = 1.000000
L:ASCRJ_LSP_BRG1_INFO = 0.000000
L:ASCRJ_RSP_BRG1_INFO = 0.000000
L:ASCRJ_LSP_BRG2_INFO = 0.000000
L:ASCRJ_RSP_BRG2_INFO = 0.000000
L:ASCRJ_LSP_FORMAT_INFO = 2.000000
L:ASCRJ_RSP_FORMAT_INFO = 2.000000
L:ASCRJ_LSP_RANGE_INFO = 40.000000
L:ASCRJ_RSP_RANGE_INFO = 40.000000
L:ASCRJ_LSP_NAVSRC_INFO = 0.000000
L:ASCRJ_RSP_NAVSRC_INFO = 4.000000
L:ASCRJ_LSP_REFSPD_INFO = 0.000000
L:ASCRJ_RSP_REFSPD_INFO = 0.000000
L:ASCRJ_LSP_REFALT_INFO = 0.000000
L:ASCRJ_RSP_REFALT_INFO = 0.000000
L:ASCRJ_LSP_BARO_INFO = 0.000000
L:ASCRJ_RSP_BARO_INFO = 0.000000
L:ASCRJ_LSP_BARO_VALUE = 1022.787109
L:ASCRJ_RSP_BARO_VALUE = 1013.099609
=============== Début de lextrait du tuto de mameloose ===============
Il existe dans le SDK quelques variables qui permettent de simuler jusqu'à 9 joysticks comprenant chacun 32 boutons !
Ce qui veut dire qu'il est possible au total de simuler 288 touches !! Eh oui !
Petite mise en pratique
Ici dans le SDK le premier joystick virtuel est l'offset $3340 de longueur 4
Pour pouvoir contrôler cette variable, il suffit d'utiliser la fonction SETBIT et CLEARBIT pour chaque bouton
à savoir que le premier bouton commence au bit 0
1- déclarer la variable et un bouton
comme précédemment, j'ouvre un code vierge et EDIT NEWVAR
ok on a deja vu tout ca avant ; la variable du joy est declarée et j'ai mis un simple bouton sur l'entrée n°5 de la master
2- définir le rôle du bouton !
dans cet exemple je vais utiliser le bouton n°5 de notre joystick virtuel (donc le bit n°4)
clic droit sur le bouton et NEWCOMMANDE
comme on a vu précédemment fonction IF (si mon inter est fermé =1)
reclic droit et NEWCOMMAND
alors je simule le bit 4 pour le joystick
et maintenant le contraire fonction ELSE donc, clic droit sur LE BOUTON ET NEW COMMANDE
VOILA !! à partir de la on se dit c'est fini ! eh ben non
=============== Fin de lextrait du tuto de mameloose ===============
Je vais créer un fichier texte en utilisant un bloc-notes. Pour ma part, j'utilise Notepad++
Code:
-- Aircraft: CRJ 700 Aerosoft (Lvar)
-- Version: 1.0
-- Date: September 2018
-- Author: Emmanuel
-- bouton 17
bar = ipc.readUB(0x3340)
if bar > 0 then
ipc.writeLvar("L:ASCRJ_LSP_BARO_STD",1)
end
Les textes apès -- sont des commentaires optionnels. Par exemple :
-- bouton 17 est là pour me souvenir que c'est l'entrée 17 de ma carte I/O qui est testée.
Je sauvegarde ce fichier dans mon répertoire Modules de P3D en lui donnant lextension .lua Je lai appelé dans ce tuto Crj700.lua
Que fait le script ?
Il lit l'offset 3340 (readUB) et la valeur est stocké dans la variable bar (j'aurais pu lui donner un autre nom ). Avant que je nappuie sur mon bouton, la valeur de l'offset, et par conséquent la variable bar, est de 0. Quand j'appuie sur le bouton, cette variable passe temporairement à 1.
if bar > 0 permet dexécuter une ou plusieurs instructions écrites à la suite du test et avant le terme end.
ipc.writeLvar permet décrire une LVAR qui sera interprêté par mon simulateur. Encore faut-il que la LVAR soit connue par laddon de mon avion (L:ASCRJ_LSP_BARO_STD) et que la valeur soit interprétable. Ici la LVAR permet, quand la valeur est à 1 de passer la valeur de QNH à 1013.25 mb.
On va lancer maintenant le simulateur. Dans le menu Add-ons, FSUIPC (version enregistrée), je crée un profil spécifique pour mon CRJ-700 et je clique sur le bouton. Il est détecté en Joy n° 64 Btn n° 4 que jassocie au script LUA Crj700.lua de mon répertoire Modules. C'est tout