enviciate hasta que no puedas mas
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

enviciate hasta que no puedas mas

Casi todo lo que necesitas
 
ÍndiceÚltimas imágenesBuscarRegistrarseConectarse
Tu nueva comunidad de PSP ya está aquí!!! Descarga los juegos de PSP que mas te gusten, t ambien para WII, NDS, PC y X-BOX todo en www.damepsp.com

 

 Guia para la creacion de Scripts. Parte 1

Ir abajo 
AutorMensaje





Fecha de inscripción : 31/12/1969

Guia para la creacion de Scripts. Parte 1 Empty
MensajeTema: Guia para la creacion de Scripts. Parte 1   Guia para la creacion de Scripts. Parte 1 I_icon_minitimeSáb Ago 14, 2010 11:50 am

Guia para la creacion de scripts. Parte 1 (hay que tener paciencia pero saber es lo mejor)

[Tienes que estar registrado y conectado para ver este vínculo]

Introduccion

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.

ALIASES

Podemos pensar en un alias como un nuevo comando u orden para mIRC que creamos nosotros mismos. De esta forma automatizamos un proceso a fin de poderlo ejecutar más fácilmente.

Encontraremos 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, una vez hecho esto pulsaremos el botón OK, y el alias ya quedará cargado en nuestro programa.

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.

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 #ayuda_irc

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

Obsérvese que el nombre del alias debe de ir precedido del símbolo de comando "/". 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:

/entra {

/nick Muphet

/join #Madrid

/join #programación

/mode Muphet +i

}

Este alias cambiará nuestro nick, nos introducirá en los canales #Madrid y #programación, y pondrá nuestro modo de usuario en +i (invisible).

También sería posible especificar todos los comandos de alias en una sola línea utilizando el símbolo | (suele ser la combinación Alt Gr + 1):

/entra /nick Muphet | /join #Madrid | /join #programación | /mode Muphet +i

Evidentemente los alias no serian lo que son si no permitieran una mayor flexibilidad en sus definiciones. 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

join $3

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 Muphet #Madrid #programación

Sin embargo, ahora podremos decidir un nick y canales diferentes con solo ponerlos a continuación del nombre del alias, por ejemplo:

/entra SomaTic #ayuda_irc #opers_help

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 $?. Por ejemplo:

/j /join $?="Elige canal"

Cuando llamemos a alias /j, nos aparecerá una ventana que nos dirá: "Elige el canal", 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.

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 encuentra en 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, de qué popup 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 #programación

.-

.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, por el contrario, 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 seguido del símbolo ":" y la acción que se ejecutará al hacer click sobre ella, de lo contrario, si solo está el nombre, 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; no obstante algunos de ellos 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.

Parte Dos



EVENTOS

1.- INTRODUCCIÓN

Se conocen como EVENTOS, en informática, todos aquellos sucesos que se producen a lo largo de una sesión de trabajo de un programa, y que éste es capaz de detectar y controlar.

La programación orientada a eventos es aquella en la que podemos definir previamente las acciones que el programa debe de emprender en el momento en que se produzca un evento concreto. Es decir, predisponemos al programa a que preste especial atención a algunos sucesos concretos, 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 configurable y personalizable 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.

2.- UN EJEMPLO DEL USO DE EVENTOS

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. 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 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 el las líneas anterior y posterior a la que escribimos antes: #ausente off y #ausente end. El bloque total 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 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 Wink).

3.- GENERALIDADES DE LA SINTAXIS DE LOS EXENTOS

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

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 comando 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 dentro de las definiciones de eventos, pero el uso de las variables, estructuras y funciones del usuario debe de quedar, por mi parte, para otro documento cuando me anime a escribirlo ;-), entre tanto se puede consultar la ayuda en inglés del mIRC donde están explicadas bastante bien.

Es hora de entrar a conocer una a una las definiciones de eventos que proporciona la versión 5.02 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@ arrakis.es, o en el canal #ayuda_irc del IRC Hispano, no tiene más que preguntar por SomaTic Wink.

4.- LISTA DE REFERENCIA DE EVENTOS

on TEXT

Este evento se produce al recibir un mensaje especificado, bien en un privado, o bien en un canal activo.

Formato: on :TEXT::<*><#[,#]>:

Ejemplo: on 1:TEXT:*ayuda*:#mirc,#irchelp:/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.

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

*cadena* 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

##

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.

on 1:ACTION:*set mode*:#:/msg $chan Ya estamos jugando con los modos ;D.

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:*Question/msg $nick Estoy ocupado, espera un momento!

Esta orden detecta cualquier /notice recibido estando en un privado, y responde con otro /notice al autor, con otro mensaje.

También es posible emplear variables para dar más flexibilidad al formato del texto de la ubicación del evento:

on 1:TEXT:texto:%canal:/msg $nick Tú has escrito %matchtext en el canal: %channel

Este ejemplo trabajará con los valores previamente guardados en las variables %texto, y %canal.

Nota: Este evento se producirá solo ante textos de otros usuarios, los de usted no desencadenarán el evento.

on ACTION on NOTICE

Tienen exactamente el mismo formato que on TEXT, y se producen a partir de una acción o de una noticia respectivamente.

on BAN on UNBAN

Estos eventos se producirán cuando un usuario sea baneado o desbaneado en el canal.

Formato: on :BAN:<#[,#]>:

Ejemplos:

on 1:BAN:#mirc,#irchelp:/msg $nick Has sido baneado de: $chan

on 9:BAN:#newbies:/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 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:#mIRC:/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 que este 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.

on CHAT on SERV

Los eventos on CHAT y on SERV se producen cuando es enviado un mensaje la una ventana de DCC chat, o a un Fserve respectivamente.

Formato: on :::

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 CHATOPEN on CHATCLOSE

Estos eventos se producen al abrirse o cerrarse (respectivamente), una sesión de DCC chat.

Formato: on :CHATOPEN:

Ejemplo: on 1:CHATOPEN:/msg =$nick Bienvenido!

Lo mismo se puede decir para los eventos on SERVOPEN y on SERVCLOSE; aplicables en este caso a sesiones del Fserve.

Ejemplos:

on 1:CHATOPEN:/msg =$nick Hola, estoy contigo en un momento.

Esta instrucción envía una frase al DCC chat cuando este se abre por primera vez. El uso del signo "igual" delante de $nick es necesario para que el mensaje se dirija a la misma ventana del DCC chat, y no a una ventana privada aparte.

on 1:CHATCLOSE:/notice $nick fin de la discusión!

Esto se produce al cerrar la ventana del DCC chat.

on CONNECT on DISCONNECT

El evento on CONNECT se produce cuando mIRC conecta al server de IRC, después de visualizar el MOTD

Formato: on :CONNECT:

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

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 $nick ha respondido al ping!

on OP on DEOP

Se producen cuando un usuario del canal es opeado o deopeado.

Formato: on :OP:<#[,#]>:

Ejemplo: on 1:OP:#ayuda_irc:/msg $nick No abuses del estatus!

El evento on SERVEROP es exactamente igual, y se produce cuando un usuario es opeado por el server.

Ejemplos:

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.

$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 l 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 on DEVOICE

Se produce cuando un usuario recibe o es privado de voz en un canal moderado.

Formato: on :VOICE:<#[,#]>:

Ejemplo: on 1:VOICE:#mIRC,#newbies:/msg $vnick ya tienes voz en: $chan

Ejemplos:

on 9:VOICE:#:/mode $chan -v $vnick | /msg $nick No des voz o ese tío!

Esta orden se ejecuta cuando el que recibe voz tiene nivel 9 o superior.

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

Ejemplo: on 1:DNS:/notice $me resuelto: $raddress

Ejemplo:

on 1:DNS:/echo $nick ip address: $iaddress named address: $naddress resolved address: $raddress

on ERROR

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

Formato: on :ERROR::

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 FILESENT on FILERCVD

Se producen al completarse un dcc send o un dcc get.

Formato: on :FILESENT::

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:*.txt,*.ini:/echo Recibido $filename de $nick | /run notepad.exe $filename

Esta orden avisa cuando hemos recibido ficheros .TXT e .INI, y abre el bloc de notas para ver su contenido.

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

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 :INVITE:<#[,#]>:

Ejemplo: on 1:INVITE:#mIRC:/join $chan

on JOIN on PART

Se producen al entrar o salir un usuario del canal.

Formato: on :JOIN:<#[,#]>:

Ejemplo: on 1:JOIN:#mirc,#irchelp:/msg $nick Hola!

on KICK

Se produce cuando un usuario es expulsado de un canal.

Formato: on :KICK:<#[,#]>:

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 on START

Estos eventos se producen cuando un fichero de script es cargado o descargado.

Formato: on :LOAD:

Ejemplo: on 1:LOAD:/echo mIRC Script cargado!

on MIDIEND

Se produce cuando el mIRC termina la reproducción de un fichero MIDI..

Formato: on :MIDIEND:

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 :MODE:<#[,#]>:

Ejemplo: on 1:MODE:#ayuda_IRC:/notice $me $nick Cambia modos de $chan a: $1-

on SERVERMODE es otro evento que se produce cuando los modos son cambiados por el servidor.

on @1:MODE:#:/notice $me $nick changed $chan mode to $1-

Esta instrucción se produce cuando alguien cambia los modos del canal teniendo nosotros también el estatus de operador.

on NICK

Se produce cuando un usuario cambia de nick dentro del canal.

Formato: on :NICK:

Ejemplo: on 1:NICK:/msg $nick Hi $newnick!

$nick recibe el nick antiguo; $newnick el nuevo.

on NOTIFY on UNOTIFY

Se producen al entrar o salir del IRC un usuario que se encuentra en nuestra lista de notificaciones.

Formato: on :NOTIFY:

Ejemplos: on 1:NOTIFY:/msg $nick Hola nick, ya te veo venir!!! Smile

on 1:UNOTIFY:/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 &

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 ---> Modulo (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

Parte Tres



IDENTIFICADORES

El entorno del mIRC provee de una serie de identificadores o funciones que devuelven automáticamente un valor para su uso en definiciones de alias, popups y eventos. Todos ellos están precedidos para su identificación por el símbolo $.

Cuando el mIRC, en la ejecución de un script, encuentra uno de estos identificadores, lo sustituye por el valor que este devuelve. Es importante tener en cuenta que estos identificadores deben de ir siempre especificados entre dos espacios en blanco, de lo contrario el mIRC no los identificará como tales.

A continuación se relaciona una lista con la mayoría de los identificadores que se encuentran disponibles en la versión 5.1 del mIRC.

IDENTIFICADORES DE TIEMPO Y FECHA:

$ctime

Devuelve el número total de segundos transcurridos desde las 0 horas de 1 de enero de 1970.

$date

Devuelve la fecha actual en formato: día/mes/año.

$day

Devuelve el nombre del actual día de la semana.

$duration(nº)

Devuelve el número especificado de segundos transformado al formato: semanas/días/horas/minutos/segundos.

$fulldate

Devuelve la fecha en formato largo, por ejemplo: Wed Jun 26 21:41:02 1996

$idle

Devuelve nuestro actual tiempo idle (Este tiempo es el que devolveremos ante un requerimiento finger).

$ltimer

Devuelve el número del último timer activado con el comando /timer

$online

Devuelve el número de segundos transcurridos desde que se puso a cero el reloj contador del mIRC.

$ticks

Devuelve el número de ticks desde que se inició el sistema operativo.

$time

Devuelve la hora actual en formato horas/minutos/segundos.

$timer(0)

Devuelve el número de timers activos en el momento actual.

$timer(nº)

Devuelve todas las propiedades de timer cuyo número se especifica: comando, tiempo, repeticiones, retardo y tipo.

$timer(nº).com

Devuelve el comando asociado al timer especificado.

$timer(nº).type

Devuelve el tipo de status del timer especificado: online/offline

$timestamp

Devuelve el timer actual en formato: [xx:xx]
Volver arriba Ir abajo
 
Guia para la creacion de Scripts. Parte 1
Volver arriba 
Página 1 de 1.
 Temas similares
-
» Guia para la creacion de Scripts. Parte 2
» Guia para hacer Scripts. Parte 3
» Guia God Of War II PS2 segunda parte
» Photomatix Pro 3.2.7 el mejor para editar img
» Guia de cracion de scripst. Parte 1

Permisos de este foro:No puedes responder a temas en este foro.
enviciate hasta que no puedas mas :: Programación-
Cambiar a: