Gauges pour le Beaver DHC-2 FSX- P3D AM

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

Re: Gauges pour le Beaver DHC-2 FSX- P3D AM

Messagede arcc » Mer 13 Déc 2017 19:21

En fait c'est un extrait de mon code. Avec l'aide de l'autre Jacques qui m'ailles aidé pour que les aiguilles se deplacent doucement.

Je te met le code en entier. Tu feras le tri avec les différentes images selon l'heure du jour.

Code: Tout sélectionner
-- Only for DHC6 Twin Otter Extended by Aerosoft --
-- Fuel Quantity FWD Gauge Version 2 --
-- By Christian R (arcc) --

-- Global variables --
local gbl_target_fuel = 0
local gbl_cur_fuel    = 0
local gbl_factor      = 0.20
-- Set the maximum fuel quantity (full) in gallons here:
local gbl_max_fuel    = 184.1

--Images--
img_add_fullscreen("fuel_center_backdrop_day.png")
img_needle = img_add("neddle.png",0,0,256,256)

mask_day = img_add_fullscreen("mask_day.png")
mask_light = img_add_fullscreen("mask_light.png")
mask_night = img_add_fullscreen("mask_night.png")
mask_dusk = img_add_fullscreen("mask_dusk.png")

--choix d'image en fontion de l'eclairage--
 function new_light_FSX(light,ambiance,master)
lighted=light and master
img_visible(mask_light, lighted)
img_visible(mask_night, lighted == false and ambiance== 3)
img_visible(mask_dusk, lighted == false and ambiance== 2)
img_visible(mask_day, ambiance == 1)

end

-- Function for Fuel Quantity --
function new_fuel_fsx(gallons_center, battery, fueltest)

    -- Convert weight in KG to gallons with 2.73KG / gallon
    gallons = gallons_center

    if battery == true then
      if fueltest == false then
        gbl_target_fuel = var_cap(gallons, 0, gbl_max_fuel)
    else
        gbl_target_fuel = 0      
      end      
    else
        gbl_target_fuel = 0
    end

end

-- Slowly move needle to current amount of fuel --
function timer_callback()   
   
    -- Rotate needle image
   img_rotate(img_needle, (277 / gbl_max_fuel * gbl_cur_fuel) -160)

    -- Calculate the current fuel position
    gbl_cur_fuel = gbl_cur_fuel + ((gbl_target_fuel - gbl_cur_fuel) * gbl_factor)

end

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

-- FSX Variables --
fsx_variable_subscribe("FUEL TANK CENTER QUANTITY", "Gallons",
                       "ELECTRICAL MASTER BATTERY", "Bool",
                       "SPOILERS ARMED", "Bool", new_fuel_fsx)    -- FSX Variables for test quantity
fsx_variable_subscribe("LIGHT PANEL","Bool",
                  "TIME OF DAY", "Enum",
                  "ELECTRICAL MASTER BATTERY", "Bool", new_light_FSX)  -- FSX Variables night light                       
                        
-- Timers --
tmr_update = timer_start(0, 50, timer_callback)


A+
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: Gauges pour le Beaver DHC-2 FSX- P3D AM

Messagede algue14 » Mer 13 Déc 2017 19:53

et comme ça ?

-- Functions reservoir de Gauche "FUEL TANK CENTER QUANTITY"

function Fuel_reservoir_L(gallons_left,batterie)
if batterie then
gallons_L = var_cap(gallons_left, 0, 262)
if gallons_L > 35 then -- si plus de 35 Gallons
ect.....

else
img_rotate(img_Aiguille_Fuel_L, 0)


tu inclus l’état de la batterie (ou le master bus) dans la fonction
Si l'état est 1 la fonction poursuit les calculs...... if batterie then.....
sinon la fonction ramene l'aiguille à 0 ....... else img_rotate(img_Aiguille_Fuel_L, 0)
A+

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

Re: Gauges pour le Beaver DHC-2 FSX- P3D AM

Messagede jacquesvde » Mer 13 Déc 2017 20:08

algue14 a écrit:et comme ça ?

-- Functions reservoir de Gauche "FUEL TANK CENTER QUANTITY"

function Fuel_reservoir_L(gallons_left,batterie)
if batterie then
gallons_L = var_cap(gallons_left, 0, 262)
if gallons_L > 35 then -- si plus de 35 Gallons
ect.....

