Page 1 sur 1
Recherche d'informations.
Publié : dim. déc. 16, 2012 2:34 pm
par Winizz
Bonjour à tous !
Actuellement, des amis et moi, sommes en train "d'essayer" de développer un alphajet pour DCS. Le modèle 3d externe est quasiment terminé (modèle de base modélisé par mcgee33).
(Rien n'est définitif)
Un cockpit est également en cours de modélisation.
N'ayant jamais fais de .LUA, je voulais savoir si quelqu'un pourrait m'expliquer comment rendre un bouton cliquable depuis son animation sous 3D studio Max au "code" que nous écrivons dans les .LUA s'il vous plaît (exemple d'un levier de train et/ou aiguille de gauge, ou autre histoire de comprendre le principe).
Merci d'avance !
Publié : dim. déc. 16, 2012 4:35 pm
par Pat01
Ok ça roule.
Dans le cas que je vais expliquer, je n'utilise aucune dll.
Le jeu utilise par défaut les dll de base (cockpitbase.dll,...)
Commençons par une aiguille de jauge (c'est le plus simple)
arg_aiguille= numéro de l'argument pour la rotation de l'aiguille dans 3dsmax
disons que le dummy a été animé de 0 à 30 sur l'échelle de temps 3dsmax
(30 ou autre ça n'a pas d'importance)
Si la grandeur que tu veux mesurer possède déjà un controller c'est plus simple.
exemple : l'aiguille des mille pour l'altimetre barométrique.
dans mainpanel_init.lua
Baro_Altimeter_thousands = CreateGauge()
Baro_Altimeter_thousands.arg_number = arg_aiguille
Baro_Altimeter_thousands.input = {0,10000} -- m -- A AJUSTER
Baro_Altimeter_thousands.output = {0,1.0} -- A AJUSTER
Baro_Altimeter_thousands.controller = controllers.base_gauge_BarometricAltitude
Baro_Altimeter_thousands.input
A AJUSTER (valeurs non linéaires, ou pour que la valeur indiquée par l'aiguille colle avec l'image de la jauge)
indiquer un tableau par exemple {0,1000,2500,3000,3500,8000,10000}
Ces valeurs indiquent l'altitude indiquée par l'aiguille des mille
Ce tableau peut avoir un grand nombre d'entrées, pour l'instant je n'ai utilisé qu'une quinzaine d'entrées pour certaines jauges.
Il doit avoir le même nombre d'entrées que celui pour Baro_Altimeter_thousands.output
Baro_Altimeter_thousands.output
A AJUSTER un tableau avec le même nombre d'entrées que Baro_Altimeter_thousands.input
exemple {0,0.119,0.23,0.5,0.58,0.92,0.996}
ces valeurs indiquent la position de l'aiguille par rapport à l'échelle de temps 3dsmax.
0-> 0
0.33=>1/3 de l'échelle
etc...
Le plus simple pour avoir ces valeurs est de faire varier l'argument dans modelviewer et de noter les valeurs.
Publié : dim. déc. 16, 2012 4:47 pm
par Pat01
Allez, l'aiguille des dizaines (EDIT : des unités de 0 à 1000) (sans controller)
arg_aiguille_tenth numéro de l'argument pour la rotation de l'aiguille des dizaines dans 3dsmax
dans device.lua
devices["BARO_ALTIMETER"] = 8 ---> prochain numéro libre
dans device_init.lua
creators[devices.BARO_ALTIMETER] = {"avLuaDevice",LockOn_Options.script_path.."BaroAltimeter.lua"}
Dans BaroAltimeter.lua
local update_time_step = 0.04 -- au choix
make_default_activity(update_time_step)
local BaroAltTenth = get_param_handle("BARO_ALT_TENTH")
local sensor_data = get_base_data()
function update()
BaroAltTenth:set(sensor_data.getBarometricAltitude()%1000)
end
dans mainpanel_init.lua
Baro_Altimeter_tenth = CreateGauge("parameter") -- le mot "parameter" est important, il signifie au jeu que la jauge n'attend pas de controller
Baro_Altimeter_tenth.parameter_name = "BARO_ALT_TENTH" -- même nom que dans BaroAltimeter.lua --> get_param_handle("BARO_ALT_TENTH")
Baro_Altimeter_tenth.arg_number = arg_aiguille_tenth
Baro_Altimeter_tenth.input = {0, 1000} -- m -- A AJUSTER
Baro_Altimeter_tenth.output = {0, 1} -- 0.0 à 1.0 -- A AJUSTER
Publié : lun. déc. 17, 2012 11:17 pm
par Winizz
Merci Pat ! Nous irons tester tout cela !