Airbus A321 A320 A319 OVH avec Sim Innovations

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Bonjour, je lance ce sujet car je souhaiterai crée un OVH panel en 2D pour L'airbus A321 ou autre mes pour n'importe quelle Airbus avec le logiciel Air manager, j'utilise xp11.52 et le toliss A321 et beaucoup le Zibo 738, mon projet et d'avoir un OVH panel comme le Zibo sur un écran 22" tactile, et le but et de pouvoir changer assez rapidement de Boeing a Airbus. J'ai le flight Yoke Systeme de chez Logitech , le rudder de thrusmaster et le pack TCA Airbus éditions.
Pour les 2 petits écran ce sont des 10" et j'utilise le plugin gratuit sur le Xp11 Plugin-XTextureExtractor-x64-Release pour le Zibo et pour le Toliss je mets les fenêtres en mode popup. Et l'autre et une tablette avec le programme WebFMC PRO.
Pour le concept du Zibo OVH rien de bien difficile juste à acheter le programme premium et a l'exécuter sur le futur écran tactile ....
Mais l'intérêt pour les petits budget et d'avoir la possibilité de crée aussi d'autre OVH au lieu d'acheter des panneau physique a plus 2000 euros ou +.
J'ai regarder sur YouTube plusieurs vidéos tuto de Sim Innovations, j'ai compris la basse de l'utilisation du programme Air Manager sous W10, le problème est ou trouver les bonne dataref et comment bien crypter tous ça, en gros j'ai besoin d'aide pour mieux comprendre, ou s'il y'a déjà des personnes qui sont travailler dessus pourriez vous me contacter.
Merci d'avance a tous pour votre soutiens et de votre aide.
 

Fichiers joints

  • 20210208_192448.jpg
    20210208_192448.jpg
    227.9 KB · Affichages: 18
  • 20210208_193234.jpg
    20210208_193234.jpg
    251.6 KB · Affichages: 19
  • 20210215_210748.jpg
    20210215_210748.jpg
    205.9 KB · Affichages: 21
  • OVH panel Zibo mod 738 Air manager.png
    OVH panel Zibo mod 738 Air manager.png
    485.4 KB · Affichages: 20
  • rudder.png
    rudder.png
    262.5 KB · Affichages: 17
  • TCA.png
    TCA.png
    212.6 KB · Affichages: 16

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
Bonjour, je lance ce sujet car je souhaiterai crée un OVH panel en 2D pour L'airbus A321 ou autre mes pour n'importe quelle Airbus avec le logiciel Air manager, j'utilise xp11.52 et le toliss A321 et beaucoup le Zibo 738, mon projet et d'avoir un OVH panel comme le Zibo sur un écran 22" tactile, et le but et de pouvoir changer assez rapidement de Boeing a Airbus. J'ai le flight Yoke Systeme de chez Logitech , le rudder de thrusmaster et le pack TCA Airbus éditions.
Pour les 2 petits écran ce sont des 10" et j'utilise le plugin gratuit sur le Xp11 Plugin-XTextureExtractor-x64-Release pour le Zibo et pour le Toliss je mets les fenêtres en mode popup. Et l'autre et une tablette avec le programme WebFMC PRO.
Pour le concept du Zibo OVH rien de bien difficile juste à acheter le programme premium et a l'exécuter sur le futur écran tactile ....
Mais l'intérêt pour les petits budget et d'avoir la possibilité de crée aussi d'autre OVH au lieu d'acheter des panneau physique a plus 2000 euros ou +.
J'ai regarder sur YouTube plusieurs vidéos tuto de Sim Innovations, j'ai compris la basse de l'utilisation du programme Air Manager sous W10, le problème est ou trouver les bonne dataref et comment bien crypter tous ça, en gros j'ai besoin d'aide pour mieux comprendre, ou s'il y'a déjà des personnes qui sont travailler dessus pourriez vous me contacter.
Merci d'avance a tous pour votre soutiens et de votre aide.
Ben il te faut créer ton propre panel en Lua sur Air Manager. Et créer les graphismes qui vont avec, puis animer tout ça. L’idéal est une TV 60cms avec un overlay tactile infrarouge qu’on trouve sur Ebay

J’avais commencé ce boulot énorme, interfacé avec FFA320, mais l’année dernière suite à crash Windows 10 et mise à jour ratée :(:sick:, j’ai perdu tout mon code, et des dizaines d’heures et mois de travail dessus. Complètement démotivé...

Seules restent des vidéos YouTube hélas.
Je reprendrai tout ça peut être un jour, mais c’est pas d’actualité
J’avais même incorporé les clics des BP (faits maison avec un stylo!) et une animation sophistiquée des caches de protection, avec même une aide interactive pour chaque bouton. Mais bref...

Mon conseil pour débuter est de te lancer d’abord dans la recherche des Datarefs spécifiques au Toliss.
Pour ça tu crées un instrument de test dans AM avec des graphismes sommaires pour vérifier l’interfacage.
Evidemment il te faut apprendre le langage Lua, qui n’est pas très compliqué.

Pour créer tes graphismes, je te conseille Skinman qui est bien adapté pour créer des fichiers au format png.

Jacques

PS: Sympas tes écrans 10 pouces tu les as trouvés ou?
 
Dernière édition:

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Bonjour, et merci pour votre réponse rapide oui effectivement il y'a beaucoup de travail a faire pour avoir un bon résultat, je vous remercie pour vos conseil. Et je penserai a sauvegarder les fichiers crée afin d'éviter votre mésaventure. Pour les 2 écrans 10 voici le lien. https://www.amazon.fr/gp/product/B07FLV7SXD/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1
Actuellement je n'est pas encore acheter de licence pour la raison que je n'ai aucune expérience en cryptage et pour moi c'est tout nouveau, mes dans le font l'idée est vraiment intéressante.
Pour les datarefs du toliss es ce que je dois prendre celle de l'aircraft lui même ?
C:\Users\morga\Desktop\X-Plane 11\Aircraft\ToLissA321_V1p1 puis ouvrir le fichier a321.acf

Merci d'avance de votre réponse.
 
Dernière édition:

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
Comment peux tu avoir accès à l’ovh payant du Zibo sans licence?
Bizarre.
Pour accéder aux Datarefs du Toliss, je ne sais pas, tu peux déjà télécharger quelques instruments gratuits A320 disponibles sur le store Air Manager pour te faire une idée.
 

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Bonjour, non actuellement je n'est rien, j'ai juste installer le programme air manager en version démo pour voir, je me suis renseigner pour le Zibo je dois avoir une licence et acheter le panneau premium sur leur site. Apres oui se serai intéressant pour moi d'avoir la possibilité de passer de Boeing 737 a Airbus. Sans devoir acheter des Panels physique, qui sont très couteux, juste qu'a charger le fichier et hop je tour et jouer. Pour les daterefs oui c'est dur a trouver sur le net je pense que je vais écrire directement a Toliss pour savoir. Merci encore d'avoir regarder le sujet bonne continuation.
 

Avro

BUSH FLYING
Messages
1 714
Réactions
124
Points
363
codage et non cryptage 😀 Crypter permet de rendre illisible un message tandis que le codage permet de rendre un message compréhensible pour un ordinateur.
 

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
La plupart des Datarefs spécifiques au Toliss semblent débuter par AirbusFBW/xxx
Tu peux peut être commencer par là en les cherchant avec Dataref Editor

Jacques
 

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Bonjour jackz merci votre réponse, pour les datarefs j'utilise le plugin Datarefs tools pour un aperçu des datarefs utiliser pour X commande, je souhaiterai savoir comment a tu fais pour crée le boutons avec les lumières du ENG 1 FIRE, je m'exerce sur le logiciel SkinMan , et j'ai des difficulté pour crée par exemple un bouton carré au fond noir, comme dans les Airbus et avec un nom dedans comme APU ou FAULT ON OFF etc ....
Voici un petit exemple de ce que j'ai fais hier dans l'après midi. Merci d'avance de votre aide.
 

Fichiers joints

  • FLT CTL.jpg
    FLT CTL.jpg
    11.6 KB · Affichages: 5

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
Bonjour

Pour Skinman, il n’y a pas de secrets: des couches, des couches et des couches!
Et jouer sur les différents effets de rendu pour chaque couche en fonction des besoins.

Le bouton des lumières de l’ENG fire doit en avoir une bonne dizaine. Fond rouge foncé, par dessus un cercle jaune pour chaque lumière avec l’effet relief sphère, une couche découpée avec un booléen avec le contour du bouton, puis une autre couche rouge avec une transparence d’environ 30%, etc...
La dernière couche rouge utilise l’effet emboss pour donner l’illusion de relief. Avec évidemment une ombre portée, plus large quand le bouton est relâché.

Pour un bouton Korry classique, un carre noir, puis par dessus du texte de la bonne couleur, et avec un degré de transparence.
le contour du bouton est un carré noir avec un effet emboss de 1/+1, lui même évidé par un autre carré en booléen légèrement plus petit place au centre (chercher Skinman opération booléennes sur le Net).

Il faut créer évidemment deux images png du bouton seul, de même dimension: bouton éteint, et bouton allumé.
L’effet d’enfoncement du bouton est créé en rajoutant deux images bouton appuyé allumé et bouton appuyé éteint, obtenues en décalant l’image bouton de +2/3 pixels vers la droite et le bas.

Toutes les images du bouton sont disposées les unes sur les autres, et la visibilité de chacune est gérée par le code Lua dans bouton_add(), en fonction de l’état actuel du bouton (allumé ou éteint), on affiche l’image bouton pressed ou bouton released.

Quand je disais que c’était du boulot!
Les boutons FIRE sont les plus complexes car ils ont en plus le cache de protection, se rajoute en plus le problème de l’ombre différente selon que le bouton est sorti ou pas, délicate à reconstituer en 2D pour donner un effet de relief


Jacques
 
Dernière édition:

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Re bonjour merci pour les conseils, oui effectivement la création des panneaux en 2D ces du boulot couche couche couche, il est vrai que ce serai intéressent d'avoir un OVHP en 2D et pouvoir sans servir avec Air manager :) Etant moi même fan de Airbus je trouve dommage qui n'y pas cela pour un tel programme. J'ai une idée après c'est a toi de voire, moi personnellement je vœux avoir un OHP c'est une certitude, et je suis près a travailler le temps qu'il faudra pour arriver a mes fins, je te propose que long face la conception ensemble du OVHP en 2D pour le Toliss A321 et après le codage l'idée unir nos compétence pour aller plus loin et réussir ce challenge . Pourquoi pas ?
 
  • Sad
Les réactions: Avro

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
Euh Morgan. Merci pour ta proposition, qu’hélas je ne pense pas pouvoir accepter.

Ne le prends pas mal, mais vu ton expérience toute récente, en gros c’est moi qui ferait tout le boulot dans ce cas, en plus de te former sur Skinman et Lua.
Et nous n’avons probablement pas les mêmes critères de qualité pour un panel au niveau des animations et du niveau de détail attendu, ce que je peux comprendre.

Pour arriver à un résultat pareil, ça m’a pris presqu’un an de boulot, rien que pour entièrement dessiner l’OVH. Et tu l’as compris, j’ai perdu des centaines de lignes de code sur le panel, j’avais fini l’ADIRU, le Fire panel et toutes les lights.

Si je reprends le travail perdu, ce sera à mon rythme et selon mes critères, désolé.

Ce qui ne t’empêche pas de travailler sur ton propre panel, avec des critères de qualité et de fonctionnalités qui te seront propres. Et de poser des questions ici, je te répondrai dans la mesure du possible.

Je vois que tu progresses sur Skinman, tes vis et capots sont bien rendus, c’est encourageant.
Par contre j'espère que tu as conscience que démarrer ton premier projet sur Air Manager par un Overhead 320 entier sans connaissances préalables de Skinman ou de la prog en Lua me paraît l’équivalent de vouloir grimper l’Anapurna sans oxygène a sa première sortie en montagne. C’est faisable, mais gonflé...

Avant de travailler sur l’OVH, j’ai développé plusieurs dizaines d’instruments plus simples sur Air Manager et appris/découvert toutes les techniques. J’ai plusieurs instruments sur le Store qui existent.

Je te conseille si tu ne l’as pas déjà fait de télécharger tous les instruments A320 existants sur le store (faits pour FFA 320U certes, mais le fonctionnement est identique), les étudier pour voir comment ils fonctionnent et éventuellement les adapter au Toliss pour te faire la main.

Je te conseille également de t’inscrire sur le forum Sim Innovation pour plus d’aide spécifique au codage dans Air Manager.

Bon courage

Jacques
 
Dernière édition:

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Ok je te comprends, il y a pas de problème encore merci de proposer votre aide et de me rediriger c'est gentil.
Actuellement je suis sur le panneau Fire ENG et APU. J'ai besoin de votre aide car je n'arrive pas a dessiner les boutons rouge pour le Fire eng a claper merci.
 

Fichiers joints

  • fire.jpg
    fire.jpg
    21.3 KB · Affichages: 11
Dernière édition:

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
En fait il faut faire deux boutons avec button_add() l’un sur l’autre, un pour le clapet, l’autre pour le bouton Fire, et gérer la visibilité avec visible() de l’un ou de l’autre en fonction de la position du clapet. Clapet fermé seul le bouton du clapet est actif (visible), et inversement.

Et il faut gérer également la visibilité des différents éléments graphiques suivant la position du clapet. Donc il faut créer des variables qui stockent l’état (enfonce/relâche) du bouton et du clapet, plus l’état de la lumière du bouton.

Le clapet est un rectangle évidé (avec un booléen) enregistré comme un png avec Alpha Channel pour la transparence. Il faut créer à chaque fois la position ouverte et fermée. Et pour le FIRE la position éteinte et allumée.

Plus les ombres qui doivent être gérées différemment et indépendamment du graphisme du bouton en lui-meme puisqu’une partie de l’ombre du clapet ouvert change suivant que le fire bouton est pressé ou pas...
Le code est complexe.

Si je puis me permettre je pense que tu essaies de faire le plus compliqué d’entrée de jeu ce qui n’est pas forcément la meilleure idée AMHA.

Fais déjà un simple Korry fonctionnel, avec son animation d’enfoncement, et en gérant les états éteint/allumé et fault (plus le fait que chaque bouton a une position Bright et Dim), tu comprendras déjà le principe.

Tu peux ensuite rajouter un “clic” tactile à rajouter dans la fonction button_pressed().
Je l’avais avec Audacity créé à partir d’un son de stylo retractable...Je vais voir si je l’ai encore, mais j’ai perdu tellement de fichiers de ce projet qu’il y a peu de chances.

Rajoutes ensuite une grille de protection sur Korry, comme pour IDG DISC, en utilisant la méthode décrite ci avant, et ensuite tu pourras t’attaquer aux FIRE buttons.

Jacques
 
Dernière édition:

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Bonsoir JackZ encore merci pour vos précieux conseils, j'en prends bonne note :) , je vais déjà essayer par un simple bouton noir pour commencer, pour voir le concept, si tu connais un lien pour voire en vidéo, la création de bouton je suis preneur, j'ai suivi également ton conseil de m'inscrire sur le forum de Sim Innovation , il est intéressent de voir et en même temps pouvoir demander de l'aide a la communauté.
J'ai une petite requête, s'il te plais pourriez tu me donner de ton temps juste pour me montrer avec le logiciel Skinman un exemple de un seul bouton en m'envoyant par email le skin de ce bouton. Je n'est pas bien compris pour comment crée l'effet pour enfoncer le bouton, et pour les voyants je dois refaire la même chose je dois refaire le texte d'une autre couleur par dessus le texte noir ?

Amicalement Morgan.
 

Fichiers joints

  • Photo model pour l'exemple.png
    Photo model pour l'exemple.png
    35.5 KB · Affichages: 12
  • TEST BOUTON BESOIN D'AVIS COMPLEMENTAIRE.png
    TEST BOUTON BESOIN D'AVIS COMPLEMENTAIRE.png
    140.7 KB · Affichages: 11
Dernière édition:

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
Les boutons sont des images indépendantes du fond du panel.
L’idéal est de créer un trou transparent pour chaque bouton (carré à bords arrondis), 2 à 3 pixels plus larges que le bouton en lui même.
Note: Enregistrer toutes les images au format png avec Alpha Channel pour que le cadre de 3 pixels soit transparent.

- Bouton normal: Un carré noir centré et le texte des légendes en gris fonce(texte éteint)
Grouper l’ensemble sous Skinman, puis dupliquer le groupe pour faire l’autre bouton enfoncé.
Enregistrer l’image du bouton normal en laissant un cadre de 3 pixels tout autour.
Noter la dimension et la position du cadre de l’image en pixels.

Pour ça créer un cadre de la bonne dimension (laisser la couleur rose par défaut pour le repérer facilement), le centrer et le placer sous le bouton pour que le contour de 3 pixels dépasse. Cacher tout le reste sauf l’image du bouton et le cadre, et utiliser la fonction Trim visible pour redimensionner la zone de travail au cadre seul. Cacher ensuite le cadre avant d’enregistrer l’image du bouton.

Enregistrer dans le même cadre une image du texte seul allumé (choisir la visibilité des calques appropriés).

Grouper l’ensemble du bouton SAUF son cadre sous Skinman, puis dupliquer le groupe pour faire l’autre bouton enfoncé.
- Bouton enfoncé: C’est le groupe dupliqué qui sera déplacé avec les touches du clavier de 2 à 3 pixels vers la droite ET 2 à 3 pixels vers le bas.

Enregistrer la deuxième image du deuxième groupe seul (changer la visibilité des calques appropriés) avec exactement le même cadre que le premier. L’image du bouton enregistré est donc légèrement décalée.

Enregistrer une autre image du texte allumé seul légèrement décalé.

On a donc 4 images au total.

Après il faut faire un bout de code Lua pour le bouton avec:

button_add(image bouton éteint normal, image bouton éteint enfoncé, position du cadre,position y du cadre, dimension x du cadre, dimension y du cadre, pressed_callback, released_callback)

Il faut créer les deux fonctions Lua correspondantes:

pressed_callback()

et

released_callback()

suivant l’action désirée (voir le Wiki d’Air Manager). Dans le Wiki il y a aussi des liens vers des vidéos Tuto

L’effet d’enfoncement est géré par Air Manager qui substituera l’image appropriée suivant l’état du bouton, créant l’animation.

Le problème est que chaque bouton peut être allumé ou non. Le mieux est alors d’afficher par dessus une image du texte allumé normal ET du texte allumé enfoncé.
Il faudra jouer dans le code sur la visibilité de ces deux images suivant que le bouton est allumé ou pas, dans les deux routines pressed_callback() et released_callback()

Encore une fois, cherches des exemples d’instruments déjà faits sur le store gratuit pour les étudier et comprendre comment ça marche.

Jacques
PS: je pense que tu comprends mieux ce que je voulais dire concernant ta proposition de collaboration😎
 
Dernière édition:

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Bonsoir Jacques j'espère que tu vas bien ? Moi ça va bien, mais la situation actuel et dur .... Mais bon faut faire avec et tenir , j'espère que pour toi aussi tout va pour le mieux. Pour revenir a tes conseils, je me suis acheter une licence sur air manager v3 wow ça change , l'expérience de vol est incroyable. La je me suis laisser tenter par la création pour m'exercer sur le programme. J'ai suivi plusieurs tuto sur sim innovation ils expliquent bien mes pas tout, c'est dommage. J'ai toujours le projet du OVH panel en 2D. Je m'entraine actuellement sur ce panneau, j'ai suivi tes conseils c'est très difficile pour le lua, je n'ai pas de problème de lecture quand je test l'instrument. Quand je clique sur le panneau peu un porte ou , le voyant ON s'allume en bleue et s'éteint directement, je ne peux pas entre "" définir que ce bouton fonctionnera pour le Window head je me permets de t'envoyer ces fichiers, ( il y'a des fichiers png le lua et le skin de skiman) es ce que tu eux jeter un œil car j'ai beaucoup de problème , juste pour m'aider a comprendre car je sais tu es très expérimenter, merci beaucoup d'avance pour ton aide. Et surtout prends soin de toi, et de tes proches.