else
img_rotate(img_Aiguille_Fuel_L, 0)


tu inclus l’état de la batterie (ou le master bus) dans la fonction
Si l'état est 1 la fonction poursuit les calculs...... if batterie then.....
sinon la fonction ramene l'aiguille à 0 ....... else img_rotate(img_Aiguille_Fuel_L, 0)


Merci Alain et Christian merci affiche

Je faisait un vol avec mon Beaver c'est cool la navigation a l’ancienne. chouettedoights

je vais faire l’essai ça devrait aller merci affiche
Avatar de l’utilisateur
jacquesvde
 
Messages: 1226
Inscription: 20/04/09
Localisation: Courcelles Belgique

Re: Gauges pour le Beaver DHC-2 FSX- P3D AM

Messagede JacquesZ » Mer 13 Déc 2017 20:27

jacquesvde a écrit:Bonjour,

J'ai chercher comment programmer une fonction qui empêche les aiguilles du réservoir d’être active quant l’interrupteur batterie est sur off, mais je n'arrive pas a trouver les bonne ligne de code. furieuxfumée

Jacques cligneoeil



Image

Code: Tout sélectionner
    img_add_fullscreen("Font_Fuel_DHC2.png")
    img_Aiguille_Fuel_L = img_add("AIGUILLE.png", -103, 81, 512, 512)
    img_Aiguille_Fuel_R = img_add("AIGUILLE.png",102,84,512,512)
    img_Aiguille_Fuel_Re = img_add("AIGUILLE.png",-1,-128,512,512)

    -----------------------------------------------------------------------
    -- Functions reservoir de Gauche "FUEL TANK CENTER QUANTITY"

    function Fuel_reservoir_L(gallons_left)

        gallons_L = var_cap(gallons_left, 0, 262)
       if gallons_L > 35 then -- si plus de 35 Gallons
             img_rotate(img_Aiguille_Fuel_L, 262) --Alors galons = rotation Max 262 °
          elseif gallons_L >= 24 then
             img_rotate(img_Aiguille_Fuel_L, 38 / 11*(gallons_L-24) + 224)
          elseif gallons_L >= 20 then
             img_rotate(img_Aiguille_Fuel_L, 39 / 4*(gallons_L-20) + 185)
          elseif gallons_L >= 16 then
             img_rotate(img_Aiguille_Fuel_L, 36 / 4*(gallons_L-16) + 149)
          elseif gallons_L >= 12 then
             img_rotate(img_Aiguille_Fuel_L, 54 / 4*(gallons_L-12) + 95)
          elseif gallons_L >= 8 then
             img_rotate(img_Aiguille_Fuel_L, 47 / 4*(gallons_L-8) + 48)
          elseif gallons_L >= 4 then
             img_rotate(img_Aiguille_Fuel_L, 34 / 4*(gallons_L-4) + 14)
          else
             img_rotate(img_Aiguille_Fuel_L, 14 / 4* gallons_L)
          end
     
    end




    fsx_variable_subscribe("FUEL TANK CENTER QUANTITY", "Gallons" , Fuel_reservoir_L)


Bonjour Jacques
Je comprends que tu souhaites que l’aiguille indique 0 lorsque la batterie est sur off, donc il te faut déjà souscrire (en plus) à la variable ELECTRICAL MASTER BATTERY, « Boolean » qui doit être sur true pour que ça fonctionne.
Le mieux est de la récupérer dans le même variable_subscribe que la quantité d’essence, donc
Code: Tout sélectionner
fsx_variable_subscribe("FUEL TANK CENTER QUANTITY", "Gallons" , Fuel_reservoir_L)

Devient
Code: Tout sélectionner
fsx_variable_subscribe(« ELECTRICAL MASTER BATTERY », « Boolean »,"FUEL TANK CENTER QUANTITY", "Gallons" , etat_batterie,Fuel_reservoir_L)


Il suffit ensuite suivant la variable etat_batterie Soit d’afficher la valeur prévue, soit de forcer la valeur gallons_L à zéro dans le début de la fonction et ça devrait marcher.
La fonction attend maintenant 2 valeurs (état batterie et fuel)

Donc on modifie le début de ta fonction comme suit:
Code: Tout sélectionner
  function Fuel_reservoir_L(etat_batterie,gallons_left)

        If etat_batterie==true then —note le ==true n’est pas obligatoire,c’est pour faciliter la lisibilité
