A little gift..
Hello, everydody, here is a script, for check doors state in "LUA PREDICATE" rule.
Sorry comments are in french, and thanks to thoses (like Grimes), who helps everyone... :)
------ SCRIP to put in an .lua file ----------------------------------------------------------------
--==========================================================
-- Controle de l'état des portes du UH et retourne true si la porte est ouverte, false sinon.
--
-- 1/ Charger dans l'éditeur de mission le présent fichier avec : "EXECUTER FICHIER SCRIPT" avec fichier = Ctrl_Portes.lua
-- 2/ utilisation : on ajoute une règle "LUA PREDICATE" avec la commande suivante :
-- return FG02.porteOuverteUH("UH 01", "AVANT") -- test portes avants
-- return FG02.porteOuverteUH("UH 01", "ARRIERES") -- test 2 portes arrières
-- return FG02.porteOuverteUH("UH 01", "ARR_D") -- test 1 porte arrière droite
-- return FG02.porteOuverteUH("UH 01", "ARR_G") -- test 1 porte arrière gauche
-- return FG02.porteOuverteUH("UH 01", "TOUTES") -- test que portes avants et 2 portes arrière sont ouvertes
--
-- Cette fonction a besoin de 2 paramètres (params) :
-- 1> Nom de l'unité à contrôler (unit name)(ex :"UH 01" )
-- 2> Code porte à contrôler (3 possibles) :
-- "AVANT" = contrôle portes avant ---------------> for pilot and copilot doors test
-- "ARR_G" = contrôle portes arrière gauche ------> for rear left door test
-- "ARR_D" = contrôle portes arrière droit ------> for rear right door test
-- "TOUTES" = Teste toutes les portes avant + le 2 arrières sont ouvertes --> for all doors test
-- "ARRIERES" = Teste si les 2 portes arrières sont ouvertes ------> for rear 2 doors test
--
-- avril/2018 - par FullGas
--
--
FG02 = {} -- NE PAS RETIRER !
-----------------------------------------------------------------------------------------------
function FG02.porteOuverteUH(helName, Porte)
local u, argdrawv = {}
local codes = {}
local code = ""
local ret = false
if not Unit.getByName(helName) then -- seulement pour unités avec slot client pris, car plantage si s/slot libre
trigger.action.outText("Erreur dans FG02.porteOuverteUH, l'hélico " .. helName .. " n'existe pas ! ", 30) -- if helName don't exist => error message
return nil
else
u = Unit.getByName(helName)
if string.upper(Porte) == "AVANT" then
codes[#codes+1] = 38 -- portes avant à tester
--code = 38 -- portes avant à tester
elseif string.upper(Porte) == "ARR_G" then
codes[#codes+1] = 43 -- portes arrière gauche à tester
-- code = 43 -- portes arrière gauche à tester
elseif string.upper(Porte) == "ARR_D" then
codes[#codes+1] = 44 -- portes arrière droite à tester
--code = 44 -- portes arrière gauche à tester
elseif string.upper(Porte) == "ARRIERES" then
codes[#codes+1] = 43 -- portes arrière gauche à tester
codes[#codes+1] = 44 -- portes arrière droite à tester
elseif string.upper(Porte) == "TOUTES" then
codes[#codes+1] = 38 -- portes avant à tester
codes[#codes+1] = 43 -- portes arrière gauche à tester
codes[#codes+1] = 44 -- portes arrière droite à tester
end
if #codes == 0 then -- si params "Porte" inconnu => message erreur
trigger.action.outText("Erreur dans FG02.porteOuverteUH, pour " .. helName .. ", le type de porte " .. tostring(Porte) .. " n'est pas correct (à contrôler) !", 30)
return nil
else
-- Tester tous les codes portes à vérifier 1 2 ou 3 selon parmas "Porte"
local pass1 = true
for i=1, #codes do
argdrawv = u:getDrawArgumentValue(codes)
if argdrawv ~= nil then
if codes == 38 and argdrawv > 0.899 then argdrawv = 1; end -- ajuster le maxi pour portes avant
if argdrawv == 1 then
if pass1 == true then --si premier passage forcer ret
pass1 = false
ret = true; -- porte détectée ouverte
else
ret = ret and true -- porte détectée ouverte
end
else
pass1 = false
ret = false -- porte détectée fermée
end
end
end
end
return ret -- dans tous les cas on retourne l'état de la porte contrôlée (pour les appels par prog lua)
end
end
-- END of SCRIP ---------------------------------------------------------------------------------------
-- how to call ex:
-- 1> in an action "EXECUTE FILE" load the lua file containing the present code
-- 2> in a LUA PREDICATE rule put this script: return FG02.porteOuverteUH("UH 09 HOT","AVANT")
-- for check if the front doors of th UH called "UH 09 HOT" are open
-----------------------------------------------------------------------------------------