Air Manager problème de variable

Programmation LUA, Macros FSUIPC, logiciel LINDA
et codage en LUA des gauges Air Manager

Air Manager problème de variable

Messagede algue14 » Mar 22 Aoû 2017 18:08

Voilà mon problème
Pour plus de réalisme je souhaite que l'apparence des gauges changent en fonction de :
-jour
-nuit
-éclairage panel
J'ai bien avancé, mais je rencontre un souci:
d'après le SDK, la variable qui indique que les instruments sont allumés c'est "LIGHT PANEL ON"

Image


Mais ça ne fonctionne pas
En mode test c'est OK, mais avec P3D en fonction, rien ne se passe
Par contre je n'ai pas de message d'erreur

Si j'utilise la variable "LIGHT PANEL", ça fonctionne bien
Par contre, c'est pas très réaliste car ça reflète l'état du switch et c'est pas parce-que le switch est activé que y'a de la lumière rirebleu

Reste "LIGHT ON STATES" mais là peurefrayé murrouge furieuxfumée je ne vois pas comment utiliser ça nonbleu
Je me demande même si c'est utilisable dans un script gratgrat
Je pense que c'est ce masque qui devrait faire, en toute logique, varier la variable "LIGHT PANEL ON"
Bon je suis pas un intégriste du réalisme, nondoightblanc si je trouve pas de soluce, je laisserait avec l'état du switch
mais si quelqu'un sait résoudre ce serait avec plaisir.

Voici la gauge:
f000d651-8e40-4e40-a19c-6c734883fea7.7z
(1.07 Mio) Téléchargé 511 fois
A+

Alain
Avatar de l’utilisateur
algue14
 
Messages: 1626
Inscription: 20/04/09
Localisation: Caen ; Normandie

Re: Air Manager problème de variable

Messagede fab » Mar 22 Aoû 2017 19:28

algue14 a écrit:...
Reste "LIGHT ON STATES" mais là peurefrayé murrouge furieuxfumée je ne vois pas comment utiliser ça nonbleu
...


Tu dois utiliser une fonction de test de bit, ou disposer des opérations logiques (un "et" sur les différents bits)
Bit 0 à 1 = NAV
Bit 1 à 1 = Beacon
Bit 3 à 1 = Landing
...
...
Bit 9 à 1 = Cabin
Avatar de l’utilisateur
fab
 
Messages: 4414
Inscription: 26/12/12
Localisation: Roubaix

Re: Air Manager problème de variable

Messagede arcc » Mar 22 Aoû 2017 19:32

Re

J'ai fait un essais avec Fsx (la variable est la même "LIGHT PANEL ON") et une de mes gauges "Air Speed" qui fonctionne avec la variable originelle de FSX "AIRSPEED INDICATED".

Que ce soit avec le Cessna de base de Fsx ou avec mon Twin Otter d'aerosoft, la gauge passe en eclairage "nuit des l'alimentation Batterie + Avionic.

L'action sur un quelconque switch light n'a aucun effet.

le scipt
Code: Tout sélectionner
--Images--
img_add_fullscreen("airspeed_backdrop_day.png")
img_needle = img_add_fullscreen("needle.png")


-- Function for light night --
function Var_nightlight(nightlight)

   if nightlight == false then
   img_visible(img_night,false)
   else
   img_visible(img_night,true)
   end   
   
end   

img_night = img_add_fullscreen("backdrop_night2.png")

-- Function for Air Speed --
function Var_airspeed(airspeed)

   airspeed = var_cap(airspeed, 25, 220)
    img_rotate(img_needle, 340/195 *(airspeed - 25))

end

--Images--
img_add_fullscreen("glass.png") -- Without glass insert two - at the beginning of the line

-- FSX Variables --
fsx_variable_subscribe( "LIGHT PANEL ON", "Bool", Var_nightlight) -- FSX Variables night light
fsx_variable_subscribe("AIRSPEED INDICATED", "knots", Var_airspeed) -- Twin Otter Extended Variable


Version jour
Image

Version nuit
Image

Je ne sais pas si ca va t'aider.

Christian
Un ancien sous-marinier qui a pris de la hauteur.
Avatar de l’utilisateur
arcc
 
Messages: 715
Inscription: 16/12/13
Localisation: La ou fini la terre (Finistere)

Re: Air Manager problème de variable

Messagede algue14 » Mar 22 Aoû 2017 20:48

fab a écrit:Tu dois utiliser une fonction de test de bit, ou disposer des opérations logiques (un "et" sur les différents bits)
Bit 0 à 1 = NAV
Bit 1 à 1 = Beacon
Bit 3 à 1 = Landing
...
...
Bit 9 à 1 = Cabin


J'aimerais bien, mais ça c'est bon pour SIOC, tu peux pas agir sur les variables P3D de cette façon,y'a pas de fonction LUA qui permet d'aller trifouiller les bits des variables

