MIRC Scripting a partir de mIRC 6.0 - Cargando popups y otros scripts

7 - Cargando popups y otros scripts

[editar]
Tutorial creado por t0m|ta. Extraido de: http://www.tomatoma.ws/articulo.php?topic_id=125&forum_id=18
09 de Marzo de 2006
Algunos scripts cargan o descargan algunos archivos dependiente de la red en la que esté conectado el usuario. Desgraciadamente a partir de mIRC 6.0 este método puede que no resulte demasiado útil puesto que ahora puedes estar conectado a varios servidores y redes a la vez. Y de momento aparte de los métodos que ya hemos mencionado, no parece haber una solulción obvia para este problema.
En los popups, si quieres que sean m ás dinámicos tendrás que hacer mucho uso del $iif. Por ejemplo:

|| Código: ||
|| ; Nota: /ns es un alias para la orden /nickserv
   $iif($network
DALNet,&NickServ)
   .&Access
   ..&List:ns access list
   ..&Add...:ns ACCESS ADD $$input(Enter address,1,NickServ Access Add)
   ..&Del...:ns ACCESS DEL $$input(Enter address,1,NickServ Access Del)
   ..&Wipe...:if ($input(Wipe your access list?)) ns ACCESS WIPE
   .&Drop:ns DROP $$input(Enter a nick and code,1,Nickserv Drop Nick)
   .&Ghost:ns GHOST $$input(Enter nick and password,1,NickServ Ghost Nick)
   .&Identify:ns IDENTIFY $$input(Enter password for $me ,1,Identify Nick)
   .&Recover:ns RECOVER $$input(Enter nick and password,1,NickServ Recover) ||

Esta construcción "esconde" el &Nickserv si la red a la que estás conectado no es dalnet.
Cómo alternativa, puedes utilizar $style(2) para desactivar elementos de los menús. Lo importante es recordar la utilización del $iif(). Se utiliza para el encabezamiento de un menú y sus submenús estarán bien desactivados, bien escondidos.

$scid, $scon, /scid, /scon, and $cid



Hay muchos identificadores y ordenes nuevas a partir de mIRC 6.0, pero de momento vamos a ver las que nos van a resultar más importantes. There are many new identifiers and commands in mIRC 6.0.
El identificador $cid
Cada conexión que establezcas con el mIRC tiene un número de identificación único ($cid) y puede tener desde un valor 1 hasta 1 millón o más (aunque suponemos que nadie en su sano juicio establecería más de un millón de conexiones simultáneas).
Para aquellos que estén familiarizados con los sockes, $cid es comparable al $sockname. Ten en cuenta que el $cid no está necesariamente ordenado. Es decir, tu primera conexión puede tener un $cid 1 y la segunda un $cid de 7
NOTA: Si quieres hacer un bucle a través de todas tus conexiones, no es una buena idea utilizar un número e ir incrementandolo, por la razón que acabamos de mencionar. Sería mejor algo así:

|| Código: ||
||    alias MuestraMisConexiones{
     var %i = 1
     while ($scon(%i)) {
       echo -a Mi conexión %i tiene un  cid de $scon(%i).cid
       inc %i
     }
   } ||


Y con este código entramos en los identificadores $scon y $scid.
En el archivo de ayuda del mIRC encontramos la siguiente explicación de estos identificadores:
$scid(N)[.id] devuelve el id de la conexión, dónde N es el valor de $cid Si N es igual a Cero, devuelve el número total de conexiones abiertas.
Si especificas una propiedad (un identificador), devuelve el valor de ese identificador en esa conexión. El funcionamiento de los identificadores personalizados es el mismo.
$scon(N)[.id] devuelve el Id de la conexión, siendo el la conexión número N. Si N es igual a cero, devuelve el número de conexiones totales.
Especificando un identificacor como propiedad, devuelve el valor de ese identificador en esa conexión. Funciona igual si se trata de identificadores personalizados.
En resumen puedes utilizar estos identificadores para conseguir información específica de una conexión incluso cuando estás haciendo la llamada desde otra conexión.
Recuerda que todos los identificadores devuelven la información de la conexión desde la que son llamados. Esto significa que si escribes
|| Código: ||
|| echo -a $me en Undernet ||

te devolverá el valor de $me en Undernet, pero en otra conexión el valor de $me puede ser muy distinto (salvo que estés utilizando el mismo nick en todas las conexiones)
Así que para saber qué nick estás utilizando en cada conexión tendrías que uilizar los identificadores $scon o $scid