gallons_L = var_cap(gallons_left, 0, 262)
else
gallons_L=0
end

Et c’est tout, normalement.
C’est fait avec mon tel, je ne suis pas devant mon PC, dis moi si ça fonctionne.

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: Gauges pour le Beaver DHC-2 FSX- P3D AM

Messagede jacquesvde » Mer 13 Déc 2017 23:09

merci affiche ça fonctionne chouettedoights ecroulerire chouettedoights

Jacques cligneoeil
Dernière édition par jacquesvde le Mer 13 Déc 2017 23:59, édité 1 fois.
Avatar de l’utilisateur
jacquesvde
 
Messages: 1226
Inscription: 20/04/09
Localisation: Courcelles Belgique

Re: Gauges pour le Beaver DHC-2 FSX- P3D AM

Messagede Papagolf » Mer 13 Déc 2017 23:10

Salut Jacques
essaye ca ca marche pour moi
Code: Tout sélectionner
    img_add_fullscreen("Font_Fuel_DHC2.png")
    img_Aiguille_Fuel_L = img_add("AIGUILLE.png", -103, 81, 512, 512)
    img_Aiguille_Fuel_R = img_add("AIGUILLE.png",102,84,512,512)
    img_Aiguille_Fuel_Re = img_add("AIGUILLE.png",-1,-128,512,512)

    -----------------------------------------------------------------------
    -- Functions reservoir de Gauche "FUEL TANK CENTER QUANTITY"

    --function Fuel_reservoir_L(gallons_Gauche)

    function Fuel_reservoir_L(batterie,gallons_L)

      
         if batterie == false then
         gallons_L=0
       end
   
        --gallons_L = var_cap(gallons_Gauche, 0, 262)  --35 Galons
         if gallons_L > 35  then -- si plus de 35 Gallons
             img_rotate(img_Aiguille_Fuel_L, 262) --Alors galons = rotation Max 262°
         elseif gallons_L >= 24 then
             img_rotate(img_Aiguille_Fuel_L, 38 / 11*(gallons_L-24) + 224)
         elseif gallons_L >= 20 then
             img_rotate(img_Aiguille_Fuel_L, 39 / 4*(gallons_L-20) + 185)
         elseif gallons_L >= 16 then
             img_rotate(img_Aiguille_Fuel_L, 36 / 4*(gallons_L-16) + 149)
         elseif gallons_L >= 12 then
             img_rotate(img_Aiguille_Fuel_L, 54 / 4*(gallons_L-12) + 95)
         elseif gallons_L >= 8 then
             img_rotate(img_Aiguille_Fuel_L, 47 / 4*(gallons_L-8) + 48)
         elseif gallons_L >= 4 then
             img_rotate(img_Aiguille_Fuel_L, 34 / 4*(gallons_L-4) + 14)
         else
             img_rotate(img_Aiguille_Fuel_L, 14 / 4* gallons_L)
          end
     
    end
 
       
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------   
    -- variables pour le réservoir Gauche --
    fsx_variable_subscribe("ELECTRICAL MASTER BATTERY","Bool",
                     "FUEL LEFT QUANTITY", "Gallons" , -- cela reprend la valeur du réservoir gauche
                  Fuel_reservoir_L)




Je n'ai pas modifier les variations de l'aiguille
tu peux refaire avec le reservoir central et le droit
j'espère que ca te conviendra
je suis pas encore au top en LUA
@ plus Bruno
Papagolf
 
Messages: 105
Inscription: 29/11/15
Localisation: 13

Re: Gauges pour le Beaver DHC-2 FSX- P3D AM

Messagede jacquesvde » Jeu 14 Déc 2017 00:02

merci affiche a tous c'est sous contrôle tout va bien je vous passe mon script faite un copier et coller pour le réservoir DHC2
Jacques cligneoeil

Code: Tout sélectionner
-- Les réservoirs sont calibré deux a 35 Gallons et un a 25 Galons,
-- pas de problème si vous utiliser un réservoir plus grand  l’indication restera précis  a partir de la valeur Max
--  si par exemple vous avez un réservoir de 40 Galons l'aiguille de la jauge serra au max
-- c'est seulement quand le fuel descendra en dessous de la valeur max quel serra active.

img_add_fullscreen("Font_Fuel_DHC2.png")
img_Aiguille_Fuel_L = img_add("AIGUILLE.png", -103, 81, 512, 512)
img_Aiguille_Fuel_R = img_add("AIGUILLE.png",102,84,512,512)
img_Aiguille_Fuel_Re = img_add("AIGUILLE.png",-1,-128,512,512)

-----------------------------------------------------------------------
-- Functions reservoir de Gauche "FUEL TANK CENTER QUANTITY"


function Fuel_reservoir_L(gallons_left,batterie)
      if batterie == true then
      gallons_L = var_cap(gallons_left, 0, 262)
      else
      gallons_L = 0
end      
       if gallons_L > 35 then -- si plus de 35 Gallons
         img_rotate(img_Aiguille_Fuel_L, 262) --Alors galons = rotation Max 262°
      elseif gallons_L >= 24 then
         img_rotate(img_Aiguille_Fuel_L, 38 / 11*(gallons_L-24) + 224)
      elseif gallons_L >= 20 then
         img_rotate(img_Aiguille_Fuel_L, 39 / 4*(gallons_L-20) + 185)
      elseif gallons_L >= 16 then
         img_rotate(img_Aiguille_Fuel_L, 36 / 4*(gallons_L-16) + 149)
      elseif gallons_L >= 12 then
         img_rotate(img_Aiguille_Fuel_L, 54 / 4*(gallons_L-12) + 95)
      elseif gallons_L >= 8 then
         img_rotate(img_Aiguille_Fuel_L, 47 / 4*(gallons_L-8) + 48)
      elseif gallons_L >= 4 then
         img_rotate(img_Aiguille_Fuel_L, 34 / 4*(gallons_L-4) + 14)
      else
         img_rotate(img_Aiguille_Fuel_L, 14 / 4* gallons_L)
      end
 
end

----------------------------------------------------------------------------------------
-- Functions reservoir de Gauche--"FUEL TANK CENTER2 QUANTITY"

function Fuel_reservoir_R(gallons_Droite,batterie1)

      if batterie1 == true then
      gallons_R = var_cap(gallons_Droite, 0, 262)
      else
      gallons_R = 0
end   

       if gallons_R > 35 then -- si plus de 35 Gallons
         img_rotate(img_Aiguille_Fuel_R, 262) --Alors galons = rotation Max 262°
      elseif gallons_R >= 24 then
         img_rotate(img_Aiguille_Fuel_R, 38 / 11*(gallons_R-24) + 224)
      elseif gallons_R >= 20 then
         img_rotate(img_Aiguille_Fuel_R, 39 / 4*(gallons_R-20) + 185)
      elseif gallons_R >= 16 then
         img_rotate(img_Aiguille_Fuel_R, 36 / 4*(gallons_R-16) + 149)
      elseif gallons_R >= 12 then
         img_rotate(img_Aiguille_Fuel_R, 54 / 4*(gallons_R-12) + 95)
      elseif gallons_R >= 8 then
         img_rotate(img_Aiguille_Fuel_R, 47 / 4*(gallons_R-8) + 48)
      elseif gallons_R >= 4 then
         img_rotate(img_Aiguille_Fuel_R, 34 / 4*(gallons_R-4) + 14)
      else
         img_rotate(img_Aiguille_Fuel_R, 14 / 4* gallons_R)
      end
 
end
---------------------------------------------------------------------------------------------

 -- Functions reservoir de central superieur --"FUEL TANK CENTER3 QUANTITY"
  --function Fuel_reservoir_REAR(gallons_centre)     --25 Galons
 
 function Fuel_reservoir_REAR(gallons_centre,batterie2)

      if batterie2 == true then
         gallons_Rear = var_cap(gallons_centre, 0, 262)
      else
         gallons_Rear = 0
end
        if gallons_Rear > 25 then -- si plus de 25 Gallons
          img_rotate(img_Aiguille_Fuel_Re, 260) --Alors galons = rotation Max 260°
      elseif gallons_Rear >= 16 then
         img_rotate(img_Aiguille_Fuel_Re, 45 / 9*(gallons_Rear-16) + 215)
      elseif gallons_Rear >= 12 then      
         img_rotate(img_Aiguille_Fuel_Re, 45 / 4*(gallons_Rear-12) + 170)
      elseif gallons_Rear >= 8 then      
         img_rotate(img_Aiguille_Fuel_Re, 90 / 4*(gallons_Rear-8) + 80)   
      elseif gallons_Rear >= 4 then      
         img_rotate(img_Aiguille_Fuel_Re, 51 / 4*(gallons_Rear-4) + 29)
      else
         img_rotate(img_Aiguille_Fuel_Re, 29 / 4* gallons_Rear)   
      end         
         
   end
   
   
   
   
   
