Está en la página 1de 164

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

[ESpEcIaL[De]^[JaMon]^

www.geocities.com/especial_de_jamon

Scripting en Espaol para mIRC

INDICE TEMATICO
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

Introduccin................................................................................................... pg. 4
Conceptos Bsicos......................................................................................... pg. 5
- Qu es el mIRC....................................................................................... pg. 5
- Etica del Scripter..................................................................................... pg. 8
Alias............................................................................................................... pag. 9
- Comandos................................................................................................pg. 9
- Brackets................................................................................................... pg. 14
- Brackets llave.......................................................................................... pg. 17
- Comando If-then..................................................................................... pg. 17
- Comando goto......................................................................................... pg. 18
- Comentarios............................................................................................ pg. 19
- Comandos de mIRC para Aliases........................................................... pg. 20
- Cuadro de Modos.................................................................................... pg. 37
Popups............................................................................................................pg. 38
Remotes......................................................................................................... pg. 44
Variables........................................................................................................ pg. 46
Identificadores............................................................................................... pg. 49
- Identificadores de tiempo y fecha........................................................... pg. 51
- Identificadores de numero y texto........................................................... pg. 52
- Identificadores de archivos y directorios................................................ pg. 53
- Identificadores de nick y direcciones...................................................... pg. 55
- Identificadores de ventanas..................................................................... pg. 57
- Identificadores diversos.......................................................................... pg. 58
Eventos Estandar............................................................................................pg. 60
- Sintaxis de los eventos............................................................................ pg. 62
Usuarios Remotos y Eventos CTCP.............................................................. pg. 74
- Comandos................................................................................................pg. 74
- Eventos CTCP......................................................................................... pg. 75
- Usuarios Remotos................................................................................... pg. 78
- Restricciones de acceso a los eventos..................................................... pg. 80
Numeros y Eventos RAW..............................................................................pg, 84
- Eventos RAW..........................................................................................pg. 88
- Numeros RAW........................................................................................ pg. 90
Contorl de Sockets en el mIRC......................................................................pg. 92
- Identificadores de sockets....................................................................... pg. 92
- Abrir y Cerrar conexiones....................................................................... pg. 95
- Leer y Escribir informacion.................................................................... pg. 96
If-Then-Else................................................................................................... pg. 97
Comando GOTO............................................................................................ pg.102
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

Ventanas Personalizadas Estandar................................................................. pg.104


- Creacion de ventanas...............................................................................pg.105
- Edicion y Modificacion de Ventanas...................................................... pg.107
- Identificadores de ventanas Personalizadas............................................ pg.111
- Popups de Ventanas Personalizadas en Remotes.................................... pg.112
- Eventos comunes en Ventanas Personalizadas....................................... pg.114
Ventanas personalizadas de Imagen.............................................................. pg.118
- Comandos para Modificacion................................................................. pg.120
- Identificadores de Ventanas de Imagen.................................................. pg.125
- Eventos y Remotes en Ventanas de Imagen........................................... pg.126
Tutorial de Dialogos en el mIRC................................................................... pg.132
- Creando un Dialogo................................................................................ pg.132
- Poner elementos en el dialogo.................................................................pg.134
- Escribir texto en el dialogo..................................................................... pg.134
- Crear zona de edicion.............................................................................. pg.135
- Aadir una casilla....................................................................................pg.135
- Aador un boton......................................................................................pg.136
- Caja (Frame)............................................................................................pg.137
- Poner Icono............................................................................................. pg.137
- Crear lista desplegable............................................................................ pg.138
- Crear Combo Box................................................................................... pg.139
- Poner y borrar texto en dialogo creado................................................... pg.139
- Agrupar botones...................................................................................... pg.140
- Cambios de apariencia............................................................................ pg.141/144
- Marcado/desmarcado Radio/combo....................................................... pg.142
- Poner y Sacar foco.................................................................................. pg.143
-Activar/Desactivar Elementos..................................................................pg.143
- Ocultar/Mostrar Elementos..................................................................... pg.144
- Otros Comandos...................................................................................... pg.146
Comando /dialog............................................................................................ pg.147
- Tablas de Dialogo................................................................................... pg.149
-Identificador $dialog................................................................................ pg.155
Comando /did.................................................................................................pg.156
- Identificador $did.................................................................................... pg.157
El Evento "On 1: Dialog".............................................................................. pg.158
Agradecimientos............................................................................................ pg.163

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

Scripting en Espaol para mIRC


INTRODUCCION
Esta es una recopilacin de informacin acerca de algunos datos y formas
necesarias para la creacion de un Script para el mIRC. Espero sea de su entera
utilidad.
Quieres Crear tu propio Script?
Bueno, este "manual" esta dedicado a ayudar a todos los que suean con hacer
un script propio, tarea no pequea y que conlleva muchos detalles, y a quienes
como yo, se dieron mil veces contra la pared tratando de solucionar algun
problema o implementar una idea nueva. Mi intencion es hacer la introduccion al
scripting e ir avanzando poco a poco, con ejemplos.
Es importante mencionar que cada uno de estos documentos, en gran medida, ya
tiene su autor, lo que he hecho es transcribir los mas importantes y traducido
algunos, aportado con lo que yo se al respecto, y por tanto hay que agradecer y dar
credito a quienes antes que yo se preocuparon del tema, la constante asesoria de
quienes son mas conocedores. La Motivacion principal que me impulso a la
creaccion de este "Manual del Scripter", fue que cuando me decidi a realizar un
script, no encontre un manual totalmente didactico y explicado de manera simple,
2+2=4. Aparte de encontrar la informacion de una manera muy atomizada, por lo
que con lo aportado por mi, mas lo que ya se ha hecho al respecto, he tenido el
atrevimiento de aparecer con este manual. Espero sepan disculpar los errores que
se puedan encontrar, y si hay falta de claridad, en alguna parte de este documento
esta mi email. Ademas nadie se ha preocupado en esta parte del mundo de hacer
esto, que es muy necesario.
Por ultimo, GRACIAS a todos, los amigos muy amigos, los amigos, los
enemigos, que sin que ellos lo supieran yo ya tenia una copia de sus scripts antes
de que salieran al "mercado" y asi porder estudiarlos, y a los conocidos por las
gratas charlas.
Si tienes alguna pregunta, duda, comentario, puedes encontrarme en conectados.ciudad.com.ar (6667)
salon #Maduras_y_Maduros y en #Mas-de-Treinta-y-Tantos, o en irc.reuna.cl (6667) salon #chile y
en #Mas-de-Treinta-y-Tantos. Mi nick es [ESpEcIaL[De]^[JaMon]^ y mi nmero de icq (lamers
abstenerse) 49507978.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

CONCEPTOS BASICOS

mIRC Scripting
Que es el mIRC?
Es uno de los programas (o clientes) de IRC ( Internet Relay Chat ) mas
populares hoy en dia, contando con versiones para win3.x y win95, 16 y 32 bit
respectivamente.
El objetivo de estas pginas es documentar en espaol las herramientas y
tcnicas necesarias para la creacin de scripts para mIRC. De este modo, adems
de incrementar la escasa informacin de que se dispone en nuestro idioma,
pretendo poner estos conocimientos al alcance de los nuevos y viejos creadores y
de todos los usuarios que los necesiten, tanto para desarrollar y distribuir un script
como para aplicarlos a la personalizacin de las propias sesiones en el IRC.
En general podemos decir que un Script es una secuencia de instrucciones que
un programa es capaz de seguir, interpretar, y ejecutar. Un script puede estar
formado por una o ms rutinas o grupos independientes de instrucciones. El mIRC
dispone de un amplio entorno en el que podemos llevar a cabo la programacin de
rutinas de script, logrando as que el programa realice las funciones ms diversas,
permitindonos avanzar mucho ms all de las capacidades que este cliente de
IRC implementa ya por defecto.
Este programa (mIRC) tiene la particularidad de ser altamente modificable por
medio de los scripts, de tal manera que se le agregan al mIRC funciones (scripts)
que originalmente no estaban definidas o agregadas por el autor.
A el conjunto de estas instrucciones, que llegan a ser de diversos grados de
complejida, se les denomina "Scripts" (guion) y al acto de desarrollar un scripts,
se le llama "scripting".

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

Prcticamente la totalidad de la configuracin bsica, tanto la que el programa


realiza por s mismo como la que nosotros especificamos en las distintas ventanas
de dilogo es depositada en ficheros de texto con extensin .ini en el mismo
directorio que el fichero ejecutable (mIRC16.exe mIRC32.exe), o en un
subdirectorio de este. Es posible por tanto acceder a todos esos parmetros de
configuracin y editarlos segn nuestros deseos. As mismo, todos los scripts que
creemos para el mIRC, con todas sus rutinas e instrucciones, se depositan tambin
en ficheros. La creacin, modificacin, y carga de estos ficheros se puede hacer
directamente desde el propio mIRC en las distintas opciones del men Principal,
Herramientas.
La creacin de scripts para mIRC potentes y tiles exige un buen conocimiento
de los comandos generales de IRC, de los comandos propios del mIRC, y de las
distintas reas configurables de este programa. En este manual veremos el uso y
utilidad de cada una de esas reas configurables y como debe de trabajar con ellas;
tambin tocaremos en captulos aparte el uso de las herramientas imprescindibles
para explotar todas las capacidades de este entorno.
El mIRC te da acceso facil a varios comandos de IRC y comandos que son
propios del mIRC para que puedas hacer que el mIRC reaccione de una manera u
otra a los distintos estimulos que recibira en los canales del IRC.
Si usted parte de cero, o desea iniciar un proceso de aprendizaje ordenado es
siempre recomendable comenzar estudiando detenidamente los comandos, estas
ordenes le darn una buena idea inicial de lo que el programa puede hacer y ser la
base fundamental con la que posteriormente deber utilizar en la creacion del
script. Es indispensable un buen nivel de conocimientos de rdenes y comandos
antes de avanzar a las siguientes etapas.
El siguiente paso lgico es comenzar a crear Alias y Popups, aqu ya descubrir
como con unos pocos comandos puede lograr efectos espectaculares en su
programa. Tanto los alias como los popups se crearn en ficheros de texto
independientes y cargados en el mIRC (mediante los comandos Cargar y
Descargar). La capacidad de estos ficheros es grande pero limitada, ahora bien,
usted podr crear una buena cantidad de ellos si lo necesita.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

Los POPUPS : Cuyo nombre completo es los Popup Menus. Que significa
menus emergentes, o sea que aparecen cuando haces un click en el boton derecho
de mouse en alguna de las areas de cualquiera de las ventanas visibles en el mIRC
(Ventana del Salon, Ventana de Estado, Ventana de Lista de Nicks, Ventana de
Privado o Query, Barra de Menu Principal).
Los ALIAS : Son grupos (paquetes) de comandos reunidos en uno solo, de tal
manera que al ejecutar el Alias como un comando unico, se ejecuta el grupo
completo.
Llegados a este punto ya se habr encontrado con lo Identificadores, pero es el
momento de estudiarlos ms a fondo y observar lo que le permiten hacer. sus Alias
y Popups multiplicarn su capacidad y eficacia con un buen uso de estos
Identificadores.
Si hasta ahora no se ha sentido tentado de estudiar el uso de Variables y de la
estructura IF-ELSE es el momento de hacerlo. Si ya est familiarizado con algn
tipo de programacin los encontrar extremadamente simples, si no quizs le
parezcan algo ms complicados pero tmelo con calma, ver que una vez
comprendidos son conceptos muy elementales y le permiten dar a sus rutinas una
flexibilidad que antes no imaginaba.
Si su practica y estudio ha llegado hasta aqu solo le queda adentrarse en el rea
que mIRC denomina "Remotes", es lo que le queda para poder hacer un script a la
altura de los mejores. Estudie con detenimiento los Eventos, los Nmeros Raw y
los Sucesos CTCP.
Los REMOTES : Son eventos que se disparan (o ejecutan) por algun estimulo
en el salon, y que a su vez activan un comando o alias.
El uso de Ventanas Personalizadas es un recurso muy vistoso y que da al script
un aspecto original, pero el abuso de ellas, empleandolas para fines superfluos o
cuando el programa ya dispone de una forma cmoda de suministrar la misma
informacin delata a los creadores principiantes y hace ms engorroso el manejo
de su script. Estudie bien esta estapa nates de utilizarla por que puede ser un arma
de doble filo.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

Vamos a tratar de ver en un orden logico los comandos, Alias, Popups y


Remotes, etc, de mIRC para que vayas comprendiendo como se hace esto del
scripting.
Antes de entrar en materia mas profunda es muy importante mencionar lo
siguiente:

La Etica del Creador de Scripts


Los scripters tenemos un codigo de etica no escrito que es bueno respetar.
Poco a poco, conversando con otros scripters, te daras cuenta, pero lo basico
es lo siguiente:
1- Nunca copies el script de otro, ni pegues pedazos de uno a tu script y digas
que tu fuiste el creador o dueo.
2-

Si incluyes porciones de otros Scripts, hazlo luego de pedir autorizacion al


autor y dale credito. NO es facil hacer un Script.

3- Nunca preguntes sin haber investigado lo mas posible, y cuando preguntes se


concreto en el cuaestionamiento, para obtener una respuesta facil, adecuada y
rapida.
4-

Una forma valida de aprender es viendo como hicieron los otros scripters
para resolver un problema, y basarte en eso, pero creeme que si copias,

alguien se dara cuenta.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

Alias
El mIRC te permite crear Aliases y Scripts para acelerar tus sesion de IRC o
para desempear funciones repetitivas mas facilmente. Para crear aliases tienes que
conocimiento sobre los comandos del mIRC o por lo menos tener o saber donde
buscarlos, aqyu podras ancontralos.
Los Aliases pueden ser llamados o ejecutados desde la linea de comandos, desde
otros Aliases, y desde los Popups y los Remotes Scripts.
Los Aliases no pueden autoejecutarse de manera continua por que esto parece
causar mas problemas al usuario que resolverlos.
Podemos pensar en un alias como un nuevo comando u orden para mIRC que
creamos nosotros mismos. De esta forma automatizamos un proceso a fin de
poderlo ejecutar ms fcilmente.
Encontraremos todos los alias de que disponemos en un momento determinado,
en el men Principal Herramientas, opcin "aliases", es ah donde debemos escribir
los nuevos alias que creemos, o modificar los existentes, una vez hecho esto
pulsaremos el botn OK, y el alias ya quedar cargado en nuestro programa.
No obstante, antes de empezar a crear y modificar alias es preciso tener un buen
conocimiento de los comandos del mIRC, puesto que son ellos los que forman el
ncleo fundamental de las ordenes que se emplean en un alias.
La definicin de un alias se compone de dos partes: el nombre o patrn del
alias, y las instrucciones que se ejecutarn cada vez que llamemos a este alias.
Vamos a verlo con un ejemplo sencillo:
Ejemplos : Los siguientes ejemplos te muestran como crear aliases que
desempean funciones simples.

/gb /join #latinchat


Este alias se llama "gb", y cada vez que en la lnea de escritura pongamos: /gb, el
programa ejecutar el comando: /join #latinchat.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

10

Ahora si escribes /gb es lo mismo que si escribieras /join #latinchat ya que con el
comando /gb grabas la orden que le sigue.
Obsrvese que el nombre del alias debe de ir precedido del smbolo de comando
"/". A continuacin del nombre pondremos un espacio en blanco, y las ordenes que
queremos que el alias ejecute al ser invocado. Estas ordenes sern normalmente
otros comandos u otros alias. No es recomendable el uso de la recursividad, es
decir, emplear el nombre del alias que estamos definiendo dentro de su propia
definicin.

