Scripting-DrK

Page 1

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@ @@@@@@@@@@@@@@@@ @@@@@ @@@@ @@@@@@ @@@ @@@@@@@@@@@@@@@ @@@@ @@@@@ @@@@@@ @@@@ @@@@@@@@@@@@@@ @@@ @@@@@@@ @@@@@@ @@@@@ @@@@@@@@@@@@@ @@ @@@@@@@ @@@@@@ @@@@@@ @@@@@@@@@@@@ @@@@@@@@ @@@@@@ @@@@@@ @@@ @@ @@@ @@@@@@@@ @@@@@@ @@@@@@ @@@ @ @@@ @@@@@@@ @@@@@@ @@@@@ @@@@ @@@@@@ @@ @@@@@@@ @@@@@@ @@@@ @@@@ @@@@@@@@ @@@ @@@@@@ @@@@@@ @@@ @@@@@ @@@@@@@@@ @@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@@@ @@@@@ @@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

»» Para usar esta guía correctamente , cuando estés en las diferentes secciones de explicaciones , cuando aparezcan cosas que no empiezas a entender o bien sobre todo , se te cruzn los llamados identificadores de tropecientos millones de cosas , acude siempre a las tablas del final de la guia , busca el tipo de identificador y informate sobre él , y verás como lo entiendes mejor ;------------------------------------------------(Alias Senzillos)-----------------------------------------------------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. Los Alias son comandos que se ejecutan para realizar un grupo de ordenes, vendrian a ser como archivos de procesamiento por Lotes (*.bat) en MS-Dos , pero bajo el mirc x´D

;---------------------------------------------------------------------------------------------------------------------------

Cuando se hace un alias , se parte de un /Comando que es lo que ejecutará el Alias que haya dentro del Sub Grupo , osea dentro de los { } ;Ejemplo : Hola { msg $chan Hooooooolaaaaaa ! } Esto hará que cuando escribamos /Hola , se ejecuten los comandos dentro del SubGrupo "Hola" ,osea lo que está dentro de los corchetes {...} .

En los alias se suelen usar los comandos $1 , $2 etc etc .... estos son los llamados "Identificadores" y van precedidos siempre por un signo de dolar ($)


Un alias seria el comando $0 ya que no cuenta y es de donde se parte de un inicio , mientras que la primera palabra escrita despues de un alias seria $1 , la segunda $2 , la tercera $3 y asi succesivamente... ;Ejemplo : Pruebas { echo -a $1 $2 $3 $4 } Este echo nos mostraria en la ventana activa las 4 primeras palabras que pusieramos detras de /Prueba ;Ejemplo : /Prueba WiDoK just RlzZ Nos pasaria por la pantalla activa el texto WiDoK Just rlzZ , y la palabra numero 4 la omitiria porque no existe :)

Para hacer alias más complicados por ejemplo , seráa usando los identificadores $1..., como por ejemplo para saludar podriamos hacer esto; ;Ejemplo : Saluda { msg $chan Hey Buenas como estas $1 } Ese alias diria toda esa frase , y sustituiria el $1 por la primera palabra que escribieramos despues del /Saluda ;Ejemplo : /Saluda WiDoK Saldria por el canal » Hey Buenas como estas WiDoK

Otra variante de estos identificadores son los $1- , $2- etc... (Atentos al guión) Lo unico que hacen es simplemente , coger todo el texto que hay detras de su posicion que ocupen ;Ejemplo Saluda { msg $chan Hola $1 }

Si aqui pusieramos $1 solamente , si a la hora de ejecutar el alias pusieramos : /Saluda WiDoK DarK Solo saldria en el mensage la palabra WiDoK porque tenemos predefinido en el alias que solo salga el $1 (osea la 1era palabra) . Si en cambio ponemos un $1- (con el guion) , eso haria que se cogiera todo el texto escrito despues del $1 , osea de la primera palabra , o de la segunda palabra si fuera $2- etc etc ... Si entonces ponemos /Saluda WiDok DarK , haviendo puesto un $1- en el alias , si saldrian los 2 nicks , incluso más si pusieramos más ( /Saluda nick1 nick2 nick3 nick4 , saldran todos) :) ;Ejemplo!


En la Frase ; DarK Just RlzZ DarK seria = $1 Just = $2 y RlzZ = $3 en cambio , tb podria ser igualmente dicho DarK = $1 Just = $2y el RlzZ tb entraria dentro del grupo del $2- , ya que coge todo lo que hay detras de su posición. Espero que mas o menos quede claro :)

Aprovecharé este apartado para hacer un inciso sobre los Identificadores del tipo $+ . Tales identificadores , no aportan valor alguno respeto a un alias , solamente hacen una función conjuntiva y de unión entre 2 "Strings"* * (String = nombre usado para designar Parametros en mIRC) Pongamos nu ejemplo de para que serviria: :Ejemplo alias Casa { msg $chan Tengo un perro y se llama ($1) } Pues bien , muchas veces por las ganas de poner parentesis a las cosas , ya sea por estetica o por gusto propio , los identificadores y/o variables dan errores ya que el mIRC podría interpretar el identificador en vez de $1 como ($1) , el cual no existe :) Por eso mismo entra en juego el $+ , que su única función es la de juntar 2 stirngs hacinedo que para el mIRC no sea un problema leerlo , e interpretarlo ;Ejemplo alias Casa { msg $chan Tengo un perro y se llama ( $+ $1 $+ ) }

Esto aditivos del $+ , no añaden valores nuevos a la frase , pero si pusieramos el alias /Casa PiRuLoZ , obtendriamos algo así como.... Tengo un perro y se llama (PiRuLoZ) La manera de explicar esto y uqe se entienda es que 1ro el mIRC lee los identificadores , y luego los conectores como los $+ , y una vez ya ha dado valor al $1 , junta el valor establecido "PiRuLoZ" con los ( ) donde se haya dicho valor , evitnado así la mala interpretación del cliente :) En alias no suele pasar pero si pasará en Remotes cuando usemos Variables entre otras , así que iros familiarizandoos con este Identificador :)


Otros Alias que tambien se usan son los que requierne interacción directa el usuario (osea nosotros) para poderse realizar. Entre ellos tenemos el $$?="Texto" que viene a ser simplemente igual que el $1 , solamente que el mIRC nos pregunta el valor que queremos darle , cada vez que ejecutemos el alias Si por ejemplo ponemos Saluda { msg $chan Hola que tal $$?="Que nick quieres Saludar?" } Cuando usemos el comando /Saludar , el mIRC nos preguntara a que nick queremos Saludar, y una vez introduzcamos esa información enviará el mensage :)

Otro identificador es el $! , este identificador lo uniko que hace es devolvernos el texto que hemos introducido (si lo hemos echo claro) del $$? del mismo alias Veamos un ejemplo anterior ;Ejemplo Saluda { msg $chan Hola que tal $$?="Que nick quieres Saludar?" echo -s Saludando a $! } El comando echo ,. nos devolverá lo que hayamos escrito en la pregunta del "Que nick quieres Saludar?" Hay demás identificadores pero ya los explicaremos en otro momento , ya que no son útiles o no se usan simplemente :)

;--------------------------------------------------(Alias más avanzados)----------------------------------------------Aqui explicaremos un poco , como mezclar unos alias , con algunos eventos senzillos , como puede ser el estar en un canal en vez de otros , la comparación de una variable con otra o alguna acción asi senzilla para empezar :) ;-----------------------------------------------------------------------------------------------------------------------------

Aqui por ejemplo utilizaremos una pequeña comparación con el canal. Este alias lo que hace en teoria es pasar un msg al canal. en el momento que sea ejecutado , el alias valorara la comparación echa por el if. Osea , explicandonos , si el canal donde escribimos eso ( /Hola ) es el canal #Gente , pues enviará el texto Hey Gente de cada día como estais ? , si por el contrario es diferente al al canal #Gente (cosa que nos marca el elfe , que niega el if) dirá la frase Buenas ! ;Ejemplo Hola { if ( $chan == #Gente ) { say Hey Gente de cada día como estais ?


} else { say Buenas ! } } Las diferentes comparaciónes se pueden hacer con nick, , canales , eventos y variables entre otras :) , al igual que también se pueden encadenar una detras de otra , o incluyendolas en SubGrupos ;Ejemplo Si el canal es #Canal1 y el Nick Pepito esta dentro que yo diga Hola PePiTo , pero si no esta ese nick que diga Hola buenas tardes. Pero si el canal no es #Canal1 pero si está PePiTo que diga Hola pepito estoy en #Canal1 , y si por el caso , ni es el #Canal1 ni está PePiTo que no diga nada

Hola { if ( $chan == #Canal1 ) { if (PePiTo ison $chan ) { msg $chan Hola PePiTo } else { msg $chan Hola Buenas tardes } if ($chan != #Canal1) { if (PePiTo ison $chan ) { msg $chan Hola PePiTo , no estoy en #Canal1 } else { halt } } }

Aquí lo tenemos , parece complicado pero no lo es en absoluto , simplemente er ir leyendoselo poco a poco como si pudieramos leerlo (creo que ya tenemos nivel para hacerlo) y ir scripteandolo :) conforme se requiera una cosa u otra

Otro Comando también bastante interesante para hacer grupos de alias con ciertos eventos y/o condiconamientos por nuestra parte , son el Famoso Comando GOTO El comando goto , simplemente te hace salta de un lado a otro de un alias o remote , ignorando todo lo que , desde el punto de salto , hasta el punto de re encuentro ;Ejemplo /Palabra { if ($1 == Hola) { goto hola } elseif ($1 == Adios) { goto adios } else { goto otra } :hola


echo -s Has puesto en $1 Hola halt :adios echo -s Has puesto en $1 Adios halt :otra echo a no has puesto ni hola ni Adios :) Halt }

Aqui queda simplemente "CLARO" el uso del comando GOTO , que es el igual que en el EDIT de Ms-DOS por si alguien se acuerda :P

Recordar también que para llamar a un Alias , scripteado desde un remote , solo tenemos que poner la palabra Alias delante del alias que queramos crear ;Ejemplo ;;;;;;;;;;;;;;;Estando en Alias;;;;;;;;;;;;;;;;;; Hola { echo -s HOLA !!! } ;;;;;;;;;;;;;Estando en Remotes;;;;;;;;;;;;;;;;, alias Hola { echo -a HOLA !!! } Creo que queda claro :D...y sino os lo leis otra vez :) x´DD

Para llamar a un alias , puedes hacerlo desde las llamadas Teclas de Función como son los F's (F1 , F2 , F3....F12) , los Control + Tecla etc etc F1 { join #Se_activa_con_el_F1_xD } SF10 { join #Shift_+_F10 } CF1 { echo -s Control + F1 xD} si por ejemplo queremos insertar comentarios entre nuestro alias , para usarlos de punto de búsqueda , habrá que ponerlo con un ; delante , para que el mIRC lo interprete como un Texto , no como una orden

De momento damos por acabada la Sección de Alias :o)

;--------------------------------------------------------(Pop Ups)--------------------------------------------------------Los Pop Ups son como bien conoce todo el mundo ya que es lo primero que se aprende los menus desplegables de los que consta el mIRC.

;-----------------------------------------------------------------------------------------------------------------------------

Los Pop Ups del mIRC se usan para agilizar tareas a la hora de kickear un nick , dar una op etc


Su sintaxys básica seria Nombre : Accion Los Pop Ups pueden ser o estar de muchas clases o lugares asi como tenemos los Pop Ups de Status (ventana de status) , Menu (los basico y generales de todo script en la Barra de Herramientas) , los de Channel (los del canal) , los NickList (la lista de nicks) y los de Query (dentro de un Query y/o DCC)

En los del Menu o Status, podemos poner cualquier acción que queramos , desde una acción larga ;Ejemplo Bla Bla : acción 1 : accion2 | accion3 o bien resumir esas acciones en un alias y hacer una llamada a ese alias Bla Bla : acciontotal El alias al que llamaria seria al "acciontotal" que podria ser así acciontotal { accion1 accion2 accion3 } Hasta aquí claro :) Si los otros Pop ups estan echos para Nick List o Chanel List , la acción deberá reacer o bien sobre un alias o canal (Pop Ups de Canal) o bien sobre un nick (NickList)

Si son sobre el Canal , se identificará mediante $chan o # que son 2 identificadores que nos devuelven el canal actual. Canal { say $chan say # } Este alias puesto en un Pop Up o esrito en un canal (aunque el Pop up nos ahorraria trabajo de escritura :P) nos devolverá los siguientes textos al canal ; #DaRkAnGeL #DaRkAnGeL Si el canal donde se puso era #DaRkAnGeL , sino devolveria el canal donde se ejecutase :) En los Pop ups de NickList , los eventos realizados con nicks en un canal también se puede hacer referencia al canal activo dóndeestá ese nick con $chan y # y dar referencia al Usuario que tenemos marcado y/o señalado con nuestro cursor como $$1


;Atentos porque aqui son 2 $$ en los Pop Ups , aunque si pusiermaos 1 y viceversa , también funcionaria , siempre es bueno mantener las reglas básicas para cuando se hagan cosas más Complicadas :) Para realizar una acción sobre un nick usaremos $$1 de este modo Decir Hola : msg $$1 Hola !!! Eso en el Pop up de nick List , enviaria un msg (el lo veria como un query/privado) al usuario $$1 , osea el nick seleccionado :)

Y así con diferentes acciones como DCC CHAT : send chat $$1 o bien también Dar @p : mode $chan +o $$1 Esto dariá el modo +o (arroba/@9 en el canal activo ($chan/#) donde esta el nick al usuario $$1 osea el nick seleccionado :) Si quisieramos tener ese comando como alias seria ;Ejemplo Op { mode $chan +o $1 } Esto haria que al escribir /Op Nick , (en el canal donde se quiera dar) , dariamos Op al nick que escribieramos en 1eer lugar despues del Comando /Op :)

Creo que de Pop Ups solamente decir que cualquier Comando o identificador de retorno que existe en el mIRC , puedes plasmarse instantaneamente en un Pop up , asi por ejemplo podemos poner Hora $time y saldria la hora en el Pop Up asi » Hora hh:nn Los Pop Ups por defecto se separan (con la linia separadora de los Pop ups) con la letra - (con el guión) Si por ejemplo hacemos en el Menu Bar PePiTo : nick PePiTo Jaimito : nick Jaimito

Al desplegar el menú , saldrian separados por una Linia divisoria para mayor claridad del usuario Los Menus pueden constar de SubMenus , de una manera muy senzilla y es con los . delante de la palabra ;Ejemplo


Nicks .Juan : nick juan ..Jorge : nick jorge Modos . +x : mode $me +x ... Etc Etc.... como vemos , el 1er .- (punto y guion separaria al juan y Jorge , mientras k solo el guión (despues de Jorgue) se pararia a Nicks de Modos ya que al no tener ningún punto esta en el 1er nivel de preferencia :)

Y poco más a destacar de los Pop Ups excepto que comando como $host , $time , $cb etc e identificadores de este tipo , se pueden poner en los pop ups aunque no variaran si no se re abre el pop up ;Ejemplo

Si en un pop up pones $time , cuando lo abras se plasmara el tiempo , pero no seguirá corriendo y hasta que no reabras el Pop up no lo verás actualizado :_)

;------------------------------(Remotes Eventuales o Eventos)--------------------------------------------------------Los eventos , son las acciones que se hacen en respuesta a otra , osea que son activados por una respuesta desde otro lugar :) (Esta zona será completada con las ablas de Informacion :)) ;----------------------------------------------------------------------------------------------------------------------------------Existen varios tipos de eventos , ya sean raw's (cambios d nicks / topics / etc) , eventos de textos (cunado alguien escribe algo) o eventos de acciones (kicks / bans / etc)

Los eventos van precedidos siempre de la palabra "on" que traducida literalmente vendria a ser un Cuando. on Ese cuando ya nos hace pensar que algiuen tiene que realizar la accion para actiuvarlo que será el USER. Los usuario tiene diferente tipos de anotaciones para designarlos. El nivel 1 , es para tí (Default del mIRC) El nivel ^1 , es para cualquier usuario del mIRC


Cualkier otro nivel numero 2,3,4,5,600 , seria para un usuario de ese nivel Tambien se pueden dar niveles escrito osea palabras

Para dar nivel a un usuario existen muchos comandos pero uno senzillo es el: /auser Nivel Nick ;que seria un Add User nivel (Numerico/Letras) Nick ;Ejemplo /auser 23 WiDoK ;Esto añadiria a WiDoK el nivel 23 , pudiendo accionar solo él los eventos para ese nivel especifio (23) o cualkier otro usuario con el mismo nivel 23 :) ;Volviendo a los Eventos haremos eventos senzillos , como acciones de canal , kicks , bans etc

