GLX Clan de Sauerbraten - gui menu
Bienvenido(a) Visitante | RSS
[GLX] Clan
[GLX] Clan [GLX] Clan

gui menu

Creando tu propio menú gui

Este tutorial lo único que pretende es enseñarles algunas de las funciones que existen para crear una gui y como interactuar con cada uno de los elementos creados de la misma. La gui que vamos a crear es la siguiente:
Para ver una referencia completa de los comandos disponibles para crear una gui puedes ver la documentación del Sauerbraten en línea o también la puedes encontrar dentro de tu directorio de instalción /sauerbraten/docs/config.html.

Muy bien, empezemos por abrir nuestro editor de texto plano preferido (NotePad, gedit, bean, etc) y crearemos un archivo llamado mi_menu.cfg en el cual trabajaremos.

El código de la primera pestaña es el siguiete:

mi_menu.cfg (primera pestaña)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
bind "F3" "showgui servidores"

newgui servidores [
 guilist [
 guilist [
 guibutton "PSL 1 " [connect "psl.sauerleague.org" 10000]
 guibutton "PSL 2 " [connect "psl.sauerleague.org" 20000]
 guibutton "PSL 3 " [connect "psl.sauerleague.org" 30000]
 guibutton "PSL 4 " [connect "psl.sauerleague.org" 40000]
 ]
 guibar
 guilist [
 guibutton "effic.me 2" [connect "effic.me" 20000]
 guibutton "effic.me 3" [connect "effic.me" 30000]
 guibutton "effic.me 4" [connect "effic.me" 40000]
 guibutton "effic.me 5" [connect "effic.me" 50000]
 ]
 ]
]

Ahora veamos lo que hace cada línea de nuestro código para la primera pestaña.

bind "F3" "showgui Servidores"
Estamos vinculando una tecla a nuestro menú gui para poder abrirlo; en este caso utilizamos la tecla F3 pero puedes cambiarlo por la tecla de tu elección.

newgui servidores [...]
Creamos nuestra gui llamada 'servidores' y lo que pondremos entre los corchetes es el cuerpo de nuestra gui; es decir, todos los elementos que contiene como: botones, cajas de verificación, campos de texto, etiquetas, etc.
Sintaxis: newgui "nombre_de_la_gui" [elementos]

guibutton "PSL 1 " [connect "psl.sauerleague.org" 10000]
Creamos un botón con la etiqueta "PSL 1" y le estamos indicando que cuando se presione dicho botón nos conecte al servidor PSL 1.
Sintaxis: guibutton "etiqueta" [acciones_a_ejecutar_al_presionar_el_botón]

Y también se usan botones para conectarnos a los demas servidores, lo único que cambiamos es la ip y el puerto en el comando connect.

guilist [...]
Este comando nos sirve para agrupar nuestros elementos por bloques (filas y columnas); en nuestro caso primero creamos una fila y dentro de esa fila creamos dos bloques (columnas), uno para los servidores PSL y otro para los servidores effic.me.
Sintaxis: guilist [elementos]

guibar
Solamente agrega una barra para "divir" nuestros elementos y se puede colocar vertical u horizontalmente.

Ahora veamos el código que agregaremos para la segunda pestaña de nuestra gui: un bloque para cambiar nuestro nombre y otro bloque para ver u ocultar las columnas del ping, cn y pj en el scoreboard.

mi_menu.cfg (segunda pestaña)
1
2
3
4
-
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
bind "F3" "showgui servidores"

newgui servidores [
 guilist [
 ...
 ]
 guitab "scoreboard"
 guilist [
 guilist [
 guiradio "[GLX]Alebrije" nombre 1 [name "[GLX]Alebrije"; echo (name)]
 guiradio "Alebrije" nombre 2 [name "Alebrije"; echo (name)]
 guibar
 guiradio "Aztlan" nombre 3 [name "Aztlan"; echo (name)]
 ]
 guibar
 guilist [
 guicheckbox "Ver el Ping" showping
 guicheckbox "Mostrar el cn" showclientnum
 guicheckbox "Mostrar el pj" showpj
 ]
 ]
]

guitab "scoreboard"
Agregamos a nuestra gui una nueva pestaña llamada "scoreboard" y a partir de esa línea, todos los elementos que se usen serán colocados dentro de esa pestaña hasta que se agrege una nueva.
Sintaxis: guitab "nombre"

guiradio "[GLX]Alebrije" nombre 1 [name "[GLX]Alebrije"; echo (name)]
Creamos un botón de radio con la etiqueta "[GLX] Alebrije". Cuando este activado (ON) la variable nombre tomara el valor de 1 y se ejecutaran las acciones que están entre corchetes: el cambio de nombre y la salida en consola (mediante el comando echo) de nuestro nuevo nombre.
Notese que los 3 botones de radio comparten la misma variable (nombre) pero con diferente valor; de esta manera, solo uno de ellos estará activo y todos los demás pasaran al estado inactivo (OFF) automáticamente.
Sintaxis: guiradio "etiqueta" variable_de_estado valor_on [acciones_a_ejecutar]

guicheckbox "Ver el Ping" showping [...]
Creamos una casilla de verificación con la etiqueta "Ver el Ping". Cuando seleccionemos dicha casilla, la variable de estado showping tomara el valor de 1 y cuando no este seleccionada tomara el valor de 0. Generalmente se deben asignar valores para la variable de estado: uno para ON (activo) y otro para el estado OFF (inactivo); en nuestro caso no lo hicimos y por default se asignan los valores de 0 y 1 para sus estados OFF y ON respectivamente. Dichos estados pueden tener otro valor (no necesariamente 1 y 0). Lo que va entre corchetes [...] son las acciones que llevaremos a cabo de acuerdo al estado de nuestra casilla de verificación. En nuestro caso, es como si escribieramos el comando /showping 0|1 ya que al activar o desactivar la casilla estamos modificando el valor de la variable showping directamente.
Sintaxis: guicheckbox "etiqueta" variable_de_estado valor_ON valor_OFF [acciones_a_ejectuar]

Sucede algo similar con nuestras otras dos casillas de verificación: una para el número de cliente y la otra para el pj.

Ya por último, veamos el código en donde ya se integra la última pestaña a nuestra gui: un mensaje (no automático) de disculpa y perdón cada que matemos o nos mate un compañero de equipo.

mi_menu.cfg (tercera pestaña)
1
2
3
4
-
18
19
-
34
35
36
37
38
39
bind "F3" "showgui servidores"

newgui servidores [
 guilist [
 ...
 ]
 guitab "scoreboard"
 ...
 guitab "mensaje"
 guitext "Mensaje de auto-sorry"
 guifield disculpar 20 [bind "F6" say $disculpar]
 guitext "Mensaje de auto-np"
 guifield perdonar 20 [bind "F7" say $perdonar]
]

guitext "Mensaje de auto-sorry"
Con esto solo creamos un etiqueta de texto a manera de información (ver el ícono); en nuestro caso el texto "Menaje de auto-sorry".
Sintaxis: guitext "etiqueta"

guifield disculpar 20 [bind "F6" say $disculpar]
Creamos un campo de texto (editable) con una longitud de 20 caractéres el cual será almacenado dentro de la variable disculpar. Lo que esta entre corchetes [...] son las ordenes que se llevaran a cabo al momento de que la cadena (el texto) sea ingresada; en nuestro caso, solo creamos un bind para escribir en el chat el mensaje de disculpa.
Sintaxis: guifield var_contenedora longitud [acciones_a_ejecutar_al_introducir_el_texto]

Y se hace algo similar para crear un mensaje (no automático) de perdón.

Ahora solo tienes que guardar el archivo mi_menu.cfg dentro del mismo directorio donde esta tu archivo autoexec.cfg. Normalmente se encuentra en la siguiente ruta:
Winbugs XP
Vista y superiores
C:\Program Files\Sauerbraten\
C:\Users\$USER\AppData\Local\VirtualStore\Program Files\Sauerbraten\
Mac
~/Library/Application Support/sauerbraten/
Linux
~/.sauerbraten/
Y también debes agregar la siguiente línea a tu autoexec.cfg:
exec mi_menu.cfg
Con esto ya podemos utilizar nuestro menu gui al momento de presionar la tecla F3 que, podría ser cualquier otra de su elección.

Documentación oficial del Sauerbraten: gui commands y CubeScript
También puedes consultar la siguiente guía de scripting: Scripting Guide
Dudas y comentarios en el foro público de la página: Sauerbraten...