| 1.-
INTRODUCCIÓN Se conocen como EVENTOS, en informática, todos aquellos sucesos que se producen a lo largo de una sesión de trabajo de un programa, y que éste es capaz de detectar y controlar. La programación 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 atención a algunos sucesos, y le obligamos a que analice dichos eventos a fin de determinar si se reúnen 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 configuráble y personalizáble a través de la definición de Alias, Popups, y Remotes. Dentro de este último grupo provee una de sus herramientas más potentes: la posibilidad de programar acciones orientadas a un grupo de eventos propios de una sesión 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
estándar, que son los que se describen aquí, y los
eventos CTCP que describiré en un capítulo aparte, y
los eventos RAW que se explicarán en el apartado
Números Raw. Por ejemplo, es muy sencillo hacer que el
programa detecte cada vez que, en cualquier canal en el
que estemos, alguien escriba nuestro nick (supongamos que
es SomaTic), y en consecuencia, si lo deseamos, comunicar
privadamente a esa persona que no estamos prestando
atención en ese momento. No habría más que recurrir al
evento "onTEXT", quizás el más importante de
todos. Pulsamos el botón "OK" y trabajo concluido. Desde este momento, si {_PePe_} menciona el nombre de SomaTic recibirá un mensaje que solo podrá ver él (notice), en el que le decimos: "Perdona {_PePe_} no estoy prestando atención!!!". Al margen de la sintaxis de la línea, que veremos más adelante, la objeción es evidente: ¿Y que pasa si SÍ estamos prestando atención? ¿tenemos que ir otra ver a la ventana de edición de eventos y borrar lo que pusimos?. Bueno, es una posibilidad, pero afortunadamente también tenemos la facilidad de hacer que la acción de los eventos que deseemos se active y desactive a nuestra voluntad. Vayamos de nuevo a la ventana de edición de eventos y escribamos lo siguiente en las líneas anterior y posterior a la que escribimos antes: #ausente off y #ausente end. El bloque total (grupo) quedará de la siguiente forma:
De esta forma podemos crear bloques o grupos de
eventos con tantas líneas como deseemos en su interior.
Para activar o desactivar su efecto debemos de incluir
las instrucciones: .enable #ausente
y .disable #ausente dentro
de algún alias o de un menú (si esto le causa problemas
ahora es el momento que estudiar a fondo las secciones de
aliases y popups del mIRC ;)). (el punto delante de las
cláusulas enable y disable tiene el único fin de
inhibir el mensaje que el programa presenta en pantalla
anunciando la activación o desactivación del
grupo). Como ya se ha podido observar en el
ejemplo anterior, lo que hemos dado en llamar un la
línea de evento se forma mediante una cadena de
caracteres en la que los distintos campos de información
están separados por el símbolo de los dos puntos. Los
campos son los siguientes: En el primer campo es necesario especificar en nivel
de acceso remoto que ese usuario tiene a nuestro sistema.
Este es un tema algo complejo en el que no procede entrar
ahora, baste saber que este nivel es un número que marca
la capacidad de acceso que cada usuario tiene para
ejecutar comandos del IRC de forma remota dentro de
nuestro ordenador. No se alarme, nadie tendrá un nivel
que usted no le haya concedido previamente, y este para
los comandos que usted especifique. Para comprobar quien
tiene nivel de acceso remoto a su sistema no tiene más
que mirar en la solapa de "USERS" de la misma
ventana desde donde introducimos los eventos, ahí puede
añadir o borrar lo que desee. En principio, y para todos
los efectos de este documento, podemos considerar el
nivel de acceso 1 que es el que otorga el programa por
defecto a todos lo usuarios; por tanto, en este caso el
primer campo sería: on 1.
El cuarto campo es "lugar", es decir, el
canal, privado...etc. donde el mIRC vigilará la
circunstancia 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 texto del mensaje que deseamos que produzca el
evento se puede especificar de varias maneras:
Esta instrucción detectará cuando alguien diga la palabra "Hola" en cualquier canal que nos encontremos, y automáticamente le dará la bienvenida al canal en cuestión. El identificador $+ elimina los espacios en blanco que tiene a ambos lados, de ese modo podemos hacer que el nick de la persona que ha dicho "hola" aparezca en nuestra respuesta seguido del símbolo "!", si escribimos directamente este símbolo a continuación de $nick este no será reconocido como un identificador del nick del usuario, sino que aparecerá literalmente como está en la orden. También es posible emplear variables
para dar más flexibilidad al formato del evento, por
ejemplo: Este ejemplo trabajará con los valores previamente guardados en las variables %text, y %canal. Nota: Este evento se producirá solo
ante textos de otros usuarios, los de usted no
desencadenarán el evento.
Tienen el mismo formato que on TEXT, y se
producen a partir de una acción o de una noticia
respectivamente. Recordemos que una noticia se produce
cuando alguien nos envía un mensaje con el comando /notice, y una acción cuando
alguien efectúa una acción de control dentro del canal;
por ejemplo: Esta orden detectará cualquier acción
que contenga la cadena "Set mode", y emitirá
un mensaje al canal en que se produce. Esta orden detecta cualquier /notice recibido estando en un
privado, y responde con otro /notice
al autor.
Estos eventos se producirán cuando un usuario sea baneado o desbaneado en el canal.
El segundo ejemplo es una acción múltiple que quita
el estatus de operador al usuario que puso el ban, y
elimina este cuando el usuario baneado tiene nivel 9 o
superior en la lista de usuarios de nuestro programa (la
función $banmask devuelve la máscara de baneo que fue
empleada, y se usa, en este caso, para eliminar dicho
baneo). Observe en este ejemplo el uso de la función $bnick. Esta devuelve el nick del usuario baneado o desbaneado, pero solo en caso de que dicho nick este incluido dentro de la máscara del baneo. En caso contrario $bnick = $null (nulo). Es posible tener en cuenta en la sintaxis
de la instrucción los niveles del baneador y del
baneado. A este fin se puede preceder el número de l
nivel de los signos: <,>,<=,=>,<>, ó
=. Por ejemplo: En esta situación, si el nivel del baneador es mayor o igual que el del usuario baneado, se comunica queeste es un ban legal (como se podría 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 su cuando da sus direcciones. Observe el siguiente ejemplo:
Esta rutina se inicia cada vez que se produce una
acción de baneo en un canal en que nos encontramos. En
primer lugar comprueba que la máscara del ban coincide
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
máscara con la que se ha hecho el ban, a continuación
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.
Los eventos on CHAT y on SERV se producen cada vez que es enviado un mensaje la una ventana de DCC chat, o a un Fserve respectivamente. Es similar al evento on TEXT, el cual no funciona en un chat ni en un servidor de ficheros.
La especificación del texto que producirá el evento
se hace de la misma forma que en ON TEXT.
Estos eventos se producen al abrirse o cerrarse (respectivamente), una sesión de DCC chat.
Ejemplos: Esta instrucción envía una frase al DCC
chat cuando este se abre por primera vez. El uso del
signo "igual" delante de $nick es necesario
para que el mensaje se dirija a la misma ventana del DCC
chat, y no a una ventana privada aparte. Esto se produce al cerrar la ventana del
DCC chat.
Estos eventos se producen al abrirse o cerrarse (respectivamente), una sesión del FSERVE .
El evento on CONNECT se produce cuando mIRC conecta al server de IRC, después de visualizar el MOTD (mensaje del día del servidor).
on DISCONNECT es otro evento con el mismo formato, que se produce al desconectarse del server. Ejemplo: on
1:CONNECT:/echo Conectado a $server a las $time Tu nick
es: $nick
Ver evento on TEXT para los formatos de texto aceptados. Ejemplo: on
1:CTCPREPLY:PING*:/echo -s $nick ha respondido al ping!
Se producen cuando un usuario del canal es opeado o deopeado.
El evento on SERVEROP es exactamente igual, y se
produce cuando un usuario es opeado por el server. En este ejemplo el evento se produce cuando es opeado un usuario de nivel de acceso 9 en nuestra sección 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 instrucción los niveles del opeador y del
opeado. A este fin se puede preceder el número de nivel
de los signos: <,>,<=,=>,<>, ó =. Por
ejemplo: En esta situación, si el nivel del opeador es mayor o igual que el del usuario opeado, se comunica que este es un op legal (como se podría 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.
Ejemplos: on 9:VOICE:#:/mode $chan -v $vnick | /msg $nick No des voz o ese tío! Esta orden se ejecuta cuando el que
recibe voz tiene nivel 9 o superior. Devuelve la voz al que se le quite en el canal. Son aplicables también los prefijos de
comparación de niveles descritos en on BAN y on
OP.
Se produce cuando hacemos un requerimiento DNS (comando /dns).
Ejemplo:
Ver el evento on TEXT para el formato del texto. Ejemplos: on 1:ERROR:*banned*:/echo Has sido baneado de este server!
Los eventos on SENDFAIL y on GETFAIL se producen cuando un dcc send o un dcc get son fallidos. Ejemplos: on 1:FILESENT:*.txt,*.ini:/echo Enviado $filename a $nick $address Se produce cuando enviamos un fichero .TXT o INI. $filename devuelve el nombre del fichero enviado. on 1:FILERCVD:*.txt,*.ini:/echo Recibido $filename de $nick | /run notepad.exe $filename Esta orden avisa cuando hemos recibido ficheros .TXT e .INI, y abre el bloc de notas para ver su contenido.
Se produce cuando introducimos texto en una caja de texto y pulsamos INTRO.
La función $1- devuelve en este caso toda la cadena
de texto introducida.
Se producen al entrar o salir un usuario de un canal en que nos encontramos
Se produce cuando un usuario es expulsado de un canal en el que nos encontramos.
Es aplicable también aquí la regla de comparación
de niveles de los nicks descrita el los eventos on BAN y
on OP.
Se produce cuando el mIRC termina la reproducción de un fichero MIDI o WAV
Este evento no tiene funciones asociadas. No se
producirá si la reproducción se detiene a causa de una
interrupción, solo lo hace cuando la reproducción es
completada.
On 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 $1- Esta instrucción se produce cuando
alguien cambia los modos del canal teniendo nosotros
también el estatus de operador.
Se produce cuando un usuario cambia de nick dentro del canal.
$nick devuelve el nick antiguo; $newnick el
nuevo.
Este evento se produce cuando alguien activa un sonido en el canal y el mIRC no encuentra el fichero midi o wav en nuestros directorios de sonidos, los especificados en el dialogo FILE/OPTONS/SOUNDS
Se producen al entrar o salir del IRC un usuario que se encuentra en nuestra lista de notificaciones.
Se producen respectivamente al abrirse una ventana de query.
Se produce cuando un usuario que está en nuestro canal sale del IRC.
Se produce cuando recibimos una noticia del server.
Para una explicación 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.
Se produce cuando algún usuario cambia el tópico del canal.
La función $1- devuelve el texto completo del nuevo
tópico.
Se produce cuando cambiamos nuestros modos de usuario.
Se produce cuando recibimos un wallops message.
Ver el evento on TEXT para una explicación de los
posibles formatos del texto.
Se produce cuando algún usuario cambia el tópico del canal.
La función $1- devuelve el texto del nuevo tópico. Documento escrito por SomaTic ( sucubus@arrakis.es ) |