G60 G60
Páginas: 1 [2]   Ir Abajo
  Imprimir  
Autor Tema: Crear Datarefs..... como???  (Leído 26891 veces)
0 Usuarios y 1 Visitante están viendo este tema.
10 Mayo, 2011, 23:28:14 #15
awall86
Usuario Iniciado
****
Desconectado Desconectado

Mensajes: 335



WWW
En línea
Re: Crear Datarefs..... como???

Para quienes quieran dar los primeros pasos en el tema de crear dataref via plugin, como comentaba Dragun, aqui les dejo un codigo que he probado según la sugerencia de Kha, que ha dado la primera "cátedra" al respecto.

Para empezar lo ideal es leerse este post de Philipp, famoso por muchos motivos en el ambiente de X-plane, pero por sobre todo por ser parte del equipo de desarrollo del mejor avión que existe para X-Plane: el CRJ200 de Japo.El post es este:

http://forums.x-plane.org/index.php?showtopic=48012

El código de abajo, una vez compilado crea un dataref en X-Plane (En mi caso lo llamé C130/aircarft/parts/Mydataref) y permite asociarlo en planemaker  a un anunciador, y/o un switch para cambiar su valor. También puede verse su valor a traves del DatarefEditor de Sandy Barbour ya que al cargarse el plugin se publica como un dataref mas.

Yo los pasos que he dado para iniciarme en el tema (Y sigo "iniciado", ya que recién estoy empezando, y NO SOY programador), es leerme el post mencionado, montar mi entorno de desarrollo básico, bajar el SDK, bajar ejemplos, y analizarlos, y pasar muchas horas de silla, probando, equivocándome, corrigiendo, y volviendo a probar. El google es un herramienta espectacular para salirse de apuros en estos casos.

A la primera no nos va a salir un FMC completito en OpenGL, pero todo es cuestión de paciencia investigación y trabajo. Nadie nació sabiendo, y lo mejor es empezar de abajo.



Código:
#include <stdio.h>
#include <string.h>
#include "XPLMPlugin.h"
#include "XPLMDisplay.h"
#include "XPLMGraphics.h"
#include "XPLMProcessing.h"
#include "XPLMDataAccess.h"
#include "XPLMUtilities.h"

//Constants for custom DataRef registration on DataRef Editor plugin
long const MSG_ADD_DATAREF = 0x01000000; //Message to DataRef Editor to add a custom DataRef reference
long const NO_PLUGIN_ID = -1; //Return value when a plugin is not found by ID

int Mydataref_DatarefEditor_Published = 0; //Is our custom DataRef yet published on DataRef Editor?
long Mydataref = 0; //Internal variable to keep the value of our custom DataRef
XPLMDataRef Accesor1 = NULL; //Handle to the Data Accessor for our custom DataRef


static float MyFlightLoopCallback(
                                   float                inElapsedSinceLastCall,    
                                   float                inElapsedTimeSinceLastFlightLoop,    
                                   int                  inCounter,    
                                   void *               inRefcon);    

int fn_Mydataref_Status(void * inRefcon);
void fn_Mydataref_Write(void * inRefcon, int Invalue);

/*
 * XPluginStart
 *
 * Our start routine registers our window and does any other initialization we
 * must do.
 *
 */
PLUGIN_API int XPluginStart(
char * outName,
char * outSig,
char * outDesc)
{
strcpy(outName, "Prueba");
strcpy(outSig, "AlcalaSim.Plugins.Prueba");
strcpy(outDesc, "Prueba Publicacion Dataref");


XPLMRegisterFlightLoopCallback(
MyFlightLoopCallback, /* Callback */
1.0, /* Interval */
NULL); /* refcon not used. */

return 1;
}

/*
 * XPluginStop
 *
 * Our cleanup routine deallocates our window.
 *
 */
PLUGIN_API void XPluginStop(void)
{
XPLMUnregisterFlightLoopCallback(MyFlightLoopCallback, NULL);
}

/*
 * XPluginDisable
 *
 * We do not need to do anything when we are disabled, but we must provide the handler.
 *
 */
PLUGIN_API void XPluginDisable(void)
{
}

/*
 * XPluginEnable.
 *
 * We don't do any enable-specific initialization, but we must return 1 to indicate
 * that we may be enabled at this time.
 *
 */
