MiRC script
mIRC
Scripting
Documentos recopilados por Ferran Sarrió
INDICE
INTRODUCCIÓN 3
POPUPS 5
ALIASES 7
VARIABLES 9
EVENTOS REMOTOS 12
IF-ELSE 24
EVENTOS CTCP 27
USUARIOS REMOTOS 30
GRUPOS 35
VENTANAS PERSONALIZADAS 37
VENTANAS DE IMAGEN 46
DIALOGS 56
SOCKETS 69
CÓMO CREAR TUS PROPIOS IDENTIFICADORES 73
COMO LINKAR SERVIDORES IRC EN P10 74
USO DE LOS TABS EN DIALOGS 78
PUERTOS TCP INTERESANTES 80
SCAN DE CLONES MEDIANTE IAL 81
CÓDIGOS RAW 84
IDENTIFICADORES DE SIMBOLO – TOKENS 88
MAS INFORMACIÓN 92
INTRODUCCIÓN
El mIRC es sin duda el programa cliente para IRC más extendido en la
actualidad, y no
solo por su distribución libre y gratuita, puesto que hay otros muchos que
también
cuentan con esta ventaja, ni por estar creado para Windows, el sistema
operativo más
extendido actualmente, puesto que no es ni el mejor sistema ni el más
económico; los
factores más decisivos son, bajo muestro punto de vista, la gran capacidad
del
programa para poderlo adaptar a los gustos y necesidades de cada usuario
mediante
rutinas de script, lo que hace de él una herramienta casi a la medida, así
como la
gran cantidad de estos scripts, para todos los gustos y necesidades, que
se
encuentran hoy a disposición de todos los usuarios.
Derivado de los anteriores, otro factor fundamental para que mIRC sea el
cliente de
IRC más popular es la enorme cantidad de documentación sobre este programa
que
podemos encontrar en la red. En efecto, aunque mIRC cuenta con completo
fichero de
ayuda en formato .hlp este no es absolutamente completo ni agota todas
sus
posibilidades, además, tanto esta ayuda como la inmensa mayoría de la
información
disponible en Internet se encuentra en idioma inglés. La principal razón que
podemos
alegar para justificar la difusión del programa entre los usuarios de habla
española
no es otra más que la gran cantidad de scripts en esta lengua que han ido
surgiendo
en los últimos dos o tres años, gracias al trabajo meticuloso y desinteresado
de
docenas o centenares de creadores más o menos anónimos.
El objetivo de estas páginas es documentar en español las herramientas y
técnicas
necesarias para la creación de scripts para mIRC. De este modo, además de
incrementar
la escasa información de que se dispone en nuestro idioma, pretendemos poner
estos
conocimientos al alcance de los nuevos y viejos creadores, y de todos los
usuarios
que los necesiten, tanto para desarrollar y distribuir su propio script como
para
aplicarlos a la personalización 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 más rutinas o grupos independientes de instrucciones. El mIRC
dispone de un
amplio entorno en el que podemos llevar a cabo la programación de rutinas de
script,
logrando así que el programa realice las funciones más diversas,
permitiéndonos
avanzar mucho más allá de las capacidades que este cliente de IRC implementa
ya de
'serie'.
Prácticamente la totalidad de la configuración básica, tanto la que el
programa
realiza por sí mismo como la que nosotros especificamos en las distintas
ventanas de
diálogo, es depositada en ficheros de texto con extensión .ini en el mismo
directorio
que el fichero ejecutable (mirc16.exe ó mirc32.exe). Es posible por tanto
acceder a
todos esos parámetros de configuración y editarlos según nuestros
deseos. Así mismo,
todos los scripts que creemos para el mIRC, con todas sus rutinas e
instrucciones, se
depositan también en ficheros. La creación, modificación, y carga de estos
ficheros
se puede hacer directamente desde el propio mIRC en las distintas opciones del
menú
TOOLS.
La creación de scripts para mIRC potentes y útiles exige un buen conocimiento
de los
comandos generales de IRC, de los comandos propios del mIRC, y de las
distintas áreas
configurables de este programa. En este manual veremos el uso y utilidad de
cada una
de esas áreas configurables y como debe de trabajar con ellas; también
tocaremos en
capítulos aparte el uso de las herramientas imprescindibles para explotar
todas las
capacidades de este entorno.
Si usted parte de cero, o desea iniciar un proceso de aprendizaje ordenado es
siempre
recomendable comenzar estudiando detenidamente los comandos, estas ordenes le
darán
una buena idea inicial de lo que el programa puede hacer y serán los ladrillos
con
los que posteriormente deberá de construir su script. Es indispensable un buen
nivel
de conocimientos de órdenes y comandos antes de avanzar a las siguientes
etapas.
El siguiente paso lógico es comenzar a crear Alias y Popups, aquí ya
descubrirá como,
con unos pocos comandos, usted puede lograr efectos espectaculares en su
programa.
Tanto los alias como los popups se crearán en ficheros de texto independientes
y
cargados en el mIRC (ver comando Load y Unload). La capacidad de estos
ficheros es
grande pero limitada, ahora bien, usted podrá crear una buena cantidad de
ellos si lo
necesita.
LLegados a este punto ya se habrá encontrado con lo Identificadores, pero es
el
momento de estudiarlos más a fondo y observar lo que le permiten hacer. sus
Alias y
Popups multiplicarán 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
algún tipo
de programación los encontrará extremadamente simples, si no quizás le
parezcan algo
más complicados pero tómelo 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 Números Raw y
los
Sucesos CTCP. Esta lectura y el análisis cuidadoso de otros scripts le
introducirán
ya como miembro de pleno derecho en el grupo de "chalados" que alguien ha
denominado
"scripters" :-).
Los capítulos de Ventanas Personalizadas y el Servidor DDE completan de
momento los
textos de este manual, recurra a estas técnicas solamente cuando su necesidad
lo
justifique plenamente. 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 cómoda de suministrar
la
misma información delata a los creadores principiantes y hace más engorroso el
manejo
de su script.
Debo de pedir disculpas por no tener aún disponibles alguno de los apartados
del
manual. Están en elaboración y espero poder mostrarlos en breve, como
contrapartida y
justificación solo puedo alegar que he dado prioridad a la actualización del
material
para adaptarlo a la versión 5.31 del mIRC, que ya aporta grandes cambios y
novedades
con respecto a los textos originales que escribí en
principio.
No puedo terminar sin agradecer a todas las personas que se interesan por
este
trabajo, a los que con sus preguntas me animan a continuar con él no enseñando
sino
aprendiendo, a los que me han ayudado con sus conocimientos y experiencia y
son los
culpables de gran parte de lo que sé, y de modo muy especial a hPm, que me
demuestra
cada día lo que el interés y la afición pueden hacer en el mundo del scripting
y que
los maestros han de ser los primeros alumnos.
Documento escrito por SoMaTiC · www.ayuda-irc.net · sucubus@ctv.es
POPUPS
El mIRC permite también la creación de popups o menús personalizados; cada
opción que
diseñamos para estos menús ejecutará las órdenes, alias, comandos,...etc. que
les
introduzcamos, y podrá así mismo hacer uso de identificadores, variables,
etc.
Disponemos inicialmente de 5 menús que podemos diseñar a muestro gusto con
las
opciones que deseemos:
MENUBAR:
Es el tercer menú de la barra principal de menús que se encuentraen la parte
superior
de la pantalla del mIRC.
CHANNEL:
Es el menú emergente que aparece al pulsar con el botón derecho del ratón
sobre la
pantalla del canal.
NICKNAME LIST: Es el menú emergente de la lista de nicks del
canal.
STATUS: Es el menú emergente de la ventana de Status del
programa.
QUERY/CHAT: Es el menú emergente de la ventana de querys y de DCC
chat.
Accederemos al código que genera los popups desde el menú TOOLS opción
"popups". En
la ventana que nos aparece tenemos a su vez una barra superior de opciones,
si
pulsamos "view" podremos elegir, de entre los 5 anteriores aquel popup del
que
queremos ver las "interioridades" . Ahí podremos crearlos, modificarlos o
eliminarlos. Terminado el trabajo pulsaremos OK, y desde ese momento ya
podremos
hacer uso de las modificaciones introducidas. La mejor forma de comprender lo
popups
es observando el código de los ya existentes, cada línea de este código
suele
corresponder con una opción del menú, veamos un ejemplo:
Canales
.Entrar a #ayuda_irc: /join #ayuda_irc
.Entrar a #programación: /join #programacion
.-
.Elegir canal: /join #$$?="Introduce canal"
.Cambiar modos de canal.
.Solo op’s cambian topic: /mode # +t.
.No mensajes externos: /mode # +n.
.Cambiar el Topic: /topic # $$?="Introduce nuevo topic"
Nicks: /nick $$?="Introduce nuevo nick"
Como se puede observar cada línea describe en primer lugar el nombre de la
opción de
menú con la que aparecerá cuando se despliegue este. Como es sabido cada
opción de
menú puede tener a su vez otras subopciones, y estas a su vez otras tantas, y
así
sucesivamente; esto se especifica en el diseño del menú mediante los puntos
que
preceden a cada una de las líneas: las líneas sin puntos delante son
opciones
principales que aparecerán nada más desplegarse el menú. Si tienen un punto
delante
significará que son subopciones de las anteriores, y se desplegarán al pulsar
sobre
aquella inmediatamente anterior que no tenga punto; si tienen dos puntos serán
una
subopción de la inmediatamente anterior que solo tuviese uno... y así
sucesivamente.
En virtud de lo anterior una línea de opción de un popup deberá de tener su
nombre
(el que queramos) seguido del símbolo ":" y la acción o comando que se
ejecutará al
hacer click sobre esta opción.
Si solo está el nombre, no hay dos pontos y luego un comando, es porque
al
seleccionarla se desplegará un submenú, así pues deberá de estar seguida de
otras
líneas de opciones de rango inferior , es decir, con más puntos que ella por
delante,
que serán las que se desplieguen al seleccionarla.
Opcionalmente podemos poner tan solo un guión en lugar del nombre de una
opción, esto
lo único que hará será insertar una línea de separación en la lista de
opciones del
menú.
Así pues, en el ejemplo anterior, al desplegar el popup observaremos tan solo
dos
opciones: Canales 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 desplegarán a su vez otras cuatro opciones, separadas las dos
primeras,
por una línea horizontal, de las dos últimas. De estas cuatro las tres
primeras
ejecutarán ya una acción cada una, sin embargo la cuarta desplegará otras tres
nuevas
opciones.
Este razonamiento quizás pueda parecer complejo en principio, pero con un
mínimo de
práctica y observación descubrirá que domina las sutilezas de los popups mucho
antes
que cualquiera de las otras áreas de creación de script para el mIRC. Todo lo
dicho
para la definición de alias es también válido para construir la definición
de
opciones de menús, incluido el uso de identificadores.
Algunos identificadores (palabras especiales con el símbolo $ delante) cobran
un
valor especial cuando se usan en un determinado popup; por ejemplo, el
identificador
posicional $1, cuando se usa en una opción del popup de QUERY/CHAT, se
cargará
automáticamente 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 mínimo de práctica y observar
otros
que ya están hechos, el mIRC dispone de algunos, y además son muchos los
scripts en
circulación que nos proporcionarán excelentes ejemplos de la creación y
ordenación de
esta excelente herramienta.
Documento escrito por SoMaTiC · www.ayuda-irc.net · sucubus@ctv.es
ALIASES
El mIRC te permite crear aliases y scripts para hacer más rápido tu sesión IRC
o para
hacer más fáciles y rapidas las funciones del script. Para crear los aliases
debes
conocer los comandos básicos del mIRC.
Un aliases puede ser llamado desde una linia de comandos, desde otro alias,
desde un
popup y un remote script. Un alias no se puede llamar a si mismo
principalmente
porque esto parece causar más problemas para los usuarios de los que
soluciona. No
hay nada mejor para entenderlo que algunos ejemplos:
/hola /msg $chan Hola gente, que tal os va?
Si ahora tu escribes /hola en un canal, automaticamente es lo mismo que
decir:
Hola gente, que tal os va?
NOTA: El simbolo de doble «$$» significa que el comando no se ejecuta si no
se
indican los parametros:
/j /join $1 o /j /join $$1
Ahora si escribes /j #ayuda_para_novatos es lo mismo que escribir
/join
#ayuda_para_novatos. El simbolo «$1» se refiere al primer parámetro de la
linia que
tu escribes. Si el simbolo fuera «$3» se referiria al 3er parámetro que has
escrito y
asi con cada número.
/canal /join $?="En que canal quieres entrar?"
El parámetro «$?» sirve para que te pida información que tu debes escribir,
para
indicar que pregunta quieres hacer debes poner ="La pregunta a hacer". Y si
quieres
que vuelva a aparecer el texto que ha puesto en la ventana esa, debes poner
«$!»,
mira este ejemplo, que asi te sera más fácil comprenderlo:
/canal /join $?="En que canal quieres entrar?" | /echo Ahora entraras en
$!
NOTA: Este simbolo «|» sirve para separar diferentes comandos que esten en una
linia.
/mejor /say Yo opino, que soy el ME $+ J $+ OR $+ !!!
Los parametros normalmente estan separados por espacios, pero para unir
palabras o
parametros puedes usar el simbolo «$+» dejando un espacio antes y despues de
este
simbolo, se debe poner entre las palabras o parametros que quieres
unir.
En los aliases también puedes usar las llaves { }, que se explica ocn detalle
en el
apartado Popups. También puedes usar los estamentos del if-then-else, el cual
se
explica en el apartado que lleva su nombre. Pero igualmente aqui te enseño un
ejemplo
para que no te queden dudas:
/ayuda {
if ( $chan == #Ayuda_para_novatos ) { /say Hola, necesito ayuda.
}
else { /echo $chan Este canal no es de ayuda, o almenos eso
creo } }
El comando GOTO
El comando GOTO, te hace saltar de un punto del alias a otro
punto.
/numero {
if ($1 == 1) goto one
elseif ($1 == 2) goto two
else goto unknown
:one
echo El numero uno
halt
:two
echo El numero dos
halt
:unknown
echo Numero desconocido!
Halt }
Remote Script
También puedes escribir los alias en un remote, lo has de hacer poniendo
alias
delante seguido de la palabra del alias y todos los comandos que ha de
ejecutar. Mira
este ejemplo:
alias Sarrio {
/say este curso de scripting...
/say lo ha creado [SaRRiO] x'D }
Teclas de Función
Tu puedes redefinir las teclas de funcion, F1, Shift+F2... Mira estos ejemplos
de
aqui:
/F1 /join #Ayuda_para_novatos
/SF10 /nick [SaRRiO]
/CF1 /quit Me largo, que telefonica nos tima cada dia
El /SF10 es Shift+F10, el /CF1 es Control+F1, /F1, asi a secas es la tecla F1
y asi
con las otras teclas. Esto a parte de lo que hemos visto, puedes meter
comentarios en
los aliases y remotes, ejemplos:
;Esto es un comentario que hago
:Te puedes servir para recordar para que sirve cada alias o script en
general!
;Para distingir entre protecciones, juegos...
El simbolo «;», sirve para esto, para que el mIRC sepa que no son comandos
sino
comentarios.
Documento escrito por [SaRRiO] · www.sarrio.org · admin@sarrio.org
VARIABLES
El uso de variables es el recurso fundamental en programación. Podemos ver
una
variable informática como un recipiente en el que podemos depositar un
valor
cualquiera, para después hacer uso de él dentro de una instrucción, de esta
forma no
será necesario tocar la instrucción cada vez que queremos alterar el valor a
manejar,
sino tan solo asignar antes un nuevo valor a la variable.
Técnicamente una variable no es más que un espacio de nuestra memoria RAM
(una
dirección de memoria) 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
dirección
reservada. Más adelante, cuando ejecutemos una instrucción que contenga esa
variable,
el programa irá a ese espacio de memoria y extraerá el valor que contenga,
poniéndolo
en el lugar del nombre de la variable, dentro de la instrucción en
cuestión.
Por ejemplo, si en un script para mIRC hemos creado una variable llamada %num,
a la
que hemos asignado el número 3.14159 ,podemos tener una instrucción 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
más
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 elección y precederlo del símbolo:
%.
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:
set <%variable> [valor]
Por ejemplo:
set %num 3.14159
Es decir, es posible crear la variable (reservar el área correspondiente de
memoria)
en el mismo momento que le asignamos un valor. Si no especificamos valor la
variable
se creará, pero no contendrá nada de momento; y si usamos esta orden sobre
una
variable que ya existe, esta recibirá el nuevo valor
especificado.
En el mIRC no es necesario preocuparse de qué tipo es la información que
depositamos
dentro de la variable, es decir, si se trata de una cadena de caracteres, un
número
entero, o un número con parte entera y parte decimal. Esta distinción la hace
el
programa en el momento que hagamos uso de ella; en principio todas las
variables se
consideran como una simple cadena de caracteres, pero si empleamos para
manejarlas
operadores aritméticos, el programa las transforma internamente en el valor
numérico
que corresponde; la única limitación en este caso es que solo se tendrán en
cuenta
los cinco primeros valores decimales, es decir, los cinco primeros dígitos
tras la
coma decimal.
Recursos de asignación
Asignar valores a una variable se puede hacer de forma directa, como hemos
visto, o
de forma indirecta a través de algún recurso del programa. Por ejemplo, si
queremos
que la variable %MiNick reciba el nick que estamos utilizando en ese momento,
sin
tener que especificárselo nosotros, podemos recurrir a la función $me, que
nos
devuelve precisamente nuestro nick actual. La asignación sería
pues:
set %MiNick $me
Otro ejemplo, queremos asignar a una variable el contenido de otra
variable:
set %var2 %var1
Incluso podemos hacer que el programa nos pregunte qué valor queremos que
reciba
determinada variable, cuando el script llegue a ese punto; no hay mas que
hacer uso
del identificador $$?, por ejemplo:
set %variable $$?="Asigna un valor a la variable:"
Así mismo es posible también hacer que una variable reciba directamente el
resultado
de operaciones aritméticas sencillas:
%x = 5 + 1 Suma
%x = 5 - %y Resta
%x = %x * 2 Producto
%x = %z / $2 División
%x = $1 % %valor Módulo (Resto de la división: $1 entre
%valor)
%x = 2 ^ %w Potencia
Solo es posible asignar el resultado de operaciones simples, para el uso
de
operaciones más complicada es preciso recurrir a la función $calc que podemos
ver en
el capítulo IDENTIFICADORES.
Finalmente, podemos hacer incrementos o decrementos automáticos del valor
numérico de
una variable con las órdenes:
inc <%variable> [incremento] dec <%variable>
[decremento]
Estas órdenes incrementarán o decrementarán 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 algún momento hacemos uso de una variable que aún no ha sido creada, o
bien,
que no contiene ningún valor, está devolverá el parámetro $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 (alterándolo manualmente si lo deseamos) desde el
menú
TOOLS, opción "Remote...", en la solapa "Variables".
Eliminación de variables
Eventualmente es posible también eliminar la variable, es decir, hacer
que
desaparezca la reserva de memoria que la creación de esta supuso. La orden a
este
efecto es la siguiente:
unset <%variable_1>
Es posible también utilizar el carácter * para eliminar grupos de variables,
por
ejemplo:
unset %nom*
Esta orden eliminará todas las variables cuyo nombre comience por
"nom".
Finalmente podemos, si lo deseamos, eliminar todas la variables instaladas son
la
orden:
unsetall
Documento escrito por SoMaTiC · www.ayuda-irc.net · sucubus@ctv.es
EVENTOS REMOTOS
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.
En este manual de referencia se incluyen los eventos descritos para la versión
5.31
del mIRC.
Un ejemplo
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.
Para esto debemos de ir al menú "TOOLS" que se encuentra en la barra de menús
de la
parte superior de la pantalla y pulsar la opción "REMOTE...". Nos aparece un
cuadro
con una gran ventana de texto y una nueva barra de menús en la parte
superior.
Vayamos al menú "VIEW" y seleccionemos la opción "events"; ya podemos escribir
en el
cuadro de texto nuestras órdenes para el control de eventos (hágalo a ser
posible al
principio de esta caja de texto). Escribiremos la siguiente
línea:
on 1:TEXT:Somatic:#: notice $nick Perdona $nick no estoy prestando
atención!!!.
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:
#ausente off
on 1:TEXT:*Somatic*:#:/notice $nick Perdona $nick no estoy prestando
atención!!!.
#ausente end
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).
Pruebe los efectos de la programación de eventos aplicando los distintos
comandos del
IRC y del mIRC en su interior (por motivos que desconozco algunos de ellos
no
funcionan en este contexto, como por ejemplo /me, /ame, /say, ... etc).
También puede
hacer uso de alias préviamenre definidos, o de la estructura IF-ELSE, pero,
en
cualquier caso, si desea incluir varias líneas de órdenes vinculadas a un
mismo
evento use siempre el separador de comandos (el carácter "|", que se obtiene
pulsando
las teclas ALTGR y 1).
Sintaxis general
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:
on
<nivel>:<EVENTO>:<texto>:<lugar>:<comando/os>
En el primer campo es necesario especificar en nivel de acceso remoto que ese
usuario
tiene a nuestro sistema. Este es un tema algo complejo 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.
también es posible anteponer el símbolo @ antes del número de nivel, si
hacemos esto,
la definición del evento no se ejecutará nada más que en caso de que
dispongamos del
estatus de operador del canal.
El segundo campo es el identificador del evento que estamos configurando, en
el
ejemplo anterior era TEXT, pero descubrirá que hay otros
muchos.
El tercer campo es el "texto", este no tiene sentido en todos los eventos,
gran parte
de ellos no están vinculados a texto alguno, y simplemente se omite este
campo. 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 último campo es el más grande, incluye el comando o comandos, alias, etc...
que se
ejecutarán en caso de que se produzca el evento y las circunstancias
especificadas.
En este campo se pueden concatenar varios comandos utilizando el símbolo
"entubador":
"|" (no olvide dejar espacios en blanco a ambos lados del
entubador).
Para aumentar aun más la potencia de la configuración de eventos, estos
admiten el
uso de funciones, son todos aquellos identificadores que comienzan por el
símbolo $
(la referencia del mIRC los llama parámetros, el tema es mas bien
terminológico, 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
C).
No se relaciona en este documento 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 atención a los ejemplos irá viendo la forma
y
utilidad de la mayoría de ellas, en los lugares en los que son efectivas; el
resto lo
debe de aportar la experiencia personal. (las funciones deberán 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 disposición en la WWW y el
IRC.
Es hora de entrar a conocer una a una las definiciones de eventos que
proporciona la
versión 5.31 del mIRC. Esta lista está basada en la ayuda del propio programa
y no la
considero cerrada, por tanto agradeceré cualquier crítica y sugerencia, por
supuesto
las dudas también serán atendidas en mi e-mail: sucubus@ctv.es, o en el canal
#Ayuda_IRC del IRC Hispano, no tiene más que preguntar por
SomaTic .
Relación de eventos
ON TEXT
Este evento se produce al recibirse un mensaje especificado, bien en un
privado, o
bien en un canal 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.
& El evento se producirá ante cualquier palabra.
Texto
El evento se produce anta una palabra concreta y no
otra.
Texto*
Se produce ante una cadena de caracteres que comience
por el texto especificado.
*Texto
Se produce ante una cadena de caracteres que finalice
por el texto especificado.
*Texto*
El evento se produce si el texto contiene la cadena
especificada, sea cual sea su posición.
Se puede especificar el lugar donde se controlará el evento de la siguiente
forma:
?
Controlara la producción del evento dentro de
un query o de un DCC chat
#
Controlara la producción del evento dentro de
un canal cualquiera en el que nos encontremos
#canal_1,#canal_2,...
Controlará la producción del evento dentro de
un canal especificado.
*
Controla el evento en un privado o canal
indistintamente.
Ejemplos:
on 1:TEXT:Hola*:#:/msg $chan ¡Bienvenido al canal $chan $nick $+
!
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:
on 1:TEXT:%text:%canal:/msg $nick Tú has escrito %text en el canal:
%channel
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
ON ACTION Y ON NOTICE
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:
on 1:ACTION:*set mode*:#:/msg $chan ¡Ya estamos jugando con los
modos!
Esta orden detectará cualquier acción que contenga la cadena "Set mode", y
emitirá un
mensaje al canal en que se produce.
on 1:NOTICE:*:?:/msg $nick Estoy ocupado, espera un momento!
Esta orden detecta cualquier /notice recibido estando en un privado, y
responde con
otro /notice al autor.
ON BAN Y ON UNBAN
Estos eventos se producirán cuando un usuario sea baneado o desbaneado en el
canal.
Formato: on <level>:BAN:<#[,#]>:<comandos>
Ejemplos:
on 1:BAN:#:/msg $nick Has sido baneado de: $chan
on 9:BAN:#:/mode $chan -o $nick | /mode $chan -b $banmask
El segundo ejemplo es una 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).
on 1:UNBAN:#:/msg $bnick Has sido desbaneado por $nick
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:
on >=2:BAN:#:/msg $chan $nick baneado $banmask (legal)
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:
on 1:BAN:#: {
if ($banmask iswm $address($me,0) || ($me isin $banmask) {
echo -s $nick te ha baneado con esta máscara: $banmask
if ( $me isop $chan ) { mode $chan -ob+b $nick $banmask $address($nick,2)
}
}
}
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.
ON CHAT Y ON SERV
Los eventos on CHAT y on SERV se producen cada vez que es enviado un mensaje
la una
ventana de DCC chat, o a un Fserve respectivamente. Es similar al evento on
TEXT, el
cual no funciona en un chat ni en un servidor de ficheros.
Formato: on
<level>:<CHAT/SERV>:<texto>:<comandos>
Ejemplo: on 1:CHAT:*ayuda*:/msg $nick Cual es el problema?
La especificación del texto que producirá el evento se hace de la misma forma
que en
ON TEXT.
ON CONNECT Y ON DISCONNECT
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).
Formato: on <level>:CONNECT:<comandos>
Ejemplo: on 1:CONNECT:/join #ayuda_irc
on DISCONNECT es otro evento con el mismo formato, que se produce al
desconectarse
del server.
Ejemplo: on 1:CONNECT:/echo Conectado a $server a las $time Tu nick es:
$nick
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:
$1-
Ver evento on TEXT para los formatos de texto aceptados.
Ejemplo: on 1:CTCPREPLY:PING*:/echo -s $nick ha respondido al
ping!
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 status!
Ejemplo2: 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 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:
on >=2:OP:#mIRC:/msg $chan $nick opeado (legal)
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.
ON VOICE Y ON DEVOICE
Se produce cuando un usuario recibe o es privado de voz en un canal moderado
en que
nos encontramos.
Formato: on
<level>:VOICE:<#[,#]>:<comandos>
Ejemplo: on 1:VOICE:#:/msg $vnick ya tienes voz en: $chan
Ejemplo2: 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.
on 1:DEVOICE:#mIRC:/mode $chan +v $vnick
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.
ON DNS
Se produce cuando hacemos un requerimiento DNS (comando
/dns).
Formato: on <level>:DNS:<commandos>
Ejemplo: on 1:DNS:/notice $me resuelto: $raddress
Ejemplo2:
on 1:DNS:{
echo –s DNS de $nick | echo -s ip address: $iaddress
echo -s named address: $naddress | echo -s resolved address:
$raddress
}
ON ERROR
Se produce cuando el server envía un mensaje de error, por ejemplo, en
una
desconexión.
Formato: on
<level>:ERROR:<texto>:<commandos>
Ejemplo: on 1:ERROR:*server full*:/echo Has salido del
server!
Ver el evento on TEXT para el formato del texto.
Ejemplos: on 1:ERROR:*banned*:/echo Has sido baneado de este
server!
ON FILESEND y ON FILERCVD. ON SENDFAIL y ON GETFAIL
Se producen al completarse un dcc send o un dcc get (envio o recepción de
ficheros
reapectivamente).
Formato: on
<level>:FILESENT:<filename[,filename]>:<comandos>
Ejemplo: on 1:FILESENT:*.txt:/msg $nick ahí te mando: $filename
!!
Los eventos on SENDFAIL y on GETFAIL se producen cuando un dcc send o un dcc
get son
fallidos.
Ejemplos: on 1:FILESENT:*.txt,*.ini:/echo Enviado $filename a $nick
$address
Se produce cuando enviamos un fichero .TXT o INI. $filename devuelve el nombre
del
fichero enviado.
on 1:FILERCVD:*:echo Recibido $filename de $nick | run notepad.exe
$filename
Esta orden avisa cuando hemos recibido ficheros .TXT e .INI, y abre el bloc de
notas
para ver su contenido.
on 1:SENDFAIL:*.txt:/echo Ha fallado el envío de $filename a
$nick!!
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: $1-
La función $1- devuelve en este caso toda la cadena de texto
introducida
ON INVITE
Se produce cuando un usuario nos invita a un canal.
Formato: on
<level>:INVITE:<#[,#]>:<comandos>
Ejemplo: on 1:INVITE:#mIRC:/join $chan
ON JOIN Y ON PART
Se producen al entrar o salir un usuario de un canal en que nos
encontramos
Formato: on <level>:JOIN:<#[,#]>:<comandos>
Ejemplo: on 1:JOIN:#:/msg $nick Hola!
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 también aquí la regla de comparación de niveles de los nicks
descrita el
los eventos on BAN y on OP.
ON LOAD Y ON START
Estos eventos se producen cuando un fichero de script es cargado o
descargado.
Formato: on <level>:LOAD:<commandos>
Ejemplo: on 1:LOAD:/echo mIRC Script cargado!
On start se produce cuando inicies el mIRC...
ON MIDIEND Y ON WAVEEND
Se produce cuando el mIRC termina la reproducción de un fichero MIDI o
WAV.
Formato: on <level>:MIDIEND:<commandos>
Ejemplo: on 1:MIDIEND:/splay jazzy.mid
Este evento no tiene funciones asociadas. No se producirá si la reproducción
se
detiene a causa de una interrupción, solo lo hace cuando la reproducción
es
completada.
ON MODE
Se produce cuando un usuario cambia los modos del canal (pero no los de
usuario).
Formato: on <level>:MODE:<#[,#]>:<comandos>
Ejemplo: on 1:MODE:#ayuda_IRC:/notice $me $nick Cambia modos de $chan a:
$1-
Esta instrucción se produce cuando alguien cambia los modos del canal
teniendo
nosotros también el estatus de operador.
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.
ON NOSOUND
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
Formato: on <level>:NOSOUND:<comandos>
Ejemplo: on 1:NOSOUND:/notice $nick No tengo el fichero
$filename
ON NOTIFY Y ON UNOTIFY
Se producen al entrar o salir del IRC un usuario que se encuentra en nuestra
lista de
notificaciones.
Formato: on <level>:NOTIFY:<commandos>
Ejemplos:
on 1:NOTIFY:/msg $nick Hola nick, ya te veo venir!!!
on 1:NOTIFY:/notice $me $nick se va del IRC *sniff*
ON QUIT
Se produce cuando un usuario que está en nuestro canal sale del
IRC.
Formato: on <level>:QUIT:<commandos>
Ejemplos:
on 1:QUIT: notice $me $nick sale del IRC con el mensaje: $1-
ON SNOTICE
Se produce cuando recibimos una noticia del server.
Formato: on
<level>:SNOTICE:<texto>:<commandos>
Ejemplo: on 1:SNOTICE:*client connecting*:/halt
Para una explicación del formato del texto, ver el evento on
TEXT.
Ejemplo: on 1:SNOTICE:*split*:/splay netsplit.wav
Activa un fichero de sonido en caso de una noticia del server anunciando un
split.
ON TOPIC
Se produce cuando algún usuario cambia el tópico del canal.
Formato: on
<level>:TOPIC:<#[,#]>:<comandos>
Ejemplo: on 1:TOPIC:#mIRC:/msg $chan Hmm, que tópico mas cutre!!!:
$1-
La función $1- devuelve el texto completo del nuevo tópico.
ON USERMODE
Se produce cuando cambiamos nuestros modos de usuario.
Formato: on <level>:USERMODE:<commandos>
Ejemplo: on 1:USERMODE: echo -s nuevos modos: $1-
ON WALLOPS
Se produce cuando recibimos un wallops message.
Formato: on
<level>:WALLOPS:<texto>:<commandos>
Ejemplo: on 1:WALLOPS:*aviso*: echo –s $timestamp WallOp de aviso:
$1-
Ver el evento on TEXT para una explicación de los posibles formatos del
texto.
ON HELP Y ON DEHELP
Se produce cuando un usuario recibe o es privado de halfop en un canal en que
nos
encontramos. Este modo tan especial se puede encontrar en la red
Univers.Org...
Formato: on <level>:HELP:<#[,#]>:<comandos>
Ejemplo: on 1:HELP:#: echo # $nick ha puesto status de halfop a
$opnick
ON PING
Se produce cuando el servidor te manda un PING con un cierto mensaje para
comprobar
si sigues conectado o has cerrado la conexión.
Formato: on <level>:PING:<comandos>
Ejemplo: on 1:PING:echo –s El servidor de ha hecho un ping:
$1-
ON RAWMODE
Se produce cuando un usuario cambia cualquier modo en un canal donde estas
tu.
Formato: on
<level>:RAWMODE:<#[,#]>:<comandos>
Ejemplo: on 1:RAWMODE:#: echo # $nick pone los modos $1-
$1 : los modos que cambia
$2 : los parametros de los modos (nicks, key, limite de
usuarios...)
ON KEYUP Y ON KEYDOWN
Se produce cuando el usuario del mIRC pulsa o deja de pulsar una tecla
especificada
en una ventana especificada...
Formato: on
<level>:KEYDOWN:<@>:<key,...,keyN>:<comandos>
Ejemplo: on 1:KEYDOWN:@:*:echo –S Has pulsado la tecla $keyval en
$window
El ejemplo indicado es un estándar, funciona en cualquier ventana y
tecla...
Mira este otro ejemplo:
on 1:KEYDOWN:@keys:32:echo –s has pulsado la barra espaiadora en la ventana
@keys
ON HOTLINK
Se produce cuando el usuario del mIRC pasa el cursor por encima de un texto
que
contiene la cadena de texto especificada. Puede usarse en cualquier tipo de
ventana,
query, canales, ventanas personalizadas... en todas si
quieres...
Formato: on
<level>:HOTLINK:<texto>:<*#?=!@>:<comandos>
Ejemplo: on 1:HOTLINK:*univers*:*:echo Algun dia todas las redes seran como
Univers
ON SERVEROP
Se producen cuando un usuario del canal es opeado por un servidor de la
red.
Formato: on
<level>:SERVEROP:<#[,#]>:<comandos>
Ejemplo: on 1:SERVEROP:#ayuda_irc: if ($me isop #) mode # -o
$opnick
Lee el apartado del evento Op/Deop para más información...
ON SERVERMODE
Se produce cuando un servidor cambia los modos del canal...
Formato: on
<level>:SERVERMODE:<#[,#]>:<comandos>
Ejemplo:
on 1:SERVERMODE:#:{
if ($me isop #) {
mode # $replace($replace($replace($1,-,<),+,-),<,+)
}
}
En este ejemplo hacemos que cuando el servidor cambia los modos del canal
nosotros
activaremos o desactivaremos los modos que ha cambiado, eso si tenemos la
suerte de
ser op del canal...
Documento escrito por SoMaTiC · www.ayuda-irc.net · sucubus@ctv.es
Modificado y actualizado por [SaRRiO] · www.sarrio.org · admin@sarrio.org
IF-ELSE
Que son los If-Else
Los “If-Else” no son comandos que se puedan ejecutar automaticamente, como
por
ejemplo, el /mode #scripting +m. Los “If-Else” deben de ser ejecutados dentro
de un
alias, popup, o remote, ose a, que hay que escribirlos en
código.
Los “If-Else” son unas condiciones que creamos ente dos objetos. Este comando,
sera
conocido para el que haya programado alguna vez.
La sintaxis
La sintaxis básica de los If-Else es la siguiente : IF ( %objeto.1
comparador
%objeto.2 ) { comandos }. El comando IF, abre el comando. La comparación que
queramos
hacer debe de ir entre paréntesis.
La comparación, consta de tres partes: El primer objeto a comparar, el
comparador y
el segundo objeto a comparar. Los objetos a comparar pueden ser cualquier tipo
de
texto, un número, un nick, el nombre de un archivo… El comparador, es lo que
crea la
condición. Pueden ser muchos los comparadores, igual que, menor que, esta
dentro de…
Bueno, no os habreis enterado demasiado y aquí os va un ejemplo
sencillo
/comprobar {
IF ( $$1 == $$2 ) { echo –a $$1 es igual a $$2 }
ELSE { echo –a $$1 no es igual a $$2 }
}
Si os habéis fijado, ya hemos incluido un comando. El ELSE. Creo que, lo que
he hecho
no necesita más explicaciones. Pero bueno, aquí va:
IF ( $$1 == $$2 ) // Si lo primero puesto, es igual que el
segundo
{ echo –a $$1 es igual a $$2 } // Haz lo siguiente
ELSE // o sino
{echo –a $$1 no es igual a $$2 } //Haz lo siguiente
EL comando ELSE, no es necesario. Si no lo hubiéramos puesto, y si $$1 no
fuera igual
que $$2, no hubiera pasado nada. Pero que pasa, cuando queremos hacer que si
los
números no son iguales, mire si son mayores o menores. ¿Tenemos que poner ELSE
y
despues seguido IF? Pues no.
Para eso esta el comando ELSEIF, que es el unido de los comandos ELSE y IF.
Con esto,
mejoramos nuestro ejemplo:
IF ( $$1 == $$2 ) { echo –a $$1 es igual a $$2 }
ELSEIF { $$1 > $$2 ) { echo –a $$1 es mayor que $$2 }
ELSEIF { $$1 < $$2 ) { echo –a $$1 es menor que $$2 }
ELSE { echo –a PERO que KLASE DE NUMEROS SON ESOS? }
Este nuevo ejemplo, mira si el primer número es igual que el segundo, si no es
así,
mira si es mayor, si no es así, mira si es menor, y si tampoco es así (cosa
difícil
si son números), dice lo de PERO que KLASE DE NUMEROS SON
ESOS?.
Los comparadores
mIRC admite comparadores de muchos tipos. Para números, para
letras…
Aquí teneis los comparadores que acepta el mIRC 5.41 Algunos estan omitidos,
puesto
que no se para que son o no se usan mucho.
== Es igual que
=== Es igual que (mayusculas y minusculas incluidas)
!= No es igual que
< Es menor que
> Es mayor que
>= Mayor o igual que
<= Menor o igual que
// es multiplo de
\\ no es multiplo de
isin Esta dentro de*
isincs Esta dentro de (mayusculas y minusculas incluidas)*
isnum Esta dentro del rango*
isletter Esta dentro de las letras*
ison Esta dentro de canal*
isop Es op en canal
isvo Es voice en canal
ischan Es un canal en el que estas*
isauto Esta en tu lista de auto-ops del canal
isignore Esta en tu lista de ignores
isprotect Esta en tu lista de protects
isnotify Esta en tu lista de notify
El primer grupo, son para los números principalmente, menos los tres primeros.
Estos
se pueden usar con números y texto. El tercero, es para decir que no es igual,
o sea
lo contrario del ==. Este es una excepción, puesto que con los demás, si
quieres lo
contrario del comparador en si, se consigue mediante un ¡ antes del comando,
por
ejemplo, ¡isop .
El segundo grupo es para comparar distintos grupos de textos., menos el isnum.
Este
es para mirar si el número $$1 esta dentro del rango $$2. Este rango tiene que
estar
en este formato: N1-N2. Por ejemplo: 1-10. El comando isletter hace lo mismo,
pero
con letras, en este, el formato de $2 es el siguiente: L1L2L3L4. Por
ejemplo:
abdgklt.
El isin y el isinc son para mirar si un texto esta dentro de otro. Por
ejemplo, si
queremos hacer el juego de “la ruleta de la fortuna” y alguien, dice una
palabra, por
ejemplo, casa. La condición seria:
IF ( %lokehandixo isin %eltextoentero ) { say Has acertado una palabra!!!
}
El isinc, seria lo mismo, pero si quisieras que también acertar con las
mayúsculas.
El ison, aunque se parezca mucho al isin, es para mirar si alguien esta dentro
de un
canal. Por ejemplo:
IF ( Flubbers ison #scripting ) { msg $chan Joer Flubbers, siempre estas aquí!
}
El isop, y el isvo se usan de la misma forma, para mirar si alguien tiene op o
si
tiene voz o esta voice. El ischan, no necesita un segundo objeto, su sintaxis
es la
siguiene: if ( canal ischan ) { }. Esto mira si el canal es un o en el que
estes tu.
El último grupo de comparadores, es para nuestras listas internas de notify,
ignore…
Estos tiene el mismo sintaxis que el ischan.
Comandos Especiales
Y que pasa si queremos hacer, por ejemplo, que cuando haya dos condicones para
hacer
algo, o cuando alguno de los dos valga…? Pues para eso existen los comandos ||
y &&.
El primero, junta dos comparaciones, siendo valida cualquiera de las dos para
que
pase algo. Por ejemplo:
IF( $nick == Scytale)||( $nick == Scytale) { echo –a $Nick es un bot
}
El && es como un “Y”. Es usado cuando se necesita que pasen las dos
cosas. Por
ejemplo, cuando un protegido te pide op mediante query:
ON 1:TEXT:opme*:?:{
If ( $nick isprotect )&&( $me isop $$2 ) {
Mode $$2 +o $nick
}
Por último, hay un identificador especifico de los IF-ELSE. Es el $ifmatch.
Este, es
el primer objeto de la comparacion. Por ejemplo:
IF ( %TEXT != HOLA KARAKOLA ) { echo –a $ifmatch no es igual que HOLA KARAKOLA
}
Documento escrito por genars para el canal #Scripting con fecha
1-12-1998
EVENTOS CTCP
Introducción
Las siglas CTCP significan “Client to Client Protocol” o “Protocolo de cliente
a
cliente” en castellano, y básicamente se trata de un tipo escpecial de
comunicación
entre los usuarios de un server de IRC que será usada para provocar que los
usuarios
de el script que estemos haciendo ejecuten ciertas acciones automáticamente
al
recibir cierta información por CTCP.
Por otra parte los usuarios remotos se refiere a algo que usted seguro que ya
ha
visto anteriormente en el tutorial de enventos remotos, se trata de ese
numerito que
siempre ponemos en el evento por ejemplo “on 1:OPEN:” , ¿qué es ese ‘1’?
Pues
sencillamente es el nivel que necesita un usuario para hacer que salte ese
evento con
los comandos que se hayan especificado, despues entraré en más detalle en
esto, ahora
volviendo al principio vamos a ver todo lo referente a los eventos
CTCP:
Comandos CTCP
Para mandar información 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. Lógicamente 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
automáticamente 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 información, que al llegarnos de nuevo el mIRC nos muestra
en
pantalla. En este caso en pantalla se muestra el “Lag” o retardo de la línea
que hay
entre usted y la persona a la que envió el ping. Puede probar con los otros
CTCP
implementados ya en mIRC, el funciona-miento de todos es similar; solo varia
la
respuesta que proporcionan.
A continuación aprenderá a crear sus propias respuestas a ciertos CTCP's, ya
que el
mIRC solo trae unas cuantas ya definidas (como son PING, VERSION, TIME ...)
pero
usted quizás quiera hacer otras con otros nombres, o tal vez cambiar las
respues-tas
que a los ya existendes dará su programa.
Eventos CTCP
Vamos a ver ya como usamos este tipo de eventos para que la explicación sea
más fácil
de entender. En la sección “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 parámetro ha de ser o bien un ‘#’ si nos referimos a un canal, un ‘?’
para un
privado(query) o un ‘*’ para “en cualquier lado”.
Con un pequeño ejemplo lo veremos más claro, copie lo siguiente en el editor
del
mIRC, pestaña “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 automáticamente le responda enviándole un query en el que diga
por
ejemplo “Son las 19:45:23” . Como ve se pueden usar ‘*’ en el parámetro
<texto> para
indicar que si la palabra “hola” del mensaje CTCP viniera precedida de
cualquier
otra, o despues de esa palabra hubiera alguna palabra más, se ejcutaría 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 envíe un /ctcp DIME , usted le
responda
diciendole que está ocupado. Por ejemplo un usuario le podría 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
existían antes en el mIRC y a los que el script responderá de la forma que le
hemos
especificado, pero también si quisiera, podría 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 Nada de Pings, gracias! | halt
}
Este evento hará que cuando usted reciba un /ctcp ping de algún usuario, le
enviará
un /notice diciéndole: “Nada de Pings, 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). También podríamos
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 código en
la
sección 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 después del “HABLA” al
canal,
por ejemplo si ponemos /ctcp <nickclon> habla soy un bot, me manejan con
ctcps! hará
que nuestro clon diga ese mensaje al canal.
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 canal que especifiquemos en /ctcp
<nickclon> entra
#canal
ctcp 1:comosoy:#:{ /say Me llamo $1 , tengo $2 años y soy $3
}
Este último hará que el clon diga en el canal ese mensaje usando las tres
siguientes
palabras que pongamos despues del /ctcp <nickclon> comosoy , por ejemplo
si ponemos
/ctcp <nickbot> comosoy Pepe 20 alto , el bot pondrá en el canal “Me
llamo Pepe,
tengo 20 años y soy alto”.
Con esto hemos matado dos pájaros de un tiro, no sólo 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 creación de Clones que
obedezcan
nuestras órdenes, tambien conocidos como “bots”.
Antes de pasar a la siguiente sección hay que comentar también que hay un
tipo
especial de eventos CTCP que sirven exclusivamente para cambiar la apariencia
de las
respuestas estándar de los CTCPs predefinidos en el mIRC... es decir que por
ejemplo
cuando usted hace un ping a alguien, ese alguien le devuelve la información
del ping,
y usted ve en pantalla algo como:
[TeMpEsT PING reply]: 0 secs
Pero quizás para hacer más bonito el script le gustaría que
pusiera:
Lag con TeMpEsT: 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 basándonos en a información 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
ALIAS
mIRC te permite crear alias y script para acelerar tu sesión de IRC o realizar funciones repetitivas
fácilmente. Para crear alias debes saber algunos comandos de IRC.
Pueden llamarse alias desde la línea de comandos, desde otros alias, y desde popup y script remotos.
Un alias no puede llamarse como recurso principal porque esto parece causar más problemas a los usuarios que los que resuelve.
Ejemplos
Los ejemplos siguientes te muestran cómo crear alias que realizan funciones simples.
/gb /join #stella
Si tu escribes /gb es lo mismo que escribir /join #gb
/j /join $1
Ahora hemos agregado un parámetro más. Si tecleamos /j #gb esto es igual que teclear /join #gb. El $1
representa al primer parámetro en la línea que escribes.
/yell /me $2 $1
Si ahora escribes /yell Buenas Tardes la acción de comando es lo mismo que /me Buenas Tardes. El
número después de $ especifica el número del parámetro en la frase que has puesto.
/jj /join $?
El signo de interrogación indica que deben pedirte que escribas ese parámetro. El parámetro que
proporcionas se insertará en la línea en ese punto. Así si tecleas /jj una ventana de diálogo aparecerá para pedirte en que canal quieres entrar. Si pones #gb entonces el comando final será /join
#gb.
/jj /join #$1
El signo # significa que el parámetro que introduzcas debe ir precedido por ese signo, indicando que
es un canal.
/jj /join $?="Pon canal para entrar:"
Esto significa que el cuadro de diálogo para poner el parámetro llevará el título "Pon canal para
entrar".
/aw /away $?="Pon mensaje away:" | /say $!
Esto es similar a la línea anterior salvo que se ha sumado el parámetro $! . Esto simplemente hace
referencia al texto que tecleaste en la caja de diálogo. Esto evita que tengas que teclear el mismo mensaje dos veces.
/give /me dale $$1 a $$2
El doble $$ indica que este comando sólo se ejecutará si el parámetro se especifica. Si especificas
sólo un parámetro en el comando anterior no se ejecutará. También puede poner $$?1 o $?1. Si el parámetro no existe lo pide. En el primer caso el parámetro es necesario para ser ejecutado el
comando, en el segundo caso no está.
/slap /me slaps $1 around with $2-
El $2- se refiere a todo lo que sigue e incluso el parámetro 2 debe añadirse a la línea del comando.
Si tecleas /slaps Sheepy a large trout, la línea resultante será /me slaps Sheepy around with a large trout.
También puedes especificar $2-5 que usan sólo los parámetros de 2 a 5.
/laugh /me se ríe del $1 chiste
Lo añadido a el parámetro $ se añade al final del parámetro. Así si en el ejemplo anterior nosotros
tecleamos mimi /laugh el comando final sería /me se ríe del chiste de mimi.
/silly /say ¡ Ho $+ la a to $+ dos $+ !
Los parámetros están normalmente separados por un espacio. Para hacer a mIRC combinar parámetros
puedes usar el identificador $+ . La línea anterior dirá ¡ Hola a todos !.
/p /part #
El signo # se refiere al canal en que estás. Así si estás en canal #blah, y tecleas /p entonces mIRC
reemplaza el signo # con #blah, y el comando final es /part #blah.
/op /mode # +o $1
Ahora para opear a alguien solo tienes que escribir /op tacher en lugar de escribir todo el comando
/mode.
/dop /mode # -ooo $1 $2 $3
Ahora puedes desopear a tres usuarios a la vez escribiendo /dop jcarlos bbeatt
katrin.
Para comandos múltiples debes usar el carácter | pipe ( carácter en la tecla del 1 en teclados
españoles, bajo la tecla \ en otros). Para escribir un alias que kickee y banee a alguien:
/dkb /kick # $1 | /mode # +b $1
Evaluando [ ] corchetes
Si quieres control mejor en el orden de evaluación de identificadores, puedes usar [ ] corchetes.
Identificadores dentro de estos se evaluarán primero, desde izquierda a derecha. Puedes asi mismo encadenarlos.
/say % [ $+ [ $1 ] ]
Puedes también obligar a reevaluar identificadores previamente evaluados con el uso extra de
corchetes.
/set %x %y
/set %y Viva!
/echo [ [ %x ] ]
Los { } Paréntesis
Puedes crear script multi-líneas usando los { } paréntesis. Esto te permite crear alias que ejecuten
varios comandos.
/poem {
/msg $1 Un caballo es un caballo..
/msg $1 Un pato es un pato..
}
La condición If-then-else
Puedes usar condicionantes tipo If-then-else para decidir qué partes de tu script se ejecutan
basandose en evaluaciones de comparación.
/numero {
if ($1 == 1) echo El número UNO
elseif ($1 == 2) echo El número DOS
else echo Número Desconocido
}
Esto crea un alias que prueba si el parámetro que proporcionas es el número 1 o el número
2.
Para más información, mira la sección If-then-else.
El comando Goto
El comando goto permite saltar de un punto a otro de un script.
/numero {
if ($1 == 1) goto uno
elseif ($1 == 2) goto dos
else goto desconocido
:uno
echo El número UNO
halt
:dos
echo El número DOS
halt
:desconocido
echo Número desconocido
halt
}
El uso incorrecto de un goto puede provocar bucles infinitos. Si ocurriera eso, pulsa
Control-Break.
Nota: Si observas no puse en los comandos anteriores el prefijo / del comando. Esto es porque el
prefijo del comando realmente se necesita sólo al entrar un comando en una línea de comandos. Se presupone que todas las líneas empiezan con comando en un script, así que no necesitas usar el
prefijo / de comando.
Error en script
Los errores en script se pueden evitar añadiendo sentencias :error goto. Cuando ocurre un error, el
script saltará hasta donde indica la llamada :error y continuará ejecutandose. $error da el mensaje de error message.
Puedes resetear el error con /reseterror. Si no reseteas el error, volverá a repetirse y se
encontrará con otro :error que detendrá el script.
Dando vueltas
Repite vueltas ordenadas por un comando mientras la condición entre paréntesis sea
válida.
var %i = 1
while (%i <= 10) {
echo 2 %i
inc %i
}
La expresión entre paréntesis usa el mismo formato que if-then-else.
Múltiples vueltas pueden producirse. Puedes usar el comando /break para detener las vueltas o el
comando /continue para saltar al principio.
El comando Return
El comando /return detiene la ejecución del script actual y permite llamar a la rutina para seguir
procesando.
Puedes especificar opcionalmente un valor a return que se guardará en el identificador $result. El
identificador $result puede usarse en las rutinas de llamada.
/return [valor]
El comando Halt
El comando /halt detiene la ejecución de un script. Puedes usarlo en scripts remotos para evitar que
mIRC de las respuestas normales a los mensajes ctcp, o en alias para detener un alias, y llamar a otro alias, o parar definitivamente.
Identificadores y Variables
Un Identificador devuelve el valor construido de una variable en mIRC. Por ejemplo, $time devolvería
la hora actual. Siempre que mIRC encuentre un identificador en un comando, lo reemplaza con el valor actual de ese identificador.
Para ver un listado de identificadores, mira la sección Identificadores.
Las variables son identificadores cuyos valores pueden crearse, pueden cambiarse y pueden usarse
después en scripts.
Para más información sobre variables, mira la sección Variables.
Identificadores Personalizados
Un identificador personalizado es tan solo un alias que devuelve un valor, y puedes usar esos nombres
de alias con un prefijo de identificador.
Por ejemplo, creamos el alias /add como:
add {
%x = $1 + $2
return %x
}
Y entonces lo usas en un comando:
//echo Total es: $add(1,2)
Puedes poner tantos parámetros como quieras al identificador, ejemplo: $add(1,2,...
,N).
Puedes usar también el identificador $prop para hacer referencia a las propiedades
personalizadas:
add {
%x = $1 + $2
if ($prop == negative) return $calc(-1 * %x)
return %x
}
//echo Total es: $add(1,2).negative
Nota: construir identificadores del mismo nombre tiene prioridad.
Script remotos
Puedes agregar alias a los script remotos usando el prefijo del alias y usando el alias como de
costumbre.
alias add {
%x = $1 + $2
return %x
}
Éste es como el anterior identificador personalizado, excepto que usa el prefijo del
alias.
Si especificas el parámetro -l en la definición del alias, el alias sólo es accesible por comandos en
el mismo script e invisible para la línea de comandos y otros script.
alias -l add {
%x = $1 + $2
return %x
}
Teclas de Función
Puedes redefinir teclas de función para ejecutar ciertos comandos, como los alias. Por
ejemplo:
/F1 /say Hola!
/sF2 /query $1
/cF3 /ctcp $1 version
Los prefijos s y c se refieren a las teclas mayúsculas ó Shift y Control
respectivamente.
Nota: La tecla de función se comportará dependiendo de la ventana en la que se usa diferentemente.
Por ejemplo, cuando la usas en ventana de query el parámetro $1 se refiere al nick del usuario seleccionado. Si estás en un canal y la lista de nicks está activa la tecla de función trabajará en
los nick seleccionados. Si la lista de nicks no está activa, la tecla de función no trabajará en el canal.
Prefijos de comando
Si estás ejecutando un comando desde la línea de comando, tecleándolo en la caja de editar, puedes
obligar a mIRC a evaluar identificadores en ese comando prefijándolo con dos // en lugar de uno /. Por ejemplo:
/echo Mi nick es $me
Si lo escribes en la línea de comandos $me no es evaluado.
//echo Mi nick es $me
Entonces el $me si es evaluado y sale "Mi nick es Pengy" siempre que Pengy sea tu
nick.
Si quieres forzar a un comando a ejecutar en silencio, sin imprimir ninguna información, puedes
prefijarlo con "." Por ejemplo:
/ignore algúnnick
Eso te emite la información que te dice que ignoras a "algúnnick". Si no quieres desplegar esa
información, entonces usa :
/.ignore algúnnick
Si quieres ejecutar un comando sin que se procese como un alias, lo debes prefijar con ! el signo de
exclamación.
Comentarios
Puedes agregar comentarios a tus script usando el ; punto y coma en el principio de la línea, o /* y
*/ encerrando el texto.
;Esto es un comentario
/*
Esto es un comentario
*/
Puedes poner comentarios en cualquier parte de un script, ellos se ignoran al
procesar.
El identificador $&
Este identificador te permite partir una sola línea en líneas múltiples que se combinan cuando el
script se ha ejecutado, para asi poder revisar comandos largos más fácilmente:
longline {
echo Éste es un ejemplo largo de $&
línea que ha sido partida en las líneas múltiples $&
para hacer más fácil su revisión
}
Y despues de tanto rollo os pongo un ejemplo practico que yo uso
/in /cs voice #emule-spanish-2 | /cs halfop #emule-spanish-2 | /cs op #emule-spanish-2 | /cs protect
#emule-spanish-2
{para ponerme level en el canal spanish-2 escribiendo /in}
/out /cs devoice #emule-spanish-2 | /cs dehalfop #emule-spanish-2 | /cs deop #emule-spanish-2 | /cs
deprotect #emule-spanish-2
{para quitarme level en el spanish-2 escribiendo /out}
/saludo /ame Hola a todos , llegó la Princesa !!!!!
{con
esto saludo al personal de los canales escribiendo /saludo}
/desp /ame Adios a todos , os quiero muchooooo !!!!
{con
este me despido de todos escribiendo /desp}
Los comandos se pueden escribir en cualquier parte del ircap , o mirc , ya sea en la ventana de un canal, en estado ( status ) o donde sea , incluso en un privado