----------------------------------------------------------------------------------------------------------------------------------------------------------------------   
-- variables pour le réservoir Gauche --
fsx_variable_subscribe("FUEL TANK CENTER QUANTITY", "Gallons",
                       "ELECTRICAL MASTER BATTERY", "Bool", Fuel_reservoir_L)

-- variables pour le réservoir droite --
fsx_variable_subscribe("FUEL TANK CENTER2 QUANTITY", "Gallons",
                       "ELECTRICAL MASTER BATTERY", "Bool",  Fuel_reservoir_R)

-- variables pour le réservoir REAR --
fsx_variable_subscribe("FUEL TANK CENTER3 QUANTITY", "Gallons",
                       "ELECTRICAL MASTER BATTERY", "Bool", Fuel_reservoir_REAR)

Avatar de l’utilisateur
jacquesvde
 
Messages: 1226
Inscription: 20/04/09
Localisation: Courcelles Belgique

Re: Gauges pour le Beaver DHC-2 FSX- P3D AM

Messagede jacquesvde » Jeu 14 Déc 2017 18:01

Bonjour,
la fonction batterie fonctionne bien, mais quand la batterie est sur on , l'aiguille ce déplace a la vitesse de la lumière au point que je retrouve des ressort sur mon cockpit. ecroulerire ecroulerire ecroulerire
Avatar de l’utilisateur
jacquesvde
 
Messages: 1226
Inscription: 20/04/09
Localisation: Courcelles Belgique

Re: Gauges pour le Beaver DHC-2 FSX- P3D AM

Messagede JacquesZ » Jeu 14 Déc 2017 18:51

Oui c’est le soucis avec ce code.
Si l’addon ne fait pas varier la quantité des jauges de manière progressive avec l’allumage batterie, Il faut implémenter dans AM le déplacement « doux » des aiguilles (avec un timer) si tu veux éviter ce genre de problème.
Tu peux regarder une de mes jauges pour le Baron pour avoir une idée de ce qu’il faut faire, et Christian (arcc) a également publié une jauge de ce type, si tu as besoin d’aide n’hésites pas.

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: Gauges pour le Beaver DHC-2 FSX- P3D AM

Messagede jacquesvde » Jeu 14 Déc 2017 19:04

Oui j'ai déjà fait ça pour d'autre réservoir, mais ici ça se corse car j'ai programmer les réservoir non linéaire. murrouge

Code: Tout sélectionner
-- Functions reservoir de Gauche "FUEL TANK CENTER QUANTITY"


function Fuel_reservoir_L(gallons_left,batterie)
      if batterie == true then
      gallons_L = var_cap(gallons_left, 0, 262)
      else
      gallons_L = 0
end     
       if gallons_L > 35 then -- si plus de 35 Gallons
         img_rotate(img_Aiguille_Fuel_L, 262) --Alors galons = rotation Max 262°
      elseif gallons_L >= 24 then
         img_rotate(img_Aiguille_Fuel_L, 38 / 11*(gallons_L-24) + 224)
      elseif gallons_L >= 20 then
         img_rotate(img_Aiguille_Fuel_L, 39 / 4*(gallons_L-20) + 185)
      elseif gallons_L >= 16 then
         img_rotate(img_Aiguille_Fuel_L, 36 / 4*(gallons_L-16) + 149)
      elseif gallons_L >= 12 then
         img_rotate(img_Aiguille_Fuel_L, 54 / 4*(gallons_L-12) + 95)
      elseif gallons_L >= 8 then
         img_rotate(img_Aiguille_Fuel_L, 47 / 4*(gallons_L-8) + 48)
      elseif gallons_L >= 4 then
         img_rotate(img_Aiguille_Fuel_L, 34 / 4*(gallons_L-4) + 14)
      else
         img_rotate(img_Aiguille_Fuel_L, 14 / 4* gallons_L)
      end
 
end
Avatar de l’utilisateur
jacquesvde
 
Messages: 1226
Inscription: 20/04/09
Localisation: Courcelles Belgique

PrécédenteSuivante

Retourner vers LUA, Linda, Macros & gauges Air Manager





Qui est en ligne

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