PS Pour le fichiers skin je n'ai pas reussi a le jointe si tu en a besoin je peux te l'envoyer par mail.
 

Fichiers joints

  • apu0.png
    apu0.png
    3.2 KB · Affichages: 7
  • apu1.png
    apu1.png
    3.3 KB · Affichages: 7
  • apu2.png
    apu2.png
    3.4 KB · Affichages: 5
  • apu3.png
    apu3.png
    3.3 KB · Affichages: 6
  • heat0.png
    heat0.png
    2.3 KB · Affichages: 6
  • heat1.png
    heat1.png
    2.4 KB · Affichages: 6
  • master0.png
    master0.png
    2.8 KB · Affichages: 6
  • master1.png
    master1.png
    3 KB · Affichages: 6
  • master2.png
    master2.png
    3 KB · Affichages: 6
  • master3.png
    master3.png
    2.9 KB · Affichages: 8
  • panelapu.png
    panelapu.png
    62.4 KB · Affichages: 7
Dernière édition:

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
le lua
[EDIT MODO Fab] pour insérer du code utilises les balise "code", cliques sur les 3 points à droite de la "camera+" est choisi "code" cela donnera cela :

Lua:
-- Add images --
img_add_fullscreen("panelapu.png")
img_heatoff = img_add_fullscreen("heat0.png")
img_heaton = img_add_fullscreen("heat1.png")


function press_callback()
print("pressed")       
end

function release_callback()
print("released")
end

button_id = button_add("heat0.png", "heat1.png" , 6, 4, 500, 500, press_callback, release_callback)

--change mousse cursor image (must be 10x10)

xpl_dataref_write("sim/cockpit/switches/anti_ice_AOA_heat")
 

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
Ben déjà, si tu utilises img_add_fullscreen() pour afficher les images des boutons, tu vas avoir un bouton énorme qui va occuper tout l’espace.

img_add_fullscreen() comme son nom l’indique affiche l’image concernée sur tout la surface de l’instrument, définie dans les paramètres d'INFOS.

Pour l’image de fond du panel, c’est parfait, par contre pour les boutons plus petits, il faut utiliser img_add(« nom de l’image », pos_x,pos_y,taille_x,taille_y) pour positionner le bouton comme tu le souhaites et à la bonne taille.

Pour l’instant le plus simple pour gérer l’appui du bouton est d’utiliser la gestion automatique des boutons via button_add().
Avec button_add(), l'animation est dans ce cas gérée directement par Air Manager, qui affichera la bonne image du bouton allumé dès que le bouton est cliqué. Par contre dès que le bouton est relâché l’image du bouton éteint est affichée de nouveau.
On va commencer par ça, et on verra ensuite comment régler ce deuxième problème.

Par contre dans button_add (), les bons paramètres doivent être entrés, à savoir la dimension réelle en x et y des images des boutons et leur position (angle supérieur gauche).

Lua:
button_id = button_add("heat0.png", "heat1.png" , 6, 4, 500, 500, press_callback, release_callback)

Au lieu de 6,4,500,500 il te faut utiliser la vraie dimension en pixels du bouton sur l’instrument (de l'ordre de 80,80 puisqu'il est presque carré) et les coordonnées de l’angle du bouton à positionner sur l’image de ton instrument. Ces dimensions définissent également la zone cliquable.
Avec les paramètres actuels de 6,4,500,500 pour l'instant tu définis un rectangle cliquable de 500x500 pixels situé tout en haut à gauche (l'origine 0,0 de l'instrument est en haut à gauche) de ton panel à 6.4 pixels.
C'est ton panel tout entier qui devient un immense bouton de 500x500, c'est pour cela que quelque soit l'endroit où tu cliques l'image change....

Avec ton code actuel il ne se passe rien quand tu cliques sur le bouton, si ce n'est un message, "pressed" ou "released" dans la console.
Ce sont dans ces deux fonctions qui sont appelées automatiquement par AM lorsqu'on clique puis relâche dans la zone qu'il va falloir intervenir, et en particulier gérer l'appel du dataref nécessaire, puis dans une deuxième phase, afficher l'état des voyants par exemple.
Mais bon, on va y aller progressivement.

Jacques

En résumé,
Pour l’instant ton code devrait commencer comme ça, on va commenter les éléments qui ne serviront pas tout de suite. A toi de renseigner les valeurs POS_X, POS_Y, LARGEUR, HAUTEUR

Lua:
-- Add images --

img_add_fullscreen("panelapu.png")

-- img_heatoff = img_add_fullscreen("heat0.png")

--img_heaton = img_add_fullscreen("heat1.png")



function press_callback()

print("pressed")

xpl_dataref_write("sim/cockpit/switches/anti_ice_AOA_heat") -- appel du dataref (je ne sais absolument pas si c'est le bon) lorsque le bouton est pressé

end


function release_callback()

print("released")

end


button_id = button_add("heat0.png", "heat1.png" , POS_X, POS_Y, LARGEUR, HAUTEUR, press_callback, release_callback)

Dernier conseil du jour, bien regarder le Wiki de l'API d'Air Manager qui décrit chaque fonction en détail et surtout chaque paramètre.
 

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
le lua
[EDIT MODO Fab] pour insérer du code utilises les balise "code", cliques sur les 3 points à droite de la "camera+" est choisi "code" cela donnera cela :

Code:
-- Add images --
img_add_fullscreen("panelapu.png")
img_heatoff = img_add_fullscreen("heat0.png")
img_heaton = img_add_fullscreen("heat1.png")


function press_callback()
print("pressed")       
end

function release_callback()
print("released")
end

button_id = button_add("heat0.png", "heat1.png" , 6, 4, 500, 500, press_callback, release_callback)

--change mousse cursor image (must be 10x10)

xpl_dataref_write("sim/cockpit/switches/anti_ice_AOA_heat")
Au fait Silverstar, la balise "Code" n'apparaît pas dans les menus edition de la version mobile, seulement dans le version Desktop du site pour info...A362D112-3635-4F72-9952-E45F10C636C3.jpeg
 
Dernière édition:

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
Ah, nouveau soucis, @morgandkfr59 tu as mal enregistré tes images des boutons.
Il font pour l’instant les dimensions de l'image du panel, soit 265x465, ce qui pose problème dans button_add(). L’image du bouton devrait avoir juste la taille nécessaire à la zone cliquable.

Il faut revenir dans Skinman, selectionner juste le bouton avec l'outil Trimm (le troisième en partant du bas) pour que Skinman redimensionne l'image à enregistrer à 82x77pixels seulement. Ce sont ces paramètres que tu utiliseras à la place de LARGEUR, HAUTEUR dans le code modifié précédent.

Jacques
 
Dernière édition:

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Bonjour Jacques grand merci grâce a tes explications j'ai compris mon erreur ;) j'ai tout bien recaler comme il faut, j'ai en même temps changer la taille des images buttons avec skinman, je voudrai que tu m'apprennes comment faire pour avoir le bouton par exemple windows heat toujours allumer lord de son fonctionnement et pour le test des lumières cabine encore merci beaucoup de m'avoir donner de ton temps et de m'aider.

Morgan.

message modifier
Code:
J'ai deux messages d'erreurs lua
[CODE]ERROR - logic.lua:9: Argument 'value(3)' in function 'xpl_dataref_write' is nil, which is not allowed
ERROR - logic.lua:9: Argument 'type(2)' in function 'xpl_dataref_write' is nil, which is not allowed
Pour les datarefs j'utilise le plugin data ref tool je ne sais pas vraiment le quel choisir
 

Fichiers joints

  • Capture d’écran 2021-04-10 183745.png
    Capture d’écran 2021-04-10 183745.png
    57.2 KB · Affichages: 3
Dernière édition:

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
Ben déjà appliques le dernier bout de code que j’ai mis dans mon post précédent en l’adaptant. Commences par un seul bouton, pas tous a la fois, le Pitot Heat puisque c’est celui sur lequel on a commencé. Une fois que tu as compris le principe, il suffit de l’appliquer pour les autres.

Tes boutons sont rectangulaires, normalement un Korry est carré, mais pourquoi pas... On en revient aux objectifs et critères différents, mais bon c’est ton projet, tu fais ce que tu veux.

Et inutile de poster toutes les images, seule la première est intéressante, elle montre le résultat final.

Il faut publier le code en revanche, non pas comme copie d’écran, mais comme texte, en le mettant en forme avec la balise code comme l’a expliqué Fab.
Donc reprendre le code exemple donné en l’adaptant comme explique, de manière à avoir seulement le bouton HEAT qui s’allume quand on appuie dessus.
Une fois cette étape faite, on passera à la suite.
 
Dernière édition:

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Apres je suis d'accord avec toi a 100 % les boutons doivent être carré mes la c'est juste comme entrainement j'ai ajuster les boutons par rapport a l'image du fond, je prends note pour la prochaine fois merci.

J'ai mis le dataref
xpl_dataref_write("sim/cockpit/switches/anti_ice_window_heat", "INT",1 , Windows_heat)
J'ai le message ERROR - logic.lua:9: Argument 'value(3)' in function 'xpl_dataref_write' is nil, which is not allowed
 
Dernière édition:

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
Lua:
-- Resources
img_add_fullscreen("panelapu.png")
-- Button image

—heat_on_img = img_add("heat1.png", 175, 82, 160, 83)
—heat_off_img = img_add("heat0.png", 175, 82, 160, 83)
—heat_full_light_img = img_add("heat2.png", 175, 82, 160, 83)

function press_callback()
print("pressed")
xpl_dataref_write("sim/cockpit/switches/anti_ice_AOA_heat", "INT",1) -- appel du dataref  lorsque le bouton est pressé
end

function release_callback()
print("released")
end

button_id = button_add("heat0.png", "heat1.png" , 175, 82,160 ,83 , press_callback, release_callback)
Utilisation de xpl_dataref_write()
[/ICODE]
 
Dernière édition:

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
xpl_dataref_write("sim/cockpit/switches/anti_ice_window_heat", "INT",1 , Windows_heat)
Je vois pas ce que le paramètre Windows_heat vient faire là.
Le message d’erreur indique où est le problème. ligne 9, le 3e argument à la valeur nil
logic.lua:9: Argument 'value(3)'

Comme tu as mis un quatrième paramètre , qui sert normalement d’index de tableau, Lua s’attend à ce que le 3e paramètre soit un tableau, ce qui n’est pas le cas.
La variable Windows_heat n’est pas définie, donc a la valeur nil. Le 4e paramètre est optionnel et ne doit pas être utilisé dans ce cas précis.

Encore une fois (et ce sera la dernière), se référer au Wiki pour les bons arguments des fonctions, inutile d’en inventer:LOL:

Dans notre cas c’est un booléen, valeur on/off avec 1 pour ON et 0 pour OFF
xpl_dataref_write("sim/cockpit/switches/anti_ice_window_heat", "INT",1)

Je pense aussi qu’il faut que tu apprennes les rudiments de Lua, il y a plusieurs tutos sur le Net, inutile de courir avant de savoir marcher car manifestement tu as des problèmes avec les principes de programmation Lua pour commencer.

C’est compréhensible, on est tous passés par là, mais faire les choses dans l’ordre est un minimum (tu te rappelles quand je parlais d’ascension de l’Everest?) pour pouvoir progresser.
 
Dernière édition:

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Oui c'est vrai le Lua doit être appris j'ai corriger les infos et la nickel pas d'erreur ;) c'est un très bon début, pour moi c'est bien, en plus j'ai un excellent professeur je vais approfondir mes études des datarefs, maintenant je comprends mieux l'ascension de l'Everest ce sera pas facile. Maintenant il faut définir que le bouton reste en mode allumer car actuellement sa fonction est en press et release donc pas pratique. Merci encore.
 

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
Bon ça fonctionne déjà comme ça, c’est pas mal pour un début.
Pour qu’on puisse gérer l’allumage du texte « ON », il faut connaître le Dataref TOLISS qui indique que le pitot Heat est sur ON ou OFF

Il est possible que ce soit celui-ci
"sim/cockpit/switches/anti_ice_AOA_heat", "INT", mais ce coup-ci on écrit pas dedans on le lit et on affichera ou pas l’état du bouton en fonction. On utilisera donc xpl_dataref_subscribe()

il suffit de jouer sur la visibilité des images disposées les unes sur les autres en fonction de l’état du dataref. On a plus besoin d’images dans le button_add, images qui sont remplacées par nil


Lua:
-- Variables d'état des switches
heat_switch_state=false -- création d’une variable booléenne stockant l’état du switch

--Resources
img_add_fullscreen("panelapu.png")
-- Button image

function press_callback()
print("pressed")

heat_switch_state=not(heat_switch_state)— inversion booléenne de l’état du switch

xpl_dataref_write("sim/cockpit/switches/anti_ice_AOA_heat", "INT",fif(heat_switch_state,1,0)) -- appel du dataref  lorsque le bouton est pressé:
-- la fonction fif() retourne la première valeur si heat_switch_state est vrai, la deuxième si faux
end

function release_callback()
print("released")
end

button_id = button_add(nil, nil , 175, 82,160 ,83 , press_callback, release_callback)— on utilise aucune image, remplacées par la valeur nil

-- initialisation
heat_full_light_img = img_add("heat2.png", 175, 82, 160, 83)
visible(heat_full_light_img,false)

heat_on_img = img_add("heat1.png", 175, 82, 160, 83)
visible(heat_on_img,false)

heat_off_img = img_add("heat0.png", 175, 82, 160, 83)
visible(heat_off_img,true)

------------------------------
function heat_light(value)
if value==0 then
    visible(heat_full_light_img,false)
    visible(heat_on_img,false)
    visible(heat_off_img,true)
    heat_switch_state=false --OFF
else
   visible(heat_full_light_img,false)
    visible(heat_on_img,true)
    visible(heat_off_img,false)
    heat_switch_state=true --ON
end
end

xpl_dataref_subscribe("sim/cockpit/switches/anti_ice_AOA_heat", "INT",heat_light)
 
Dernière édition:

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Bonjour Jacques, encore merci pour ton aide j'ai pus tester le panneau en simulation, un petit souci:
Depuis le cockpit quand je clique sur le probe W/H "on" la lumière fonctionne sur le panel AM en "on" et "off" RAS ;)
Depuis le panel AM quand je clique sur le probe W/H qui est déjà en "on" sa passe en "off" RAS ;)
Le problème est que j'ai du mal a comprendre pourquoi depuis AM, quand le Probe W/H est sur "off" quand je clique sur le boutton du panel rien ne se passe dans le cockpit ?
J'ai modifier le LUA rien de bien méchant juste renseigner le dataref de Airbus toliss A321
Merci
ps désoler si j'ai du mal je suis malade en ce moment.
 

Playrec

Frederic
AVIATEUR
Messages
3 286
Réactions
644
Points
1 123
Salut @morgandkfr59 , je me permet de mettre le script en C-like pour qu'il soit plus facile à lire . Soigne toi bien !

Lua:
heat_switch_state=false

--Resources

img_add_fullscreen("panelapu.png")

-- Button image

function press_callback()

print("pressed")

heat_switch_state=not(heat_switch_state)

xpl_dataref_write("AirbusFBW/ProbeHeatSwitch", "INT",fif(heat_switch_state,1,0)) -- appel du dataref lorsque le bouton est pressé

xpl_dataref_write("AirbusFBW/ProbeHeatSwitch", "INT", 0 )
end

function release_callback()

print("released")

end

button_id = button_add(nil, nil , 175, 82,160 ,83 , press_callback, release_callback)

heat_full_light_img = img_add("heat2.png", 175, 82, 160, 83)

visible(heat_full_light_img,false)

heat_on_img = img_add("heat1.png", 175, 82, 160, 83)

visible(heat_on_img,false)

heat_off_img = img_add("heat0.png", 175, 82, 160, 83)



visible(heat_off_img,true)

function heat_light(value)

if value==0 then

visible(heat_full_light_img,false)

visible(heat_on_img,false)

visible(heat_off_img,true)

heat_switch_state=false

else

visible(heat_full_light_img,false)

visible(heat_on_img,true)

visible(heat_off_img,false)

heat_switch_state=true

end

end

xpl_dataref_subscribe("sim/cockpit/switches/anti_ice_AOA_heat", "INT",heat_light)
 

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
Simple:
Immédiatement après avoir écrit le bon Dataref, tu forces une réecriture à 0 dans la 2e ligne suivante, ligne qui sauf erreur de ma part n'était pas dans le code original. Avec cette ligne en plus, le voyant est forcé à OFF chaque fois qu'on clique dessus.
Si tu rajoutes des lignes de code sans vraiment comprendre le pourquoi du comment, ça va marcher beaucoup moins bien...o_O

Lua:
xpl_dataref_write("AirbusFBW/ProbeHeatSwitch", "INT",fif(heat_switch_state,1,0)) -- appel du dataref lorsque le bouton est pressé

xpl_dataref_write("AirbusFBW/ProbeHeatSwitch", "INT", 0 ) -- ligne rajoutée qui efface le résultat de la ligne précédente
Avec ces morceaux de code, je pense que tu as les briques de base pour pouvoir faire un OVH en y allant progressivement.

Pour pouvoir afficher le voyant FAULT, j'ai pas trop réfléchi à la question, mais je pense qu'il faut simplement positionner une image de bouton entièrement transparente sauf le texte FAULT. Comme d'hab, mettre la visibilité de cette image sur false à l'initialisation
Ensuite créer une fonction qui affichera cette image lorsque le bon dataref du Toliss (à trouver) sera actif (probablement à 1) ET qu'on a de la génération electrique, donc le xpl_dataref_subscribe() qui appelle cette fonction devra surveiller ces deux datarefs.

Soignes toi bien

Jacques

PS: @Playrec :merci Frederic pour l'astuce du formatage, option de formatage qui n'existe pas dans la version du site pour Mobile.
C'est super pour la lisibilité du code. Dommage que Lua ne soit pas dans la liste, mais C-Like fonctionne très bien visiblement.
D'ailleurs @Silverstar , l'icone "Code" n'apparaît que si on met le tel en mode paysage, en mode portrait l'icône n'apparaît pas du tout, en tous les cas sur l'iPhone.
 
Dernière édition:

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Merci beaucoup j'ai enlever la ligne inutile je lance pour voir,
La vache trop top hihihihihihi merci merci merci wow
Excellent c'est le meilleur moment de ma journée ;)
Franchement le fait d'avoir ça de savoir le fonctionnement sa va me changer la vie merci
Si je souhaite par exemple rajouter dans ce bouton le "on" allumer en rapport avec le dataref AirbusFBW/ACP1Lights pour le test des lights la procédure et la même ? Par contre le data de xp je ne sais pas ?
 
Dernière édition:

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
Le plus simple est de faire une autre fonction test_lights() qui fonctionnera selon le principe du bouton FAULT evoqué plus haut.
Tous les boutons à tester peuvent être regroupés dans une seule fonction, que tu complèteras au fur et à mesure.
Il suffira juste de jouer sur la visibilité des différentes images du bouton, en cachant avec visible(XXXX,false) toutes celles qu'on ne veut pas voir affichées et en allumant avec visible(XXX,true) l'image du bouton complet avec toutes ses légendes.
Pour etre réaliste, il faut au moins avoir de la batterie pour que le test voyant fonctionne, donc surveiller aussi le voltage du BUS BAT par exemple dans le même xpl_dataref_subscribe.
 

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Bonjour, j'ai tenter de rajouter sur le panel AM le bouton Apu master jusque la tout est ok, le problème et que lorsque je clique sur le bouton ProbeW/H le bouton master , s'allume ? Je ne comprends pas, car j'ai bien s'éparer les fonctions sur le lua est-ce que je dois réécrire mais en dessous du 1er bouton ?
Je ne vois pas ma faute merci d'avance pour votre aide?

Lua:
heat_switch_state=false
master_switch_state=false

--Resources

img_add_fullscreen("panelapu.png")

-- Button image

function press_callback()

print("pressed")

heat_switch_state=not(heat_switch_state)
master_switch_state=not(master_switch_state)

xpl_dataref_write("AirbusFBW/ProbeHeatSwitch", "INT",fif(heat_switch_state,1,0)) -- appel du dataref  lorsque le bouton est pressé
xpl_dataref_write("AirbusFBW/APUMaster", "INT",fif(heat_switch_state,1,0))

end

function release_callback()

print("released")

end

button_id = button_add(nil, nil , 170, 80,160 ,83 , press_callback, release_callback)
button_id = button_add(nil, nil ,  170, 278,160 ,83 , press_callback, release_callback)

heat_full_light_img = img_add("heat2.png", 170, 80, 160, 83)
master_full_light_img = img_add("master2.png" , 170, 278, 160, 83)

visible(heat_full_light_img,false)
visible(master_full_light_img,false)

heat_on_img = img_add("heat1.png", 170, 80, 160, 83)
master_on_img = img_add("master1.png" , 170, 278, 160, 83)

visible(heat_on_img,false)
visible(master_on_img,false)

heat_off_img = img_add("heat0.png", 170, 80, 160, 83)
master_off_img = img_add("master0.png" , 170, 278, 160, 83)

visible(heat_off_img,true)
visible(master_off_img,true)


function heat_light(value)

if value==0 then

    visible(heat_full_light_img,false)

    visible(heat_on_img,false)

    visible(heat_off_img,true)

    heat_switch_state=false

else

   visible(heat_full_light_img,false)

    visible(heat_on_img,true)

    visible(heat_off_img,false)

        heat_switch_state=true

end
    end

function master_light(value)

if value==0 then

    visible(master_full_light_img,false)
  
    visible(master_on_img,false)
  
    visible(master_off_img,true)
  
    master_switch_state=false
  
else  

    visible(master_full_light_img,false)
  
     visible(master_on_img,true)
   
     visible(master_off_img,false)
   
        master_switch_state=true

end
    end
xpl_dataref_subscribe("sim/cockpit/switches/anti_ice_AOA_heat", "INT",heat_light)
xpl_dataref_subscribe("sim/cockpit2/electrical/APU_starter_switch", "INT",master_light)
 

Fichiers joints

  • Capture d’écran 2021-04-12 102239.png
    Capture d’écran 2021-04-12 102239.png
    183.6 KB · Affichages: 4

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
Je pense que tu n’as pas bien compris le fonctionnement de button_add()
Dans ton code, les deux button_add() ont les memes paramètres d’appel de fonction, donc AM appelle les mêmes fonctions pressed() et released() quelque soit le bouton. Comme la fonction pressed() est exécutée entièrement quelque soit le bouton sur lequel on appuie, tu lances l’APU et tu allumes le pitot heat en même temps de cette manière.

Les fonctions appelées par chaque button_add() doivent être indépendantes, puisque chaque action est indépendante.

Il faut créer des fonctions HEAT_pressed_callback() et HEAT_released_callback()
et
APU_pressed_callback() et
APU_released_callback()
etc...
et évidemment changer les appels dans les boutons_add() associés. Chacun appelle son Dataref associé et modifie sa variable sans interférer sur l’autre bouton.

L’allumage en mode test de tous les voyants est une exception, puisque dans ce cas tous les voyants sont affectés simultanément.

Tu peux aussi supprimer ou commenter les lignes print(« pressed ») et print(« released ») qui ne servent qu’au déboggage.
Même si la fonction XXXX_released_callback() est vide, il fait la laisser dans le code car elle est appelée par AM quand le bouton est relâché. Cette fonction est optionnelle, mais il vaut mieux la laisser pour une évolution ultérieure si besoin.

Autre remarque:
L’ordre de déclaration des images dans le code par img_add() est important, AM affiche toujours en premier l’image déclarée en premier dans le code.
C’est pour cela qu’il vaut mieux regrouper ensemble les img_add() qui concernent chaque bouton, sinon au bout d’un moment tu seras perdu.

Lua:
———-
heat_full_light_img = img_add("heat2.png", 170, 80, 160, 83)
visible(heat_full_light_img,false)
heat_on_img = img_add("heat1.png", 170, 80, 160, 83)
visible(heat_on_img,false)
heat_off_img = img_add("heat0.png", 170, 80, 160, 83)
visible(heat_off_img,true)— Remarque: dans l’absolu cette ligne-ci n’est pas utile, puisque AM rend une image ajoutée par img_add() toujours visible par défaut.
———-
master_full_light_img = img_add("master2.png" , 170, 278, 160, 83)
visible(master_full_light_img,false)
master_on_img = img_add("master1.png" , 170, 278, 160, 83)
visible(master_on_img,false)
master_off_img = img_add("master0.png" , 170, 278, 160, 83)
visible(master_off_img,true)— Remarque: dans l’absolu cette ligne-ci n’est pas utile, puisque AM rend une image ajoutée par img_add() toujours visible par défaut.
——

Jacques
 
Dernière édition:

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Re bonjour, merci beaucoup de ta réponse et surtout de ta patience, j'ai fais ce que tu mas expliquer, maintenant pour les boutons_add() problème rien ne se passe, pourtant dans le wiki j'ai fais comme ils ont montrer dans l'exemple, après la fonction j'ai renseigner le boutons, je ne comprends pas le rôle de nil dans le lua.
je suis vraiment désoler d'être aussi nul.
Il y'a pas, je vais y'arriver il le faut.
Lua:
heat_switch_state=false
master_switch_state=false

-- Resources
img_add_fullscreen("panelapu.png")

   -- Button image
heat_full_light_img = img_add("heat2.png", 170, 80, 160, 83)
visible(heat_full_light_img,false)
heat_on_img = img_add("heat1.png", 170, 80, 160, 83)
visible(heat_on_img,false)
heat_off_img = img_add("heat0.png", 170, 80, 160, 83)
visible(heat_off_img,true)

  ----------------------------------------------------------------

master_full_light_img = img_add("master2.png" , 170, 278, 160, 83)
visible(master_full_light_img,false)
master_on_img = img_add("master1.png" , 170, 278, 160, 83)
visible(master_on_img,false)
master_off_img = img_add("master0.png" , 170, 278, 160, 83)
visible(master_off_img,true)

  ----------------------------------------------------------------
heat_switch_state=not(heat_switch_state)
master_switch_state=not(master_switch_state)

xpl_dataref_write("AirbusFBW/ProbeHeatSwitch", "INT",fif(heat_switch_state,1,0))
xpl_dataref_write("AirbusFBW/APUMaster", "INT",fif(master_switch_state,1,0))

function heat_press_callback()
print("pressed")

end

function heat_released_callback()
print("released_callback")

end

button_id = button_add(nil, nil, 170, 80, 160, 83,callback_pressed, callback_released)

function APU_pressed_callback()
print("pressed")

end

function APU_released_callback()
print("released_callback")

end

button_id = button_add(nil, nil, 170, 278, 160, 83 , callback_pressed, callback_released)

function heat_light(value)

if value==0 then

    visible(heat_full_light_img,false)

    visible(heat_on_img,false)

    visible(heat_off_img,true)

    heat_switch_state=false

else

   visible(heat_full_light_img,false)

    visible(heat_on_img,true)

    visible(heat_off_img,false)

        heat_switch_state=true

end
    end

function master_light(value)

if value==0 then

    visible(master_full_light_img,false)
  
    visible(master_on_img,false)
  
    visible(master_off_img,true)
  
    master_switch_state=false
  
else  

    visible(master_full_light_img,false)
  
     visible(master_on_img,true)
   
     visible(master_off_img,false)
   
        master_switch_state=true

end
    end

xpl_dataref_subscribe("sim/cockpit/switches/anti_ice_AOA_heat", "INT",heat_light)
xpl_dataref_subscribe("sim/cockpit2/electrical/APU_starter_switch", "INT",master_light)

Code:
ERROR - logic.lua:41: Argument 'callback_pressed(7)' in function 'button_add' is nil, which is not allowed
ERROR - logic.lua:53: Argument 'callback_pressed(7)' in function 'button_add' is nil, which is not allowed
 

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
C'est sûr que je vais pas pouvoir passer mon temps à debugger ligne à ligne ton code, ca devient un peu lourd.:rolleyes:

Désolé de te dire cela Morgan, mais le vrai soucis est que je pense que tu ne fais pas les choses dans l'ordre.
Il te faut vraiment apprendre les bases de la programmation Lua, le principe des fonctions, etc,... sinon c'est trop compliqué, d'appliquer sans comprendre.
De plus tu as choisi un truc compliqué à faire comme premier instrument.
Encore une fois, je t'invite à regarder toute la série de Tutos Youtube sur Air Manager qui est très bien faite. Il y a 29 videos sur le sujet, les as-tu regardées?

Et il faut apprendre à lire les messages d'erreur de Lua:
Code:
ERROR - logic.lua:41: Argument 'callback_pressed(7)' in function 'button_add' is nil, which is not allowed
ligne 41, 7e argument(paramètre) est nil (rien)
Lua:
button_id = button_add(nil, nil, 170, 80, 160, 83,callback_pressed, callback_released)

Le 7e argument est callback_pressed qui doit être le nom d'une fonction valide, cad déclarée quelquepart dans le code.

Or tu as changé le nom des fonctions appelées, elles s'appellent maintenant heat_press_callback et heat_released_callback.
Mais tu n'as appliqué mes instructions qu'à moitié, pas étonnant que cela ne fonctionne pas!
...et évidemment changer les appels dans les boutons_add() associés.

Les fonctions callback_pressed, callback_released n'existent plus, Lua ne les trouve pas et donc le message d'erreur.
la ligne 41 devrait donc être
Lua:
button_id = button_add(nil, nil, 170, 80, 160, 83,heat_press_callback , heat_released_callback)

Même principe pour la ligne 53.

Mais il y a encore d'autres erreur dans ton code, encore une fois parceque tu n'as pas suffisamment étudié/compris les codes que je t'ai fourni, pour savoir comment les adapter.

Jacques
 
Dernière édition:

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Oui c'est vrai encore une erreur de ma part je n'avais pas fais attention a la fonction, je serai plus attentif avant de demander, maintenant j'ai plus d'erreur ;)
Mais j'ai le même coup que hier le AM n'est pas contrôlable , quand je suis dans le Toliss je clique sur bat 1 2 puis ext pwr , je lance AM et la directement le probe et le master se mettent sur on ?

J'ai regarder je ne trouve pas les autres erreurs , je ne sais pas
 
Dernière édition:

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
"...........Mais il y a encore d'autres erreur dans ton code, encore une fois parceque tu n'as pas suffisamment étudié/compris les codes que je t'ai fourni, pour savoir comment les adapter."
 
Dernière édition:

Silverstar

MODERATEUR
Messages
20 999
Réactions
1 480
Points
4 642
Je tombe par hasard sur cette discussion, désolé Jacques je n'ai pas vu ta notification.
@JackZ je t'ai rajouté la balise code pour la version mobile. ;G)

@morgandkfr59 en plus d'aller apprendre le LUA comme te l'a préconisé Jacques, il faut que tu apprennes à utiliser les balises code sur le forum.
Tu cherches cette icone ci joint et tu cliques dessus.

code.JPG

Ensuite tu colles ton code dans l'espace, et dans langage tu vas choisir (pour tes erreurs LUA tu laisses CODE GENERAL et pour ton code LUA tu choisis Lua) tu fais continuer en bas et ça apparait dans ton message.

clike.JPG
 

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
@Silverstar merci, bien pratique!.
Tu aurais pas un "parser" pour Lua tant qu'on y est?
Comme ça le end et les commentaires seraient correctement détectés et colorés!
Mais c'est déjà très bien comme ça.
Sinon s'il y a un XML a modifier pour ça je veux bien m'y coller, ça pourra toujours servir et ça doit pas être très compliqué
 
Dernière édition:

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
Lua:
heat_switch_state=false
master_switch_state=false

-- Resources
img_add_fullscreen("panelapu.png")

   -- Button image
heat_full_light_img = img_add("heat2.png", 170, 80, 160, 83)
visible(heat_full_light_img,false)
heat_on_img = img_add("heat1.png", 170, 80, 160, 83)
visible(heat_on_img,false)
heat_off_img = img_add("heat0.png", 170, 80, 160, 83)
visible(heat_off_img,true)

  ----------------------------------------------------------------

master_full_light_img = img_add("master2.png" , 170, 278, 160, 83)
visible(master_full_light_img,false)
master_on_img = img_add("master1.png" , 170, 278, 160, 83)
visible(master_on_img,false)
master_off_img = img_add("master0.png" , 170, 278, 160, 83)
visible(master_off_img,true)

  ----------------------------------------------------------------
heat_switch_state=not(heat_switch_state)
master_switch_state=not(master_switch_state)

xpl_dataref_write("AirbusFBW/ProbeHeatSwitch", "INT",fif(heat_switch_state,1,0))
xpl_dataref_write("AirbusFBW/APUMaster", "INT",fif(master_switch_state,1,0))

function heat_press_callback()
print("pressed")

end

function heat_released_callback()
print("released_callback")

end

button_id = button_add(nil,nil,170,278,160,83,heat_press_callback , heat_released_callback)

function APU_pressed_callback()
print("pressed")

end

function APU_released_callback()
print("released_callback")

end

button_id = button_add(nil, nil, 170, 80, 160, 83,heat_press_callback , heat_released_callback)

function heat_light(value)

if value==0 then

    visible(heat_full_light_img,false)

    visible(heat_on_img,false)

    visible(heat_off_img,true)

    heat_switch_state=false

else

   visible(heat_full_light_img,false)

    visible(heat_on_img,true)

    visible(heat_off_img,false)

        heat_switch_state=true

end
    end

function master_light(value)

if value==0 then

    visible(master_full_light_img,false)
   
    visible(master_on_img,false)
   
    visible(master_off_img,true)
   
    master_switch_state=false
   
else  

    visible(master_full_light_img,false)
   
     visible(master_on_img,true)
   
     visible(master_off_img,false)
   
        master_switch_state=true

end
    end