arcc a écrit:Que ce soit avec le Cessna de base de Fsx ou avec mon Twin Otter d'aerosoft, la gauge passe en eclairage "nuit des l'alimentation Batterie + Avionic.


Ben chez moi ça le fait pas murrouge
J'ai bien pris soin d’être moteurs tournants, batterie ON ,alternateurs ON
Rien n'y fait même avec le baron de base.
J'ai mis un "print" de la variable en début de code pour m’affranchir du reste des instructions , j'ai beau alimenter panel ou avionics, ça bouge pas dans la fenetre de debug(J'ai meme essayé en gardant uniquement le "print" dans la fonction)
(bien sûr sur le panel de base on voit bien le changement d'état des lumières en fonction du switch actionné)
furieuxfumée
c'est peut-être P3D qui est en cause
Le code n'est pas en cause car avec l'appel de variable "LIGHT PANEL" ça fonctionne parfaitement et je vois bien le changement d'état dans la fenêtre de debug
Code: Tout sélectionner
function new_light_FSX(light)
 print(light)
img_visible(face_jour, light)
img_visible(img_needle_L, light)
img_visible(img_needle_R,light)
img_visible(plate_jour, light)
img_visible(face_nuit,light == false)
img_visible(img_needle_L_nuit,light == false)
img_visible(img_needle_R_nuit,  light == false)
img_visible(plate_nuit,light == false)

end
Dernière édition par algue14 le Mar 22 Aoû 2017 20:55, édité 1 fois.
A+

Alain
Avatar de l’utilisateur
algue14
 
Messages: 1626
Inscription: 20/04/09
Localisation: Caen ; Normandie

Re: Air Manager problème de variable

Messagede fab » Mar 22 Aoû 2017 20:54

Tu n'as pas de fonction "test bit" mais tu as des opérateurs logiques, non ?
Avatar de l’utilisateur
fab
 
Messages: 4414
Inscription: 26/12/12
Localisation: Roubaix

Re: Air Manager problème de variable

Messagede algue14 » Mar 22 Aoû 2017 21:03

fab a écrit:Tu n'as pas de fonction "test bit" mais tu as des opérateurs logiques, non ?

Ben oui, y'a
Mais on ne peux agir que sur l'état de variables nommées, pas sur l'état de leurs bits.
Si tu regarde la copie d'écran plus haut, tu verras qu'il n'y a aucune indication là dessus.
A+

Alain
Avatar de l’utilisateur
algue14
 
Messages: 1626
Inscription: 20/04/09
Localisation: Caen ; Normandie

Re: Air Manager problème de variable

Messagede JacquesZ » Mar 22 Aoû 2017 23:15

algue14 a écrit:Voilà mon problème
Pour plus de réalisme je souhaite que l'apparence des gauges changent en fonction de :
-jour
-nuit
-éclairage panel
J'ai bien avancé, mais je rencontre un souci:
d'après le SDK, la variable qui indique que les instruments sont allumés c'est "LIGHT PANEL ON"

Image

Si j'utilise la variable "LIGHT PANEL", ça fonctionne bien
Par contre, c'est pas très réaliste car ça reflète l'état du switch et c'est pas parce-que le switch est activé que y'a de la lumière rirebleu

Désolé Alain, mais j'ai pas bien compris la dernière phrase: tu veux que les jauges s'affichent en mode nuit automatiquement lorsque c'est la nuit?
Si le switch light panel est sur ON, les instruments devraient s'allumer même en plein jour?

Jacques
Ma chaîne YouTube Tutos sur l’A320 par un Pilote de Ligne: https://youtube.com/channel/UCljftuoKBcgeR-WBgYJpuoA
Avatar de l’utilisateur
JacquesZ
 
Messages: 2848
Inscription: 24/11/10

Re: Air Manager problème de variable

Messagede algue14 » Mar 22 Aoû 2017 23:48

JacquesZ a écrit:Désolé Alain, mais j'ai pas bien compris la dernière phrase: tu veux que les jauges s'affichent en mode nuit automatiquement lorsque c'est la nuit?
Si le switch light panel est sur ON, les instruments devraient s'allumer même en plein jour?
Jacques


Bien sûr,simplement j’ai le problème uniquement sur le bout de code concernant l'éclairage.
Tant pis, je conserve l'état du switch pour l'instant.
J'ai réussi mon code qui modifie l'aspect en fonction de l'éclairage et de l'heure (enfin soit day, soit dusk,dawn,ou night)
si la gauge est éclairée l'aspect est le même de jour comme de nuit.

J'ouvre un post avec mon code
A+

Alain
Avatar de l’utilisateur
algue14
 
Messages: 1626
Inscription: 20/04/09
Localisation: Caen ; Normandie

Re: Air Manager problème de variable

Messagede JacquesZ » Mer 23 Aoû 2017 00:12

A ce moment là il faut récupérer l'état du jour/nuit avec
TIME OF DAY General time of day: Enum N
1 = Day
2 = Dusk/Dawn
3 = Night

en plus de LIGHT PANEL (booleen) et de LIGHT CABIN(booleen)

Ca devrait donner un truc comme ça:
Code: Tout sélectionner
--MS-760 test lights sur gauge oil--

local night=true

--chargement des images puis on les cache--

----------------------------------------------------------------------------------------------
face_nuit = img_add_fullscreen("ms-oil-face_2_N.png")
visible(face_nuit, false)
img_needle_L_nuit = img_add("ms_oil_needle_LH_N.png", -5, 120, 116, 19)
visible(img_needle_L_nuit,false)
img_needle_R_nuit= img_add("ms_oil_needle_RH_N.png", 142, 122, 112,11)
visible(img_needle_R_nuit, false)
plate_nuit = img_add_fullscreen("ms_oil_faceplate_N.png")
visible(plate_nuit, false)
face_jour = img_add_fullscreen("ms-oil-face_2.png")
visible(face_jour, false)
img_needle_L = img_add("ms_oil_needle_LH.png", -5, 120, 116, 19)
visible(img_needle_L, false)
img_needle_R = img_add("ms_oil_needle_RH.png", 142, 122, 112,11)
visible(img_needle_R, false)
plate_jour = img_add_fullscreen("ms_oil_faceplate.png")
visible(plate_jour, false)


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

--choix d'image en fontion de l'eclairage--

function new_light_FSX(lightpanel,lightcabin,timeofday)
light_panel=lightpanel--fif(lightpanel,1,0)
light_cabin=lightcabin--fif(lightcabin,0,1)
if timeofday==3 then
   night=true
else
   night=false
end
if  light_panel==true or night==false or light_cabin==true then
   visible(face_jour, true)
   visible(img_needle_L, true)
   visible(img_needle_R,true)
   visible(plate_jour, true)
   visible(face_nuit,false)
   visible(img_needle_L_nuit,false)
   visible(img_needle_R_nuit,  false)
   visible(plate_nuit,false)
   
else
   visible(face_jour, false)
   visible(img_needle_L, false)
   visible(img_needle_R,false)
   visible(plate_jour, false)
   visible(face_nuit,true)
   visible(img_needle_L_nuit,true)
   visible(img_needle_R_nuit,  true)
   visible(plate_nuit,true)
end
end
----------------------------------------------------------------------------------------------------
--gestion du déplacement des aiguilles--
function new_oilpress_1(oilpressL)

 
   pressL = var_cap(oilpressL[1], 0, 1280)
   
   img_rotate(img_needle_L, pressL * -1 * 120 / 1150 + 65)
   img_rotate(img_needle_L_nuit, pressL * -1 * 120 / 1150 + 65)

end

function new_oilpress_2(oilpressR)


   pressR = var_cap(oilpressR[1], 0, 1280)
   
   img_rotate(img_needle_R, pressR * -1 * 120 / (-1150) - 65)
   img_rotate(img_needle_R_nuit, pressR * -1 * 120 / (-1150) - 65)

end

function new_oilpress_FSX(oilpressA,oilpressB)
   oilpress1 = oilpressA*14.5038
   oilpress2 = oilpressB*14.5038
   new_oilpress_1({oilpress1})
   new_oilpress_2({oilpress2})
   
end

-- Bus subscribe --


xpl_dataref_subscribe("sim/cockpit2/engine/indicators/EGT_deg_C", "FLOAT[8]", new_EGT)
fsx_variable_subscribe("LIGHT PANEL","Bool",
                  "LIGHT CABIN","Bool",
                  "TIME OF DAY", "Enum", new_light_FSX)
fsx_variable_subscribe("ENG OIL PRESSURE:1", "PSI", "ENG OIL PRESSURE:2", "PSI",new_oilpress_FSX)



Comme ça les jauges s'allument s'il fait jour, ou que l'éclairage cabine est sur ON ou que l'éclairage panel est sur ON
Jacques
Ma chaîne YouTube Tutos sur l’A320 par un Pilote de Ligne: https://youtube.com/channel/UCljftuoKBcgeR-WBgYJpuoA
Avatar de l’utilisateur
JacquesZ
 
Messages: 2848
Inscription: 24/11/10

Re: Air Manager problème de variable

Messagede algue14 » Mer 23 Aoû 2017 00:24

C'est fait, j'ai ouvert un nouveau post pour partager.
J'ai pas utilisé l'éclairage cabine parce qu’a terme j'espère faire des "vrais" bezels eclairés par un "vrai" éclairage rirebleu
la variation ne concernera que l’intérieur de la gauge et je pense que ce sera plus réaliste
A+

Alain
Avatar de l’utilisateur
algue14
 
Messages: 1626
Inscription: 20/04/09
Localisation: Caen ; Normandie

Suivante

Retourner vers LUA, Linda, Macros & gauges Air Manager





Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités