SCRIPTING
Constituye esta
parte del mIRC uno de los apartados con más fama de
escabrosos y difíciles para los aficionados a los scripts; la
verdad es que no es para tanto, el programa permite trabajar
con este recurso de una manera bastante sencilla, y presentar
resultados de configuración muy espectaculares y potentes.
Vamos a analizar el tema paso a paso y veremos porqué no es
tan fiero el león como lo pintan J .
Las características del
trabajo con los números raw en el mIRC requiere unos mínimos
conocimientos sobre los eventos, los comandos, y los demás
apartados de la creación de scripts; no me refiero a un
dominio absoluto, pues en caso de necesidad puede hacer una
consulta rápida en los capítulos correspondientes, pero sí,
cuando menos, una cierta familiaridad con el significado de
los conceptos que en ellos se manejan. Superada esta etapa verá
que no se trata más que un poco de lo mismo, pero con nuevas
capacidades que le sorprenderán.
Vamos en primer lugar a
centrar los conceptos. Cuando leyó la información relativa a
los comandos del mIRC descubrió una serie de ordenes que
puede dar a su programa. Estas órdenes o acciones digamos que
pueden ser de tres tipos:
En primer lugar hay algunos
comandos que le afectan solo a usted y a su sesión de trabajo
con el mIRC: presentar mensajes con /echo,
cambios de colores y fuentes, creación de ventanas
personalizadas, ...etc. Estas acciones no tienen influencia
ninguna en los demás usuarios ni en los servidores de IRC.
Existen por otra parte
comandos que implican acciones sobre, o referidas, a los demás
usuarios sin pasar nunca por los servidores, hasta el punto de
que, si en el transcurso de algunas de ellas pierde su conexión
con el server, no perderá en cambio el contacto con el otro
usuario, ejemplos de este tipo de acciones son: envío y
recepción de ficheros y chats privados, acciones remotas,
ping, version, finger, sound,...; son en general las acciones
CTCP (client to client protocol) que suelen dar lugar a los
eventos CTCP que explicaré en su correspondiente apartado, no
son estas tampoco las que nos ocuparán primordialmente en
este capítulo.
En tercer lugar están las
acciones referidas directamente a su conexión con un servidor
de IRC, en su mayoría son órdenes o requerimientos de usted
hacia el server, y a las cuales este responde de una
determinada manera, y, a menudo, con un mensaje concreto
indicando el resultado de la acción. Pensemos por ejemplo en
los comandos /who, /whois,
/names, /lusers,
/list, /links,
...etc. En virtud de cualquiera de estos usted recibe una
respuesta del server, bien sea un mensaje de error, o bien la
información correspondiente. Existen dos maneras de enviar
estos comandos, bien por el método habitual, es decir,
empleando el comando del mIRC correspondiente, o bien mediante
el comando: /raw <orden>. Básicamente
la mayor diferencia de este último con el anterior es que
usted no deja el trabajo a su programa, sino que envía la
orden directamente de una forma similar a un
"notice" hacia el server. Muchas de las órdenes válidas
para el comando /raw (comandos
del server) son idénticas a los comandos clásicos de su
cliente que tienen el mismo fin, pero otras tienen
variaciones, por tanto es necesario conocer la sintaxis exacta
de la orden raw que enviamos para que esta funcione como
deseamos. El mIRC utiliza el comando /raw
en forma similar que otros clientes usan el comando /quote,
aunque este también es válido en mIRC. Por ejemplo, para
obtener una lista de los comandos disponibles en el server
puede teclear: /quote help.
Como ejemplo curioso no me
resistiré a comentar una de las bromas favoritas de los
supuestos "expertos" hacia algún pobre
"pardillo" que encuentran desprevenido y preguntando
alguna cosa como por ejemplo:
<Pardillo> Hola,
¿como puedo conseguir OP? O:-)
***Set mode: comentario mío (a
saber lo que harías con él J )
<^EnTERaO^> Es fácil, escribe: /raw
server Opme
Y en estas que a
los pocos segundos nuestro pobre amigo Pardillo se encuentra
mirando confuso su ventana de estatus leyendo algo así como
que se ha desconectado del server y el programa no puede
reconectar. ¿Qué ha sucedido?.
Muy sencillo,
Pardillo a lo mejor incluso sabía que el comando:
/server
<servidor_de_IRC> [puerto]
Sirve para
desconectar del server actual y establecer inmediata conexión
con otro server indicado, pero ignoraba que:
/raw server
<servidor_de_IRC> [puerto]
Hace exactamente
lo mismo, con la única salvedad, en este caso, de que no
existe ningún server de IRC que se llame Opme, y por lo tanto
los intentos de su programa serán infructuosos. J
¿Le parece
gracioso?, pues muy mal J . En castigo ahora yo debería
relacionarle una larga lista de comandos raw, pero no se
preocupe, no lo haré, más que nada porque esto tiene en este
momento muy poco interés para nosotros, ya que muchos son
repeticiones de lo que hacen los comandos de cualquier buen
cliente de IRC actual y otros exigen el estatus de IRCop. Pero
lo que sí nos interesa aquí son las respuestas del server a
nuestros comandos, este es el meollo de la cuestión, a
nuestra orden el server responderá casi siempre con una o más
líneas de mensaje, estas líneas tienen siempre la misma
estructura y, aunque no lo veamos, se identifican cada una con
un número. Estos son los números raw. Si usted solo tenía
curiosidad en el tema confío en que esta explicación se la
haya aclarado; si su interés es saber como aprovechar esta
circunstancia para la creación de sus propios scripts, continúe
leyendo. J
PRIMER
CONTACTO CON LOS NÚMEROS RAW |
Vamos a empezar analizando un ejemplo clásico.
Como sabemos el comando /whois
<nick> hace que el server nos facilite cierta
información acerca del nick de usuario que hemos introducido.
Por ejemplo, imaginemos que tecleamos: /whois
ViK, y obtenemos esta respuesta:
ViK is
VIC@id-92.arrakis.es * Victor
ViK #ayuda_irc @#Salamanca
VIK using orion.irc-hispano.org Arrakis IRC Server
End of /WHOIS list.
Este es el
formato básico habitual de la respuesta de un server ante un
Whois de un nick que se encuentra en línea. Si el resultado
que usted obtiene es distinto se debe probablemente a que usa
un script que modifica este mensaje mediante el uso de los números
raw, por tanto aquí debemos de partir de esta respuesta en
formato estándar, tal y como llega desde el servidor.
Lo que en
realidad hemos recibido han sido cuatro mensajes (cuatro líneas),
estas tienen siempre la misma estructura, aunque varíe su
información, y cada una tiene asignada un número
identificativo, es su número raw.
-
La primera
comienza siempre por el nick del usuario del que hemos
pedido la información, después la palabra "is"
y a continuación su User ID (el que especificó en la
ventana IDENTD del setup), separado por una @ de la
identificación de su conexión a Internet (id-92.arrakis.es
en este ejemplo). Termina la línea con un asterisco y su
Full Name, el que escribió en el Setup. Esta línea tiene
siempre el número raw 311 y se conoce como:
RPL_WHOISUSER.
-
La segunda línea
es la respuesta raw número 319 (RPL_WHOISCHANNELS). Esta
comienza por el nick y detalla todos los canales en los
que este se encuentra; incluso muestra el símbolo @
delante de aquellos nombres de canal en los que este
usuario tiene estatus de OP.
-
La tercera línea
comienza también con el nick, e identifica el servidor de
IRC que está usando. Es la respuesta raw número 312
(RPL_WHOISSERVER).
-
La última línea
no es más el mensaje estándar de final del envío de
información para ese comando, y es siempre igual. Tiene
el número 318 (RPL_ENDOFWHOIS).
Otra posibilidad
es que el nick del cual hemos solicitado la información no se
encuentre en la red de IRC, en este caso la respuesta sería:
La primera línea
es un mensaje indicándonos la ausencia del usuario, es el número
raw 401 (ERR_NOSUCHNICK), la segunda es el raw 318 ya visto
antes, que indica el final del mensaje.
Lógicamente,
llegados a este punto nos podemos hacer dos preguntas: ¿Cómo
puedo usar esto para que la respuesta al comando /whois
tenga el formato que yo quiera? y ¿Cómo puedo saber los números
raw de cada respuesta del server a un comando?. La primera la
resolveremos de inmediato, la segunda un poco más adelante.
Una vez que nuestro programa recibe la respuesta del server a
un comando o requerimiento por nuestra parte, si conocemos el
número raw (paciencia, los conocerá J ), es posible
configurar el mIRC para que inhiba la respuesta normal, y nos
presente el formato que nosotros queramos diseñarle.
Cuando recibimos un mensaje
catalogado con un número raw se produce un suceso o evento
que nosotros podemos interceptar; es decir, podemos crear una
instrucción que le diga a nuestro programa algo así: "Cuando
recibas una respuesta raw con este número haz lo siguiente..."
asociándole el código correspondiente mediante una rutina de
script, igual que se hace con los eventos convencionales (ver
el capítulo de Eventos del mIRC).
La sintaxis para
esto es una línea que especifica el número raw del evento
que se espera, y la acción o acciones que han de realizarse
en es momento:
raw <número>:*:<acción>
Vemos que la línea consta de
tres campos, el primero es simplemente el número raw ante el
que se desea actuar; el último es una o más acciones
(comandos o alias) que se desea que se ejecuten en ese
momento; el segundo es normalmente un asterisco que indica que
se realice la acción sea cual sea el texto del mensaje que
recibamos, es decir, que se haga siempre lo mismo ante este
raw concreto, independientemente del nick, o cualquier otra
información que nos devuelva es server.
Si describimos más
de una acción asociadas al evento debemos de separar cada una
de las órdenes con el símbolo entubador: "|"
(normalmente AltGr + 1), teniendo buen cuidado de que este símbolo
tenga espacios en blanco a ambos lados. Por ejemplo:
raw 312:*: echo -s $1 está
conectado por: $3- | halt
El raw 312 es la respuesta
RPL_WHOISSERVER, es decir, la línea del /whois
que informa sobre el server de IRC por el que está conectado
el nick. Con la sentencia anterior estamos diciendo a nuestro
mIRC que cuando reciba esta respuesta debe de imprimir en
status (de ahí el echo -s) una
frase que comience por la primera palabra de la que hemos
recibido del server, sea cual sea (representada por $1), que
en el raw 312 es siempre el nick como hemos visto), a
continuación la cadena: "está conectado por:",
y a seguidamente la tercera palabra recibida mas todo lo
que viene a continuación (por eso el signo - detrás de
$3). Recordemos que una palabra se considera a cualquier
cadena de caracteres que no contiene espacios en blanco en su
interior, así "orion.irc-hispano.org" se toma como
una sola palabra ($3 en el ejemplo, puesto que es la tercera
palabra). Hay una segunda orden en este evento: halt;
este comando interrumpe cualquier acción posterior
relacionada con el mismo, esté especificada por nosotros o
no, el efecto en este ejemplo es el de inhibir la impresión
de la respuesta del server, así se consigue que en caso de
hacer un /whois nos aparezca solo
la frase configurada por nosotros, y no la del server (si no
ponemos halt se imprimirían las dos).
Es así como podemos
sustituir limpiamente las respuestas normales de los comandos
que enviamos al servidor por otras con la sintaxis que
deseamos, incluso con la posibilidad de añadir colores ...
etc; es más, podemos también iniciar acciones automáticamente
con solo incluir alias previamente creados, u otros comandos.
Lógicamente las líneas de
configuración de los eventos raw no podemos insertarlas en
cualquier lugar a nuestro gusto, es necesario que estén allá
donde el mIRC las puede encontrar, este lugar es la sección
de remote de nuestro programa (menú TOOLS opción remote, o
bien directamente con Alt + R). Recordemos que en esta ventana
se nos presenta el contenido de todos nuestros ficheros de
script para events, ctcp's y remotes. Es buena costumbre tener
los eventos raw agrupados en un fichero especifico para ellos,
para conseguirlo un sistema puede ser seguir estos pasos:
- Desde el Explorador del
Windows (por ejemplo), vaya al directorio donde tiene los
ficheros .INI del mIRC, que normalmente será el propio
directorio del programa o un subdirectorio de este. En
este lugar cree un nuevo fichero de texto y nombrelo
"raw.ini", de momento déjelo en blanco.
- Entre en mIRC y pulse Alt
+ R, o bien TOOLS/REMOTE. En el diálogo que aparece abra
el menú FILE opción LOAD, y a continuación la sub-opción
SCRIPT. Verá otro diálogo de navegación en el que deberá
de localizar y seleccionar el fichero creado:
"raw.ini", ahora pulse el botón OK. Todo esto
se logra de igual manera tecleando la orden: /load
-rs raw.ini.
- Ya está, el nuevo fichero
se ha cargado en la memoria RAM correspondiente a mIRC
como fichero de script, ahora podrá observarlo en la
ventana de Remote (repito, Alt + R), si ha seguido los
pasos anteriores evidentemente estará vacío, pero a la
espera de que usted inserte ahí el código que desee. Si
quiere volver a visualizar cualquier otro de sus ficheros
de script no tiene más que abrir el menú VIEW de esta
ventana y seleccionarlo.
Sobra decir que estos mismos
pasos los puede realizar para crear ficheros (específicos
para su comodidad) para eventos convencionales, CTCP's, ...
etc. Puede tener tantos como desee. Así mismo también puede
crear grupos de código raw igual que de cualquier otro tipo
de código de script, es decir, encerrándolos entre líneas
de activación, de tal modo que solo operarán cuando usted lo
desee:
#nombre_grupo [on/off]
Líneas de código...
#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 opción de popups (para más información
al respecto repase los primeros apartados del capítulo Los
Eventos del mIRC, que se refiere a los eventos
convencionales).
REFERENCIA
DE LOS NÚMEROS RAW. |
Solo un dato nos falta para poder comenzar a crear código de
script para configurar nuestro programa ante las respuestas
raw y es, evidentemente, conocer los números asociados a cada
una de ellas.
Desgraciadamente para nuestra
capacidad retentiva, y afortunadamente para lo que podemos
llegar ha hacer con ellos, son una enorme cantidad, por lo que
mi primera recomendación debe de ser que dedique algún
tiempo a examinar los que se encuentran en los muchos scripts
para mIRC de uso gratuito que puede obtener en la w.w.w., y en
esta misma web. De este modo no solo descubrirá el número de
cada uno de ellos, sino que tendrá también ocasión de
analizar algunas buenas ideas de lo que se puede conseguir.
"Destripar" scripts, como yo le llamo, es la mejor
manera de aprender a hacerlo, estas páginas solo pretenden
que usted pueda llegar a tener una comprensión mas o menos
clara de lo que está viendo cuando entre en el código de
alguno.
No obstante no se preocupe,
pretendo facilitarle todas las herramientas que necesita para
poder trabajar con provecho con esta faceta del mIRC, yo
personalmente recurro a dos ficheros muy útiles como
referencia de los números raw:
Por un lado el fichero "numeric.hlp"
es una completa referencia (en inglés :((...) de los números
raw, se trata del "Jeepster's numeric reference".
Incluye una completa lista en formato .help para
Windows y alguna información más de interés.
La segunda no es mas que un
fichero de script que yo mismo creé para mi uso, con la idea
de que cada vez que introdujese un comando dirigido al server
me informase de cual era el número raw de cada una de las líneas
que recibía, el nombre de esta (solo a título informativo),
y el mensaje estándar que la acompañaba. De este modo, al
cargarlo si quiere saber, por ejemplo, cuales son los raw
correspondientes a la respuesta de un /who
no tiene más que introducirlo y ver la información que le
facilita en su estatus. Tome nota del dato y trabaje con él
J.
Este segundo
fichero se llama "rawtool.ini" y también lo
puede obtener desde esta página. Bájelo y cárguelo en su
mIRC copiándolo en el directorio del programa tecleando /load
-rs rawtool.ini. Puede descargarlo cuando desee
tecleando: /unload -rs rawtool.ini.
Puede hacer lo mismo desde la sección REMOTE, menú FILE opción
LOAD subopción SCRIPT; y para descargarlo simplemente opción
UNLOAD cuando lo tenga en la pantalla de edición de esta
ventana.
Pinche más abajo para bajarse los dos ficheros juntos
comprimidos en formato zip (están bajo el nombre "rawhelp.zip"),
he tenido que elegir este formato debido a los problemas que
se planteaban con el navegador de Nestcape; este tiende a
imprimir en una pantalla el contenido de los ficheros .ini y
.txt en lugar de bajarlos; también el formato .hlp daba algún
problema. Así pues deberá de descomprimirlos antes de poder
trabajar con ellos.
rawhelp.zip
Para concluir permítame reiterar la importancia de la
observación y la práctica para llegar a crear buenos
scripts, espero que los conceptos que ha aprendido aquí le
sirvan como base para esta labor. En cualquier caso no dude en
dirigir sus comentarios, críticas o consultas a mi e-mail.
También puede localizarme en el canal #Ayuda_IRC del
IRC Hispano con el nick SomaTic.
<---Atrás
|
 |
 |
 |
|