inmensia |
Allods Online Addons (9/10): Code Tips
Juan Mellado, 8 Octubre, 2010 - 16:40
Para ir acabando con esta serie dedicada a los addon de Allods voy a poner un par de bloques de código que he encontrado útiles. Cosas sencillas que suelen ser necesarias hacerlas de vez en cuando. Ocultar la Interface Cuando el usuario solicita que se oculte o restaure la interface del juego (combinación ALT+Z por defecto), Allods lanza el evento "SCRIPT_TOGGLE_UI" con un parámetro de tipo boolean que indica si la interface se está ocultando (false) o restaurando (true). En consecuencia, resulta muy sencillo ocultar o mostrar las ventanas de nuestros addons, consiguiendo un acabado más profesional de los mismos. Como siempre, lo primero es registrar un manejador para el evento: common.RegisterEventHandler(OnToggleUI, "SCRIPT_TOGGLE_UI")Y en la función del manejador ocultar o mostrar nuestra interface: function OnToggleUI(params)Evidentemente, en el código del ejemplo se supone que en el addon hay declarada una variable global "formulario" que contiene una referencia a la ventana principal del addon. Si hubiera varias ventanas independientes habría que realizar la misma operación con todas ellas de forma individual. Guardar Información Lógicamente, por temas de seguridad, Allods no permite que el código de un addon acceda libremente al disco duro de la máquina donde se ejecuta el juego. La máquina virtual de Lua que se utiliza está "capada" en ese sentido. Pero si deja la posibilidad de que se escriba y lea del fichero de configuración de opciones globales del juego. Dicho fichero tiene por nombre "user.cfg", y se encuentra en la carpeta "Personal" del directorio donde se encuentra instalado el juego. Es un fichero de texto ordinario, por lo que se puede abrir y examinar con cualquier editor. Para escribir y leer del fichero hay que utilizar las funciones "SetGlobalConfigSection(section, table)" y "GetGlobalConfigSection(section)" respectivamente. Siendo "section" el nombre de la etiqueta bajo la cual queremos grabar los valores contenidos en "table", que ha de ser una variable de tipo table de Lua. El siguiente código de ejemplo crea una tabla con un valor y la graba: local tabla = {}El resultado de la ejecución del código anterior es la actualización del fichero "user.cfg", al que se le añaden las siguientes líneas dentro de la sección "global": ...El proceso contrario, para leer del fichero, es bien sencillo: tabla = common.GetGlobalConfigSection("TABLA") or {}El viejo truco de añadir "or {}" al final sirve para que si en el fichero no se encuentra la tabla pedida entonces se devuelva una tabla vacía, en vez de un valor nulo. Aunque útil, esta forma de proceder tiene el incoveniente de que el fichero puede llegar a tener un tamaño bastante grande si todos los addons se dedican a escribir en él de forma indiscriminada. Y de igual forma, con el paso del tiempo, puede llegar a contener mucha información inútil, ya que no se depura cuando se desinstalan los addons. ¿No encontró lo que buscaba?Utilice el buscador para encontrar más páginas en esta web o en toda Internet. |