Documentos de Académico
Documentos de Profesional
Documentos de Cultura
[ESpEcIaL[De]^[JaMon]^
www.geocities.com/especial_de_jamon
INDICE TEMATICO
Baja el FMbRe SrT T 1.0 www.geocities.com/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/
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".
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.
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,
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.
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
11
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
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.
/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/
14
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:
16
17
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/
18
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/
19
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
20
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/
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/
23
24
25
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.
27
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>
El
El
El
El
El
El
El
El
El
El
El
El
28
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/
30
31
32
33
34
35
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.
37
=========================================================
Modos de Salon
===========================================================
Modos
Efectos en Salones
===========================================================
b <usuario>
i
l <nmero>
Modos Usuarios
===========================================================
Modos
Efectos en nicks
===========================================================
i
o
38
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/
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/
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/
41
42
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.
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
ServerOp
SNotice
Start
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
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/
47
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>
49
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/
50
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/
52
53
54
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/
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
2: *!*@host.dominio
4: *!*@*.dominio
7: nick!*@host.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/
57
58
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/
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.
61
62
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/
&
Texto
Texto*
*Texto
*Texto*
64
65
Nota: Este evento se producir solo ante textos de otros usuarios, los de usted no
desencadenarn el evento.
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.
67
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/
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.
69
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!
70
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
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/
71
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/
72
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/
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.
74
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/
75
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/
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/
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/
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.
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/
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
81
82
83
84
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/
85
86
87
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.
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.
89
90
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/
91
92
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.
$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/
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.
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.
/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/
95
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.
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/
97
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/
98
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
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/
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:
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
}
}
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/
10
goto presenta
:fin
echo -s Fin de la tabla.
}
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/
10
10
10
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/
10
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/
11
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.
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/
11
11
11
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.
11
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.
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
-r
-i
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/
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.
-e
-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/
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
-o
-c
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/
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.
12
-c
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.
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/
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.
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:
12
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/
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/
13
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.
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/
13
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
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
}
13
Aadiendo un Icono
Baja el FMbRe SrT T 1.0 www.geocities.com/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/
13
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
}
14
14
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.
14
Para quitar el punto del boton de radio Masculino del grupo Genero,
tecleariamos en la ventana de status: /did -u setup 11
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
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
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.
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
14
14
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:
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:
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/
15
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.
15
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.
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:
15
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/
15
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/
15
15
El identificador $did
Este otro identificador nos servir para recoger informacin de los objetos de un
dilogo. sus posibles usos son:
15
Hacer que se ejcuten los comandos que usted quiera al pulsar sobre
cada uno de los botones del dilogo.
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/
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/
16
16
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/
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