Cómo hemos visto , ya tenemos como designar a los usuarios para un evento on User: Los 2 puntos en mirc Scripting se usan para separar valores Ya tenemos el inicio de un Evento Remoto (osea que hace alguien Remoto) Ya hemos visto que los uers pueden ser 1 , un numero cualquiera , una palabra o un global ^1 o * (poseen el mismo sentido x`D) on nivel_Usuario:TIPO_DE_EVENTO: En los Tipos de Eventos pueden ser varios ; Action Active Agent AppActive Ban Chat Close Connect Ctcp CtcpReply DccServer DeHelp DeOp DeVoice Dialog Dns Error Exit FileRcvd


FileSent Get Fail Help Hotlink Input Invite Join KeyDown KeyUp Kick Load MidiEnd Mode Mp3End Nick NoSound Notice Notify Op Open Part Ping Pong PlayEnd Quit Raw RawMode SendFail Send Server Mode Server Op Signal Snotice Start Text Topic UnBan Unload Unotify User Mode Voice Wallops WaveEnd Sintaxys Global de un Evento -> on nivel:EVENT:texto:lugar: { Acción(alias) } Aunque parezca que haya muchos y asusten es facil aprenderselos (sino siempre se pueden mirar) pero son las acciones que suceden cada 2 x 3 en nuestro mIRC , que si bans que si kicks , que si textos , son faciles vamos. La mayoria se con otros usuarios .Cuando se les kickea , segun el nivel que tengan como reaccionará tu Script , o si te banean a tí como reaccionará tu script etc , y también hay muchas otras como hemos visto una línia


atrás , las hay que repercuten sobre tí , como además de las nombradas , puede ser una conexión con un server , un disconnect etc

Ahora para marcar el evento seria on UserLEveL:Evento:(SubTipo):(Lugar): No todas las accion/eventos tiene subtipo , pero si lo tiene hay que ponerselo. Por ejemplo , si queremos que nuestro Script reaccione antes un cierto texto cuando se escribe en un cierto sitio pondriamos algo asú : on ^1:TEXT:*ayuda*:#: { msg $chan Enviame un Privado $nick } Es remote nos indicaria que cuando un usuario (^1 osea cualquiera , aunque podriamos designar usuario de un cierto grupo especifico ... on 35:TEXT por ejemplo) escribe un texto (TEXT) y la palabra ayuda aparezca en él (*ayuda*) en cualquier canal (#) enviaremos una variable de retorno de canal ($chan , tambien posible el # con el $nick del que activó nuestro Evento) , por eso son eventos remotos porque son activados por otros Usuarios y se usan variables de devolucion , porque devuelven la informacion del lugar , y del nick , entre otras de donde se sucede la acción , en este caso enviaria un texto al canal donde se hizo la accion ($chan/#) diciendo Enviame un Privado $nick , que seria sustituido por el nick que realizó la acción , osea que escribió ayuda en su frase :o)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EVENTOS DE TIPO ON TEXT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Estos Eventos son los que reaccionan o se disparan en la lectura de un texto de otro usuario (osea que tienes que estar en el mismo canal para poder leerlo XD)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

En los Eventos on TEXT de los más usados se puede distinguir entre varias clases de maneras de poner el texto. Si ponemos por ejemplo on ^1:TEXT:(Subtipo):#: { .... Si en subtipo ponemos * , el evento reacccionará con cualquier texto sea el que sea en un canal , en este caso con todos los usuarios (^1) Si ponemos una palabra encerrada entre *kaka* , pasará el evento cuando esa palabra kaka , este en cualquier sitio de la frase , mientras que si ponemos un * delante de la palabra (*kaka) sólo pasará cuando la palabra este al final de todo de la frase (Esto es una kaka , entonces si reaccionaría) y si ponemos el asterizco detrás (kaka*) pasará cuando la palabra kaka este al princpio de la frase (ahora tambien podemos llamarle $1- , porque engloba toda la frase) Aqui intentaremos matar 2 pajaros de un tiro , así que atentos porque enseñaremos cómo funciona un #Grupo (y sus comandos y/o funciones) y un poco más sobre eventos remotos :)


#ModoAway On on ^1:TEXT:*dr4g0nz*:#: { notice $nick Estoy ausente :) } #ModoAway end Analizemos eso XD... Esto lo que hace , que cuando alguien diga el nombre , o nombre la palabra "dr4g0nz" en cualquier canal , le envie ese notices diciendo que estoy away Normalmente lo grupos se cmoplementan con otras cosas para tener mas efecto. Este grupo anterior (#ModoAway) está activado (#ModoAway On) , para activarlo desactivalor son los Comandos enable #GrupoNombre / disable #GrupoNombre

Si el grupo estuviera en Off , el script se saltaria todo este otroz de código desde el princpio del grupo , hasta el final (#Grupo End) , hacinedo asi , que aunque me nombraran en un canal no me diria nada el scirpt , ni le mandaria el notice :o) ################################################################################## ##################### Completa con las Tablas de INFORMACION ########################## ##################################################################################

Un evento tiene una sintaxys general que es esta : on nivel:EVENTO:texto:lugar: { comando } On = Palabra fija en un Evento es el que diapra la cadena (Cuando) Nivel = Designa el tipo de usuario que hara disparar ese Evento Evento = El tipo de evento que dará lugar a la acción Texto = si es un Evento on TEXT deberas especificar un Texto a decir Lugar = Debes especificar donde ejecutarlo (# = canal , ? = Query y = = a DCC) Comando = Aqui ponremos el Echo , la llamada a un alias o lo que queramos En Nivel podemos añadir un usuario por Nick , Nick o Mascara , nick y host , o por las 3 a la vez ;Ejemplo /auser [-a] <niveles> <nick/host> Añade a un usuario borrando la entrada anterior , osea borrando el aitugo o antiguos niveles que pudiera tener :) (Peudes asignar mas de un nivel separandolos con comas 4,5,46) /guser [-a] <niveles> <nick> [tipo] Añade a un usuario segun el tipo de mascara que indiquemos del 0 al 9 (Mirar Tablas de Información) , y funciona como el Auser /ruser <niveles> <nick> Borra un nivel X a cierto Nick /rlevel [-r] <niveles> Borra a todos los usuarios de la lista de usuarios remotos cuyo primer nivel sea el que especifiquemos en <niveles>. Si usamos el parámetro [-r] borrará a todos los usuarios que tengan el nivel <niveles> en cualquier lugar. Partiendo de:

/rlevel -r 12 Borrará tanto a Ytreme como a TeMpEsT puesto que tienen el nivel 12 , no importa en que posición


/ulist [ < / > ] <nivel> Lista a los usuarios de nivel <nivel> , o bien podemos especificar el parámetro [ < / > ] como “>4” o “<10” . Por ejemplo: /ulist >10

En los Eventos tenemos a 3 posibles variaciones respecto a los lugares donde pueden suceder las acciones :). Tenemos el modificador # , que indicará que la accion pasará en un cala Tenemos el ? que moduladará las acciones que flujan en los query's o privados Y por ultimo tenemos el = , que controlará las acciones que sucedan a traves de un DCC Establecido . stos eventos mas adelante en otro casos el DCC será equivalente al evento on CHAT en ves de = Tambien podemos incliuir el * cuya funcion es controlar indistintamente los eventos en los canales y privados o query's

Haremos pruebas de Lugar con un Evento on Text de Aviso; ;Ejemplo

on ^1:TEXT:Hola*:#: { msg $chan holaaaaaaaa $nick } Como vemos aqui , esto reaccionara antes el texto de un canal y lo responderá pero solo si pasa en un canal

on ^1:TEXT:Hola*:?: { msg $nick holaaaaaaaa $nick } Este hará lo mismo que en el canal pero en el privado y enviara un msg no al canal (mas que nada xq el evento no ocurre alli y hemos designado el parametro msg $nick , para que lo envie al nick que realiza la accion y/o la ejecuta o dispara) on ^1:TEXT:Hola*:=: { msg =$nick holaaaaaaaa $nick } Aqui es exactamente igual que por el privado pero solo si el texto es por un DCC Chat establecido

;;;;;;;;;;;;;;;;;;;;;ADVERTENCIA;;;;;;;;;;;;;;;;;;;;; Para asegurarse de que TODO funciona bien , hemos de vigilar en no mezclar acciones de canal con acciones de query's y mucho menos mezclarlas ,. porque se interferirian y muchas veces on iria ni una ni la otra o bien no harian el efecto deseado :) , por eso se recomienda y recomendamos firmamente que tengas claro de donde viene la accion y a donde va la respuesta : ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,

Ya que estamos en los eventos on TEXT , explicaremos exactamente ante que tipo de caracteres reaccionará y como con cada uno de ellos.


Si ponemos solo un * , el evento on TEXT reaccionará antes cualquier texto Si ponemos solo un & , el evento on TEXT reaccionará antes cualquier palabra Si ponemos solo un Texto* , el evento on TEXT reaccionará antes cualquier cadena o cadenas de palabras que empiezen por esa combinacion que desiganemos detras del *

Si ponemos solo un *Texto* el evento on TEXT reaccionará antes cualquier cadena o cadenas de palabras que contengan la combinacion que desiganemos entre los * ... * Si ponemos solo un Texto* , el evento on TEXT reaccionará antes cualquier cadena o cadenas de palabras que empiezen por esa combinacion que desiganemos detras del * Para acordaros de todo esto , podeis tomar al * como un comidin que viene a significar "sea lo que sea" , es una pekeña ayudita que os servirá : )

Ahi tenemos todas las posiblidades

Luego tambien tenemos los Modificadores de Nivel , que indicaran que cuando un usuario hace disparar ese evento , que solo se dispare en el caso hipotetico que nosotros seamos OP en ese canal , o que el nivel sea igual o superior a el indica o bien que sea inferior y/o exactamente igual : )

EXPLICARLOS !!

;Notas Finales Si no habeis entendido esto , uhmmmmmm siempre podeis volver a leeroslo , pero si no os entra en la cabeza o bien no os sale , teneis los recursos de #Scripting #mirc.Scripting #Scripts y hasta incluso el #DaRkAnGeL pero vamos que supongo que con esto y unas cuentas pruebas por vuestra parte y los ejemplos , os saldrá todo bien :)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EVENTOS ON ACTION Y NOTICES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Estos eventos se dispararan cuando ocurre la accion especifica que hemos especificado dentro del grupo de acciones (modos de canal etc etc...vamos , todo lo relacionado con los cambios de modos y acciones entorno al control de un canal :)) o bien con un notice :)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,

Como ya hemos explicado las sintaxys y demás en otros apartados , nos centraremos en su funcionamineto ya que TODOS los eventos son similares y pocas cambian de nuos a otros , asi que ahora propondrmeos ejemplos a probar y/o a estudiar y que intenteis pensarlos y cuando lo creais , seguis leyendo y mirais a ver


donde os habiais equivocado.contra más pongais de vuestra parte , más se os quedará y más facilidad tendreis para leer códigos y todo eso :) ;Ejemplo

on 1:ACTION:*set mode*:#: { echo $chan Cambio de omdos detectado } Esta cadena lo que haria sería , cuando alguin (o algo xDDDD) cambiara los modos del canal , con cualquier tipo de variable que se tubiera que ejecutar con las ordenes mode #canal ........+/- modo etc etc , saltaria esta orden y como pasa en un canal y la hace un nick , podemos permitirnos el lujo , de con las varaibles de retorno , tener la posiblidad de enviar un msg al $nick o al $chan o hacernos un echo para verlo nosotros :)

En lo que respecta al NOTICE propondremos un ejemplo y poco hay que decir al respeto xD

on 1:NOTICE:*:#: { msg $nick (Auto Msg) Estoy ocupado en canales .... } on 1:NOTICE:*:?: { msg $nick (Auto Msg) Estoy ocupado en privados.... } on 1:NOTICE:*:=:{ msg $nick (Auto Msg) Estoy ocupado en DCC's... } No creo que haya mucho que explicar ...

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EVENTOS ON BAN Y UNBAN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Como el mismo evento dice , esto reaccionará cuando un usuario o tu (*ver niveles*) le pongan o ponga un Ban (*por obligacion identificacion de lugar con #*) en un canal :) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Nota;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Yo tengo la buena o mala costumbre de poner las cosas entre {....} y no es del todo necesario por ahora pero en un futuro si queremos usar intercalciones con otros codigos tipo eventos , cadenas If-Then-else o algo , nos veremos obligados a poneros.Tan valido es esto on ^1:TEXT:*:#:/msg $chan Has escrito $1Como esto otro... on ^1:TEXT:*:#: { msg $chan Has escrito $1- } Siempre con mucho ojo en tener cuidado k no os dejeis cerrar un corchete si abris uno o bien que nada toque a los corchetes , debido a que el mIRC lo entenderi como el ocmando entero y no como un simple corchete y daria mas de un problema :)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,, Sigamos con los Bans despues de este "pequeño" inciso :)


on 1:BAN:#: { msg $nick Toma ban te he puesto en $chan } on 45:BAN:#: { mode $chan -o $nick | mode $chan -b $banmask | msg $chan No banees a $bnick }

Como podeis ver , son sintays muy muy simples y faciles de entender , solo mencionar que que el level se refiere al que recive la accion del ban. Las variables o identificadores que entran en juego en un Ban/UnBan son las de $bnick , que se refiere al nick que recive la accion y $nick el que la realiza (es como el que $jode y el que es $jodido .....ejem.... X´´D) Tambien tenemos como hemos visto el $banmask que lo que hace es devolvernos la variable del BAN que se acaba de usar en la accón , osea , que ponga el tipo de Ban que ponga en esa acción la $banmask siempre nos lo devolverá y si pones un comando que sea mode $chan (asi será donde se realice la accion de Ban) +b $banmask , siempre quitara la maskara de BAN sea cual sea el tipo :) Aprovechar que las acciones compuesta por mas de 2 o varias , podemos simplificarlas en un alias unico como ya hemos visto , pero con cuidado de usar bien las variables e identificadores :)

Tambien dejar claro , que las mismas acciones posible con Ban , son reversibles y posibles con el unBan ya que queda dentro del mismo grupo de acciones y funciona de la misma manera , pero al afecto contrario ;)

on 1:UNBAN:#: {msg $bnick Te han quitao el ban chavalote XD de $chan y ha sido $nick }

Bueno creo que se entiende..... XD

Ahora veamos algunos modificadores a la hora del evento implicito de la acción : ) < El nivel del Baneador (Realiza la accion) es Menor que el del baneado (La recive) > Al contrario que el anterior <= El nivel del Baneador es IGUAL o mas pequeño que el del Baneado => Igual que el anteior pero al revés = Los niveles son Iguales Estos modificadores de Eventos pueden ser utilizados en otros eventos , ya sea comparando los 2 nicks de la accion , o comparandolo tu con alguien o contigo mismo etc etc

Prosigamos con un ejemplo mas complicado mezclando alguna cadena simple de IF's y una minima inteligencia :) on 1:BAN:#: { if ($banmask iswm $address($me,0) || ($me isin $banmask) { msg $chan Hey no me baneeeeeeeeeeeis ! Grrrrrrrrr $nick if ( $me isop $chan ) { mode $chan -ob+b $nick $banmask $address($nick,2) } } }

#################################################################################


# Volver a esta seccion una vez estudiados los condicionales IF-THEN-ELSE para mayor entendimiento :# # en dicha seccion se explicaran los Comparadores y/o Operadores # #################################################################################

Visto que aqui aparecen muchos "signos raros" primeramente comentaremos que las 2 || indican que estamos en un if , y que tal IF comprobará los casos a ver si existen o no bajo la condicion de si la Mascara es igual o no a la nuestra y si nuestro nick está o no en el BAN :) y una vez comprobado seguira con el MSG o bien si la comparacion es que no somos nosotros los baneados pues no hara nada .... un else-..... Y luego los famosos parentesis que tengo lian , son para designar dentro del grup de $addres , especificar que mire la nuestra con el tipo 0 , osea TODO , mientras que el tipo 2 seria el host etc etc....... (en el mir Hepl vienen todos los tipos que no nombraremos aqui porque no tiene misterio saber que numero corresponde a que tipo de mascara XD)

Jejeje aqui tenenenos un ejemplo , que cuando haya un Ban en un canal , mirara su nuestra mascara esta inclida dentro (if ($banmask iswm $address($me,0) ) y luego mirará si el nick lo esta tb o no (($me isin $banmask) ) y si eso ocurre el if nos llevará al MSG al canal donde sucedio , pero si ni la mascara ni el nick estan dentro no hará nada :) osea lo que seria igual a un caso que no exite :) pero como no queremos hacer nada no lo ponemos , sino seria un else { lo que queramos que pase | halt } y luego ya lo veis una ocmparacion que mira si somos op's del canal donde se realizo la accion ( if ( $me isop $chan ) ) y entonces quitaria la op y un posible ban del canal al acosador y pondria uno nuestro de nuestro tipo jeje y se iria a la ****** XD y seria un tipo de Ban tipo 2 ..... (los peores que solo banean el host y es lo que siempre coincide) , porque si pones un ban a un nick!ident@host.domains ........ lo facil es que si cambia de nick , como no coincide toda la cadena ..... volverá a entrar : )

Espero que haya quedado claro : ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EVENTOS ON CHAT Y ON SERV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Pues como dice el nombre , será para los eventos que sucedan dentro de las (posibles) ventanas de dCC o FSERV que podamos tener con un usuario ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, ;Sintaxys on level:CHAT o SERV:texto: { comandos } ;Ejemplo on 1:CHAT:*Hola*: { msg $nick Que pasa :) } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Nota;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Si ponemos msg $nick , le enviará el MSG por query normal y corriente , en cambio si ponemos un = (identificador de DCC) , delante del nick =$nick , se lo enviará por DCC el msg Si nos diera problemas , siempre se puede poner = $+ $nick , como ya hemos visto :) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EVENTOS ON CONNECT Y DISCONNECT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,


Ya sabemos para que serán estos eventos..... XD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Estos son de los mas faciles porque como designacion de nivel , siempre será 1 ya que quien más va a conectar con nuestro script.... o la asignacion de lugar de la accion.... en un canal ? un query?un DCC? , naaaaaa......... estos eventos no tienen ni lugar expliicto ni nivel practicamente :)

on 1:CONNECT { accion } on 1:DISCONNECT: { accion } Y está más que claro XD Aqui como consejo pues deciros que como comandos que podis usar al conectar podrian ser las tipicas varaibles una vez conectados a un servidor como .....$server , $ip , $host ... (Toda estas varaibles requieren estar conectado a un server)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EVENTOS ON CTCP REPLY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Esto se activa , a ver si queda claro , cuando un usuario responde (reply) a un CTCP (ctcp) tuyo XD y ya está XD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, ;Sintaxys on level:CTCPREPLY:texto:comandos ;Ejemplo on 1:CTCPREPLY:TIME*: { echo -s $nick te responde $1- } Poco más a destacar excepto que los Ctcp's mas conocidos son el Version , el Finger , el Time y pocos más....

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EVENTOS ON OP AND DEOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Esto controlará todos los eventos de OP y DEOP que sucedan como no en un canal o varios canales ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, ;Sintaxys on level:OP:#[,#]:comandos Ejemplo on 25:OP:#: { mode $chan -o $opnick | msg $chan Auto Deop List GrRGrGR }

Este ejemplo es parecido de con los Ban/UnBan , vamos practicamente igual , y dice que si el nivel es 25 pues que deopara NOOAL QUE HACE LA ACCION (que seria $nick) SINO AL QUE LA RECIVE ($opnick , que en el caso del ban seria $bnick , para que vayais haciendo asimilos y/o comparaciones :)) , y despues envia el msg al canal adviertiendo que el esta en la shit list (el nick que han operado ($opnick))


con estos eventos podemos operar como con los Ban/UnBan , usando los mismos comparadores y modificadores y comparativos de niveles al igual que con los Ban's , asi pues doy por zangada la seccion y solo decir, que recordeis bien , quien realiza la accion (OP/DEOP osea $nick) y quien la recive (OSEA del DEOPED/OPED o $opnick)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EVENTOS ON VOICE AND DEVOICE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Esto controlará todos los eventos de VOICE y DEVOICE que sucedan como no en un canal o varios canales ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,

En este apartado no me pienso extender lo más minimo porqué como podreis suponer , es completamente igual que los OP's y DEOP's cambiando las +/- o's por +/- v's y las varaibles del OP/DEOP de $opnick por las de VOICE/DEVOICE de $vnick Todo lo otro es completamente igual :)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EVENTOS ON DNS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Esto es para cuando usamos el mIRC para hacer conversiones IP/HOST y vicevesa del Denial Service :) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Veamos un ejemplo y quedaran claras las varaibles que actuan como el $raddress (viene de Resolved Addres con lo que será el valor de variable que se nos dará enel evento DNS) ;Ejemplo on 1:DNS:{ echo -a IP: $iaddress / NOMBRE : $naddres / RESOLVE TO : $raddres }

Ahi teneis un ejemplo con las variables que giran entorno a un evneto DNS

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EVENTOS ON ERROR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Bueno , cuando pasa eso tan conocido como ERROR ! XD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Este evento pasará cuando el servidore nos de un ERROR , aqui los tipos de errores que se suelen dar son los que todos conocemos o hemos visto *server is full* , *service unavaible* y del palo : )

;Sintaxys on level:ERROR:texto:commandos ;Ejemplo on 1:ERROR:*K-Line*: { echo -s Tienes un K-Line en este server }


;;;;;;;;;;;;;;;;;;;;;EVENTOS (DCC/59) ON FILE SEND / FILE RECEIVE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Pues los eventos que miden las transferencias : ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,

Se producen al completarse un dcc send o un dcc get (envio o recepciรณn de ficheros reapectivamente). En donde ponemos como ejemplos *.txt o *.ini pueden ser los 2 casos al igual que en vrios canales y/o sitios

;Sintaxys: on level:FILESENT:filename:comandos ;Ejemplo on 1:FILESENT:*.txt: { msg $nick $filename : enviando.... } Los eventos on SENDFAIL y on GETFAIL se producen cuando un dcc send o un dcc get son fallidos. osea , que se corta la coonexion por alguno de los 2 extremos :) on 1:FILESENT:*.txt: { echo -s Sended $filename a $nick $address } Se produce cuando enviamos un fichero .TXT o INI. $filename devuelve el nombre del fichero enviado. on 1:FILERCVD:*: { echo -s Received $filename de $nick } 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 -s Ha petao el $filename de $nick jorllll..... | msg $nick Ha fallaaaado ! XD }

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EVEN TO ON INPUT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Se produce cuando pulsamos l tecla intro y tenemos un texto ($1-) para mandar :) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Sintaxys on level:INPUT:commandos Ejemplo : on 1:INPUT: { say (XX) $1- (XX) }

Esto lo que hara , es que cuando nosotros pulsemos la tecla enter , cogera y harรก ese remote , que pasarรก el texto $1- , osea TODA nuestras frase , y la dire entre los 2 dibujos , como estรก predeterminado -> (XX)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EVEN TO ON INVITE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


Evento que se activa cuando recivimos una invitación por parte de otro usuario a un canal ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Sintaxys on level:INVITE:commandos Ejemplo : on 1:INVITE:#Scripting: { join #Scripting | .timer 1 2 say thx por la invitacion :) }

Esto lo que hara , es que cuando nosotros pulsemos la tecla enter , cogera y hará ese remote , que pasará el texto $1- , osea TODA nuestras frase , y la dire entre los 2 dibujos , como está predeterminado -> (XX)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EVEN TO JOIN AND PART;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Evento que se activa cuando entramos o salimos de o a un canal ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Todos estos eventos se tratan igual que los anteriors segun el canal donde estemos :) , asi que pondremos unicamente ejemplos por si queda alguna duda y nos adentraremos ya en seccions más interesante :)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EVEN TO ON KICK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Cuando un nick es kickkeado del canal donde nos encontramos :) ;Ejemplo on 5:KICK:#: { invite $knick $chan | msg $nick , $knick está protegido :) }

Tambien aquí se pueden aplicar las comparaciones de niveles :)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EVEN TO ON LOAD AND START;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Esta evento se ejecutara como el connect y el disconnect , sin un marco como canales o privado :D La funcion On LOAD funciona igual que todas las otras , y lo que hará , es que cuando cargues un archivo externo desde tu script con la funcion de Remote -> Load -> Script -> Archivo . o bien mediante un comando manual como será el : load -rs $mircdircarpeta\archivo ( on 1:LOAD: { alias } ) (RS) -> quieres decir que son remotes :) $mircdir -> es el directorio por excelencia donde está el *.EXE del mIRC Y el comando on 1:START: { alias } se usa para ejecutar eventos o acciones nada mas abrir el script :)


;;;;;;;;;;;;;;;;;;;;;;;;;;EVENTOS QUE SIGUEN ESTAS NORMAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Todos estos eventos controlan y usan la misma sintaxys que hemos visto y que recordaremos ahora :) ;Sintaxys Patron on level:CUALKIERA_DE_LOS_SIGUIENTES:commandos En todos estos casos , los mismo identificadores $1 , $2 etc etc argumentaran los valores , osea que si tenemos nu Eventos On 1:QUIT , en el echo o msg que pongamos , el $1 seria la primera palabra de repuesta al evento y/o valor.... asi que por ejemplo con el $1- ya los cogeriamos todos :)

MidiEnd (Sin Canal ni Query's) (Cuando se acaba de sonar un MIDI) WavEnd (Sin Canal ni Query's) ( Cuando acaba de sonar un WAV ) Modes (En algun canal/es ) (Modos en un canal no usuarios ($1,$2,$3....)) Nick (En algun canal/es) ( Cuando se cambia el nick estando en un canal comun ) NoSound (En algun canal/es) ( Cuando alguien pone un Sound o musica y tu nol o tienes :) ) Notify/UnNotify (Sin Canal ni query's) ( Te informa a traves del Servidor , que un colega está conectado ) Quit (Sin canal ni Query's) ( Cuando descoenctas o pierdes la conexión con un servidor ) SNotice (Noticias del Servidor) (Esto funciona cuando recivimos una señal del Servidores del tipo *split* , *cliente conectado* y todas esas informativas extras :)) Topic (Evento de Canal) (Se activa cuando se cambia un topic en un canal ..) UserMode (Eventos que actua sobre tí ) (Esto con las variables $1- no dirá los modos que nos ponemos y/o quitamos) Wallops (Del mismo uso y metodo que el SNotice) (Idem XD) PING (Mas de lo mismo) (Vamos igual que todo ya... xD) RawMode (Pues en Canales) (Controla las Raw's de los Canales asi como datos (+l , +k etc)) , aqui podemos destacar qie el $1 actuará como identificador del Modo que se cambia y el $2 como valor que se le da , por ejemplo en un +k seria $1 = k y$2 = pass puesta : )) HotLink ( Vale en cualquier medio , privado , canal , @window etc ) (Funciona para detectar cuando se apreta o se deja de apretar una cierta tecla en un cierto sitio :)) La sintayxs de este ultimo es algo variada ;Sintasyx on level:HOTLINK:texto:Lugar:comandos Pero vamos que sigue igual que todas jasjas , pongamos un ejemplo para que a partir de alli podais hacer pruebas :) ;Ejemplo on 1:HOTLINK:*ueueue*:*: { echo -s Has pasado el Raton por Ueueueue } Espero que uqede claro : )

ServerOP Y ServerMode (En los Canales) (Actuan los 2 Como un OP/DEOP o modes con la salvedad que solo cuando sea el sevrer quién cambie los modos , como en caso de splits etc..:))

Con todo esto , podemos dar por medio acabada la Seccion Explicita de EVENTOs , aunque se irán nombrandon con más aplicaciones y utilidades originales a los largo de toda la guía mezclandolos con otros procesos de caracter más general :) y que nos puedan ser muy utiles :)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;

;-------------------------------------------(Variables y Funciones)-----------------------------------------------------Varibles y su funciones , en esta sección no creo que nos entretengamos mucho , porque es algo más o menos facil que todos sabemos hacer , el dar valor a una variable ;---------------------------------------------------------------------------------------------------------------------------

Las variables lo que nos proporcionan es como una pequeña caja (la variable , definida siempre con el famoso % siempre delante) y nos permite guardar y almacenar un texto en esa variable permanente para más tarde hacer una llamada a esa %variable para ver ese texto. Partiremos de los más básico que es crear una variable.Para crear una variable no hay nada más que darle un valor y si no existe será creada de la forma; set %minick Invitado12 Eso "setearia" la variable %micnik con el valor de Invitado12 Si ahora hacemos una llamada a la varaible , ya sea en un kick , un comando de nick , un msg o un echo veriamos lo siguiente; echo -s %micnik ----> (y por Status apareceria) ---> Invitado12 Esto seria aplicable para todos los comandos , con la salvedad de que si son comandos de accion , hay que poner 2 / delante para k sean validos ;Ejemplo Si tu pones en una pantalla /echo -a $minick , eso lo que haria es enseñarte por esa pantalla (que solo lo verias tú puesto que es un echo) la palabra %minick , y NO la tomaria como una varaible , en cambio , si ponemos y ejecutamos el mismo comando con 2 baras (//echo ....) , nos saldria el valor de la variable , porque el mIRC entiende que es lo que queremos ver al forzarlo con las 2 barras : )

Si una varaible por el caso que sea ya existe , se sobreescribirá con el nuevo valor. Por la misma regla , tenemos el comando unset , que hace lo mismo que el set pero al contrario , osea que borra el valor de esas variables. A la hora de usar un unset , podemos escribirlo de esta manera unset %temp* Eso lo que haria seria borrar todas las variables que empezaran con esas estructura :) ;Eemplo


unset %temp* %temp.1 Valor 1 %temp.2 Valor 2 %tem.p1 Valor 3 %temp.4 Valor 4 Si ejecutaremos el unset %temp* , se borrarian las variables 1,2 y 4 , por el contrario la 3 quedaria inalterada :) , mientras que el comando /unsetall se las puliria todas XD

Tambien podemos setear variables con "recursos de asignacion o identificadores de asignacion" que venddria a ser , un seteo de una variable con un identificador de retorno , tipo $chan , $nick y demás Si por ejemplo en un canal pones /set %canal $nick ........ eso no harai nada porque iria a buscar la variable $chan en el canal y no encontraria nada con nick , en cambio si pones /set %canal $chan , setearia la variable con el canal actual . Lo mismo pasa con $nick , $chan , $$1 (en popups) y demás variables e identificadores de $time y otros... Tambien podemos asignares cadenas de variables cosa que nos permite setear una variable con el valor de otra variable como por ejemplo /et %variable1 %variable2 Esto daria el valor de la %variable2 a la %varaible1 ...

Ahroa veremos más cosas para hacer con las variables : inc %var valor Esta orden incrementaría el valor de la variable en el valor que hayamos especificado, por ejemplo supongamos que la variable %var tiene un valor de 5 y ejecutamos la orden /inc %var 7, Ahora el valor de var sería 12 (5 +7 que hemos aumentado) /dec %var valor Esta orden resta del valor de la variable lo que le asignemos, siguiendo el ejemplo anterior, supongamos que el valor de %var es ahora 12 y ejecutamos la orden /dec %var 2, ahora su valor ser. También puedes usar el signo = para asignar valores a las variables. cosa que no tendriamos que usar el set entonces ya que la asigna por igualación :) %sexo = 69 %pi= 3.14159 %algo = $1 Y también puedes realizar operaciones con las variables si utilizas el signo = %a = 5 + 1 %b = 10 - %a %c = %a * 2 %d = %a / 2 Un poco con esto ya podemos dar por finalizada esta sección de variables , que siempre seria conveniente reforzar con el Hrlp del mIRC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CADENAS IF-THEN-ELSE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Hay que tener en cuenta que esto ya empieza a ser "duro" ya que esto son cadenas IF-The-Else y se encuenrta en otros tipos de programación , osea que esto ya es una programacíon dentro del mIRC asi que atencion. Su traduccion seria Si esto , entonces , o lo otro , esto nos da a sugerir que pondrá una serie de condiciones cuando un evento pase . cunado ejecute un alias .vamos , que controlará cualquier cosa que queramos contrlar bajo unos parametros :)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Empezaremos nada más por ver una estructura simple de la cadena: if (v1 operador v2) { accion } elseif (v1 operador v2) { accion } else { accion } Aqui lo unico que estamos haciendo en esta estructura , es poner una condicion principal (el 1er IF que manda a los demas) que si se cumple se ejecutara su accion :) En caso de que no se cumple irá a buscar otros posible if's , que como ya no son los principales se escriben como elseif (aunque si pones if en cadenas simples pues tambien vale , pero mejor hacerlo bien para un futuro :)) y si esta condicion se cumple , pues ejecutará su accion. en caso que ninguna de las 2 concorde y no se puedan realizar , irá a buscar el ultimo recurso , que es el else , osea , cuando ya no queda ninguna otra posibilidad de busqueda :) Eso seria respecto a la estructura , pero si nos centramos en los comparativos u objetos a comparar , veremos que siempre deben ser 2 , un v1 y un v2 , con comparativos entre medio para compararlos y medirlos. Estos strings o valores , se ponen siempre entre parentesis debido a que indica que se incluyen dentro del IF general , ELSEIF ya que como en los elses es una unica solucion unica cuando no hay alternativa , nunca se coparará con nada , asi que no habra parentesis , a no ser , que hagamos otra cadena de IF's secundaria dentro del parametro ELSE de la primaria XD , cosa que se puede hacer una vez mas experienciados para demarcar y controlar muchos más valores a la vez y hacer asi las cadenas mucho más configurables :) Ahora veremos cualos son los Operadores o Comparativos que podemos usar en las Cadenas IF o bien en cualquier EVENTO o demas que se pueda comprar algo :)

;;;;;;;;;;;;;;;;;COMPARADORES EN CADENAS IF-THEN-ELSE;;;;;;;;;;;;;;;;;;;;;;;;;;;;

== igual a lo que sea === Igual a lo que sea pero con el Key Sensitive (osea que hola no es lo mismo que HoLa) != no es igual a < menor que > mayor que >= Mayor o igual que <= menor o igual que // múltiplo de \\ no es un múltiplo de & Comparación bitwise isin la cadena v1 está contenida en la cadena v2 isincs string v1 está comprendido dentro del v2 (atendiendo a la diferencia entre mayúsculas y minúsculas osea el Key Sensitive) iswm wildcard (cómodín) la cadena v1 es equivalente a la cadena v2 isnum el número v1 es un número que está dentro del rango de v2 que está en el formato n1 -n2 (V2 opcional) isalpha la letra v1 es una letra en la lista de letras contenida en v2 (v2 opcional) ison nick v1 está en el canal v2 isop nick v1 es operador del canal v2 isvo nick v1 tiene voz en el canal v2 isban si v1 es una dirección baneada en la lista interna de bans ischan Si v1 es el canal en el que estás. isauto Si v1 es un usuario en tu lista de autoop en el canal v2 v2 (v2 opcional) isignore Si v1 es un usuario en tulista de ignores v2 (v2 opcional) isprotect si v1 es un usuario en tu lista de protegidos en el canal v2 (v2 opcional) isnotify Si v1 es un usuario en tu notify list.


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Todos estos comandos se pueden negar poniendo delante de ellos el simbolo ! Ahora usaremos un comando que usualmente (con la gente que yo lo he usado) es para ponerlo en la cadenas IF-THEN-ELSE para usarlo debugger para ver ante que texto saltan y indicar ordenes en medio de un arbol de IF's , porque hablamos ahora de Una simple cadena de IF , pero se pueden encadera infinitas cadena una detras de otras :) y siempre va bien tener este caracter o echo's que nos vayan mostrando hasta donde llega la cadena, donde se nos para, donde falla etc etc Esto identificador usado en la Cadenas If's es el $ifmatch , osea que si coincide seria su traduccion Devuelve el primer parámetro de la comparación, cuando se ha cumplido la condición: if (text isin sometext) { ...} $ifmatch devolverá "text" Vamos que mucha mucha utilidad tampoco tien :) Ahora vayamos con un ejemplo que es bueno para aprender a usar los comparativos de los IF-THEN-ELSE -> && que quieres decir "y" , y tambien los || que quieres decir "o" di { if (($1 > 0) && ($1 < 10)) { if ($1 < 5) echo -s Has puesto $1 y es menor que 5 else echo -s Has puesto $1 y es mayor de 5 } else echo -s has puesto un numero ( $+ $1 $+ ) que esta fuera del rango 1-10 } Veis ? , Este alias "DI" , evaluaria lo que ponemos en el 1er parametro , osea en el $1 midiendo si es un numero entre el 1 y el 10 a la vez por el && Si esta comparacion falla , se irá a buscar directamente el ELSE principal y dirá que nuestro numero no vale allí , mientras que sí coincide , se meterá en un subgrupo que evaluará si es menor de 5 , si lo es muy sino , sino cogera el sub ELSE que dice que si no es menor , es que sera mayor que 5 y por supuesto menor que 10 porque ya ha pasado por el 1er IF :) Es un ejemplo facil de entender pero que da mucho juego a la hora de ir progresando :)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, EVENTOS Y ENTORNOS CTCP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;

Aqui trataremos todas las maneras y tipos de CTCP's y cómo tratarlos adequadamente :) según su uso y/o tipo de Envios CTCP o Respuesta :) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;

CTCP » “Client to Client Protocol” o “Protocolo de cliente a cliente” en castellano, y básicamente se trata de un tipo escpecial de comunicación entre los usuarios de un server de IRC que será usada para provocar que los usuarios de el script que estemos haciendo ejecuten ciertas acciones automáticamente al recibir cierta información por CTCP. Digamos que un CTCP esu n envío de una orden o el recivimiento de una respuesta directamente de un Cliente (A) a un otro Cliente (B) ...


;Ejemplo [Cliente A] <---------------------((CTCP))---------------------> [Cliente B] Para mandar información a otro usuario mediante CTCP lo haremos de la siguiente forma: /ctcp <nick> <mensaje> En mensage , podemos poner cualquier palabra o frase que nosotros queramos para que la vea el usuario , aunque esa no es la funcion de un CTCP , ya que estos están creados para reaccionar ante un CTCP determinado propocionando una ayuda o respuesta al otro Cliente sin que el usuario tenga que hacer nada , mas o menos como un evneto remoto :)

No hay mucho más que hablar de los CTCP's , solo decir que existen varios tipos "estandar" de serie en los Clientes de mIRC , tales como el PING , que nos dirá el lag que lleva ese usuario segun tarde su respuesta al ping , el Version par mirar el version , los SOUNDS para mostrar canciones y/o enviarlas entre otros , más los creados por usuarios propios. Otra nota a tener en cuenta antes de cerrar esta sección es que cualquier respuesta de CTCP , viene dada por el CTCPReply de dicho CTCP , osea si te mandan un CTCP VERSION , su CTCPReply será el dihco version :) Vamos a ver algunos usos de los CTCP para finalizar :) ;Ejemplos ctcp 1:PING:*:{ notice $nick Ese ping Warro condemore no los quiero :) | halt } Este evento hará que cuando usted reciba un /ctcp ping de algún usuario, le enviará un notice diciéndole: “Ese ping Warro condemore no los quiero :) ”, y mediante el comando halt haremos que el mIRC deje de procesar información en ese momento , cosa que hará que el CTCPReply del PING no sea devuelto :). Esto se hace extensible a los otros CTCP's del mIRC Client ;) Otra utilidad de estos eventos puede ser la de controlar nuestro mIRC “a distancia”, y me explico, si abrimos dos mIRCs, podremos controlar a uno de ellos mediante CTCPs mientras que el otro lo controlaremos normalmente, se pueden usar por lo tanto para controlar a nuestros clones, por ejemplo si copiamos el siguiente código en la sección Remotes y abrimos dos mIRCs: ctcp 1:quit:*:{ quit $1- } Creo que a estas alturas queda claro lo que esto significa :) También podemos modificar directamente los CTCP Reply's de la siguiente manera ;Ejemplo on 1:CTCPREPLY:*PING*:{ %lag = $ctime - $2 echo -s Lag con $nick : %lag halt }

-----------------------------------------Restricciones y Moderadores en Eventos--------------------------------------


on 100:PART 100 o superior on +30:DEOP Únicamente 30 (ni inferior ni superior) on 5!:QUIT 5 o superior (excepto usted!) (como e normal exceptuand tu nick) on *:JOIN Todos (tambien vale el ^1) on @30:NICK 30 o superior (solo si usted es OP en el canal)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GRUPOS Y SU USO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Los Grupos son uny conjunto de ordenes y demás aplicaciones que pueden estar Activadas o Desactivadas segun el quiera el usuario :) , y que segun su estado (activo o no activo) , realizarán unas u otras o ninguna accción :) Digamos que son partes que funcionan cuando están activas y no molstan par nada cuando no lo están :) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;

Primero de todo diremos que los grupos se scriptean en el apartado de Remotes , y se activan mediante alias o Pop Ups :) La estructura general de un Grupo normal seria más o menos una cosa así : ;Ejemplo #NombreGrupo (Estado) Acción Evento Lo que el usuario quiera scriptear aqui ya sea un alias , una ocmando . un evento :) ... Ultima comando #NombreGrupo End Empezaremos por decir que el nombre del grupo puede ser cualquiera y no tiene que ver con lo que haya dentro. Dentro del grupo podemos scriptear cualquiero cosa de las que hemos visto hasta ahora y que veremos más adelante ya que son 100% compatibles Para aclararnos más pondremosu n ejemplo senzillo y claro y lo estudiaremos: ;Ejemplo #ShitList On on 35:JOIN:#: { kick $chan $nick Estás en mi ShitList } #ShitList End Veis ? Pues bien , esto lo unico que hará , es ; cuando entre un usuario al que hayamos dado previamente nivel 35 , será automaticamente kickeado del canal donde estemos (para mejorar esto mirar Tabla de Informacion


para el on @35.:JOIN.... ) si está activadoa osea On , y si está desactivada pues aunque entre ese usuario no hará absolutamente nada de nada :) Para jugar con el On y Off del grupos , con los Comandos alias; enable #grupo -> Activa un grupo disable #grupo -> Descativa un grupo Recordar que si ponemos el punto delante -> . <- , el comando no lo veremos y evitaremos ver en cada activacion/Desactivacion , ***Group Enabled or Disabled :)

Como en la mayoria de apartados , ahora al final vemos que es facil , pero aquí aun podemos explicar alguna cosillas más respecto a los identificadores exclusivos para los #Grupos :) , que son los siguientes:

Si queremos saber si un grupo está activo o no, deberemos usar el IDENTIFICADOR $group: $group(0) Da el número de grupos TOTAL (1,2,3,,,,6) $group(1) Da el nombre del primer grupo (si existe) $group(1).status Da el estado on/off del primer grupo (si existe) , o del grupo que pongamos 1,2,3....6 ) $group(#grupo) Da el on/off del grupo #grupo (Con el nombre del grupo a mirar en #Grupo jejej xdddd) $group(#grupo).fname Da el nombre del archivo script (el documento donde esta guardado) donde se encuentre el grupo suponiendo que existe :) existe $group(3).name Da el nombre del tercer grupo (si existe) Estos son exlcusivos de los $Group :) Estamos hablando de identificadores , osea que son de retorno , osea que los podremos ver como el $nick etc etc usando //echo -a etc etc nosotros mismos , aunque siendo identificadores tambien los podremos usar como comparativos en las CADENAS de IF-THEN-ELSE.....veamos un ejemplo.... ;Ejemplo (Esto en Remotes) on ^1:JOIN:#: { if ($group(#ake).status == On) { kick $chan $nick No puedes entrar a $chan } elzeif ($group(#ake).status == Off { halt } else { halt } } (Luego Esto) #ake On Podemos dejar el interiro del grupo vacio ya que solo nos interesa el estado del grupo On Off #ake End

Ahora ese evento , lo unico que hará es si el grupo #ake esta On (.enable #Ake ) pues kickeara a todo el que entre a un canal mientras que si está en Off , no hará nada :).Aquí el grupo solo hace una funcion de variable casi :)


Luego podremos poner los Enables/Disables en Popups etc etc para dar mayor interface : )

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; VENTANAS PERSONALIZADAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Bueno aquí explicaremos como crear las ventanas personalizadas a nuestro gusto y para nustras aplicaciones. Ventanas con fondo , ventanas para el notify , ventanas varias en fin... Vamos pro trabajo :)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;; Las ventanas que nosotros queremos crear parten todas del simple comando /window, junto con algunas otras órdenes identificadores y parametros relacionados entre sí que veremos a continuación, nos permite crear y manipular nuestras propias ventanas personalizadas. La sintaxis es: /window [-abcdelnorsx] @nombre [x y [w h]] [/orden] [popup.txt] [font [size]] (Manera senzilla sin todos las opciones) /window [-acdeEhkl[N]noprswx] [+bdelLmnstx] <@nombre> [x y [w h]] [popup] (Manera Completa) Existen dos grupos de parámetros que podemos emplear, por un lado [-acdeEhkl[N]noprswx] y por otro [+bdelLmnstx]. . todos ellos nos permiten jugar con las caracteristicas de las ventanas :o) No os asusteis al ver esto , que luego todo es mucho más fácil de lo que parece jeje Más adelante en las Tablas de windows , pondremos ejemplo de comandos con X identificadores y X parametros que crean ventanas muy diferentes , pero hasta que se actualize la Guia y se ponga eso , podeis ir probando las idferentes combinaciones para ver que os saliendo Puedes especificar los siguientes controles y parámetros tanto al crear una ventana nueva cómo al manipular una ventana ya existente. Hay que tener en cuenta que hay comando que van parejos , por ejemlpo , una ventana para ser activada (-a) tiene que haver sido creada y ocultada con sus X parametros, o viceversa , si haceis una ventana oculta y no la activais tampoco la vereis x`D [Primera Tanda de Parametros] -a = Activa la ventana. -b = Actualizar el scrollbar horizontal de la listbox -c = Cierra la ventana. -d = Abre la ventana como ventana de escritorio -e = Añade a la ventana un editbox o línea de escritura -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.


[Segunda Tanda de Parametros] +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.

Estos quizás sean los más importantes pero si quereis saber unos cuantos más (que saldrán en la guia actualizada) solo teneis que abrir el mIRC Help y mirarlos en el apartado de @windows @nombre Nombre de la ventana (hay que anteponer la @) x,y,w,h left top width height (Izquierda, arriba, ancho y alto) popup.txt nombre del archivo popup que se carga cuando sea necesario (tiene que ser un archivo de texto, no funcionan los archivos ini) /orden orden por defecto (se ejecuta cada vez que escribes texto en la editbox) font/size font Nombre y tamaño de la fuente que quieras utilizar en la ventana. (por defecto usará la misma fuente y tamaño que la ventana del status) Si quieres que la ventana personalizada utilice un menú en un script remoto, puedes especificar el nombre de la ventana cómo el nombre del popup en lugar del nombre del concreto nombre del archivo.txt del popup. Una vez tenemos una ventana @X creada , es questión de darle vida , ya sea con efectos y eventos Estas órdenes te permiten manipular las líneas de una ventana pesonalizada osea para poder pasar o quitar texto de una ventana al gusto propio x´´D /aline [C] @nombre texto añade la línea a la lista /cline [C] @nombre N Cambia el color de la Línea N al color C /dline [C] @nombre N[-N2] borra las Líneas desde la N hasta la N2 /iline [C] @nombre N text Inserta la Línea en N en la posición N /rline [C] @nombre N text reemplaza la Línea N /sline [C] @nombre N selecciona la línea N En @nombre siempre será el nombre con que creaste la ventana (/window @Prueba <- Este) El parámetro C es opcional y especifica el número de un color para la línea. También puedes especificar el control -s que selecciona la línea que acabes de añadir. Si quieres que las líneas que están seleccionadas sigan estándolos puedes añadir el control -a. Si especificas el control -h si minimizas la ventana el icono estará "highlighted" Ya sabemos como poner texto ne las ventanas. Una manera de poner imagenes puede ser con el boton derecho de la esquina superior izquierda de las ventanas con las opciones de BackGrounp , recordar medidas etc para k luego la ventana sea así siempre Los siguientes identificadores nos devuelven información de la ventana personalizada $window(N).x posicion izquierda de la ventana $window(N).y posicion superior de la ventana $window(N).w anchura $window(N).h longitud $window(N).state minimizada/maximizada/normal $window(N).titlebar Texto del la barra de título $line(@nombre,N) Nos da la línea N $sline(@nombre,N) Nos devuelve la línea N seleccionada (sólo listbox) $sline(@nombre,N).ln Nos devuelve el número de la línea N seleccionada (listbox) ;Ejemplo /window @prueba Esta orden crearía una ventana llamada @prueba con todos los valores por defecto /window -els @prueba2 10 10 algo.txt Esto creará una ventana con esas propiedades , alineacion medidas etc , y pasará el txt "algo.txt" por defecto encontrado en el $mircdir


;Lista de Ejemplillos Senzillos /Ventana1 { window -ale @1 50 50 200 100 @1 aline 12 @1 Sale el texto ? } ;Veamos un bucle para leer algo /Bucle { window -l30 @Bucle 100 100 500 150 @Bucle %i = 0 : PuntoA inc %i 1 if (%i > $findfile(Path_a_buscar,*.extension,0)) { goto PuntoZ } else { aline -l @Bucle $nopath($findfile(Path_a_buscar,*.extension,%i)) goto PuntoA } : fin unset %i } En path a buscar seria c:\ tal cual o $mircdirarchivos\sounds\ no sé a elegir En extension claramente el tipo que quieras buscar *.exe , *.wav etc Si tienes ganas de currartelo siempre hacer un alias con esto usando identificadores y variables para buscar distintas cosas con un mismo bucle etc etc , eso ya para tus ratos libres :o)

