Parte Tres
IDENTIFICADORES
El entorno del mIRC provee de una serie de identificadores o funciones que devuelven automáticamente un valor para su uso en definiciones de alias, popups y eventos. Todos ellos están precedidos para su identificación por el símbolo $.
Cuando el mIRC, en la ejecución de un script, encuentra uno de estos identificadores, lo sustituye por el valor que este devuelve. Es importante tener en cuenta que estos identificadores deben de ir siempre especificados entre dos espacios en blanco, de lo contrario el mIRC no los identificará como tales.
A continuación se relaciona una lista con la mayoría de los identificadores que se encuentran disponibles en la versión 5.1 del mIRC.
IDENTIFICADORES DE TIEMPO Y FECHA:
$ctime
Devuelve el número total de segundos transcurridos desde las 0 horas de 1 de enero de 1970.
$date
Devuelve la fecha actual en formato: día/mes/año.
$day
Devuelve el nombre del actual día de la semana.
$duration(nº)
Devuelve el número especificado de segundos transformado al formato: semanas/días/horas/minutos/segundos.
$fulldate
Devuelve la fecha en formato largo, por ejemplo: Wed Jun 26 21:41:02 1996
$idle
Devuelve nuestro actual tiempo idle (Este tiempo es el que devolveremos ante un requerimiento finger).
$ltimer
Devuelve el número del último timer activado con el comando /timer
$online
Devuelve el número de segundos transcurridos desde que se puso a cero el reloj contador del mIRC.
$ticks
Devuelve el número de ticks desde que se inició el sistema operativo.
$time
Devuelve la hora actual en formato horas/minutos/segundos.
$timer(0)
Devuelve el número de timers activos en el momento actual.
$timer(nº)
Devuelve todas las propiedades de timer cuyo número se especifica: comando, tiempo, repeticiones, retardo y tipo.
$timer(nº).com
Devuelve el comando asociado al timer especificado.
$timer(nº).type
Devuelve el tipo de status del timer especificado: online/offline
$timestamp
Devuelve el timer actual en formato: [xx:xx]
IDENTIFICADORES DE NÚMEROS Y TEXTOS
$abs(nº)
Devuelve el valor absoluto de un número (elimina el signo).
$asc(C)
Devuelve el número ASCII del carácter C.
$calc(operaciones)
Devuelve el resultado de las operaciones especificadas. Por ejemplo:
$calc(3.14159 * (2 ^ %x % 3) - ($ticks / (10000 + 1)))
$chr(nº)
Devuelve el carácter ASCII correspondiente al número especificado. Por ejemplo:
$chr(65) Devolverá el carácter A
$count(cadena_1,cadena_2)
Devuelve el número de veces que cadena_2 se encuentra repetida dentro de cadena_1.
Por ejemplo:
$count (jajajajaja, ja) Devolverá: 5
$int(nº)
Devuelve la parte entera de un número. Por ejemplo:
$int(3,14159) Devolverá: 3
$left(cadena,N)
Devuelve los N primeros caracteres de una cadena, por ejemplo:
$left(goodbye,4) Devolverá: good
$right(cadena,N)
Devuelve los N últimos caracteres de una cadena, por ejemplo:
$right(othello,5) Devolverá: hello
$len(cadena)
Devuelve el número de caracteres de una cadena.
$lower(texto)
Retorna todos los caracteres de una cadena convertidos a minúsculas, por ejemplo:
$lower(HOLA) Devolverá: "hola"
$mid(cadena,posición,número)
Devuelve el número especificado de caracteres de una cadena desde una posición dada. Por ejemplo:
$mid(othello,3,4) Retornará: "hell"
$pos(cadena,sub_cadena)
Devuelve la posición en que una sub_cadena comienza dentro de una cadena. Por ejemplo:
$pos(hello,el) Devolverá: 2
$pos(hello,la) Devolverá: $null
$rand(v1,v2)
Devuelve un número o letra aleatorio comprendido en el rango [v1-v2] . Por ejemplo:
$rand(1,4) Devolverá cualquier número entre 1 y 4, ambos inclusive
$remove(cadena,sub_cadena)
Devuelve la primera cadena, de la que habrá suprimido la primera ocurrencia expresada en sub_cadena. Por ejemplo:
$remove(abcdefg,cd) Devolverá: abefg
$replace(texto,cadena,reemplazo)
Busca una cadena dentro de un texto, y la reemplaza por otra especificada. Por ejemplo:
$replace(abcdefg,cd,xyz) Devolverá: abxyzefg
$round(número,D)
Devuelve un número especificado, con solo los D primeros decimales. Por ejemplo:
$round(3.14159,2) Devolverá: 3.14
$strip(texto)
Devuelve un texto del que eliminará los colores, negrita y subrayado.
$str(texto,N)
Devuelve un texto dado repetido N veces.
$str(ho,3) Devolverá: "hohoho"
IDENTIFICADORES DE FICHEROS
$alias(N)
Devuelve el nombre de enésimo fichero de alias cargado en ese momento.
$alias (nombre_fichero)
Devuelve $null si el fichero de alias no está cargado en ese momento.
Ejemplos:
$alias(0) Devuelve el número de ficheros de alias cargados en ese momento.
$alias(2) Devuelve el nombre del segundo fichero de alias cargado en ese momento.
$alias(moo.txt) Devuelve $null si el fichero de alias no está cargado, o "moo.txt" si lo está.
$dir y $file
Presentan un cuadro de dialogo desde el que permiten seleccionar un fichero para ser utilizado dentro de la especificación de un alias. $dir presenta un dialogo desde donde se puede acceder a toda la estructura de ficheros, mientras que $file presenta solo los ficheros contenidos dentro de un determinado directorio. En ambos casos se puede especificar mediante el comodín * qué tipos de ficheros se desea que aparezcan.
El formato de ambos es:
$dir[="Texto"]
$file[="Texto"]
Por ejemplo, podemos definir una opción de popups que reproduzca los fichero de tipo midi de un directorio llamado "midis":
Música/splay $file="Selecciona la música" c:\midis\*.mid
Nota: no usar estos especificadores para seleccionar un fichero a enviar por DCC, puesto que este comando lleva ya incorporado su propio dialogo de selección.
$exists(fichero)
Devuelve $true si el fichero existe, y $false si no es así.
$exists(c:\mirc\mirc.exe) Devolverá $true o $false.
$findfile(directorio, tipo_de_fichero, número)
Busca en el directorio especificado (y en todos sus subdirectorios), a todos los ficheros de un determinado tipo, y presenta el path y el nombre del que tiene el número de orden indicado. Si el número es 0 presentará toda la lista de ficheros encontrados de ese tipo. Por ejemplo:
$findfile(c:\mirc,*.exe,1) Devolverá: c:\mirc\mirc.exe
$findfile(c:\, auto*.*,1) Devolverá: c:\autoexec.bat
$getdir
Devuelve el directorio que tengamos especificado en el diálogo DCC options, como destino por defecto para las recepciones DCC.
$getdir(tipo_fichero)
Devuelve el directorio que tengamos especificado en el diálogo DCC options, como destino para las recepciones DCC de ficheros del tipo especificado. Por ejemplo:
$getdir(*.txt)
$lines(filename)
Devuelve el número de líneas que tiene un fichero de texto.
$lines(c:\irc\kicks.txt) Devolverá el número de filas del fichero: c:\irc\kicks.txt
$lof(fichero)
Devuelve el tamaño en bytes de un fichero especificado.
$logdir
Devuelve el directorio especificado en la sección Loggin del diálogo File/options.
$mididir
Devuelve el directorio especificado para los ficheros Midi en la sección Sound Requests del diálogo File/options.
$nofile(fichero)
Devuelve el path o ruta de un fichero especificado. Por ejemplo:
$nofile(c:\mirc\mirc32.exe) Devolverá: c:\mirc\
$nopath(fichero)
Devuelve el nombre del fichero especificado, sin incluir el path. Por ejemplo:
$nopath(c:\mirc\mirc.exe) Devolverá mirc.exe
$mircdir
Devuelve el path donde se encuentra actualmente el programa mIRC.
$mircini
Devuelve el nombre del fichero .ini principal del directorio donde se encuentra el mIRC. Este es normalmente: mirc.ini.
$read
Lee una línea de un fichero y la inserta dentro del alias en que se esté utilizando. Su formato es:
$read [-l] [-stexto]
Ejemplos:
/say $read c:\funny.txt
Imprimirá en pantalla una línea aleatoria del fichero c:\funny.txt.
/say $read -l24 c:\funny.txt
Imprimirá la línea 24 del fichero.
/pateo /kick # $1 $read kicks.txt
Hará un kick del nick especificado dando como razón una línea elegida al azar del fichero "kicks.txt"
/say $read -smirc info.txt
Busca una línea dentro del fichero "info.txt" que comience por "mirc", e imprime en pantalla el resto de la línea.
NOTA: si la primera línea del fichero es un número, el programa entenderá que este representa el número total de líneas del fichero, esto acelerará considerablemente la ejecución del $read.
$readini
Lee información de un fichero .ini e inserta la fila correspondiente dentro del alias. El formato es:
$readini
Por ejemplo:
/echo $readini mirc.ini mIRC nick
Presentará nuestro nick actual tomándolo del fichero mirc.ini
$script(N/fichero)
Devuelve el nombre del enésimo fichero de script cargado. Si se especifica un nombre de fichero de script en lugar de un número, devolverá este mismo nombre, o $null si dicho fichero no se encuentra cargado. Ejemplos:
$script(0) Devuelve el número de ficheros de script cargados.
$script(2) Devuelve el nombre del segundo fichero de script.
$script(moo.txt) Devuelve $null si el fichero no está cargado, o moo.txt si lo está.
$wavedir
Devuelve el directorio especificado en la sección Sound Requests del diálogo File/options.
IDENTIFICADORES DE NICKS Y DIRECCIONES:
$address(nick,tipo)
Busca en la lista interna de direcciones la dirección asociada al nick especificado. Los tipos son los que se describen en el identificador $mask. Por ejemplo:
$address(nick,1) Devuelve el formato: nick!User_ID@dominio.host
Si la lista interna no contiene el nick especificado se devolverá $null.
$comchan(nick,nº)
Devuelve los canales en que nos encontramos nosotros junto al nick especificado. Por ejemplo:
$comchan(nick,0) Devuelve todos los canales en que estamos nosotros y ese nick.
$comchan(nick,1) Devuelve el primer canal en que nos encontramos junto a ese nick
$ial(máscara,nº)
Devuelve direcciones de la lista interna de direcciones.
Propiedades: nick, user, host, addr
Ejemplos:
$ial(*!*@*.demon.co.uk,0) Devuelve todas las direcciones que concuerdan con la máscara especificada.
$ial(*!*@*.demon.co.uk,3) Devuelve la tercera dirección de la lista que concuerda con la máscara especificada.
$ial(*!*@*.com,0).nick Devuelve el nick que concuerda con la máscara.
$ial(*!*@*.com,4).user Devuelve el User ID que concuerda con la máscara.
Para escanear todas las direcciones de la lista interna se puede usar: $ial(*,nº).
$ialchan(máscara,#canal,nº)
Igual al anterior pero solo referido a la lista de ocupantes de un canal especificado.
$level(address)
Busca dentro de nuestra lista de acceso remoto el usuario con la dirección especificada y devuelve su nivel de acceso.
$link(N)
Devuelve el enésimo server de las lista de servers enlazados en la actual red de IRC.
Propiedades: addr, ip, level, info
Ejemplos:
$link(0) Devuelve el número de servers enlazados
$link(1) Devuelve el primer server de la lista de links
$mask(dirección,tipo)
Devuelve la máscara correspondiente al tipo especificado, para una dirección dada. Por ejemplo:
$mask(nick!khaled@mardam.demon.co.uk,1)
Devolverá: *!*khaled@mardam.demon.co.uk
$mask(nick!khaled@mardam.demon.co.uk,2)
Devolverá: *!*@mardam.demon.co.uk
Los tipos aplicables son los siguientes:
0: *!User
[Tienes que estar registrado y conectado para ver este vínculo] 1: *!* User
[Tienes que estar registrado y conectado para ver este vínculo] 2: *!*@host.dominio
3: *!* User ID@*.dominio
4: *!*@*.dominio
5: nick! User
[Tienes que estar registrado y conectado para ver este vínculo] 6: nick!* User
[Tienes que estar registrado y conectado para ver este vínculo] 7: nick!*@host.dominio
8: nick!* User ID@*.dominio
9: nick!*@*.dominio
La utilidad de este identificador es su uso en otros identificadores y comandos.
$me
Devuelve nuestro actual nick.
$nick(#canal,N)
Devuelve el enésimo nick de la lista de nicks del canal especificado. Si ponemos 0 devolverá en número de ocupantes del canal.
$nopnick(#canal,N)
Devuelve el enésimo nick de la lista de nicks que no tiene estatus de operador del canal especificado. Si ponemos 0 devolverá en número de operadores del canal
$notify(N)
Igual a los anteriores pero referido a los nicks de nuestra lista de notificaciones.
$vnick(#canal,N)
Igual a los anteriores pero referido a los nicks que tengan voz dentro del canal especificado
$nvnick(#canal,N)
Igual a los anteriores pero referido a los nicks que no tengan voz dentro del canal especificado
$opnick(#canal,N)
Igual los anteriores, pero referido solo a los nicks que tengan estatus de operadores del canal
$snicks
Devuelve en una línea, separados por comas, todos los nicks que tengamos seleccionados de la lista de nicks del canal.
IDENTIFICADORES DE VENTANAS:
$active
Devuelve el nombre de la ventana activa..
$chan(N/#canal)
Devuelve información sobre los canales en que nos encontramos.
Propiedades: topic, mode, key, limit
Si se especifica un numero en vez de un canal, devuelve el nombre de ese canal.
$chan(0) Devuelve el número de canales en que nos encontramos.
$chan(2) Devuelve el nombre del segundo canal en que nos encontramos.
$chan(2).key Devuelve la clave del segundo canal en que nos encontramos.
También podemos especificar un nombre de canal, pero solo devuelve información sobre este si nos encontramos dentro de él.
$chan(#mIRC).mode Devuelve los modos del canal #mirc.
$chat(N/nick)
Devuelve información sobre las ventanas de DCC chat abiertas.
Propiedades: ip, status
Por ejemplo:
$chat(2).ip Devuelve la IP del segundo DCC chat activo.
$fserv(N/nick)
Devuelve información sobre las ventanas abiertas del servidor de ficheros.
Propiedades: ip, status, cd (directorio abierto)
$get(N/nick)
Devuelve información sobre los DCC get en curso (recepción de ficheros).
Propiedades: ip, status, file, size, rcvd, cps, pc
Ejemplos:
$get(0) Devuelve el número de dcc gets en curso.
$get(2) Devuelve el nick que envía el segundo DCC get activo
$get(2).rcvd Devuelve el número de bytes recibidos hasta el momento en el segundo dcc get.
$get(2).cps Devuelve el número de caracteres por segundo que se están recibiendo en la segunda transmisión de ficheros
$get(3).pc Devuelve el porcentaje transmitido en la tercera recepción en curso.
$query(N/nick)
Devuelve el nick o la dirección del enésimo query abierto.
Propiedad: address
Ejemplos:
$query(0) Devuelve el número de querys abiertos.
$query(2) Devuelve el nick del segundo query.
$query(1).address Devuelve la dirección del primer query.
$send(N/nick)
Devuelve información sobre los envíos de ficheros en curso (DCC sends).
Propiedades: ip, status, file, size, sent, cps, pc
Ejemplos:
$send(0) Devuelve el número de ficheros que se están enviando.
$send(2) Devuelve el nick de destino del segundo envío.
$send(1).sent Devuelve el número de bytes enviados en el primer DCC en curso.
$send(3).pc Devuelve el porcentaje transferido en el tercer envío en curso.
$send(3).status Devuelve el estado (activo, inactivo, o en espera) del tercer send en curso.
IDENTIFICADORES DIVERSOS:
$away
Devuelve el valor $true (verdadero) o $false (falso) Si estamos en estado de away o no.
$cb
Devuelve los primeros 256 caracteres contenidos en el portapapeles.
$cr
Devuelve el carácter de retorno de carro. Es equivalente a poner: $chr(13)
$editbox(window)
Devuelve el texto contenido en la caja de edición de una determinada ventana.
$email
Devuelve la dirección de mail especificada en la correspondiente casilla del dialogo File/Setup.
$host
Devuelve el nombre del actual Local host.
$ignore(N)
Devuelve la dirección del enésimo elemento de la lista de ignores.
Propiedades: type
$ignore(0) Devuelve el número de elementos incluidos en la lista de ignores.
$ignore(1) Devuelve la dirección del primer elemento de la lista de ignores.
$ignore(2).type Devuelve el flag del segundo elemento de la lista de ignores.
$inmidi
Devuelve $true si se está reproduciendo un fichero midi, de lo contrario devuelve $false.
$ip
Devuelve nuestra dirección IP.
$lf
Devuelve el carácter de salto de línea. Equivale a: $chr(10).
$port
Devuelve el número del puerto del server en el que estamos conectados.
$server
Devuelve el nombre del server al que estamos conectados, o $null si estamos desconectados.
$server(N)
Devuelve la dirección del enésimo server de la lista de servers de File/Setup/IRC Server.
Propiedades: desc (descripción), port (puerto), group (grupo)
$server(0) Devuelve el número de servers de la lista.
$server(2) Devuelve la dirección del segundo server.
$server(2).desc Devuelve la descripción del segundo server.
$server(3).port Devuelve el puerto de conexión especificado para el tercer server.
$url
Devuelve la dirección URL de la página actualmente cargada en el navegador. Ejemplo:
/say Estoy viendo la página: $url ... os la recomiendo!
$usermode
Devuelve nuestros actuales modos de usuario.
$version
Devuelve la versión del mIRC en uso.
$+
Este identificador insertado en una línea de instrucción eliminará el espacio el espacio en blanco que se encuentra a su derecha, y el que se encuentra a su izquierda.
$nº-
Se puede usar $1 $2 ... $N para referirse a los parámetros o palabras individuales de una línea de comando. Además es posible especificar $nº- para referirse al parámetro o palabra de la posición especificada, y todos los que le siguen, y $nº_1-n_2º para referirse a todas la palabras comprendidas entre dos posiciones especificadas
$address
Devuelve la dirección de un usuario asociado a un evento, en la forma:
[Tienes que estar registrado y conectado para ver este vínculo].
$fulladdress
Devuelve la dirección de un usuario asociado a un evento, en la forma: nick!User_ID@host.dominio.
$group(N/#nombre)
Devuelve el nombre o estatus de un grupo de un script.
Propiedades: status
$group(0) Devuelve el número de grupos del script.
$group(1) Devuelve el nombre del primer grupo del script.
$group(1).status Devuelve el estatus del primer grupo: on o off.
$group(#name) Devuelve el estatus del grupo #name
$maddress(máscara)
Busca el la lista interna de usuarios y devuelve la dirección del primer usuario que corresponde con la máscara especificada
$nick
Devuelve el nick de un usuario asociado a un evento.
$ulevel
Devuelve el nivel de acceso remoto de un usuario asociado a un evento.
LA ESTRUCTURA CONDICIONAL (IF-ELSE)
La estructura IF-ELSE permite establecer una bifurcación o alternativa dentro de una secuencia de ordenes. Es decir, en ocasiones es posible que deseemos que el programa ejecute una instrucción o instrucciones, pero solo si se cumple determinada circunstancia, y, en caso contrario, o bien no hacer nada, o bien ejecutar otras instrucciones diferentes.
Por ejemplo, queremos hacer un alias que a intervalos de un minuto mida nuestro lag, y solo si este supera los 15 segundos nos envíe un mensaje a la pantalla de Status avisándonos de cuanto lag tenemos. Esto no es posible hacerlo mediante una secuencia lineal de instrucciones; es preciso que el programa discierna en algún momento si procede o no ejecutar la orden de imprimir un mensaje. Esta posibilidad es la que nos facilita la estructura IF.
En definitiva, IF comparará valores, y ejecutará o no diferentes instrucciones, en función del resultado de la comparativa.
El formato general completo de la estructura IF es el siguiente:
if (Valor_1 operador Valor_2) { comandos }
elseif (Valor_1 operador Valor_2) { comandos }
else { comandos }
La orden if comparará Valor_1 y Valor_2 mediante un operador de comparación. En función de esta comparación ejecutará o no el comando o comandos incluidos dentro de las llaves. Por ejemplo:
if (%Variable_1 > %Variable_2) {
/echo -s Atención, la primera variable es mayor que la segunda !!!
/splay c:\sonidos\alarma.wav
}
Esta orden compara del contenido de dos variables, y solo en caso de que la primera variable sea mayor que la segunda enviará un mensaje a la pantalla de Status, y hará sonar un sonido Wav que supuestamente tenemos dentro de un directorio de la unidad C: llamado "sonidos".
Obsérvese que la condición del if se debe de poner entre paréntesis, y las instrucciones internas a ejecutar estarán encerradas entre llaves (si solo hay una instrucción no son necesarias las llaves).
Como se puede ver en la sintaxis general del if, junto este se pueden emplear otras dos instrucciones: elseif y else, aunque estas solo de forma opcional. Si podemos leer la sintaxis de IF de la siguiente forma:
Si (pasa esto) {Haz esto}
la del elseif equivaldrá a:
En caso contrario, si (pasa esto) {Haz esto}.
El anexo else es una posibilidad que permite ejecutar una serie de instrucciones en caso de que lo anterior no se haya producido. Las instrucciones comprendidas dentro del else se ejecutarán siempre que no hay resultado cierta la condición del if, ni, de existir este, la del elseif. Si no se especifica un else, el script sencillamente continuará a desde la instrucción siguiente al último }, o bien terminará si no hay nada más.
Es perfectamente posible "anidar" instrucciones if, es decir, incluir más if’s dentro del bloque de instrucciones de un if. Por ejemplo, queremos hacer un alias que se llame números. Este, al ejecutarse, nos pedirá tres números cualesquiera que cargará en tres variables, a continuación evaluará cual es el mayor de los tres y nos lo imprimirá en la ventana de Status. Podríamos hacer algo como lo siguiente:
/números {
/set %A $$?="Introduce el primer número"
/set %B $$?="Introduce el segundo número"
/set %C $$?="Introduce el tercer número"
if (%A>%B) {
if (%A>%C) {/echo -s El mayor es %A}
else {/echo -s El mayor es %C}
}
elseif (%B > %C) {/echo -s El mayor es %B}
else {/echo -s El mayor es %C}
/unset %A %B %C
Los operadores de comparación que podemos utilizar dentro de la condición de un if son los siguientes:
A == B A Igual a B
A != B A distinto de B
A < B A menor que B
A > B A mayor que B
A >= B A mayor o igual que B
A <= B A menor o igual que B
A // B A es múltiplo de B
A\\B A no es múltiplo de B
A isin B La cadena de caracteres A se encuentra incluida dentro de la cadena B
A iswm B La cadena A es idéntica a la cadena B
A isnum B A es un número incluido dentro de la cadena de números B. Si no se pone B se evalúa simplemente si A es un número
A isletter B Igual al anterior pero con letras en lugar de números
A ison B El nick A está en el canal B
A isop B El nick A es operador en el canal B
isvo El nick A tiene voz en el canal B
A ischan A está en este momento en el mismo canal que nosotros
A isauto B El nick A está en muestra lista de auto-op para el canal B (B opcional)
A isignore A está en nuestra lista de ignorados
A isprotect B A está en nuestra lista de protegidos en el canal B (B opcional)
A isnotify A está en nuestra lista de notify
En esta tabla se han usado, para hacerla más comprensible, los operándos genéricos A y B; en su lugar podemos usar valores numéricos, cadenas de caracteres, variables (identificándolas con su nombre precedido del símbolo %), o parámetros (identificándolos con su nombre precedido del símbolo $).
Si anteponemos el símbolo ! delante de cualquiera de los operadores de la tabla anterior este será negado, es decir, la condición se evaluará como cierta no cuando suceda eso, sino cuando no suceda.
Hasta ahora hemos visto como la estructura if puede evaluar una condición simple; no obstante es también posible crear condiciones complejas combinando varias con o operadores lógicos. El mIRC admite dos tipos de operadores lógicos para enlazar entre sí dos o mas condiciones simples formando así una sola condición múltiple:
Operador AND (&&). En castellano "y":
Si ((pasa esto) y (esto) y (además esto)) {Haz esto}
Por ejemplo:
if (($me !iswm SomaTic) && ($me isop #ayuda_irc)) mode $me -o #ayuda_irc
Esta instrucción comprobará si mi nick es distinto de SomaTic, y además si tengo el estatus de operador dentro del canal #ayuda_irc, de suceder ambas cosas me retirará dicho estatus.
Operador OR ( || ). En castellano "o":
Si ((pasa esto) o (esto) o (esto otro)) {Haz esto}
Por ejemplo:
if ((%A > 20) || (%B < 10)) echo -s Variable fuera de rango
Esta orden comprobará que la variable %A contiene un número en el rango [10-20] , en caso contrario manda a Status un aviso.
EL COMANDO /goto
El uso del comando goto es un recurso muy útil en especial cuando se utiliza desde dentro de una estructura if. La sintaxis de este comando es:
goto
La orden goto provoca un salto automático dentro de la secuencia que el programa utiliza para leer las líneas de un script, pasando directamente a leer a partir de una determinada etiqueta, las líneas que continúan a partir de esta. Una etiqueta no es más que una palabra que ocupa una línea del script, y que se identifica como tal por tener el símbolo ":" delante. La llamada a una etiqueta desde la orden goto no debe de llevar los dos puntos delante.
Ejemplo:
/CargaVar {
:PideDato
set %valor $$?="Introduzca un número entre 0 y 9"
if ((%valor < 0) || (%valor > 9)) {
echo -a Dato erróneo, introduzca solo un dígito entre 0 y 9
goto PideDato
}
Este alias es una sencilla rutina que nos permite aceptar valores para una variable, depurando que solo se introduzca un dígito entre 0 y 9, de no ser así el alias volverá una y otra a la etiqueta PideDato solicitando un nuevo valor para la variable.
EJEMPLOS:
1- El siguiente alias nos presentará la lista de operadores del canal en que nos encontramos en este momento. Se puede observar el empleo de la instrucción de salto incondicional (goto), el uso del parámetro $nick(canal,numero), el comando inc(%variable), y la estructura if.
/listaOPs {
echo -a * Listando Operadores en #
set %i 1
:sigue
set %nick $nick(#,%i)
if (%nick == $null) goto final
if %nick isop # echo 3 %nick is an Op!
inc %i ;(Se incrementa en uno la variable %i)
goto sigue
:final
echo -a * Fin de la lista de operadores de #.
}
2- Este ejemplo presenta un alias que imprimirá en la pantalla de Status una tabla de los caracteres ASCII entre el 33 y el 241 ambos inclusive
/TablASCII {
/set %num 33
/echo -s Tabla ASCII
:presenta
if (%num > 241) goto fin
/echo -s $chr( %num ) es el carácter ASCII carácter ASCII número: %num
/inc %num
goto presenta
:fin
/echo -s Fin de la tabla.
}
Eso es todo, con este curso estas en condiciones de crear el mejor script existente...