Curso de Programación de Scripts para mIRC
|
|
Artículo realizado por
David García "Gato".
Variables del mIRC 5.02
Las variables son areas de almacenamiento
temporal a las cuales se les puede
asignar un valor, el cual puede ser usado más tarde en los scripts. Por ejemplo,
puede que el nombre de un Bot (como Scytale) varíe cada semana. Para no tener que
variar todo un script, podemos asignarle una variable tal y como se enseña más
adelante, y el script se configurará solo.
Si usted hace uso de una variable que no existe, esta devuelve el valor $null. El
valor $null ser puede ser usado en comparaciones del tipo if-then-else para
controlar las bifurcaciones, etc.
Para entender bien este documento hay que saber antes qué es un alias, los
comandos de los alias, y todo lo relacionado en general con los alias
Definición de Variables.
Los siguientes comandos le permiten crear y situar los valores de las variables.
- Definir una variable: /set <%var> [valor]
Ejemplo:
/set %nombrebot Scytale ó /set %nombrebot $$?="¿Nombre del bot?"
En el primer ejemplo de definición de variables el nombre del bot es fijo, y solo
hay que modificarlo en las variables del mIRC para que todo el script sepa que el
bot se llama Scytale.
En el segundo ejemplo solo hay que ejecutar la orden para
variar el nombre del bot automáticamente.
- Quitar o eliminar una variable: /unset <%var>
Ejemplo:
/unset %nombrebot
Si usted especifica una variable con caracteres comodines (*) entonces todas las
variables que coincidan serán eliminadas.
- Otras operaciones:
/unset %test*. Esto quita todas las variables que comiencen con la palabra %test.
/unsetall. Esto es igual que el /unset pero éste elimina TODAS las variables
definidas.
/inc <%var>[valor]. Esto aumenta el valor de %var por el "valor".
/dec <%var> [valor]. Esto disminuye el valor de %var por el "valor"
También se puede usar el signo igual (=) para asignar valores a una variable.
%nombrebot = Scytale %i = 5 %count = $1
Y usted puede ejecutar las siguientes operaciones en las variables usando el signo
igual (=):
%x=5+1.
Valor de x igual a 5 más 1
%x=5-%y.
Valor de x es igual a 5 menos valor de y.
%x=%x*2.
Valor de x igual a valor de x por 2.
%x=%z/$2.
Valor de x igual a valor de z entre la definición 2 (ver popups del mIRC).
%x=$1%3.
%x=2^%w.
etc.
Por ahora, usted solo puede ejecutar operaciones simples en cada cometido. Ahora
entramos en operaciones complejas.
If-then-else Statements (Declaraciones if-then-else)
Las declaraciones if-then-else le permiten comparar valores y ejecutar diferentes
partes de un script basándose en la comparación. Ahora explicamos esto un poco
mejor.
El formato básico con que nos podemos encontrar es el siguiente:
If (v1 operador v2) { comandos }
Elseif (v1 operador v2) { comandos}
Else (v1 operador v2) {comandos }
El paréntesis () encierra las comparaciones, y las llaves {} encierran los
comandos que usted desea que se ejecuten en el caso de que la comparación sea
cierta. Debe tener mucho cuidado con el número de paréntesis y llaves que pone
para, de este modo, asegurarse de que las comparaciones sean hechas correctamente
y que los comandos ejecutados son los correctos.
Usando llaves {} aumentará la velocidad de proceso. Si un alias usa unas pocas
llaves {} la declaración podria ser ambigua y el alias podr¡a tardar mucho en
realizar la comparación, hacerla mal o incluso no hacerla completa.
Se pueden realizar tantas declaraciones if-then-else como se quiera.
Los operadores que podemos utilizar.
- ==.Igual a
- !=. No igual a
- <. Menor que
- >. Mayor que
- >=. Mayor o igual que
- <=. Menor o igual que
- //. Es un múltiplo de
- //. No es un múltiplo de
- isin. El valor v1 está incluido en el valor v2
- iswm. Los comodines del valor v1 coinciden con los de v2
- isnum. El número v1 es un número situado en el rango v2 que está el la forma n1-n2 (v2 optativo)
- ison. El nick v1 está en el canal v2
- isop. El nick v1 es un op del canal v2
- isvo. El nick v1 tiene voz en el canal v2
- ischan. Si v1 es un canal en el que está usted
- isauto. Si v1 es un usuario que está en su lista de auto-op del canal v2 (v2 optativo)
- isignore. Si v1 es un usuario que está en su lista de ignorados con la opción de
- ignorar. v2 (v2 optativo)
- isprotect. Si v1 es un usuario que está en su lista de protección del canal v2 (v2 optativo)
- isnotify. Si v1 es un usuario que está en su lista de notificación.
Para negar un operador usted puede anteponerle un signo de exclamación (!).
Combinar comparaciones.
Usted puede combinar comparaciones usando los caracteres && para AND y | | para
OR.
Ejemplos de comparaciones:
number {
if (($1 > 0) && ($1< 10)) {
if ($1 < 5) echo El número es menor de cinco
else echo El número es más grande que cinco
}
else echo El número está fuera de los l¡mites
}
Este alias comprueba si un número especificado ($1), cuando se escribe " /number
<$1> ", se encuentra entre 0 y 10. Este alias se leería así línea a línea:
Si el número que yo digo ($1) está entre 0 y 10 entonces
Si es menor de 5 escribe en la pantalla " El número es menor de cinco "
Para el resto de valores, que entran en el rango 0-10,
escribe " El número es
más grande de cinco "
Para todos los valores que no estén entre 0-10
escribe " El número está fuera de
los límites "
Otros ejemplos:
-
En los alias.
Listops {
Echo 4 * Listando los Ops en el canal # *
Set %i 1
:siguiente
set %nick $nick (%i, #)
if (%nick == $null) goto hecho
if (%nick isop #) { echo 3 %nick es un Op }
inc %i
goto siguiente
:hecho
echo 4 * Fin de la lista de Ops en el canal # *
}
Este alias lista los ops del canal en el que te encuentras actualmente. Este es un
método "bruto" ya que podríamos haber usado el identificador $opnick(), pero para
ver la estructura general de un alias con variables nos vale.
-
En los Popups.
GiveOps {
%i = 0
%nick = ""
:nextnick
inc %i
if ($snick (%i,#) == $null) {
if ($len (%nick) > 0) mode # +oooo %nicks | halt
}
%nicks = %nicks $snick (%i,#)
if ( 4 // %i) { mode +oooo %nicks | % nicks = "" }
goto nextnick
}
Esto es una definición para popups que da op a los nicks que hemos seleccionado en
la lista de nicks del canal actual.
-
En los Remotes, ctcp´s.
on 1:ctcpreplay:PING* {
If ($2 == $null) halt
Else {
%pt = $ctime - $2
if (%pt < 0) set %pt 0
if (%pt > 5) {
echo 4 [PING Replay]
$nick está muy cerca. Buf! Debería usar desodorante
}
elseif (%pt < 20) {
echo 4 [PING Replay]
$nick está a unos cuantos pasos de distancia
}
else
echo 4 [PING Replay]
Tierra llamando a $nick, tierra llamando a $nick.
"Dónde se ha metido este?
}
hatl
}
Esto interpreta una respuesta PING e imprime un mensaje tonto según lo que tarde
en llegarte la respuesta de la otra persona a tu PING.
-
En los Remotes, events.
on 1:START: {
if ( $group(#comb) == $null )
{ echo 4 -s No se cargó CTCPs.ini }
if ( $group(#voicelist) == $null )
{ echo 4 -s No se cargó EVENTS.ini }
if ( $group(#canal) == $null )
{ echo 4 -s No se cargó RAW.ini }
if ( $exists($mircdirutil/neko95.exe) ==$true )
{ run $mircdirutil/neko95.exe }
else
echo 1 Parece ser que no tienes a mi mascota Neko..Pobre Neko}
if ( $exists($mircdirutil/nknab.exe) == $false)
{ echo No tienes instaladas las utilidades! }
}
Esto hace que cuando el mIRC se inicie compruebe que se han cargado todos los
archivos del script correctamente.
Otro ejemplo en los alias de la utilización de las variables es:
/ascii {
set %i 1
:otro
if (%i == 260) goto hecho
echo 3 El carácter número %i del mIRC es $chr(%i)
inc %i
goto otro
:hecho
echo Fin del código ASCII del mIRC
}
Aquí definimos la variable %i como 1. Creamos un apartado llamado "otro". La
primera línea del apartado "otro" nos dice que si %i es igual a 260, entonces debe
ir al apartado "hecho". Esta orden hace que el alias que hemos definido tenga un
fin. Se debe tener siempre mucho cuidado de no hacer ordenes "sin fin". En la
siguiente línea decimos que nos escriba en la pantalla este mensaje "El carácter
número (lo que sea %i) del mIRC es (mostrar el carácter que coincide con el valor
de %i). Después sumamos 1 a %i. Seguido a esto le ordenamos que vuelva al
principio del apartado "otro". Se repite entonces todas las ordenes. Cuando %i sea
igual a 260 se inicia el apartado "hecho" y se muestra el mensaje "Fin del código
ASCII del mIRC". Aquí termina el alias.
Eso es todo lo que hay sobre variables en el mIRC 5.02, ahora todo depende de la
imaginación de cada uno para usarlos. Espero haberle ayudado a entender un poco
mejor el mIRC.
Nota del autor
Todos los comandos han sidos sacados del manual de Ramírez sobre el mIRC.