PLUGIN_API int XPluginEnable(void)
{
//Registration of the custom DataRef functions for C130/aircraft/parts/Mydataref
//When our plugin is loaded, it needs register all custom DataRefs in X-Plane (one accessor for each custom DataRef)
Accesor1 = XPLMRegisterDataAccessor("C130/aircraft/parts/Mydataref", xplmType_Int, 1, fn_Mydataref_Status, fn_Mydataref_Write, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0);

return 1;
}

/*
 * XPluginReceiveMessage
 *
 * We don't have to do anything in our receive message handler, but we must provide one.
 *
 */
PLUGIN_API void XPluginReceiveMessage(
XPLMPluginID inFromWho,
long inMessage,
void * inParam)
{
}

float MyFlightLoopCallback(
                                   float                inElapsedSinceLastCall,    
                                   float                inElapsedTimeSinceLastFlightLoop,    
                                   int                  inCounter,    
                                   void *               inRefcon)
{
long PluginID = XPLM_NO_PLUGIN_ID;

//Publication on the DatarefEditor plugin for testing purposes
//We will register our custom DataRef in DatarefEditor if it is not register yet (checking the flag)
if(Mydataref_DatarefEditor_Published == 0)
{
//We look for the DatarefEditor's internal id to send the 'register DataRef' message to him
PluginID = XPLMFindPluginBySignature("xplanesdk.examples.DataRefEditor");
//If the id for DatarefEditor is found, we send the message
if (PluginID != XPLM_NO_PLUGIN_ID)
{
XPLMSendMessageToPlugin(PluginID, MSG_ADD_DATAREF,(void*)"C130/aircraft/parts/Mydataref");
//We set the status of the DataRef to 'published in DatarefEditor'
Mydataref_DatarefEditor_Published = 1;
}
}




/* Return 1.0 to indicate that we want to be called again in 1 second. */
return -1.0;
}                                  

int fn_Mydataref_Status(void * inRefcon)
{
return Mydataref;
}
void fn_Mydataref_Write(void * inRefcon, int InValue)
{
  Mydataref = InValue;
}



11 Mayo, 2011, 00:03:40 #16
Dragun
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 679



WWW
En línea
Re: Crear Datarefs..... como???

Buenisimo ese link, no lo conocia , mucha info....muchas gracias y felicidades por tus avances Sonrisa


11 Mayo, 2011, 00:43:51 #17
cescll
Usuario Ocasional
***
Desconectado Desconectado

Mensajes: 44



En línea
Re: Crear Datarefs..... como???

Genial el enlace. Para aquellos a los que el C o Pascal les provoque sudores fríos recordar que existe una interfaz  para Python de esta misma  API escrita por Sandy Barbour:
http://www.xpluginsdk.org/python_interface.htm 

11 Mayo, 2011, 10:27:27 #18
jvaldunciel
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 974



En línea
Re: Crear Datarefs..... como???

Yo intenté crear unos custom command ( esenciales para poder asignar un par de botones de joystick a una accion que, con el ratón se puede hacer, pero no se puede asignar a ningún botón) con python y fuí incapaz, en c++ no tuve problemas.

Existe otra opción más que no he probado, Gizmo, que es un interfaz para x-plane, para hacer plugins en lua. Otro lenguaje interpretado tipo python

La ventaja de los lenguajes interpretados es que los plugins son multiplataforma, sin ningún trabajo adicional por parte de desarrollador. No hay que compilar en otros S.O. para que funcione en ellos.


11 Mayo, 2011, 15:10:12 #19
Dragun
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 679



WWW
En línea
Re: Crear Datarefs..... como???

Yo intenté crear unos custom command ( esenciales para poder asignar un par de botones de joystick a una accion que, con el ratón se puede hacer, pero no se puede asignar a ningún botón) con python y fuí incapaz, en c++ no tuve problemas.

Existe otra opción más que no he probado, Gizmo, que es un interfaz para x-plane, para hacer plugins en lua. Otro lenguaje interpretado tipo python

La ventaja de los lenguajes interpretados es que los plugins son multiplataforma, sin ningún trabajo adicional por parte de desarrollador. No hay que compilar en otros S.O. para que funcione en ellos.
Para eso mirate esta utilidad '(Key and) Button2DataRef 1.4.1' del org http://forums.x-plane.org/index.php?app=downloads&showfile=13340

Yo estoy haber si saco el tema de las datarefs en C , creo q es lo mas facil a largo plazo claro  Labios sellados


11 Mayo, 2011, 23:23:50 #20
cescll
Usuario Ocasional
***
Desconectado Desconectado

Mensajes: 44



En línea
Re: Crear Datarefs..... como???

Por mi parte, estoy terminando un plugin sencillito en python (básicamente leer y escribir datarefs). En cuanto tenga algo enseñable lo subo, por si pudiera servir de ayuda o inspiración a alguien.

Saludos

01 Junio, 2011, 01:18:44 #21
CarlosGarcia
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 663



En línea
Re: Crear Datarefs..... como???

Al momento la forma mas facil de hacer un PLUGIN para los no programadores es GIZMO.

Este es un ejemplo que he logrado mas o menos hacer despues de 8 dias utilizando GIZMO, no soy programador solo tengo algo de experiencia en PHP y nada mas.

Calcular basado en el peso del avion las velocidades de despegue V1 V2 VR, que el script manipule las luces de acuerdo a la fase del vuelo, PARK, TAXI, TAKE OFF, ON FLY y LANDING, y de igual forma manipule los FLAPS, y las velocidades hasta dejar el avion a una altura de 11.000 pies de ahi para delante el piloto continua con el vuelo, cuando el avion esta proximo a Aterrizar, y estas en el LOC y GS (APP) entonces basado en el peso actual del Avion pone los FLAPS y ajusta las Velocidades hasta lograr la velocidad Vref para el aterrizaje.

Una vez este cercano a la pista el avion disminuya la velocidad vertical hasta un punto que se realize un aterrizaje muy suave ( ESTA ETAPA AUN NO LA HE LOGRADO) lo maximo que hago es de 200 - 300 Ft/min y algunas veces antes de tocar la pista el avion hace una especie de TOGA, y vuelve a estar en al aire. Tengo que trabajar mas en esta parte.

Si hay alguien interesado en trabajar conmigo pues me comenta.... Al momento tengo unas 400 lineas de codigo para el 757-200 de X plane free. Claro que se puede ajustar a otros tipos de aviones.

Código:

init.lua
dofile("main.lua")

main.lua
dofile("draw.lua")
dofile("manipulation.lua")
dofile("dataref.lua")
function main()
OnDraw_Windows()
takeoff_stuff()
end

manipulation.lua
function takeoff_stuff() --1 On, 0 Off
xp.setInt(dref_nav_lights,1) --Luces de Navegacion
xp.setInt(dref_land_lights,1) --Luces de  Aterrizaje
xp.setInt(dref_taxi_lights,1) --Luces de  Taxi
xp.setInt(dref_strobe_lights,1) --Luces de  Strobe
xp.setInt(dref_smoking,1) --Luces de  No fumar
xp.setInt(dref_TransP,2) --Luces de  Transponder Modo Stand By
xp.setInt(dref_belts,1) --Cinturon de seguridad
xp.setInt(dref_beacon_lights,1) --Luces de Faros
end

dataref.lua
VSI = xp.getDataref("sim/cockpit2/gauges/indicators/vvi_fpm_pilot") --displayed, not actual !!!
IAS = xp.getDataref("sim/cockpit2/gauges/indicators/airspeed_kts_pilot")  --displayed, not actual !!!
ALT = xp.getDataref("sim/flightmodel/position/elevation")  --actual meters, MSL
ALTG = xp.getDataref("sim/flightmodel/position/y_agl")  --actual meters, AGL
dref_nav_lights = xp.getDataref("sim/cockpit/electrical/nav_lights_on")
dref_land_lights  = xp.getDataref("sim/cockpit/electrical/landing_lights_on")
dref_taxi_lights  = xp.getDataref("sim/cockpit/electrical/taxi_light_on")
dref_strobe_lights  = xp.getDataref("sim/cockpit/electrical/strobe_lights_on")
dref_beacon_lights  = xp.getDataref("sim/cockpit/electrical/beacon_lights_on")
dref_belts  = xp.getDataref("sim/cockpit/switches/fasten_seat_belts")
dref_smoking  = xp.getDataref("sim/cockpit/switches/no_smoking")
dref_APU  = xp.getDataref("sim/cockpit2/electrical/APU_generator_on")
dref_Pheat  = xp.getDataref("sim/cockpit/switches/pitot_heat_on")
dref_PAice  = xp.getDataref("sim/cockpit/switches/anti_ice_on")
dref_PWh  = xp.getDataref("sim/cockpit/switches/anti_ice_window_heat")  
dref_PSh  = xp.getDataref("sim/cockpit/switches/anti_ice_surf_heat")
dref_PIh  = xp.getDataref("sim/cockpit/switches/anti_ice_inlet_heat")
dref_TransP = xp.getDataref("sim/cockpit/radios/transponder_mode")
dref_Gear_up = xp.getDataref("sim/multiplayer/controls/gear_request") -- 0 UP, 1 Down
dr_sim_flap_request = xp.getDataref("sim/flightmodel/controls/flaprqst")
TEMP =  xp.getDataref("sim/weather/temperature_ambient_c")
get_TEMP = xp.getFloat(TEMP)
SPEED = xp.getDataref("sim/cockpit/autopilot/airspeed")
ALTITUDE = xp.getDataref(" sim/cockpit2/gauges/indicators/altitude_ft_pilot")

draw.lua
function OnDraw_Windows()
ALTG= xp.getDataref("sim/flightmodel/position/y_agl")
get_ALTG=xp.getFloat(ALTG) --actual meters, AGL
get_ALTG_ft = get_ALTG*3.28 --I use the float value returned by xp.getFloat() to work on
IAS = xp.getDataref("sim/cockpit2/gauges/indicators/airspeed_kts_pilot")  --displayed, not actual !!!
get_IAS=xp.getFloat(IAS)
VSI = xp.getDataref("sim/cockpit2/gauges/indicators/vvi_fpm_pilot") --displayed, not actual !!!
get_VSI=xp.getFloat(VSI)
thro=xp.getDataref("sim/flightmodel/engine/ENGN_thro")
get_thro=xp.getFloatV(thro,1,4)
appr=xp.getDataref("sim/cockpit2/autopilot/approach_status")
get_appr=xp.getInt(appr)
dr_sim_total_weight = xp.getDataref("sim/flightmodel/weight/m_total")
g_total_weight =  xp.getFloat(dr_sim_total_weight)  * 2.20462262
width,height = gfx.getScreenSize()
gfx.setColor(0,0,0,0)
-- Condicional para que muestre en que fase del vuelo esta el avion
if (PhaseOfFlight == 0) then
   Phase = "Park"
elseif (PhaseOfFlight == 1) then
Phase = "Take Off"
elseif (PhaseOfFlight == 2) then
    Phase = "Fly"
elseif (PhaseOfFlight == 3) then
    Phase = "Landing"
end
-- Fin del Condicional de Fase de Vuelo

-- Condicional para ver si el avion captura el LOC y GS
if (get_appr == 0 ) then
apprn = "Off"
elseif (get_appr == 1 ) then
apprn = "Armed"
elseif (get_appr == 2 ) then
apprn = "Captured"
end
-- Hasta Aqui el condiconal del LOC y GS

-- Aqui que escriba en la pantalla
gfx.drawString(string.format("Peso Total Lbs: %0.0f",g_total_weight),10, height-100 )
gfx.drawString(string.format("IAS Knots: %0.0f",get_IAS),10, height-90 )
gfx.drawString(string.format("Acelerador: %0.2f",get_thro),10, height-80 )
gfx.drawString(string.format("Altura Ft: %0.0f",get_ALTG_ft),10, height-70 )
gfx.drawString(string.format("Velocidad Vertical Ft/min: %0.0f",get_VSI),10, height-60 )
gfx.drawString(string.format("Fase del Vuelo: "..Phase),10, height-50 )
gfx.drawString(string.format("Approach: "..apprn),10, height-40 )

end --end on OnDraw

« Última modificación: 01 Junio, 2011, 01:21:59 por suministros »

01 Junio, 2011, 08:43:27 #22
kha29096335
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 664



En línea
Re: Crear Datarefs..... como???

Particularmente no me gusta usar frameworks para la programación, X-Plane ya es lo suficientemente cargante para el micro como para poner otra capa más a la hora de ejecutar la programación de los plugins. Es más cómodo, sí, en eso estamos de acuerdo, porque todos esos framework lo que hacen es abstraer las llamadas a las funciones del SDK a otro nivel más sencillo y te liberan en muchos casos de conocer la estructura necesaria para el uso del SDK, es decir, te liberan de tener que crear las definiciones (Prototyping) y muchas de las convenciones de llamada, pero hay que tener en cuenta que por cada capa de abstracción que se añade se agrega también un fase más en el proceso de ejecución, la interpretación del código de alto nivel.

Python, por ejemplo es un lenguaje interpretado, el equipo debe traducir al vuelo las instrucciones de Python a funciones implementadas dentro del núcleo de Python. Esa traducción cuesta muchos ciclos de máquina que se podrían aprovechar para que nuestro plugin se ejecutase con mayor celeridad. Lo mismo ocurre con Gizmo, que por lo que veo está basado en Lua, es flexible y cómodo, pero no tan eficiente como un binario resultado de la compilación de C, porque no hay cosa más eficiente que el código máquina puro, Lua no es un interprete puro, compila a bytecode en el momento del inicio de la ejecución, pero la misma se realiza dentro de una máquina virtual Lua, es decir, parecido a como funciona Java, el cual no se distingue por su celeridad, precisamente.

Cada cual que escoja lo que quiera, pero donde esté el código nativo, que se quite todo lo demás.

Por otro lado, nadie te salva de tener que aprender las idiosincrasias de cada lenguaje e intérprete, y la verdad, puestos a tener que aprender algo, es preferible aprender lo más general y aplicable a cuantos más ámbitos mejor.

Otra de las cosas por las que tiendo a favorecer a C sobre otros lenguajes es que, si huimos de él, por lo estricto, podemos adoptar malas prácticas de programación, que a la larga pueden derivar en que nuestro código no sea eficiente o que el número de bugs sea mayor de lo deseable. Es mejor aprender en un entorno verdaderamente estricto, que no te deje pasar una, más tarde se agradece y, a la larga, el cociente bugs/lineas de código se consigue mantener al mínimo.
« Última modificación: 01 Junio, 2011, 12:37:09 por kha29096335 »

01 Junio, 2011, 10:49:50 #23
Dragun
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 679



WWW
En línea
Re: Crear Datarefs..... como???

Maginifica explicacion Kha .....claro y transpparente ....yo sigo por C , poco a poco .....


01 Junio, 2011, 12:48:48 #24
CarlosGarcia
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 663



En línea
Re: Crear Datarefs..... como???

Hola kha29096335

Estoy de acuerdo contigo.

Pero en mi caso yo no soy programador, y cada vez que he tratado de entender la POO ( programacion orientada a Objetos) me toca tener un frasco de aspirinas al lado, y lo que estoy haciendo solo es por aprender y no lo hago de forma profesional. Es decir mi script es por pura diversión.

Lo que he probado en mi equipo bastante obsoleto de hace usos 2 o tres años, (dual core de 2.2 con 3 Gb RAM y grafica Radeon 9500 GT) y el impacto de correr GIZMO es casi que nulo a lo sumo un FPS.

Hasta donde tengo entendido proyectos PROFESIONALES como el Saab 340A, Dash 8 Q400 , el Trojan T 28 de XPFR  que saldrá en los próximos días a la venta (junio 10 al 30 ) tienen programados PLUG IN en GIZMO...  Yo tengo contacto con ARNO54 the XP FR y el me comenta que el impacto es casi imperceptible en el Trojan y que se le ha facilitado mucho el desarrollo del proyecto. Y que le hubiera encantado usarlo en B 17.

Mirandolo desde este punto de vista, y si hay proyectos tipo PROFESIONAL usándolos entonces Yo, un simple Aficionado NOOB por que no podría usarlo para mis proyectos caseros....

De todas formas como te dije Inicialmete Tienes toda la razón ...  De pronto para mi es facilidad o comodidad o flojera ... Mira lo que he podido lograr en 8 días. Sera que alguien en 8 días con C puede hacer esto ?

Gracias

Carlos

01 Junio, 2011, 13:31:29 #25
jvaldunciel
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 974



En línea
Re: Crear Datarefs..... como???

La ventaja del interfaz para phython o el Gizmo es que tu plugin es multiplataforma sin tener que andar compilando en los distintos SO.

No siempre tienes a tu disposición un Mac, un PC Windows y un PC Linux para hacerlo. Sobretodo, si lo haces por amor al arte, sin fines económicos.


01 Junio, 2011, 13:40:13 #26
Dragun
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 679



WWW
En línea
Re: Crear Datarefs..... como???

Al momento la forma mas facil de hacer un PLUGIN para los no programadores es GIZMO.

Este es un ejemplo que he logrado mas o menos hacer despues de 8 dias utilizando GIZMO, no soy programador solo tengo algo de experiencia en PHP y nada mas.

Calcular basado en el peso del avion las velocidades de despegue V1 V2 VR, que el script manipule las luces de acuerdo a la fase del vuelo, PARK, TAXI, TAKE OFF, ON FLY y LANDING, y de igual forma manipule los FLAPS, y las velocidades hasta dejar el avion a una altura de 11.000 pies de ahi para delante el piloto continua con el vuelo, cuando el avion esta proximo a Aterrizar, y estas en el LOC y GS (APP) entonces basado en el peso actual del Avion pone los FLAPS y ajusta las Velocidades hasta lograr la velocidad Vref para el aterrizaje.

Una vez este cercano a la pista el avion disminuya la velocidad vertical hasta un punto que se realize un aterrizaje muy suave ( ESTA ETAPA AUN NO LA HE LOGRADO) lo maximo que hago es de 200 - 300 Ft/min y algunas veces antes de tocar la pista el avion hace una especie de TOGA, y vuelve a estar en al aire. Tengo que trabajar mas en esta parte.

Si hay alguien interesado en trabajar conmigo pues me comenta.... Al momento tengo unas 400 lineas de codigo para el 757-200 de X plane free. Claro que se puede ajustar a otros tipos de aviones.

Código:

init.lua
dofile("main.lua")

main.lua
dofile("draw.lua")
dofile("manipulation.lua")
dofile("dataref.lua")
function main()
OnDraw_Windows()
takeoff_stuff()
end

manipulation.lua
function takeoff_stuff() --1 On, 0 Off
xp.setInt(dref_nav_lights,1) --Luces de Navegacion
xp.setInt(dref_land_lights,1) --Luces de  Aterrizaje
xp.setInt(dref_taxi_lights,1) --Luces de  Taxi
xp.setInt(dref_strobe_lights,1) --Luces de  Strobe
xp.setInt(dref_smoking,1) --Luces de  No fumar
xp.setInt(dref_TransP,2) --Luces de  Transponder Modo Stand By
xp.setInt(dref_belts,1) --Cinturon de seguridad
xp.setInt(dref_beacon_lights,1) --Luces de Faros
end

dataref.lua
VSI = xp.getDataref("sim/cockpit2/gauges/indicators/vvi_fpm_pilot") --displayed, not actual !!!
IAS = xp.getDataref("sim/cockpit2/gauges/indicators/airspeed_kts_pilot")  --displayed, not actual !!!
ALT = xp.getDataref("sim/flightmodel/position/elevation")  --actual meters, MSL
ALTG = xp.getDataref("sim/flightmodel/position/y_agl")  --actual meters, AGL
dref_nav_lights = xp.getDataref("sim/cockpit/electrical/nav_lights_on")
dref_land_lights  = xp.getDataref("sim/cockpit/electrical/landing_lights_on")
dref_taxi_lights  = xp.getDataref("sim/cockpit/electrical/taxi_light_on")
dref_strobe_lights  = xp.getDataref("sim/cockpit/electrical/strobe_lights_on")
dref_beacon_lights  = xp.getDataref("sim/cockpit/electrical/beacon_lights_on")
dref_belts  = xp.getDataref("sim/cockpit/switches/fasten_seat_belts")
dref_smoking  = xp.getDataref("sim/cockpit/switches/no_smoking")
dref_APU  = xp.getDataref("sim/cockpit2/electrical/APU_generator_on")
dref_Pheat  = xp.getDataref("sim/cockpit/switches/pitot_heat_on")
dref_PAice  = xp.getDataref("sim/cockpit/switches/anti_ice_on")
dref_PWh  = xp.getDataref("sim/cockpit/switches/anti_ice_window_heat")  
dref_PSh  = xp.getDataref("sim/cockpit/switches/anti_ice_surf_heat")
dref_PIh  = xp.getDataref("sim/cockpit/switches/anti_ice_inlet_heat")
dref_TransP = xp.getDataref("sim/cockpit/radios/transponder_mode")
dref_Gear_up = xp.getDataref("sim/multiplayer/controls/gear_request") -- 0 UP, 1 Down
dr_sim_flap_request = xp.getDataref("sim/flightmodel/controls/flaprqst")
TEMP =  xp.getDataref("sim/weather/temperature_ambient_c")
get_TEMP = xp.getFloat(TEMP)
SPEED = xp.getDataref("sim/cockpit/autopilot/airspeed")
ALTITUDE = xp.getDataref(" sim/cockpit2/gauges/indicators/altitude_ft_pilot")

draw.lua
function OnDraw_Windows()
ALTG= xp.getDataref("sim/flightmodel/position/y_agl")
get_ALTG=xp.getFloat(ALTG) --actual meters, AGL
get_ALTG_ft = get_ALTG*3.28 --I use the float value returned by xp.getFloat() to work on
IAS = xp.getDataref("sim/cockpit2/gauges/indicators/airspeed_kts_pilot")  --displayed, not actual !!!
get_IAS=xp.getFloat(IAS)
VSI = xp.getDataref("sim/cockpit2/gauges/indicators/vvi_fpm_pilot") --displayed, not actual !!!
get_VSI=xp.getFloat(VSI)
thro=xp.getDataref("sim/flightmodel/engine/ENGN_thro")
get_thro=xp.getFloatV(thro,1,4)
appr=xp.getDataref("sim/cockpit2/autopilot/approach_status")
get_appr=xp.getInt(appr)
dr_sim_total_weight = xp.getDataref("sim/flightmodel/weight/m_total")
g_total_weight =  xp.getFloat(dr_sim_total_weight)  * 2.20462262
width,height = gfx.getScreenSize()
gfx.setColor(0,0,0,0)
-- Condicional para que muestre en que fase del vuelo esta el avion
if (PhaseOfFlight == 0) then
   Phase = "Park"
elseif (PhaseOfFlight == 1) then
Phase = "Take Off"
elseif (PhaseOfFlight == 2) then
    Phase = "Fly"
elseif (PhaseOfFlight == 3) then
    Phase = "Landing"
end
-- Fin del Condicional de Fase de Vuelo

-- Condicional para ver si el avion captura el LOC y GS
if (get_appr == 0 ) then
apprn = "Off"
elseif (get_appr == 1 ) then
apprn = "Armed"
elseif (get_appr == 2 ) then
apprn = "Captured"
end
-- Hasta Aqui el condiconal del LOC y GS

-- Aqui que escriba en la pantalla
gfx.drawString(string.format("Peso Total Lbs: %0.0f",g_total_weight),10, height-100 )
gfx.drawString(string.format("IAS Knots: %0.0f",get_IAS),10, height-90 )
gfx.drawString(string.format("Acelerador: %0.2f",get_thro),10, height-80 )
gfx.drawString(string.format("Altura Ft: %0.0f",get_ALTG_ft),10, height-70 )
gfx.drawString(string.format("Velocidad Vertical Ft/min: %0.0f",get_VSI),10, height-60 )
gfx.drawString(string.format("Fase del Vuelo: "..Phase),10, height-50 )
gfx.drawString(string.format("Approach: "..apprn),10, height-40 )

end --end on OnDraw



Puedes dar mas datos, donde leer sobre el tema, compilador etc ...para poder valorarlo un poco mas ? ....


01 Junio, 2011, 14:11:27 #27
CarlosGarcia
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 663



En línea
Re: Crear Datarefs..... como???

Hola Dragun

Esta es la pagina .

http://www.x-plugins.com/home

y este es el foro.

http://forums.x-pilot.com/index.php?board=108.0

Y este es el SDK

https://github.com/benrussell/Gizmo-SDK

02 Junio, 2011, 09:19:56 #28
Dragun
Usuario Frecuente
*****
Desconectado Desconectado

Mensajes: 679



WWW
En línea
Re: Crear Datarefs..... como???

Muchas gracias por la info ,le echare un vistazo al tema ....


Tags:
Páginas: 1 [2]   Ir Arriba
  Imprimir  
 
Ir a:  

www.x-plane.es.
Página creada en 0.351 segundos con 18 queries.