5,810
edits
| Line 306: | Line 306: | ||
* All Nasal code shares a common namespace, so it's possible to set a variable in one nasal binding, and to read it in another. | * All Nasal code shares a common namespace, so it's possible to set a variable in one nasal binding, and to read it in another. | ||
=== | ===Pistas Útiles para scripts=== | ||
Algunas ideas particulares útiles para programar scripts en archivos XML de palanca de mandos: | |||
* getprop | * getprop y setprop pueden ser usados para obtener y seleccionar propiedades desde el arbol de propiedades internas: | ||
var brake = !getprop("/controls/gear/brake-parking"); | var brake = !getprop("/controls/gear/brake-parking"); | ||
setprop("/controls/gear/brake-parking", brake); | setprop("/controls/gear/brake-parking", brake); | ||
* | * Tambien puedes crear tus propios valores en el árbol de propiedades: | ||
setprop("/input/joysticks/js[0]/myjoystick-modifier", 1); | setprop("/input/joysticks/js[0]/myjoystick-modifier", 1); | ||
var mod = getprop("/input/joysticks/js[0]/myjoystick-modifier"); | var mod = getprop("/input/joysticks/js[0]/myjoystick-modifier"); | ||
* | * Puedes imprimirlo en la terminal usando la función print. Esto es muy útil para la depuración de errores. | ||
print(" | print("Aquí", " va ", "el texto"); | ||
* | * Puedes sacar por pantalla información en FlightGear a traves de pantalla emergente. Esto es muy útil para dar al usuario respuesta sobre cambios que no sean obvios a traves del panel. Esto tambien puede ser útil para la depuración de errores. Ejemplo: | ||
gui.popupTip("Parking Brake ON"); | gui.popupTip("Parking Brake ON"); | ||
Los argumentos para gui.popupTip deben ser cadenas de caracteres, por tanto si quieres sacar por pantalla otros tipos de variables tendran que ser formateadas con algo como sprintf: | |||
gui.popupTip(sprintf("Elevator trim: %d", 100 * getprop("/controls/flight/elevator-trim"))); | gui.popupTip(sprintf("Elevator trim: %d", 100 * getprop("/controls/flight/elevator-trim"))); | ||
O | |||
thv = getprop("/controls/engines/engine[0]/mixture"); | thv = getprop("/controls/engines/engine[0]/mixture"); | ||
gui.popupTip("Thrust vector " ~ int(thv * 120 - 20)); | gui.popupTip("Thrust vector " ~ int(thv * 120 - 20)); | ||
* | * Puedes inicializar el uso de variables, Ej, | ||
x = 10; | x = 10; | ||
Pero[http://wiki.flightgear.org/index.php/Nasal_scripting_language#Variables for various reasons] generalmente es mejor declarar las variables con la sentencia "var": | |||
var x = 10; | var x = 10; | ||
Debes saber que "var" crea variables en el ámbito local, la cual causaria problemas si estas intentando usar una variable globalmente entre todos tus archivos de interconexión de palanca de mando XML. | |||
* | * Puedes incluir una sección de código que corra en el comienzo para inicializar variables, crear funciones, etc. Ejemplo: | ||
<PropertyList> | <PropertyList> | ||
<name type="string">My joystick name</name> | <name type="string">My joystick name</name> | ||
| Line 347: | Line 347: | ||
<nasal> | <nasal> | ||
<script> | <script> | ||
# | #initializar variables | ||
f1 = f2 = 0; | f1 = f2 = 0; | ||
left_brake = right_brake = 0; | left_brake = right_brake = 0; | ||
# | # crear una función para ser usada con todos los botones | ||
getmod = func { getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier" ) } | getmod = func { getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier" ) } | ||
</script> | </script> | ||
edits