Jump to content

Search the Community

Showing results for tags 'howto'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Foros generales del E69
    • Dudas, consultas y anuncios webmaster sobre el E69
    • Escuadrón 69
    • Noticias
    • Nuevos Pilotos, Alistamiento en el Escuadrón y presentaciones
    • News From Spanish Simulation
  • Academia básica de vuelo y combate AVE-69
    • AVE - DCS: NATO/OTAN
    • AVE - DCS: Helos
    • AVE - IL-2 1946
    • AVE - IL-2 Sturmovik: Great Battles
    • Archivo
  • Simulación aérea
    • Ala DCS
    • Ala IL-2 Sturmovik: Cliffs of Dover
    • Ala IL-2 Sturmovik: Great Battles
    • Ala IL-2 1946
    • Ala Falcon 4
    • Ala Rise of Flight
    • Ala Civil
    • Sólo helos
    • Otros simuladores
    • Vuelo Acrobático
  • Aviación real
    • Aviación militar
    • Aviación civil
    • Aviación espacial
    • Fundación Infante de Orleans
    • Territorio spotter
  • Simulación naval / táctica / terrestre
    • Silent Hunter 3 y 4 / Dangerous Waters
    • ArmA: Combat Operations
    • Steel Beasts
    • Naval Action: Real Armada Española
    • Command: Modern Air / Naval Operations
  • Simulación automovilística
    • 69 Racing
    • Racing Competición
    • Boxes
  • Foros técnicos
    • Hardware
    • Software
    • Cockpits/Cabinas virtuales
    • Desarrollos
  • Reuniones, eventos, citas
    • Eventos, Quedadas y Festivales
    • Motor y al Aire
  • Miscelánea
    • Temas generales
    • Cine, Literatura y Música
    • Modelismo, Aeromodelismo y R.C.
    • Compra y venta de material
    • Videojuegos
  • Hall of Fame
    • 69 Style
  • Campañas internas

Categories

  • Escuadrón 69
  • Ala DCS: A-10C Warthog
  • Ala DCS: F-14A/B Tomcat
  • Ala DCS: F/A-18C Hornet
  • Ala DCS: Black Shark
  • Ala DCS: Flaming Cliffs
  • Ala DCS: WW2
  • Ala Falcon
  • Ala IL2-1946
  • Ala IL2-CoD
  • Academia de Vuelo E69
    • Ala DCS: A-10C Warthog
    • Ala DCS: Black Shark
  • Cajón desastre

Calendars

  • Eventos de Aviación / Simulación
  • Calendario de vuelos
  • Vuelos Academia AVE-69
  • Cumpleaños

Categories

  • Articles
  • Escuadrón 69
    • Temas Web y Foro
    • F.A.Q.
    • Encuestas
    • Editorial
    • Ví­deos del E-69
  • Simulación Aérea
    • Últimas noticias
    • IL-2 Sturmovik: Cliffs of Dover
    • Falcon 4
    • Fighter Operations
    • Saga Forgotten Battles / PF / 1946
    • Lock On Modern Air Combat/DCS
    • Microsoft Flight Simulator
    • X-Plane
    • Strike Fighters / WoV / WoE
    • Tutoriales Ala LOMAC
    • Artí­culos y Análisis
  • Simulación Naval
    • Silent Hunter 3 / 4
    • Dangerous Waters
    • Otros simuladores navales
  • Aviación Real
    • Aviación Civil y General
    • Aviación Militar
    • Canal Historia
    • Revista Alas
  • La zona de los novatos, tutoriales, recetas, etc
    • Tutoriales sobre conceptos generales
  • Fichas de Aeronaves
    • Aviones de Combate
    • Aviones y helicópteros civiles
  • Hardware
    • Hardware
    • Software

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

Found 1 result

  1. Plugin XPlane, versión receta de la abuela. :air_kiss: Ingredientes mínimos para un plugin sabroso y sencillo. - Un tío con mucho tiempo libre. - Un ordenador, indispensable que tenga sistema operativo. * - Un compilador para el sistema operativo que uses. * - Un poco del SDK del XPlane. - Algo de paciencia. * Recordar que el XPlane funciona en Windows, Mac y en su distribución de GNU/Linux mas cercana. El sistema operativo y el compilador lo dejo al gusto de cada uno. Pero para hacer esta receta, como es con el que mas me apaño, voy a usar GNU/Linux y el GCC. Por ahora creo que te tienes que haber imaginado que el plato va a ser en C puro y duro, “oficialmente” el SDK solo soporta C, C++ y Delphi. Pero creo que hay variantes para soportar otros lenguajes, estilo LUA o Python. Para preparar el SDK de XPlane, antes de comenzar con el plugin, lo descargamos de aquí: SDK La ultima versión, a la fecha de hacer la receta, es la 2.1.2 y es la que da soporte para la creación de plugins en 64bits. Hacerlo en 64 o en 32 va al gusto del cocinero, por mi parte considero mas sabrosos los 64 bits y lo mas importante, la cocina que uso es en 64. Una vez descargado el SDK, lo descomprimimos y lo guardamos en la carpeta donde vallamos a cocinar nuestro plugin. Nota: Si por cualquier casualidad usas archlinux el SDK de xplane lo puedes instalar con un paquete que hay en AUR llamado xplane-sdk-devel. Ya preparado el ingrediente principal, vamos a preparar el código antes de cocinarlo, lo mas sencillo posible, luego si quieres añadir algo ya es cosa tuya. Con cualquier editor de texto creamos un fichero, acabado en .c , en la carpeta donde vallamos a cocinar el plugin. En nuestro caso lo vamos a llamar cocido.c . Y dentro de nuestro fichero cocido.c empezamos a añadir lo básico para que nuestro plugin funcione. Lo primero lo básico para que el compilador reconozca las funciones del SDK, es añadir las librerías necesarias del SDK, la mas básica; #include "XPLMDefs.h" También vamos a tener que usar la librería string de C, por lo que la incluimos en el cocido. #include <string.h> La primera función imprescindible a meter en la cazuela es la siguiente: PLUGIN_API int XPluginStart(char *outName, char *outSig, char *outDesc) Esta función es la primera en ser llamada cuando el xplane carga los plugins y la encargada de dar nombre al plugin dentro de xplane. Cualquier código que incluyas dentro de esta sera ejecutado al iniciar el simulador. Dentro de esta función hay dos cosas muy importantes; las variables outName, outSig, outDesc y que la variable tiene que devolver 1 para que el simulador entienda que la cosa esta bien cocida y no da problemas en su digestión. La variable outName guarda el nombre que mostrara el plugin dentro del sim. En outSig guardaremos una especie de firma que identificara nuestro plugin dentro del sim, con la idea de que si hay dos con el mismo nombre no entren en conflicto y le siente mal al comensal. Y como no en outDesc sera una descripción de nuestro cocido plugin. Para modificar las variables usamos la función strcpy, con lo que copiamos el string que queramos dentro de la variable. La cosa mas o menos nos quedara así: PLUGIN_API int XPluginStart(char *outName, char *outSig, char *outDesc) { strcpy(outName, "Cocido"); // El nombre del plugin. strcpy(outSig, "escuadron69.blackleg.cocido"); //Firma plugin strcpy(outDesc, "Plugin "); //Descripción plugin. return 1; // Si no devuelve 1 no funciona el plugin. } Otra función a añadir a la cazuela es la siguiente: PLUGIN_API void XpluginStop(void) Esta función es llamada por el sim cuando cierra el plugin y dentro de esta tiene que estar el código que quieras que se ejecute antes de cerrar el sim. Como a nosotros no vamos a necesitar nada la dejamos vaciá. PLUGIN_API void XPluginStop(void) { } Y vamos añadiendo mas funciones, que aun quedan. La siguiente es la que el sistema llama cuando se habilita el plugin, que no es lo mismo que cargarlo, ya que dentro del sim puedes habilitar o deshabilitar el plugin pero este sigue cargado en el sim. PLUGIN_API void XPluginEnable(void) Esta función se ejecuta después de cargar el plugin y cada vez que se habilita por lo que ya sabes que código tienes que meter aquí. Y como no la función contraria, que es la que se ejecuta antes de deshabilitar el plugin. PLUGIN_API void XpluginDisable(void) Como para nuestra receta no nos hacen falta las metemos a la cazuela vaciás. PLUGIN_API void XPluginEnable(void) { } PLUGIN_API void XPluginDisable(void) { } Y la ultima función obligatoria en el código, con lo que nuestro ya tendría que funcionar nuestro plugin, aunque ya advierto que no hace gran cosa, bueno si cargarse en el sim. PLUGIN_API void XPluginReceiveMessage(XPLMPluginID inFromWho, int inMessage, void *inParam) Esta ultima función es la mas complicada y no me voy a meter mucho con ella. Su función mas o menos comunicar nuestro plugin y el programa encargado de administrarlo. A si que en nuestra receta lo vamos a dejar vació como los otros, que no estamos para complicarnos mucho. PLUGIN_API void XPluginReceiveMessage(XPLMPluginID inFromWho, int inMessage, void *inParam) { } Y nuestro cocido.c quedara así: #include "XPLMDefs.h" #include <string.h> PLUGIN_API int XPluginStart(char *outName, char *outSig, char *outDesc) { strcpy(outName, "Cocido"); // El nombre del plugin. strcpy(outSig, "escuadron69.blackleg.cocido"); //Firma plugin strcpy(outDesc, "Plugin "); //Descripción plugin. return 1; // Si no devuelve 1 no funciona el plugin. } PLUGIN_API void XPluginStop(void) { } PLUGIN_API void XPluginEnable(void) { } PLUGIN_API void XPluginDisable(void) { } PLUGIN_API void XPluginReceiveMessage(XPLMPluginID inFromWho, int inMessage, void *inParam) { } Con la base de la receta en la cazuela y un poco del SDK, ya tenemos el plato listo para cocinar. Antes de cocer el código con el GCC vamos a explicar un par de cosas. Los plugins de XPlane son básicamente librerías dinámicas, lo que viene siendo una DLL para los ventaneros. Por lo que tienen que ser compiladas y enlazadas como tales. Como estamos en mi querido linux, primero tenemos que compilar el código como un objeto. Y luego generar el objeto como una librería. Dentro de la carpeta donde tenemos el código y el SDK, ejecutamos en un terminal esto: gcc -c -fPIC -I./SDK/CHeaders/XPLM -DLIN=1 cocido.c gcc -shared cocido.o -o lin.xpl Ejecutando lo anterior ya tendremos nuestro cocido listo para servir al xplane y disfrutar de el. Como veis, al generar el plugin, le he dado el nombre de lin.xpl ya que el nombre de estos es según el sistema operativo al que van destinados seguidos de .xpl, lin.xpl para linux, mac.xpl para mac y win.xpl para windwos. Para servir esta maravillosa receta al xplane, introducir nuestro plugin en una carpeta con el nombre de este y meter esta dentro de la carpeta de plugins del xplane. Si todo va bien, tendríamos que verlo dentro del administrador de plugins, aunque el pobre no va a hacer mucho por ahora. En cuanto pueda ampliare mas la receta.
×
×
  • Create New...

Important Information

Some pretty cookies are used in this website