Ahora que tenemos nuestras ventanas ya echas (o por hacer) , podremos o añadiremos la opción a meterles pop ups a esas ventanas para que sea más dinámico trabajar con ellas y con más opciones en cara a darles funciones : ) Es mucho más fácil de lo que pueda parecer en un principio. Tan solo debemos en la sección remotes claro está introducir la palabra Menu seguido del nombre de la ventana y a continuación scriptear el pop up como uno cualquiera ;Ejemplo

Menu @1 { Menu General .Msg a todos los canales : { amsg $$?="¿Que msg?" } ..Salir de todos : { partall } Cerra $active : { window -c $active } } Ya tenemos un pop up para una ventana !! Ahora es questión de ir echandole imaginación al asunto y hacer virgerias para ello te daremos algunas ideas o sugerencias aquí :)


Una posiblidad seria al hacer ventanas con EditBox para poder escribir , seria usar inputs en esa ventana para que todo lo que escribieras hiciera una función o saliera por algun sitio :) y seria empezar una sequencia así : on 1:INPUT:@nombre_ventana:{ ... ... ... } Otra podria ser hacer un menu (como sale en el help del mIRC) que te diga las coordenadas donde pasa el raton etc etc (Ref: Mirar Help del mirc Sección @windows)

Ahora que hemos visto las ventanas normales vamos a hacer una visión rápida a lo que serán las Drawpic o ventanas de Imagen , que no son nada más que aquellas con imagenes de fondo , y cosas así , solo que aún sinedo ventanas tiene un trato especial por el simple echo de ser Drwapic's Windows xD (jiasjiasjias) La forma más más básica de crearlas es con : /window -p @2 10 10 200 200 @2 Así con el identificador -p (pic window) , aunque luego se le podrán añadir muchos más :PP Estas imagenes en lo que se caracterizan es que , si no sabemos muchos , nos haremos un lio , tenerlo claro , pero cuando las dominemos a base de práctica y cabreos (ya os lo adelanto jajaja) veremos que podemos hacer cualquier dibujo , cenefa y demás virguerias solo con comandos , sin necesidad de fotos etc.. Ahora haremos un listado de los comandos más usados y que mejor uso harán de estas ventanas: /drawdot [-hnri] @nombre <color> <tamaño> <x y> [x y ...] Dibuja un punto del color indicado ( de la paleta de mIRC -> Ctrl + K || 0-15 ) con un diametro ( tamaño en pixels ) y en las coordinadas x y dentro ventana de imagen. Hay que tener en cuenta que donde demos las coordenadas en cualquier tipo de dibujo en drawpic's , será donde tendrnán el vertice de inicio o el inicio de la figura , eso con unas cuantas pruebas ya lo vereis , vale más una imagen que 1000 palabras x´´D Las coordenadas en general funcionan igual que en las otras ventanas así que sólo explicaremos las coordenadas [-hnri] -h Hará que el icono de la ventana parpadee en el momento de dibujarse el punto -n Hace que la ventana no se actualice inmediatamente , esto más que nada puede ser útil para hacer X cambios en una ventana antes de hacer los dibujos encima (esto seria en una sequencia de comando dentro de un alias sino no tiene función alguna :)) -r Indica que el "color" esta especificado en formato RGB (Red,Green,Blue)/(Rojo,Verde,Azul). en caso de que usemos este parametro tendremos que utilizar el identificador: $rgb(rojo,verde,azul) por ejemplo: $rgb(0,200,100) -i Dibujara el punto en modo inverso (color blanco y fondo negro como efecto eclipse) ;Ejemplo /drawdot -r @2 $rgb(255,23,45) 5 10 10 12 10 Este ejemplo dibujara 2 puntos en la ventana @2 del color definido por el valor $rgb(255,23,45) , con un diametro de 5 pixels jeje