xpl_dataref_subscribe("sim/cockpit/switches/anti_ice_AOA_heat", "INT",heat_light)
xpl_dataref_subscribe("sim/cockpit2/electrical/APU_starter_switch", "INT",master_light)
Je ne comprends pas mon erreur malgré les explications de Jacques, je ne sais pas pourquoi le panneau de AM n'est pas utilisable ? Depuis le cockpit quand je clique les voyants sur le panneau de AM s'affiche , et du départ quand je fais afficher le panneau sur AM les 2 boutons se mettent sur "on" d'entrée de jeu et je ne peux pas interagir sur le AM , erreur de quoi d'écriture ? de datarefs ? Toutes aide sera vraiment utile merci.
 

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
Regardes ce qui se passe (ou pas) quand tu cliques sur un bouton dans ton code. Quelles fonctions sont appelées et ce qu’il se produit (ou pas) dans ces fonctions.

C’est clairement une incompréhension de la manière dont on programme avec Lua, et dans quasiment tous les langages de programmation, en particulier les fonctions.
Et sur ce coup-ci c’est trop de boulot de t’expliquer tout ça, et pas l’objet de ce forum non plus, à mon humble avis.

Tu n’as pas essayé non plus d’analyser les morceaux de code précédents pour voir ce qui avait changé dans ce nouveau code et qui explique ces erreurs.
On ne PEUT PAS résoudre un problème en collant au hasard des bouts de code et en demandant qu’on debogue ligne à ligne pour toi, désolé.
Tant que tu n’auras pas fait la démarche d’apprendre par toi-même les rudiments de programmation Lua, je rends mon tablier.
 
Dernière édition:

Silverstar

MODERATEUR
Messages
20 999
Réactions
1 480
Points
4 642
Les gars vous pouvez maintenant choisir Lua dans la liste. (dernière version de PrismJS)
J'en ai profité pour modifier tous les C-like que vous aviez mis dans vos précédents posts.
Je vous l'ai ajouté dans langues communes 3ème au début de la liste.
 

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
Lua:
heat_switch_state=false
master_switch_state=false

-- Resources
img_add_fullscreen("panelapu.png")

   -- Button image
heat_full_light_img = img_add("heat2.png", 170, 80, 160, 83)
visible(heat_full_light_img,false)
heat_on_img = img_add("heat1.png", 170, 80, 160, 83)
visible(heat_on_img,false)
heat_off_img = img_add("heat0.png", 170, 80, 160, 83)
visible(heat_off_img,true)

  ----------------------------------------------------------------

master_full_light_img = img_add("master2.png" , 170, 278, 160, 83)
visible(master_full_light_img,false)
master_on_img = img_add("master1.png" , 170, 278, 160, 83)
visible(master_on_img,false)
master_off_img = img_add("master0.png" , 170, 278, 160, 83)
visible(master_off_img,true)

  ----------------------------------------------------------------

function heat_press_callback()
    —print("pressed")
    heat_switch_state=not(heat_switch_state)
    xpl_dataref_write("AirbusFBW/ProbeHeatSwitch", "INT",fif(heat_switch_state,1,0))
end

function heat_released_callback()
    —print("released_callback")
end

button_id = button_add(nil, nil, 170, 80, 160, 83,heat_press_callback,heat_released_callback )
——————
function APU_pressed_callback()
    —print("pressed")
    master_switch_state=not(master_switch_state)
    xpl_dataref_write("AirbusFBW/APUMaster", "INT",fif(master_switch_state,1,0))
end

function APU_released_callback()
   —print("released_callback")
end

button_id = button_add(nil, nil, 170, 278, 160, 83 ,  APU_pressed_callback, APU_released_callback)
————
function heat_light(value)
if value==0 then
    visible(heat_full_light_img,false)
    visible(heat_on_img,false)
    visible(heat_off_img,true)
    heat_switch_state=false
else
   visible(heat_full_light_img,false)
    visible(heat_on_img,true)
    visible(heat_off_img,false)
    heat_switch_state=true
end
end

function master_light(value)
if value==0 then
    visible(master_full_light_img,false)
    visible(master_on_img,false)
    visible(master_off_img,true)
    master_switch_state=false
else
    visible(master_full_light_img,false)
    visible(master_on_img,true)  
    visible(master_off_img,false)  
    master_switch_state=true
end
end


xpl_dataref_subscribe("sim/cockpit/switches/anti_ice_AOA_heat", "INT",heat_light)
xpl_dataref_subscribe("sim/cockpit2/electrical/APU_starter_switch", "INT",master_light)
 

JackZ

BUSH FLYING
Messages
1 367
Réactions
745
Points
438
Bon c’était à prévoir, l’OP a visiblement laissé tomber le projet, mais pas ses demandes d’aide, pour un panneau de C208 sur FS2020 cette fois.

Ce coup-ci directement sur le forum de Sim Innovation, et comme d’hab sans recherches préalables sur la faisabilité d’un tel projet (FS 2020 est pour l’instant très difficilement interfacable avec Air Manager car le SDK est incomplet), ni le niveau requis pour ça.

Je l’avais pressenti, c’est confirmé. Comme dirait l’autre, « sur un malentendu ça peut marcher ».
 

morgandkfr59

ELEVE PILOTE
Messages
19
Réactions
0
Points
1
L'Op na pas laisser tomber le projet Mr JackZ, c'est vous qui avais ranger votre tablier, et je ne vois pas ou est le mal de demander de l'aide a la communauté de sim innovation pour faire un panel sur un cessna, j'ai bien dis dans le topic que je ne savais pas utiliser le Fichier LUA je voulez reunir des passionner pour faire un projet commun, de partage pour tous et non pas faire comme la plus part des gens faire cavalier seul. Effectivement j'ai bien évoluer dans skin man ,mes bon sans commentaires ... Juste mon avis d'élève comme vous ne m'avez pas bien expliquer mes erreurs du Lua faire la comparaison etc..., et arrêter de m'aider du coup, je ne peux pas apprendre d'avantage, que voulez vous que je vous dise ? J'ai bien vu que mon projet de panel XP avec AM est peine perdu J'ai regarder votre LUA tout et bon, sauf l'inversement xp 11 a AM ok / AM a xp non cela ne fonctionne pas. En tous Jacques il y'a des gens qui sont douer dans certain domaines et d'autre non c'est comme ça. Je vais faire mon panel en 2D et c'est tout il ne sera pas fonctionnelle peut être que dans quelle mois il y'en aura peu être un sur le marché ou une app , en tout cas je tiens particulièrement a vous remercier d'avoir essayer de m'aider, c'étais très gentil a vous. Pas la peine de me rabaisser d'avantage, c'est que vous avez fais ressentir. Je vous souhaite une très bonne continuation et prenez soin de vous encore une fois merci. J'ai demander la suppression de mon compte.
 
Dernière édition:

Playrec

Frederic
AVIATEUR
Messages
3 286
Réactions
644
Points
1 123
@morgandkfr59
Il ne faut pas courir avant de savoir marcher ... :cool:

Vous avez l'air bien susceptible ... Je ne lis rien dans les différents posts de @JackZ qui vous rabaisse ... Vous voulez quitter le site pour si peu ?
Il n'y a pas de profs ou d'éléves ici , que des personnes passionnées dont certaines passent du temps , voir beaucoup de temps pour essayer d'aider et de donner des conseils ...
 

A320SKA

FIRST OFFICER
Messages
263
Réactions
29
Points
43
Oui pas facile pour que les rêves deviennent réalité, même en demandant une aide extérieure, beaucoup jettent l'éponge, preuve en est les nombreux posts du genre "Mon projet Axxx ou Bxxx" qui finissent en sucette après 1 ou 2 pages ! Mais bon certains insistent et finissent par décrocher le graal et souvent leur travail suscite l'admiration :)
Et merci à nouveau à ceux qui veulent bien apporter une aide, je pense à JackZ en particulier, toujours prêt à dégainer, mais à d'autres en général, tous passionnés dans leur domaine.
 
Haut