/j /join $1
Ahora hemos agregado un string de parametro. Si escribimos /j #join (donde #gb
es el salon grabado en el comando anterior) es lo mismo que escribir /join #gb. El
$1 se refiere al primer parametro en la linea que escribes. (O sea que si hubieras
escrito /j #latinchat, $1 se hubiera referido a #latinchat)

/yell /me $2 $1
Ahora si escribes /yell ..Hola Todos! .. el comando sera /me ..Hola Todos!.. El
numero luego del $ especifica el numero del parametro que escribiste.
Para una mayor claridad lo que en este caso quiere decir cada uno de los comandos
en la linea /yell /me $2 $1 es :
/yell = decir algo...
/me = yo digo o hago algo
/$1 = salon al que entro y digo o hago algo
/$2 = lo que digo o hago

/jj /join $?
El signo de interrogacion indica que se te preguntara o pedira que llenes este
parametro $?. El parametro que des sera introducido en ese punto $? , donde ? sera
lo que pongas. Asi que si escribes /jj te aparecera una ventana de dialogo
preguntandote a que salon quieres entrar. Si pones #latinchat el comando final sera
/join #latinchat

/jj /join #$1


El signo # indica que el parametro que especifiques sera precedido por el signo de
numero (# = hash) indicando que es un salon. De manera que si pones latinchat
( sin el # ) el comando queda en /join #latinchat
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

11

/jj /join $?="En que salon quieres entrar?:"


Esto hace lo mismo, pero ahora la ventana de dialogo va a tener la linea "En que
salon quieres entrar?:" para que sepas que informacion se requiere. El comando /jj
indica la aparicion de una venrana de dialogo de pregunta sobre el salon a entrar,
claro que seguido de los comando antes mencionados.
Si en la definicin del alias queremos especificar varios comandos u ordenes, no
nos vale la sintaxis anterior, a estos efectos disponemos de las llaves {} para
encerrar todas las lneas del alias:
/gb {
/nick Froger
/join #Mas-de-Treinta-y-Tantos
/join #Maduras_y_Maduros
/mode Froger +i
}
Este alias cambiar nuestro nick, entraremos en #Mas-de-Treinta-y-Tantos y
#Maduras_y_Maduros, y pondr nuestro modo de usuario en +i (invisible).
Tambin sera posible especificar todos los comandos de alias en una sola lnea
utilizando el smbolo | (suele ser la combinacin AltGr 1 o Alt 124):
/gb /nick Froger | /join #Mas-de-Treinta-y-Tantos | /join #Maduras_y_Maduros
| /mode Froger +i
Evidentemente los alias no serian lo que son si no permitieran una mayor
flexibilidad en sus definiciones. Imaginemos que no queremos especificar un nick
para el alias /gb, ni tampoco los salones en que este nos debe de introducir, sino
que deseamos que estos sean los que decidamos en cada momento que ejecutamos
el alias. Esto es posible utilizando identificadores posicionales del tipo $n de la
siguiente forma:
/gb {
nick $1
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

12

join $2
join $3
mode $1 +i
}
De esta forma el alias esperar que nosotros especifiquemos el nick y los salones
a continuacin de la llamada, y sustituir $1, $2, y $3 por la primera, segunda, y
tercera palabra que escribamos detrs de la orden /gb.
Para una mayor claridad, por ejemplo:
/gb Froger #Mas-de-Treinta-y-Tantos #Maduras_y_Maduros
La flexivilidad de este alias esta en que podremos decidir un nick y salones
diferentes con solo ponerlos a continuacin del nombre del alias, por ejemplo:
/gb Fiambre #ayuda_mIRC #opers_ayuda

/aw /away $?="Ingrese el mensaje de ausencia:" | /say $!


Este es similar al de arriba excepto por la adicion del parametro $!. Este se
refiere al texto que acabas de meter en el cuadro de dialogo (o sea el mensaje de
away), que sera el que aparezca cuando estes en el modo away. Esto te ahorra el
trabajo de escribir el mismo mensjae dos veces. El comando /away $? Indica que te
aparecera una ventana de dialogo en la cual debes ingresa o escribir el mensaje de
ausencia. El comando /aw se utiliza para activar el modo away, claro que seguido
de los comandos antes mencionados.

/give /me gives $$1 a $$2


El $$ doble significa que este comando solo se ejecutara si y solo si se especifica
el parametro. Si solo especificas uno de los dos parametros en el comando de ariba,
no se ejecutara. Tambien puedes poner $$?1 o $?1 lo que significa: "trata de
llenar este parametro con el parametro 1 si este existe. Si el parametro 1 no
existe pregunta por el". En el primer caso el parametro es necesario para que el
comando sea ejecutado, en el segundo caso no. El comando /give se utiliza cuando
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

13

queremos dar algo a alguien. El comando /me indica que soy yo quien ejecuto la
accion, sea cual esta fuere.

/slap /me golpea a $1 con un $2El $2- indica que el parametro 2 y todo lo que viene despues tienen que
agregarse a la linea de comando. Si escribes /slap Idioton con un mazo de hierro la
linea final sera /me golpea a Idioton con un mazo de hierro. Donde $1 es Idioton y
$2 es mazo de hierro. Tambien puedes especificar $2-5 lo cual significa "usa solo
los parametros del 2 al 5". El comando /slap se utiliza cuando queremos madar un
golpe literariamente a alguien. El comando /me indica que soy yo quien ejecuto la
accion, sea cual esta fuere.

/laugh /me se rie del chiste de $1's


Todo lo que se ponga en el parametro $ aparecera al final de la frase. Asi que si
escribimos /laugh mimi el comando final seria /me se rie del chiste de mimi. Hay
ciertos signos que se pueden pegar al $, como el ' en este caso, que en ingles indica
pertenecia. Tienes que experimetar para ver con cuales se puede y con cuales no

/silly /say Ho $+ la to $+ dos $+ !


Los parametros normalmente estan separados por un espacio. Para que mIRC
combine los parametros, puedes usar el identificador $+ . La linea de arriba saldria
asi: Hola todos!
Esto es importante en los casos en que el $ no acepta un signo al lado suyo.

/p /part #
El signo # se refiere al salon en que estas en el momento en que metes el alias.
Asi que si estas en el salon #latinchat y pones /p mIRC reemplaza el signo # por
#latinchat y el comando final seria /part #latinchat. El comando /p /part se utiliza
cuando queremos salir de una salon determinado en el cual nos encontremos.

/op /mode # +o $1
Para darle op a alguien ahora solo escribes /op usuario, en vez del comando
/mode completo. En este caso # indica el salon en donde esta la persona a la que
daras op, +o indica el op propiamente tal y $1 a quien se lo daras. El comando /op
se utiliza cuando quieres darle el op a un usuario determinado. El comando /modo
indica el modo que le daras a un usuario o que activaras para ti.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

14

/dop /mode # -ooo $1 $2 $3


Con esto puedes quitarle el op a tres usuarios escribiendo /dop fulano sutano
mengano. En este caso el comando /modo indica el modo a ejecutar, # el salon
donde se ejecutara, -o significa quitar el op a un usuario determinado y $1 el
usuario sobre quien se ejecutara la accion. El comando /dop o /deop se utiliza
cuando queremos quitarle el op a un usuario determinado. En el ejemplo de arriva
aparecen -ooo esto es por que son a 3 ($1 $2 $3) personas a las cuales vamos a
quitar el op, es proporcional.

/dkb /kick # $1 | /mode # +b $1


Para poner comandos multiples debes usar el caracter | (en los teclados en
espaol generalmente es altgr 1 o alt 124) Asi que para escribir un alias que patee y
banee a alguien pon lo de arriva. En este caso el comando /dkb quiere decir dop o
deop + kick + baneo, el comando /kick quiere decir patear o sacar a un usuario
determinado del salon, # el salon donde se ejecutara la accion, $1 sobre quien se
ejecutara la accion | carcter para poder poner comandos multiples seguidos,
/mode indica el modo a ejecutar sobre el usuario determinado, # el salon donde se
ejecutara la accion, +b indica que se aplicara el modo baneo que quiere decir que al
usuario no se le permitira ingresar al salon otra vez y $1 sobre quien se ejecutara la
accion.

Los brackets de evaluacion [

Si quieres mas control sobre el orden de evaluacion de los identificadores,


puedes usar los parentesis cuadrados o brackets. Los Identificadores devuelven el
valor especfico, ejemplo.. $time devolvera la hora actual. Siempre quel mIRC
encuentre el identificador en el comando, lo reemplaza con el valor actual de ese
identificador. Muchos identificadores tambin realizan funciones en datos que
proporcionas y entonces devuelven el resultado. Los odentificadores estan
agrupados de la siguiente manera, Identificadores de Fecha y Hora, Identificadores
de Ficheros y Directorios, Identificadores de Nick y Direcciones, Identificadores
de Texto y Nmeros, Identificadores de Smbolos, Identificadores de Ventana,
Otros Identificadores. Mas adelante tocaremos a fondo este pinto de los
Identificadorees.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

15

Los identificadores que esten dentro de estos brackets seran evaluados primero,
de izquierda a derecha. Tambien puedes meter unos dentro de los otros.

/say % [ $+ [ $1 ] ]
Tambien puedes forzar la reevaluacion de un identificador previamente evaluado
usando extra brackets [ ]

/set %x %y
/set %y Hola!
/echo [ [ %x ] ]
En este caso donde /set %x %y son variables a definir, /set %y Hola! , es la
definicion de la variable y, /echo [ [ %x ] ] es la reevaluacion de la variable x.
El comando /say es una orden que solo se ejecuta desde dentro de un script, y
equivale al comando /msg #. Es decir enva un mensaje al salon actual.
Si a la hora de invocar un alias que contiene parmetros posicionales o del tipo
$? omitimos la palabra por la cual estos deben de ser sustituidos (no ponemos un
nick o unos nombres de salon en los ejemplos anteriores), el mIRC intentar
ejecutar de todos modos el alias, y en la mayora de los casos se producir un error.
Una alternativa interesante es hacer uso de la variacin $$n $$?. El doble
signo $ hace saber al programa que si en la llamada a un alias no se da un valor a
ese parmetro, debe de ignorar la orden. Por ejemplo:

/saludo /say Hola $$1 , $2 , $3 .Bienvenidos, que la pasen muy bien!!


Podemos ejecutar el alias /saludo especificando hasta tres nombres o palabras
para ser incluidas en la lnea del /say, pero funcionar igualmente si ponemos
solo dos o una; sin embargo, si no damos al menos un valor tras la llamada /saludo
el programa lo ignorar y no ejecutar accin alguna.
Obsrvese que hemos tenido la precaucin de definir los identificadores bien
separados del resto del texto por espacios en blancos a derecha e izquierda, si no lo
hacemos as el programa no los identificar como tales y los tomar literalmente
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

16

como un texto. Si en alguna ocasin es preciso que la palabra que sustituya al


identificador aparezca junto a otros caracteres que no sean blancos (signos
ortogrficos, parntesis, el path de un fichero...etc.) podemos recurrir al
identificador $+, este lo nico que hace es eliminar los espacios en blanco que
tiene a derecha e izquierda en la presentacin final de la lnea.
Por ejemplo:

/fichero /say La ruta de mi cliente de IRC es: C:\mirc\ $+ $1


Si escribimos:
/fichero mirc32.exe
Obtendremos la lnea:

La ruta de mi cliente de IRC es: C:\mirc\mirc32.exe


Donde $+ elimina los espacios en blanco y $1 es la informacion requerida para
completar la accion.
Una variante interesante de los identificadores $n, $?, $$n, y $$? la podemos
lograr anteponiendo a los mismos el smbolo #; esto nos evita el tener que
escribir siempre este smbolo antes del nombre cuando queramos introducir el
nombre de un canal, puesto que el programa lo insertar automticamente.
Por ejemplo:

/j /join #$?="En que salon quieres entrar? (sin #)"


Otra opcin muy til de la creacin de Aliases es la especificacin de alias
dirigidos a las teclas de funcin, es decir el nombre o patrn se asocia con las
teclas F1 a F12, o bien de combinaciones de estas con los botones Shift y
Control; de este modo solo es necesario pulsar la combinacin de teclas
correspondiente para que el alias se ejecute.
Ejemplos:

/F1 /say Hola $$?="escribe el nick a saludar:" $+ . Bienvenido al canal


Con este alias no necesitamos ms que pulsar F1 para que el programa nos pida
un nick, y emita un mensaje de saludo a ese nick en el salon activo.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

17

/sF2 /quit Adis amigos, hasta pronto!


Con este alias desconectaremos del server dejando un mensaje de despedida al
pulsar las teclas Shift + F2

/cF3 /ctcp $$?="nick?" ping


Con este alias podremos enviar un ping solo pulsando la combinacin Control + F3
y escribiendo el nick que recibir el ping.

Los brackets de llave { }


Puedes crear scripts multilinea usando los { }. Esto te permite crear un alias que
realice varios comandos.
/poema {
/msg $1 La distancia
/msg $1 no es cuanto nos alejemos
/msg $1 sino
/msg $1 el que no nos olvamos a encontrar
}
Esto ejecuta los comandos en orden. Dicho sea de paso, en mIRC ya no es
necesario poner el / antes del alias o comando. Este solo se pone si lo vas a escribir
en donde normalmente escribes en el salon. pero si lo tienes en un archivo de alias,
puedes poner asi:
poema {
msg $1 La distancia
msg $1 no es cuanto nos alejemos
msg $1 sino
msg $1 el que no nos olvamos a encontrar
}

El si-entonces ( if-then-else)
Puedes usar el if-then-else para decidir que partes del script se ejecutan basandose
en una evaluacion de una comparacion
/numero {
if ($1 == 1) echo El numero UNO
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

18

elseif ($1 == 2) echo El numero DOS


else echo Numero desconocido!
}
Esto crea un alias que mira si el parametro que metiste es el numero 1 o el
numero 2. Mas informacion sobre este comando tocaremos mas adelante en la
parte de if-then-else

El comando Goto
El comando goto te permite saltar de un lado a otro en el Script
/numero {
if ($1 == 1) goto uno
elseif ($1 == 2) goto dos
else goto desconocido
:uno
echo El numero UNO
halt
:dos
echo El numero DOS
halt
:desconocido
echo Numero desconocido!
halt
}
Si usas el goto incorrectamente puedes ocasionar un loop (repeticion) infinito,
estro tambien es muy util al momento de programar un Flood de ofensa. Puedes
salirte de un loop presionando Control-Break (me ha sido imposible encontrar esta
tecla en mi teclado, su la encuentras, mandame un email a racunav@ctcreuna.cl
Nota : No se pusieron los / en los comandos de arriba. Esto es porque el / solo se
necesita cuando metes un comando en la linea de escritura. En los Scripts, se
asume que todas las lineas empiezan con un comando, asi que no necesitas el /.
Si quieres forzar que un comando se ejecute silenciosamente, o sea sin regresar
ninguna informacion, puedes prefijarlo con un punto "." Por ejemplo:
/ignore algunnick
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

19

Nos mostraria informacion diciendote que ahora estas ignorando a "algunnick".


Si no quieres que esta infromacion se muestre, entonces puedes usar:
/.ignore algunnick

Comentarios
Puedes agregarle comentarios a tus Scripts usando el punto y coma ; al comienzo
de una linea.Y
;Esto es un comentario
Puedes poner comentarios donde quieras en el Script, seran ignorados durante el
proceso
De lo visto hasta ahora se deduce fcilmente que la principal potencia de los
alias reside en el uso de los identificadores $; hay otros muchos adems de los que
hemos descrito aqu, que proporcionan diferentes utilidades, una lista ms
detallada de estos se puede consultar en el apartado IDENTIFICADORES DEL
mIRC. Otros recursos como el uso de variables, la instruccin if-else, ...etc. tienen
tambin su capitulo aparte

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

20

Comandos de mIRC para Aliases


Se ha transcrito aqui parte de la traduccion de Champy [Hispano] y he agregado
algunos nuevos que han salido junto con el mIRC 5.6 , de los comandos de mIRC
y de IRC.
Esta es una lista de todos los comandos disponibles (quiz existan mas), en esta
seccin he nombrado los comandos y una breve descripcin de ellos, si no sabes
que son los comandos te recomiendo que primero vayas a la seccin Comandos
Bsicos para que los estudies con detenimiento.
/ Ensea el ultimo comando escrito en la ventana.
/! Ensea el ultimo comando escrito en cualquier ventana.
/action {texto} manda la accin especificada en el canal o query activo.
/add [-apuce] {nombre_del_archivo.ini} hace un load de los archivos aliases,
popups, users, commands y events.
/ame {texto} Enva la acin especificada a todos los canales activos donde te encuentres.
/amsg {texto} Enva el mensaje especificado a todos los canales activos donde te encuentres.
/auser {nivel} {nick | direccin} Agrega un usuario user con el nivel de acceso
especificado a tu lista de remote users.
/auto [on|off|nick|direccion] Activa permanentemente el auto-opping ON o OFF
del nick o direccin.
/away {mensaje} Activa tu nick como ausente (away) del IRC dejando el mensaje
especificado.
/away Activa tu nick ya de regreso al IRC.
/ban [#canal] {nick} [tipo] Hace un ban (expulsin permanente) al nick
especificado en el canal especificado.
/beep {numero} {retraso} Tu sistema har un sonido beep el numero de veces
con un retraso especifico.
/channel Abre la ventana central de informacin del canal activo.
/clear Borra todos los mensajes escritos en la ventana del canal.
/ctcp {nick} {ping|finger|version|time|userinfo|clientinfo} Hace una de cualquiera
de las funciones elegidas.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

21

/closemsg {nick} Cierra la ventana query que tienes abierta del nick
especificado.
/closemsg [nombreventana] Cierra la ventana de mensaje especificada.
/creq [ask | auto | ignore] Programa tu DCC para tu configuracin de 'On Chat
request' de tus opciones DCC.
/sreq [+m|-m] [ask | auto | ignore] Este es el comando equivalente a las opciones
de DCC Chat (mira /creq). Los parmetros +m|-m minimizan poniendo on|off.
/dcc send {nick} {archivo 1} {archivo 2} .etc.... Enva los archivos especificados
al nick especificado.
/dcc chat {nick} Abre una ventana DCC y enva una peticin de conversar por
DCC al nick especificado.
/describe {#canal} {texto} Enva la accin especificada al canal especificado.
/disable {#nombre_del_grupo} Desactiva un grupo de comandos o eventos.
/disconnect Obliga a el sistema a desconectarte rpido y bruscamente del servidor
(salo con cuidado).
/dlevel {nivel} Cambia el nivel del user al nivel especificado.
/dns {nick | direccin IP | nombre IP } Usa el DNS de tu proveedor a resolver una
direccin IP del nick especificado.
/echo [nick|#canal|estado] {texto} Muestra el texto especifico nicamente a ti al
lugar especificado.
/enable {#nombre_del_grupo} Activa un grupo de comandos o eventos.
/events [on|off] Ensea tus eventos remote y los activa o desactiva.
/exit Obliga al mIRC a desconectarte del sistema.
/finger #nick Hace un finger (informacin del usuario) del nick especificado.
/flood [{numero_de_lineas} {segundos} {pausa}] Activa un control de flood
como especificado.
/fsend [on|off] Activa tu programa de envo de archivos permitindote elegir envo
rpido o no.
/fserve {nick} {maximo_numero_de_archivos} {directorio_de_destino} [texto de
bienvenida] Abre tu fileserver.
/guser {nivel} {nick} [descripcin] Agrega al usuario nick especificado a tu lista
de usuarios con el nivel y direccin especificada.
/help {palabra} Activa el archivo de ayuda de comandos del IRC (bajo los
archivos help).
/ignore [on|off|nick|direccion] Activa o desactiva a tu sistema totalmente el ignorar
a la persona nick o direccin.
/invite {nick} {#salon} Invita a la persona nick al canal especificado
/join {#salon} Te hace entrar al canal especificado.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

22

/kick {#salon} {nick} Hace un kick (sacar) al usuario nick especificado del
salon.
/list [#string] [-min #] [-max #] Nombra los salones existentes.
/log [on|off] Ensea o no, los rcords de la ventana activa.
/me {texto} Enva la accin al salon o ventana activa de query (privado).
/mode {#chanal|nick} [[+|-]mode [parmetros]] Activa o desactiva los modes del
canal o usuario.
/msg {nick} {mensaje} Enva un mensaje privado en la ventana activa al nick
seleccionado.
/names {#chanal} Ensea una lista de los nicks de todos los usuarios en el salon
especificado.
/nick {nuevo nick} Cambia el nick al nick especificado.
/notice {nick} {mensaje} Enva un mensaje en forma de noticia al nick
especificado.
/notify [on|off|nick] Te avisa si el nick especificado se conecta al canal o lo borra
de tu archivo de notificacin.
/onotice [#salon] {mensaje} Enva un mensaje a todos los operadores del salon.
/omsg [#salon]{mensaje} Enva un mensaje a todos los operadores del salon.
/part {#salon} Te saca del salon especificado.
/partall Te saca de todos los salones en los que te encuentres.
/ping <direccin del server> Hace un Ping al server especificado mas NO a un
nick.
/play [-c] <nombre_del_archivo> [retraso] Te permite enviar archivos a la ventana.
/pop <retraso> [#canal] <nick> Convierte a los usuarios en operadores por etapas
de tiempo. .
/protect [on|off|nick|direccion] Protege o no al nick especificado (y queda
registrado en tu sistema).
/query <nick> {mensaje} Abre una ventana nueva de query y enva el mensaje
especificado privadamente . si se aade el parametro [-n], la ventana del query o
privado se abrira minimizada. Ejemplo : /query [-n]<nick>[mensaje]
/quit [razn] Te desconecta del IRC con el mensaje especificado (el mensaje es
opcional).
/raw [-q]<comando> Enva cualquier parmetro que le das directamente al
servidor. Debes saber la sintaxis correcta del comando RAW que envias. Util para
enviar comandos que mIRC no ha implementado todava. La opcin -q hace el
trabajo raw calladamente y sin imprimir lo que est enviando. Este comando hace
lo mismo que /quote en otros clientes de IRC. Ejemplo : /raw PRIVMSG nick :
Buenos dias a Todos!!!!!
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

23

SI NO SABES DE QUE SE TRATA ESTE COMANDO RAW, NO LO


USES!!!!!!!!!.
/remote [on|off] Ensea el estado de tus comandos remote y los activa o
desactiva.
/rlevel {nivel de acceso} Remueve a todos los usuarios de el nivel especificado.
/run {c:\directorio\programa.exe} [parametos] Activa el programa especificado.
/ruser {nick[!]|direccin} [descripcin] Remueve a el usuario de tu lista de users.
/save {nombre_del_archivo.ini} Hace un save del remote especificado en tu
archivo INI.
/say {texto} Dice lo que quieras en la ventana activa. Esto es til en un alias
cuando quieres hacer la misma pregunta (o envas la misma informacin)
repetidamente. No puedes usar este comando en la seccin remota. Usa /msg
#canal <mensaje> en ese caso. Como ejemplo, puedes hacer tambien esto en la
linea de comandos : /info /say "Por favor observa que el servidor de juegos est
caido actualmente y estar offline durante unas horas..."
/server [direccin del server [port] Te vuelve a conectar al ultimo server o al
especificado.
/sound [nick|#salon] {Nombre_del_archivo.wav} {texto} Enva el texto y el sonido
del archivo especificado.
/sreq [ask | auto | ignore] Programa tu DCC en 'On Send request' en tus opciones de DCC.
/time Te da la hora actual del server al que estas conectado.
/timer[N] {repeticiones} {intervalos en segundos} {comandos} [| {mas
comandos}] Activa el reloj timer.
/topic {#salon} {nuevo_titulo} Cambia el titulo del salon especificado.
/ulist [{|}]{nivel} Ensea todos los usuarios en tu remote con el especificado
nivel de acceso.
/url [-d] Abre la ventana de tus URLs la cual te permite ver el www con tu
buscador paralelamente al IRC.
/uwho [nick] Abre la ventana de informacin del usuario user central con
informacin especifica.
/who {#salon} Ensea los nicks de todas las personas del salon.
/who {*direccion_del.string*} Ensea todos los usuarios en el IRC con una direccin igual.
/whois {nick} Ensea la informacin de la persona especificada en tu ventana de status.
/whowas {nick} Ensea la informacin de un usuario que acaba de salir del IRC.
/wavplay {c:\directorio\sounido.wav} Activa localmente el archivo wave seleccionado.
/write [-cidl] {nombre_ del_archivo [texto] Escribe el texto especificado al archivo
especificado de formato .txt
/mode #salon +o {nick} Pone modo op a un usuario determinado, en un salon
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

24

/mode #salon +ooo nick1 nick2 nick3 Da op a varios usuarios determinados


/mode #salon -o {nick} Para quitar el op a un usuario determinado
/mode #salon +b {nick} (o direccin{host}del usuario) Para banear a un usuario
ejemplo de baneo por nick: /mode #scripters +b PorotoMan
ejemplo de baneo por host o direccion : /mode #scripters +b porotoman@reuna.cl
/mode #salon -b nick (o direccin{host}del usuario) Para desbanear a un usuario.
ejemplo de desbaneo por nick: /mode #scripters -b PorotoMan
ejemplo de baneo por host o direccion : /mode #scripters -b porotoman@reuna.cl
/mode #salon +i Para hacer salon solo para invitados
/alias [nombre archivo]<nombre de alias><comandos> Para hacer alias
Para Hacer, Agregar, quitar, reemplazar alias; se limita a lneas de alias y no afecta
a las lneas mltiples definidas.
/alias /fiambre2 /me mugidos Para agregar un nuevo alias, puedes usar
Esto agregar el alias /fiambre2 a la cabeza de la lista de los alias.:
/alias /fiambre2 Para quitar un alias que existe
/alias moofiambre3.txt /fiambre3 /me mugidos Para agregar un alias a un archivo
de alias especfico.Si no especificas un archivo, tienes como valor predefinido los
primeros archivos en los que el alias existe, o si no existe, entonces usa el primer
archivo de alias cargado.
/amsg /ame <mensaje> Enva el mensaje especificado o la accin a todos los
canales en los que estes actualmente.
/background [-amsgdluhcfnrtpx][ventana][archivo] Cambia el dibujo de fondo que
pone para una ventana. Esto tambin puede cambiarse en la ventana Men
Sistema.
Codigos de ventanas:
-a = ventana activa
-m= ventana principal de mIRC
-s = ventana de estado
-g = ventana finger
-d = ventana de querys
-e = poner por defecto
-l = barra de herramientas
-u = botones de la barra de herramientas
-h = men de la barra
-x = ningn fondo en la ventana
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

25

-cfnrtp = -{c=centro, f=entero, n=normal, r=estirado, t=azulejo, p=fotografa}


Puedes pulsar el botn derecho del mouse en toolbar/switchbar para que salga
un men y poder cambiar los dibujos. La Barra de herramientas puede usar un
color RGB 192,192,192 para transparencias, el BMP debe ser de la misma forma
que las fuentes de mIRC. Debe ser 16 o 256 colores BMP.
Nota: El nombre de la ventana slo debe especificarse si ninguno de los
parmetros se especifica. El nombre del fichero no necesita ser especificado si
cambias slo el mtodo de desplegarse el fondo.
/ban [-ruN] [#canal]<nick|address>[tipo] Para hacer una prohibicin o baneo a
alguien del canal actual que usa esa direccin. Esto hace un /userhost primero en la
direccin del usuario mediante el [-ruN]+<nick|address>, y entonces hace un
/mode #+b <direccin del usuario>.
Si especificas la opcin de -uN entonces el mIRC hace una pausa N segundos antes
de quitar la prohibicin.
Si especificas -r entonces /ban quita la prohibicin del tipo especificado para ese
nick, ej: /ban -r nick 2
Si no especificas un tipo de baneo, entonces mIRC usa el nick!
*user@host.dominio entero para hacer el ban. Si ests baneando una direccin IP
entonces un comodin reemplaza el ltimo nmero de la direccin IP. Si ests en el
salon la especificacin de #salon no es necesaria. Para ver una lista de tipos de ban
mira el identificador $mask.
/beep <nmero><retardo> Nmero de Pitidos con un retardo.
/clear [-sghlc][nombreventana] Borra el texto de la ventana actual. Si especificas
un nombre de ventana, se borra de esa ventana.
Codigos de borrado de ventanas
El parmetro -s borra la ventana de estado (status).
El parmetro -g borra la ventana finger.
El parmetro -l borra el "listbox" en una ventana personalizada.
El parmetro -c borra el botn historia en una ventana de dibujo.
El parmetro -h borra el comando history de una ventana.
/clipboard <texto> Copia el texto especificado al escritorio.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

26

/close [-icfgms @][nick1]...[nickN] Cierra todas las ventanas del tipo especificado
y nicks. Si no hay ningn nick, todas las ventanas del tipo especificado sern
cerradas. El tipo de ventana es sealado por c para la de chat, f para la de fserve, g
para get, i para las ventanas de dcc inactivas, m para la de mensajes (query), s para
envos, y @ para las ventanas personalizadas.
/colour <nombre><nmero> Permite cambiar las opciones de color en el men de
Colores.
/copy -ao <archivo><archivo> Copia un archivo a otro archivo o directorio.
Tambin puedes usar comodines para el nombre del archivo inicial, y un nombre
para el directorio de destino. El parmetro -o borra un archivo si existe. El
parmetro -a aade el primer archivo al segundo.
/creq [+m|-m][ask | auto | ignore] Este es el comando equivalente a las opciones de
DCC Chat (mira /sreq ms adelante). Los parmetros +m | -m minimizan y ponen
las opciones en on | off.
/ctcpreply <nick><ctcp>[mensaje] Enva una contestacin a una pregunta ctcp.
/ctcpreply goat HELP No hay ayuda disponible.
/dll <nombre.dll><nombreproc>[datos] Esto te permite llamar rutinas en una DLL
(librera) diseada para trabajar con mIRC.
/dns [-ch] [nick|direccin] Este comando Resuelve una direccin. Si mIRC ve un
"." en el nombre especificado asume que es una direccin e intenta resolverla. Por
otra parte, para el nick hace un /userhost para encontrar la direccin del usuario y
entonces resolverla. Si le das una direccin IP, busca el nombre del host. El
parmetro -c borra todos los DNS que estan en espera, excepto el que est
actualmente en marcha. El parmetro -h obliga a /dns a tratar el parmetro como
host. Puedes hacer mltiples /dns en espera, y ver el estado de la cola actual usando
/dns sin parmetros en la linea de comandos.

Nota: Debido a la forma en que trabaja la bsqueda de DNS, cualquier DNS


buscado se resuelve, ejemplo: connecting to a server, debe resolverse antes de las
demandas siguientes. Esto significa que si un DNS anterior est teniendo
problemas al resolverse, los DNS siguientes tienen que esperar hasta que el
cronmetro quede fuera de tiempo antes de que ellos puedan resolverse.
/dqwindow [on|off|show|hide|min] Manipula en la ventana de query.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

27

/echo [nmerocolor]<-dehiNtsaql|#salon |[=]nick><texto> Imprime el texto en la


ventana especificada con el color especificado (0 a 15).
/echo 3 Comprobando #mIRC Imprime "Comprobando" en color verde 8el cual
corresponde al numero 3) en la ventana del salon #mIRC, asumindo que ya est
abierto. Si salon/nick no se especifica, el -s cambia mensajes a la ventana de
estado, el -d cambia a la ventana de querys, y el -a hacia la ventana actualmente
activa.
El -e adjunta la lnea en lneas separadas.
El -iN realiza sangras en la lnea N carcteres.
El -h fuerza el tamao de la ventana y no cambia la lnea.
El -t cambia la lnea con un timestamp si el tiempo est activado en esa ventana.
El -q hace que no se muestre el texto si fu llamado desde un alias usando el prefijo.
El -l lo aplica a las opciones de Resaltes en la lnea mostrada.

Nota: Este texto slo se muestra en tu ventana, no se enva al servidor y asi nadie
ms puede verlo.
/editbox [ -sap|[=]ventana]<texto> Rellena el editor de la ventana actual con el
texto especificado.
El interruptor -s indica la ventana de Estado.
El interruptor -a indica la ventana Activa.
El interruptor -p indica que un espacio debe aadirse al texto.

Nota: Para especificar una ventana de charla dcc, pon delante del nick un signo = igual.
/filter [-sgdfwxnpriocteu][n-n2][c s]<infile|dialog id><outfile|dialog id><matchtext>

Este comando examina lneas de texto en una ventana o archivo y si cualquiera


de ellos contiene matchtext, ellos se escriben en otra ventana o archivo que puedes
usar entonces.
Los infile pueden ser un nombre de archivo o ventana (personalizada o normal).
Los outfile pueden ser un nombre de archivo o ventana personalizada. Debes
especificar los parmetros -fw si los nombres son ambiguos, ejemplo:
/filter -ff in.txt out.txt *mirc* Esto indica que los dos son nombres de archivo.
/filter -wf #in.txt #out.txt *help* Indica que el primero es un nombre de la
ventana, y el segundo es un nombre de archivo.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

El
El
El
El
El
El
El
El
El
El
El
El

28

-x excluye lneas emparejadas.


-n cambia lneas de prefijos con un nmero de lnea.
-s cambia el infile a la ventana de estado.
-g cambia el infile a la ventana finger.
-d cambia el infile a la ventana de mensajes.
-p cambia la salida del texto a una ventana personalizada.
-r especifica el rango de lneas por filtrarse de n a n2.
-i indica que has puesto un [dialog id] como control de dilogo personalizado de entrada.
-o indica que has puesto un [dialog id] como control de dilogo personalizado de salida
-c borra el archivo de salida windows/file antes de escribir.
-t ordena la salida [c s] columna C, siendo S el separador de columnas.
-e especifica orden descendente y -u orden nmerico.

Este comando tambin rellena el identificador $filtered con el nmero de


palabras encontradas, si las hay.
Nota: Si los archivos de entrada y salida son los mismos, mIRC procesar lo
requerido correctamente.
/findtext -n <texto> Busca en la ventana activa el texto especificado como
(Control-F)
/flash [-wbrN] <texto> Esto activa-enciende el icono/windows de mIRC con el
texto especificado en la barra de tareas pero slo si mIRC no es la aplicacin
activa.
El parmetro -b hace que mIRC emita una seal sonora cada segundo.
El parmetro -rN hace que mIRC repita el flsh solo N veces.
El parmetro -w hace que mIRC toque el sonido especificado en la seccin
Pitidos a Sucesos Events Beeps.
/flushini <nombrefichero> Pasa los archivos INI especificados al disco duro. Se
guardan los archivos INI en memoria, as que puedes hacer esto para asegurarte
que tus archivos INI estan puestos al da.
/font [-asgb|ventana]<tamaofuente><nombrefuente> Esto te permite cambiar el
conjunto de caracteres para la ventana actual. Si no se especifica ningn parmetro,
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

29

la ventana de dilogo de fuentes, usa los parmetros por defecto. Puedes hacer la
negrita usando el parmetro -b.
/join [-inx]<#canal> Este es el comando IRC normal para entrar en un salon.
El -i te hace entrar al salon al que fuiste invitado en ltimo lugar.
El -n y -x cambia la ventana del salon a minimiza/maximiza, cuando entras.
/linesep [-s|ventana] Muestra el separador de lnea seleccionado en la seccin
Extras en la ventana especificada.
/links Muestra los servidores a los que tu servidor actual est unido.
/load </a|-pscqnm|-ruvsN><nombrefichero> Carga los alias, popups, o scripts
especificados.
/load -a aliases.ini carga un archivo de alias
/load -pc status.ini carga un popup del salon
/load -pn status.ini carga un popup de la lista de nicks
/load -ru users.ini
carga un archivo de usuarios
/load -rv vars.ini
carga un archivo de variables
/load -rs script.ini
carga un archivo de scripts
/loadbuf [lneas][-psglecoNt<topic>]<ventana | dialog id><nombrearchivo>
Cargas el nmero especificado de lneas del archivo citado en la ventana
especificada.
/loadbuf 20 @test info.txt Esto carga las ltimas 20 lneas de info.txt en la ventana
personalizada @test.
/loadbuf 10-40 @test info.txt Esto carga las lneas 10 a 40 de info.txt en la ventana
personalizada @test.
El -p fuerza las lneas de texto para mostrarlas en la ventana.
El -s y -g aplica el comando a las ventanas de estado y finger respectivamente.
El -l aplica el comando a la lista de una ventana personalizada.
El -e evala variables e identificadores en la lnea leida.
El -cN especifica el color del fondo predefinido para las lneas.
El -t
carga el texto bajo el [topic] en la seccin INI o en un archivo de texto.
El -o indica que has especificado un parmetro [dialog id] en lugar de un
nombre de ventana para cargar texto en un control de dilogo
personalizado.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

30

/log <on|off><ventana>[-f nombrearchivo] Activa o desactiva el grabar la


conversacion de una ventana, si especificas el nombre de un archivo determinado
la ventana de dilogo no se muestra.
/mdi -act Permite colocar iconos y ventanas en cascada/mosaico.
/mkdir <nombredirectorio> Crea el directorio especificado.
/play [-escp q# m# rl# t#][canal/nick/stop]<archivo>[retardo] Este es un comando
potente que te permite enviar archivos de texto, o partes de ellos, a un usuario o un
canal. El retardo est en milisegundos. Si envias el archivo demasiado rpido al
servidor probablemente sers desconectado por inundar este. La opcin por
defecto es 1000 sea 1 segundo. Se pueden enviar lneas vacas entre el texto para
simular un retraso.
/play c:\text\mypoem.txt 1500 Ejecuta archivo en la ventana activa con retraso
El parmetro -e permite hacer eco del texto a una ventana cuando se envia al
servidor.
El parmetro -s permite usar el comando play en la ventana de estado mientras
estas desconectado. Si no especificas el -s debes conectarte a un servidor para usar
el comando /play.
El parmetro -c obliga a mIRC a interpretar lneas como texto normal.
El comando /play tiene "queues" colas para los usuarios; hace esto, porque si
intentara usar todas las demandas al mismo tiempo, probablemente sera
desconectado del servidor por inundar.
El parmetro -p indica que sta es una demanda con prioridad y debe ponerse a la
cabeza de la cola para ser ejecutada de inmediato. La demanda en curso har una
pausa y se resumir una vez que esta demanda se termine.
El parmetro -q# especifica el nmero mximo de demandas que pueden estar en
cola. Si la longitud de la cola ya es ms grande que o igual al nmero especificado,
entonces la demanda se ignora. Ejemplo : /play -q5 c:\text\info.txt 1000
El parmetro -m# marca los lmites del nmero de demandas que pueden pasar a
cola por un usuario/canal especficos. Si el usuario/canal ya tiene o excede el
nmero especificado de demandas hecho cola entonces se ignora. Ejemplo : /play
-m1 info.txt 1000
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

31

La lnea anterior limita a cada usuario a un mximo de demandas en un momento e


ignora todas sus otras demandas.

Nota: El -q# y -m# slo se aplican a comandos /play de definicines remotas,no


tuyas.
Para combinar los parmetros anteriores haras:
/play -cpq5m1 info.txt 1000
El parmtero -r fuerza una sola lnea escogida al azar de un archivo. Por ejemplo :
/play -r action.txt 1500
El parmetro -l# fuerza el nmero de lnea especificado para ser ledo de un
archivo. Por ejemplo: /play -l25 witty.txt 1500
Para -r y -l# la primera lnea en el archivo puede ser un solo nmero que
especifica el nmero de lneas en el archivo, esto acelera el proceso de lectura del
archivo.
El parmetro -t cambia y obliga a mIRC a buscar el tema especificado en el
archivo y mostras todas las lneas despus de ese tema. Por ejemplo:
/play -thelp1 c:\help.txt
Em este caso, en el archivo help.txt tendras:
[help1]
lnea1
lnea2
lnea3
[help2]
...
mIRC mostrar todo despus de [help1] y se detiene cuando alcanza el prximo
ttulo o el extremo del archivo. Tambin puedes usar el identificador $pnick en
comandos que identifican el nick/salon al que ests ejecutando. Puedes usar stop,
para dejar de ejecutar un archivo de texto y borrrar la cola, /play stop.
/remove <archivo> Anula el archivo especificado.
/rename <archivo><nuevoarchivo> Renombra un archivo, tambin puede usarse
para mover un archivo de un directorio a otro.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

32

/resetidle [segundos] Resetea el identificador $idle para poner a cero o al nmero


de segundos especificado.
/rmdir <directorio> Anula el directorio especificado. Si el directorio tiene archivos,
no puede anularse.
/run [-n] <archivo>[parmetros] Ejecuta el programa especificado con parmetros.
Por ejemplo : /run c:\net\ftp.exe sunsite.unc.edu, esto ejecuta el programa ftp con
el parmetro sunsite.unc.edu.
/run notepad.exe $?="Que archivo deseas ver" Esto pide un parmetro y abre el
bloc de notas con el archivo. Si especificas un archivo no-ejecutable, mIRC intenta
encontrar el programa asociado con ese archivo y entonces lo ejecuta. Por ejemplo:
/run info.txt......Puedes especificar -n para minimizar la ventana del programa que
se ejecuta.
/save <-pscqnm|-ruv><archivo> Graba el popup o el archivo remoto
users/variables especificado.
/save -ps status.ini
graba el popup de estado a status.ini
/save -pn nick.ini
graba el popup de lista de nicks a nick.ini
/save -ru users.ini
graba la lista de usuarios a users.ini
/save que -rv vars.ini graba la lista de variables a vars.ini
Nota: Puedes grabar slo una seccin cada vez.
/savebuf [-sga][lneas]<ventana><archivo> Graba el nmero especificado de
lneas del buffer de la ventana especificada en el archivo citado.
/savebuf 20 @test info.txt Esto graba las ltimas 20 lneas de la ventana
personalizada @test en info.txt.
/savebuf 10-40 @test info.txt Esto graba las lineas 10 a 40 de la ventana @test en
info.txt. El parmetro -s graba el buffer de la ventana de estado, el parmetro -g
graba el buffer de la ventana digital, y el parmetro -a le hace aadir el texto al
extremo de un archivo en lugar de borrarlo.
/saveini Actualiza los archivos INI de mIRC con las opciones actuales.
/server [-sar]<server/nombregrupo>[puerto][password] Te conecta a un servidor,
primero desconectndote del servidor actual. Por ejemplo : /server irc.server.co.uk
6667 password.
Si usas el comando server mientras estas conectado, sers desconectado con
normal mensaje de despedida y te conectar al servidor especificado. Tambin
puedes usar /server N que conecta al servidor que est situado en la posicin N de
la lista de servidores.
Tambin puedes usar /server nombre de grupo, entonces se har un ciclo a travs
de todos los servidores que en la lista de servidores tienen ese nombre de grupo
hasta que te conecte a uno de ellos.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

33

Si especificas cualquier opcin -sar, el formato del comando se vuelve:


/server -sar[server][-p puerto][-g grupo][-w password][-d descripcin]
-s ordena la lista de servidores
-a aade un server. Si existe, lo actualiza
-r remueve un servidor
/showmirc -nrstx Manipula el despliegue de la ventana principal de mIRC, donde
-n = minimiza, -r = restaura, -s = parpadea, -t = a barra de windows, y -x =
aumenta al mximo.
/sline [-a|r]<#salon><N|nick> Selecciona o desselecciona una linea en la lista de
nicks del salon. O puede seleccionar el de la posicin N, o un nick especificado.
Si no especificas ningn parmetro, cualquiera que exista en la lista se borra. Si
especificas el parmtero -a entonces los especificados se seleccionan sin afectar
otras lneas. Si especificas -r es abarcado todo el artculo especificado.
/speak <texto> Enva el texto especificado al Monlogo (o Text Assist) qu es un
programa que habla cualquier texto que se le enva.
/splay [-qwm]<archivo> Hace sonar el .wav especificado o el archivo .mid. Si no
especificas un directorio, el directorio de Peticin de Sonidos toma las opciones
usadas. Tambin puedes usar /splay stop que detiene un archivo que est sonando.
El parmetro -q permite hacer cola a los .wav y .mid para sonar. Los parmetros
-wm se usan junto con /splay -wm stop, y te permite especificar si quieres
detener .wavs, .mids, o ambos.
/strip [+-burc] Controla cdigos de letras y colores, tambin pone las Opciones en
on/off.
/strip +bur-c Pone negrita, subrayado, inversa en on, y desactiva colores poniendo
off.
/timer[N/nombre][-ceom][tiempo]<repeticion><intervalo><comando> Activa el
cronmetro citado para realizar el comando en un intervalo, y opcionalmente en un
momento especificado.
Si no te conectas a un servidor y activas un cronmetro, tiene un valor predefinido
siendo un cronmetro offline, que continuar corriendo si te conectas a un servidor
o no.
Si te conectas a un servidor y activas un cronmetro, tiene un valor predefinido
siendo un cronmetro online, que si desconectas del servidor, se apagar. Puedes
especificar mediante -o para obligarle a que sea un cronmetro offline.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

34

/timer1 0 20 /ame est LEJOS ! Timer1 repetir la accin al canal cada 20


segundos hasta que pares el cronmetro.
Si especificas un retraso de 0 segundos, el cronmetro se activar inmediatamente
despus de que el script llegue al final.
/timer5 10 60 /msg #Mas-de-Treinta-y-Tantos Para ms informacion sobre este
script /msg PorotoMan info. Timer5 repetir este mensaje en el canal #Mas-deTreinta-y-Tantos cada sesenta segundos y se detendr despus de 10 veces.
/timer9 14:30 1 1 /say son ahora las 2:30pm Esto esperar hasta las 2:30pm y
anunciar entonces la hora y se parar.
Para ver una lista de cronmetros activos teclea /timers. Para ver las opciones de
timer1 escribe /timer1. Para desactivar timer1 escribe /timer1 off. Para desactivar
todos los cronmetros teclea /timers off. Si ests activando un nuevo cronmetro
que no necesita especificar el nmero del cronmetro, slo usa: /timer 10 20 /ame
Yo no estoy aqu ! y el mIRC asignar el primer cronmetro libre a este comando.
Si especificas -m , indicas que el retardo del intervalo est en millisegundos.
Si especificas -e , esto ejecuta el comando asociado con el nombre del cronmetro
especificado.
Nota: los cronmetros en milisegundos pueden reducir la velocidad mIRC bastante
porque cada cronmetro puede activarse muchas veces por segundo, as que no
deben usarse a menos que sean necesarios.
El identificador $ltimer da el nmero del cronmetro que fu activado por /timer.
En lugar de usar un nmero puede especificarse tambin un nombre.
/timershow 0 10 eco -un $nick $server $time
Puedes obligar a reevaluar el identificador cuando uses el comando /timer usando
el formato $!me o $!time.
Si desea desactivar un grupo de cronmetros, puedes usar un comodin para el
nmero, por ejemplo: /timer3? Desactivado Desactiva los cronmetros del 30 al
39.
/timestamp [-s|a|e][on|off][ventana]
Activa poner- tiempo en sucesos on/off , e intenta poner-tiempo a la mayora de los
sucesos que ocurren.
-s = para la ventana de estado
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

35

-a = para la ventana activa


-e = para cualquier ventana
Si no se especifica nombre de ventana, entonces el interruptor global se activa o
desactiva.
/titlebar [@ventana]<texto> Pone el ttulo en la aplicacin principal. Si especificas
una ventana personalizada, entonces se cambia el ttulo de esa ventana.
/tokenize <c> <texto>
Completa los identificadores $1 $2 ... $N con simbolos en <texto> separado por
carcter <c>, ejemplo: /tokenize 44 a,b c,d,e El comando anterior pondria $1=a,
$2=b c, $3=d, $4=e
/unload <-a|-rs><archivo> Descargas los alias o el archivo script remoto
seleccionado.
/unload -un aliases.ini descarga el archivo alias.ini
/unload -rs script.ini descarga el archivo script.ini
Nota: Puedes descargar slo una seccin de cada vez.
/updatenl Actualiza el salon, la lista de nicks y IAL en scripts remotos de
kick/part/quit.
/winhelp <archivo>[key] Abre un archivo de ayuda con la palabra de bsqueda
especificada.
/write [-cida l# s#]<archivo>[texto] Escribe lneas a un archivo del texto. Por
ejemplo: /write store.txt Esta lnea se aadir al archivo store.txt
El parmetro -c borra el archivo completamente antes de escribir en l, as que
empieza con una pizarra limpia. Por ejemplo: /write -c c:\info.txt Este archivo se
borrar y esta lnea se escribir en l.
El parmetro -l# especifica el nmero de la lnea donde el texto se escribir. Si no
especificas un nmero de lnea, entonces la lnea se agrega al final del archivo. Por
ejemplo: /write -l5 c:\info.txt Esta lnea borrar la lnea 5 en el archivo.
El parmetro -i indica que el texto debe insertarse en la lnea especificada en lugar
de borrarlo. Si no especificas ningn texto entonces una lnea blanca se inserta. Si
no especificas un nmero de lnea entonces una lnea blanca se agrega al final del
archivo. Por ejemplo: /write -il5 c:\info.txt que Esta lnea se insertar en la lnea 5
del archivo
El parmetro -d anula una lnea en el archivo. Si no especificas un nmero de lnea
entonces la ltima lnea del archivo se anula. Por ejemplo: /write -dl5 c:\info.txt El
comando anterior anular la lnea 5 en el archivo.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

36

El parmetro -s# examina un archivo por la lnea que empieza con el texto
especificado y ejecuta la operacin en esa lnea. Por ejemplo: /write -dstest
c:\info.txt, Esto buscar en el archivo info.txt una lnea que empieza con la palabra
"test" y si la encuentra, la borra. Si no especificas ningn parmetro entonces el
texto simplemente se agrega al final del archivo.
El parmetro -a indica a el mIRC que debe aadir la lnea de texto que
especificaste al texto que existe en la lnea sealada.
/writeini -n <archivoIni> <seccin> [artculo] [valor] Escribe en los archivos INI
en el formato normal de archivo. Si el parmetro -n es especificado, mIRC
intentar escribir el archivo .ini aunque sea ms grande de 64k.
Una parte del archivo de mirc.ini se parece:
[DDE]
ServerStatus=on
ServiceName=mirc
Podras lograr esto usando /writeini :
/writeini my.ini DDE ServerStatus on
/writeini my.ini DDE ServiceName mirc
Puedes anular secciones enteras o artculos usando el comando /remini.

Atencion: No use este comando para modificar cualquiera de los archivos INI
que estan siendo utilizados por mIRC.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

37

=========================================================

Modos de Salon
===========================================================

Modos

Efectos en Salones

===========================================================

b <usuario>
i
l <nmero>

banea a alguien, <usuario> en sintaxis "nick!user@host"


el Salon es solo para invitados
el Salon es limitado, <nmero> usuarios mximos
permitidos.
m
el Salon est moderado, (solo operadores hablan)
n
/MSGs externos no se emiten en el Salon
o <nick>
hace al <nick> operador en el Salon
p
el Salon es privado
s
el Salon es secreto
t
topic limitado, solo operadores pueden cambiarlo
k <key>
pone clave secreta <key> para entrar al Salon
===========================================================
===========================================================

Modos Usuarios
===========================================================

Modos

Efectos en nicks

===========================================================

i
o

hace invisible a alguien que no sepa la


ortografa exacta de tu nick
estado de IRC-operador, solo puede ponerse
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

38

por IRC-ops con OPER


s
recibe noticias del servidor
v
voz, puede escribir en un canal moderado
===========================================================

Popups
mIRC te permite crear menus que brotan haciendo un click con el boton
derecho del mouse (popups) para la ventana de status, para la ventana de
query/chat(privados), para la ventana del salon, para la lista de nombres(nicknames
list), y para la barra principal de menus. Para crear estos debes saber como usar los
comandos basicos de mIRC, como crear aliases, como usar identificadores y
variables.
Ejemplos: Los Popups usan este formato:
<menuitem>:<comandos>
Buscar ayuda:join #scripters
Las palabras antes de los dos puntos ":" son el nombre del item del menu. Las
palabras despues de los dos puntos ":" son los comandos que se ejecutaran. En este
caso, en el menu verias "Buscar ayuda". El comando que se ejecutaria si presionas
ese item seria /join #scripters.
El formato de los commandos sigue exactamente el de los aliases. Mira la
seccion Aliases para entender como se escribe un alias.
Para crear un submenu, usa un punto "."
Entre a un Canal
.Buscar ayuda:join #kalamar
.Visitar a los amigos en #latinchat:/join #latinchat
.En que canal entramos?:/join $?
En este caso el nombre del submenu es "Entre a un Canal" Todos los comandos
que lo siguen, comenzando con un "." son parte de su submenu
Para crar menus dentro de menus, solo agrega mas puntos
Salones
.Ayuda
..scriptersayuda:/join #yuda_scripters
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

39

..mIRC:/join #mirc
..ayuda_configuraciones:/join #ayuda_configuraciones
.Otros Salones
..Visita #Mas-de-Treinta-y-Tantos:/join ##Mas-de-Treinta-y-Tantos
..Mp3's:/join #Mp3's
.Salon a Entrar:/join #$$?="Ingresa al nombre del salon:"
Para separar items de menus, puedes usar un guion "-"en la linea siguiente de
escritura. Por ejemplo:
Quien es?:/whois $?
Miscelaneas
.Editar Temporales:/run notepad.exe temp.txt
.Decir algo: /say $?
.Accion:/me $?
Usuarios en
.#Mas-de-Treinta-y-Tantos: /names #irchelp
.#scripters: /names #scripters
.Nombres en?:/names $?
Listar Salones:/list
Para usar el menu de la lista de usuarios (nicks), debes escoger un usuario (nick)
antes de activar el menu con el boton derecho. Aqui hay un ejemplo simple de
menu de la lista de nicknames o usuarios:
Quien es?:/whois $1
Modos
.Op:/mode # +o $1
.Deop:/mode # -o $1
.Kick, Ban:/kick # $1 | /ban $1
DCC Send:/dcc send $1
DCC Chat:/dcc chat $1
Golpe:/me Golpea $1 con una silla en la nuca
Privado (query):/query $1 Hola! Estas ahi...?
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

40

Si quieres que un item de menu realica varios comandos, puedes usar los
parentesis de llave { }.
Estudia la seccion de Aliases para mas informacion sobre como usarlos.
Galleta {
if ($1 == $me) echo Me regalo una galleta!
else echo Le doy una galleta a $1 !
}
El menu anterior puede ser utilizado en la lista de nicknames. El $1 se refiere al
nickname del usuario que has elegido de la lista. En este caso, el mira a ver si he
escogido mi propio nickname; si es asi, manda el primer mensaje, si no, manda el
segundo.
Los popups para los Query/Chat(privados) y la barra de menus(Menubar)
funcionan igual.
Identificadores y Variables
Si hay variables o identificadores en el titulo de un menu, este se evaluara cada
vez que el menu aparece. Esto te permite crear un menu que varia en apariencia. Si
el menu entero es evaluado a $null el menu no aparece.
Scripts remotos
Puedes poner definiciones de menus en tu remotes usando el prefijo menu
menu status {
Server
.Links:/links
.Lusers:/lusers
.Motd:/motd
.Time:/time
}
Esta definicion agregaria un submenu a tu ventana de estado(status). La cual
no aparecera en la lista de Popus programados en la ventana de estado.
Tambien puedes especificar channel(salon), query/chat, nicklist(lista de nicks) y
menubar como el nombre del menu y te sale en esas ventana, de la misma forma
que en el ejemplo anterior de la ventana de status.
menu nicklist {
Slap
.Haddock:/me prods $1 with a haddock
}
Esto te agregaria un submenu a el menu de la lista de nombres.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

41

Tambien puedes especificar menus para ventanas especiales especificando el


nombre de la ventana.
menu @test {
dclick /command
<menuitems>
}
El "dclick" te permite especificar un comando que se activara cuando hagas
dobleclick en la ventana especial (en la lista de nombres) Tambien puedes poner $1
para referirte a un nick en especial.
Tambien puedes especificar multiples nombres de ventana para un solo
menu,por ejemplo:
menu @dogs,@cats,@goats {
<menuitems>
}
El mIRC permite tambin la creacin de popups o mens personalizados; cada
opcin que diseamos para estos mens ejecutar las rdenes, alias,
comandos,...etc. que les introduzcamos, y podr as mismo hacer uso de
identificadores, variables,...etc. Disponemos inicialmente de 5 mens que podemos
disear a muestro gusto con las opciones que deseemos:
MENUBAR: Es el cuarto(4) men de la barra principal de mens que se
encuentraen la parte superior de la pantalla del mIRC.
CHANNEL: Es el men emergente que aparece al pulsar con el botn derecho
del ratn sobre la pantalla del salon en que te ecuentras activo.
NICKNAME LIST: Es el men emergente de la lista de nicks del salon.
STATUS: Es el men emergente de la ventana de Status(Estado) del mIRC.
QUERY/CHAT Es el men emergente de la ventana de querys y de DCC chat.
Accederemos al cdigo que genera los popups desde el men Herramientas
opcin "popups". En la ventana que nos aparece tenemos a su vez una barra
superior de opciones, si pulsamos "ver" podremos elegir, de entre los 5 anteriores
aquel popup del que queremos ver su programacion. Ah podremos crearlos,
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

42

modificarlos o eliminarlos. Terminado el trabajo pulsaremos OK, y desde ese


momento ya podremos hacer uso de las modificaciones introducidas, ya que estas
quedaran grabadas.
La mejor forma de comprender lo popups es observando el cdigo de los ya
existentes, cada lnea de este cdigo suele corresponder con una opcin del men,
veamos un ejemplo:
Salones
.Entrar a #yuda_scripters: /join #yuda_scripters
.Entrar a #programacin: /join #programacin
..Elegir salon: /join #$$?="Ingresa el nombre del salon"
.Cambiar modos de salon.
.Solo ops cambian topic: /mode # +t.
.No mensajes externos: /mode # +n.
.Cambiar el Topic: /topic # $$?="Introduce nuevo topic"
Nicks: /nick $$?="Introduce nuevo nick"
Como se puede observar cada lnea describe en primer lugar el nombre de la
opcin de men con la que aparecer cuando se despliegue este. Como es sabido
cada opcin de men puede tener a su vez otras subopciones, y estas a su vez otras
tantas, y as sucesivamente; esto se especifica en el diseo del men mediante los
puntos que preceden a cada una de las lneas. Las lneas sin puntos delante son
opciones principales que aparecern nada ms desplegarse el men. Si tienen un
punto delante significar que son subopciones de las anteriores, y se desplegarn al
pulsar sobre aquella inmediatamente anterior que no tenga punto; si tienen dos
puntos sern una subopcin de la inmediatamente anterior que solo tuviese uno... y
as sucesivamente.
En virtud de lo anterior una lnea de opcin de un popup deber de tener su
nombre (el que queramos) seguido de dos puntos " :" seguido de la accin o
comando que se ejecutar al hacer click sobre esta opcin.
Si solo est el nombre, no hay dos pontos y luego un comando, es porque al
seleccionarla se desplegar un submen, as pues deber de estar seguida de otras
lneas de opciones de rango inferior , es decir, con ms puntos que ella por delante,
que sern las que se desplieguen al seleccionarla.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

43

Opcionalmente podemos poner tan solo un guin en lugar del nombre de una
opcin, esto lo nico que har ser insertar una lnea de separacin en la lista de
opciones del men.
As pues, en el ejemplo anterior, al desplegar el popup observaremos tan solo
dos opciones: Salones y Nicks. Si pulsamos la segunda podremos cambiar nuestro
nick introduciendo uno nuevo en la ventana que se nos presentar; en cambio, al
pulsar la primera se desplegarn a su vez otras cuatro opciones, separadas las dos
primeras, por una lnea horizontal, de las dos ltimas. De estas cuatro las tres
primeras ejecutarn ya una accin cada una, sin embargo la cuarta desplegar otras
tres nuevas opciones.
Este razonamiento quizs pueda parecer complejo en principio, pero con un
mnimo de prctica y observacin descubrir que domina las sutilezas de los
popups mucho antes que cualquiera de las otras reas de creacin de script para el
mIRC. Todo lo dicho para la definicin de alias es tambin vlido para construir la
definicin de opciones de mens, incluido el uso de identificadores.
Algunos identificadores (palabras especiales con el smbolo $ delante) cobran un
valor especial cuando se usan en un determinado popup; por ejemplo, el
identificador posicional $1, cuando se usa en una opcin del popup de
QUERY/CHAT, se cargar automticamente con el nick del la persona con la que
tenemos abierto el query o DCC Chat; y en el men NICKNAME LIST con el
primer nick que tengamos seleccionado en la lista.
Recuerde, para dominar los popups lo mejor es un mnimo de prctica y
observar otros que ya estn hechos, el mIRC dispone de algunos, y adems son
muchos los scripts en circulacin que nos proporcionarn excelentes ejemplos de la
creacin y ordenacin de esta excelente herramienta.
Por ultimo, recuerde que es muy importante, debido a la similitud e interralecin
que tienen, que usted haya ledo y estudiado los Alias y sus comandos. Esto le
ahorrara muchisimo tiempo y podr entender mucho mejor lo que esta ocurriendo,
sin llegar a sentir la sensacin de frustracin que provoca el nulo entendimiento de
los protocolos de programacin.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

44

Remotes
Los Remotos te permiten crear scripts que reaccionen a los eventos provenientes
del servidor IRC, como por ejemplo cuando un usuario imgresa a un salon y te
envia un mensaje. Esta herramienta es la parte mas compleja del mIRC y para
poder usarla tu debes saber de antemano como funcionan los comandos del IRC,
como crear Aliases, y como usar las Variables y los Identificadores.
Los remotos cuentan de tres secciones distintas:
1- La seccion del Usuario, donde las direcciones de los usuarios y sus niveles de
acceso se encuentran listadas. Cada usuario de tu "seccion de usuarios" puede tener
asignado uno o mas niveles. Estos niveles de acceso dictaminan a que eventos el
usuario tendra acceso.
2- La seccion Variables, donde las variables exustentes estaran listadas.
3- La seccion Script, donde se encuantra el script que tu vayas creando. Tu puedes
cargar multiples scripts que funcionan independientes unos de otros. Esto significa
que una sola accion del servidor IRC, puede dispara acciones en ino o mas scripts.
Scripts consisten en eventos que solo pueden ser activados dependiendo del nivel
de acceso que tenga el usuario. Tambien puedes incluir alias en tu script utilizando
los prefijos de alias, y tambien incluir menuen tu script usando los pefijos de menu.
Es importante que lea sobre los niveles de acceso a usuarios ya que estos son muy
importantes en los remotos. Tambien debes estudiar los comandos de los remotos,
identificadores y la lista interna de direcciones.
Todos los siguientes eventos utilizan el mismo formato general excepto los eventos
CTCP y RAWs.
Abajo encontraras una lista de los eventos mas utilizados.
Action
Ban
Chat
ChatClose

FileRcvd
FileSent
GetFail
Input

Notice
Notify ServOpen
Op
Part

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

ServerOp
SNotice
Start

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

ChatOpen
Connect
Ctcp
CtcpReply
DeOp
UserMode
Voice
ServerClose

Invite
Join
Kick
Load
MidiEnd
DeVoice
Dns
Error

45

QueryClose
QueryOpen
Quit
Raw
Send
Mode
Nick
NoSound

Text
Topic
UnBan
Unotify
Fail
Serv
Wallops
ServerMode

Note: Nunca cargues un Script que no entiendas o no sepas su funcionamiento.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

46

Variables
El uso de variables es el recurso fundamental en programacin. Podemos ver
una variable informtica como un recipiente en el que podemos depositar un valor
cualquiera, para despus hacer uso de l dentro de una instruccin, de esta forma
no ser necesario tocar la instruccin cada vez que queremos alterar el valor a
manejar, sino tan solo asignar antes un nuevo valor a la variable.
Tcnicamente una variable no es ms que un espacio de nuestra memoria RAM
que queda reservado en el momento en que se crea la variable, e identificado
temporalmente con el nombre de esta. Cada vez que asignamos un valor a la
variable el programa lo nico que hace es depositar ese valor en la direccin
reservada. Ms adelante, cuando ejecutemos una instruccin que contenga esa
variable, el programa ir a ese espacio de memoria y extraer el valor que
contenga, ponindolo en el lugar del nombre de la variable, dentro de la instruccin
en cuestin.
Por ejemplo, si en un script para mIRC hemos creado una variable llamada
%num, a la que hemos asignado el nmero 3,14159, podemos tener una instruccin
como la siguiente:
echo -a El valor asignado es: %num
Esta orden presentar en la ventana activa un mensaje que diga:
"El valor asignado es: 3,14159"
Si queremos que el valor que nos presente el mensaje sea diferente, no tenemos
ms que asignar previamente un valor distinto a la variable.
Como se ve el uso de las variables es muy sencillo. En mIRC lo nico que hace
falta es identificarlas con un nombre de nuestra eleccin y precederlo del smbolo:
%.
Pero, Como creamos las variables y les asignamos valores?. El entorno del mIRC
provee una manera muy simple de hacerlo mediante el uso de la orden /set, cuya
sintaxis es la siguiente:
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

47

set <%variable> [valor]


Por ejemplo:
set %num 3,14159

Es decir, es posible crear la variable en el mismo momento que le asignamos


un valor. Si no especificamos valor la variable se crear, pero no contendr nada
de momento; y si usamos esta orden sobre una variable que ya existe, esta recibir
el nuevo valor especificado.
En el mIRC no es necesario preocuparse de qu tipo es la informacin que
depositamos dentro de la variable, es decir, si se trata de una cadena de caracteres,
un nmero entero, o un nmero con parte entera y parte decimal. Esta distincin la
hace el programa en el momento que hagamos uso de ella; en principio todas las
variables se consideran como una simple cadena de caracteres, pero si empleamos
para manejarlas operadores aritmticos, el programa las transforma internamente
en el valor numrico que corresponde; la nica limitacin en este caso es que solo
se tendrn en cuenta los cinco primeros valores decimales, es decir, los cinco
primeros dgitos tras la coma decimal.
RECURSOS DE ASIGNACIN:
Asignar valores a una variable se puede hacer de forma directa, como hemos
visto, o de forma indirecta a travs de algn recurso del programa. Por ejemplo, si
queremos que la variable %MiNick reciba el nick que estamos utilizando en ese
momento, sin tener que especificrselo nosotros, podemos recurrir a la funcin
$me, que nos devuelve precisamente nuestro nick actual. La asignacin sera pues:
set %MiNick $me
Otro ejemplo, queremos asignar a una variable el contenido de otra variable:
set %var2 %var1
Incluso podemos hacer que el programa nos pregunte qu valor queremos que
reciba determinada variable, cuando el script llegue a ese punto; no hay mas que
hacer uso del identificador $$?, por ejemplo:
set %variable $$?="Asigna un valor a la variable:"
As mismo es posible tambin hacer que una variable reciba directamente el
resultado de operaciones aritmticas sencillas:
%x = 5 + 1 Suma
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

48

%x = 5 - %y Resta
%x = %x * 2 Producto
%x = %z / $2 Divisin
%x = $1 %
%valor Mdulo (Resto de la divisin: $1 entre %valor)
%x = 2 ^ %w Potencia
Solo es posible asignar el resultado de operaciones simples, para el uso de
operaciones ms complicada es preciso recurrir a la funcin $calc que podemos ver
en el captulo IDENTIFICADORES.
Finalmente, podemos hacer incrementos o decrecimientos automticos del valor
numrico de una variable con las rdenes:
inc <%variable> [incremento]
dec <%variable> [decremento]
Estas rdenes incrementarn o decrementarn el contenido de una variable en
una cantidad especificada. Si no se especifica cantidad el incremento o decremento
se har en la unidad. Por ejemplo:
set %valor 5
set %cifra 2
dec %valor %cifra
echo -a El valor actual es: %valor
En la pantalla aparecer el mensaje:
"El valor actual es: 3"
Si en algn momento hacemos uso de una variable que an no ha sido creada, o
bien, que no contiene ningn valor, est devolver el parmetro $null (nulo), esto
solo ser til en las comparaciones de tipo if que se estudian en su correspondiente
apartado.
NOTA: podemos consultar todas las variables existentes en un momento
determinado, as como el valor que contienen (alterndolo manualmente si lo
deseamos) desde el men Herramientas, en la opcin "Remote...", en la solapa
"Variables".
ELIMINACIN DE VARIABLES
Eventualmente es posible tambin eliminar la variable, es decir, hacer que
desaparezca la reserva de memoria que la creacin de esta supuso. La orden a este
efecto es la siguiente:
unset <%variable_1>

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

49

Es posible tambin utilizar el carcter * para eliminar grupos de variables, por


ejemplo:
unset %nom*
Esta orden eliminar todas las variables cuyo nombre comience por "nom".
Finalmente podemos, si lo deseamos, eliminar todas la variables instaladas son
la orden: unsetall

Identificadores
Los Identificadores te devuelven un valor especifico asignado con anterioridad,
por ejemplo: $time te devolvera la hora actual. Donde quiera que el mIRC
encuentre un identificador en alguno de los comandos escritos por ti, lo
reemplazara con el valor actual del identificador. Muchos Identificadores tambien
ejecutan operaciones en las cuales tu das los datos y estos arrojan el resultado.
Tambien hay Identificadores Remotos que se utilizan con los Scripts Remotos.
Un identificador muy til que se usa en combinacin con $? es $!. Este nos
permite recuperar el valor que hemos introducido en la ventana de dilogo, sin
necesidad de tenerlo que escribir de nuevo. Por ejemplo:
/MiNick {
/nick $?="Introduce tu nuevo nick"
/say Que te parece mi nuevo nick: $! ?
}
Los Identificadores que no pueden ser evaluados o que no cuentan con toda la
informacion necesari devolveran el valor $null. El valor $null puede ser utilizado
como agente de comparacion junto con el if-then-else.
Para todos los siguientes Identificadores, tu puedes agregarle mas Identificadores o
variables encerradas en parentesis (brackets).
Los Identificadores que te presentare estan listados de acuerdo a grupos de uso:
IDENTIFICADORES CUSTOMS (O A LA MEDIDA)
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

50

Un identificador custom es un alias que te regresa un valor, y puedes usar ese


alias con el prefijo de identificador
Por ejemplo, crea un alias /suma como este:
suma {
%x = $1 + $2
return %x
}
Y luego usalo en un comando:
//echo El total es: $suma(1,2)
Puedes poner la cantidad de parametros que desees a tu identificador ej.
$suma(1,2,...,N)
Un identificador interno de mIRC con el mismo nombre tendra prioridad
Puedes agregar aliases a los scripts de remotos(en un remote.ini, por ejemplo)
usando el prefijo alias y metiendo tu alias como siempre
alias suma {
%x = $1 + $2
return %x
}
Este es el mismo identificador de arriba, pero con el prefijo alias
Teclas de funcion (f1-f12)
Puedes definir las teclas de funcion para que realicen ciertos comandos, como si
fueran alias. Por ejemplo:
/F1 /say Hola!
/sF2 /query $1
/cF3 /ctcp $1 version
Los prefijos s (shift) y c (Ctrl) se refieren a la tecla de mayuscula y de control
respectivamente
Nota: Un tecla de funcion se comportara de distintas maneras dependiendo de la
ventana en que se use. Por ejemplo, si la usas en una ventana de query (privado), el
parametro $1 se refiere al nickname de el usuario seleccionado. Si estas en una
canal y la lista de nicknames esta activa entonces la tecla de funcion trabajara en
los nicknames seleccionados. Si la lista de nombres no esta activa, entonces la
lines de funcion solo trabajara en el canal.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

51

Prefijos de comando
Si estas ejecutando un comando desde la linea de comandos ( osea escribiendola en
el editbox, que es donde uno normalmente escribe ), puedes forzar a mIRC a
evaluar los identificadores en ese comando poniendo dos // en vez de una /. Por
ejemplo:
/echo Mi nickname es $me
Esto daria "Mi nickname es $me" y no evaluaria $me.
//echo Mi nickname es $me
Esto daria "Mi nickname es fulanez" si tu nickname es fulanez, claro..
El entorno del mIRC provee de una serie de identificadores o funciones que
devuelven automticamente un valor para su uso en definiciones de alias, popups y
eventos. Todos ellos estn precedidos para su identificacin por el smbolo $.
Cuando el mIRC, en la ejecucin 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 continuacin se relaciona una lista con la mayora de los identificadores que se
encuentran disponibles en el mIRC.
IDENTIFICADORES DE TIEMPO Y FECHA:
$ctime Devuelve el nmero total de segundos transcurridos desde las 0 horas de 1
de enero de 1970.
$date Devuelve la fecha actual en formato: da/mes/ao.
$day Devuelve el nombre del actual da de la semana.
$duration(n) Devuelve el nmero especificado de segundos transformado al
formato: semanas/das/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 nmero del ltimo timer activado con el comando /timer
$online Devuelve el nmero de segundos transcurridos desde que se puso a cero el
reloj contador del mIRC.
$ticks Devuelve el nmero de ticks desde que se inici el sistema operativo.
$time Devuelve la hora actual en formato horas/minutos/segundos.
$timer(0) Devuelve el nmero de timers activos en el momento actual.
$timer(n) Devuelve todas las propiedades de timer cuyo nmero se especifica, n:
comando, tiempo, repeticiones, retardo y tipo.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

52

$timer(n).com Devuelve el comando asociado al timer especificado, n.


$timer(n).type Devuelve el status del timer especificado, n: online/offline
$timer(n) Devuelve el id del timer que se encuentra primero en la lista de timers
$timestamp Devuelve el timer actual en formato: [xx:xx]
$timezone Devuelve tu actual hora (de tu Zona Horaria) expresada en segundos.
Para un ambiente de 16bit la devolucion dependera del ambiente de la variable TZ.

IDENTIFICADORES DE NMEROS Y TEXTOS


$abs(n) Devuelve el valor absoluto de un nmero (elimina el signo), por ejemplo :
$abs(5) Devuelve el numero 5
$abs(-1) Devuelve el numero 1 sin signo
$asc(C) Devuelve el nmero ASCII del carcter C.
$asc(A) devuelve el numero 65
$asc(*) Devuelve el numero 42
$calc(operaciones) Devuelve el resultado de las operaciones especificadas. Por
ejemplo: $calc(3.14159 * (2 ^ %x % 3) - ($ticks / (10000 + 1)))
$chr(n) Devuelve el carcter ASCII correspondiente al nmero especificado. Por
ejemplo: $chr(65) Devolver el carcter A
$count(cadena_1,cadena_2) Devuelve el nmero 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 nmero. Por ejemplo: $int(3,14159)
Devolver: 3
$left(cadena,N) Devuelve los N primeros caracteres de una cadena de izquierda a
derecha, por ejemplo: $left(goodbye,4) Devolver: good
$right(cadena,N) Devuelve los N ltimos caracteres de una cadena de derecha a
izquierda, por ejemplo: $right(othello,5) Devolver: hello
$len(cadena) Devuelve el nmero de caracteres de una cadena.
$lower(texto) Devuelve todos los caracteres de una cadena convertidos a
minsculas, por ejemplo: $lower(HOLA) Devolver: "hola"
$mid(cadena,posicin,nmero) Devuelve el nmero especificado de caracteres de
una cadena desde una posicin dada. Por ejemplo: $mid(othello,3,4) Devolver:
"hell"
$pos(cadena,sub_cadena) Devuelve la posicin en que una sub_cadena comienza
dentro de una cadena. Por ejemplo: $pos(hello,el) Devolver: 2 o por ejemplo:
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

53

$pos(hello,la) Devolver: $null, ya que no se encuentra la en lo dado. Lo que se


encuentra despues de la coma es lo que se pide identificar.
$rand(v1,v2) Devuelve un nmero o letra aleatorio comprendido en el rango [v1v2] . Por ejemplo: $rand(1,4) Devolver cualquier nmero 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 (mas claro hecharle agua!!)
$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(nmero,D) Devuelve un nmero especificado, con solo los dos(2)
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", bueno para flood!!!!
$longip Convierte una direccion IP en un valor largo o viceversa. Por ejemplo:
$longip(158.152.50.239) Entregara 2660774639, o $longip(2660774639) nos dara
158.152.50.239
$upper(text) Devuelve el texto en mayusculas, por ejemplo: $upper(hello)
mostrara HELLO
IDENTIFICADORES DE ARCHIVOS(FICHEROS) Y DIRECTORIOS
$alias(N) Devuelve el nombre del N 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 nmero de ficheros de alias cargados en ese momento.
$alias(2) Devuelve el nombre del segundo fichero de alias cargado en ese
momento.
$alias(fiambre.txt) Devuelve $null si el fichero de alias no est cargado, o
"fiambre.txt" si se encuentra cargado.
$dir y $file Presentan un cuadro de dialogo desde el que permiten seleccionar un
fichero para ser utilizado dentro de la especificacin 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
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

54

ambos casos se puede especificar mediante el comodn * qu tipos de ficheros se


desea que aparezcan. El formato de ambos es:
$dir[="Texto"] <path y nombre de fichero>
$file[="Texto"] <path y nombre de fichero>
Por ejemplo, podemos definir una opcin de popups que reproduzca los fichero
de tipo midi de un directorio llamado "midis":
Msica/splay $file="Selecciona la msica" 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 seleccin.
$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, nmero) 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 nmero de orden indicado. Si
el nmero 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 dilogo DCC
options, como destino por defecto para las recepciones DCC.
$getdir(tipo_fichero) Devuelve el directorio que tengamos especificado en el
dilogo DCC options, como destino para las recepciones DCC de ficheros del tipo
especificado. Por ejemplo: $getdir(*.txt)
$lines(filename) Devuelve el nmero de lneas que tiene un fichero de texto.
$lines(c:\irc\kicks.txt) Devolver el nmero de filas del fichero: c:\irc\kicks.txt
$lof(fichero) Devuelve el tamao en bytes de un fichero especificado.
$logdir Devuelve el directorio especificado en la seccin Loggin del dilogo
Archivo/Opciones.
$mididir Devuelve el directorio especificado para los ficheros Midi en la seccin
Sound Requests del dilogo Archivo/Opciones.
$nofile(fichero) Devuelve el path(directorio) 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.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

55

$read Lee una lnea de un fichero y la inserta dentro del alias en que se est
utilizando. Su formato es: $read [-l] [-stexto] <fichero> Ejemplos:
/say $read c:\funny.txt Mostrara una lnea aleatoria del fichero c:\funny.txt.
/say $read -l24 c:\funny.txt Imprimir la lnea 24 del fichero.
/pateo /kick # $1 $read kicks.txt Har un kick del nick especificado dando como
razn una lnea elegida al azar del fichero "kicks.txt"
/say $read -smirc info.txt Busca una lnea dentro del fichero "info.txt" que
comience por "mirc", e imprime en pantalla el resto de la lnea.
NOTA: si la primera lnea del fichero es un nmero, el programa entender que
este representa el nmero total de lneas del fichero, esto acelerar
considerablemente la ejecucin del $read.
$readini Lee informacin de un fichero .ini e inserta la fila correspondiente dentro
del alias. El formato es:$readini <fichero> <seccin> <item> Por ejemplo:
/echo $readini mirc.ini mIRC nick Presentar nuestro nick actual tomndolo del
fichero mirc.ini
$script(N/fichero) Devuelve el nombre del N fichero de script cargado. Si se
especifica un nombre de fichero de script en lugar de un nmero, devolver este
mismo nombre, o $null si dicho fichero no se encuentra cargado. Ejemplos:
$script(0) Devuelve el nmero de ficheros de script cargados.
$script(2) Devuelve el nombre del segundo fichero de script.
$script(fiambre.txt) Devuelve $null si el fichero no est cargado, o fiambre.txt si se
encuentra cargado.
$wavedir Devuelve el directorio especificado en la seccin Sound Requests del
dilogo Archivo/Oopciones.
IDENTIFICADORES DE NICKS Y DIRECCIONES:
$address(nick,tipo) Busca en la lista interna de direcciones la direccin 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 salones en que nos encontramos nosotros junto
al nick especificado. Por ejemplo:
$comchan(nick,0) Devuelve todos los salones en que estamos nosotros y ese nick.
$comchan(nick,1) Da el primer salon en que nos encontramos junto a ese nick
$ial(mscara,n) Devuelve direcciones de la lista interna de direcciones.
Propiedades: nick, user, host, addr
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

56

Ejemplos:
$ial(*!*@*.demon.co.uk,0) Da todas las direcciones que concuerdan con la
mscara especificada.
$ial(*!*@*.demon.co.uk,3) Da la tercera direccin de la lista que concuerda con la
mscara especificada.
$ial(*!*@*.com,0).nick Devuelve el nick que concuerda con la mscara.
$ial(*!*@*.com,4).user Devuelve el User ID que concuerda con la mscara.
Para escanear todas las direcciones de la lista interna se puede usar: $ial(*,n).
$ialchan(mscara,#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
direccin especificada y devuelve su nivel de acceso.
$link(N) Devuelve el N server de las lista de servers enlazados en la actual red de
IRC. Propiedades: addr, ip, level, info Ejemplos:
$link(0) Devuelve el nmero de servers enlazados
$link(1) Devuelve el primer server de la lista de links
$mask(direccin,tipo) Devuelve la mscara correspondiente al tipo especificado,
para una direccin 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 ID@host.dominio

1: *!* User ID@host.dominio

2: *!*@host.dominio

3: *!* User ID@*.dominio

4: *!*@*.dominio

5: nick! User ID@host.dominio

6: nick!* User ID@host.dominio

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.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

57

$nick(#canal,N) Devuelve el N nick de la lista de nicks del salon especificado. Si


ponemos 0 devolver en nmero de ocupantes del salon.
$nopnick(#canal,N) Devuelve el N nick de la lista de nicks que no tiene estatus de
operador del salon especificado. Si ponemos 0 devolver en nmero de operadores
del salon.
$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 salon especificado
$nvnick(#canal,N) Igual a los anteriores pero referido a los nicks que no tengan
voz dentro del salon especificado.
$opnick(#canal,N) Igual los anteriores, pero referido solo a los nicks que tengan
estatus de operadores en el salon.
$snicks Devuelve en una lnea, 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 informacin sobre los salones en que nos encontramos.
Propiedades: topic, mode, key, limit
Si se especifica un numero en vez de un salon, devuelve el nombre de ese salon.
$chan(0) Devuelve el nmero de salones en que nos encontramos.
$chan(2) Devuelve el nombre del segundo salon en que nos encontramos.
$chan(2).key Devuelve la clave del segundo salon en que nos encontramos.
Tambin podemos especificar un nombre de salon, pero solo devuelve informacin
sobre este si nos encontramos dentro de l.
$chan(#mIRC).mode Devuelve los modos del salon #mirc.
$chat(N/nick) Devuelve informacin 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) Informa sobre las ventanas abiertas del servidor de ficheros.
Propiedades: ip, status, cd (directorio abierto)
$get(N/nick) Devuelve informacin sobre los DCC get en curso (recepcin de
ficheros). Propiedades: ip, status, file, size, rcvd, cps, pc
Ejemplos:
$get(0) Devuelve el nmero de dcc gets en curso.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

58

$get(2) Devuelve el nick que enva el segundo DCC get activo


$get(2).rcvd Devuelve el nmero de bytes recibidos hasta el momento en el
segundo dcc get.
$get(2).cps Devuelve el nmero de caracteres por segundo que se estn recibiendo
en la segunda transmisin de ficheros
$get(3).pc Devuelve el porcentaje transmitido en la tercera recepcin en curso.
$query(N/nick) Da el nick o direccin del N query abierto.Propiedad: address
Ejemplos:
$query(0) Devuelve el nmero de querys abiertos.
$query(2) Devuelve el nick del segundo query.
$query(1).address Devuelve la direccin del primer query.
$send(N/nick) Devuelve informacin sobre los envos de ficheros en curso (DCC
sends).
Propiedades: ip, status, file, size, sent, cps, pc Ejemplos:
$send(0) Devuelve el nmero de ficheros que se estn enviando.
$send(2) Devuelve el nick de destino del segundo envo.
$send(1).sent Devuelve el nmero de bytes enviados en el primer DCC en curso.
$send(3).pc Devuelve el porcentaje transferido en el tercer envo 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 away o no.
$cb Devuelve los primeros 256 caracteres contenidos en el portapapeles.
$cr Devuelve el carcter de retorno de carro. Es equivalente a poner: $chr(13)
$editbox(window) Da texto contenido en caja de edicin de determinada ventana.
$email Devuelve la direccin de mail especificada en la correspondiente casilla del
dialogo Archivo/Opciones.
$host Devuelve el nombre del actual Local host.
$ignore(N) Devuelve la direccin del N elemento de la lista de ignores.
Propiedades: type
$ignore(0) Devuelve el nmero de elementos incluidos en la lista de ignores.
$ignore(1) Devuelve la direccin 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 direccin IP.
$lf Devuelve el carcter de salto de lnea. Equivale a: $chr(10).
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

59

$port Devuelve el nmero 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 direccin del N server de la lista de servers de
Archivos/Opciones/IRC Server.
Propiedades: desc (descripcin), port (puerto), group (grupo)
$server(0) Devuelve el nmero de servers de la lista.
$server(2) Devuelve la direccin del segundo server.
$server(2).desc Devuelve la descripcin del segundo server.
$server(3).port Devuelve el puerto de conexin especificado para el tercer server.
$url Devuelve la direccin URL de la pgina actualmente cargada en el navegador.
Ejemplo: /say Estoy viendo la pgina: $url ... se las recomiendo!
$usermode Devuelve nuestros actuales modos de usuario.
$version Devuelve la versin del mIRC en uso.
$+ Este identificador insertado en una lnea de instruccin 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 parmetros o palabras
individuales de una lnea de comando. Adems es posible especificar $n- para
referirse al parmetro o palabra de la posicin 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 direccin de un usuario asociado a un evento, en la forma:
User_ID@host.dominio.
$fulladdress Devuelve la direccin 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 nmero 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(mscara) Busca el la lista interna de usuarios y devuelve la direccin
del primer usuario que corresponde con la mscara 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.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

60

EVENTOS Estndar
INTRODUCCIN
Se conocen como EVENTOS, en informtica, todos aquellos sucesos que se
producen a lo largo de una sesin de trabajo de un programa, y que ste es capaz
de detectar y controlar. La programacin orientada a eventos es aquella en la que
podemos definir previamente las acciones que el programa debe de emprender en
el momento en que se produzca un evento concreto. Es decir, predisponemos al
programa a que preste especial atencin a algunos sucesos, y le obligamos a que
analice dichos eventos a fin de determinar si se renen las circunstancias que
hemos establecido, y de ser as, a ejecutar las acciones que para ese caso le hemos
programado.
El mIRC es un programa altamente configurble y personalizble a travs de la
definicin de Alias, Popups, y Remotes. Dentro de este ltimo grupo provee una de
sus herramientas ms potentes: la posibilidad de programar acciones orientadas a
un grupo de eventos propios de una sesin de IRC; es decir, es posible programar
de modo sencillo acciones de cierta complejidad como respuesta a algunas
situaciones.
Existen tres tipos de eventos en el mIRC, los que llamaremos estndar, que son
los que se describen aqu, y los eventos CTCP que describir en un captulo
aparte, y los eventos RAW que se explicarn en el apartado Nmeros Raw.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

61

UN EJEMPLO DEL USO DE EVENTOS


Por ejemplo, es muy sencillo hacer que el programa detecte cada vez que, en
cualquier canal en el que estemos, alguien escriba nuestro nick (supongamos que
es PorotoMan), y en consecuencia, si lo deseamos, comunicar privadamente a esa
persona que no estamos prestando atencin en ese momento. No habra ms que
recurrir al evento "onTEXT", quizs el ms importante de todos.
Para esto debemos de ir al men "Herramientas" que se encuentra en la barra de
mens de la parte superior de la pantalla y pulsar la opcin "REMOTE...". Nos
aparece un cuadro con una gran ventana de texto y una nueva barra de mens en la
parte superior. Vayamos al men "VER" y seleccionemos la opcin "events"; ya
podemos escribir en el cuadro de texto nuestras rdenes para el control de eventos
(hgalo a ser posible al principio de esta caja de texto). Escribiremos la siguiente
lnea:
on 1:TEXT:Somatic:#: notice $nick Perdona $nick no estoy prestando atencin!!!.
Pulsamos el botn "OK" y trabajo concluido. Desde este momento, si Choclo
menciona el nombre de PorotoMan recibir un mensaje que solo podr ver l
(notice), en el que le decimos: "Perdona Choclo no estoy prestando atencin!!!".
Al margen de la sintaxis de la lnea, que veremos ms adelante, la objecin es
evidente: Y que pasa si S estamos prestando atencin? tenemos que ir otra ver a
la ventana de edicin de eventos y borrar lo que pusimos?. Bueno, es una
posibilidad, pero afortunadamente tambin tenemos la facilidad de hacer que la
accin de los eventos que deseemos se active y desactive a nuestra voluntad.
Vayamos de nuevo a la ventana de edicin de eventos y escribamos lo siguiente en
las lneas anterior y posterior a la que escribimos antes: #ausente off y #ausente
end. El bloque total (grupo) quedar de la siguiente forma:
#ausente off
on 1:TEXT:PorotoMan:#:/notice $nick Perdona $nick no estoy prestando
atencin!!!.
#ausente end
De esta forma podemos crear bloques o grupos de eventos con tantas lneas
como deseemos en su interior. Para activar o desactivar su efecto debemos de
incluir las instrucciones: .enable #ausente y .disable #ausente dentro de algn alias
o de un men (si esto le causa problemas ahora es el momento que estudiar a fondo
las secciones de aliases y popups del mIRC ). (el punto delante de las clusulas
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

62

enable y disable tiene el nico fin de inhibir el mensaje que el programa


presenta en pantalla anunciando la activacin o desactivacin del grupo).
Pruebe los efectos de la programacin de eventos aplicando los distintos
comandos del IRC y del mIRC en su interior (por motivos que desconozco y me
superan algunos de ellos no funcionan en este contexto, como por ejemplo /me,
/ame, /say, ... etc). Tambin puede hacer uso de alias prviamenre definidos, o de
la estructura IF-ELSE, pero, en cualquier caso, si desea incluir varias lneas de
rdenes vinculadas a un mismo evento use siempre el separador de comandos (el
carcter "|", que se obtiene pulsando las teclas ALTGR y 1 o Alt 124).

GENERALIDADES DE LA SINTAXIS DE EVENTOS


Como ya se ha podido observar en el ejemplo anterior, lo que hemos dado en
llamar un la lnea de evento se forma mediante una cadena de caracteres en la que
los distintos campos de informacin estn separados por el smbolo de los dos
puntos. Los campos son los siguientes:
on <nivel>:<EVENTO>:<texto>:<lugar>:<comando/os>
En el primer campo es necesario especificar en nivel de acceso remoto que ese
usuario tiene a nuestro sistema. Este es un tema algo complejo, basta saber que este
nivel es un nmero que marca la capacidad de acceso que cada usuario tiene para
ejecutar comandos del IRC de forma remota dentro de nuestra computadora. No se
alarme, nadie tendr un nivel que usted no le haya concedido previamente, y
este para los comandos que usted especifique. Para comprobar quien tiene nivel
de acceso remoto a su sistema no tiene ms que mirar en la solapa de
"USUARIOS" de la misma ventana desde donde introducimos los eventos, ah
puede aadir o borrar lo que desee. En principio, y para todos los efectos de este
documento, podemos considerar el nivel de acceso 1 que es el que otorga el
programa por defecto a todos lo usuarios; por tanto, en este caso el primer campo
sera: on 1.
Tambin es posible anteponer el smbolo @ antes del nmero de nivel, si
hacemos esto, la definicin del evento no se ejecutar nada ms que en caso de que
dispongamos del estatus de operador del canal.
El segundo campo es el identificador del evento que estamos configurando, en el
ejemplo anterior era TEXT, pero descubrir que hay otros muchos.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

63

El tercer campo es el "texto", este no tiene sentido en todos los eventos, gran
parte de ellos no estn vinculados a texto alguno, y simplemente se omite este
campo.
El cuarto campo es "lugar", es decir, el salon, privado...etc. donde el mIRC
vigilar la concurrencia del evento, podemos especificar de este modo que
determinado evento produzca las acciones especificadas solo si se da en un
determinado lugar. Como en el campo anterior no siempre tiene sentido y por tanto
se omite en algunas definiciones de eventos.
El ltimo campo es el ms grande, incluye el comando o comandos, alias, etc...
que se ejecutarn en caso de que se produzca el evento y las circunstancias
especificadas. En este campo se pueden concatenar varios comandos utilizando el
smbolo "entubador": "|" (no olvide dejar espacios en blanco a ambos lados del
entubador).
Para aumentar aun ms la potencia de la configuracin de eventos, estos admiten
el uso de funciones, son todos aquellos identificadores que comienzan por el
smbolo $ (la referencia del mIRC los llama parmetros, el tema es mas bien
terminolgico, yo prefiero verlas como funciones puesto que junto con las internas
del programa el mIRC permite definir otras propias, con una sintaxis muy similar a
la del lenguaje Cobol(por lo menos eso es lo que me dijo Jose)). No se muestra en
este "Manual" una lista exhaustiva de dichas funciones, puesto que muchas de ellas
son propias de un solo evento concreto, mientras que otros no las admiten. No
obstante, si presta atencin a los ejemplos ir viendo la forma y utilidad de la
mayora de ellas, en los lugares en los que son efectivas; el resto lo debe de aportar
la experiencia personal. (las funciones debern de tener siempre espacios en blanco
a ambos lados de su nombre).
Es perfectamente posible, as mismo, el empleo de variables y estructuras IF-ELSE
dentro de las definiciones de eventos, encontrar numerosos ejemplos de este uso
en los scripts para mIRC que circulan a libre disposicin en la WWW y el IRC.

Evento ON TEXT
Este evento se produce al recibirse un mensaje especificado, bien en un privado, o
bien en un salon en el que nos encontramos.
Formato: on <level>:TEXT:<texto>:<*><?><#[,#]>:<comandos>
Ejemplo: on 1:TEXT:*ayuda*:*:/msg $nick Cual es el problema?
El texto del mensaje que deseamos que produzca el evento se puede especificar de
varias maneras:
*
El evento se producir ante cualquier texto.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

&
Texto
Texto*
*Texto
*Texto*

64

El evento se producir ante cualquier palabra.


El evento se produce anta una palabra concreta y no otra.
Se produce ante una cadena de caracteres que comience por el
texto especificado.
Se produce ante una cadena de caracteres que finalice por el texto
especificado.
El evento se produce si el texto contiene la cadena especificada,
sea cual sea su posicin.

Se puede especificar el lugar donde se controlar el evento de la siguiente forma:


Controlara la produccin del evento dentro de un query o
de un DCC chat
Controlara la produccin del evento dentro de un salon
#
cualquiera en el que nos encontremos
#canal_1,#canal_2,. Controlar la produccin del evento dentro de un salon
..
especificado.
*
Controla el evento en un privado o salon indistintamente.
?

Ejemplos: on 1:TEXT:Hola*:#:/msg $chan Bienvenido al salon $chan $nick $+ !


Esta instruccin detectar cuando alguien diga la palabra "Hola" en cualquier
salon que nos encontremos, y automticamente le dar la bienvenida al salon en
cuestin. El identificador $+ elimina los espacios en blanco que tiene a ambos
lados, de ese modo podemos hacer que el nick de la persona que ha dicho "Hola"
aparezca en nuestra respuesta seguido del smbolo "!", si escribimos directamente
este smbolo a continuacin de $nick este no ser reconocido como un
identificador del nick del usuario, sino que aparecer literalmente como est en la
orden.
Tambin es posible emplear variables para dar ms flexibilidad al formato del
evento, por ejemplo:
on 1:TEXT:%text:%salon:/msg $nick T has escrito %text en el salon: %channel
Este ejemplo trabajar con los valores previamente guardados en las variables
%text, y %salon.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

65

Nota: Este evento se producir solo ante textos de otros usuarios, los de usted no
desencadenarn el evento.

Eventos ON ACTION y ON NOTICE


Tienen el mismo formato que on TEXT, y se producen a partir de una accin o
de una noticia respectivamente. Recordemos que una noticia se produce cuando
alguien nos enva un mensaje con el comando /notice, y una accin cuando alguien
efecta una accin de control dentro del canal; por ejemplo:
on 1:ACTION:*set mode*:#:/msg $chan Ya estamos jugando con los modos!
Esta orden detectar cualquier accin que contenga la cadena "Set mode", y emitir
un mensaje al canal en que se produce.
on 1:NOTICE:*:?:/msg $nick Estoy ocupado, espera un momento!
Esta orden detecta cualquier /notice recibido estando en un privado, y responde
con otro /notice al autor.

Eventos ON BAN y ON UNBAN


Estos eventos se producirn cuando un usuario sea baneado o desbaneado en el
canal.
Formato: on <level>:BAN:<#[,#]>:<comandos>
Ejemplos:
on 1:BAN:#:/msg $nick Has sido baneado de: $chan
on 9:BAN:#:/mode $chan -o $nick | /mode $chan -b $banmask
El segundo ejemplo es una accin mltiple que quita el estatus de operador al
usuario que puso el ban, y elimina este cuando el usuario baneado tiene nivel 9 o
superior en la lista de usuarios de nuestro programa (la funcin $banmask devuelve
la mscara de baneo que fue empleada, y se usa, en este caso, para eliminar dicho
baneo).
on 1:UNBAN:#:/msg $bnick Has sido desbaneado por $nick
Observe en este ejemplo el uso de la funcin $bnick. Esta devuelve el nick del
usuario baneado o desbaneado, pero solo en caso de que dicho nick este incluido
dentro de la mscara del baneo. En caso contrario $bnick = $null (nulo).
Es posible tener en cuenta en la sintaxis de la instruccin los niveles del
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

66

baneador y del baneado. A este fin se puede preceder el nmero de l nivel de los
signos: <,>,<=,=>,<>, =. Por ejemplo:
on >=2:BAN:#:/msg $chan $nick baneado $banmask (legal)
En esta situacin, si el nivel del baneador es mayor o igual que el del usuario
baneado, se comunica que este es un ban legal???? (como se podra comunicar
cualquier otra cosa)
Recuerde, esta sintaxis compara los niveles de baneado y baneador, nunca que
este tenga o no nivel superior o igual a 2.
Nota: Estos eventos solo operan cuando el server de IRC proporciona los nicks de
baneador y baneado, y no cuando da sus direcciones.
Observe el siguiente ejemplo:
on 1:BAN:#: {
if ( $banmask iswm $address( $me ,0)) || ( $me isin $banmask ) { echo -s $nick
te ha
baneado con esta mscara: $banmask }
if ( $me isop $chan ) { mode $chan -ob+b $nick $banmask $address($nick,2) }
}
Esta rutina se inicia cada vez que se produce una accin de baneo en un salon en
que nos encontramos. En primer lugar comprueba que la mscara del ban coincida
con la nuestra o bien tiene incluido nuestro nick, en tal caso emite un mensaje a la
ventana de estatus especificando la persona que lo ha realizado y la mscara con la
que se ha hecho el ban, a continuacin comprueba si somos operadores del canal, y
en tal caso retira el estatus de operador a quien nos ha baneado, y le banea a su vez.

Eventos ON CHAT y ON SERV


Los eventos on CHAT y on SERV se producen cada vez que es enviado un
mensaje la una ventana de DCC chat, o a un Fserve respectivamente. Es similar al
evento on TEXT, el cual no funciona en un chat ni en un servidor de ficheros.
Formato: on <level>:<CHAT/SERV>:<texto>:<comandos>
Ejemplo: on 1:CHAT:*ayuda*:/msg $nick Cual es el problema?
La especificacin del texto que producir el evento se hace de la misma forma que
en ON TEXT.

Eventos ON CHATOPEN y ON CHATCLOSE

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

67

Estos eventos se producen al abrirse o cerrarse (respectivamente), una sesin de


DCC chat.
Formato: on <level>:CHATOPEN:<comandos>
Ejemplo: on 1:CHATOPEN:/msg =$nick Bienvenido!
Ejemplos:
on 1:CHATOPEN:/msg =$nick Hola, estoy contigo en un momento.
Esta instruccin enva una frase al DCC chat cuando este se abre por primera
vez. El uso del signo "igual" delante de $nick es necesario para que el mensaje se
dirija a la misma ventana del DCC chat, y no a una ventana privada aparte.
on 1:CHATCLOSE:/notice $nick fin de la discusin!
Esto se produce al cerrar la ventana del DCC chat.

Eventos ON SERVOPEN y ON SERVCLOSE


Estos eventos se producen al abrirse o cerrarse (respectivamente), una sesin del
FSERVE .
Formato: on <level>:CHATOPEN:<comandos>
Ejemplo: on 1:CHATOPEN:/msg =$nick Bienvenido!

Eventos ON CONNECT y ON DISCONNECT


El evento on CONNECT se produce cuando mIRC conecta al server de IRC,
despus de visualizar el MOTD (mensaje del da del servidor).
Formato: on <level>:CONNECT:<comandos>
Ejemplo: on 1:CONNECT:/join #ayuda_irc
on DISCONNECT es otro evento con el mismo formato, que se produce al
desconectarse del server.
Ejemplo:
on 1:CONNECT:/echo Conectado a $server a las $time Tu nick es: $nick

Evento ON CTCPREPLY
Se produce cuando otro usuario responde a una pregunta CTCP por parte de usted.
Formato: on <level>:CTCPREPLY:<texto>:<comandos>
Ejemplo: on 1:CTCPREPLY:VERSION*:/echo $nick est usando IRC cliente:
$1Ver evento on TEXT para los formatos de texto aceptados.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

68

Ejemplo:
on 1:CTCPREPLY:PING*:/echo -s $nick ha respondido al ping!

Eventos ON OP y ON DEOP
Se producen cuando un usuario del canal es opeado o deopeado.
Formato: on <level>:OP:<#[,#]>:<comandos>
Ejemplo: on 1:OP:#ayuda_irc:/msg $nick No abuses del estatus!
El evento on SERVEROP es exactamente igual, y se produce cuando un usuario es
opeado por el server. Ejemplos:
on 9:OP:#:/mode $chan -o $opnick | /msg $nick no opees a esa persona!
En este ejemplo el evento se produce cuando es opeado un usuario de nivel de
acceso 9 en nuestra seccin de remotes. $opnick devuelve el nick de la persona
opeada o deopeada, y $nick el de la que lo ope o deope.
on 1:DEOP:#ayuda_irc:/mode $chan +o $opnick
Con esta orden devolvemos el op a cualquier persona que sea deopeada en el
canal #ayuda_irc.
Es posible tener en cuenta en la sintaxis de la instruccin los niveles del opeador
y del opeado. A este fin se puede preceder el nmero de nivel de los signos:
<,>,<=,=>,<>, =. Por ejemplo:
on >=2:OP:#mIRC:/msg $chan $nick opeado (legal)
En esta situacin, si el nivel del opeador es mayor o igual que el del usuario
opeado, se comunica que este es un op legal???????(como se podra comunicar
cualquier otra cosa)
Recuerde, esta sintaxis compara los niveles de opeado y opeador, nunca que este
tenga o no nivel superior o igual a 2.
Nota: Estos eventos solo operan cuando el server de IRC proporciona los nicks de
opeador y opeado, y no su cuando da sus direcciones.

Eventos ON VOICE y ON DEVOICE


Se produce cuando un usuario recibe o es privado de voz en un salon moderado
en que nos encontramos.
Formato: on <level>:VOICE:<#[,#]>:<comandos>
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

69

Ejemplo: on 1:VOICE:#:/msg $vnick ya tienes voz en: $chan


Ejemplos:
on 9:VOICE:#:/mode $chan -v $vnick | /msg $nick No le des Voz a esa persona!
Esta orden se ejecuta cuando el que recibe voz tiene nivel 9 o superior.
on 1:DEVOICE:#mIRC:/mode $chan +v $vnick
Devuelve la voz al que se le quite en el canal.
Son aplicables tambin los prefijos de comparacin de niveles descritos en on
BAN y on OP.

Evento ON DNS
Se produce cuando hacemos un requerimiento DNS (comando /dns).
Formato: on <level>:DNS:<commandos>
Ejemplo: on 1:DNS:/notice $me resuelto: $raddress
Ejemplo:
on 1:DNS:/echo $nick ip address: $iaddress named address: $naddress resolved
address: $raddress

Evento ON ERROR
Se produce cuando el server enva un mensaje de error, por ejemplo, en una
desconexin.
Formato: on <level>:ERROR:<texto>:<commandos>
Ejemplo: on 1:ERROR:*server full*:/echo Has salido del server!
Ver el evento on TEXT para el formato del texto.
Ejemplos: on 1:ERROR:*banned*:/echo Has sido baneado de este server!

ON FILESEND y ON FILERCVD. ON SENDFAIL y ON GETFAIL


Se producen al completarse un dcc send o un dcc get (envio o recepcin de
ficheros reapectivamente).
Formato: on <level>:FILESENT:<filename[,filename]>:<comandos>
Ejemplo: on 1:FILESENT:*.txt:/msg $nick ah te mando: $filename !!
Los eventos on SENDFAIL y on GETFAIL se producen cuando un dcc send o un
dcc get son fallidos.
Ejemplos: on 1:FILESENT:*.txt,*.ini:/echo Enviado $filename a $nick $address
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

70

Se produce cuando enviamos un fichero .TXT o INI. $filename devuelve el


nombre del fichero enviado.
on 1:FILERCVD:*.txt,*.ini:/echo Recibido $filename de $nick | /run notepad.exe
$filename
Esta orden avisa cuando hemos recibido ficheros .TXT e .INI, y abre el bloc de
notas para ver su contenido.
on 1:SENDFAIL:*.txt:/echo Ha fallado el envo de $filename a $nick!!

Evento ON INPUT
Se produce cuando introducimos texto en una caja de texto y pulsamos INTRO.
Formato: on <level>:INPUT:<commandos>
Ejemplo: on 1:INPUT:/echo Texto introducido: $1La funcin $1- devuelve en este caso toda la cadena de texto introducida.

Evento ON INVITE
Se produce cuando un usuario nos invita a un canal.
Formato: on <level>:INVITE:<#[,#]>:<comandos>
Ejemplo: on 1:INVITE:#mIRC:/join $chan

Eventos ON JOIN y ON PART


Se producen al entrar o salir un usuario de un canal en que nos encontramos
Formato: on <level>:JOIN:<#[,#]>:<comandos>
Ejemplo: on 1:JOIN:#:/msg $nick Hola!

Evento ON KICK
Se produce cuando un usuario es expulsado de un canal en el que nos encontramos.
Formato: on <level>:KICK:<#[,#]>:<comandos>
Ejemplo: on 5:KICK:#:/invite $knick $chan | /msg $nick Hey, $knick ese es mi
amigo!
Es aplicable tambin aqu la regla de comparacin de niveles de los nicks descrita
el los eventos on BAN y on OP.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

71

Eventos ON LOAD y ON START


Estos eventos se producen cuando un fichero de script es cargado o descargado.
Formato: on <level>:LOAD:<commandos>
Ejemplo: on 1:LOAD:/echo mIRC Script cargado!

Eventos ON MIDIEND y ON WAVEEND


Se produce cuando el mIRC termina la reproduccin de un fichero MIDI o WAV
Formato: on <level>:MIDIEND:<commandos>
Ejemplo: on 1:MIDIEND:/splay jazzy.mid
Este evento no tiene funciones asociadas. No se producir si la reproduccin se
detiene a causa de una interrupcin, solo lo hace cuando la reproduccin es
completada.

Evento ON MODE
Se produce cuando un usuario cambia los modos del salon (pero no los de usuario).
Formato: on <level>:MODE:<#[,#]>:<comandos>
Ejemplo: on 1:MODE:#ayuda_IRC:/notice $me $nick Cambia modos de $chan
a: $1On SERVERMODE es otro evento que se produce cuando los modos son
cambiados por el servidor.
Ejemplo: on @1:MODE:#:/notice $me $nick changed $chan mode to $1Esta instruccin se produce cuando alguien cambia los modos del salon teniendo
nosotros tambin el estatus de operador.

Evento ON NICK
Se produce cuando un usuario cambia de nick dentro del canal.
Formato: on <level>:NICK:<commandos>
Ejemplo: on 1:NICK:/msg $nick Hi $newnick!
$nick devuelve el nick antiguo; $newnick el nuevo.

Evento ON NOSOUND
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

72

Este evento se produce cuando alguien activa un sonido en el canal y el mIRC no


encuentra el fichero midi o wav en nuestros directorios de sonidos, los
especificados en el dialogo Archivo/Opciones/Sonidos.
Formato: on <level>:NOSOUND:<comandos>
Ejemplo: on 1:NOSOUND:/notice $nick No tengo el fichero $filename

Eventos ON NOTIFY y UNOTIFY


Se producen al entrar o salir del IRC un usuario que se encuentra en nuestra lista
de notificaciones.
Formato: on <level>:NOTIFY:<commandos>
Ejemplos:
on 1:NOTIFY:/msg $nick Hola nick, ya te veo venir!!!
on 1:NOTIFY:/notice $me $nick se va del IRC *sniff*

Eventos ON QUERYOPEN y ON QUERYCLOSE


Se producen respectivamente al abrirse una ventana de query.
Formato: on <level>:QUERYOPEN:<comandos>
Ejemplo:
on 1:QUERYOPEN:/echo -s Abierto query con: $nick $address | / msg $nick
Hola $nick

Evento ON QUIT
Se produce cuando un usuario que est en nuestro salon sale del IRC.
Formato: on <level>:QUIT:<commandos>
Ejemplos:
on 1:QUIT:/notice $me $nick sale del IRC con el mensaje: $1- on 1:QUIT:/msg
$chan Nos vemos $nick Te esperamos de regreso pronto

Evento ON SNOTICE
Se produce cuando recibimos una noticia del server.
Formato: on <level>:SNOTICE:<texto>:<commandos>
Ejemplo: on 1:SNOTICE:*client connecting*:/halt
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

73

Para una explicacin del formato del texto, ver el evento on TEXT.
Ejemplo: on 1:SNOTICE:*split*:/splay hack.wav
Activa un fichero de sonido en caso de una noticia del server anunciando un split.

Evento ON TOPIC
Se produce cuando algn usuario cambia el tpico del salon.
Formato: on <level>:TOPIC:<#[,#]>:<comandos>
Ejemplo: on 1:TOPIC:#mIRC:/msg $chan Quien te dio permiso para cambiar el
Topic?: $1La funcin $1- devuelve el texto completo del nuevo tpico.

Evento ON USERMODE
Se produce cuando cambiamos nuestros modos de usuario.
Formato: on <level>:USERMODE:<commandos>
Ejemplo: on 1:USERMODE:/echo nuevos modos: $1-

Evento ON WALLOPS
Se produce cuando recibimos un wallops message.
Formato: on <level>:WALLOPS:<texto>:<commandos>
Ejemplo: on 1:WALLOPS:*aviso*:/echo $nick mensaje de aviso a las: $time
Ver el evento on TEXT para una explicacin de los posibles formatos del texto.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

74

USUARIOS REMOTOS Y EVENTOS CTCP


Introduccin
Las siglas CTCP significan Client to Client Protocol o Protocolo de cliente
a cliente, y bsicamente se trata de un tipo escpecial de comunicacin entre los
usuarios de un servidor de IRC que ser usada para provocar que los usuarios de el
script que estemos haciendo ejecuten ciertas acciones automticamente al recibir
cierta informacin por CTCP.
Por otra parte los usuarios remotos se refiere a algo que usted seguro que ya ha
visto anteriormente en el tutorial de enventos remotos, se trata de ese numerito que
siempre ponemos en el evento por ejemplo on 1:OPEN: , qu es ese 1? Pues
sencillamente es el nivel que necesita un usuario para hacer que salte ese evento
con los comandos que se hayan especificado, despues entrar en ms detalle en
esto, ahora volviendo al principio vamos a ver todo lo referente a los eventos
CTCP:

Comandos CTCP
Para mandar informacin a otro usuario mediante CTCP lo haremos de la
siguiente forma: /ctcp <nick> <mensaje> donde <nick> es el nick de la otra
persona y <mensaje> es cualquier mensaje que queramos enviar por ese protocolo.
Lgicamente no nos pondremos a hablar con un usuario mediante CTCP's ya que
seria absurdo estando los dos conectados al IRC. Los CTCP's tienen otra
utilidad... que es la de que el otro usuario reaccione automticamente de una cierta
manera al usted enviarle ese CTCP. Por ejemplo, existe uno que tiene el mIRC ya
implementado: el famoso CTCP PING y consiste en enviar un ping al otro usuario:
/ctcp <nick> ping
El programa del otro usuario responder automaticamente al CTCP PING y lo
har devolviendo una informacin, que al llegarnos de nuevo el mIRC nos muestra
en pantalla. En este caso en pantalla se muestra el Lag o retardo de la lnea que
hay entre usted y la persona a la que envi el ping. Puede probar con los otros
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

75

CTCP implementados ya en mIRC, el funcionamiento de todos es similar; solo


varia la respuesta que proporcionan.
A continuacin aprender a crear sus propias respuestas a ciertos CTCP's, ya
que el mIRC solo trae unas cuantas ya definidas (como son PING, VERSION,
TIME ...) pero usted quizs quiera hacer otras con otros nombres, o tal vez cambiar
las respuestas que a los ya existendes dar su programa.

Eventos CTCP
Vamos a ver ya como usamos este tipo de eventos para que la explicacin sea
ms fcil de entender. En la seccin Remotes del editor del mIRC es donde
definiremos estos eventos y se hacen de una forma parecida al resto de eventos
remotos. La sintaxis es: ctcp <nivel>:<texto>:<#,?,*>:{ comandos }
Este tipo de eventos haran que nuestro programa se comporte de cierta manera
(es decir, que ejecute los comandos que le especifiquemos) cuando recibamos un
CTCP <texto> de otro usuario. El <nivel> de momento lo dejaremos siempre en
1 , y el otro parmetro ha de ser o bien un # si nos referimos a un salon, un ?
para un privado(query) o un * para en cualquier lado. Con un pequeo ejemplo
lo veremos ms claro, copie lo siguiente en el editor del mIRC, pestaa Remotes:
ctcp 1:*hora*:*:{
msg $nick Son las $time
}
Ese evento har como ya habr imaginado que cuando un usuario le haga un
/ctcp <nick> hora , usted automticamente le responda envindole un query en el
que diga por ejemplo Son las 19:45:23 . Como ve se pueden usar * en el
parmetro <texto> para indicar que si la palabra hola del mensaje CTCP viniera
precedida de cualquier otra, o despues de esa palabra hubiera alguna palabra ms,
se ejcutara de todas formas en comando. En este ejemplo en concreto eso no es de
mucha utlilidad, pero en el siguiente si que lo ser:
ctcp 1:dime*:*:{
msg $nick Lo siento estoy ocupado
}
Este evento har que cuando un usuario le enve un /ctcp DIME , usted le
responda diciendole que est ocupado. Por ejemplo un usuario le podra hacer un
/ctcp <sunick> dime la hora o quizas /ctcp <sunick> dime tu nombre. En cualquier
caso la respuesta ser la misma.
Lo que hemos visto hasta ahora se refiere a crear eventos CTCP propios, que no
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

76

existan antes en el mIRC y a los que el script responder de la forma que le hemos
especificado, pero tambin si quisiera, podra cambiar su respuesta a algunos de los
eventos CTCP ya definidos, como es el caso del PING, para ello tendremos que
especificar al final de los comandos, el comando /halt , por ejemplo:
ctcp 1:PING:*:{
notice $nick NO me toques, gracias! | halt
}
Este evento har que cuando usted reciba un /ctcp ping de algn usuario, le
enviar un /notice dicindole: NO me toques, gracias!, y mediante el comando
/halt haremos que el script deje de procesar ese evento, y de esa forma que no
procese la parte que ya estaba hecha en el mIRC (la que nos devuelve el lag).
Tambin podramos usar este procedimiento para otros CTCPs ya definidos como
son TIME, USERINFO ... etc.
Otra utilidad de estos eventos puede ser la de controlar nuestro mIRC a
distancia, y me explico, si abrimos dos mIRCs, podremos controlar a uno de ellos
mediante CTCPs mientras que el otro lo controlaremos normalmente, se pueden
usar por lo tanto para controlar a nuestros clones, por ejemplo si copiamos el
siguiente cdigo en la seccin Remotes y abrimos dos mIRCs :
ctcp 1:habla*:#:{ /say $1- }
Cuando desde uno de los mIRCs escribamos /ctcp <nick_clon> HABLA
<mensaje> el otro mIRC que hemos abierto enviar el mensaje que pongamos
despus del HABLA al salin, por ejemplo si ponemos /ctcp <nickclon> habla
soy un bot, me manejan con ctcps! har que nuestro clon diga ese mensaje al salon.
ctcp 1:quit:*:{ /quit $1- }
Este nuevo ejemplo har que al recibirlo el CTCP, el clon cierre el mIRC con el
mensaje especificado en /ctcp <nickclon> quit <mensaje_de_quit>
ctcp 1:entra:*:{ /join $1 }
Este har que el clon entre en el salon que especifiquemos en /ctcp <nickclon>
entra #salon
ctcp 1:cometin:#:{ /say Me llamo $1 , tengo $2 aos y soy $3 }
Este ltimo har que el clon diga en el salon ese mensaje usando las tres
siguientes palabras que pongamos despues del /ctcp <nickclon> cometin, por
ejemplo si ponemos /ctcp <nickbot> cometin Raul 92 alto , el bot o clon pondr en
el canal Me llamo Raul, tengo 92 aos y soy alto.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

77

Con esto hemos matado dos pjaros de un tiro, no slo ya sabemos manejar los
eventos CTCP y como evitar las respuestas predeterminadas de algunos de ellos,
sino que hemos aprendido sobre su principal utilidad que es la creacin de Clones
que obedezcan nuestras rdenes, tambien conocidos como bots.
Antes de pasar a la siguiente seccin hay que comentar tambin que hay un tipo
especial de eventos CTCP que sirven exclusivamente para cambiar la apariencia
de las respuestas estndar de los CTCPs predefinidos en el mIRC... es decir que
por ejemplo cuando usted hace un ping a alguien, ese alguien le devuelve la
informacin del ping, y usted ve en pantalla algo como:
[PorotoMan PING reply]: 0 secs
Pero quizs para hacer ms bonito el script le gustara que pusiera:
Lag con PorotoMan: 0 segundos
Para ello usamos el evento ON CTCPREPLY que tiene la siguiente sintaxis:
on 1:CTCPREPLY:<ctcp>:{ comandos }
Donde <ctcp> pondremos el CTCP predefinido al que nos referimos, y en
comandos la secuencia de comandos que queremos ejecutar. Generalmente para
este tipo de acciones usaremos /echo para poner lineas de texto en pantalla. Vamos
a ver como conseguiriamos hacer que la respuesta del PING nos fuera mostrada
como hemos visto antes, debemos escribir en los remotes:
on 1:CTCPREPLY:*PING*:{
%lag = $ctime - $2
echo s Lag con $nick : %lag
halt
}
Lo que hemos hecho es primero calcular el lag basndonos en la informacin
que nos devuelve el nick al que le hemos hecho el PING. En este caso nos
devuelve: PING 919197981 . Y que es ese numero tan largo? . Ese numero
corresponde a una referencia de tiempo, indicada como el numero de segundos
transcurridos desde el 1 de enero de 1970 . El instante al que se refiere ese nmero
es el momento en que la persona recibio el PING, por lo tanto si restamos a la hora
actual en el formato $ctime (que nos devolvera la hora actual como numero de
segundos desde el 1 de enero de 1970) de la fecha en la que el nick recibio el ctcp,
nos quedar un numero ms pequeo y corresponder al LAG en segundos.
Guardamos ese dato en la variable %lag y a continuacion, mediante un /echo,
ponemos la informacin en Status, y el comando /halt. Se debe estar preguntando
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

78

ese halt no parar el proceso del PING y nos dejar sin ver la informacin? La
respuesta es no, puesto que cuando este evento salta la informacin del PING ya
nos ha sido devuelta por la otra persona, as que en este tipo de eventos el /halt al
final lo nico que har ser evitar que veamos, adems del mensaje que hemos
especificado, el que ya haba por defecto. Pruebe ese ejemplo, y despus pruebelo
de nuevo suprimiendo el /halt para que vea usted mismo a que me refiero.

Usuarios Remotos
Ya le he dado una pista antes de que son los usuarios remotos... nos referimos a
un usuario remoto cada vez que especificamos un evento remoto , por ejemplo en
el evento on 1:JOIN le estamos diciendo al mIRC cuando un usaurio de nivel 1
entre a un canal... . sta es una seccin completamente opcional y no
necesariamente todos los scripts harn uso de ella, puesto que slo es realmente
til para ciertas tareas muy especficas. Antes que nada debe saber, que por
defecto, nivel 1 quiere decir todos los usuarios, es por eso que hasta ahora todos
los eventos remotos se han declarado con on 1:... para que tengan efecto sobre
todos los usuarios, pero podra darse la ocasin en que usted quiera que algun o
algunos usuarios en concreto tengan acceso a unos eventos y no lo tenga el resto,
para ello les tendremos que asignar un nivel.

Asignacin de niveles a usuarios


Para asignar un nivel determinado a un usuario iremos al editor del mIRC, pero
esta vez a una pestaa que seguramente tendremos en blanco, la pestaa
USERS. La sintaxis para declarar que un usuario tiene un cierto nivel es:
<nivel>:<nick>!<user>@<host>/<ip> por ejemplo:
10:PorotoMan!*@*
20:Choclo!*@conmutado.ctcreuna.cl
Hemos creado dos usuarios remotos, el primero PorotoMan le hemos dado el
nivel 10 y cualquier persona con ese nick tendr acceso a los privilegios de ese
nivel 10, que los especificaremos ms adelante. El segundo nivel que hemos es
asignado es ms especifico porque se lo asignamos a un nick y a una mscara, es
decir que el nivel 20 solo lo tendra aquel que su nick sea Choclo y su host sea
conmutado.ctcreuna.cl, de esa forma nos aseguramos que los provilegios que
especifiquemos para el nivel 20 solo los Choclo y no alguna persona que se ponga
ese nick. Una cosa importante a recordar es que una persona con nivel 20 tendr
acceso no solo a los privilegios del nivel 20, sino tambin a los de nivel
19,18,17....etc, es decir que en el ejemplo anterior, Choclo tendria acceso a los
eventos de nivel 20, pero tambien a los de nivel 10. Si quisieramos que Choclo
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

79

tuviera acceso nicamente a los eventos de nivel 20, tendramos que escribirlo de
la siguiente forma:
=20: Choclo!*@conmutado.ctcreuna.cl
El = delante del nivel indica que la persona especificada solo podra acceder a
los eventos que marquemos con un nivel 20, es decir que los de nivel 1, o 2, o 10
no los podr acceder el usuario Choclo.
Pues bien as se asignan los niveles de una forma esttica es decir, vamos al
editor del mIRC y los intriducimos a mano, pero tambien podramos hacerlo de
una forma dinmica mediante comandos del mIRC, digo dinmica porque nos
pueden servir estos comandos para ms adelante permitir al usuario cambiar el
nivel de cierta persona o aadir mas gente con un determinado nivel. Los
comandos son: /auser [-a] <niveles> <nick/host>
Aade un usuario con el nivel o niveles que especifiquemos a la lista de usuarios
remotos, si especificamos el parmetro [-a] har que si el usuario ya exista, se le
aada el nuevo nivel al que ya tena. Por ejemplo:
/auser 10 PorotoMan
Aade a PorotoMan a la lista de usuarios remotos con nivel 10, si PorotoMan ya
estaba en esa lista, ser borrado y sustituido por la nueva entrada.
/auser a 12,13 PorotoMan Aade los niveles 12 y 13 a los que ya tena el
usuario PorotoMan, por lo tanto la seccin users quedar asi:
10,12,13: PorotoMan
En lugar de un nick podriamos haber especificado una mscara con el modelo
nick!user@host
/flush [niveles] Este comando borrar a todos los nicks de niveles especificados
que no estn actualmente en ninguno de nuestros canales. Por ejemplo:
/flush 1,2,3 . Borrar de a lista de usuarios remotos a todas las personas que tengan
nivel 1,2 o 3 y no estn en ninguno de nuestros canales.
/flush Cuando se especifique este comando sin argumentos borrar todas las
entradas (en la pestaa Users del mIRC) de gente que no est actualmente en
ninguno de nuestros canales
/guser [-a] <niveles> <nick> [tipo]
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

80

Este comando trabaja de la misma forma que /auser con la nica diferencia de que
solo le podemos especificar el nick de la persona y el mIRC mirar su mscara
actual y la aadir al nick, para ello tenemos que especificarle tambin el [tipo] de
mscara que ser un nmero de 0 a 9
/guser 10 TipoX 4 Aade al nick TipoX con nivel 10 y una mscara del tipo 4 (*!
*@*.dominio)
/ruser [niveles] <nick / host> [tipo]
Borrar los niveles que especifiquemos del nick o host que especifiquemos,
podemos tambien darle solo el nick y especificar el [tipo] de mscara para que el
mIRC la mire y borre los niveles de los usuarios que tengan esa mscara.
/ruser 10 Poroto Borrar el nivel 10 que le hayamos dado al nick Ytreme
/ruser Poroto Borrar a Ytreme de la lista de usuarios remotos (o lo que es lo
mismo le quitar todos los niveles)
/ruser 25 Poroto 4 El mIRC buscar la informacin de Poroto y borrar el nivel 25
de todas las entradas en la lista de usuarios remotos que tengan esa mscara.
/rlevel [-r] <niveles> Borra a todos los usuarios de la lista de usuarios remotos
cuyo primer nivel sea el que especifiquemos en <niveles>. Si usamos el parmetro
[-r] borrar a todos los usuarios que tengan el nivel <niveles> en cualquier lugar.
Partiendo de:
10,12,15: Coronta
12,20: Poroto
El comando: /rlevel 12 borrar al usuario Coronta puesto que su primer nivel el 12
/rlevel r 12 Borrar tanto a Coronta como a Poroto puesto que tienen el nivel 12 ,
no importa en que posicin
/ulist [ < / > ] <nivel> Lista a los usuarios de nivel <nivel> , o bien podemos
especificar el parmetro [ < / > ] como >4 o <10 . Por ejemplo:
/ulist >10 Lista todos los usuarios cuyo nivel sea menor o igual a 10
/ulist >20 Lista a todos los usuarios remotos cuyo nivel sea mayor o igual a 20

Restricciones en el acceso a Eventos


Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

81

Vista ya la forma en la que asignamos niveles a usuarios, ahora veremos como


puede hacer que ciertos eventos solo sean accesibles por usuarios especificos (con
un nivel especifico), para ello simplemente cambiaremos ese 1 que soliamos
poner en todos los eventos remotos/ctcps por el nivel mnimo que necesitar el
usuario para acceder al evento:
on 10:JOIN:#:{ echo s Ha entrado un usuario de nivel 10 o superior}
Este evento har que cuando un usuario de nivel 10 o superior entre en un canal
en el que usted est, le salga un mensaje en en Status avisndole. Pero recuerde
que este evento no slo lo accederan los usuarios de nivel 10, sino los de 20, 30,
etc...
Pero tambin podemos hacer que un evento solo sea accesible por los usuarios
de un nivel determinado, y no por aquellos usuarios que tengan ms nivel, lo
haremos mediante el prefijo + :
on +5:JOIN:#:{ echo s Ha entrado un usario de nivel 5 }
De esta forma si entra un usuario con nivel 10 por ejemplo, este evento no se
ejecutar puesto que esta restringido a los usuarios de nivel 5 .
Otra forma de restringir el acceso a eventos es mediante el sufijo ! al nivel, que
har que el evento no se ejecute si fue accionado por usted mismo, por ejemplo:
on 1!:OP:#:{ /echo $nick le dio op a $opnick }
Este evento har que cuando un usuario le de op a otro nos sea notificado en la
ventana activa, a excepcin de cuando sea usted el usuario que da op
Y al igual que restringimos el accceso a ciertos eventos tambin podemos tener
eventos de libre acceso por todos los usuarios, independientemente del nivel que
tengan usando un * en lugar del nivel:
on *:JOIN:#:{ echo $chan Ha entrado $nick }
Ese evento mostrar un mensaje en pantalla cada vez que entre un usuario a un
canal, sin tener en cuenta su nivel.
Tambin podemos usar el prefijo @ para indicarle al script que ese evento solo
salte cuando tengamos OP en ese canal, por ejemplo:
on @10:JOIN:#:{ op $nick }
Este evento har que cuando un usuario de nivel 10 entre a un canal en el que
estemos, y en el que seamos op, le demos op automaticamente

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

82

Resumiendo un poco esta ltima parte en la siguiente tabla de ejmplos:


Evento Accesible por usuarios de nivel:
on 100:PART 100 o superior
on +30:DEOP nicamente 30
on 5!:QUIT 5 o superior (excepto usted!)
on *:JOIN Todos
on @30:NICK 30 o superior (solo si usted es OP en el canal)
Visto esto, y para finalizar, se va a realizar un ejemplo que mezcle los Usuarios
Remotos con lo que vimos al principio de este documento sobre eventos CTCP, el
objetivo ser crear un medidor de LAG, algo que es fundamental en cualquier
script.

Ejemplo 1: Creacin de un medidor de LAG


Para medir el lag que se tiene con una cierta persona, lo que se hace, como ya
sabe, es hacerle a esa persona un CTCP PING, pues bien si usted quiere hallar el
lag con usted mismo, es decir su propio lag con el server, lo que tendr que hacer
es como ya habr adivinado, hacerse un CTCP PING a usted mismo, por lo tanto
analicemos un poco en que se basar nuestro medidor para que despues nos sea
ms fcil construirlo:
Primero necesitaremos un TIMER , es decir que cada X segundos el mIRC
nos haga automaticamente un PING para hallar nuestro lag.
Despues necesitaremos que la respuesta a ese ping se nos muestre en un formato
diferente al habitual y que la respuesta habitual se omita, pero habr que tener en
cuenta que cuando hagamos un ping a nosotros mismos, la respuesta que
recibiremos ser del tipo Tu lag es de X segundos, para ello usaremos el evento
ctcp 1:ping. El problema es que si en ese evento ponemos una linea que diga
Tu lag es de X segundos ese ctcp saltar cada vez que alguien nos haga un ping,
sea quien sea, y lo que haremos en este ejemplo es que ese evento solo se ejecute
cuando la persona que le haga el ping sea usted misma, de esa forma
conseguiremos que cada vez que usted se haga un ping (automaticamente mediante
el timer) se active el evento ctcp del ping que usted habr diseado y que cuando
sea otra persona la que le haga un ping, sta reciba el mensaje estndar. Pasemos
ya a ver el cdigo para este ejemplo, y posteriormente l acabaremos de comentar:
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

83

Copie lo siguiente en Aliases:


/medidor {
/timer 0 30 ctcp $me PING
/auser 55 $me
}
Copie lo siguiente en Remotes:
ctcp 55:PING:{
%lag = $ctime - $2
titlebar Lag: %lag
halt
}
on 1:CONNECT:{ medidor }
Y ya est, lgicamente este es un medidor de lag bastante primitivo en el sentido
de que se le pueden aadir muchas ms cosas, pero esta es la base y a partir de ella
usted podr ir elaborndo su propio medidor de lag con sus conocimientos.
La explicacin es bastante simple, cuando usted conecte a un servidor de IRC
(salta el evento on 1:connect) se ejcutar el alias medidor que iniciar un timer
infinito (de ah el 0 como primer parmetro) que consistir en hacerse a usted
($me) un CTCP PING cada 30 segundos. Adems cuando conecte usted ser
aadido a la lista de usuarios remotos con nivel 55. Al cabo de 30 segundos se
producir por primera vez ese CTCP PING que pusimos en el timer, y puesto que
el ping lo manda usted que es un usuario de nivel 55, saltar el evento CTCP 55
que calcular el lag y lo mostrar en la barra de ttulo del mIRC mediante el
comando titlebar, por ultimo se usa un halt para que la respuesta
predeterminada del mIRC al PING quede escondida. Y obviamente si cualquiero
otro usuario le hiciera un ping, como usted ser el nico con nivel 55, este evento
no saltar y por tanto el otro usuario recibir la respuesta estndar del PING.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

84

NUMEROS Y EVENTOS RAW


INTRODUCCIN
Constituye esta parte del mIRC uno de los apartados con ms fama de
escabrosos y difciles para los aficionados a los scripts; la verdad es que no es para
tanto, el programa permite trabajar con este recurso de una manera bastante
sencilla, y presentar resultados de configuracin muy espectaculares y potentes.
Vamos a analizar el tema paso a paso y veremos porqu no es tan fiero el len
como lo pintan.
Las caractersticas del trabajo con los nmeros raw en el mIRC requiere unos
mnimos conocimientos sobre los eventos, los comandos, y los dems apartados de
la creacin de scripts; no me refiero a un dominio absoluto, pues en caso de
necesidad puede hacer una consulta rpida en los captulos correspondientes, pero
s, cuando menos, una cierta familiaridad con el significado de los conceptos que
en ellos se manejan. Superada esta etapa ver que no se trata ms que un poco de
lo mismo, pero con nuevas capacidades que le sorprendern.
Vamos en primer lugar a centrar los conceptos. Cuando ley la informacin
relativa a los comandos del mIRC descubri una serie de ordenes que puede dar a
su programa. Estas rdenes o acciones digamos que pueden ser de tres tipos:
-

En primer lugar hay algunos comandos que le afectan solo a usted y a su sesin
de trabajo con el mIRC: presentar mensajes con /echo, cambios de colores y
fuentes, creacin de ventanas personalizadas, ...etc. Estas acciones no tienen
influencia ninguna en los dems usuarios ni en los servidores de IRC.

Existen por otra parte comandos que implican acciones sobre, o referidas, a los
dems usuarios sin pasar nunca por los servidores, hasta el punto de que, si
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

85

en el transcurso de algunas de ellas pierde su conexin con el server, no perder


en cambio el contacto con el otro usuario, ejemplos de este tipo de acciones
son: envo y recepcin de ficheros y chats privados, acciones remotas, ping,
version, finger, sound,...; son en general las acciones CTCP (client to client
protocol) que suelen dar lugar a los eventos CTCP que explicar en su
correspondiente apartado, no son estas tampoco las que nos ocuparn
primordialmente en este captulo.
-

En tercer lugar estn las acciones referidas directamente a su conexin con un


servidor de IRC, en su mayora son rdenes o requerimientos de usted
hacia el server, y a las cuales este responde de una determinada manera, y, a
menudo, con un mensaje concreto indicando el resultado de la accin.
Pensemos por ejemplo en los comandos /who, /whois, /names, /lusers, /list,
/links, ...etc. En virtud de cualquiera de estos usted recibe una respuesta del
server, bien sea un mensaje de error, o bien la informacin correspondiente.
Existen dos maneras de enviar estos comandos, bien por el mtodo
habitual, es decir, empleando el comando del mIRC correspondiente, o bien
mediante el comando: /raw <orden>. Bsicamente la mayor diferencia de
este ltimo con el anterior es que usted no deja el trabajo a su programa, sino
que enva la orden directamente de una forma similar a un "notice" hacia el
server. Muchas de las rdenes vlidas para el comando /raw (comandos del
server) son idnticas a los comandos clsicos de su cliente que tienen el
mismo fin, pero otras tienen variaciones, por tanto es necesario conocer la
sintaxis exacta de la orden raw que enviamos para que esta funcione como
deseamos. El mIRC utiliza el comando /raw en forma similar que otros
clientes usan el comando /quote, aunque este tambin es vlido en mIRC. Por
ejemplo, para obtener una lista de los comandos disponibles en el server
puede teclear: /quote help.

Como ejemplo curioso no me resistir a comentar una de las bromas favoritas de


los supuestos "expertos" hacia algn pobre "Giles" que encuentran desprevenido y
preguntando alguna cosa como por ejemplo:
<^Gil[de]la Kuna^> Hola, como puedo conseguir OP? O:-)
***Set mode: comentario mo (veremos que ocurre )
<SuperVivo> Es fcil, escribe: /raw server Opme

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

86

Y a los pocos segundos nuestro pobre amigo ^Gil[de]la Kuna^ se encuentra


mirando confuso su ventana de estatus leyendo algo as como que se ha
desconectado del server y el programa no puede reconectar. Qu ha sucedido?.
Muy sencillo, ^Gil[de]la Kuna^ a lo mejor incluso saba que el comando:
/server <servidor_de_IRC> [puerto] Sirve para desconectar del server actual y
establecer inmediata conexin con otro server indicado, pero ignoraba que: /raw
server <servidor_de_IRC> [puerto]
Hace exactamente lo mismo, con la nica salvedad, en este caso, de que no
existe ningn server de IRC que se llame Opme, y por lo tanto los intentos de su
programa sern infructuosos.
Que feo ...no?. En castigo ahora yo debera relacionarle una larga lista de
comandos raw, pero no se preocupe, no lo har, ms que nada porque esto tiene en
este momento muy poco inters para nosotros, ya que muchos son repeticiones de
lo que hacen los comandos de cualquier buen cliente de IRC actual y otros exigen
el estatus de IRCop. Pero lo que s nos interesa aqu son las respuestas del server a
nuestros comandos, a nuestra orden el server responder casi siempre con una o
ms lneas de mensaje, estas lneas tienen siempre la misma estructura y, aunque
no lo veamos, se identifican cada una con un nmero. Estos son los nmeros raw.
Si usted solo tena curiosidad en el tema confo en que esta explicacin se la haya
aclarado; si su inters es saber como aprovechar esta circunstancia para la creacin
de sus propios scripts, contina.
PRIMER CONTACTO CON LOS NMEROS RAW
Vamos a empezar analizando un ejemplo clsico. Como sabemos el comando
/whois <nick> hace que el server nos facilite cierta informacin acerca del nick de
usuario que hemos introducido. Por ejemplo, imaginemos que tecleamos: /whois
^Gil[de]la Kuna^, y obtenemos esta respuesta:
^Gil[de]la Kuna^ es Gil@DeLasAvesQueVuelan.com.ar * Gilote
^Gil[de]la Kuna^ #Donde-Viven-los-Giles @#Gil-Mayor
^Gil[de]la Kuna^ se encuentra en conectados.ciudad.com.ar IRC Server
End of /WHOIS list.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

87

Este es el formato bsico habitual de la respuesta de un server ante un Whois de


un nick que se encuentra en lnea. Si el resultado que usted obtiene es distinto se
debe probablemente a que usa un script que modifica este mensaje mediante el uso
de los nmeros raw, por tanto aqu debemos de partir de esta respuesta en formato
estndar, tal y como llega desde el servidor.
Lo que en realidad hemos recibido han sido cuatro mensajes (cuatro lneas),
estas tienen siempre la misma estructura, aunque vare su informacin, y cada una
tiene asignada un nmero identificativo, es su nmero raw.

La primera comienza siempre por el nick del usuario del que hemos
pedido la informacin, despus la palabra "es" y a continuacin su User ID
(el que especific en la ventana IDENTD del setup), separado por una @ de
la identificacin de su conexin a Internet (ctcreuna.cl por ejemplo).
Termina la lnea con un asterisco y su Full Name, el que escribi en el
Setup. Esta lnea tiene siempre el nmero raw 311 y se conoce como:
RPL_WHOISUSER.

La segunda lnea es la respuesta raw nmero 319


(RPL_WHOISCHANNELS). Esta comienza por el nick y detalla todos los
canales en los que este se encuentra; incluso muestra el smbolo @ delante
de aquellos nombres de canal en los que este usuario tiene estatus de OP.

La tercera lnea comienza tambin con el nick, e identifica el servidor


de IRC que est usando. Es la respuesta raw nmero 312
(RPL_WHOISSERVER).

La ltima lnea no es ms el mensaje estndar de final del envo de


informacin para ese comando, y es siempre igual. Tiene el nmero rawn
318 (RPL_ENDOFWHOIS).
Otra posibilidad es que el nick del cual hemos solicitado la informacin no se
encuentre en la red de IRC, en este caso la respuesta sera:
^Gil[de]la Kuna^ No such nick/channel
End of /WHOIS list.
La primera lnea es un mensaje indicndonos la ausencia del usuario, es el
nmero raw 401 (ERR_NOSUCHNICK), la segunda es el raw 318 ya visto antes,
que indica el final del mensaje.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

88

Lgicamente, llegados a este punto nos podemos hacer dos preguntas: Cmo
puedo usar esto para que la respuesta al comando /whois tenga el formato que yo
quiera? y Cmo puedo saber los nmeros raw de cada respuesta del server a un
comando?. La primera la resolveremos de inmediato, la segunda un poco ms
adelante.

LOS EVENTOS RAW


Una vez que nuestro programa recibe la respuesta del server a un comando o
requerimiento por nuestra parte, si conocemos el nmero raw (paciencia, los
conocer ), es posible configurar el mIRC para que inhiba la respuesta normal, y
nos presente el formato que nosotros queramos disearle.
Cuando recibimos un mensaje catalogado con un nmero raw se produce un
suceso o evento que nosotros podemos interceptar; es decir, podemos crear una
instruccin que le diga a nuestro programa algo as: "Cuando recibas una
respuesta raw con este nmero haz lo siguiente..." asocindole el cdigo
correspondiente mediante una rutina de script, igual que se hace con los eventos
convencionales (ver el captulo de Eventos del mIRC).
La sintaxis para esto es una lnea que especifica el nmero raw del evento que se
espera, y la accin o acciones que han de realizarse en es momento:
raw <nmero>:*:<accin>
Vemos que la lnea consta de tres campos, el primero es simplemente el nmero
raw ante el que se desea actuar; el ltimo es una o ms acciones (comandos o alias)
que se desea que se ejecuten en ese momento; el segundo es normalmente un
asterisco que indica que se realice la accin sea cual sea el texto del mensaje que
recibamos, es decir, que se haga siempre lo mismo ante este raw concreto,
independientemente del nick, o cualquier otra informacin que nos devuelva es
server.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

89

Si describimos ms de una accin asociadas al evento debemos de separar cada


una de las rdenes con el smbolo entubador: "|", teniendo buen cuidado de que
este smbolo tenga espacios en blanco a ambos lados. Por ejemplo:
raw 312:*: echo -s $1 est conectado por: $3- | halt
El raw 312 es la respuesta RPL_WHOISSERVER, es decir, la lnea del /whois
que informa sobre el server de IRC por el que est conectado el nick. Con la
sentencia anterior estamos diciendo a nuestro mIRC que cuando reciba esta
respuesta debe de imprimir en status (de ah el echo -s) una frase que comience por
la primera palabra de la que hemos recibido del server, sea cual sea (representada
por $1), que en el raw 312 es siempre el nick como hemos visto), a continuacin la
cadena: "est conectado por:", y a seguidamente la tercera palabra recibida ms
todo lo que viene a continuacin (por eso el signo - detrs de $3). Recordemos
que una palabra se considera a cualquier cadena de caracteres que no contiene
espacios en blanco en su interior, as "andesmedia.irc.com" se toma como una sola
palabra ($3 en el ejemplo, puesto que es la tercera palabra). Hay una segunda
orden en este evento: halt; este comando interrumpe cualquier accin posterior
relacionada con el mismo, est especificada por nosotros o no, el efecto en este
ejemplo es el de inhibir la impresin de la respuesta del server, as se consigue que
en caso de hacer un /whois nos aparezca solo la frase configurada por nosotros, y
no la del server (si no ponemos halt se imprimiran las dos).
Es as como podemos sustituir limpiamente las respuestas normales de los
comandos que enviamos al servidor por otras con la sintaxis que deseamos, incluso
con la posibilidad de aadir colores ... etc; es ms, podemos tambin iniciar
acciones automticamente con solo incluir alias previamente creados, u otros
comandos.
Lgicamente las lneas de configuracin de los eventos raw no podemos
insertarlas en cualquier lugar a nuestro gusto, es necesario que estn all donde el
mIRC las puede encontrar, este lugar es la seccin de remote de nuestro programa.
Recordemos que en esta ventana se nos presenta el contenido de todos nuestros
ficheros de script para events, ctcp's y remotes. Es buena costumbre tener los
eventos raw agrupados en un fichero especifico para ellos, para conseguirlo un
sistema puede ser seguir estos pasos:

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

90

Desde el Explorador del Windows (por ejemplo), vaya al directorio


donde tiene los archivos .INI del mIRC, que normalmente ser el propio
directorio del programa o un subdirectorio de este. En este lugar cree un
nuevo fichero de texto y nombrelo "raw.ini", de momento djelo en blanco.

Entre en mIRC y luego Herramientas/Remote. En el dilogo que


aparece abra el men Archivo selecciones la opcin Cargar, y a
continuacin
la
sub-opcin
Script
(herramientas/remote/archivo/cargar/script). Ver otro dilogo de
navegacin en el que deber de localizar y seleccionar el archivo creado:
"raw.ini", ahora pulse el botn Ok. Todo esto se logra de igual manera
tecleando la orden: /load -rs raw.ini.

Ya est, el nuevo archivo se ha cargado en la memoria RAM


correspondiente a mIRC como fichero de script, ahora podr observarlo en
la ventana de Remote, si ha seguido los pasos anteriores evidentemente
estar vaco, pero a la espera de que usted inserte ah el cdigo que desee. Si
quiere volver a visualizar cualquier otro de sus ficheros de script no tiene
ms que abrir el men Ver de esta ventana y seleccionarlo.

Sobra decir que estos mismos pasos los puede realizar para crear archivos
(especficos para su comodidad) para eventos convencionales, CTCP's, ... etc.
Puede tener tantos como desee. As mismo tambin puede crear grupos de cdigo
raw igual que de cualquier otro tipo de cdigo de script, es decir, encerrndolos
entre lneas de activacin, de tal modo que solo operarn cuando usted lo desee:
#nombre_grupo [on/off]
Lneas de cdigo...
#nombre_grupo end
De este modo puede tenerlo activo (on) o inactivo (off) a su gusto con el uso de
las rdenes: .enable #nombre_grupo o .disable #nombre_grupo desde un alias o
una opcin de popups (para ms informacin al respecto repase los primeros
apartados del captulo Los Eventos del mIRC, que se refiere a los eventos
convencionales).
REFERENCIA DE LOS NMEROS RAW.
Solo un dato nos falta para poder comenzar a crear cdigo de script para
configurar nuestro programa ante las respuestas raw y es, evidentemente, conocer
los nmeros asociados a cada una de ellas.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

91

Desgraciadamente para nuestra capacidad retentiva, y afortunadamente para lo


que podemos llegar ha hacer con ellos, son una enorme cantidad, por lo que mi
primera recomendacin debe de ser que dedique algn tiempo a examinar los que
se encuentran en los muchos scripts para mIRC de uso gratuito que puede obtener
en la w.w.w., y en esta misma web. De este modo no solo descubrir el nmero de
cada uno de ellos, sino que tendr tambin ocasin de analizar algunas buenas
ideas de lo que se puede conseguir. "Destripar" scripts, como yo le llamo, es la
mejor manera de aprender a hacerlo, estas pginas solo pretenden que usted pueda
llegar a tener una comprensin mas o menos clara de lo que est viendo cuando
entre en el cdigo de alguno.
No obstante no se preocupe, pretendo facilitarle todas las herramientas que
necesita para poder trabajar con provecho con esta faceta del mIRC, yo
personalmente recurro a dos ficheros muy tiles como referencia de los nmeros
raw:
Por un lado el archivo "numeric.hlp" es una completa referencia (en ingls y
espero tenerlo traducido pronto) de los nmeros raw, se trata del "Jeepster's
numeric reference". Incluye una completa lista en formato .help para Windows y
alguna informacin ms de inters. Este archivo de ayuda tambien puede ser
bajado de la pgina de este manual.
La segunda no es mas que un archivo de script que fue creado por Somatic con
la idea de que cada vez que introdujese un comando dirigido al server me
informase de cual era el nmero raw de cada una de las lneas que reciba, el
nombre de esta (solo a ttulo informativo), y el mensaje estndar que la
acompaaba. De este modo, al cargarlo si quiere saber, por ejemplo, cuales son los
raw correspondientes a la respuesta de un /who no tiene ms que introducirlo y ver
la informacin que le facilita en su estatus. Tome nota del dato y trabaje con l.
Este segundo archivo se llama "rawtool.ini" y tambin lo puedes bajar desde la
pgina de este manual. Bjelo y crguelo en su mIRC copindolo en el directorio
del programa tecleando /load -rs rawtool.ini. Puede descargarlo cuando desee
tecleando: /unload -rs rawtool.ini. Puede hacer lo mismo desde la seccin Remote,
men Archivo opcin Cargar subopcin Script; y para descargarlo simplemente
opcin Descargar cuando lo tenga en la pantalla de edicin de esta ventana.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

92

Para concluir permtame reiterar la importancia de la observacin y la prctica


para llegar a crear buenos scripts, espero que los conceptos que ha aprendido aqu
le sirvan como base para esta labor. En cualquier caso no dude en dirigir sus
comentarios, crticas o consultas a racunav@ctcreuna.cl.

CONTROLDE SOCKETS EN mIRC


Introduccin a los Sockets
En muchos aspectos la opciones de los sockets en mIRC se quedan muy cortas,
pero son muy utiles. Los sockets (o zcalos de conexin) son los puertos lgicos a
travs de los cuales los programas de nuestro ordenador se comunican con el resto
de mquinas de una red a la que est conectada (por ejemplo de Internet), su
manejo desde mIRC nos permite tener un cierto control sobre estas conexiones,
abrirlas, cerrarlas, "escuchar" posibles accesos por cualqiera de ellas... etc. No
podemos decir que sea una caracterstica ni muy bien implementada ni muy
potente en mIRC, pero si que nos permitir hacer scripts muy interesantes con la
posibilidad de crear escaneadores de puertos, detectores de accesos a nuestra
mquina... etc; a medida que se expliquen en este documento podremos ir viendo
algunos ejemplos de todo esto.
Para explicar el uso de los sockets partiremos de la base de que ya se conoce
perfectamente el manejo de otras areas programables del mIRC, en especial los
alias, popups y el uso de variables, identificadores, eventos y remotes en general.
Si no es as ser necesario que estudie previamente los capitulos correspondientes a
esos temas en este mismo manual.
Es necesario indicar, por ltimo, que los sockets es un recurso que se agota,
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

93

cada vez que hayas terminado de usar un socket debes cerrarlo para poder
usar otro, es decir, no se puede estar trabajando con ms de un zcalo de conexin
a la vez.

Identificadores de los sockets


Los siquientes identificadores son los bsicos que se han de saber para poder
trabajar con los sockets. Hay ms que se pueden ver en la ayuda del programa,
pero no son tan importantes ni tienen una explicacin tan extensa.

$sock(nombre,numero) [.propiedad]
Retorna informacin referente a una conexin con sockets que hemos creado
usando los comandos correspondientes. Si en "numero" no se especifica nada y se
deja con el valor "N", mIRC asumira que es 1.
Este identificador tiene las siguientes propiedades:
.name el nombre de la conexin que utilizamos, para identificarla.
.sent
el numero de bytes enviados despues que la conexin se haya terminado.
.rcvd
el numero de bytes recibidos despues que la conexin se haya terminado.
el numero de bytes de la cola para mandar y recibir buffers
.sq/.rq
respectivamente.
el numero de segundos desde el ultimo envio y recibo de informacin de
.ls/.lr
la conexin.
.mark el rea mxima de almacenamiento del usuario, 512 bytes.
.type
el tipo de conexion socket, TCP o UDP
.saddr la direccion y el puerto de origen del ultimo paquete UDP.
.sport exactamente lo mismo que la propiedad anterior (.saddr).

$sockname
Es el nombre que le hemoss dado a una conexion para identificarla. Este
identificador puede ser usado en los eventos para saber con que conexion se
trabaja.

$sockerr
Sirve para comprobar si se ha realizado la conexin correctamente sin fallos. Si
resulta haber algun fallo en ella este identificador devolver un valor mayor que 1.
Si todo esta normal no devolvera ningun valor.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

94

$portfree(Puerto)
Sirve para comprobar si un puerto esta siendo utilizado o no. Devolver $true si
el puerto esta libre o $false si est siendo usado ya.

Detectando conexiones con los sockets


Explicaremos como poner a la escucha un puerto determinado para detectar
conexiones entrantes, pero primero vamos a ver los comandos y los eventos que
vamos a utilizar:

/socklisten <nombre> [puerto]


Nos permite asignar un nombre a un pueto determinado a fin de identificar la
conexin y poderlo usar ms adelante.

on 1:socklisten:nombre:comandos
Este evento se activa cuando cualquier usuario intenta conectar por el puerto que
estamos "escuchando". Si queremos aceptar esta conexin usaremos el comando
/sockaccept, si no la conexin ser cerrada.

/sockaccept <nombre>
Este comando acepta la conexin actual que hemos detectado con el evento
anterior, y le asigna un nombre para identificarla.

/sockrename <nombre> <nuevo_nombre>


Permite renombrar una conexion existente.

/sockclose <nombre>
Cierra la conexion especificada, si no se indica ninguna se cierran todas.
Vamos a poner un ejemplo y a analizarlo para entender mejor todo esto.
crearemos una pequea rutina para detectar si un usuario intenta conectar por el
puerto 12345 (Netus).
Incluir en aliases o popups:
/socklisten Netbus 12345 ponemos a eschuchar el puerto 12345, con el nombre
Netbus
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

95

Incluir en Events, en remotes:


on 1:socklisten:NETBUS:{ se activar cuando intentan conectar con la
conexion Netbus
/sockaccept Netbus69 acepta la conexion y le pone el nombre de Netbus69
beep mIRC producira un pequeo pitido de aviso
echo -a detectado una conexion por parte de $sock($sockname,1).ip
nos informa de la IP del usuario
/sockclose Netbus69 cerrar la conexin con el usuario que ha intentado
conectar
}
A partir de aqu se puede crear un script para resolver el nick del usuario haciendo
un who con la IP.

Abriendo y Cerrando Conexiones


Los sockets nos permiten abrir conexiones, por ejemplo para detectar los puertos
abiertos de otro usuario. Vamos a ver los comandos y eventos que hemos de saber
antes de hacer nada:
/sockopen <nombre> <direccion> <puerto>
Inicia una conexion con el puerto y la direccion IP que especificada.
on 1:sockopen:nombre:comandos
Este evento se activa cuando la conexin ha sido establecida mediante el comando
/sockaccept.
on 1:sockclose:nombre:comandos
Este evento se activa cuando la conexion ha sido cerrada por el otro usuario.
Vamos a poner un ejemplo y a analizarlo para entenderlo mejor. Este ejemplo
sirve para detectar si un usuario tiene abierto el puerto 12345 (Netus).
Aliases o popups:
/sockopen Netbus 195.77.120.10 12345 abrimos una conexion por el puerto
12345 con 195.77.120.10
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

96

Events, en remote:
on 1:sockopen:Netbus:{ la conexion ha sido aceptada
if ( $sockerr > 1 ) { el usuario no tiene el puerto 12345 abierto
echo -a PortScan $sock($sockname,1).ip no esta infectado por el
Netus }
else { si el $sockerr no es >1 es que esta infectado por el Netus
echo -a Portscan $sock($sockname,1).ip esta infectado por el Netus }
/sockclose Netbus cierra la conexion Netbus
}
Bueno, con este ejemplo ya teneis un scan de Netus de lo ms sencillo, ya que
aun se puede mejorar mucho.

Leer y Escribir Informacin


/sockwrite [-tn] <nombre> <texto>
Envia informacin a una conexion ya establecida lo ms repetido posible. Los
parametros son:
aunque el texto comienze por &, este sea tomado como texto y no como una
variable binaria
-n inserta una nueva linia de texto en la conexion
-t

on 1:sockread:nombre:comandos
Este evento es llamado cuando el otro usuario recibe la informacion
Observe este ejemplo, cuando un usuario intente entrar por el puerto 12345 le
aparecera un mensaje:
En popups o alias:
/socklisten TONTIN 12345
En events, remotes:
on 1:socklisten:TONTIN:{ Cuando intente la conexion...
/sockaccept TONTAZO Acepta la conexin
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

97

/sockwrite -n $sockname Uix, muy listo no eres $sock($sockname,1).ip


Le manda un mensaje
/.timer69 1 2 /sockclose $sockname En 2 segundos se le termina la conexion
echo -a Detectada una conexion de $sock($sockname,1).ip por el puerto 12345
}

If-then-else
La estructura IF-ELSE permite establecer una bifurcacin o alternativa dentro de
una secuencia de ordenes. Es decir, en ocasiones es posible que deseemos que el
programa ejecute una instruccin 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 enve un mensaje a la
pantalla de Status avisndonos de cuanto lag tenemos. Esto no es posible hacerlo
mediante una secuencia lineal de instrucciones; es preciso que el programa
discierna en algn 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
funcin del resultado de la comparativa.
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".
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

98

Obsrvese que la condicin del if se debe de poner entre parntesis, y las


instrucciones internas a ejecutar estarn encerradas entre llaves (si solo hay una
instruccin 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 ejecutarn siempre que no hay resultado cierta la condicin del if
ni, de existir, la del elseif. Si no se especifica un else, el script sencillamente
continuar a desde la instruccin siguiente al ltimo "}", o bien terminar si no hay
nada ms.
Es perfectamente posible "anidar" instrucciones if, es decir, incluir ms ifs
dentro del bloque de instrucciones de un if. Por ejemplo, queremos hacer un alias
que se llame "nmeros". Este, al ejecutarse, nos pedir tres nmeros cualesquiera
que cargar en tres variables, a continuacin evaluar cual es el mayor de los tres y
nos lo imprimir en la ventana de Status. Podramos hacer algo como lo siguiente:
/nmeros {
set %A $$?="Introduce el primer nmero"
set %B $$?="Introduce el segundo nmero"
set %C $$?="Introduce el tercer nmero"
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 comparacin que podemos utilizar dentro de la condicin de un
if son los siguientes:
A == B
A Igual a B
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

A != B
A<B
A>B
A >= B
A <= B
A // B
A\\B
A isin B
A iswm B
A isnum B
A isletter B
A ison B
A isop B
A isvo B
A ischan
A isauto B

99

A distinto de B
A menor que B
A mayor que B
A mayor o igual que B
A menor o igual que B
A es mltiplo de B
A no es mltiplo de B
La cadena de caracteres A se encuentra incluida dentro de la
cadena B
La cadena A es idntica a la cadena B
A es un nmero incluido dentro de la cadena de nmeros B. Si
no se pone B se evala simplemente si A es un nmero
Igual al anterior pero con letras en lugar de nmeros
El nick A est en el canal B
El nick A es operador en el canal B
El nick A tiene voz en el canal B
A est en este momento en el mismo canal que nosotros
El nick A est en muestra lista de auto-op para el canal B (B
opcional)
A est en nuestra lista de ignorados
A est en nuestra lista de protegidos en el canal B (B opcional)

A isignore
A isprotect
B
A isnotify A est en nuestra lista de notify

En esta tabla se han usado, para hacerla ms comprensible, los operndos


genricos A y B; en su lugar podemos usar valores numricos, cadenas de
caracteres, variables (identificndolas con su nombre precedido del smbolo %), o
identificadores (con su nombre precedido del smbolo $).
Si anteponemos el smbolo ! delante de cualquiera de los operadores de la tabla
anterior este ser negado, es decir, la condicin se evaluar como cierta no cuando
suceda eso, sino cuando no suceda. Por ejemplo :
Este alias lista los Ops en salon donde nos encontramos. Este es el camino
dificil, desde el momento que podemos usar el comando $opnick() en vez de
utilizar el comando $nick() del servidor, pero esto nos dara un ejemplo de cmo el
isop puede ser utilizado y de cmo el $null es devuelto una vez que alcanzamos el
final de la lista.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

10

listops {
echo 4 * Escuchando Ops activado en #
set %i 1
:next
set %nick $nick(%i,#)
if %nick == $null goto done
if %nick isop # echo 3 %nick es un Op!
inc %i
goto next
:done
echo 4 * Fin de la lista de Ops
}
Este es un alias con definicion y activacion desde popups que le da Ops a los
nick seleccionados en la lista de nicks.
DarOps {
%i = 0
%nicks = ""
:nextnick
inc %i
if ($snick(%i,#) == $null) { if ($len(%nicks) > 0) mode # +oooo %nicks | halt }
%nicks = %nicks $snick(%i,#)
if (4 // %i) { mode # +oooo %nicks | %nicks = "" }
goto nextnick
}
Este remote intercepta los Pings y envia un mensaje sobre los cerca o lejos que
se encuentra el usuario.
on 1:ctcpreply:PING* {
if ($2 == $null) halt
else {
%pt = $ctime - $2
if (%pt < 0) set %pt 0
if (%pt < 5) echo 4 [PING reply] $nick esta demasiado cerca para mi gusto
elseif (%pt < 20) echo 4 [PING reply] $nick se encuentra a la distancia correcta
else echo 4 [PING reply] muerde el polvo $nick, muerde el polvo $nick
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

10

}
halt
}

Hasta ahora hemos visto como la estructura if puede evaluar una condicin
simple; no obstante es tambin posible crear condiciones complejas combinando
varias con o operadores lgicos. El mIRC admite dos tipos de operadores lgicos
para enlazar entre s dos o mas condiciones simples formando as una sola
condicin mltiple:

Operador AND (&&). En castellano "y":

Si (( pasa esto ) y ( esto ) y ( adems esto )) { Haz esto }


Por ejemplo:
if (( $me !iswm PorotoMan ) && ( $me isop #Maduras_y_Maduros )) { mode $me
-o # Maduras_y_Maduros }
Esta instruccin comprobar si mi nick es distinto de PorotoMan, y adems si
tengo el estatus de operador dentro del canal #Maduras_y_Maduros, 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 nmero en el rango [10-20]
, en caso contrario manda al status un aviso.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

10

EL COMANDO GOTO
La orden goto provoca un salto automtico dentro de la secuencia que el
programa utiliza para leer las lneas de un script, pasando directamente a leer a
partir de una determinada etiqueta, las lneas que continan a partir de esta. Una
etiqueta no es ms que una palabra que ocupa una lnea del script, y que se
identifica como tal por tener el smbolo ":" delante. La llamada a una etiqueta
desde la orden goto no debe de llevar los dos puntos delante.
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 <etiqueta>
Ejemplo:
/CargaVar {
:PideDato
set %valor $$?="Introduzca un nmero entre 0 y 9"
if (( %valor < 0 ) || ( %valor > 9 )) {
echo -a Dato errneo, introduzca solo un dgito entre 0 y 9
goto PideDato
}
}

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

10

Este alias es una sencilla rutina que nos permite aceptar valores para una
variable, depurando que solo se introduzca un dgito entre 0 y 9, de no ser as el
alias volver una y otra vez 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 instruccin de
salto incondicional (goto), el uso del parmetro $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 un 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 carcter ASCII carcter ASCII nmero:
%num
inc %num
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

10

goto presenta
:fin
echo -s Fin de la tabla.
}

VENTANAS PERSONALIZADAS STANDAR


Las Ventanas Personalizadas en el mIRC
El mIRC nos permite la creacin de ventanas personalizadas que no son ms que
"ventanas" con diferentes atributos (que aprenderemos a asignar y modificar) y que
pueden ser usadas para cualquier tipo de accin, generalmente para mostrar
informacion al usuario, ya que se hace de una manera ms limpia y ordenada que
mostrando toda la informacin en la ventana de Status.
Despus veremos que tambien pueden ser usadas para la creacin de GUI's
(Interfaces Graficas de Usuario) mediante las picture Windows o ventanas de
imagen.
Este documento est pensado para que el lector y aprendiz de scriptter tenga un
primer contacto con las ventanas personalizadas y sea capaz de crearlas y
manipularlas a su gusto. Se han suprimido algunas funciones del comando window
bien por el escaso uso de estas o porque suponen alguna dificultad aadida que
solo la experiencia con el scripting nos ayudaria a superar.
En el presente texto se utilizarn las sigientes convenciones para presentar la
sintaxis de instrucciones y comandos: los argumentos entre < y > representarn
valores que es necesario introducir para la correcta ejecucion del comando,
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

10

mientras que los argumentos entre [ y ] son opcionales, y pueden ser omitidos a la
hora de ejecutar el comando.
La manera de seguir el documento, y aprender con l, es leerlo de arriba a abajo,
siguiendo todos los ejemplos y probandolos todos antes de seguir. Tambien es
conveniente que el lector modifique a su gusto los ejemplos que aqu encontrar
para que vaya experimentando con los comandos de creacion/modificacion de
ventanas personalizadas.
En este tutorial aparecen mucho las palabras "editbox" y "listbox", se refieren,
respectivamente, al campo de texto que tienen en la parte inferior ciertas ventanas
(como las ventanas de los salones), y a las listas de 'objetos' seleccionables que
tienen tambien ciertas ventanas (como la lista de nicks en los salones).
Y, por ltimo, antes de empezar, en este tutorial se presupone que el lector ya es
medianamente experto en el uso de Aliases, Popups, y Eventos Remotos

Creacin de Ventanas
Para crear una ventana personalizada usaremos el comando window con la
siguente sintaxis:
/window [-acdeEhkl[N]noprswx] [+bdelLmnstx] <@nombre> [x y [w h]] [popup]
Por ejemplo:
/window ad @miventana 10 10 200 100
Introduzca esta orden en mIRC y descubrir que ha creado una nueva ventana de
windows, ver que su nombre es "miventana" (el smbolo @ debe de especificarse
siempre al principio del nombre, esto corresponde al argunento <@nombre> en la
sintaxis general). Hemos utilizado dos parmetros en esta orden: -a y -d, esto ha
supuesto que se ha mostrado como ventana activa de windows y su icono ha
aparecido en la barra de tareas de la parte inferior de la pantalla. Observe que al
utilizar dos parmetros segidos solo hemos necesitado un smbolo "-" delante de
ellos. Los nmeros 10 10 200 100 especifican la ubicacin y dimensiones de la
ventana (corresponden respectivamente a los parmetros x, y, w, h); los dos
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

10

prineros deterninan la posicin dentro de la pantalla, los dos ltimos sus


dimensiones (ancho y alto).
La posicin de la ventana se basa en un sistema de coordenadas que toma como
origen la esquina superior izquierda de nuestra pantalla, y sita la esquina superior
izquierda de la ventana en el punto indicado, en este caso coordenadas 10,10.
Volvamos a la sintaxis general del comando window para analizarla ms
despacio, resulta un poco imponente pero veremos como examinando cada una de
sus partes es bastante ms asequible de lo que parece.
Existen dos grupos de parmetros que podemos emplear, por un lado [acdeEhkl[N]noprswx] y por otro [+bdelLmnstx]. De inmediato veremos la
utilidad de cada elemento de estos grupos. Una vez escritos los parmetros
deseados especificaremos el nombre que queremos dar la la ventana (siempre con
@ delante). A continuacin no queda sino concretar ubicacin y tamao de la
ventana, no es necesario especificar ninguno de los dos, en ambos casos se asumen
unos valores por defecto. Tambin tenemos la posibilidad de incluir al final del
comando el nombre de un fichero de popup's si deseamos que la ventana cuente
con sus propios mens emergentes, es decir, aquellos que aparecen pulsando
sobre ella con el botn derecho del ratn.
A continuacion puede ver una descripcion de para que sirve la primera tanda de
parametros del comando window que definiran el estado de la ventana:
-a : Activa la ventana.
-c : Cierra la ventana.
-d : Abre la ventana como ventana de escritorio ( se puede acceder a ella desde
la barra de ventanas de Windows).
-e : Aade a la ventana un editbox o lnea de escritura (como la que tienen en la
parte inferior los canales).
-E : Aade a la ventana un editbox de mltiples lineas lneas.
-h : Esconde la ventana.
-k : Esconde el prefijo '@' del nombre de la ventana.
-w : Devuelve el prefijo '@' al nombre de la ventana.
-l[N] : Aade una listbox (lista de elementos) a la ventana. Si se especifica N
(opcional) se crea una listbox con N caracteres de largo.
-n : Minimiza la ventana.
-o : Si la ventana es una ventana de escritorio, este parametro la pone y
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

10

mantiene siempre encima de todas las ventanas (on top).


-u : Desactiva el poner la ventana encima de todas (on top).
-p : Crea una ventana de imagen o "picture window" (esta opcin ser
analizada en un capitulo aparte).
-r : Restaura una ventana despues de minimizarla.
-s : Organiza por orden alfabtico la ventana.
-S : Organiza por orden alfabtico la listbox de una ventana.
-x : Maximiza la ventana.
Hasta aqui hemos visto la primera tanda de argumentos del comando window ,
no se asuste, la inmensa mayoria de las veces solo usar uno o dos de estos
argumentos, pero esta bien que los conozca por si los necesitara para alguna
ocasin en especial.
Ahora vamos con la segunda tanda de argumentos del comando, estos definirn la
apariencia de la ventana:
+b : Dibuja un pequeo borde alrededor de la ventana.
+d : Ventana sin borde.
+e : Dibuja un borde un poco mas ancho y redondeado.
+l : Ventana de utilidades.
+n : Boton de minimizar.
+s : Se puede cambiar de tamao.
+t : Con barra de titulo.
+x : Con boton de maximizar.
Despus tenemos que indicar el nombre de la ventana a crear/modificar :
<@nombre> : Por ejemplo, @mi_ventana
Por ltimo indicamos (opcionalmente) las coordinadas de la posicin inicial de
la ventana ( x y ) as como su longiud y altura (en pixels). w (longitud) h (altura)
[ x y [ w h ] ] : por ejemplo, 100 100 300 100
Las coordinadas x y significan la distancia en pixels desde el extremo izquierdo
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

10

de la pantalla, y desde el extremo superior de la ventana principal del mIRC (ojo,


que no es lo mismo que el extremo superior del monitor!).
Por ultimo el parmetro [popup] sirve para especificar un archivo que contenga
el men popup de la ventana (que aparecera al hacer click con boton derecho sobre
la misma). Se puede especificar un archivo (cuya extension NO sea .ini) o bien el
mismo nombre de la ventana (Ej: @mi_ventana) si se quiere implementar el popup
dentro de los remotes del script.

Edicin/Modificacin de Ventanas
Ahora que el lector ya sabe las posibilidades del comando window, veremos, ya
creada la ventana, que comandos podemos usar para modificar la informacion que
se muestre en ella.
El parmetro [c] esta presente en todos estos comandos, e indica el color
principal de la linea que aadir, borrar, o modificar . En cualquier caso tambin
se peden especificar controles de color (ctrl + k + color), negrita (ctrl + b) y
subrayado (ctrl + u) en el parmetro <texto>.
Estos comandos se refieren siempre a actuar sobre la ventana principal, en caso
de que queramos actuar sobre una listbox a un lado de la ventana, incluiremos el
parametro -l entre el nombre del comando y el parametro [c], por ejemplo /aline -l
@mi_ventana lo ke sea
/aline [c] <@nombre> <texto>
Aade la lnea <texto> a la ventana <@nombre>
Ejemplo: /aline 4 @mi_ventana Hola mundo!!
/cline [c] <@nombre> <N>
Cambia el color de la lnea nmero <N> al color nmero [c]
Ejemplo: /cline 4 #Maduras_y_Maduros 3
/dline [c] <@nombre> <N>
Borra la lnea (o el rango de lineas) numero <N>
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

10

Ejemplo: /dline @nombre 1-10


/iline [c] <@nombre> <N> <texto>
Inserta una lnea (<texto>) en la posicion <N>
Ejemplo: /iline @mi_ventana 2 Insertando una linea...
/rline [c] <@nombre> <N> <texto>
Sustituye la lnea <N> por <texto>
Ejemplo: /rline @mi_ventana 1 Hasta luego!!
/sline [c] <@nombre> <N>
Selecciona la lnea numero <N>
Ejemplo: /sline @mi_ventana 3
/renwin <@nombre> <@nuevo_nombre> [topic]
Cambia de nombre la ventana <@nombre> y (opcionalmente) cambia su topic o
descripcin
Ejemplo: /renwin @mi_ventana @tu_ventana Nuevo_topic
Ahora que el lector ya conoce todos los comandos que se usan para la
creacin/modificacin de ventanas, y antes de entrar en los eventos remotos
asociados a las mismas, vamos a hacer un par de ejemplos de crear ventanas, para
que se vaya familiarizando con estos comandos y compruebe por usted mismo que
no es tan complicado como quizs parece en un principio:
Ejemplo 1: Crear una ventana para dialogar con el usuario
Vamos a crear una ventana que mostrar una informacion al usuario y esperara
que ste le responda escribiendo en la editbox de la ventana:
Para ello escribimos en la seccin "Aliases" del Editor del mIRC:
/vent {
window -ae @dialogo 50 50 200 100 @dialogo
aline 12 @dialogo Hola, Cmo te llamas?
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

11

}
Si prueba ese ejemplo (escribiendo el alias "/vent" ), ver que se crea una
ventana de nombre @dialogo con un editbox abajo y nos aparece en ella el texto
"Hola, Cmo te llamas?". En este momento nos tendremos que detener aqui, ms
adelante veremos como puede hacer que al teclear algo en la editbox y pulsar
'Enter' , el script le responda adecuadamente.
Ejemplo 2: Ver un listado de archivos y mostrar informacion de los mismos
En este ejemplo crearemos una ventana con una listbox, en la que apareceran los
archivos mp3 de nuestro directorio de mp3 (se supondr que es c:\mp3), y al hacer
doble click sobre uno de los archivos se nos mostrara informacion de ese archivo
en la ventana principal. Escribiremos el siguiente cdigo en la seccion de "Aliases"
en el Editor del mIRC:
/mp3 {
window -l20 @mp3 50 50 600 200 @mp3
%i = 0
: comienzo
inc %i 1
if (%i > $findfile(c:\mp3,*.mp3,0)) { goto fin }
else {
aline -l @mp3 $nopath($findfile(c:\mp3,*.mp3,%i))
goto comienzo
}
: fin
unset %i
}
En el alias /mp3 hemos hecho lo siguiente: Primero creamos la ventana @mp3
con una listbox (de tamao 20 caracteres) y en la posicion x (50), y (50) y con un
tamao de 400 pixels de largo por 200 de alto.
Despues creamos una variable temporal %i y le damos el valor '0'. Iniciamos un
bucle cuya explicacion no forma parte de esta seccin as que se explicar
solamente en lineas generales lo que hace: incrementa %i en 1 y comprueba si el
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

11

valor de %i es mayor que la cantidad de mp3s en el directorio c:\mp3, en caso de


que %i sea mayor (querr decir que ya no hay mas mp3) vamos al indicador ": fin"
que dejara libre la variable temporal %i , y en caso de que el valor de %i sea menos
que la cantidad de archivos mp3 en c:\mp3 (quiere decir que aun hay al menos un
mp3 ms), se aade una lnea a la listbox de la ventana con el nombre del archivo
(sin la ruta, de ahi el $nopath() )
El resto de funcionabilidad de la ventana, el mostrar informacion del archivo al
hacer doble click sobre una de las lineas, la veremos ms adelante cuando hayamos
visto los eventos remotos.

Identificadores de Ventanas Personalizadas


Estos identificadores pueden ser usados en cualquier Alias, Popup o Evento
Remoto para recoger informacion sobre una determinada ventana:
$line(@nombre,N,[T])
Devuelve el contenido de la linea N de una ventana. Si N es '0' devuelve el
numero total de lineas en la ventana. El parmetro [T] es opcional, y se usa solo
cuando nos referimos a una listbox en un lado de la ventana, para ello le daremos
el valor '0' a T . Si nos referimos a una ventana sin listbox el parmetro [T] se
omite, y si nos referimos a una ventana con listbox, pero queremos informacin de
la ventana principal y no de la listbox, pondremos en lugar de [T] un 1.
Ejemplo: //echo -s $line(@mp3,2,0)
Devolver el contenido de la segunda linea en la listbox de la ventana @mp3
$sline(@nombre,N)
Devuelve el contenido de la linea seleccionada numero N (solo funciona en una
listbox). Si le damos el valor '0' a N, devuelve el numero total de lineas
seleccionadas en la listbox.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

11

$sline(@nombre,N).ln
Devuelve el numero de la lnea seleccionada numero N (N normalmente se pone
'1')
$window(@nombre).<propiedad>
Devuelve las propiedades de una ventana. Los valores posibles de <propiedad>
son:
$window(@nombre).x : Devuelve la coordinada x de la posicion de la ventana.
$window(@nombre).y : Devuelve la coordinada y de la posicion de la ventana.
$window(@nombre).w : Devuelve la longitud en pixels de la ventana.
$window(@nombre).h : Devuelve la altura en pixels de la ventana.
$window(@nombre).dx : Devuelve la coordinada x de la ventana con respecto al
escritorio (no a la ventana del mIRC).
$window(@nombre).dy : Devuelve la coordinada y de la ventana con respecto al
escritorio (no a la ventana del mIRC).
$window(@nombre).state : Devuelve el estado de la ventana (minimized,
maximized, normal o hidden).
$window(@nombre).title : Devuelve el texto en la barra de titulo de la ventana.
$window(@nombre).font : Devuelve el nombre del tipo de letra actual en la
ventana.
$window(@nombre).fontsize : Devuelve el tamao del tipo de letra actual en la
ventana.
$window(@nombre).fontbold : Devuelve $true si el tipo de letra esta en negrita, o
$false si no lo esta.

Definicin de popup's de Ventanas en la seccin de Remotes


Para definir el popup de una ventana personalizada sin necesidad de crearlos en
un fichero aparte podemos editarlos dentro de la seccin Remotes del editor del
mIRC, la forma de hacerlo es la habitual de los popup's. Tan solo es necesario
encerrarlos entre corchetes encabezar todo con la clausula MENU
<@nombre_ventana>.
MENU @nombre {
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

11

Popup1
.Sub-popup: /accion1
.Sub-popup2: /accion2
Popup2: /accion3
.....
}
Eso s, previamente tendremos que haber especificado en la definicin de la
ventana que queremos definir en popup en los remotes escribiendo el nombre de la
ventana como el parmetro [popup]:
Ejemplo: /window a @nombre 10 10 100 100 @nombre
Tambin podemos definir el popup de varias ventanas a la vez poniendo:
MENU @nombre1,@nombre2,@nombre3 {
... popup ...
}
Donde he puesto "...popup..." se ha de poner una secuencia de lineas con el
formato normal de un Popup. Para que se entienda mejor el uso de esta tcnica
aqu va un ejemplo que debe ser copiado en la seccin Remotes del editor del
mIRC:
alias miventana {
window -a @mi_ventana 10 10 200 200 @mi_ventana
}
Esto anterior tambien se puede hacer dentro te la seccin de ALIAS poniendo:
/miventana /window -a @mi_ventana 10 10 200 200 @mi_ventana.
Y ahora ya s, en remotes necesariamente:
menu @mi_ventana {
Decir Hola
.En rojo : /aline 4 @mi_ventana Hola!
.En negro: /aline 1 @mi_ventana Hola!
Decir Adios
.En Azul: /aline 12 @mi_ventana Adios!
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

11

.En Verde: /aline 3 @mi_ventana Adios!


Cerrar Ventana: /window -c @mi_ventana
}
El resultado de crear este codigo es que al teclear /miventana nos aparecer una
ventana personalizada en blanco y que, como le hemos especificado, usar como
popup el men @mi_ventana . Asi pues en el remote hemos declarado el "menu
@mi_ventana" y le hemos escrito unos popups de la manera habitual. Si pulsamos
el boton derecho sobre la ventana que hemos creado, veremos como aparece ese
popup que hemos creado.

Eventos ms Comunes en el uso de Ventanas Personalizadas


on 1:INPUT:@nombre:{
comandos
}
Este evento solo sirve para las ventanas que creemos que dispongan de una
editbox, ya que el evento INPUT "salta" cuando introducimos texto en una editbox
y pulsamos 'Enter'.
Tambin podemos usar el evento ON CLOSE:
on 1:CLOSE:@nombre:{
comandos
}
Los comandos que especifiquemos se ejecutaran cuando el usuario cierre la
ventana, ya sea mediante un popup, o mediante el boton de cerrar (la 'X') de toda
ventana de Windows.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

11

Y anlogamente tambien disponemos del evento:


on 1:OPEN:@nombre:{
comandos
}
Estos comandos se ejecutarn cuando se abra la ventana indicada.
Con lo que hemos visto hasta ahora, y un poco de prctica, el lector debe ser ya
capaz de crear sofisticadas ventanas personalizadas, modificar sus atributos,
aadirles mens emergentes, y ejecutar comandos cuando suceda algun evento en
las mismas (como abrir o cerrar la ventana). A continuacion vamos a repetir, y esta
vez a terminar, los dos ejemplos que se expusieron anteriormente, ya que ya se est
en condiciones de poder darles toda su funcionabilidad con lo que sabemos hasta
ahora:

Ejemplo 1: Crear una ventana para dialogar con el usuario


Primero copiamos el codigo que ya habiamos hecho antes en los Aliases:
/ventana {
window -ae @dialogo 50 50 200 100 @dialogo
aline 12 @dialogo Hola, Cmo te llamas?
}
Ahora nos vamos a la seccion "Remotes" y copiamos el siguiente codigo:
menu @dialogo {
Salir: window -c @dialogo
}
on 1:INPUT:@dialogo:{
%vari01 = me llamo
%vari02 = como ests?
if ( %vari01 isin $1- ) { /aline 12 @dialogo Hola $3 !! }
elseif ( %vari02 isin $1- ) { /aline 4 @dialogo Estoy bien gracias, y tu? }
elseif ( estoy isin $1- ) { /aline 3 @dialogo Pues me alegro... }
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

11

elseif ( idiota isin $1- ) { /aline 10 @dialogo Idiota tu !!!! }


elseif ( adios isin $1- ) { /aline 5 @dialogo Nos vemos! | window -c @dialogo }
else { /aline 6 @dialogo Lo ke tu digas... }
halt
}
Primero hemos creado la ventana @dialogo con el comando /ventana, a esta
ventana le hemos indicado que ha de tener una editbox (-e) y por lo tanto nosotros
podremos escribir en ella. Dependiendo de lo que escribamos, el script nos
responder de una forma u otra gracias al evento ON INPUT que controla el texto
que escribamos en la ventana especificada. Creo que el cdigo esta bastante claro
asi que al lector solo le queda copiarlo en el editor del mIRC, probarlo y
modificarlo a su gusto.

Ejemplo 2: Ver un listado de archivos y mostrar informacion de los mismos


Primero copiamos el cdigo que ya teniamos en los "Aliases" :
/mp3 {
window -l20 @mp3 50 50 600 200 @mp3
%i = 0
: comienzo
inc %i 1
if (%i > $findfile(c:\mp3,*.mp3,0)) { goto fin }
else {
aline -l @mp3 $nopath($findfile(c:\mp3,*.mp3,%i))
goto comienzo
}
: fin
unset %i
}
Ahora vamos a los "Remotes" y copiamos:
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

11

MENU @mp3 {
dclick: {
aline 4 @mp3 $findfile(c:\mp3,*.mp3,$sline(@mp3,1).ln)
aline 4 @mp3 $lof($findfile(c:\mp3,*.mp3,$sline(@mp3,1).ln)) bytes
aline 4 @mp3
$duration($calc($lof($findfile(c:\mp3,*.mp3,$sline(@mp3,1).ln)) /
16000))
}
Recargar mp3: window -c @mp3 | /mp3
Salir: window -c @mp3
}
Supongo que la principal pregunta al leer este codigo es: Que es "dclick"?. Eso
se explicar ms adelante, cuando veamos las ventanas de imagen (picture
windows), de momento ha de saber que el contenido de "dclick" se ejecuta cuando
hacemos doble click sobre una ventana de imagen o (como en este caso) sobre una
listbox. Es decir que cuando hagamos doble click sobre alguno de los objetos de la
listbox (que seran nombres de los mp3 que tengamos en el directorio c:\mp3) nos
aparecer en la ventana principal la ruta completa del archivo en la primera lnea,
el tamao de ese archivo (usando el identificador $lof ) en la segunda lnea y la
duracin aproximada del mp3, que se consigue dividiendo el tamao del mismo
por 16.000, en la tercera. Despues hemos aadido dos opciones al men popup de
la ventana, la primera Recargar Mp3 consiste en cerrar la ventana, y volverla a
abrir (usando el comando que habiamos creado anteriormente de nombre /mp3 )
Bien, vistos estos dos ejemplos, usted ya sabe lo suficiente como para hacer
ventanas personalizadas muy complejas y tiles, aunque si este es su primer
contacto con las ventanas personalizadas quizas sea una buena idea que antes de
ponerse a hacerlas, vea mas ejemplos de como se hacen en algn script.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

11

VENTANAS PERSONALIZADAS DE IMAGEN


Introduccin
Como se ya se describi en el captulo "ventanas personalizadas" el parmetro
p del comando window hace que creemos una ventana de imagen. Qu es una
ventana de imagen? Pues bsicamente es lo mismo que una ventana personalizada
normal, con la diferencia de que en sta en vez de aadir/borrar/modificar lneas de
texto, lo que haremos sera dibujar puntos, lineas, figuras o incluso mostrar
imgenes con formato .BMP. As pues las picture windows no son ms que tipo
especial de ventanas personalizadas, y este captulo lo dedicaremos integramente a
estudiar su creacin, manejo y posibilidades.
Pasando ya a la prctica, un ejemplo de cmo crear una ventana de imagen
podria ser el siguente:
/window p @mifoto 10 10 200 200 @mifoto
Esta lnea de cdigo har que se cree una ventana de imagen en blanco de
nombre @mifoto (recuerde que las ventanas personalizadas siempre llevan en su
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

11

nombre el prefijo @), en las cooridnadas x (10) y (10), de 200 pixels de largo por
200 de alto, y que adems use los mens popup que le especifiquemos bajo la
clausula o titulo menu @mifoto en la seccion de Remotes del editor del mIRC.
Hasta aqu no hacemos ms que repetir lo que se explic en el captulo anterior, la
diferencia es que esta es una ventana de imagen y nos permitir aplicar
tratamientos y procesos grficos.
Una vez creada la ventana ahora lo importante, y lo que la diferencia del resto,
son los comandos u modificadores que podemos emplear en ella. Con los
comandos que a continuacin se explicaran el lector sera capaz de dibujar figuras,
puntos, y lineas; poner texto en cualquier lugar, y mostrar imgenes .BMP tambien
en cualquier posicion dentro de la ventana.
Antes de empezar con este tema es importante definir a que me refiero cuando
empleo la palabra "rectangulo". La especificacin del rectngulo son 4 nmeros
que determinan la posicin y tamao de la ventana. Los dos primeros aluden a la
posicin en que se encontrar su esquina superior izquierda. El primero (x) ser la
distancia en pixels desde el borde izquierdo de la pantalla, el segundo (y) es la
distancia desde el borde superior. Los dos sigueinte nmeros definen el tamao de
nuestra ventana: ancho (w) y alto (h), siempre usando el pixel como unidad de
medida, por lo cual las dimensiones reales dependern del tamao y definicin de
su monitor.
Por ejemplo un rectngulo cuya esquina est en las coordenadas x = 30, y = 5, y
mida 100 pixels de largo por 120 de alto lo expresaremos como: 30 5 100 120.

Comandos para la Modificacin de Ventanas de Imagen.


Estos comandos, igual que pasaba con los de las ventanas personalizadas
normales se han de usar despues de haber creado la ventana, y pueden ser
insertados en cualquier Alias, Popup o Remote que declaremos.
/drawdot [hnri] @nombre <color> <tamao> <x y> [x y ...]
Dibuja un punto del color indicado (del 0-15) con un diametro (tamao en pixels) y
en las coordinadas x y dentro ventana de imagen.
No confundir estas coordenadas x e y con las coordenadas equivalentes que
usamos al crear la ventana, en este caso aluden a la posicin en que se dibujar el
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

12

punto dentro de la misma. Corresponden a una escala en pixels que tambin parte
de la esquina superior izquierda de la ventana creada, pero cuyos ejes son ahora el
borde superior e izquierdo de la misma ( no de la pantalla ).
Es decir, que si dibujamos un punto en las coordinadas x(0) y(0) tendremos un
punto cuyo centro estara en la misma esquina superior izquierda de la ventana de
imagen.
Se pueden especificar multiples coordenadas x,y en la misma orden, esto es, si
queremos dibujar varios puntos con el mismo comando.
Los parametros opcionales [-hnri] sirven para lo siguiente:
-h
Har que el icono de la ventana parpadee en el momento de
dibujarse el punto si se encuentra minimizada.
-n

Hace que la ventana no se actualice inmediatamente. Esto


podria ser util si antes de dibujar el punto queremos
cambiar el color del fondo o algo similar, aunque realmente
eso se conseguiria mas facilmente poniendo el comando
que cambiara el color de fondo antes que el que dibujara el
punto asi que este parametro rara vez lo usaremos...

-r

Indica que el <color> esta especificado en formato RGB


(Rojo,Verde,Azul). en caso de que usemos este parametro
tendremos que utilizar el identificador:
$rgb(rojo,verde,azul)
por ejemplo: $rgb(0,200,100)

-i

Dibujara el punto en modo inverso (color blanco y fondo


negro).

Ejemplo:
/drawdot r @mifoto $rgb(255,23,45) 5 10 10 12 10
Este ejemplo dibujara 2 puntos en la ventana @mifoto del color definido por el
valor $rgb(255,23,45) , con un diametro de 5 pixels.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

12

/drawline [-hnri] @nombre <color> <tamao> <x y> <x y> [x y...]
Dibuja una lnea del color <color>, que tenga un grosor de <tamao> pixels y
que vaya desde las primeras coordinadas <x y> que especifiquemos hasta las
segundas <x y>. Se pueden especificar opcionalmente ms parametros <x y> para
hacer una lnea que pase por los puntos definidos. Los parmetros [-hnri] hacen
exactamente lo mismo que en el comando drawdot, y de hecho comprobaremos
que a casi todos los comandos de modificacion de ventanas de imagen se les
pueden aplicar estos parmetros
Ejemplo:
/drawline @mifoto 4 10 20 0 20 100
Este ejemplo dibujar una linea en @mifoto de color rojo (4) y grosor 10 pixels,
que ir desde las coordenadas x(20) y(0) hasta x(20) y(100) . Es decir ser una
linea vertical.

/drawrect [-hnrifec] @nombre <color> <grosor> <x y w h> [x y w h..]


Dibuja un rectngulo del color <color> cuyo borde tenga un grosor de <grosor>
pixels, cuya esquina superior izquierda se encuentre en las coordinadas <x y>
especificadas, y que mida <w> pixels de largo por <h> de alto. Lgicamente si
incluimos un segundo juego de parmetros [x y w h] crear un segundo rectangulo
con esas caractersticas. Los parmetros [-hrni] una vez ms son los mismos que
los explicados en el comando drawdot, los otros sirven para lo siguiente:
-f

Una vez dibujado el rectngulo lo rellena con el color que


hayamos especificado para el borde, si no especificamos
este parmetro el rectangulo por dentro ser del color del
fondo.

-e

Dibuja una elipse en lugar en un rectngulo... que como


dibuja una elipse si lo que le estamos dando son las
coordenadas de un rectangulo? Pues simplemente dibuja la
elipse que cabra perfectamente dentro de ese rectngulo
que especificamos con <x y w h>.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

-c

12

Hace que el borde del rectangulo sea del color que le hemos
especificado, pero transparente.

Ejemplo:
/drawrect fr @mifoto $rgb(1,2,3) 10 30 30 200 200
Este ejemplo dibujar un rectngulo de color $rgb(1,2,3) , ya que le hemos
especificado el parmetro r , que estar adems relleno con ese color, y su esquina
superior izquierda estar en la posicin x(30) y(30) y medir 200 pixels de largo
por 200 de alto.
/drawfill [hnris] @nombre <color1> <color2> <x y> [archivo.bmp]
Rellenar el rea en el que est el punto <x y> con el color <color1>. Podemos
especificar que en vez de rellenar el rea con un color se haga con una imagen
BMP que tengamos. La imagen ha de ser del tamao 8x8 pixels, si tiene cualquier
otro tamao no funcionar. Los parmetros [-hnri] cumplen la misma funcin que
en los comandos anteriores.
La funcion del parmetro <color2> depende de si especificamos o no el
parmetro [-s]. Si ponemos -s el valor de <color2> indicar el color que deber ser
sustituido por <color1>. Si no incluimos -s el valor que le demos a <color2> ser el
color ante el cual el relleno deber parar.
Este comando resulta un poco complicado de explicar, asi que lo mejor ser que se
fije en el siguiente ejemplo:
Ejemplo:
/drawfill @mifoto 1 4 30 30 c:\imagen.bmp
Este ejemplo lo que har es que usando la imagen imagen.bmp (cuyo tamao es
de 8x8 pixels) y desde la posicion x(30) y(30) pegara multiples copias de esa
imagen para rellenar esa zona, parando ante cualquier lnea de color rojo, si
hubiera alguna.
/drawtext [-hnrpboc] @nombre <color1> [color2] [Tipo_letra]
[Tamao_letra] <x y [w h]> <texto>
Inserta un texto del color <color> en la ventana que especifiquemos y en las
coordinadas <x y>. Podemos aadir opcionalmente la longitud y altura del texto
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

12

(parametros [w h]), esto har que si el texto que escribimos es demasiado largo y
no cabe en el rectngulo que hemos indicado con [w h] aparezca solo el trozo que
quepa. El parmetro [color2] es opcional y sirve para especificar el color del fondo
del texto que escribamos. Los parmetros [Tipo letra] y [Tamao letra] tambin
son opcionales e indican el nombre del tipo de letra a usar (escribirlo todo junto,
sin espacios) y su tamao en puntos. [-hnr] tienen la misma funcion que en
anteriores comandos. En cuanto a los otros parmetros:
-p
Nos permite el uso de controles de color (ctrl + k) , negrita
(ctrl + b) y subrayado (ctrl + u) dentro del texto.
-b

ndica que se va a especificar el parmetro [color2] como


color de fondo para el texto. Si no usamos este parmetro,
[color2] deber ser omitido.

-o

Indica que el tipo de letra elegido debe ser en negrita.

-c

Indica que los parmetros opcionales [w h] van a ser


especificados.

Ejemplo:
/drawtext b @mifoto 4 9 MSTimesNewRoman 14 30 40 Probando el comando
drawtext
Este ejemplo pondr en pantalla la cadena de caracteres Probando el comando
drawtext de color rojo (4) y sobre un fondo verde claro (9), con el tipo de letra Ms
Sans Serif (recuerde que en el comando se ha de escrbir el nombre del tipo de letra
todo junto, sin espacios), de un tamao 14 puntos.
/drawcopy [-ihnt] @nombre [color] <x y w h> @destino <x y [w h]>
Copia parte de una ventana de imagen a otra parte de la ventana o a otra ventana.
Si especificamos los parmetros [w h] la seccion de la imagen que hayamos
copiado ser ensanchada/estrechada a ese tamao (el especificado por [w h]) en la
ventana de destino. Fjeses que si lo que quiere es copiar un trozo de una imagen
desde una seccion de una ventana a otra seccin de la misma ventana, @nombre y
@destino sern la misma ventana. Los parmatros [-ihn] son los mismos que
explicamos en /drawdot . y en cuanto a t indica que hemos especificado el valor
[color] como un valor $rgb equivalente al color que queremos que sea transparente
en la imagen que hayamos copiado.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

12

Ejemplo:
/drawcopy @miventana 0 0 100 100 @miventana2 10 10
Este ejemplo copiara el contenido de la ventana @miventana contenido desde
x(0) y(0) hasta x(100) y(100) a @miventana2 en la posicion x(10) y(10)
/drawsave @nombre <archivo.bmp>
Guarda la imagen de fondo actual de la ventana @nombre como un archivo de
nombre <archivo.bmp>
Ejemplo:
/drawsave @mifoto ventanita.bmp
Este ejemplo guaradar la imagen de fondo que tengamos en la ventana
@mifoto en un fichero con el nombre ventanita.bmp.

/drawscroll [-hn] @nombre <x> <y> <x y w h>


Desplaza la regin de la ventana comprendida en el rectngulo <x y w h>
(recuerde: x posicin x de la esquina superior izquierda, y posicin y de la
esquina superior izquierza, w longitud del rectngulo, h altitud del rectangulo,
todo en pixels) <x> pixels en el eje X y <y> pixels en el eje Y. Los valores de <x>
e <y> pueden ser un nmero negativo si queremos indicar que la regin se
desplaze hacia la izquierda o hacia abajo respectivamente. [-hn] son los mismos
que en el comando drawdot
Ejemplo:
/drawscroll @mifoto 10 20 50 50 200 200
Este ejemplo desplazar la regin de la ventana @mifoto contenida en el
rectngulo 50 50 200 200 10 pixels hacia la derecha y 20 hacia arriba.
/drawpic [ihntsc] @nombre [color] <x y [w h]> [x y w h] <archivo.bmp>
Y llegamos sin duda al comando ms til de todos los de las ventanas de
imagen, con este comando podremos cargar una imagen cualquiera <archivo.bmp>
(con formato .bmp) en una ventana, en las coordenadas que indiquemos <x y> . Si
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

12

indicamos la longitud y altitud [w h] la imagen sera ensanchada/estrechada a ese


tamao. El parmetro opcional [x y w h] lo usaremos para indicar qu parte del
archivo <archivo.bmp> queremos mostrar, til por si tenemos un bmp grande con
varias imgenes y queremos mostrar solo una de ellas. [-ihn] corresponden a los
parmetros explicados en drawdot. Otros parmetros que acepta este cmando son:
-t
Indica que hemos especificado el valor [color] con el
fomato $rgb(N,N,N) donde N es un numero comprendido
entre 0 y 255, y ese color ser tratado como transparente en
el archivo que queramos mostrar.
-s

Indica que hemos especificado los parmetros [w h] para


ensachar/estrechar la imagen.

-c

Indica que la imagen debe ser puesta en la memoria cach,


esto hace que si en la misma sesin quisieramos volver a
hacer uso de esa imagen, el tiempo de carga sera muy
inferior. La cach puede almacenar hasta un mximo de 30
imgenes, a partir de ese nmero empezaran a reemplazarse
las que lleven ms tiempo sin usarse por las ms nuevas.

Ejemplo:
/drawpic t @mifoto $rgb(0,0,0) 0 0 c:\foto.bmp
Este ejemplo mostrar la imagen c:\foto.bmp en la ventana @mifoto en las
coordinadas x(0) y(0) y las regiones de la imagen de color $rgb(0,0,0) (negro en
este caso) se mostrarn como transparentes (se ver el fondo de la ventana a travs
de esas regiones).
Con esto acabamos con los comandos para la modificacin de ventanas de
imagen. Como habr podido comprobar el dominio de las coordenadas x e y es
imprescindible, y tambin la unidad de medida de tamao de cualquier grfico por
ordenador, el pixel, para especificar los tamaos de las figuras y/o imgenes. Esto
slo se consigue mediante prctica, y los que anteriormente hayan usado un
programa de diseo grfico como Corel Draw o Photoshop ya tendrn algo de
camino andado en este tema. Seguidamente veremos los identificadores que nos
devolvern informacin especfica de una ventana de imagen.

Identificadores de Ventanas de Imagen


Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

12

$mouse.<propiedad>
$mouse.win : Devuelve el nombre de la ventana sobre la que se encuentra el raton.
$mouse.x : Devuelve la posicion x , relativa a la ventana de imagen, del raton.
$mouse.y : Devuelve la posicion y , relativa a la ventana de imagen, del raton.
$mouse.mx : Devuelve la posicion x relativa a la ventana principal del mIRC.
$mouse.my : Devuelve la posicion y relativa a la ventana principal del mIRC.
$mouse.dx : Devuelve la posicion x relativa al escritorio.
$mouse.dy : Devuelve la posicion y relativa al escritorio.
$rgb(n,n,n)
Este identificador ya lo hemos usado en la explicacin de los comandos, y sirve
para especificar un color, pero con ms detalle. Es decir que en vez de usar el color
con un nmero del 0 al 15, los indicaremos suministrando los valores de rojo,
verde y azul del color(RGB). Si no controlas el RGB no te preocupes siempre
puedes poner el color el el formato habitual (numero del 0 al 15).

$getdot(@nombre,x,y)
Devuelve el valor RGB del color del punto definido por los parmetros x e y .
$inrect(x,y,x2,y2,w,h)
Devuelve $true si el punto definido por x,y esta dentro del rectngulo definido
por x2,y2,w,h . En caso contrario devuelve el valor $false.
$height(texto,tipo_letra,tamao)
Devuelve la altura en pixels del texto especificado y con un tipo de letra y
tamao. Recuerda que el tipo de letra lo haa de escribir todo junto, por ejemplo:
TimesNewRoman.
$pic(archivo.bmp)
Este identificador se puede usar de 3 formas:
$pic(archivo.bmp).size : Devuelve el tamao del .BMP especificado.
$pic(archivo.bmp).height : Devuelve el tamao del .BMP especificado.
$pic(archivo.bmp).width : Devuelve el tamao del .BMP especificado.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

12

$width(texto,tipo_letra,tamao,B,C)
Devuelve la longitud en pixels del texto especificado y con un tipo de letra y
tamao. Si el parmetro B es diferente de 0 se tomar el tipo de letra en negrita.
Si el parmetro C es diferente de 0 se ignorarn el espacio ocupado por los
controles de color, negrita y subrayado.

Eventos y Remotes en las ventanas de imagen


Con las ventanas de imagen podemos usar los mismo eventos y manejo de
remotes que empleabamos en el resto de ventanas personalizadas, como por
ejemplo el evento ON INPUT (si la ventana contaba con una editbox) o los
eventos ON OPEN y ON CLOSE que se ejecutaban cuando abriamos o
cerrbamos la ventana en cuestin.
En lo que se refiere a ventanas de imagen, no existe ningn evento remoto para
ellas en especial, seguiremos usando por tanto los ya vistos en el captulo anterior,
pero eso s, a la hora de definir mens Popup dentro de la seccin Remotes para
una ventana de imagen, s que podr incluir nuevas funciones que ayudarn a sus
ventanas a ser un poco ms tiles y sofisticadas.
Por ejemplo, usted podr hacer que al pulsar en cierta regin de una imagen pase
una cosa, y al pulsar en otra regin pase otra cosa. Vayamos por partes, como he
dicho antes la nueva funcionalidad de las ventanas de imagen se implementar
donde en las ventanas personalizadas normales implementbamos el menu Popup.
Por ejemplo si creamos la siguiente ventana:
/window p @otraventana 100 100 100 100 @otraventana
Y queremos definir su menu popup, escribiremos en la seccin Remotes:
menu @otraventana {
}
Y aqu empiezan los cambios. Por supuesto, es perfectamente posible especificar
el men popup que queremos para esa ventana dentro de los corchetes pero eso
deber ser puesto al final. Y me explico: antes de escribir el men popup
podremos incluir una serie de "gatillos" que saltarn cuando ocurra cierto evento.
A continueacin se detallan cuales son estos gatillos que usted podr especificar
dentro de la clausula menu @otraventana:
mouse: Saltar cuando el ratn se mueva por encima de la ventana.
sclick: Saltar cuando el usuario haga click con el botn izquierdo sobre la
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

12

ventana.
dclick: Saltar cuando el usuario haga click con el botn derecho sobre la ventana.
uclick: Saltar cuando el usuario suelte el botn izquierdo del ratn.
lbclick: Saltar cuando se haga un click sobre un objeto de una listbox.
leave: Saltar cuando el ratn salga de a ventana (se mueva fuera de la ventana).
Cuando usemos este gatillo, podemos usar el identificador $leftwin que nos
devolver el nombre de la ventana de la que sali el ratn.
drop: Saltar cuando el usuario haga click con botn izquierdo sobre la ventana,
mantenga el botn pulsado, mueva el ratn y despus lo suelte otro lugar.
Antes de complicarlos ms, le presentar un ejemplo de cmo podra usar estos
click ( o gatillos) para que le quede un poco mas claro:
menu @otraventana {
mouse: /echo s El ratn se ha movido hasta $mouse.x $mouse.y
sclick: /echo s Ha hecho click en las coordenadas $mouse.x , $mouse.y
dclick: /echo s Ha hecho doble click sobre las coordenadas $mouse.x ,
$mouse.y
uclick: /echo s Ha soltado el boton en las coordenadas $mouse.x , $mouse.y
leave:{
echo s Ha salido de la ventana $leftwin
window c $leftwin
}
Popup 1
.sub-popup1: /comando1
.sub-popup2: /comando2
Popup2: /comando3
Popup3: /comando4
}
Ahora fjese bien en el cdigo que acaba de leer. Hay unas cosas importantes
que deberan de quedar claras con ese ejemplo:

Como ha visto los clicks de una ventana de imagen se especifican


dentro de la clausula menu @otraventana y siempre ANTES que el menu
popup.

El menu popup de la ventana se especifica, normalmente, de la misma


forma que en las ventanas personalizadas normales (despus de los "clicks").
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

12

Se puede hacer uso de los identificadores $mouse.x y $mouse.y para


hallar las coordenadas en las que se encuentra situado el ratn (siempre
relativas a la ventana de imagen).

Se pueden incluir varios comandos para un mismo click usando llaves


{ } como hemos hecho en el ejemplo del click leave.

Aunque le parezca increble, con lo que se ha explicado hasta ahora ya se puede


hacer cualquier cosa que haya visto en cualquier script que tenga que ver con
ventanas de imagen. El uso de estas ventanas no es sencillo, y se hace
verdaderamente muy pesado, as que sera conveniente que el lector se
asegurar de si en realidad va a valer la pena el hacer una ventana de imagen
para algo que quizs un simple menu popup podra solucionar. De cualquier
forma a continuacin se va a exponer y explicar un ejemplo que aunque tenga una
escasa utilidad servir para que pueda ver todos estos comandos e identificadores
en accin. En este ejemplo se da por hecho que los conocimientos del lector sobre
Aliases, Remotes y popups son suficientes.

Ejemplo 1: Crear una imagen interactiva


Para ello necesitaremos, primeramente, una imagen, usaremos la siguiente:
Esta en concreto tiene unas dimensiones de 100x73 pixels, este valor nos ser
util ms adelante, se supondr que la imagen se encuentra en c:\pregunta.bmp.

Ahora, como ya habr adivinado, lo que haremos ser transformar esa imagen en
una ventana de imagen, y hacer que si el usuario pulsa el ratn sobre SI, se cierre
el mIRC y, si por el contrario, pulsa sobre NO, se cierre la ventana de imagen y
que no ocurra nada ms. Por lo tanto lo primero ser crear un ALIAS que abra la
ventana de imagen y cargue en ella pregunta.bmp. Copiaremos lo siguente en la
seccin Aliases del editor del mIRC:
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

13

/pregunta {
set %longitud $pic(c:\pregunta.bmp).width
set %altitud $pic(c:\pregunta.bmp).height
/window p +b @pregunta 200 200 %longitud %altitud @pregunta
drawpic c @pregunta 0 0 c:\pregunta.bmp
}
Hasta aqu lo que hemos hecho es sencillo, declaramos el alias /pregunta. Y lo
que har ese alias es guardar la longitud en pixels del la imagen en la variable
%longitud , despus guardar la altitud en pixels de la imagen en la variable
%altitud. Seguidamente se declara la ventana de imagen @pregunta, usando el
parmetro +b para que no tenga barra de ttulo ni botones de minimizar, maximizar
y cerrar. Hemos usado las variables %altitud y %longitud para que la ventana sea
exactamente del mismo tamao que la imagen, de esa forma esta ocupar toda la
ventana y quedar bien (sin ningun espacio en blanco).
Despues mediante el comando drawpic hemos cargado la imagen en la ventana
que hemos creado y hemos metido esa imagen en la cache (mediante el [-c] ) para
que si la volvieramos a utilizar en la misma sesion se cargara ms rapidamente.
Ahora iremos a los remotes para definir el menu @pregunta y el gatillo que
har que cuando hagamos un click sobre SI, se cierre el mIRC, y que cuando
hagamos un click sobre NO, se cierre la ventana. Copie lo siguiente en los
Remotes:
menu @pregunta {
sclick:{
if ( $mouse.x > 49 && $mouse.x < 73 && $mouse.y > 46 && $mouse.y
< 78 ) exit
elseif ( $mouse.x > 118 && $mouse.x < 163 && $mouse.y > 44 &&
$mouse.y < 68 ) {
window c @pregunta
}
else { /echo s Haz click sobre SI o sobre NO ! }
}
Informacin de la imagen
.Cunto ocupa?: /echo s La imagen ocupa $pic(c:\pregunta.bmp).size
bytes
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

13

Cerrar ventana: /window c @pregunta


}
Esta es la seccin ms interesante del cdigo, y aqu se ha mostrado como se
har siempre que queramos hacer que ocurran cosas diferentes segn en qu la
regin pulsemos de una imagen. Para ello se ha recurrido al gatillo sclick que
como se explic antes salta cuando el usuario hace un simple click sobre la
ventana. Lo que pasar en este caso es que el script comprobar donde ha hecho el
click, y dependiendo de donde sea, ejecutar unos comandos u otros. Pero al mIRC
no le podemos decir si el usuario clickea sobre el SI haz esto y lo otro, al mIRC
le tendremos que decir si el usuario hace click en el rectangulo x y w h , entonces
ejecuta estos comandos.
Y eso hemos hecho, primero hemos abierto la imagen en un programa de diseo,
el Paint de Windows basta, y moviendo el ratn sobre la imagen nos aparece en la
esquina inferior derecha del programa las coordenadas por las que estamos
moviendo el raton, as pues apuntamos las coordenadas que definen el rectangulo
que contiene a la palabra SI. En este caso el rectangulo tendria su esquina
superior izquierda en x(49) y(46) y su esquina inferior derecha en x(73) y(78) .
Entonces le hemos dicho al mIRC: si cuando el usuario hace click el raton esta
entre las coornidadas x(49) y x(73) y adems esta entre las coordinadas y(46) e
y(78) eso necesriamente significa que el usuario ha hecho click sobre la palabra
SI y por lo tanto ejecutaremos el comando exit , que cierra el mIRC, no hace falta
que le digamos antes que cierre la ventana de imagen puesto que al cerrarse el
mIRC se cierran automaticamente todas las ventanas que haya creadas.
Anlogamente se ha seguido el mismo procedimiento para detectar si el usuario
hace click sobre NO, y en tal caso hacemos que se cierre la ventana de imagen y
que no pase nada ms. Por ltimo le hemos dicho que si el click no se produce ni
sobre la palabra SI ni sobre la palabra NO que nos salga un mensaje en la
ventana de status indicndonos donde tenemos que pulsar.
Visto eso, el resto es sencillamente el men que aparecer al pulsar boton
derecho sobre la ventana, que se especifica, como ya sabe, despues de el/los
gatillos que hayamos empleado.
Hasta aqu este tutorial de ventanas personalizadas. Soy consciente de que al
principio parecen muy complicadas, pero en realidad no lo son tanto, lo que s son
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

13

es muy pesadas de crear , por eso se recomienda que se usen slo cuando sea
estrictamente necesario, ya que la mayor parte de las veces se podra llevar a cabo
la misma tarea, y de una forma ms cmoda mediante popups. De cualquier forma,
se han comentado con detalles todas las posibilidades de las ventanas
personalizadas y de imagen para que tambin el lector ya experto les pueda sacar el
mximo provecho.

TUTORIAL DE DIALOGOS EN mIRC


Unas palabras antes de empezar
Los Dialogos fueron introducidos por primera vez en la versin 5.5 del mIRC.
Los Dialogos son la manera que pap Khaled nos da para acceder al GUI
(graphical user interface, interface grfico de usuario). Son para algunos ms
complejas de usar que las ventanas grficas, y para otros, como yo, menos. Como
ya comentamos los Dialogos vienen implementados desde el reciente mIRC 5.5,
pero es recomendable aplicarlos a partir de la version 5.51, que corrige algunos de
los bugs de la anterior.
Los Dialogos pueden parecer dificiles de entender en un principio, pero en un par
de intentos los estars usando con la misma facilidad que cualquier otro elemento
del scripting del mIRC.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

13

Creando un Dialogo
Los Dialogos se abren usando el comando /dialog. Su formato bsico es: /dialog
-modificadores nombre tabla. El nombre es simplemente el que usaras para
referirte a el en los remotes. La tabla es la base del Dialogo, o sea la definicin de
su estructura. Cuando se crea una tabla, es preferible usar una tabla no modal, o sea
una tabla que no interrumpir la ejecucin del script y operar independientemente
del script cuando sea llamada. Para crear una tabla no modal, se usa el modificador
-m
La tabla se pone en los remotes, con el prefijo "dialog". Dentro tendras que
poner los identificadores de los objetos y los comandos para crear el Dialogo, con
este formato:
dialog <nombredelatabla> {
comandos
}
Todos los elementos incluidos en la tabla requieren su propia etiqueta identifier
(id para acortar). De esta manera se asigna un nombre a cada elemento, que podra
ser usado posteriormente en un evento DIALOG o con el comando /did. Los id no
tiene por que ir en orden secuencial (1 2 3 4 5 etc...) pero haciendolo as podras
conseguir organizar los elementos del Dialogo mejor. El Id ms pequeo que se
puede usar es el 1 y el mayor el 250. Cada Id que pongas en la tabla ha de ser
nico, asi que no podrias tener en la tabla dos elementos con el Id de 7, por
ejemplo.
Es como en la vida real, por ejemplo los padres dan nombres individuales a sus
hijos, si imaginamos a una familia con 5 hijos que no tuvieran nombres, como
sabriamos cual es cual?. Lo mismo si tenemos gemelos y les llamamos a ambos
Rodrigo, como distinguirlos?. Por eso la obligatoriedad y unicidad de cada
nombre.
Cualquier $identifier o variable no se evalua dentro de una tabla. Una tabla simple
requiere al menos 3 elementos:
Elemento N 1: El titulo. Es lo que aparecera en la barra de titulo de nuestra
ventana Dialogo.
Elemento N 2: Las medidas. Determinaran la forma bsica de la ventana, tienen
el mismo formato que las que usa el comando /window: x y w h (coordenadas x e y
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

13

de la esquina superior izquierda de la ventana, y luego w anchura en pixels y h


altura en pixels). Si quieres poner el Dialogo en el centro de la pantalla, donde x e
y pon -1 en cada uno.
Elemento N 3: Un boton de OK/Cancel. Si no esta presente, el Dialogo no se
abrir. El formato es:
button "texto",id, x y w h,estilo (El estilo puede ser "default", "ok", o "cancel").
La x es la distancia en que el boton sera colocado, medida hacia la derecha desde la
esquina superior izquierda del Dialogo. La y es la distancia en que el boton sera
colocado, medida hacia abajo desde la esquina superior izquierda del Dialogo. La
w es la anchura del botn y la h la altura.
Ahora aplicaremos estos elementos para crear nuestro primer Dialogo.
En los Remotes ponemos:
dialog primero {
title "Este es nuestro primer Dialogo"
size -1 -1 300 100
; este tamao crea una ventana en la mitad de la pantalla (-1 -1) que sera 300 de
ancha y 100 de alta.
button "OK",1, 1 75 120 25, OK
; siempre se requiere un boton de OK o Cancel. El nombre del boton es 1. Sera
colocado a 1 y 75 pixels de distancia de la ;parte superior izquierda del Dialogo,
tendra 120 de ancho y 25 de alto, que es mas o menos el tamao de un boton
;normal.
}
Despues de crear el Dialogo, se visualiza con el comando /dialog -m primero
primero
Aparecera algo como esto:
1) Es el botn de OK que hicimos. No tiene por qu decir OK, puedes cambiarlo al
texto que quieras. Su Id es 1.
2) Este es el ttulo. Puedes cambiarlo en cualquier momento usando /dialog -t
nombre texto.

Poniendo elementos dentro del Dialogo


Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

13

Ahora veremos una lista de elementos que puedes usar en la tabla. Cada
elemento viene con un ejemplo, para activarlo se debe usar /dialog -m primero
primero

Escribiendo texto en el Dialogo:


Para ello debemos usar el elemento en la tabla. Su formato es: text "texto",id,x y
w h, estilo
El estilo es la alineacin del texto, y es opcional. Los estilos son:
Right: Pone el texto alineado a la derecha.
Center: Pone el texto en el centro del area de texto.
El area del texto es el definido por la anchura (w) y la altura (h).
Ejemplo:
dialogo primero {
title "Este es mi primer Dialogo"
size -1 -1 300 100
button "OK",1, 1 75 120 25, OK
text "Hola Gente!!!",2, 1 1 100 25
}

Creando una zona de edicion:


El elemento a incluir si queremos poner una zona de edicin de texto es edit
cuyo formato es: edit "texto",id,x y w h, estilo
Los estilos son: Right, center, multi, pass, read, return, hsbar, vsbar, autohs,
autovs
Multi permite crear una zona de edicin multilinea, para aadir lineas solo hay que
incrementar el valor de "h".
Pass permite crear una zona de edicin de passwords, donde cada caracter que
tecleamos se visualiza como un asterisco "*".
Read hace a la zona de edicin ineditable, y el area se colorea en gris. Puede ser
usado para ventanas de informacin.
Hsbar aade una barra de scroll horizontal.
Vsbar aade una barra de scroll vertical.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

13

Autohs aade una barra de scroll horizontal invisible que te permite seguir
escribiendo mas all de la longitud de la zona de edicin.
Autovs es lo mismo pero para una barra vertical.
Ejemplo:
dialogo primero {
title "Este es mi primer Dialogo"
size -1 -1 300 100
button "OK",1, 1 75 120 25, OK
edit "Texto por Defecto",2, 10 30 150 20
}

Para aadir una casilla:


Usaremos el elemento check . Su formato es: check "texto",id, x y w h,estilo
Los estilos son: left, push, 3state
Push: Crea un botn de pulsar, no una casilla.
3state: Crea una casilla de tres estados: 1) sin marcar 2) marcado 3) Marcado con
fondo gris.
Ejemplo:
dialogo primero {
title "Este es mi rpimer Dialogo"
size -1 -1 300 100
button "OK",1, 1 75 120 25, OK
check "3State Checkbox",2, 5 30 170 25,3state
}
Una ventaja de usar casillas de 3estados es que se pueden "bloquear" ciertos
parametros a activados o desactivados. Para bloquear nuestra casilla a "activado",
por ejemplo, pondramos el comando /did -cu first 2.

Para aadir un Boton de radio:


Elemento necesario: radio. Formato: radio "text",id,x y w h,estilo
Un boton de radio es as:
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

13

Estilos: left, push


Ejemplo:
dialogo primero {
title "Este es mi primer Dialogo"
size -1 -1 300 100
button "OK",1, 1 75 120 25, OK
text "Selecciona el Genero:",2, 1 1 140 25
radio "Masculino",3,1 20 60 25
radio "Femenino",4,1 40 60 25
}
Tambin se pueden hacer grupos de botones de radio, cosa que explicaremos ms
tarde.

Creando una Caja (frame):


Elemento necesario: box. Formato: box "texto de titulo",id, x y w h,estilo
No se conocen estilos disponibles.
Ejemplo:
dialogo primero {
title "Este es mi primer Dialogo"
size -1 -1 300 100
button "OK",1, 1 75 120 25, OK
box "Informacin sobre el Script",2, 20 5 110 60
text "Nombre: Script Dialogo",3, 25 20 60 25
text "Version: 1.0",4, 25 45 60 25
}

Aadiendo un Icono
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

13

Elemento necesario: icon. Formato: icon id, x y w h, nombre del fichero, indice
El indice es el numero de orden del icono dentro del fichero que deseas usar.
normalmente los ficheros de iconos slo tienen un icono en su interior, si es as
usaras 1 o incluso podras omitir el parmetro. Si usas Windows 95/98/NT, puedes
usar libreras de iconos como por ejemplo :
C:\WINDOWS\SYSTEM\PIFMGR.DLL (Sustituye c:\windows por la ruta del
Directorio donde tengas el Windows).
El "w" y "h" designa un area del Dialogo en donde la imagen se dibujar. Si la
imagen es mayor que este area, el mIRC la reducira hasta que entre.
Ejemplo:
dialogo primero{
title "Este es mi primer Dialogo"
size -1 -1 300 100
button "OK",1, 1 75 120 25, OK
icon 2, 1 1 36 36, C:\WINDOWS\SYSTEM\PIFMGR.DLL,1
icon 3, 40 1 36 36, C:\WINDOWS\SYSTEM\PIFMGR.DLL,2
icon 4, 80 -1 36 36, C:\WINDOWS\SYSTEM\PIFMGR.DLL,5
}
La primera linea de "icon" se refiere al primer icono localizado en pifmgr.dll
que sera dibujado en un area de 36X36.
La segunda linea de "icon" es el segundo icono localizado en pifmgr.dll que
sera dibujado en un area de 36X36.
La tercera linea de "icon" se refiere al quinto icono localizado en pifmgr.dll que
sera dibujado en un area de 36X36.
Podemos cambiar la imagen usando el comando dialog. El formato para ello es:
/did -g nombre id [n] nombredelfichero
[n] es el numero de indice opcional. Si el fichero solo contiene un grfico, entonces
[n] puede omitirse.
De manera que para cambiar el ltimo icono al icono de un teclado, usaremos:
/did -g tryhi 4 12 c:\windows\system\pifmgr.dll
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

13

Creando una Lista desplegable


Elemento necesario: list. Formato: list id,x y w h, estilo
Estilos: sort,extsel
Sort: Cualquier texto que se incluya en la lista ser ordenado alfabticamente.
Para aadir texto a la lista, usaremos el comando did -a nombre id texto. Se puede
usar tantas veces como se necesite. Si aades ms lineas de las que caben en el
espacio visible, aparecer una barra de scroll. La manera ms fcil de crear una
lista cuando creamos un Dialogo es usar el evento on *:DIALOG:first:init:0: (Este
evento se explicar ms tarde).
Ejemplo: Ponemos en el Remote:
on *:DIALOGO:primero:init:0:{
;este evento reacciona cuando el Dialogo es creado (init)
;entonces se usa did -a para poner texto en el elemento cuyo id es 2 (que es la
lista en este ejemplo)
did -a first 2 Pera
did -a first 2 Banana
did -a first 2 Naranja
did -a first 2 Manzanas
did -a first 2 Pias
}
dialogo primero {
title "Este es mi primer Dialogo"
size -1 -1 300 100
button "OK",1, 1 75 120 25, OK
list 2, 1 1 70 70, sort
}
Nota que el texto en la lista ha sido ordenado alfabticamente.

Creando un Combo box


Elemento necesario: combo. Formato: combo id,x y w h, estilo
Estilos: sort, edit, drop
Drop: Crea una lista desplegable.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

14

Ejemplo:
En el Remote ponemos:
Dialogo primero{
title "Este es mi primer Dialogo"
size -1 -1 300 100
button "OK",1, 1 75 120 25, OK
combo 2,1 25 120 140,drop
text "Cual es tu Fruta Favorita?",3, 1 1 180 25
}
on *:DIALOG:first:init:0:{
did -a first 2 Pera
did -a first 2 Banana
did -a first 2 Naranja
did -a first 2 Manzanas
did -a first 2 Pias
}

Aadiendo y Borrando texto dentro de un Dialogo ya creado


Esta tarea requiere el uso del comando /did. Su formato bsico es: /did -parametros
nombre id [n] [texto | nombredefichero]
Todo lo que esta entre [ ] es opcional. Como queremos aadir texto a un elemento,
necesitamos usar el parametro -a. Tambin necesitamos saber el id del elemento al
que queremos aadir texto. Por ejemplo, podemos renombrar el botn OK usando
el comando did. Para ello tecleamos, despus de abrir el Dialogo:
/did -a first 1 Pulsa Aqui
Usamos el 1 porque el ID de los botones de OK es 1. Pero no ests limitado a
renombrar botones, puedes aadir texto a la mayora de los elementos. Por
ejemplo, en el ltimo ejemplo (combo) si queremos cambiar "Cual es tu fruta
favorita?" a "Tu fruta favorita es?" usariamos el comando did. Como le dimos al
elemento "Cual es tu..." el id de 3, lo incluiriamos en el comando did.
/did -a first 3 Tu Fruta Favorita es?
Si tratas de cambiar el texto de un elemento, asegrate de que cabe. El
parametro w en la mayora de los elementos nos dice su longitud mxima y por lo
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

14

tanto la del texto que queremos poner dentro de l. Si ponemos el valor de h


mayor, entonces si el texto es demasiado largo saltar y continuar en una nueva
lnea.
Borrar todo el texto en un elemento es similar a cambiarlo. Su formato es: /did -r
nombre id. Ejemplo (usando el combo anterior). Abrimos el Dialogo, y tecleamos
/did -r first 2. Si ahora pinchamos en el combo no debera de haber elementos
dentro de l.
Pero que pasa si slo quiero borrar un elemento de los que hay en la lista del
combo? Entonces usamos el comando /did -d nombre id numerodelinea. En el
ejemplo del combo, tecleariamos /did -d first 2 3. El elemento "Naranjas" habra
desaparecido del combo.

Agrupando Botones de Radio


Sin grupos, mIRC asume que cada botn de radio de un Dialogo tiene relacin
con el anterior. Esto significa que en todo el conjunto del Dialogo, solo podras
tener un botn de radio seleccionado al mismo tiempo. La solucion es agrupar los
botones de radio. Al contrario que los grupos del Remote, no hace falta especificar
un nombre de grupo, ni empezar el grupo con #grupo on y acabarlo con #grupo
end. Para comenzar un grupo, se pone en el parametro "estilo" del primer boton de
radio del grupo, la palabra group. Pero solo para el primer boton de radio del
grupo, no se puede poner group en el estilo de ningun otro boton de radio que vaya
a ir en ese grupo. Estos grupos solo afectan a los botones de radio, a ningun
elemento mas. Para empezar otro grupo, con lo que terminariamos tambin el
anterior grupo, se debe poner un boton de radio con la palabra group en el estilo.
Veamos un ejemplo:
dialog first {
title "This is our first dialog"
size -1 -1 300 100
button "OK",1, 1 75 120 25, OK
text "Genero:",2,1 1 60 25
;comienzo del primer grupo
radio "Hombre",3,50 1 50 20,group
radio "Mujer",4,100 1 60 20
text "Estado Civil:",5,1 25 120 25
;aqui acaba el primer grupo y empieza el segundo grupo
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

14

radio "Soltero",6,70 20 50 25,group


radio "Casado",7,125 20 60 25
radio "Otro",8,190 20 60 25
text "Edad:",9,1 45 30 25
;aqui termina el segundo grupo y empieza el tercero
radio "Menor de 10",10,30 40 65 25,group
radio "10 a 20",11,100 40 65 25
radio "Sobre 20",12,165 40 65 25
}
El primer grupo de esta tabla empieza con el id 3, y termina con el id 4.
El segundo grupo empieza con el id 6, y tambin contiene el 7 y el 8.
El tercer y ltimo grupo empieza con el id 10, y tambin tiene el 11 y el 12.

Mas cambios de apariencia (Parte 1)


No solo puedes aadir o borrar texto de un Dialogo, tambin puedes
ensear/ocultar, dar foco/quitar foco, activar/desactivar, marcar/desmarcar, y
mucho ms. La mayora de estos cambios se hacen con el comando /did. Pero antes
de empezar a explicarlos, debemos conocer algo ms del evento "on dialog". Este
evento reacciona cuando algo pasa que afecta a algn elemento del Dialogo. El
formato es:
on *:DIALOG:nombre:evento:id:
Cuando se activa, el evento on DIALOG te permite usar tres nuevos
identificadores, $dname, $devent, y $did. $dname es el nombre del Dialogo en que
se activo el evento. $devent es el nombre del evento. $did es el id del elemento
afectado.
Hay varios tipos de eventos: init,sclick,edit,dclick.
init: reacciona justo antes de que el Dialogo sea visualizado, los controles pueden
ser inicializados con este evento. Su Id es cero.
edit: reacciona cuando el texto de una zona de edicin o de una combo cambia.
sclick: reacciona cuando se da un click en una lista o combo, o se marca/desmarca
una casilla o botn de radio, o se da un click en un botn.
dclick: reacciona cuando se da doble click en una lista o combo.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

14

Si quieres ver lo que ocurre en cada momento en un Dialogo, usa este cdigo:
on *:DIALOG:name:*:*: {
echo $dname $devent $did
}
Ahora vamos a cambiar un poco su apariencia, con los ejemplo que van a
continuacin.

Marcando/Desmarcando Radio/Combo
Si quieres marcar/llenar/seleccionar a una casilla/radio/combo, se necesita el
comando /did -c . Su formato es /did -c nombre id [numero]. El [numero] solo se
usa para marcar combos.
Ejemplos:
Para marcar la casilla "Entrar a salon On Connect" abrimos el Dialogo (/ss) y en
la ventana de status tecleamos /did -c setup 18
Para poner un punto en "Masculino" en el grupo de botones de radio de Genero,
abrimos el Dialogo y tecleamos en la ventana de estado: /did -c setup 11
Para seleccionar un canal en la lista de Favoritos, abrimos el Dialogo y
tecleamos: /did -c setup 14 2 Eso seleccionara el segundo canal favorito de la
lista.
Si quieres desmarcar una casilla o boton de radio debes usar el comando /did -u
command. Su formato es: /did -u nombre id
Ejemplos:
Para desmarcar la casilla " Entrar a salon On Connect ", teclea en la ventana
de status: /did -u setup 18
Si estas usando una casilla de 3 estados, entonces usariamos -cu como
modificadores, lo que dejara gris la casilla.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

14

Para quitar el punto del boton de radio Masculino del grupo Genero,
tecleariamos en la ventana de status: /did -u setup 11

Dando/Quitando Foco a un Elemento


Dar foco a un elemento es aadir un pequea linea de puntos a su alrededor,
como en el texto "Join Channels On Connect" de la imagen anterior.
El formato para dar foco a un elemento es: /did -f nombre id.
El formato para quitar foco a un elemento es: /did -t nombre id.
Ejemplos:
Para poner foco en el botn "Agregar Salon", teclea /did -f setup 14
Para quitar foco a ese botn, tecleamos /did -t setup 14

Activando/Desactivando Elementos
Cuando desactivas un elemento, se pone de color gris.
Para desactivar un elemento: /did -b nombre id
Para volverlo a activar, si estaba desactivado: /did -e nombre id
Ejemplos:
Para desactivar el botn "Quitar Salon", tecleamos en la ventana de estado:
/did -b setup 16
Para activar el botn "Quitar Salon", tecleamos en la ventana de estado:
/did -e setup 16

Ocultando y Mostrando Elementos


A base de ocultar elementos, podemos llegar a lograr distintas configuraciones
de Dialogo en una misma ventana de Dialogo. Podemos ocultar el botn OK para
usar la ventana solo para mostrar cosas, o tener slo una ventana de Dialogo llena
de elementos, de los cuales solo mostrariamos unos u otros dependiendo de las
circustancias.
Para ocultar un elemento, tecleamos /did -h nombre id
Para mostrar un elemento, tecleamos /did -v nombre id
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

14

Ejemplo:
Vamos a suponer que no queremos que en la ventana que estamos usando como
ejemplo se vea el botn "Entrar a Salon", entonces tecleariamos en la ventana de
status: /did -h setup 17
Y si lo queremos hacer visible de nuevo, tecleariamos: /did -v setup 17

Ms Cambios de Apariencia (Parte 2)


Ahora te preguntas: "Pero quiero hacer esos cambios en los dialogos
automticamente, como?". Aqu es donde entra el evento on DIALOG de nuevo.
Como dijimos antes, el evento on DIALOG reacciona cuando pasan ciertas cosas
en la ventana de Dialogo. Si quieres cambiar la apariencia de algunos elementos
cuando el Dialogo se carga por primera vez, debes usar este formato del evento: on
*:DIALOG:nombre:init:0: comandos.
Asi tambin es como puedes insertar variables/identificadores en el Dialogo, que
luego puedes evaluar con /did y /dialog.
on *:DIALOG:setup:init:0: {
;setup es el nombre del Dialogo. init es el evento que se activa
;la primera vez que se carga el Dialogo. 0 es el Id por defecto cuando un init
sucede.
did -a setup 21 < 5
did -a setup 21 5 to 9
did -a setup 21 10 to 14
did -a setup 21 15 to 19
did -a setup 21 20 to 24
did -a setup 21 25 to 29
did -a setup 21 29 to 34
did -a setup 21 34 to 38
did -a setup 21 38 to 42
did -a setup 21 43+
;estos did -a aaden elementos al combo desplegable que selecciona tu edad.
;asi se aade texto a un combo (ya sea un combo normal o desplegable).
if (%setup.connect == $null) { set %setup.connect off }
if (%setup.connect == on) { did -c setup 18 }
;este did -c comprueba el " Entrar a salon On Connect " si has pinchado sobre el
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

14

previamente
if (%setup.nick != $null) { did -a setup 5 %setup.nick }
;si ya has rellenado un nick entonces esto te lo mostrar
if (%setup.alt != $null) { did -a setup 7 %setup.alt }
;si ya has rellenado un nick alternativo entonces esto te lo mostrar
if (%setup.real != $null) { did -a setup 9 %setup.real }
;si ya has rellenado un "nombre real" entonces esto te lo mostrar
if (%setup.gender == male) { did -c setup 11 }
;si has seleccionado "male" como gnero, entonces did -c setup 11 pondr
;un punto en el botn de radio de "masculino"
if (%setup.gender == female) { did -c setup 12 }
;si has seleccionado "female" como gnero, entonces did -c setup 12
;pondr un punto en el botn de radio de "femenino"
update.setup
;update.setup es un alias que aade todos los canales favoritos al combo de
canales favoritos.
}
Cuando alguien hace un click (sclick) en un elemento del Dialogo, el evento
sclick es activado.
El identificador $did tendra el id del elemento sobre el que se hizo el click.
Si el sclick fue en una casilla, una manera de saber el estado actual de esa casilla
es usar $did(id).state. Si la casilla est marcada, devolver 1, si est desmarcada
devolver 0. Si la casilla est en gris, desactivada, devolver 2.
Cuando alguien teclea o borra texto de una zona de edicin el evento EDIT se
activa. Si se usa dentro del evento on DIALOG, $did(id).text devolver el texto
que hay en la zona de edicion.

Otros Comandos de los Dialogos


Aqu estn algunos de los otros comandos/parmetros que aun no he explicado:
Hacer el Dialogo una ventana de escritorio: /dialog -d nombre
Cambiar el ttulo del Dialogo: /dialog -t name TITULO
Cambiar el tamao del Dilogo: /dialog -s nombre x y w h
Hace que el Dialogo est por encima de las dems ventanas: /dialog -o nombre
Quita la caracterstica el Dialogo de que est por encima de las dems ventanas:
/dialog -n nombre
Hacer click en el botn de OK (lo que cierra la ventana): /dialog -k nombre
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

14

Hace click en el botn de Cancel (lo que cierra la ventana): /dialog -c nombre
Inserta texto en un elemento: /did -i nombre id linea
Sobreescribe texto en un elemento: /did -o nombre id linea texto

EL COMANDO /dialog (2)


Crear una ventana de dilogo totalmente independiente de la tarea que el mIRC
est realizando en ese momento, es decir que mientras la ventana de dilogo
permanece abierta usted podr acceder a las otras ventanas del mIRC (cosa que no
pasaba con los dilogos $?, $dir,... etc). Para mostrar en pantalla un dilogo,
usaremos la sintaxis: /dialog [mda] <nombre_dialogo> <nombre_tabla>
Donde <nombre_dialogo> es aquel con el que usted se referir al mismo, y
<nombre_tabla> es el nombre de una tabla de dilogo que usted tendr que
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

14

declarar ms adelante y en la que disear su aspecto, dimensiones y contenido


(posicin de los botones, botones de radio,... etc).
NOTA: Se puede, y de hecho es recomendable, usar el mismo nombre para el
nombre del dilogo y para la tabla, para evitar posteriores confusiones.
A continuacin tiene una explicacin de la funcin de los tres parmetros
disponibles, tenga en cuenta que el parmetro -m es obligatorio y sin l no se
crear nuestra ventana de dialogo:
-m: Es el parmetro que usar normalmente, sirve para crear una ventana de
dilogo sin ningn atributo, es decir que todos los atributos (ttulo, tamao...) sern
especificados en la tabla del dilogo.
Ejemplo: /dialog m midialogo mitabla
-ma: Crea una ventana de dilogo sin atributos (como la anterior) pero adems usa
la ventana activa como madre, es decir que al cerrar la ventana madre se
cerrar tambin la que hemos creado.
Ejemplo: /dialog ma midialogo mitabla
-md: Crea un dilogo sin atributos (puesto que lleva el parmetro -m) y lo abre
como ventana de escritorio (ser mostrada en la barra de tareas inferior de
Windows).
Ejemplo: /dialog md midialogo mitabla
Una vez creado, podemos volver a usar el comando /dialog, pero esta vez para
cambiar alguna de sus propiedades, y con la sintaxis:
/dialog [-tsonkc] <nombre_dialogo> [atributos]
Y dependiendo del parmetro que especifique en [-tsonkc], usaremos unos
atributos u otros (o a veces ninguno):
-x: Cierra una ventana de dilogo.
Ejemplo: /dialog x midialogo
-t: Cambia el ttulo de una ventana de dilogo.
Ejemplo: /dialog t midialogo Este es el nuevo ttulo
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

14

-s: Cambia el tamao y la posicin del dilogo en base a las coordenadas y


dimensiones que se especifiquen:.
Ejemplo: /dialog s midialogo 10 20 300 400
NOTA: Recuerde la definicin de rectngulo en el tutorial de ventanas de
imagen, el ejemplo de arriba pondr la esquina superior izquierda del dilogo en
las coordenadas x(10) y(20) y le dar un tamao de 300 pixels de largo por 400 de
alto.
-o: Pone el dilogo encima de todas las ventanas que tenga abiertas (on top), y
sigue estando encima aunque pulse fuera de ella.
Ejemplo: /dialog o midialogo
-n: Quita el atributo on top de un dialogo, es decir que ya no estar
permanentemente encima de todas las ventanas.
Ejemplo: /dialog n midialogo
-k: Provoca el efecto de pulsar el botn ok de un dilogo. Por defecto, el efecto
de este botn es simplemente el de cerrar el dialogo, pero ms adelante veremos
que le podr asignarle ms funciones.
Ejemplo: /dialog k midialogo
-c: Provoca el efecto de pulsar en un boton cancelar de un dilogo, que por
defecto es exactamente el mismo que el de un boton ok, pero al igual que en el
anterior, se podr modificar.
Ejemplo: /dialog c midialogo
Vista la creacin de ventanas de dilogo, ahora el tema ser como crear las ya
nombradas Tablas de dilogo
TABLAS DE DILOGO
Como hemos visto anteriormente en la creacin de dilogos, es necesario
especificar el nombre de una tabla en la que definiremos el ttulo,tamao y objetos
que habr en el mismo. En est seccin usted aprender a crear tablas de dilogo
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

15

revisando todas las posibilidades que nos ofrece el mIRC. La declaracin de tablas
de dialogo se hace en la seccin Remotes, y de la siguiente forma:
DIALOG <nombre_tabla> {
..........
}
Todo lo que hemos hecho es decirle al script que existe una tabla de dilogo de
nombre "nombre_tabla", pero para que esta sea vlida tendremos que incluir en
ella la declaracin de 3 cosas imprescindibles: El ttulo del dilogo (que aparecera
en la barra de ttulo del mismo), el tamao y posicin del dialogo (en el formato x
y w h ), y al menos un boton de tipo ok o cancel para cerrar el dilogo. Para
ello escribiremos lo siguiente:
Dialog mitabla {
title Aqu el ttulo
size <x y w h>
button Texto_del_boton,<ID>,<x y w h>,<estilo>
}
Donde dice x y w h recuerde que ha de poner las coordenadas que definen el
rectngulo al que se refiere: posicin de la esquina superior izquierda del dialogo
(x,y), longitud (w) y altitud (h) en pixels. Donde dice ID se refiere a un nmero
que asignaremos a cada objeto que aadamos a la tabla, ese nmero nos servir
ms adelante para referirnos a ese objeto, por lo tanto no se puede repetir la misma
ID en dos objetos dentro de una misma tabla. Y por ltimo el estilo, al tratarse de
un botn, en este caso ser uno de los siguientes:

ok: Crea un boton que cierre el dialogo al pulsarlo.

cancel: Crea un boton que tambien cierra el dialogo al pulsarlo.

default: Crea un boton que no cierra el dialogo, le podremos asignar


otra funcion ms adelante.
Antes de entrar en el resto de objetos que podr usar, veamos este pequeo ejemplo
para que vaya entendiendo el funcionamiento de las tablas, copie lo siguiente en
Aliases:
/Dialogo { dialog m midialogo mitabla }
Copie esto otro en Remotes:
dialog mitabla {
title "Hola Mundo!!"
size 20 20 120 100
button "Adis!!",1,20 20 80 50,ok
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

15

}
Si ahora escribe el alias (qie piede ser mediante un popups o escribiendolo en la
linea de comandos) que acaba de crear: "/dialogo", ver como le aparece una
ventana con el ttulo que ha especificado y con un bton de tipo ok (cierra el
dialogo al pulsarlo) , las coordenadas y tamao de la misma sern: 20 20 100
100.
A continuacin veremos ya la relacin de objetos que podemos declarar en una
ventana de dialogo:
title Ttulo
Como hemos visto en el ejemplo anterior, el texto que pongamos entre ser el
texto que salga en la barra de ttulo del dialogo.
size x y w h
Indica la posicin y tamao del dilogo. Si indicamos el valor -1 para x e y, el
dilogo aparecer centrado en la pantalla.
text Texto,ID,x y w h,estilo
Pone el texto que indiquemos en las coordenadas x y w h. Recuerde que a cada
objeto que ponga en el dilgo le ha de asignar un nmero ID, el que usted quiera
para despues referirse a ese objeto ms adelante. El estilo es opcional, si no se
especifica ninguno el texto estar alineado a la izquierda del rectngulo x y w h,
los estilos que puede utilizar son:

right: para alinear el texto a la derecha.

center: para centrarlo en el rectangulo x y w h.


edit Texto inicial,ID,x y w h,estilo
Inserta una caja de texto en el lugar indicado, con una posicion y tamao dados en
x y w h, y con uno de los estilos siguientes:
<en_blanco> : si no especifica ningun estilo: campo de texto normal con el texto
inicial alineado a la izquierda.

right: alinea el texto inicial a la derecha.

center: centra el texto inicial.

multi: crea un campo de texto con multiples lneas, para ello ademas
de especificar este estilo tendr que hacer el campo ms alto (aumentar el
valor h).
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

15

pass: til para introducir passwords, trasforma cada carcter que


escribamos en el campo en un asterisco (*).

read: para que el campo sea solo para mostrar informacin al usuario,
es decir que el texto que pongamos en ese campo no podr ser modificado
por el usario.

hsbar: pone una barra de desplazamiento horizontal en la parte


inferior.

vsbar: pone una barra de desplazamiento vertical a la derecha.

autohs: hace que el campo se desplaze automaticamente en horizontal


cuando introduzcamos un texto que ocupe ms que el tamao de la caja de
texto.

autovs: hace que el campo se desplaze automaticamente en vertical


cuando introduzcamos un texto que ocupe ms que el tamao de la caja.

button Texto del boton,ID,x y w h,tipo


Crea un botn en cuyo interior ponga el texto que especifiquemos, y lo posiciona
en las coordinadas x,y con un tamao de w pixels de largo por h de alto. Los
tipos posibles son:

ok: Al pulsar el botn se cerrar el dilogo.

cancel: Al pulsar el botn se cerrar el dialogo.

default: Al pusar el botn no se cierra el dilogo, especificaremos la


funcion de este tipo de botones ms adelante.
check Texto,ID,x y w h,estilo
Crea un botn checkbox o botones de seleccin de opciones (sirven
principalmente para activar/desactivar algo) en las coordenadas y con el texto
especificado. Los estilos posibles son:

right: el texto se coloca a la derecha del checkbox.

left: el texto se coloca a la izquierda del checkbox.

3state: pone un checkbox de 3 estados (pulsado, no pulsado, e


intermedio).

push: pone un tipo especial de checkbox que en vez de con casillas


pulsables, se hace mediante botones que permanecen pulsados.
radio Texto,ID,x y w h,estilo
Crea un botn de radio (sirven para elegir entre una entre varias opciones) en las
coordinadas x y w h y con el texto Texto. Los estilos posibles son:

right: el texto se coloca a la derecha del boton de radio.


Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

15

left: el texto se coloca a la izquierda del boton de radio.

push: pone un tipo especial de boton de radio hecho a base de botones


estandar.

box Titulo,ID,x y w h
Crea un rectngulo con el titulo, posicion y tamao especificados, se sule usar para
enmarcar grupos de objetos, por ejemplo grupos de botones de radio.
list ID,x y w h,estilo
Crea una lista de objetos en las coordinadas especificadas (siempre relativas a la
ventana de dilogo) en la que se podrn elegir uno o mas objetos a la vez de la lista
dependiendo del estilo. El cmo aadir mas objetos a la lista lo veremos ms
adelante. Los estilos posibles son:
<en_blanco>: si no especificamos estilo, se crea una lista en la que solo podemos
seleccionar un objeto a la vez y el
orden de estos ser el mismo en que los aadamos mas adelante.

sort: Ordena los objetos de la lista por orden alfabtico.

extsel: Permite seleccionar varios obajetos de la lista a la vez.


combo ID,x y w h,estilo
Crea una lista de objetos en la que solo se podr elegir uno de ellos, en las
coordenadas especificadas. Los estilos posibles son:

sort: ordena los objetos de la lista por orden alfabtico.

edit: pone una editbox arriba de la lista. Al pulsar en un objeto de la


lista ste aparece en la editbox y puede ser editado.

drop: pone un recuadro en el que al pulsar aparecer la lista de


objetos.

icon ID,x y w h,[archivo]


Inserta una imagen en formato .bmp en las coordenadas que indiquemos. Si los
valores w y h no coinciden con el tamao de la imagen, sta ser estrechada o
ensanchada al tamao que hayamos especificado, el parmetro archivo no hace
falta especficarlo ahora, lo podr hacer ms adelante.

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

15

Hasta aqu todos los objetos que puede poner en un dilogo. Adicionalmente a los
estilos que se han comentado, cualquier objeto puede adems contar con los
siguientes:

disable: Inabilita en objeto.

hide: Esconde el objeto.

group: Indica el comienzo de un grupo, til para marcar el comienzo


de un grupo de botones de radio, para ello en el primer botn del grupo
indicaremos el estilo group.

result: Indica que el contenido de este objeto ser el resultado que


devuelva el dialogo al pulsar el boton ok. Solo se usa cuando el dilogo lo
abrimos mediante el identificador $dialog (explicado m adelante).
Una cosa importante que debe saber es que se pueden especificar VARIOS
estilos a la vez con solo ponerlos separados con comas, por ejemplo:
edit Texto,4,10 10 100 20,autohs,right
NOTA: En la declaracin de objetos puede usar variables, es decir podr, por
ejemplo, mostrar en un campo de texto el valor de una variable.
Ya hemos visto todos los tipos de objetos que podr usar a la hora de crear una
tabla de dilogo, por supuesto no usar todos estos tipos en el mismo dilogo,
aunque podra hacerlo si quisiera... antes de seguir vamos a hacer un ejemplo de
una ventana algo ms complicada ya que con lo que sabemos hasta ahora es
posible crear la interfaz grfica de cualquier ventana de dilogo imaginable, lo
prximo ser proporcionar funcionabilidad a cada uno de los objetos... pero antes,
lo dicho, vamos a un ejemplo: Copie lo siguiente en Aliases:
/Dialogo2 { dialog m dialogo2 mitabla2 }
Y ahora copie lo siguiente en Remotes:
dialog mitabla2 {
title "Qu informacin se muestra dnde"
size 30 30 330 260
box "Mostrar informacin",1,10 10 150 100
radio "En Status",2,20 30 130 20,right,group
radio "En Ventana aparte",4,20 80 130 20,right
box "Otras opciones",5,170 10 150 100
check "Mostrar Nombre",6,180 30 130 20,push
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

15

check "Mostrar E-Mail",7,180 55 130 20,push


check "Mostrar Web",8,180 80 130 20,push
box "Datos",9,10 115 310 100
text "Su Nombre:",10,20 135 100 20
text "Su E-Mail:",11,20 160 100 20
text "Su Web:",12,20 185 100 20
edit "",13,100 135 180 20
edit "",14,100 160 180 20
edit "",15,100 185 180 20
button "Mostrar Informacin",16,40 225 130 25,ok
button "Cancelar",17,190 225 90 25,cancel
}
No se va a comentar el cdigo lnea por lnea puesto que sera repetir lo ya
explicado, pero una vez ledo y probado (usando el alias "/dialogo2" ) se debe
haber dado cuenta de unas cosas importantes:

Cada objeto tiene su ID, en este ejemplo se van numerando de 1 a N


siendo N el numero total de objetos, de esa forma ms adelante nos ser
ms facil acordarnos de la ID de un objeto.

Cuando el texto inicial de, por ejemplo, un campo de texto queremos


que sea nulo, es decir, que no haya texto inicial, se especifican las comillas
vacas .

Al pulsar en uno de los botones de radio, el resto quedan sin pulsar,


esto se ha conseguido indicando en el primero de ellos el estilo group. Si
hubiera otro grupo de botones de radio en otra seccion del dilogo haramos
lo mismo, indicaramos en el primer boton el estilo group.

El uso de box da un aspecto ms agradable al dilogo, su uso esta


muy recomendado para encuadrar objetos del mismo tipo o tema.

El identificador $dialog
Este identificador puede ser usado de varias maneras. Si en una tabla de un
dilogo especificamos en unos de los objetos el estilo result, y despus creamos
un dilogo usando este identificador, el valor que nos devolver el identificador
ser el mismo que el de ese objeto cuyo estilo es result. Para crear un dilogo
con este identificador usaremos la sintaxis:
$dialog(<nombre_dialogo>,<nombre_tabla>)
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

15

Pero por supuesto siendo un identificador no puede usarse independientemente


(como si fuera un comando) puesto que devuelve un valor que debemos de recojer,
lo tendremos que utilizar para darle un valor a una variable, por ejemplo:
%resultado = $dialog(midialogo,mitabla)
Tambin podemos usar este identificador sencillamente para obtener el nombre
de los dilogos abiertos en este momento, para ello usaremos la sintaxis:
$dialog(<nombre_dialogo>/<N>)
Devolver el nmero de dilogo en caso de que especifiquemos un nombre, o el
nombre del dilogo abierto numero <N> en caso de que optemos por especificar
ese parmetro. Ejemplo: %variable = $dialog(3)
Le da a %variable el valor del nombre del tercer dilogo que tengamos abierto en
ese momento.
Y el ltimo uso del identificador $dialog es para recoger informacin general de
un dilogo, como su tamao o su ttulo:

$dialog(<nombre>).x: Devuelve la posicin en el eje X del dilogo.

$dialog(<nombre>).y: Devuelve la posicin en el eje Y del dilogo.

$dialog(<nombre>).w: Devuelve la longitud en pixels del dilogo.

$dialog(<nombre>).h: Devuelve la altitud en pixels del dilogo.

$dialog(<nombre>).title: Devuelve el ttulo del dilogo.

$dialog(<nombre>).modal: Devuelve $true si el dilogo ha sido


creado con el identificador $dialog, o $false si el dilogo ha sido creado con
el comando /dialog.

$dialog(<nombre>).table: Devuelve el nombre de la tabla que est


usando el dilogo.

$dialog(<nombre>).ok: Devuelve la ID del botn con estilo ok.

$dialog(<nombre>).cancel: Devuelve la ID del botn con estilo


cancel.

$dialog(<nombre>).result: Devuelve la ID del botn que tenga como


estilo result.

EL COMANDO /did
Una vez abierta una ventana de dilogo lo normal es que queramos modificar
algo, quizas queramos aadir texto a un campo de texto, o poner una variable en
ste, para ello usaremos el comando /did que sirve para modificar una ventana de
dilogo que ya est abierta. La sintaxis es:
/did [ftebvhnmcukradiog] <nombre_dialogo> <id> [N] [texto/archivo]
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

15

Y a continuacin la explicacin de los diferentes parmetros que podemos usar con


este comando:
-f: Enfoca el objeto <id>. Ejemplo: /did f midialogo 20
-t: Hace que el bton <id> sea el bton por defecto (su funcion se producir
tambien al pulsar ENTER). Ejemplo: /did t midialogo 23
-b: Hace que no se pueda interactuar con el objeto <id>. Ejemplo: /did b
midialogo 12
-e: Devuelve la interaccin al objeto <id>, en caso de que se le hubiera quitado con
el parmetro anterior. Ejemplo: /did e midialogo 16
-v: Hace que el objeto <id> sea visible. Ejemplo: /did v midialogo 10
-h: Esconde el objeto <id> (lo hace invisible). Ejemplo: /did h midialogo 10
-m: (Slo funciona en campos de texto) Hace que el texto NO sea editable.
Ejemplo: /did m midialogo 30
-n: (Slo funciona en campos de texto) Deshace el parmetro anterior, es decir el
texto ya se puede editar en el campo de texto. Ejemplo: /did n midialogo 29
-c: Activa un checkbox o boton de radio (para ello NO se especifica [N] ), o
selecciona la linea N en una lista de objetos. Ejemplo: /did c midialogo 13 5
-u: Desactiva un checkbox o boton de radio (no se especifica [N]), o la linea [N] en
una lista de objetos deja de estar seleccionada. Para marcar un checkbox como
indeterminado (en caso de que sea de estilo 3state) usaremos los parmetros [-cu] a
la vez. Ejemplo: /did u midialogo 2
-k: (Slo funciona en listas de objetos) Al usarse junto con los parmetros [-c] o [u] har que se mantenga la seleccin que ya haba y aada o quite a sta la que
acabamos de hacer. Ejemplo: /did ck midialogo 4 2
-r: Borra todo el texto del objeto <id> (usado generalmente para campos de texto).
Ejemplo: /did r midialogo 3
-a: Aade una lnea de texto al final de la que ya haya en el objeto <id>.
Ejemplo: /did a midialogo 6 %variable
-d: Borra la linea [N] de texto de un objeto. Ejemplo: /did d midialogo 8 2
-i: Inserta una linea de texto en la posicin [N].
Ejemplo: /did i midialogo 10 2 Insertando entre 2 y 3 linea
-o: Sobreescribe la linea [N] con el texto especificado.
Ejemplo: /did o midialogo 10 1 Sustuimos la linea uno por este textpo
-g: Pone una imagen .bmp a un objeto de icono.
Ejemplo: /did g midialogo 10 c:\imagen.bmp
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

15

Vistas ya las formas para crear un a ventana de dilogo y modificarla a nuestro


gusto, y antes de entrar a ver el evento ON DIALOG que nos servir para asignarle
ciertas funciones a cada objeto, veamos un par de identificadores propios de los
dilogos que nos sern muy tiles para recoger informacin de las ventanas que
creemos.

El identificador $did
Este otro identificador nos servir para recoger informacin de los objetos de un
dilogo. sus posibles usos son:

$did(<nombre>,<id>).text: Devuelve el texto del objeto <id>.

$did(<nombre>,<id>,<N>).len: Devuelve la lingitud en caracteres de


la linea <N> del objeto <id>.

$did(<nombre>,<id>).lines: devuelve el numero total de lineas del


objeto <id>.

$did(<nombre>,<id>).sel: Devuelve el nmero de la linea


seleccionada.

$did(<nombre>,<id>).state: Devuelve el estado del objeto <id> ( 0 =


off ; 1 = on; 2 = indeterminado).

$did(<nombre>,<id>).next: Devuelve la id del prximo obejto en el


orden del tabulador.

$did(<nombre>,<id>).prev: Devuelve la id del objeto previo en el


orden del tabulador.
Una vez aprendidos estos identificadores, aparte de saber crear y modificar
ventanas, tan solo nos falta el ltimo paso, el decirle a determindo control que
ejecute determinados comandos, decirle a determinado campo de texto que ponga
su contenido dentro de determinada variable,... etc. Esto se consigue con un evento
remoto, el ON DIALOG, que a continuacin se expone con detalle.

EL EVENTO "ON 1:DIALOG"


Este es el evento que se usar para controlar la funcionabilidad del dialogo, la
sintaxis es la siguiente:
on 1:dialog:<nombre_dialogo>:<evento>:<id>:{ comandos }
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

15

En seguida se explicar la sintaxis anterior, antes debe saber que mediante el


evento ON DIALOG usted podr:

Hacer que se ejcuten los comandos que usted quiera al pulsar sobre
cada uno de los botones del dilogo.

Asignar a las variables mostradas en campos de texto, el valor que el


usuario indique en ese campo.

Inicializar campos de texto u otros objetos con la posibilidad de poder


usar variables si no lo ha hecvho al declarar la tabla.

Asignar funciones a ciertos objetos cuando se produzca un doble click


sobre los mismos.

El identificador $dname se puede usar dentro del evento y devolver


el <nombre_dilogo>.

El identificador $did se puede usar dentro del evento y devolver la


ID del objeto que haya causado el evento.

El identificador $devent se puede usar dentro del evento y devolver


el <evento>.
Pasemos a analizar, por tanto, cuales son las variantes del evento ON DIALOG:
on 1:dialog:<nombre_dialogo>:INIT:0:{ ...comandos... }
Se ejcutan los comandos que especifiquemos justo antes de mostrar el dialogo
en pantalla, es decir que usaremos este evento para inicializar ciertos objetos, por
ejemplo si queremos poner el contenido de una variable en un campo de texto, lo
haremos en este evento mediante un /did a <nombre_dialogo> <%variable>.
on 1:dialog:<nombre_dialogo>:SCLICK:<id>:{ ...comandos... }
Se ejecutan los comandos especificados cuando se produce un click sobre el objeto
con la id indicada.
Ejemplo: on 1:dialog:midialogo:sclick:3:{ %variable = 0 }

on 1:dialog:<nombre_dialogo>:DCLICK:<id>:{ ...comandos... }
Se ejecutan los comandos especificados cuando el usuario haga un doble click
sobre el objeto de la <id> especificada.
Ejemplo: on 1:dialog:midialogo:dclick:3:{ echo s Doble click sobre objeto
$did }
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

16

on 1:dialog:<nombre_dilogo>:EDIT:<id>:{ ...comandos... }
Se ejecutan los comandos cada vez que el usuario introduce o borra un carcter de
una caja de texto.
Ejemplo: on 1:dialog:midialogo:edit:5:{ %variable = $did(5).text
Bien, hasta aqu el manual de ventanas de dilogo, no son realmente
complicadas, sobre todo si se compara con la dificultad de hacer una ventana de
este tipo mediante ventanas de imagen. Por ltimo vamos a acabar el ejemplo que
iniciamos en una de las primeras secciones de este documento, slo que esta vez
podremos acabarlo y darle toda su funcionabilidad con lo que hemos aprendido:
Ejemplo : Creacin de un Dilogo con toda su funcionabilidad.
Antes que nada recordemos el cdigo que ya escribimos:
Copie lo siguiente en Aliases:
/Dialogo2 {
dialog m dialogo2 mitabla2
}
Y ahora copie lo siguiente en Remotes:
dialog mitabla2 {
title "Qu informacin se muestra dnde"
size 30 30 330 260
box "Mostrar informacin",1,10 10 150 100
radio "En Status",2,20 30 130 20,right,group
radio "En Ventana aparte",4,20 80 130 20,right
box "Otras opciones",5,170 10 150 100
check "Mostrar Nombre",6,180 30 130 20,push
check "Mostrar E-Mail",7,180 55 130 20,push
check "Mostrar Web",8,180 80 130 20,push
box "Datos",9,10 115 310 100
text "Su Nombre:",10,20 135 100 20
text "Su E-Mail:",11,20 160 100 20
text "Su Web:",12,20 185 100 20
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

16

edit "",13,100 135 180 20


edit "",14,100 160 180 20
edit "",15,100 185 180 20
button "Mostrar Informacin",16,40 225 130 25,ok
button "Cancelar",17,190 225 90 25,cancel
}
Este cdigo ya ha sido visto anteriormente as que doy por hecho que ya lo
entiende. Lo siguiente que haremos ser declarar en la seccin Remotes una serie
de eventos ON DIALOG para asingarle nuevos valores a esas variables (segn lo
desee elusuario) y despues para implementar la funcin del botn Mostrar
informacin. Copiemos lo siguiente en la seccin Remotes:
on 1:dialog:dialogo2:init:0:{
if (%mostrar.donde == status) { did -c dialogo2 2 }
if (%mostrar.donde == aparte) { did -c dialogo2 4 }
if (%mostrar.nombre == si) { did -c dialogo2 6 }
if (%mostrar.email == si) { did -c dialogo2 7 }
if (%mostrar.web == si) { did -c dialogo2 8 }
did -a dialogo2 13 %sunombre
did -a dialogo2 14 %suemail
did -a dialogo2 15 %suweb
}
En el evento INIT inicializaremos el dialogo, es decir, que si la variable
%mostrar.donde vale status, se activar el botn de radio correspondiente, lo
mismo pasa con los checkbox, que son activados por cdigo puesto que las
ventanas de dialgoo aparecen con todos sus objetos desactivados a no ser que se
especifique lo contrario. Por ltimo se pone el contenido de las variables del
nombre, email y web en sus campos de texto correspondientes:
on 1:dialog:dialogo2:sclick:2:{ %mostrar.donde = status }
on 1:dialog:dialogo2:sclick:4:{ %mostrar.donde = aparte }
Con ese cdigo haremos que segn pulse el usuario el un botn de radio u otro
la variable %mostrar.donde cambie y as podamos saber despuss donde quiere
mostrar el usuario la informacion, puesto que quedar almacenado en dicha
variable.
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

16

on 1:dialog:dialogo2:sclick:6:{ %mostrar.nombre = $iif(%mostrar.nombre ==


si,no,si) }
on 1:dialog:dialogo2:sclick:7:{ %mostrar.email = $iif(%mostrar.email == si,no,si)
}
on 1:dialog:dialogo2:sclick:8:{ %mostrar.web = $iif(%mostrar.web == si,no,si) }
Este otro trozo har que segn el usuario clickee sobre los checkbox estos
activen o desactiven la variable segn su posicin anterior, de ah el uso del
identificador $iif, que devolver la primera opcin si la condicin se cumple, y en
caso contrario devolver la segunda opcin siendo
$iif(condicion,1opcion,2opcion).
on 1:dialog:dialogo2:sclick:16:{
if (%mostrar.donde == aparte) {
window a @Informacion 100 10 300 200
if (%mostrar.nombre == si) { aline @Informacion Nombre: %sunombre
}
if (%mostrar.email == si) { aline @Informacion E-Mail: %suemail }
if (%mostrar.web == si) { aline @Informacion Web: %suweb }
}
else {
if (%mostrar.nombre == si) { echo s Nombre: %sunombre }
if (%mostrar.email == si) { echo s E-Mail: %suemail }
if (%mostrar.web == si) { echo s Web: %suweb }
}
}
En este trozo hemos especificado la conducta que esperamos del boton Mostrar
Informacin cuando sea pulsado, a pesar de la cantidad de lneas es un cdigo
muy simple y se limita a comprobar el valor de la variable %mostrar.donde para
averiguar donde quiere el usuario mostrar la informacion, y despus comprueba si
estn activadas las variables %mostrar.nombre, %mostrar.web y %mostrar.email:
para motrar o no esa informacin.
on 1:dialog:dialogo2:edit:13:{ %sunombre = $did(13).text }
on 1:dialog:dialogo2:edit:14: { %suemail = $did(14).text }
on 1:dialog:dialogo2:edit:15:{ %suweb = $did(15).text }
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

16

Por ltimo le tenemos que decir al script que cuando el usuario edite los campos
de texto 13,14 y 15 asigne el texto de esos campos como valor a sus respectivas
variables, para que despus puedan ser mostradas.
Bien, si ha llegado hasta aqu, ya debe ser un pequeo experto en este tema, en
este tutorial se han tocado detalladamente todos los aspectos de las ventanas de
dilogo, espero que haya aprendido de l.

AGRADECIMIENTOS
Es importante poner las cosas en su justo lugar y es por esto que agradezco los
aportes y material para este manual, de las siguientes personas :
Somatic
Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

Manual de Scriptig Por [ESpEcIaL[De]^[JaMon]^

16

Intercom
Byte
Roman Soft
Tempest (el viejo marino del Hispano)
Rusty
Sarrio
Estepario (aunque no lo sepa)

Y a muchos otros que sin saberlo, me han aportado importantes ideas, durante
las largas sesiones de IRC.
GRACIAS!!!!!! y este Manual es para Ustedes.

[ESpEcIaL[De]^[JaMon]^
www.geocities.com/especial_de_jamon

Baja el FMbRe SrT T 1.0 www.geocities.com/especial_de_jamon/

También podría gustarte