/drawline [-hnri] @ventana <color> <size> <x y> <x y> [x y...] Dibuja una línea del color <color>, que tenga un grueso de <size> pixels y que vaya desde las primeras coordinadas <x y> que especifiquemos hasta las segundas <x y>. Se pueden especificar opcionalmente más parametros <x y> para hacer una línea que pase por los puntos definidos. Los parámetros [-hnri] hacen exactamente lo mismo que en el comando drawdot /drawline @2 8 10 20 20 20 150 Este ejemplo dibujará una linea en @2 de color amarillo (8) y grueso de 10 pixels, que irá desde las coordenadas x(20) y(20) hasta x(20) y(150) /drawrect [-hnrifec] @nombre <color> <size> <x y w h> [x y w h..] Dibuja un rectángulo del color <color> cuyo borde tenga un gueso de <size> pixels, cuya esquina superior izquierda se encuentre en las coordinadas <x y> especificadas, y que mida <w> pixels de largo por <h> de alto. Lógicamente si incluimos un segundo juego de parámetros [x y w h] creará un segundo rectangulo con esas características y así succesivamente :o) Ademas podemos añadir cierto parametros al drawrect extras como son: -f Una vez dibujado el rectángulo lo rellena con el color que hayamos especificado para el borde, si no especificamos este parámetro el rectangulo por dentro será del color del fondo. -e Dibuja una elipse en lugar en un rectángulo... ¿que como dibuja una elipse si lo que le estamos dando son las coordenadas de un rectangulo? Pues simplemente dibuja la elipse que cabría perfectamente dentro de ese rectángulo que especificamos con <x y w h>. -c Hace que el borde del rectangulo sea del color que le hemos especificado, pero transparente ;Ejemplo /drawrect -fr @2 $rgb(1,2,3) 10 50 50 100 150 Este ejemplo dibujará un rectángulo de color $rgb(1,2,3) , ya que le hemos especificado el parámetro -r , que estará además relleno con ese color, y su esquina superior izquierda estará en la posición x(50) y(50) y medirá 100 pixels de largo por 150 de alto. /drawfill [-hnris] @nombre <color1> <color2> <x y> [archivo.bmp] Rellenará el área en el que esté el punto <x y> con el color <color1>. Podemos especificar que en vez de rellenar el área con un color se haga con una imagen BMP que tengamos ;Ejemplo /drawfill @2 1 4 30 30 c:\imagen.bmp Esto rellenará la ventana con la imagen.bmp en esas coordenadas :o) /drawtext [-hnrpboc] @nombre <color1> [color2] [Tipo_letra] [Tamaño_letra] <x y [w h]> <texto> Inserta un texto del color <color> en la ventana que especifiquemos y en las coordinadas <x y>. Podemos añadir opcionalmente la longitud y altura del texto (parametros [w h]), esto hará que si el texto que escribimos es demasiado largo y no cabe en el rectángulo que hemos indicado con [w h] aparezca solo el trozo que quepa.


El parámetro [color2] es opcional y sirve para especificar el color del fondo del texto que escribamos. Los parámetros [Tipo letra] y [Tamaño letra] también son opcionales e indican el nombre del tipo de letra a usar (escribirlo todo junto, sin espacios) y su tamaño en puntos. [-hnr] tienen la misma funcion que en anteriores comandos. En cuanto a los otros parámetros: -p Nos permite el uso de controles de color (ctrl + k) , negrita (ctrl + b) y subrayado (ctrl + u) dentro del texto. -b Indica que se va a especificar el parámetro [color2] como color de fondo para el texto. Si no usamos este parámetro, [color2] deberá ser omitido -o Indica que el tipo de letra elegido debe ser en negrita -c Indica que los parámetros opcionales [w h] van a ser especificados ;Ejmeplo /drawtext -b @2 4 9 Verdana 14 30 40 Prueba x´´D /drawcopy [-ihnt] @nombre [color] <x y w h> @destino <x y [w h]> Copia parte de una ventana de imagen a otra parte de la ventana o a otra ventana. Si especificamos los parámetros [w h] la seccion de la imagen que hayamos copiado será ensanchada/estrechada a ese tamaño (el especificado por [w h]) en la ventana de destino. Fíjeses que si lo que quiere es copiar un trozo de una imagen desde una seccion de una ventana a otra sección de la misma ventana, @nombre y @destino serán la misma ventana. Los parámatros [-ihn] son los mismos que explicamos en /drawdot . y en cuanto a -t indica que hemos especificado el valor [color] como un valor $rgb equivalente al color que queremos que sea transparente en la imagen que hayamos copiado. ;Ejemplo /drawcopy @2 0 0 100 100 @3 10 10 Esto copiaria el contenido de la ventana @2 a la ventana @3 /drawsave @2 <foto.bmp> Guarda la imagen de fondo actual de la ventana @2 como un archivo de nombre <foto.bmp> ;Ejemplo /drawsave @2 fondo2.bmp Esto guardaria de fondo en la ventana @2 la imagen fondo2.bmp /drawscroll [-hn] @nombre <x> <y> <x y w h> Desplaza la región de la ventana comprendida en el rectángulo <x y w h> (recuerde: x - posición x de la esquina superior izquierda, y - posición y de la esquina superior izquierza, w - longitud del rectángulo, h altitud del rectangulo, todo en pixels) <x> pixels en el eje X y <y> pixels en el eje Y. Los valores de <x> e <y> pueden ser un número negativo si queremos indicar que la región se desplaze hacia la izquierda o hacia abajo respectivamente. [-hn] son los mismos que en el comando drawdot ;Ejemplo /drawscroll @2 10 20 50 50 200 200 Este ejemplo desplazará la región de la ventana @2 contenida en el rectángulo “50 50 200 200” 10 pixels hacia la derecha y 20 hacia arriba


/drawpic [-ihntsc] @nombre [color] <x y [w h]> [x y w h] <foto.bmp> Y llegamos sin duda al comando más útil de todos los de las ventanas de imagen, con este comando podremos cargar una imagen cualquiera <foto.bmp> (con formato .bmp) en una ventana, en las coordinadas que indiquemos <x y> . Si indicamos la longitud y altitud [w h] la imagen sera ensanchada/estrechada a ese tamaño. El parámetro opcional [x y w h] lo usaremos para indicar qué parte del archivo <archivo.bmp> queremos mostrar, útil por si tenemos un bmp grande con varias imágenes y queremos mostrar solo una de ellas. [-ihn] corresponden a los parámetros explicados en drawdot. Otros parámetros que acepta este cmando son: -t Indica que hemos especificado el valor [color] con el fomato $rgb(N,N,N) donde N es un numero comprendido entre 0 y 255, y ese color será tratado como transparente en el archivo que queramos mostrar -s Indica que hemos especificado los parámetros [w h] para ensachar/estrechar la imagen. -c Indica que la imagen debe ser puesta en la memoria caché, esto hace que si en la misma sesión quisieramos volver a hacer uso de esa imagen, el tiempo de carga sería muy inferior. La caché puede almacenar hasta un máximo de 30 imágenes, a partir de ese número empezaran a reemplazarse las que lleven más tiempo sin usarse por las más nuevas ;Ejemplo /drawpic -t @2 $rgb(0,0,0) 0 0 $mircdirfoto.bmp En la sección de identificadores se dará un repaso a los que aquí existe pero por ahora daremos una rapida visión a unos pocos : $mouse.<propiedad> $mouse.win : Devuelve el nombre de la ventana sobre la que se encuentra el raton. $mouse.x : Devuelve la posicion x , relativa a la ventana de imagen, del raton. $mouse.y : Devuelve la posicion y , relativa a la ventana de imagen, del raton. $mouse.mx : Devuelve la posicion x relativa a la ventana principal del mIRC. $mouse.my : Devuelve la posicion y relativa a la ventana principal del mIRC. $mouse.dx : Devuelve la posicion x relativa al escritorio. $mouse.dy : Devuelve la posicion y relativa al escritorio. $rgb(nº,nº,nº) Este identificador ya lo hemos usado en la explicación de los comandos, y sirve para especificar un color, pero con más detalle. Es decir que en vez de usar el color con un número del 0 al 15, los indicaremos suministrando los valores de rojo, verde y azul del color(RGB). Si no controlas el RGB no te preocupes siempre puedes poner el color el el formato habitual (numero del 0 al 15). $getdot(@nombre,x,y) Devuelve el valor RGB del color del punto definido por los parámetros ‘x’ e ‘y’. $inrect(x,y,x2,y2,w,h) Devuelve $true si el punto definido por x,y esta dentro del rectángulo definido por x2,y2,w,h . En caso contrario devuelve el valor $false. $height(texto,tipo_letra,tamaño) Devuelve la altura en pixels del texto especificado y con un tipo de letra y tamaño. Recuerda que el tipo de letra lo haa de escribir todo junto, por ejemplo: TimesNewRoman. $pic(archivo.bmp) Este identificador se puede usar de 3 formas: $pic(archivo.bmp).size : Devuelve el tamaño del .BMP especificado. $pic(archivo.bmp).height : Devuelve el tamaño del .BMP especificado. $pic(archivo.bmp).width : Devuelve el tamaño del .BMP especificado.


$width(texto,tipo_letra,tamaño,B,C) Devuelve la longitud en pixels del texto especificado y con un tipo de letra y tamaño. Si el parámetro ‘B’ es diferente de ‘0’ se tomará el tipo de letra en negrita. Si el parámetro ‘C’ es diferente de ‘0’ se ignorarán el espacio ocupado por los controles de color, negrita y subrayado.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; TABLAS DE INFORMACION;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, Aquí proporcionaremos una especie de Anexo con ocmandos y utilidades que reforzarán las ya vistas durante la guia : ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;; --------------------- Lista de Identificadores de uso en Alias y Remotes de Ámbito General -------------------

Grupo de Identificadores de tiempo y fecha $asctime(N) Nos da el valor de $ctime con un formato de fecha. (también el valor del ping) $ctime Te dice el número de segundos que han pasado desde las 00:00:00 GTM del 1 de Enero de 1970. $date nos dice la fecha día/mes/año. Si quieres el formato americano para las fechas puedes usar $adate, $fulldate (Wed Mar 25 21:41:02 1998 $day Nos dice el día de la semana, (Lunes, Martes) eso si, en inglés. $duration(segundos) Transforma números cómo 123456 a días horas y minutos, por ejemplo: 1 day 10 hrs 17 min 36 secs. $fulldate Nos dice la fecha con el formato Wed Mar 25 21:41:02 1998 $idle Te da el tiempo de inactividad, igual que cuando haces un userinfo o un finger. $ltimer Nos dice qué número tenía el útlimo timer que pusimos en marcha con la orden /timer $online Te dice el número de segundos que han pasado según tu "online Timer" (Es el que sale en la bárra del título de la ventana del status xDDDD) $ticks Devuelve el número de "tics" desde que tu sistema operativo se puso en marcha por primera vez. $time te dice la hora que tengas en tu pc. $timer(N) Nos da la id del timer número N en la lista de timers. Propiedades: com, time, reps, delay, type $timer(0) Nos dice el Número total de timers activos en ese momento. $timer(1) nos da la id del primer timer en la lista. $timer(2).com Nos dice la orden del primer timer de la lista $timer(3).type Nos dice si el tercer timer es del tipo online u offline. $timestamp Nos da la hora en formato XX:XX ;-------------------------------------------------------------------------------------------------------------------------------

Identificadores de archivos y directorios; $alias(N/archivo) Nos devuelve el nombre del archivo alias que hayas cargado en N lugar (el primero el segundo el tercero que cargaste) Si especificas el nombre de un archivo, nos dará $null si el archivo no ha sido cargado. $alias(0) Nos da el número de archivos alias cargados en el programa. $alias(2) nos dice el nombre del segundo archivo de alias que cargaste. $alias(moo.txt) Nos dice moo.txt si el archivo está cargado o $null si no lo está. $dir, $file y $hfile Te permiten seleccionar el nombre de un archivo que se insertará en el alias. El $dir hace emerger una caja de diálogo completa de directorios y archivos, mientras que el $file simplemente nos


muestra un cuadro de díalogo rápido de archivos. El $hfile es igual que $file pero lista los archivos horizontalmente. $dir[="Select a File"] path y archivo $file[="Select a File"]path y archivo $hfile[="Select a File"]path y archivo Veamos un ejemplo, en un popup ponemos: Musica: { splay $file="elige uno" c:\mirc\sounds\midis\*.mid } Como vereis este efecto es aplicale a todos o la mayoria y muy facil de entener

################################################################################# # No utilices estos identificades con el /dcc send porque ya tiene su propia caja de diálogo de archivos # #################################################################################

$exists(archivo) Mira a ver si el susodicho archivo existe, te da $true si efectivamente existe o $false, en caso contrario. $findfile(dir,tipoDeArchivo,N) Busca el archivo del tipo especificado número N en el directorio especificado (y en sus subdirectorios) y te devuelve el "path" completo y el nombre del archivo si es que lo encuentra: $findfile(c:\mirc,*.exe,1) Si especificas una @ventana personalizada, en lugar del parámetro N, mIRC te listará los resultados en la susodicha ventana. $getdir Te dice cual es el directorio que has especificado en las DCC Options para guardar los archivos que te manden a través de IRC. $getdir(tipoDeArchivo) Te dice el directorio en el cual guarda los archivos del tipo especificado que has recibido por dcc. Por ejemplo $getdir(*.txt) te daría c:\mIRC\download\textos $lines(archivo) Te dice el número total de líneas que tiene el archivo especificado. $lof(archivo) Te dice cuantos bytes tiene el archivo especificado. $logdir nos dice en qué directorio se están guardando los logs, tal y cómo lo hayas especificado en la sección "loggin" de las Opciones del mIRC <../../intermedio/configurar/loggin.html> $mididir te dice el directorio que has especificaso en los Sound Request para guardar los archivos tipo .mid. $nofile(archivo) Nos dá el "path" sin el nombre del fichero, puede ser útil si por ejemplo no te acuerdas de dónde has puesto el fichero pepe.txt pero sabes que está en el mismo directorio que juan.txt $nopath(archivo) Nos da el nombre del fichero sin el "path" si es que lo tiene. $mircdir Te dice el directorio dónde tienes guardado el mIRC. (donde esta exe , que usado en una ruta , al empezar por $mircdircarpeta1\archivo seria ocmo poner c:\blablabla\donde_Esta_el_mirc_exe\Carpeta1\Archivo , fijarse que en al 1er espacio $mircdirCarpeta1 NO HAY \ ) $mircini Te dice el nombre del archivo ini principal, que suele ser mirc.ini. $read [-nl# -stext]archivo Este es un identificador curioso, cogerá una línea al azar del archivo especificado e insertará esa línea en el alias. La línea puede contener sólo texto, pero también más órdenes (para liarlo más todavía) También tienes el identificador $!read que el igual que el anterior, salvo que no se tiene en consideración la primera vez que se pone en marcha la rutina del alias. lo que te permite usar una orden /timer si quieres que el $read se re-evalúe cada vez. En el archivo en el que tengas las líneas de texto tienes que especificar en la primera línea el nº total de líneas de texto que hay en ese archivo, de lo contrario, el mIRC tendría que contar primero cuántas líneas tiene el archivo lo que ralentizaría la operación. En archivos pequeños no pasa nada, pero si son archivos grandes, el retraso puede ser muy considerable. ;Ejemplo, ( supongo que tienes un archivo que se llame LoL.txt , que sería así ) (Dentro del TxT)-----------LoL1 Lol2 LoL3


(Fin del Txt)----------------Para utilizar esta orden: /chiste /say $read c:\mIRC\chistes.txt /kick # $1 $read kicks.txt cogería una línea al azar del archivo kicks.txt y la usaría cómo mensaje del kick. Cogería una línea al azar de las que tienes en el archivo. /chiste /say $read -2 c:\mIRC\chistes.txt /say $read -sEstupido LoL.txt Buscaría en el archivo LoL.txt una línea que comenzase por Estupido y la insertaría en la orden aleatorio :) El -n se usa cuando en esa línea de texto tenemos una orden y queremos que el mIRC no ejecute esa orden, y la trate cómo si fuera simple texto. $readini [-n]{inifile} {section} {item} Lee la información de cualquier archivo .INI, y la pone en la posición indicada en la orden (por ejemplo un alias. Funciona junto con /writeini que lo que hace es escribir en los archivos .INI. Veamos un ejemplo, vamos a crear un alias que nos diga nuestro nick utilizando este identificador. En la sección de alias pon: /nombre /echo $readini mirc.ini mIRC nick El ini File , es el archivo.ini , mientras que el Section es la palabra que va entre [...] , y por ultimo el item es la palabra delante del = dentro de un grupo :) Cuando teclees /nombre te dirá tu nick y para ello lo leerá del archivo mirc.ini El -n se usa cuando en esa línea de texto tenemos una orden y queremos que el mIRC no ejecute esa orden, y la trate cómo si fuera simple texto. $script (N/archivo) Te da el nombre del script que hayas cargado en N lugar, y te da $null si especificas un archivo y no está cargado. $script(0) Te dice cuantos scripts tienes cargados $script(2) Te dice el nombre del script que hayas cargado en segundo lugar. $script(scriptejo.txt) Te $null si el archivo no está cargado, y scriptejo.txt si lo está. $wavedir te dice el directorio que has especificado en los Sound Requests para guardar los archivos .wav ;-------------------------------------------------------------------------------------------------------------------------------

Identificadores de nicks y de IPs $ADRESS(nick,type) Busca en la lista interna de direcciones la dirección asociada con el nick especificado. $adress(nick,1) devuelve nick!userid@domain.host Si la lista interna de direcciones no tiene un nick similar, devuelve $null $comchan(nick,N) Devuelve los nombres de los canales en los que estáis tanto tú cómo el nick especificado. $comchan(nick,0) Devuelve el número total de canales comunes. $comchan(nick,1) Devuelve el primer canal cómún que encuentre. $ial(mask,N) Devuelve la dirección N que equivalga la máscara en la lista interna de direcciones.Propiedades:nick, user, host addr $ial(*!*@*virtual.es,0) devuelve el número total de direcciones en la lista que se correspondan exactamentisimamente (xDDDD) con *!*@*virtual.es $ial(*!*@*virtual.es,3) Devuelve la tercera dirección que encuentre en la lista que se correspondaexactamentisimamente (xDDDD) con *!*@*readysoft.es $ial(*!*@*.es,4).nick Devuelve el nick de la cuarta dirección que encuentre que termine por .es $ial(*!*@*.es).user Devuelve el userid de la cuarta dirección que encuentre que termine por .es Para mirar todas las direcciones en la lista interna usa: $ial(*,N) $ialchan(mask,#,N) Devuelve la N dirección en el canal correspondiente que equivalga a la dirección dada en la lista interna de direcciones. $level(address) Busca una dirección que corresponda en la lista de usuarios remota y nos dice su nivel $level(*!*@*readysoft.es) devuelve 100 $link(N) Nos devuelve la N línea de la ventana de links. Propiedades: addr, ip, level, info $link(0) NOs devuelve el número total de links en la ventana delinks $link(1) nos devuelve la dirección del N server en la ventana de servers


$mask(address,tipo) Devuelve la dirección con una "mask" especificada por el tipo: $mask(nick!khaled@mardam.demo.co.uk,1) devuelve *!*ykhaled@mardam.demo.co.uk $masck(nick!khaled@mardam.demo.co.uk,2) devuelve *!*@mardam.demo.co.uk Los tipos disponibles son: tipo 0: *!userid@info53.redestb.es tipo 1: *!*userid@info53.redestb.es tipo 2: *!*@info53.redestb.es tipo 3: *!*userid@*.redestb.es tipo 4: *!*@*.redestb.es tipo 5: Nick!userid@info53.redestb.es tipo 6: Nick!*userid@info53.redestb.es tipo 7: Nick!*@info53. redestb.es tipo 8: Nick!*userid@*.redestb.es tipo 9: Nick!*@*. redestb.es Estos tipos de máscaras estandard también se usan en otras órdenes e indentificadores. $me Te devuelve el nick que estés usando en ese momento. $nick(#,N) Te devuelve el N nick en la lista de nicks del canal que hayas especificado. $nick(#canal,0) te devuelve el número total de nicks en el canal especificado. $nick(canal,1) devuelve el primer nick en la lista del canal. $nopnick(#,N) Devuelve el N nick de la lista del canal de entre los que no tienen estatus de operador: $nopnick(#canal,0) te devuelve el número total de usuarios sin Op en el canal especificado. $nopnick(#canal,1) Te dice el primer nick de la lista que no tenga estatus de operador. $notify(N) Te devuelve el N nick de la lista de notifies que estén en ese momento en IRC. $notify(0) te devuelve el número total de nicks conectados de los que están en tu lista de notify. $nvnick(#,N) Te devuelve el N nick en el canal de entre los que no tienen voz. $nvnick(0) te dice el número total de usuarios sin voz en el canal. $nvnick(1) te dice el primer usuario sin vos de la lista del canal. $opnick(#,N) Te dice el N nick con estatus de operador en el canal. $opnick(#canal,0) Te dice el número total de operadores en el canal. $opnick(#canal,1) Te da el primer nick que encuentre en la lista del canal con estatus de operador. $snicks Te devuelve una cadena con los nicks que tengas seleccionados en ese momento en la lista del canal nick1,nick2,nick3....nickN $snick(#,N) Te devuelve el nick N seleccionado de la lista del canal. $snick(#canal,0) te devuelve el número total de nicks seleccionados en el canal. $snick(#canal,1) Te devuelve el primer nick seleccionado de la lista del canal. $snotify Te devuelve el nick que esté seleccionado en la lista de notifys $vnick(#,N) Te devuelve el N nick con voz del canal especificado. $vnick(#canal,0) te da el número total de usuarios con voz en el canal. $vnick(#canal,1) te devuelve el primer nick con voz en la lista del canal. :------------------------------------------------------------------------------------------------------------------------------

Identificadores de texto y números $abs(N) Nos devuelve el valor absoluto de N $abs(5) devuelve 5 $abs(-5) devuelve 5 $asc(C) nos da el número asci para el caracter C $asc(A) devuelve 65 (si tecleas alt+65 obtendrás una A mayúscula) $asc (*) devuelve 42 $calc(operaciones) Te da el resultado de las operaciones matemáticas especificadas. Este identificador te permite realizar múltiples operaciones complejas fácilmente. Por ejemplo: ;Ejemplo


$calc(3.14159 * (2^%x % 3) - ($tick/(1000 + 1))) $chr(N) Devuelve el caracter que corresponda al asci número N $count(string,substring) Te dice cuantas veces está contenido el substring dentro del string, veamos: $count(Olla,la) devuelve 1 porque en la palabra olla sólo hay un "la". $count(olla,l) devuelve 2 porque en olla hay dos l $int(N) Devuelve la parte entera de un número decimal, sin redondearlo, veamos $int(3.14159) devuelve 3 $left(text,N) Devuelve N número de caracteres empezando desde la izquierda del texto. $left(kamasutra,4) devuelve Kama $len(text) Devuelve la longitud del texto, el número de caracteres. $len(#hola) devuelve 5 $lower(text) Devuelve el texto en minúsculas. $lower(HOLA) devuelve hola (en minusculas) $mid(text,S,N) Devuelve N caracteres empezando desde la posición S, Veamos $mid(ishellet,3,4) devuelve hell $pos(string,substring) Devuelve un número indicandonos la posición del substring dentro del string $pos(hello,el) Devuelve 2 $pos(hello,la) devuelve $null $longip Convierte una dirección ip en un valor largo y viceversa. $longip(194.224.160.141) devuelve 3269501069 $longip(3269501069) devuelve 194.224.160.141 $rand(v1,v2) Funciona tanto con números cómo con letras. Si le das números cómo valores de v1 y v2 te devolverán un número al azar entre v1 y v2. Si le das letras cómo valores de v1 y v2 te devolverá una letra al azar entre v1 y v2. $rand(a,z) te devolverá cualquier letra entre la a y la z $rand(A,Z)te devolverá cualquier letra entre la A y la Z $rand(0,N) Te devolverá cualquier número entre 0 y N. $remove(string,substring) Borrará el substring del string, veamos $remove(abcdefg,cd) devuelve abefg $replace(string,subtring,replacement) Sustituye el substring contenido en el string con lo que le indiquemos. Veamos. $replace(cama,m,s) Devuelve casa $right(text,N) Devuelve los N caracteres empezando por la derecha del texto $right(othello,5) devuelve hello $round(N,D) Redondea el número decimal especificado hasta el D decimal que le indiques, por ejemplo: $round(3.14159,2) devuelve 3.14 $strip(text,N) Devuelve el texto sin color, ni negrita ni subrayado ni nada de nada $upper(text) Devuelve el texto en mayúsculas $upper(brbr) devuelve BRBR

:------------------------------------------------------------------------------------------------------------------------------

Identificadores de Simbolos (tokens) $addtok(text,token,C) añade un símbolo al final de un texto, pero sólo si no está ya en el texto. $addtok(a.b.c,d,46) devuelve a.b.c.d $addtok(a.b.c.d,c,46) devuelve a.b.c.d El parametro C el caracter ascii que separa los símbolos. $deltok(text,N-N2,C) Borra el simbolo N del texto.


$deltok(a.b.c.d,3,46) devuelve a.b.d $deltok(a.b.c.d,2-3,46) devuelve a.d You can specify a negative value for N. $findtok(text,token,N,C) Devuelve la posición del símbolo N coincidente con el texto. $findtok(a.b.c.d,c,1,46) devuelve 3 $findtok(a.b.c.d,e,1,46) devuelve $null Si especificas N con un valor cero, te devuelte el número total de símbolos coincidentes. $gettok(text,N,C) Devuelve el símbolo N en el texto. . $gettok(a.b.c.d.e,3,46) devuelve c $gettok(a.b.c.d.e,9,46) devuelve $null También puedes verificar un rango de símbolos. $gettok(a.b.c.d.e,2-,46) da el segundo símbolo entre b.c.d.e $gettok(a.b.c.d.e,2-4,46) devuelve el símbolo 2 a través de 4 b.c.d N admite un valor negativo. $instok(text,token,N,C) Inserta el símbolo en la posición N, incluso si el símbolo ya existe. $instok(a.b.d,c,3,46) devuelve a.b.c.d $instok(a.b.d,c,9,46) devuelve a.b.d.c Puedes especificar un valor negativo para N. $istok(text,token,C) devuelve $true si el simbolo existe, en otro caso devuelve $false. $matchtok(tokens,string,N,C) Devuelve los simbólos que contentan la cadena especificada.. $matchtok(uno dos tres, e, 0, 32) devuelve dos $matchtok(uno dos tres, e, 2, 32) devuelve tres Si especificas N con un valor cero, te devuelve el número total de símbolos. $numtok(text,C) Devuelve el número de simbolos en el texto. $puttok(text,token,N,C) Sobreescribe el simbolo N con uno nuevo. $puttok(a.b.c.d,e,2,46) devuelve a.e.c.d N admite un valor negativo. $remtok(text,token,N,C) Quita el símbolo N del texto. $remtok(a.b.c.d,b,1,46) devuelve a.c.d $remtok(a.b.c.d,e,1,46) devuelve a.b.c.d $remtok(a.c.c.d,c,1,46) devuelve a.c.d $reptok(text,token,new,N,C) Sustituye el símbolo de la posición N comparado con un nuevo símbolo. $reptok(a.b.c.d,b,e,1,46) devuelve a.e.c.d $reptok(a.b.c.d,f,e,1,46) devuelve a.b.c.d $reptok(a.b.a.c,a,e,2,46) devuelve a.b.e.c $sorttok(text,C,ncr) Ordena los símbolos del texto. $sorttok(e.d.c.b.a,46) devuelve a.b.c.d.e $sorttok(1.3.5.2.4,46,nr) devuelve 5.4.3.2.1 Por defecto se trata de un órden alfabético, sin embargo se puede espcificar; n = numérico; c = prefijo de canal o de nick, r = orden inverso. $wildtok(tokens,wildstring,N,C) Devuelve el Símbolo N que coincida con el comodín de la cadena. $wildtok(uno dos tres, t*, 0, 32) devuelve dos $wildtok(uno dos tres, t*e, 1, 32) devuelve tres


Identificadores de ventanas $active te dice la ventana que tengas activa en ese momento. $chan(N/#) De devuelve información sobre los canales en los que estás. Propiedades: topic, mode, key,limit. Si especificas un número N, te devuelve el nombre del canal N $chan(0) te devuelve el número de canales que tengas abiertos. $chan(1) te devuelve el nombre del primer canal que hayas abierto. $chan(2).key te dice la clave del segundo canal que tengas abierto. Si especificas el nombre de un canal, obtendrán información sobre ese canal pero sólo si estás en él. $chan(#canal).mode te devuelve los modos del canal especificado. $chat(N/Nick) Nos devuelve el número de la N ventana de dcc que hayas abierto.Propiedades:ip, status. $chat(0) te devuelve el número totoal de chats (DCC's) que tengas abiertos $chat(1) Te devuelve el nombre de la ventana de chat que hayas abierto primero. $chat(1).ip Te dirá la ip del la persona con la que mantengas el segundo chat $fserv(N/Nick) Te devuelve el número N de fserve que tengas abierta. Propiedades: ip,status, cd $fserv(0) Te dice el número total de fserves que tengas abiertos $fserv(1) Te devuelve el nick del primer fserve $fserv(1).cd te devuelve el directorio actual del primer fserve. $get(N/nick) Te devuelve el nick y el nombre del archivo del N dcc get que tengas abierto. Propiedades: ip, status, file, size, rcvd, cps, pc , esto quiere decir que detrás podremos especificar cualquier tipo de estos de la siguiente manera $get(N/nick).status o $get(N/nick).rcvd $get(0) devuelve el numero total de dcc gets abiertos. $get(2) devuelve el nick del segundo dcc abierto. $get(2).rcvd Devuelve el número total de bytes recibidos en el dcc tget especificado. $get(2).cps Nos devleve el ritmo por segundo del dcc get en cuestión. $get(3).pc Nos develve el porcentaje de la transferencia del dcc get especificado. $query(N/nick) Te devuelve el nick del N query que tengas abierto. Propiedades: address. $query(0) te devuelve el número que querys que tenas abiertos. $query(2) te devuelve el número del segundo query que hayas abierto. $query(N).address devuelve la dirección del N query abierto, sin embargo, esta dirección no está disponible hasta que el usuario te haya mandado al menos un mensaje. $send(N/nick) Te devuelve el nick y el nombre del archivo del N dcc send que tengas abierto. Propiedades: ip, status, file, size, sent, ira, cps, pc. de la misma manera que antes ya vimos : ) $ip Se refiere a tu dirección ip. $server se refiere al servidor que estés usando. $server(N) Te da la dirección el N servidor que tengas en tu lista de servidores. Propiedades: Desc (descripción), port (puerto), group (grupo) $server(0) te da todos los servidores que tengas en la lista. $server(2) te da la dirección del segundo servidor de la lista. $server(2).desc Te da la descripción del segundo servidor de la lista. $server(3)port Te devuelve los puertos disponibles del tercer servidor de la lista. l(3).group da el grupo del tercer tema en la lista :o)

Otros identificadores $away informa de si estas away ($true) o si no lo estás ($false) # identificador de canal (como $chan) Este identificador siempre contendrá el nombre del canal en el que ejecutes el alias. Es importante, porque muchas órdenes cómo /MODE exigen que especifiques el nombre de un canal. Veamos unos ejemplos de cómo funciona: /deop /mode # -o $1 $me resuelve a tu nick Siempre se refiere al nick que estés usando en ese momento


$url(0) Devuelve el número total de cosas que tengas guardadas en la url list $url(2) Devuelve la segunda dirección que tengas dada de alta en la lista de urls $url(2).desc Devuelve la descripción de la segunda dirección que tengas en la lista. $url(3).group Devuelve el grupo al que pertenece la tercera dirección. $usermode Te devuelve el usermode, es decir, te dice si estás invisible, si recibes los wallops (mensajes que se pasan entre sí los ircops) para verlos teclear /mode TuNick +w $version Te dice la versión de mIRC que estés usando. $?*!="message" Te permite pedir información de un usuario, mediante un cuadro de diálogo. //echo $?="¿Cómo te llamas?" Si el usuario introduce su numbre en el cuadro de diálogo y pulsa OK, $? tendrá el valor de lo que el usuario haya escrito. Si el usuario pulsa Cancel, $? no tendrá ningún valor. //echo $?*="¿Cual es tu contraseña?" En este caso, $?* hace que el texto que usuario escriba en el cuadro de diálogo, aparezca cómo *** para evitar que se vea lo que está escribiendo. //echo $?!="¿Sigo?" En este caso, emerjerá un cuadro de diálogo de SI/no, si el usuario pulsa Si, devuelve $true, si el usuario pulsa NO, devuelve $false. Si el mensaje es muy largo, el cuadro de diálogo se extiende verticalmente para mostrarlo entero. También puedes hacer que el texto aparezca ven varias líneas, utilizando el identificador $crlf para separar las líneas. //echo $?="Esta es la primera línea. $crlf $+ Y ésta, la segunda." Estos comandos veremos que serán utiles a la hora de pedir una confioguracion inicial al usuario de un script o addon con actividad por parte del usuario :) $ansi2mirc(text) devuelve el texto con los códigos ANSI convertidos en códigos de color del mIRC. $auto devuelve $true si el auto-op está activo, en caso contrario, $false. $away devuelve $true o $false dependiendo de si estás o no away if ($away) say no toy (Away $true) | else say Estoy (away $false) $bits devuelve 32 para el mIRC de 32 Bits (W9X), o 16 para el mIRC de 16 bits (W3X) $cb devuelve los primeros 256 caracteres del portapapeles. $cb(N) devuelve Líneas delimitadas del texto del portapapeles. Propiedades: len $cb(0) rDevuelve el número de líneas que hay en el portapapeles $cb(0).len Devuelve el largo (lenght) total de todas las líneas de portapapeles $cb(1) Devuelve una línea del portapapeles $cb(1).len Devuelve el largo de 1 una línea del portapapeles. $colour(name) devuelve el número del color que especifiques, por ejemplo $colour(action text). Si no especicas el nombre complete, te devuelve lo primero que le cuadre, por ejemplo $colour(action) $cr devuelve un retorno de carro, igual que $chr(13) $creq devuelve la configuración de la orden /creq en el cuadro de diálogo de las opciones del dcc $crlf devuelve la combinación retornodecarro/piedelínea. $dccignore devuelve $true si ignorar tipos, está activado en el menú de Carpetas DCC, de otra manera devuelve $false. $dccignore(N/fichero) Devuelve la posición N de un tema en la lista de dcc ignorados del menú Carpetas DCC. Si n es cero, devuelve el número de temas en la lista, si no devuelve la posición N del tema en la lista. Si se especifica un fichero, devuelve $true si está en la lista, y si no devuelve $false. $dccport da el puerto usado por el Servidor DCC. $ddename devuelve el nombre actual del servicio dde en uso por el DDE Server. $dll(nombre.dll, procname, datos) da el valor de una llamada a DLL, diseñada para trabajar con mIRC. $editbox(ventana) toma el valor del texto en la caja de editar de la ventana especificada. $email asume la dirección email especificada en el Setup. $hash(texto,B) asume el número "hash" basado en el texto donde B es el número de bites usado para calcular el número "hash". $highlight devuelve $true si los resaltes están activados en el menú de Resaltes, de otra manera devuelve $false.


$highlight(N/texto) da la posición N de la línea en la ventana de edición de resaltes, o si se especifica texto, da las propiedades de los resaltes de ese texto. Propiedades: text, colour, sound, flash, message, nicks. $host toma el valor del Local host. $ifmatch asume el primer parámetro de comparación if-then-else. En el caso de esta comparación: if (algo isin algun_string_tipo_$1-) { ... } $ifmatch devuelve "algo" $ignore da $true si ignorar está activado, si no da $false. $ignore(N/address) da la posición en la lista de ignore. Propiedades: type $ignore(0) da el total de direcciones en la lista de ignore $ignore(1) da la primera dirección en la lista de ignore $ignore(2).type da la caracteristica de la segunda dirección en la lista de ignore Nota: si especificas una dirección, da la primera dirección de la lista de ignorar. $iif(C,T,F) da T o F dependiendo de que la evaluacion del Condicional C sea verdadera o falsa. $iif(1 == 2, yes, no) returns "no" $iif() da F si el condicional es cero, $false, o $null. Para otros valores $iif() da T. Si no especificas el parámetro F, $iif devuelve el valor T si la condición es verdad, y no devuelve nada si es falso. $iif(1 == 2, yes) devuelve nada $inmidi toma valor $true si un archivo midi está sonando, si no $false. $inwave toma valor $true si un archivo wav está sonando, si no $false. $ip da tú dirección IP. $isalias(nombre) toma valor $true si el nombre especificado es un comando alias y existe en tu alias o scripts. Propiedades: fname, alias $isalias(join) da $true si tines un alias para /join $isalias(join).fname da el fichero en que está el alias $isalias(join).alias da el alias definido por /join $isid da $true si un alias es llamado como un identificador, si no da $false. $lf da el carácter de pie de línea, igual que $chr(10). $lock(tema/#/N) devuelve $true o $false para las opciones de bloqueo en el menú de Bloquear. Propiedades: send, get, chat, fserve, run, dll, channels También puedes usar $lock(N) donde N es la posición del canal en la lista de canales limitados, o pudes especificar un nombre de canal en lugar de N. $network da el nombre de la Red de IRC en que estas conectado. Nota: No todas las redes dan este tipo de información $os da la version del sistema operativo. La respuesta puede ser 3.1, 95, 98, NT, o 2.000. $port da el número de puerto del server en que estas conectado. $protect da $true si proteger está activo, si no da $false. $result asume el valor dado por la rutina llamada por el comando /return. $rgb(nombre) devuelve el valor RGB del nombre del color de sistema especificado que puede ser uno de lo siguientes: face, shadow, hilight, frame, y text. $server da el nombre del servidor en que estas conectado.En caso de que no haya conexión , la respuesta seria $null $server(N/dirección) da la dirección o la posición N del servidor en la lista de servidores de irc. Propiedades: desc, port, group $server(0) da el total de servidores en la lista de servidores $server(2) da el total de direcciones en el segundo servidor $server(2).desc da la descripción del segundo servidor $server(3).port da el puerto(s) del tercer servidor Si especificas una dirección de servidor de irc y está en tu lista de servidores, devuelve su información asociada. $show da $false si el comando es prefixed con a . para pararlo, de otra forma da $true. $sreq da las configuraciones actuales /sreq en la sección Opciones DCC.


$titlebar da el texto puesto en la barra de mIRC, puesto por el comando /titlebar. $url da la URL activa actual en tu Navegador de Web.

Identificadores Especiales para Agentes Estos identificadores te permiten controlar al agente, siempre que esté cargado.. (atención no os penseis que el agente es algo raro jajaja , puede ser cualquier archivo en uso que tengais cargado que le querais dar el valor de agente) $agentver da la versión del Agente instalado en el sistema, 0 si no está instalado. $agentstat da 1 si el Agente está leyendo, 0 si ocupado/hablando. $agent(N).char da el nombre del fichero o la posición N del agente instalado en el sistema. Si especificas 0, da el total de agentes instalados. $agent(nombre) da información sobre el agente cargado actualmente. Propiedades: name, fname, visible, x, y, w, h, ow, oh, speed, pitch, idle, effects, active, langid, balloon, hide name el nombre que diste al agente fname el nombre del fichero del agente visible da $true o $false x,y,w,h posición izquierda/arriba, ancho/alto. ow, oh original ancho/alto speed velocidad hablando pitch énfasis idle si idle está on u off effects si los sonidos están on u off active si el agente está activo langid lenguaje del sistema balloon opciones actuales: on off size pace hide hide activa la opción auto-ocultar $agent(nombre,N) da información sobre las animaciones y líneas que haya en memoria para un agente determinado. Propiedades: anim, line anim da el nombre de animaciones disponibles para el agente. Si especificas N, da el nombre de la animación N. Si especificas 0, da el número total de animaciones. line da las líneas en memoria para ese carácter. Si especificas N, da la posición de la línea. Si especificas 0, da el total de líneas en memoria.

Identificadores y órdenes de Control Dde mIRC soporta la comunicación DDE, que permite que aplicaciones externas controlen el mIRC o que le soliciten información. Hay que tener en cuenta que también es posible comunicase con el mIRC através del SendMessage(). El nombre por defecto sel servicio mIRC es mIRC, pero puede cambiarse en el cuadro de diálogo de opciones Las órdenes e identificadores que explicamos a continuación te permiten comunicarte con otras aplicaciones que soporten DDE. (Aque siempre habriais puesto eso de nombre de servicio y nunca sabiais que es? Pus simplemente como una identificación o password para usar todas las opciones de DDE del mIRC sólo en posesión de esa palabra :) ) DDE Topics mIRC soporta los siguientes topics DDE. Nota: Fijaros bien que la palabra mIRC ahí puesta no sale de la nada , simplemente es el Service Name que viene por defecto y que se puede cambiar Topic: COMMAND Transaction Type: XTYP_POKE Item: Ninguno Data (Arguments): De una linia en una linia de comandos Returns: Nothing


Example: /dde mirc command "" /server irc.dal.net Description: Ejecuta cualquier comando que tu le ordenes Topic: EVALUATE Transaction Type: XTYP_REQUEST Item:Devuelve la linia que quieras evaluar Data (Arguments): None Returns: Evaluated line Topic: CONNECT Transaction Type: XTYP_POKE Item: Ninguno Data (Arguments): one line of text in the form: address,port,channel,number Returns: nada Example: /dde mirc connect "" irc.irc-hispano.org,6667,#darkangel,1 Description: Esto le dirá al mIRC que se conecte al servidor de hispano, puerto 6667 y que después de conectar entre automáticamente en al canal #darkangel . Si el número del final es un 1, se activará la ventana de DaRkAnGeL, si es un 0, no se activará. Topic: CONNECTED Transaction Type: XTYP_REQUEST Item: Ninguno Data (Arguments): Ninguno Returns: "connected" si estás conectado a un servidor , "connecting" si estás en medio del proceso de contectar a un servidor, y "not connected" si estás desconectado. Example: //echo mIRC está $dde(mirc, connected) a un servidor. Topic: EXENAME Transaction Type: XTYP_REQUEST Item: Ninguno Data (Arguments): Ninguno Returns: El path completo del ejecutable del mIRC (el exe), por ejemplo: "c:\mirc\mirc.exe" Example: //echo El exe del mIRC está en $dde(mirc, exename) Description: Puede resultar útil para aquellas aplicaciones que necesitan saber el path y el nombre del archivo ejecutable. Topic: VERSION Transaction Type: XTYP_REQUEST Item: Ninguno Data (Arguments): Ninguno Returns: Version del producto Example: //echo Version -> $dde(mirc, version) Topic: INIFILE Transaction Type: XTYP_REQUEST Item: Ninguno Data (Arguments): Ninguno Returns: El camino completo y el nombre el principal archivo INI que se esté utilizando, por ejemplo: "c:\mirc\mirc.ini" , osea el ini que haya cargado al principio en la ejecución del EXE Example: //echo Principal INI cargado está en $dde(mirc, inifile) Description: Puede resultar útil para aquellas aplicaciones que necesitan extraer información del archivo INI. o bien necesiten saber su localizacioón Topic: NICKNAME


Transaction Type: XTYP_REQUEST Item: Ninguno Data (Arguments): Ninguno Returns: Nick en uso Example: //echo My bot tiene este nick -> $dde(mirc, nickname) Topic: SERVER Transaction Type: XTYP_REQUEST Item: Ninguno Data (Arguments): Ninguno Returns: El servidor al que estás o estabas conectado. Por ejemplo: "irc.irc-hispano.org" Example: //echo El servidor de mi bot es $dde(mirc, server) Topic: PORT Transaction Type: XTYP_REQUEST Item: Ninguno Data (Arguments): Ninguno Returns: El puerto que se está utilizando para conectar al servidor. Example: //echo Mi bot está conectado por el puerto $dde(mirc, port) Topic: CHANNELS Transaction Type: XTYP_REQUEST Item: Ninguno Data (Arguments): Ninguno Returns: Una línea de texto con un listado de los canales a los que estás conectado, separados por espacios, por ejemplo: "#darkangel #me_gusta_darkangel #ayuda_irc" Nota: Sólo debe hacerse está llamada desde otra aplicación, no desde un alias. Description: La línea de texto que devuelve, puede acabar siendo muy larga, quizá de varias K's de texto, por lo que debería preveerse una aplicación que pueda soportarlo. Topic: USERS Transaction Type: XTYP_REQUEST Item: Nombre del canal con el formato #canal. Data (Arguments): Ninguno Returns: Una línea de texto con la lista de usuarios del canal especificado separado por comas. Nota: Sólo debe hacerse está llamada desde otra aplicación, no desde un alias. Description: Sólo puedes solicitar los nicks de los usuarios de un canal al que el mIRC esté conectado. La línea de texto que devuelve puede s4er muy larga, por lo tanto cualquier aplicación que utilice esta órden, debe estar preparada para manegar una sóla línea de texto de varias K's. Órdenes e identificadores DDE Todas las transacciones por DDE son síncronas, mIRC espera como máximo 1 segundo para obtener una respuesta o un reconocimiento para cualquier petición DDE que realiza así que podemos decir que son casi instantaneas ya que es como un protocolo que lleva insertado el mIRC , y no debe esperar como en eentos on text etc a dar señales , leer o esperar estimulos :) /ddeserver [[on [nombre del servicio]] | off] El nombre por defecto es mIRC. El servidor DDE de mIRC se activa por defecto al ejecutar el programa a menos que encuentro otro mIRC u otra aplicación utilizando su actual nombre de servicio.


Puedes utilizar la orden /ddeserver para activar y desactivar manualmente el servidor dde. Si tienes más de un mIRC actuando como servidor dde, deberías especificar un nombre diferente para cada servidor dde en cada una de las copias del mIRC que estés utilizando. /dde [-re] <servicio> <topic> <item> [data] Por defecto envía un XTYP_POKE a menos que especifiques el modificador -r en cuyo caso se envía un XTYP_REQUEST, si especificas el modificador -e se envía un XTYP_EXECUTE. La diferencia entre ellos , es que el POKE es para mantener una relación con el Servidor DDE , mientras que el Request , le pides alguna informacion o proceso , mientras que con el EXECUTE , le mandas una orden de ejecución de algun tipo de orden o proceso Si estás enviando un XTYP_POKE los 4 argumentos son obligatorios. (A los argumentos nos referimos a estos 4 -> /dde [-re] <servicio> <topic> <item> [data] ) Si se trata de un XTYP_REQUEST sólo lo son los 3 primeros. Esta es la razón por la que hemos utilizado "" en los ejemplos que hemos visto antes, actúa como "relleno" aunque en realidad, no tiene ninguna utilidad. (Se ponen ** debido a que por defecto el mIRC usa esos simbolitos para mostrar cosas , pero no tiene mayor importancia) Si estás mandando un XTYP_EXECUTE sólo son necesarios los tres primeros argumentos. $dde(topic, name, item, delay) devuelve el valor especificado por el topic, nombre e item, mandando una petición XTYP_REQUEST. ;Ejemplo //echo Mi otro mIRC es $dde(mirc, connected) al $dde(mirc, server) Los parametros "item" y "delay" son opcionales. El valor delay indica que quieres que el $dde() espere N segundos una respuesta antes de darse por vencido. El valor por defecto es un segundo, que suele ser suficiente. Note: Si el valor devuelto por $dde es demasiado grande pra que el mIRC pueda manejarlo, $dde devuelve el valor $error. $isdde(name) devuelve $true si el nombre especificado está en uso, en caso contrario devuelve $false. $ddename devuelve el actual nombre del servicio DDE que esté utilizando el servidor DDE.

Identificadores Especiales para ventanas personalizadas. Los identificadores siguientes dan informaión de la ventanas personalizadas (osea las que creas tu con el comando /window argumentos) $window(N/@nombre) da propiedades de ventana. Propiedades: x,y,w,h,dx,dy,dw,dh,bw,bh,mdi,title,state,font,fontsize,logfile,stamp, icon. x,y,w,h da izquierda, arriba, ancho y alto de la ventana especificada. dx,dy da izquierda y arriba de la ventana del escritorio. dw,dh da ancho y alto del área del texto. bw,bh da ancho y alto de bitmap ó mapa de bites de ventana gráfica. mdi da $true si la ventana es mdi, de otra manera da $false state te dice si la ventana es está minimizada, maximizada u oculta. title da el texto del título de la ventana font da el nombre de la fuente que utiliza la ventana fontsize da el tamaño de la fuente actual fontbold da $true si la fuente es negrita, si no da $false logfile da el nombre del fichero log si está abierta la ventana stamp da las opciones de poner hora o timestamp icon Devuelve on/off dependiendo de la visibilidad del icono. Puedes usar el formato $window(@wildcard,N) que da el N de ventana comparando el nombre de la ventana comodin. Nota: también puedes modificar la anchura y altura especificando: -1 para la anchura y altura de la pantalla, -2 para la ventana principal de mIRC, y -3 para la ventana de MDI donde se despliegan las demás ventanas dentro de mIRC. $line(@nombre,N,T) devuelve la línea de texto N en la ventana especificada. Si N es cero, devuelve el número total de líneas en la ventana. Si es referente a la ventana que usa listbox, puedes poner T para poner a cero la referencia del área de despliegue, o T uno para referenciar la listbox.


$fline(@,*texto,N,T) devuelve la posición N de la línea que compara el texto con comodin especificado. Si T no es cero, actúa en la listbox. $sline(@nombre,N) devuelve el número N de la línea seleccionada en la listbox (sólo trabajos en listbox). Si N es cero, devuelve el número total de líneas seleccionadas en la ventana. Propiedades: ln $sline(@nombre,N).ln da el número de línea de la línea N seleccionada

Identificadores ventanas de dibujo. $mouse representa la posición x, y del evento del ratón actual, y si se aprieta el botón del ratón izquierdo, tecla mayúsculas, y/o tecla de control. Propiedades: win, x, y, mx, my, dx, dy, key, lb Los identificadores de $mouse pueden usarse en los eventos mouse/click. Para $mouse.key puedes usar el operador & de comparación para verificar si se aprieta el botón izquierdo, tecla mayúsculas, y/o tecla de control: if ($mouse.key & 1) echo el botón izquierdo se pulsa. if ($mouse.key & 2) echo la tecla mayúsculas se pulsa. if ($mouse.key & 4) echo la tecla de control se pulsa. Las propiedades siguientes pueden usarse: La propiedad .win representa el nombre de la ventana activa. Las propiedades .x/.y, .mx/.my, y .dx/.dy representan la posición x e y del ratón en la ventana activa, la ventana principal de mIRC, y el escritorio. La propiedad .lb da $true si el mouse está dentro de la ventana de edición, o $false si no está. $click(@,N) esto guarda la historia de x,y click en la ventana. Propiedades: x, y, Puedes usar /clear -c @nombre para borrar la historia de click para la ventana. Si usas $click () sin las propiedades devuelve x y. $inrect(x,y,x,y,w,h) devuelve $true si el punto x y está dentro del rectángulo especificado, y $false si no está. $inpoly(x,y,a1,a2,b1,b2,...) Devuelve $true si el punto x y está dentro del polígono definido por los puntos especificados, y $false si no está. $rgb(N,N,N) devuelve el color RGB para el uso en comandos /draw. Si usas sólo un parámetro, asume es un color RGB de valor real y devuelve N,N,N. $getdot(@,x,y) devuelve los valores de colores RGB del punto en la posición especificada. $height(texto,fuente,tamaño) representa la altura del texto en pixeles para el conjunto de caracteres especificados. Nota: si usas un número negativo para el tamaño de la fuente, se desplegará el menú de tamaño de fuentes. $window da el nombre de la ventana en el evento leave que quedaba. $pic(archivo) devuelve el tamaño, anchura, y altura de un archivo bitmap. Propiedades: tamaño, ancho, alto, $width(texto,fuente,tamaño,B,C) representa la anchura del texto en pixeles para el conjunto de caracteres especificado.Si B no es cero, el conjunto de carácteres es negrita, si C no tiene ceros, se procesan los códigos de control. Nota: si usas un número negativo para el tamaño de la fuente, se desplegará el menú de tamaño de fuentes

Identificadores de sockets. $sock(nombre,N) esto devuelve información sobre una conexión socket que creaste usando los comandos socket. Propiedades: name, port, ip, status, sent, rcvd, sq, rq, ls, lr, mark, type, saddr, sport, to .name es el nombre que das a una conexión para identificarla. .sent y .rcvd da el número de bytes enviados y recibidos hasta ahora en la conexión. .sq y .rq da el número de bytes enviados y recibidos en cola o en buffer respectivamente ..ls y .lr da el número de segundos desde la conexión a la última información recibida. .mark es un almacenamiento de area máx. 512 bytes (mira /sockmark). .type da el tipo de socket, TCP o UDP


.saddr y .sport da la dirección de la fuente y puerto del último paquete recibido UDP. .to da el número de segundos desde que el socket ha sido abierto. .wserr da el último número de error ocurrido en socket .wsmsg da el último mensaje de error winsock Nota: puedes usar un comodin como nombre para comparar referencias. El parámetro N es opcional, si no especifícas se asume es 1. $sockname es el nombre dado a una conexión para identificarla. Este identificador puede usarse en eventos para saber qué conexión se relaciona un evento. $sockerr pone un valor después de cada socket comando/evento y debe verificarse después de cada comando socket y antes de procesar un evento para ver si hubiera un error. $sockbr es el número de bytes leido por el comando /sockread. Se usa para probar si cualquier información ha sido leida del buffer (mira debajo para más información). $portfree(N) devuelve $true si el número de puerto especificado no está en uso, o sino da $false.

Identificadores de scripts remotos Puedes usar los siguientes identificadores en script que se refieran a valores que relacionan específicamente a los eventos. Hay también otros varios identificadores que sólo relacionan a los eventos específicos, éstos se describen con los eventos propios.. Hay también otros identificadores que pueden usarse en script remotos y no-remotos. (Esto es lo que usariamos en gran parte para hacer un Bot por eventos :)) $1- puedes usar los identificadores $1 $2... $N para referirte a los parámetros individuales de una línea. También puedes usar $N- para referirte a los parámetros N y anteriores, y $N-M para referir a los parámetros $N en $M. Así que como para referirte a la línea entera, usarías $1-. $0 da el número de espacios-delimitados en la línea $1$(...) este identificador sólo puede usarse en la sección de comparar texto o en una definición de evento. Te permite crear un parámetro de comparación dinámico (esto lo puse debido a que me han pedido como user comandos dinamicos en un evento sin poder usar variables estaticas :) , thx to J4rg0n) ;Ejemplo on 1:TEXT:$(*hola $me $+ *):?:echo ¡hola de nuevo! $address representa la dirección del usuario asociada con el evento en la forma userid@host.dominio. $chan representa el nombre del canal donde el evento tuvo lugar. Sólo ciertos eventos ocurren en canal, para los que no son en canal $chan no tendrá valor. $clevel representa el nivel del evento comparando con el evento activado. $dlevel te dice que nivel tiene definido el usuario en la lista de usuarios. $event representa el nombre del evento que se activó. $fulladdress representa la dirección completa del usuario que activa el evento en la forma nick!userid@host.dominio. $group(N/#) representa el nombre o estado de un #grupo en un script. Propiedades: estado, nombre, archivo $group(0) da el número de grupos $group(1) da el nombre del primer grupo $group(1).status da el estado on/off del primer grupo $group(#Prueba) da el on/off del grupo #test $group(#Prueba).fname da el nombre del archivo script en el grupo si existe $group(3).name representa el nombre del tercer grupo $ial da $true si la Lista Interna de Direcciones esta activa, si no es así devuelve $false. $maddress representa la dirección comparada para el evento activado. $matchkey revuelve el comodin usado para una comparación en un evento remoto. $mode(N) da la posición N de un nick afectado en un cambio de modo en canal. Propiedades: op, deop, ban, unban, voice, devoice, help, dehelp Las propiedades pueden usarse para especificar qué tipo de cambio de modo quieres verificar. $mode(0).op da el número de nicks de la lista que tienen op, es decir te dice cuántos operadores luciendo la arroba hay en el canal. $mode(1).op da el primer nick de la lista que tenga op Nota: este identificador solo puede usarse junto a los eventos on OP/DEOP etc.


$nick representa el nick del usuario asociado al evento. $numeric devuelve el numérico para el evento numérico comparado. $script representa el nombre del archivo del script remoto actualmente ejecutado. $script(N/archivo) representa el archivo N del script cargado. Si especificas un archivo, devuelve $null si el archivo no está cargado. $script(0) da el número del archivo script grabado $script(2) da el archivo o el segundo archivo script grabado $script(toycargao.txt) da $null si el archivo no está cargado, o toycargao.txt si lo está. Nota: Esto no puede ser usado para referencia de usuarios o archivos de variables. $scriptdir da el directorio del script remoto actualmente ejecutado. $site da la porción de $address después de la @ del usuario asociado con el evento en la forma userid@host.dominio. $target representa el objetivo de un evento. $ulevel representa el nivel del usuario para el evento actualmente activado. $ulist(nick!userid@dirección,L,N) devuelve la posición N en la lista de Usuarios que asemejan la dirección especificada y nivel. Propiedades: info Puedes especificar la dirección con comodines * para representar alguna dirección en la lista de usuarios. Si no especificas la dirección completa, rellena la dirección con comodines. Si no especificas N, se devuelve la primera dirección comparada. Si especificas L, sólo las direcciones que contienen el nivel especificado se representan. Nota: L y N son optativos, pero si especificas L, debes especificar N. $wildsite representa la dirección del usuario que activó el evento en la forma *!*@host.dominio.

Identificadores Especiales para Cuadros de diálogo $dialog() el Diálogo creado con $dialog() es modal, es decir, detienen el script hasta que el diálogo se cierra, devuelve un valor, y no permite acceder a otras ventanas mientras el diálogo esté abierto. Este tipo de diálogos solo deben usarse en cosas que requieran entradas inmediatas por parte del usuario. El identificador $dialog() trabaja igual que los demás identificadores: %result = $dialog(nombre,tabla[,ventana origen]) Donde nombre es el nombre de referencia del diálogo, tabla es el nombre de la tabla usada para crear el diálogo (mira más abajo), y ventana origen es la ventana en que se origina el diálogo, esta puede ser un nombre de ventana, o -1 = ventana Escritorio, -2 = ventana principal de mIRC, -3 = actual ventana activa, -4 = diálogo activo actual, si no hay diálogo abierto, por defecto el valor es -3. Nota: este tipo de diálogo no puede ser llamado desde un evento de script remoto. Puedes usar también el identificador $dialog(nombre/N) para listar cualquier diálogo abierto, donde N es el número de diálogos abiertos. Si N es cero, el total de diálogos abiertos es devuelto. $dialog() también soporta estas propiedades: x,y,w,h da el tamaño y posición del diálogo title da el título del diálogo modal da $true si el diálogo es modal, o $false si no lo es table da la tabla de diálogo si se está usando ok da el id del botón Ok si se especifica uno cancel da el id del botón Cancelar si se especifica uno result da el id del botón Resultado si se especifica uno focus da el valor id de control que actualmente tiene focus tab da el valor id de tab mostrado actualmente active da $true si el diálogo es la ventana activa, si no da $false did(name,id) Puedes obtener la configuración y los valores de los controles de un diálogo utilizando el identificador $did() con los siguientes formatos y propiedades: $did(name,id) $did(name,id,N) Si se utilizan con el evento on dialog, el nombre es opcional. (Que lo podeis llamar cómo querais :))


$did() soporta las siguienes propiedades: text devuelve la línea o la línea número N $did(id) es lo mismo que $did(id).text len Devuelve el tamaño (length) de la línea número N lines devuelve el número de líneas sel Devuelve el número de línea numero N entre las líneas seleccionadasL if N is 0, devuelve el número de líneas seleccionadas. seltext devuelve el texto de un cuadro de edición o el primer item seleccionado de una lista de selección selstart devuelve el primer caracter seleccionado en un cuadro de edición de texto selend devuelve el último caracter seleccionado en un cuadro de edición de texto edited devuelve $true si se ha modificado el texto de un cuadro de edicicón de texto state devuelve 0 = off, 1 = on, y 2 = indeterminado next devuelve el id del siguiente control en el orden de la tecla tab prev devuelve el id del control anterior en el orden de la tecla tab visible devuelve $true si el control está visible, en otro caso $false enabled devuelve $true si el control está activo, en otro caso $false Puedes acceder al control de edición en una caja de tipo combo utilizando 0 como valor de N $didwm(name,id,wildtext,N) devuelve el número de la línea que coincida con el "wildtext", la búsqueda empieza en la línea N, N es opcional. $didtok(name,id,C) devuelve una lista tokenizada de los items de un cuadro de edición de texto, combo o de lista. Puedes utilizar didtok name id C text para añadir una lista tokenizada de items a tn cuadro de edición de texto, combo o de lista.

Identificadores Especiales para Ficheros binarios $bvar(&binvar,N-N2) da el número ascii del N byte. Si N es 0, da la longitud de la variable binaria. Propiedades: texto $bvar(&v,0) da la longitud de la variable binaria $bvar(&v,1) da el valor ascii de la posición N $bvar(&v,1-9) da el valor ascii de 1 a 9 $bvar(&v,1-9).text da texto plano de 1 a 9, encima del primer carácter cero. $bfind(&binvar, N, M) busca una &binvar para un determinado valor, empezando en la posición N. M puede ser un valor, ejemplo. 0 a 255, o texto. Propiedades: text $bfind(&test, 1, mirc) busca "mirc" empezando en la posición 1 $bfind(&test, 5, 32) busca char 32 (espacio) desde la posición 5 $bfind(&test, 1, 87 65 86) busca WAV desde la posición 1

Identificadores Especiales para Tablas Hash Las tablas Hash te permiten almacenar eficientemente grandes cantidades de información que se puede referenciar y obtener después rápidamente sin tener que guardalas materialmente en algun sitio , ya sean txt ini's o demas files temproaleso estables Una tabla Hach puede ser creada, liberada, referenciada o modificada utilizando las siguientes órdenes e identificadores: /hmake -s <name> <N> Crea una tabla nueva con N slots Una tabla hash puede guardar un número ilimitado de items independientemente del número N que elijas, sin embargo, cuanto mayor sea N, más deprisa trabajará, dependiendo del número de items guardados. Por ejemplo, si piensas guardas 1.000 items en la tabla, un N de 100 es más que suficiente. El modificador -s obliga a la órden a mostrar el resultado.


/hfree -sw <name> libera una tabla existente. El modificador -w indica que el nombre es un comodín, por lo que todas las tablas coincidentes se liberan. /hadd -sm <name> <item> [data] añade un item a una tabla existente Si el item ya existe en la tabla, sobreescribe al antiguo. El modificador -m obliga a /hadd a crear una tabla si no existe ya /hdel -sw <name> <item> borra un item de la tabla.El modificador -w indica que el item es un comodín, por lo que todas las items coincidentes se liberan. /hload -sbn <name> <filename>Carga una tabla de/a un fichero. /hsave -sbnoa <name> <filename>Salva una tabla de/a un fichero. Esto carga/guarda texto plano a una archivo, con los items y los datos en líneas sepradas. $cr y $lf pierden los caractereres cuando se guardan como texto. El modificador -b carga o guarda archivos binarios, en este caso $cr y $lf se conservan. Puedes utilizar -n para cargar o guardar archivos sólo como datos, sin items. Al guardar con -n, se asigna a cada línea un valor N de Item, empezando en Item = 0. /hsave también soporta -o que sobreescribe un archivo existene y -a que añade al archivo existente. Note: /hload no crea tablas, tienen que estar creadas previamanete con /hmake. $hget(name/N) devuelve el nombre de una tabla, si es que existe, o devuelve el nombre de la tabla número N. Properties: size $hget(lala).size devuelve el tamaño de la tabla, tal y como se especificó con /hmake. $hget(name/N,item) devuelve los datos asociados con un item en la tabla especificada. $hget(name/N,N).item esto te permite referenciar una tabla como un index de 0 a N, para poder mirar el item número N en la tabla. Si N es cero, te devuelve el número total de items de la tabla. También puedes referirte al valor del dato N directamente con $hget().data. Nota: Este método es cómodo, pero no es una forma eficiente de utilizar la tabla. $hfind(name/N,text,N) busca en la tabla el nombre del item número N que coincida con el texto y lo devuelve. Properties: data Especificando la propiedad .dada, busca un valor coincidente en los datos. $hmatch(name/N, text, N) busca en la tabla el nombre del item número N que coincida con el texto, dónde bien el texto o los Item/datos son comodines. Devuelve el nombre. Properties: data Especificando la propiedad .dada busca un valor coincidente en los datos. $hregex(name/N, re, N) busca en la tabla el item número N que coincida con la expresión regular. Devuelve el nombre del item. Properties: data Especificando la propiedad .data, busca un valor coincidente en los datos.

Identificadores Especiales para Expresiones regulares Las podriamos definir como; Una expresión regular es una manera en que un usuario puede puede especificar cómo una aplicación debería buscar un patrón determinado en un texto. El usuario de la expresión, puede entonces específicar qué es lo que hay que hacer una vez que se han encontrado los patrones coincidentes: por ejemplo, imprimir cada línea que contenga una coincidencia o sustituirla con otro texto. La mejor herramienta conocida es "grep" en los sistemas unix, que también se ofrece como una aplicación independiente para windows y otros sistemas operativos. $regex([name], text, re) devuelve N, El número de cadenas en el texto coincidentes con la expresión. Puedes asignar un nombre a una llamada a $regex() que después puedes utilizar con $regml() para referiste a una lista de coincidencias. Si no especificas un nombre, todos los identificadores usarán un nombre por defecto que se sobreescribirá co cada llamada a $regex(). $regex() recuerda los resultados de las 10 últimas llamdas. Cada vez que haces una coincidencia con regex, y especificas un nombre, los resultados previos de ese nombre se sobreescriben con los nuevos. $regml([name], N) puede utilizarse para referirse a una lista de coincideciacias delvuelta previamente por una llamada con $regex() o $regsub(). Properties: pos


Si N = 0, devuelve el número total de cadenas coincidentes. La propiedad pos, devuelve la posición de la cadena en el texto original. $regsub([name], text, re, subtext, %var) primero hace una búsqueda de coincidencias, igual que , y después realiza una substitución utilizando subtext. Devuelve N, el número de sustituciones echas, y asigna el resultado a a %var.

Identificadores Especiales para Objetos COM mIRC permite llamar objetos COM a través de scripts /comopen name progid abre una conxión COM con un objeto progid, por ejemplo, Excel.Application, y asigna un nombre a la conexión. Deberías comprobar $commer después de hacer esta llamada para comprobar que la conexión COM ha tenido éxito. /comclose name cierra la conexión COM especificada. /comreg -u filename añade o quita una DLL COM del registro de windows. ;Ejemplo Ejemplo { comopen name progid ; Si falla comopen, es posible que la DLL que vino con el script no estuviera registrada. if ($comerr) { ;registra la dllDLL comreg test.dll ;Intenta abrir la conexión de nuevo comopen name progid ; vuelve a fallar, para el script if ($comerr) halt } } $comerr este parámetro debe ser comprobado siempre que se hace una llamada a una orden o identificador COM. Devuelve 1 si se produce un error, y 0 en otro caso. $com(name,member,method,type1,value1,...,typeN,valueN) llama a un miembro de una conexión COM abierta con el método y parámetors especificados. name - nombre de la conexión. member - nombre del miembro. method - Combinación de los siguientes valores: 1 = DISPATCH_METHOD 2 = DISPATCH_PROPERTYGET 4 = DISPATCH_PROPERTYPUT 8 = DISPATCH_PROPERTYPUTREF type - La variable type puede ser: i1, i2, i4, ui1, ui2, ui4, int, uint, r4, r8, cy, date, decimal, bool, bstr, variant, error. Equivalentes de VB son: boolean, byte, currency, date, double, integer, long, single, string, variant. Para hacer una variable por referencia, utiliza * en el nombre, por ejemplo: i1* Para asignar un nombre a una variable y poder referirse a ella después de una llamada, añadirlo al type, por ejemplo i1* nombredeviable .Al utilizar una variant también hay que especificar el tipo de variable después, por ejemplo: variant bool. Value - El valor asignado al type de la variable. Devuelve: 1 = ok, 0 = fallo. Después de abrir una conexión COM o hacer una llamada a $com() se pueden usar las siguientes formas de $com(): $com(name/N) devuelve el nombre si la conexión está abierta, o el nombre de la conexión abierta. N = 0 devuelve el número total de conexiones abiertas. Propiedades: progid, result, error, errortext, argerr progid - nombre del objeto. result - El valor devuelto por el miembro del objeto com después de la llamada.


error - valor del error, si lo hubo. errortext - Descripción asociada con el error. argerr - N argumento que casó el error, si el error fue devido a un type de variable no válido. $com(name/N,varname) devuelve el valor de la variable especificada. ;Example excel { comopen excel Excel.Application if ($comerr) { echo comopen failed halt } ; comprueba si excel está visible if ($com(excel,Visible,3) == 0) { echo $com failed goto finish } echo Visible: $com(excel).result ; Hace visible la ventana de Excel if ($com(excel,Visible,5,i4,1) == 0) { echo $com failed goto finish } ; Vuelve a comprobar la visiblidad if ($com(excel,Visible,3) == 0) { echo $com failed goto finish } echo Visible: $com(excel).result :finish comclose excel }

Identificadores Especiales para IAL mIRC mantiene una lista interna de direcciones de todos aquellos usuarios que estén en ese momento en los mismos canales que tu. Las ordenes /guser, /ruser, /ban, /ignore, /finger, y /dns utilizan la lista para encontrar las direcciones ip rápidamente en vez de tener que hacer un /userhost. $ial(nick/mask,N) devuelve la dirección o nick número N que coincida en la IAL Propiedades : nick, user, host, addr, mark $ial(*!*@*.com,0) Devuelve el número total de direcciones de la IAL que coincidan con *!*@*.com $ial(*!*@*.com,3) Devuelve la tercera dirección que encuentre en la IAL coincidente con *!*@*.com $ial(*!*@*.com,4).nick Devuelve el nick de la cuarta dirección que encuentre terminada en .com $ial(*!*@*.com,4).user Devuelve el "userid" de la cuarta dirección que encuentre terminada en .com Para ver cada dirección de la lista, puedes usar $ial(*,N). El parámetro N es opcional, su valor por defecto si no se especifica es 1 $ialchan(nick/mask,#,N) devuelve la N dirección en el canal especificado que coincida con el nick o máscara en la IAL. Funciona igual que el identificador $ial().

Playing Sounds Desde mIRC puedes controlar varios tipos de sonidos utilizando las siguientes órdenes e identificadores. Combinando estas órdenes con lo que sabemos de hacer diálogos podemos hacernos nuestro propio reproductor de mp3. Claro que también podemos bajarnos uno ya hecho y dejarnos de preocupaciones aunque no es lo que nos interesa (vag0s XD)


/splay -cwmpq [nombredearchivo | stop | pause | resume | seek | skip] [pos] con esta orden lanzas (pones en marcha, haces que suen, pueden ser archivos .wav, .mid, o .mp3. Los modificadores: w = wave, m = midi, p = mp3, y q = para poner el archivo a la cola y que suene después. Si no especificas un directorio, mIRC buscará el que hayas determinado en opciones/sound requests Puedes utilizar stop para parar el sonido que esté en marcha en ese momento. por ejemplo: /splay stop, o /splay -w stop, para parar sólo los archivos wav. Con los mp3 puedes utilizar pause (pausa), resume (continua) o seek (busca). Si especificas el valor de "pos" al poner un mp3, por ejemplo: /splay llama.mp3 1000, mIRC empezará el mp3 en esa posición. También puedes buscar una posición determinada en un mp3 con /splay seek 1000 Para saltarte el sonido actual puedes utilizar: /splay -wmp skip T -q te permite poner en cola sonidos para que se pongan en marcha cuando se acabe el que está sonando. Con -c puede puedes borrar la cola de sonidos (excepto el que esté sonando en ese momento Cuando se termina un sonido, te avisa un evento (también sonoro) /vol -wmpvuN [volumen] determina el volumen del sistema para wavs, midis, y mp3s Utilizando -v especificas el volumen principal de tu sistema. El rango de valor del volumen va de 0 a 65535. -uN controla la opción "mute" (mudo) N = 1 es on, N = 2 es off. $vol(wave | midi | mp3 | master) te dice el volumen que tienes en especificado para el tipo de archivo que especifiques. Propiedades: mute $vol(wave).mute te dice si tienes el mute activado para la los archivos wav $inwave, $inmidi, $inmp3 devuelve $true si el tipo de sonido que has especificado está sonando, en caso contrario, devuelve $false. Propiedades: fname, pos, length $inmp3.fname devuelve el nombre del archivo que esté sonando en ese momento. $wavedir, $mididir, $mp3dir devuelve el directorio que hayas especificado para estos archivos en las opciones del mIRC $mp3(nombredearchivo) te da información sobre el mp3 que hayas especificado mp3. Propiedades: album, title, artist, year, comment, genre, track, length, version, bitrate, vbr, sample, mode, copyright, private, crc. Con toda esta información ya no tendreis que preguntar más sobre como hacer un mini reproductor , que aquí teneis todos los identificadores mirar -> album, title, artist, year, comment, genre, track, length, version, bitrate, vbr, sample, mode, copyright, private, crc . Solo con eso ya teneis toda la info de un MP3 que siempre preguntais


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.