Resultados 1 al 1 de 1

Tema: Programación básica en AHK con ideas para el simulador, Assetto Corsa y otras cosas

  1. #1
    Piloto de Fórmula 1 Avatar de Elaphe
    Registrado
    06/06/2016
    Mensajes
    1,456

    Programación básica en AHK con ideas para el simulador, Assetto Corsa y otras cosas

    Llevo años enganchado al AutoHotkey, siempre sin salirme del nivel básico que me permite mi poca capacidad mental y formación en temas de programación. Ello no ha impedido que haya conseguido llevar a cabo muchas ideas (de eso sí voy sobrado) y de paso entretenerme y divertirme bastante. Os animo a probarlo porque engancha.

    Para el tema del simulador tengo dos programitas: uno que me lo deja todo listo para sentarme en el cockpit y otro que es el de Content Manager y Assetto Corsa. Voy a hacer una descripción más o menos detallada de lo que hacen por si os sirve para coger ideas. Si queréis saber cómo hacer algo de esto, no tenéis más que preguntar. De paso voy ilustrando con imágenes, por si se os hace pesado leer tanto texto del tirón. Así que ya aviso de que viene tocho, que luego sale la gente llorando o maldiciendo al op.

    Cockpit

    El primer script (Cockpit.exe) es un proceso automatizado. Sólo tengo que ejecutarlo y él se encarga de verificar que cada uno de los periféricos necesarios está conectado e identificado correctamente (y de que no hay otro mando que se haya dejado conectado por olvido). Ante cualquier fallo, me avisa. Todo esto lo va mostrando en una lista en una ventana. Comprueba que está el volante, los pedales, la palanca de cambio, el freno de mano, las controladoras de los ventiladores, las botoneras, el ratón... Para ello hace uso de una utilidad llamada USBDeview, que genera una lista en un fichero con los dispositivos conectados y ahí el script los va buscando por su identificador. También detecta la plataforma de movimiento y el visor de realidad virtual. Luego hace una prueba auditiva de los 5 shakers (hice un fichero con voces digitalizadas robóticas diciendo: "left", "right", "bottom", "back", "pedals"). Para ello conmuta el dispositivo de sonido a la tarjeta de los shakers momentáneamente. Esto es muy práctico, porque en alguna ocasión puede fallar un shaker o varios por un cable que se suelta o algo así. Después de esto empieza a lanzar los programas de forma minimizada: el software del volante, el de los pedales, SimHub, el software de la plataforma de movimiento, el de los ventiladores, el del visor de realidad virtual, espera a que las estaciones base encuentren el visor y finalmente lanza SteamVR y Virtual Desktop (para ver el escritorio desde el visor). Finalmente, me ajusta el volumen de los shakers al valor predefinido. Y con esto ya está todo listo. Si ahora lo ejecuto de nuevo, detecta que los programas están en funcionamiento y lo cierra todo. Este programa también habilita dos botones en mi botonera derecha, uno para centrar la vista en realidad virtual y el otro para ejecutar Assetto Corsa (llama al otro script). Pongo una captura de la interfaz cuando ya ha terminado.




    Assetto Corsa - Content Manager

    El otro script, aparte de para arrancar Content Manager, es básicamente para el control de las funciones de las botoneras (una a la izquierda con 10 botones y una palanca, y otra a la derecha con dos botones). Todos los botones tienen su sonido de clic en el el script para que se escuchen al pulsarlos. Arranca Content Manager con una splash screen personalizada y entonces me muestra en pantalla unos iconos indicando la configuración de controles y video actual, que puede ser monitor + teclado, monitor + volante, vr + teclado o vr + volante. Hay dos botones en mi botonera izquierda que (en Content Manager) me permiten cambiar esa configuración, actualizándose los iconos en pantalla. Para mostrar los iconos correctos el script lee la información de video.ini y controls.ini y para cambiarla manda F1 y F2, que son teclas que tiene Content Manager para conmutar los quick switches. Si el combo es VR + volante, sale otro icono que indica que hay que presionar el botón rojo gordo de mi botonera derecha para empezar. Si la combinación de volante y VR no es la actual y presionas el botón, te indica un error. Eso evita que por despiste puedas entrar a jugar con la configuración incorrecta. Este botón es como hacer click en el recuadro de GO (usa la combinación Ctrl G).



    Pero hace muchísimo más que eso. Entre otras cosas, mientras carga, muestra una ventanita indicando cuál es el botón de la botonera de ayuda gráfica en pantalla (luego explico esto), mueve el ratón a donde no moleste y bloquea su movimiento (para que no se vea o moleste durante el juego), lee el fichero race.ini y según el coche elegido me elige la configuración de los ventiladores como normal o simulación de viento (para los descapotados y formulas), me sobrescribe con una copia de seguridad el acos.ini (el fichero que controla los huds en pantalla, por si se trastocan) y añade un 20% por de posibilidad de que haya fuegos artificiales en la pista (modificando el \Documents\Assetto Corsa\cfg\extension\particles_fx.ini). Una de las peculiaridades de las funciones de mis botoneras es que algunas cambian dependiendo del programa. Así, ese botón rojo gordo, una vez estás en Assetto, sirve para reiniciar la práctica o carrera. Y es más, si lo mantengo pulsado durante un segundo, sale de Assetto y vuelve a Content Mananger, mostrándome de nuevo el ratón y devolviéndome su control. Si lo mantengo pulsado durante un segundo estándo en Content Manager, sale al escritorio. El resto de funciones se pueden ver en la imagen adjunta. Esa imagen es la que sale en pantalla cuando pulso el botón de ayuda. Para eso hice una app de Assetto Corsa en python (a base de copiar, pegar, mirar ejemplos, preguntarle al ChatGPT, fallar mil veces... porque no tengo ni idea de python). Esa app muestra y oculta la imagen con una combinación de teclas que luego uso desde mi script asignada a un botón de mi botonera.



    Como veis, algunas cosas que hacen los botones son básicas, pero luego hay otras curiosas. Por ejemplo, el botón pequeño de la botonera derecha, cuando lo mantengo pulsado me permite usar los botones de la botonera izquierda para ajustar la posición del asiento y de los espejos. Eso me ahorra muchos controles físicos. Otra idea similar para ahorrar controles y simplificarlo todo (en VR es importante), es el botón de "switch". Ése cambia la función de mi palanquita momentánea de dos posiciones. Al cambiar la función una voz digitalizada me indica a lo que se ha conmutado pero también conseguí que se mostrara en pantalla el texto con la función actual (con otra app que hice en python para Assetto Corsa). El valor que se muestra en pantalla del force feedback, de la presión del freno y del volumen de los shakers también son apps hechas por mí para Assetto Corsa. Funcionan en combinación con mis scripts, estos mandando las combinaciones de teclas y aquellas cambiando el texto. En algunos casos se leen y se escriben inis con los valores. Luego también, por ejemplo, el botón de replay, si lo uso durante el replay me va alternando entre retroceder rápido, reproducir y avanzar rápido. Así puedo moverme por el replay sin siquiera sacar el ratón.

    La cuestión muchas veces es pensar en lo que quieres hacer y luego buscar la manera de hacerlo, y lo mismo es fácil y rápido o más rebuscado si tienes menos facilidades. Por ejemplo, para cambiar la velocidad de los ventiladores lo que hace el código es copiar el fichero de configuración del Simdash (el programita que los gestiona), uno con el valor de velocidad alto, otro normal, otro bajo y otro en modo de simulación de viento. El script cierra el programa, copia el fichero y lo vuelve a arrancar, todo en el fondo de forma transparente. Así, en un par de segundos, los ventiladores vuelven a funcionar a la velocidad elegida. Aquí incluso rizé el rizo, porque hice ficheros con diferentes velocidades dependiendo de las estaciones del año, para que soplen un poco más fuerte en cada modo en verano que en invierno (sí, un poco friqui).


    SimHub

    Luego ya, fuera del tema de AutoHotkey tengo por ejemplo en SimHub algunas ideas simpáticas como la voz de una tía que me invita a salir de pits pasado unos segundos sin moverme y que se cabrea si pasa demasiado tiempo, o que me avisa si le doy un porrazo al coche, se indigna si le doy más porrazos, me echa la bronca si me lo cargo del todo o se ríe de mí si me quedo sin gasolina. Todo eso se puede configurar fácilmente en SimHub. He usado una sintetizador de voz de Internet para grabar los samples y luego le he metido efecto de voz de radio con su estática y todo. Por cierto, la tía también me felicita emocionada cuando derrapo con el coche (esto está hecho con una app de Assetto Corsa).




    Hotkeys

    Fuera ya del tema simulador, he hecho muchas otras cosas con AutoHotkey. Mi teclado está entero lleno de modificaciones y combinaciones de teclas. Mi script residente hotkeys.exe está en todos mis ordenadores. Ahí tengo cosas para darle utilidad a teclas que no uso como: F9 para arrancar el navegador, F12 para cerrar todas las ventanas de explorer abiertas, F12 mantenido para apagar el equipo, F7 mantenido para extraer el pendrive, scrolllock para abrir el reproductor de música, pause para pausarla, F8 para habilitar o deshabilitar Strokeit (gestos de ratón)... También hay muchas combinaciones con AltGR para mi teclado ANSI que me resultan más fáciles de recordar, como por ejemplo AltGR + o = primero, + a = primera, + 2 = al cuadrado, etc. Luego hay una combinación para subir a mi servidor el texto seleccionado, acceder a ese texto desde el navegador o poder descargar temporalmente el archivo, editarlo que se vuelva a subir automáticamente. También tengo una tecla para sacar un listado en pantalla de atajos a carpetas y programas, que puedo modificar directamente, una combinación para bajar el brillo del monitor para cuando hay pantallas blancas y se me cansa la vista, una para bloquear el ordenador y que salga el salvapantallas... Si por ejemplo uso un botón auxiliar de mi ratón sobre un fichero cualquiera, me abre el editor de texto para verlo, si lo uso sobre un fichero de Photoshop, en vez de visualizarlo normalmente con ACDSee, me abre Photoshop para editarlo, y lo mismo con los ficheros de sonido (Audition en vez del reproductor), si estoy en el editor de texto y lo uso sobre una línea de texto (por ejemplo una url) me la abre en el navegador...




    Mediatools

    Aparte de eso, tengo otro script de uso habitual que lanzo con una combinación desde Hotkeys. Se llama Mediatools y lo uso para ciertas cosas relacionadas con imágenes, vídeos, navegación, etc. Ahí por ejemplo tengo combinaciones de teclas para renombrar ficheros, añadir información multimedia a nombres de ficheros, encriptar y desencriptar, funciones para usar en ACDsee sobre colecciones de imágenes, por ejemplo para contarlas, copiarlas, distribuirlas en carpetas alfabéticamente, comprobar si están o son nuevas comparando nombres, tamaños e incluso el hash...


    Random Image Dual Viewer

    Un programita que me hice y que es muy curioso es el Random Image Dual Viewer. Este también tiene mucho trabajo. Es un visor de imágenes en Autohotkey que muestra imágenes de forma aleatoria de la carpeta que quieras y además, si son verticales mete dos imágenes en la misma pantalla, escalándolas y respetando perfectamente las proporciones. Permite hacer slideshows y además sobre las imágenes salen unos menús (sólo cuando mueves el ratón y se esconden automáticamente) con el nombre de la imagen, ubicación, tamaño, resolución y un montón de botones para borrarlas, copiarlas, verlas con ACDSee, editarlas con Photoshop o hacer ajustes directamente como ajustarles los niveles, la saturación, el color, la exposición. Para estas cosas el script usa Imagemagick, un programa de edición de imágenes que funciona por línea de comandos. En la captura se ve lo que se muestra a pantalla completa en una única pantalla, con dos imágenes verticales aleatorias de mi carpeta de imágenes.




    Otros

    Finalmente también tengo otros en que uso menos como un detector de niveles incorrectos (mal contraste) en imágenes con una barra de progreso muy chula y con transparencia de fondo (en la captura pongo un fondo blanco para que sea vea), scripts para usarse junto con frontends de emuladores, uno que muestra una pantalla de alarma y emite sonidos del Berzerk cuando se activa el sensor láser que tengo en la puerta de la habitación (otra fricada), uno llamado Los sonidos de El Exorcista, que permite reproducir sonidos de la película con fotos y animaciones, uno que he hecho hace poco específico para buscar ficheros e imágenes por fecha, tamaño, extensiones, resolución, etc.







    Última edición por Elaphe 01/01/2024 a las 18:52

Marcadores

Marcadores

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •