Aula Macedonia


Curso de Programación de Scripts para mIRC


Artículo realizado por
David García "Gato".





Creación de alias

Un alias es una especie de "atajo" que podemos crear y que nos permitirá ejecutar un número ilimitado de comandos de una sola vez. Podemos pensar en un alias como un nuevo comando u orden para mIRC que creamos nosotros mismos. Lo que conseguimos es la ejecución ordenada de todos los comandos que deseemos escribiendo una sola orden. Podemos encontrar todos los alias de que disponemos en un momento determinado en el menú TOOLS opción "aliases". Es ahí donde debemos escribir los nuevos alias que creemos, o modificar los existentes.

No obstante, antes de empezar a crear y modificar alias es preciso tener un buen conocimiento de los comandos del mIRC, puesto que son ellos los que forman el núcleo fundamental de las ordenes que se emplean en un alias. Los comandos del mIRC están incluidos en este cursillo.

¿Dónde podemos usar los alias?

Los Aliases se pueden usar en las ventanas donde normalmente ponemos lo que pensamos o escribimos, también en los popups y en los remotes cosa que explicare mas adelante. Las teclas que nunca usamos, o pocas veces son las teclas de función, las cuales se pueden configurar en los aliases usando a nicks seleccionados o en el canal, dependiendo de como hayamos definido el alias.

También podemos llamar a otros alias desde un alias o usarlos como un loop, para conseguir distintas cosas. Para que no se caiga en la tentación de cometer un fallo y crear un loop infinito (cosa que nos bloquearía el ordenador) existe un comando que es el /maxdepth que puede cambiar las veces que se repite algo que esta puesto por defecto en 5 como máximo y mínimo como 1. Para lo que sirve este comando es ni mas ni menos que el alias pueda llamar a solo 5 alias mas, con un nivel máximo de 100 si usamos /maxdepth 100

UNA SOLUCION CUANDO ENTRE UN ALIAS EN UN LOOP, PULSAD CTROL+BREAK PARA PARAR EL LOOP.

 

Creación de alias.

La definición de un alias se compone de dos partes: el nombre o patrón del alias, y las instrucciones que se ejecutarán cada vez que llamemos a este alias. Vamos a verlo con un ejemplo sencillo:

/entra /join #canal

Este alias se llama "entra", y cada vez que en la línea de escritura pongamos: /entra, el programa ejecutará el comando /join #canal

Obsérvese que el nombre del alias debe de ir precedido del símbolo de comando "/" al se ejecutado en una ventana del mIRC. A la hora de crear el alias no es necesario el signo "/", pero es conveniente ponerlo. A continuación del nombre pondremos un espacio en blanco, y las ordenes que queremos que el alias ejecute al ser invocado. Estas ordenes serán normalmente otros comandos u otros alias. No es recomendable el uso de la recursividad, es decir, emplear el nombre del alias que estamos definiendo dentro de su propia definición.

Si en la definición del alias queremos especificar varios comandos u ordenes, no nos vale la sintaxis anterior, a estos efectos disponemos de las llaves {} para encerrar todas las líneas del alias. Podemos poner el alias de dos formas:

/entra {

/nick GaTo

/join #amigos

/mode GaTo +i

/say Hola a todos

}

Podría ser también:

/entra { /nick GaTo | /join #amigos | /mode GaTo +i | /say Hola a todos }

En este caso hemos separado las instrucciones usado el signo | (Alt Gr+1) en lugar de pulsar Enter.

Este alias cambiará nuestro nick, nos introducirá en el canal #amigos, y pondrá nuestro modo de usuario en +i (invisible).

Evidentemente los alias no serian lo que son si no permitieran una mayor flexibilidad en sus definiciones. Para ello usaremos los identificadores, que se pueden encontrar en este curso en su sección específica. Imaginemos que no queremos especificar un nick para el alias /entra, ni tampoco los canales en que este nos debe de introducir, sino que deseamos que estos sean los que decidamos en cada momento que ejecutamos el alias. Esto es posible utilizando identificadores posicionales del tipo $nº de la siguiente forma:

/entra {

nick $1

join $2

mode $1 +i

}

De esta forma el alias esperará que nosotros especifiquemos el nick y los canales a continuación de la llamada, y sustituirá $1, $2, y $3 por la primera, segunda, y tercera palabra que escribamos detrás de la orden /entra. Para lograr el mismo resultado que antes deberemos escribir:

/entra GaTo #amigos

Aún más, podemos hacer que el propio programa nos pregunte en una ventana de diálogo cual es el valor que queremos introducir en el alias, empleando el parámetro $? o $$?. Por ejemplo:

/j /join $?="¿A qué canal quieres entrar? (con # delante)"

Cuando llamemos a alias /j, nos aparecerá una ventana que nos dirá: "¿A qué canal quieres entrar? (con # delante)", y el programa nos introducirá en el canal que especifiquemos.

Un identificador muy útil que se usa en combinación con $? es $!. Este nos permite recuperar el valor que hemos introducido en la ventana de diálogo, sin necesidad de tenerlo que escribir de nuevo. Por ejemplo:

/minick {

/nick $?="Introduce tu nuevo nick"

/say ¿Que os parece mi nuevo nick: $! ?

}

El comando /say es una orden que solo se ejecuta desde dentro de un script, y equivale al comando /msg #. Es decir envía un mensaje al canal actual.

Si a la hora de invocar un alias que contiene parámetros posicionales o del tipo $? omitimos la palabra por la cual estos deben de ser sustituidos (no ponemos un nick o unos nombres de canal en los ejemplos anteriores), el programa intentará ejecutar de todos modos el alias, y en la mayoría de los casos se producirá un error. Una alternativa interesante es hacer uso de la variación $$nº ó $$?. El doble signo $ hace saber al programa que si en la llamada a un alias no se da un valor a ese parámetro, debe de ignorar la orden. Por ejemplo:

/saludo /say Hola $$1 , $2 , $3 .Este es el canal de la diversión !!

Podemos ejecutar el alias /saludo especificando hasta tres nombres o palabras para ser incluidas en la línea del /say, pero funcionará igualmente si ponemos solo dos o una; sin embargo, si no damos al menos un valor tras la llamada /saludo el programa lo ignorará y no ejecutará acción alguna.

Obsérvese que hemos tenido la precaución de definir los identificadores bien separados del resto del texto por espacios en blancos a derecha e izquierda, si no lo hacemos así el programa no los identificará como tales y los tomará literalmente como un texto. Si en alguna ocasión es preciso que la palabra que sustituya al identificador aparezca junto a otros caracteres que no sean blancos (signos ortográficos, paréntesis, el path de un fichero...etc.) podemos recurrir al identificador $+, este lo único que hace es eliminar los espacios en blanco que tiene a derecha e izquierda en la presentación final de la línea.

Por ejemplo:

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

Si escribimos:

/fichero mirc32.exe

Obtendremos la línea:

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

Una variante interesante de los identificadores $nº, $?, $$nº, y $$? la podemos lograr anteponiendo a los mismos el símbolo #; esto nos evita el tener que escribir siempre este símbolo antes del nombre cuando queramos introducir el nombre de un canal, puesto que el programa lo insertará automáticamente. Por ejemplo:

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

Otra opción muy útil de la creación de aliases es la especificación de alias dirigidos a las teclas de función, es decir el nombre o patrón se asocia con las teclas F1 a F12, o bien de combinaciones de estas con los botones Shift y Control; de este modo solo es necesario pulsar la combinación de teclas correspondiente para que el alias se ejecute.

Ejemplos:

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

Con este alias no necesitamos más que pulsar F1 para que el programa nos pida un nick, y emita un mensaje de saludo a ese nick en el canal activo.

/sF2 /quit Adiós amigos, hasta pronto!

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

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

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

De lo visto hasta ahora se deduce fácilmente que la principal potencia de los alias reside en el uso de los identificadores $; hay otros muchos además de los que hemos descrito aquí, que proporcionan diferentes utilidades, una lista más detallada de estos se puede consultar en el apartado IDENTIFICADORES DEL mIRC. Claro que hay otros recursos como el uso de variables, la instrucción if-then-else, etc. Veamos más a fondo los alias.

Creando secciones en un alias

En los alias podemos crear secciones o apartados es los que definiremos los comandos que se ejecutan en cada uno. Las secciones se definen poniendo :Nombre_sección. Para movernos de una a otra usamos el comando goto Nombre_sección. Si no decimos nada, no ponemos goto "algo" el mIRC ejecutará el alias de forma normal, ignorando las secciones que existan. La mejor forma de entenderlo es viéndolo:

/frase {

/set %num $$?="Del 1 al 3 ¿Cómo es de pesado $$1 ?"

if (%num == 1) goto pesado1

if (%num == 2) goto pesado2

if (%num == 3) goto superpesado

:pesado1

/say Bueno aún podemos aguantar a $$1 Hacedle un sitio y que se siente con nosotros.

/me invita a $$1 a una taza de café [__]D ~~~~~ recién hecho.

goto fin

:pesado2

/say $$1 es un poco pesado. ¿Por qué no cierras un poco la boquita majo?

goto fin

:superpesado

/say ¡¡Dios mío que pesado que eres $$1 !!

/kick # $$1 Te he pateado de pesado que eres. Ajo y agua.

/say Menos mal que se ha ido $$1 . Qué tranquilos nos ha dejado.

goto fin

:fin

}

Aquí vemos que hay tres secciones claramente diferenciadas, son: pesado1, pesado2 y superpesado. Si escribimos /frase Luis nos aparecerá una ventana preguntándonos "Del 1 al 3 ¿Cómo es de pesado Luis?". Dependiendo del número que digamos 1, 2 o 3 se ejecutará una parte del alias específica para ese valor.

ES MUY IMPORTANTE AL FINAL DE UNA SECCIÓN PONER GOTO FIN PARA QUE SE TERMINE LA EJECUCIÓN DEL ALIAS.

En caso de no poner nada se ejecutaría entero, las tres secciones seguidas.

Otro ejemplo bastante sencillo y vistoso:

/dib {

/set %animal $$?="Elige: Vaca o Raton"

if (%animal == Vaca) goto vaca

if (%animal == Raton) goto raton

:vaca

/say ------((__))

/say -------(00)

/say nn--(o__o)--nn-

/say -------´--` -------- Muuuuu

goto fin

:raton

/say ------()_()

/say ------(o o)

/say -ooO--`o'--Ooo-

goto fin

:fin

}

Abreviaciones compartidas

Múltiples comandos pueden compartir la misma abreviación:

/jt /join $1 | /topic $1 Solo probando....

En este alias el parámetro $1 es usado dos veces. Si ponemos /jt #prueba primero entraríamos en el canal y luego cambiaríamos el comentario o topic de ese canal a " Solo probando... ". Podríamos haber usado también ! $, que significaría decir lo mismo que lo ya dicho.

Otro ejemplo:

/amor /say ¡¡ Quiero a $1 ! | /say ¡¡ Realmente quiero a $1 !!

Si pusiéramos /amor María pondría:

/say ¡¡ Quiero a María !! | /say ¡¡ Realmente quiero a María !!

CAMBIANDO MODOS (OPEANDO, ETC.)

Antes de poner nada tienes que saber el funcionamiento de los modos, para eso esta el manual del mirc, asi que si no

sabes como funcionan te remito a el para que te enteres.

/mode #canal +ooo nick1 nick2 nick3

...lo cual dará op a tres personas al mismo tiempo

Un bonito alias podría ser

/op /mode # +ooo $1 $2 $3

Para dar op a Andrés, Paco y María pondrías /op Andrés Paco María

El símbolo # en este alias nos muestra el uso de otra abreviación predeterminada (# y $!).# siempre nos representa el nombre del canal del que usamos sobre el alias.

En el mismo sentido podemos usar:

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

/ban /mode # +b $1

/kick /kick # $1

/dbk /mode # -o $1 | /kick # $1 | /mode # +b $1

IMPORTANTE: Es muy importante que dejes una separación o espacio entre la abreviación predeterminada y el texto, si no lo haces así NO FUNCIONARA BIEN EL ALIAS.

/gusta /say ¡¡¡ me gusta $1!!!

NO FUNCIONARA debido a que le falta un espacio entre la abreviación $1 y !!!. OJO CON ESTE FALLO QUE ES MUY FRECUENTE.

/gusta /say ¡¡¡ me gusta $1 !!!

...este si funciona bien.

 

USANDO CORCHETES.

Podemos usar corchetes en los aliases para controlar el orden de evaluación de los identificadores. Los identificadores se evalúan primero desde la izquierda hasta la derecha o de arriba a bajo, según lo estructuremos con | o con el "Enter". Por ejemplo

/note /notice $1 " $+ [ $read [ -s + [ $2 ] ] c:/text/note.txt ] $+ "

/sayvar /say % [ $+ [ $1 ] ]

-----------------------------------

Unos cuantos ejemplos de alias:

Yo creo que la mejor forma de comprender las cosas es con muchos ejemplos así que aquí tieneis un poco de todo. Empecemos de lo más sencillo a más complicado.

Un dibujito, sin más podría ser:

/pirch /say · : . ° <º))))>< · : . ° · : . ° Todo lo que PIRCH® puede hacer... ° · . ° ·:.° ° . . · : ° · : . ° el mIRC® lo hace Mejor ! ° · . ° ·:° °· : . ° ° · . ° <º))))>< El PIRCH®?? jajajajajaaa..... ° · . °°°° · . °° °

 

Si queremos hacer un dibujo vistoso, aunque sencillo, de un corazón podremos usar este ejemplo, que se puede colorear para crear un mejor efecto. Si escribo en un canal /corazon María podré dejar alucinada a la tal María con esto:

/corazon {

/say (¯`'·.¸(¯`'·.¸ $$1 ¸.·'´¯)¸.·'´¯) Te quiero...

/say (_¸.·'´(_¸.·'´ $$1 `'·.¸_)`'·.¸_) ...corazón

}

 

Si deseamos poner un topic florido al canal, pudiendo escribir el texto que deseemos cada vez que ejecutemos el alias, podemos crear el siguiente alias.

/ctopic /topic # °º©o¿,,¿o©º°¨¨°º© $$?="¿Mensaje?" ©º°¨¨°º©o¿,,¿o©º°¨¨

 

Definimos aquí la tecla de función F11 para que al pulsarla el mIRC ignore a todo el mundo que use arrakis como su servidor de Internet. Nos saldrá un mensaje en la ventana que estemos que nos avisará de lo que hemos hecho.

/F11 { ignore *!*@arrakis.es | echo –a GaTo Script: Estas ignorando a todos los de Arrakis }

 

Este mismo ejemplo se puede hacer de forma que no podamos variar el servidor que deseamos ignorar. Oservese ien el uso del identificador $+ , que es fundamental ya que, como ya he dicho, NUNCA puede haber nada "tocando" al identificador, siempre debe tener un espacio delante y detrás. Será así:

/F11 { ignore *!*@ $+ $$?="Qué servidor?" | echo –a GaTo Script: Estas ignorando a todos los de $$! }

 

Aquí tenemos otro muy sencillo. En este caso, al escribir /chiki el mIRC irá a un fichero donde tengamos chistes del Chikito de la Cazada, eligirá uno al azar y lo mostrará. Será de esta forma:

/chiki say Chikitada: $read $mircdirsistema/docs/chiki.txt

 

Algo ya más complejo, aunque es bastante sencillo en el fondo, es este alias que dedica una canción a la persona que le indiquemos. Nos aparecerá una ventana donde elegir la canción y después nos preguntará por la persona a la que dedicar la musiquita. Lo que hace la primera orden es pedirnos la canción deseada y define una variable (%midi2) que es la ruta hasta el fichero, que nos servirá para ejecutar el archivo y para que en el mensaje final pueda ver el dedicado cual es el título de la música elegida. Esto se hace así:

/midi {

/set %midi2 $dir="Escoge un MIDI" *.mid

/sound $$?="¿A quién se la dedicas?" %midi2

/notice $$! $me dedica la canción [ $+ $nopath(%midi2) $+ ] en especial para $$!

}

 

Aquí tenemos un alias creado expresamente para la guerra, el IRC WAR. Éste alias manda un número muy alto de información a la víctima, que es desconectada del servidor de IRC por sufrir un FLOOD o inundación de datos. Es importante ver la última instrucción, un DDE. Hablaré de ellas más adelante con tranquilidad. Ésta llama a un clon que tengas y le indica que ataque también a la víctima. De esta forma el ataque se dobla en eficacia. Aquí lo tenéis:

/mortal {

/echo 3 -a GaTo Script: Mandando un Kill Script a $$1

/raw -q NOTICE $$1 : SoRpReSa-SoRpReSa-SoRpReSa-SoRpReSa-SoRpReSa-SoRpReSa-

/raw -q NOTICE $$1 : SoRpReSa-SoRpReSa-SoRpReSa-SoRpReSa-SoRpReSa-SoRpReSa-

/raw -q NOTICE $$1 : SoRpReSa-SoRpReSa-SoRpReSa-SoRpReSa-SoRpReSa-SoRpReSa-

/raw -q NOTICE $$1 : SoRpReSa-SoRpReSa-SoRpReSa-SoRpReSa-SoRpReSa-SoRpReSa-

dde ck1 command "" /mortal $$1 | /safeguard

}

 

Otro ejemplo es este. Aquí podremos ver un cuadro que nos informa sobre tu conexión actual . No he eliminado las instrucciones de colores para que veáis cómo se ponen:

/infome {

/echo 9,1 -----------------------------

/echo 4,1 Tu Información Personal es:1..

/echo 9,1 -----------------------------

/echo 8,2 *Mi Nick:9 $me 2..........

/echo 8,2 *Mi IP:9 $ip 2......

/echo 8,2 *Mi Servidor:9 $server

/echo 8,2 *Mi Puerto de Acceso:9 $port 2..

/echo 8,2 Tiempo Conectado:11 %hours $+ hrs %mins $+ mins

/echo 8,2 *Hoy es:9 $fulldate

/echo 9,1 -----------------------------

}

Entramos por fin en el asunto y empezamos ya con alias verdaderamente complejos. El siguiente lo que hace es buscar a la dirección IP que le indiquemos y mostrarnos información sobre ella. Veámoslo:

/buscaip {

if ($1 == $null) { set %IPScan.Address $$?="Pon la IP" } | else { set %IPScan.Address $1 }

echo 2 # GaTo Script: IP Scaneando: # en: %IPScan.Address | set %Var.Index 1 | set %IPScan.Index 0

:scan

set %Var.Temp $nick(%Var.Index,#) | if (%Var.Temp == $null) { goto end }

set %Var.Temp $address(%Var.Temp,2)

if (%IPScan.Address == %Var.Temp) { goto found }

if (%IPScan.Address isin %Var.Temp) { goto found }

if (%IPScan.Address iswm %Var.Temp) { goto found }

inc %Var.Index | goto scan

:found

inc %IPScan.Index | echo 2 # %IPScan.Index $+ . $nick (%Var.Index,#) ( $+ %Var.Temp $+ )

inc %Var.Index | goto scan

:end

echo 2 # GaTo Script: Fin de la búsqueda! Total: %IPScan.Index | unset %IPScan.*

}

 

Vamos a definir una lista en las variables de nuestros canales favoritos, a la que podremos añadir un canal cuando nos plazca. En los popups podremos seleccionar el canal que deseemos y entra a él sin tener que hacer nada más. El número máximo de canales de la lista será de 17. Veamos cómo se hace:

/favoritos {

inc %n

if ( %n == 17) {

echo GaTo Script: La lista de canales está llena.

wavplay $mircdir $+ sonido/warning.wav

/set %sn $$?="Deseas empezar desde el principio? Si/No"

if ( %sn == Si ) { /set %n 1 | echo GaTo Script: Se iniciará la lista desde el principio }

if ( %sn == no ) goto fin_malo

}

/set %ultcana $+ %n $$?="¿Qué canal? (con #)"

/set %clave $?="¿Tiene clave? S/N"

if (%clave == S) goto clave

echo GaTo Script: El canal [ $$! ] ha sido añadido a la lista como %n $+ º canal favorito.

goto end

:clave

/set %code $?="Introduce la clave de acceso al canal"

goto end

:fin_malo

echo GaTo Script: No se ha podido añadir el canal [ $+ $$! $+ ]

:end

}

Lo único que debemos hacer ahora es crear en los popups un apartado con las variables %ultcana1, %ultcana2, %ultcana3, etc.





AULA MACEDONIA
a
MACEDONIA Magazine