Foro de Informatica
" Hay la misma diferencia entre un sabio y un ignorante que entre un hombre vivo y un cadáver "

- Aristóteles -



        


Google
 
Web www.ComputerFacil.com
Forista del Mes:

amateos1404


  Reply to this topicStart new topicStart Poll

> Tutorial Scripting En Irc
TvK10
  Publicado: Jul 30 2007, 03:58 PM
Quote Post


**Ubuntero**
Group Icon

Grupo: Moderadores
Mensajes: 1.398
Miembro nº: 22.588
Registrado: 1-May 07



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 este Tutorial es documenta 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.

El siguiente paso lógico es comenzar a crear Alias y Popups, aquí ya descubrirás como, con unos pocos comandos, puedes lograr efectos espectaculares en tu programa. Tanto los alias como los popups se crearán en ficheros de texto independientes y cargados en el mIRC. La capacidad de estos ficheros es grande pero limitada, ahora bien, puedes crear una buena cantidad de ellos si lo necesitas.

Popus

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 -> 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:

CODE
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.

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.

Goto

El comando GOTO, te hace saltar de un punto del alias a otro punto.

CODE
/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:

CODE
alias TvK10 {
/say este curso de scripting...
/say lo ha creado TvK10 jeje }


Teclas de Función

Tu puedes redefinir las teclas de funcion, F1, Shift+F2... Mira estos ejemplos de aqui:

CODE
/F1 /join #Ayuda_para_novatos
/SF10 /nick [SaRRiO]
/CF1 /quit Me largo


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.

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:

CODE
echo -a El valor asignado es: %num


Esta orden presentará en la ventana activa un mensaje que diga:

CODE
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:

CODE
set <%variable> [valor]


Por ejemplo:

CODE
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:

CODE
set %MiNick $me


Otro ejemplo, queremos asignar a una variable el contenido de otra variable:

CODE
set %var2 %var1


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:

CODE
unset <%variable_1>


Es posible también utilizar el carácter * para eliminar grupos de variables, por ejemplo:

CODE
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:

CODE
unsetall


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.

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 TvK10), 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:

CODE
on 1:TEXT:TvK10:#: notice $nick Perdona $nick no estoy en estos momentos.


Pulsamos el botón "OK" y trabajo concluido.

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:

CODE
#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).

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.

CODE
on <level>:TEXT:<texto>:<*><?><#[,#]>:<comandos>


Ejemplo:
CODE
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:

user posted image
Como en el foro no se pueden hacer tablas de esta forma, las hago en word y hago screen.

Se puede especificar el lugar donde se controlará el evento de la siguiente forma:

[IMG]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.

CODE
on <level>:TEXT:<texto>:<*><?><#[,#]>:<comandos>


Ejemplo:
CODE
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:

user posted image
Como en el foro no se pueden hacer tablas de esta forma, las hago en word y hago screen.

Se puede especificar el lugar donde se controlará el evento de la siguiente forma:

user posted image

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.

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:

CODE
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.

CODE
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.

CODE
on <level>:BAN:<#[,#]>:<comandos>


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.

CODE
on <level>:<CHAT/SERV>:<texto>:<comandos>


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).

CODE
on <level>:CONNECT:<comandos>


CODE
on <level>:DISCONNECT:<comandos>


ON "Comandos"

Son cuando se producen los comandos "op", "deop", "voice"y "devoice".

CODE
on <level>:OP:<#[,#]>:<comandos>


CODE
on <level>:VOICE:<#[,#]>:<comandos>


Deop y Devoice es igual, pero en vez de "OP" es "DEOP" e igual con DEVOICE.

ON ERROR

Se produce cuando el server envía un mensaje de error, por ejemplo, en una desconexión.

CODE
on <level>:ERROR:<texto>:<commandos>


ON JOIN y ON PART

Se producen al entrar o salir un usuario de un canal en que nos encontramos.

CODE
on <level>:JOIN:<#[,#]>:<comandos>


CODE
on <level>:PART:<#[,#]>:<comandos>


ON KICK

Se produce cuando un usuario es expulsado de un canal en el que nos encontramos.

CODE
on <level>:KICK:<#[,#]>:<comandos>


ON MODE

Se produce cuando un usuario cambia los modos del canal (pero no los de usuario).

CODE
on <level>:MODE:<#[,#]>:<comandos>


ON NICK

CODE
on <level>:NICK:<commandos>




Podeis imaginarlos la cantidad de cosas que podeis hacer con esto, solo hay que cambiar el nombre, sirve con TODOS.. hay muuuuuchos, pero pasemos a algo más complicado..

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, osea, que hay que escribirlos en código.

La sintaxis básica de los If-Else es la siguiente:

CODE
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;

CODE

/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:

CODE
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:

CODE
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 ¿QUÉ CLASE 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 ¿QUÉ CLASE DE NUMEROS SON ESOS?.

mIRC admite comparadores de muchos tipos. Para números, para letras..

Aquí teneis los comparadores que acepta el mIRC 5.41:

QUOTE
== 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:

CODE
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.

El isop, y el isvo se usan de la misma forma, para mirar si alguien tiene op o si tiene voz o esta voice.

VENTANAS PERSONALIZADAS

El mIRC nos permite la creación de ventanas personalizadas que no son más que "ventanas" con diferentes atributos (que aprenderemos a asignar y modificar) y que pueden ser usadas para cualquier tipo de acción, generalmente para mostrar informacion al usuario, ya que se hace de una manera más limpia y ordenada que mostrando toda la información en la ventana de Status.

Después veremos que tambien pueden ser usadas para la creación de GUI's (Interfaces Graficas de Usuario) mediante las picture Windows o ventanas de imagen.

Para crear una ventana personalizada usaremos el comando window con la siguente sintaxis:

CODE
/window [-acdeEhkl[N]noprswx] [+bdelLmnstx] <@nombre> [x y [w h]] [popup]


Por ejemplo:

CODE
window –ad @miventana 10 10 200 100


Introduzca esta orden en mIRC y descubrirá que ha creado una nueva ventana de windows, verá que su nombre es "miventana" (el símbolo @ debe de especificarse siempre al principio del nombre, esto corresponde al argunento <@nombre> en la sintaxis general). Hemos utilizado dos parámetros en esta orden: -a y -d, esto ha supuesto que se ha mostrado como ventana activa de windows y su icono ha aparecido en la barra de tareas de la parte inferior de la pantalla. Observe que al utilizar dos parámetros segidos solo hemos necesitado un símbolo "-" delante de ellos. Los números 10 10 200 100 especifican la ubicación y dimensiones de la ventana (corresponden respectivamente a los parámetros x, y, w, h); los dos prineros deterninan la posición dentro de la pantalla, los dos últimos sus dimensiones (alto y ancho).

La posición de la ventana se basa en un sistema de coordenadas que toma como origen la esquina superior izquierda de nuestra pantalla, y sitúa la esquina superior izquierda de la ventana en el punto indicado, en este caso coordenadas 10,10.

Volvamos a la sintaxis general del comando window para analizarla más despacio, resulta un poco imponente pero veremos como examinando cada una de sus partes es bastante más asequible de lo que parece.

Existen dos grupos de parámetros que podemos emplear, por un lado [-acdeEhkl[N]noprswx] y por otro [+bdelLmnstx]. De inmediato veremos la utilidad de cada elemento de estos grupos. Una vez escritos los parámetros deseados especificaremos el nombre que queremos dar la la ventana (siempre con @ delante). A continuación no queda sino concretar ubicación y tamaño de la ventana, no es necesario especificar ninguno de los dos, en ambos casos se asumen unos valores por defecto. También tenemos la posibilidad de incluir al final del comando el nombre de un fichero de popup's si deseamos que la ventana cuente con sus propios menús emergentes, es decir, aquellos que aparecen pulsando sobre ella con el botón derecho del ratón.

A continuacion puede ver una descripcion de para que sirve la primera tanda de parametros del comando window que definiran el estado de la ventana:

-a : Activa la ventana.
-c : Cierra la ventana.
-d: Abre la ventana como ventana de escritorio ( se puede acceder a ella desde la barra de ventanas de Windows).
-e : Añade a la ventana un editbox o línea de escritura (como la que tienen en la parte inferior los canales).
-E : Añade a la ventana un editbox de múltiples lineas líneas.
-h : Esconde la ventana.
-k : Esconde el prefijo '@' del nombre de la ventana.
-w : Devuelve el prefijo '@' al nombre de la ventana.
-l[N] : Añade una listbox (lista de elementos) a la ventana. Si se especifica N (opcional) se crea una listbox con N caracteres de largo.
-n : Minimiza la ventana.
-o : Si la ventana es una ventana de escritorio, este parametro la pone y mantiene siempre encima de todas las ventanas (on top).
-u : Desactiva el poner la ventana encima de todas (on top).
-p : Crea una ventana de imagen o "picture window" (esta opción será analizada en un capitulo aparte).
-r : Restaura una ventana despues de minimizarla.
-s : Organiza por orden alfabético la ventana.
-S : Organiza por orden alfabético la listbox de una ventana.
-x : Maximiza la ventana.

Ahora vamos con la segunda tanda de argumentos del comando, estos definirán la apariencia de la ventana:

+b : Dibuja un pequeño borde alrededor de la ventana.
+d : Ventana sin borde.
+e : Dibuja un borde un poco mas ancho y redondeado.
+l : Ventana de utilidades.
+n : Boton de minimizar.
+s : Se puede cambiar de tamaño.
+t : Con barra de titulo.
+x : Con boton de maximizar.

Después tenemos que indicar el nombre de la ventana a crear/modificar:

<@nombre> : Por ejemplo, @mi_ventana

Por último indicamos (opcionalmente) las coordinadas de la posición inicial de la ventana ( x y ) así como su longiud y altura (en pixels). w (longitud) h (altura)

[ x y [ w h ] ] : por ejemplo, 100 100 300 100

Por ultimo el parámetro [popup] sirve para especificar un archivo que contenga el menú popup de la ventana (que aparecera al hacer click con boton derecho sobre la misma). Se puede especificar un archivo (cuya extension NO sea .ini) o bien el mismo nombre de la ventana (Ej: @mi_ventana) si se quiere implementar el popup dentro de los remotes del script.

Ahora que el lector ya sabe las posibilidades del comando window, veremos, ya creada la ventana, que comandos podemos usar para modificar la informacion que se muestre en ella.

El parámetro [c] esta presente en todos estos comandos, e indica el color principal de la linea que añadirá, borrará, o modificará . En cualquier caso también se pueden especificar controles de color (ctrl + k + color), negrita (ctrl + cool.gif y subrayado (ctrl + u) en el parámetro <texto>.

Estos comandos se refieren siempre a actuar sobre la ventana principal, en caso de que queramos actuar sobre una listbox a un lado de la ventana, incluiremos el parametro -l entre el nombre del comando y el parametro [c], por ejemplo /aline -l @mi_ventana lo que sea.

CODE
/aline [c] <@nombre> <texto>


Añade la línea <texto> a la ventana <@nombre>
Ejemplo: /aline 4 @mi_ventana Hola mundo!!

CODE
/cline [c] <@nombre> <N>


Cambia el color de la línea número <N> al color número [c]
Ejemplo: /cline 4 #ayuda_irc 3

CODE
/dline [c] <@nombre> <N>


Borra la línea (o el rango de lineas) numero <N>
Ejemplo: /dline @nombre 1-10

CODE
/iline [c] <@nombre> <N> <texto>


Inserta una línea (<texto>) en la posicion <N>
Ejemplo: /iline @mi_ventana 2 Insertando una linea...

CODE
/rline [c] <@nombre> <N> <texto>


Sustituye la línea <N> por <texto>
Ejemplo: /rline @mi_ventana 1 Hasta luegoorr!!

CODE
/sline [c] <@nombre> <N>


Selecciona la línea numero <N>
Ejemplo: /sline @mi_ventana 3

CODE
/renwin <@nombre> <@nuevo_nombre> [topic]


Cambia de nombre la ventana <@nombre> y (opcionalmente) cambia su topic o descripción
Ejemplo: /renwin @mi_ventana @tu_ventana Nuevo_topic

Ahora que el lector ya conoce todos los comandos que se usan para la creacion/modificacion de ventanas, y antes de entrar en los eventos remotos asociados a las mismas, vamos a hacer un par de ejemplos de crear ventanas, para que se vaya familiarizando con estos comandos y compruebes tú mismo que no es tan complicado como quizás parece en un principio:

Ejemplo 1: Crear una ventana para dialogar con el usuario

Vamos a crear una ventana que mostrará una informacion al usuario y esperara que éste le responda escribiendo en la editbox de la ventana:

Para ello escribimos en la sección "Aliases" del Editor del mIRC:

CODE
/vent {
window -ae @dialogo 50 50 200 100 @dialogo
aline 12 @dialogo Hola, ¿Cómo te llamas?
}


Si prueba ese ejemplo (escribiendo el alias "/vent" ), verá que se crea una ventana de nombre @dialogo con un editbox abajo y nos aparece en ella el texto "Hola, ¿Cómo te llamas?". En este momento nos tendremos que detener aqui, más adelante veremos como puede hacer que al teclear algo en la editbox y pulsar 'Enter' , el script le responda adecuadamente.

Bueno, ya he terminado, espero que os haya sido fácil, queda mucho por ver, pero...

TvK10






--------------------
user posted imageuser posted imageuser posted image
user posted image
PMEmail PosterUsers WebsiteMSN
Top
0 usuario(s) está(n) leyendo esta discusión (0 invitado(s) y 0 usuario(s) anónimo(s))
0 miembro(s):

Topic Options Reply to this topicStart new topicStart Poll

 


ComputerFacil.com © 2006
          Webs Afiliadas - Contacto
Ofertas PCs :: Consultor de Marketing Online :: Foros :: Posicionamiento Web :: Foros de Informatica :: Foros :: eurodipity :: elhacker