|| Código: ||
||    
echo -a Mi nick en la primera conexión es  $scon(1).me ||


$scon() y $scid se comportan igual, la difrentcia es que $scon trata el número como la conexión número N, mientras $scid trata el número como el identificador de la conexión.
Aquí hay un pequeño script que te da información sobre todas aquellas conexiones en las que tengas una sesión:

|| Código: ||
|| alias InfoConexiones {
     var %i = 1
     while ($scon(%i)) {
       echo Info for $ord(%i) connection:
       echo Nick: $scon(%i).me
       echo Server: $scon(%i).server
       echo Usermodes: $scon(%i).usermode
       echo
       inc %i
     }
   } ||

Este alias irá haciendo un bucle por todas tus conexiones y te dará información sobre cada una de ellas.
NOTA: $scon(1) te devolverá el valor de $cid para la primera conexión, esto no funciona igual con $cid()
$scon y$scid no aceptan identificadores que utilizan parámetros, así $chan(1) funcionaría, pero no puedes poner $scon(1).chan(1)
Para ver todos los canales en los que estás en todas las conexiones, tienes que utilizar la orden /scid o /scon Por ejemplo:

|| Código: ||
|| alias Miscanales{
     var %i = 1, %result
     while ($chan(%i)) {
       %result = $addtok(%result,$ifmatch,44)
       inc %i
     }
     return %result
   }
   alias LosCanales {
     var %i = 1
     while ($scon(%i)) {
       echo -a $ord(%i) connection in network: $scon(%i).network
       echo -a Channels: $scon(%i).Miscanales
       inc %i
     }
   } ||


Así escribiendo /LosCanales verías una lista de todos los canales en los que estés en todos los servidores
En lugar de utilizar identificadores, puedes utilizar las ordenes /scid y /scon. Vemos el mismo alias que antes pero con la orden /scid

|| Código: ||
|| alias ShowAllChannels {
     var %i = 1
     while ($scon(%i)) {
       scid $ifmatch
       echo -a $ord(%i) connection in network: $network
       echo -a Channels: $MyChans
       inc %i
     }
     scid -r
   } ||


La ayuda del mIRC esplica que /scid y /scon te permitan forzar script a ejecuttarse como si hubieran sido llamados desde una termidnada conexión. Lo que hicimos en el alias anterior es hacer un bucle a través de todas las conexiones y utilizar el /scid para cambiar el id de la conexión y enviarnos la información. Así si ejecutamos el alias en la primera conexión co un id de 8, el valor de $network y $myChans serían los valores del id de conexión expecificada en la orden /scid
Las órdenes/scid y /scon nos permiten algunos truquillos. Por ejemplo, si utilizamos /scid -a o /scon -a, la orden se ejecutará como si la hubieramos llamado desde esa conexión, por ejemplo:

|| Código: ||
||    alias aquit { scid -a quit $1- } ||


Con este alias desconectaríamos de todas las conexiones con $s1 como el mensaje de adios.
Puedes utilizar identificacores en /scid -a y /scon -a de forma que se vuelvan a evaluar. Por ejemplo:

|| Código: ||
||    scid -a ctcp $!me ping ||


Este alias te hará un ping ent odas las conexiones. Estamos utilizando using $!me para evitar que el identificador $me se evalúe primero. Supongamos que mi nick en Undernet es tomatoma y en Unión Latina es t0m|ta, si escribo:

|| Código: ||
||    
scid -a ctcp $me ping ||

en la ventana de undernet, $me se evaluará como tomatoma y enviará un /ctcp tomatoma ping a todas mis conexiones. En cambio si utilizas $!me, la orden se enviará cada vez como :

|| Código: ||
||    'ctcp $me ping' ||

y no como /ctcp tomatoma ping
Un último ejemplo, vamos a ver un identificador personalizado que nos dice si estamos conectados a algún servidor.

|| Código: ||
||    alias IsConnected {
     var %s = $scon(0)
     while (%s) {
       if ($scon(%s).status connected) return $true
       dec %s
     }
     return $false
   } ||
[editar]

Sé el primero en opinar


Tutoriales relacionados con 'MIRC Scripting a partir de mIRC 6.0'

Este artículo está basado en "A Scripting Guide to mIRC 6. 0" de blue-elf belf@mircscripter.... Más »
MIRC dispone de un lenguaje de programación propio, que permite convertirlo en una de las... Más »

Autor y licencia de 'MIRC Scripting a partir de mIRC 6.0'

Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.