![]() |
![]() |
Usuarios Remotos
USUARIOS REMOTOS.-
Nos
referimos a un usuario remoto cada vez que especificamos un evento remoto, por
ejemplo, en el evento “on 1:join” le estamos diciendo al mIRC “cuando un usuario de nievel
1 entre a un canal…” Esta es una sección completamente opcional y
no necesariamente todos los scripts harán uso de ella, puesto que sólo es
realmente útil para ciertas tareas muy especificas. Antes que nada debe saber,
que por defecto, el nivel 1 quieres decir “decir todos los
usuarios”, si queremos que el evento sólo actúe ante usuarios que tengo
un cierto nivel tendremos que especificarlo en ese sentido, así como asignarles
nivel para que ciertos usuarios tengan acceso o no a esos eventos, es decir, el
programa actúe según las indicaciones dependiendo del nivel que tenga dicho
usuario remoto.
Asignación de niveles a usuarios.-
Para
asignar un nivel determinado a un usuario iremos al editor de mIRC, pero esta vez a una pestaña que
seguramente tendremos en blanco, la pestaña “USERS”. La sintaxis
para declarar que un usuario tiene un cierto nivel es:
<nivel>:<nick>!<user>@<host>/<ip>
Por
ejemplo:
10:filemon!*@*
20:mortadel0!*@theilax.arrakis.es
Hemos
creado dos usuarios remotos, el primero filemon le hemos dado el nivel
“10” y cualquier persona con ese nick tendrá acceso a los
privilegios de ese nivel 10. El segundo nivel que hemos asignado es más
específico porque se lo asignamos a un nick y a una mascara, es decir que el
nivel “20” solo lo tendrá aquel que su nick sea
“mortadela” y su host sea “theilax.arrakis.es”, de esa
forma nos aseguramos que los privilegios que especifiquemos para el nivel 20
solo los mortadelo con ese host tenga acceso y no cualquiera que se ponga ese
nick. Saber también que un usuario con nivel 20 tendrá acceso no solo a los privilegios
del nivel 20 sino también a los de nivel inferior: 19,18,17,…etc. Si
quisiéramos que solo tuviera acceso a los eventos de nivel 20, tendríamos que
especificarlo de la forma siguiente:
=20:mortadelo!*@theilax.arrakis.ex
el
“=” delante del nivel indica que el nick especificado solo tendrá
acceso a los privilegios de ese nivel y no a los inferiores.
Así de
esta forma se asignan los niveles de una forma “estática”, vamos al
editor del mIRC y los introducimos a
mano, pero también podríamos hacerlo de una forma “dinámica”
mediante comandos del mIRC, digo
dinámica porque nos pueden servir estos comandos para más adelante permitir al
usuario cambiar el nivel de cierta persona o añadir mas usuarios con un
determinado nivel. Los comandos son:
·
/auser
[-a] <niveles> <nick/host>
Añade un
usuario con el nivel o niveles que especifiquemos a la lista de usuarios
remotos, si especificamos el parámetro [-a]
hará que si el usuario ya existía se le añada el nuevo nivel al que ya tenia.
Por ejemplo:
/auser 10 filemon
Añade a
filemon a la lista de usuarios remotos con nivel 10, si filemon ya estaba en
esa lista, será borrado y sustituido por la nueva entrada.
/auser –a 12,13 filemon
Añade los
niveles 12 y 13 a los que ya tenía el usuario filemon, por la tanto la sección
users quedara asi:
10,12,13:filemon
En lugar
de un nick podríamos haber especificado una mascara con el modelo nick!user@host
·
/flush [niveles]
Este
comando borrará todos los nicks de niveles especificados que no estén
actualmente en ninguno de nuestros canales. Por ejemplo:
/flush 1,2,3
Borrará de
la lista de usuarios remotos a todas las personas que tengan nivel 1,2 ó 3 y no
estén en ninguno de nuestro canales.
/flush
Cuando se
especifique este comando sin argumentos borrará todas las entradas (en la
pestaña “Users” del mIRC)
de gente que no esté actualmente en ninguno de nuestros canales.
·
/guser [-a] <niveles>
<nick> [tipo]
Este
formato trabaja en la misma forma que /auser con la única diferencia de que
solo de podemos especificar el nick de la persona y el mIRC mirará su mascara actual y la añadirá al nick, para ello
tenemos que especificar tambien el [tipo] de mascara que será un número del 0
al 9.
/guser 10 TipoX 4
Añade al
nick Tipos con nivel 10 y una mascara del tipo 4 (*!*@*.dominio)
·
/ruser
[niveles] <nick/host> [tipo]
Borrará
todos los niveles que especifiquemos del nick o host que especifiquemos,
podemos también darle solo el nick y especificar el [tipo] de mascara para que
el mIRC la mire y borre los niveles
de los usuarios que tengan esa mascara.
/ruser 10 Ytreme
Borrará el
nivel 10 que le hayamos dado al nick Ytreme.
/ruser Ytreme
Borrará a
Ytreme de la lista de usuarios remotos (o lo que es lo mismo le quitará todos
los niveles).
/ruser 25 Ytreme 4
El mIRC buscará la información de Ytreme y
borrará el nivel 25 de todas las entradas en la lista de usuarios que tengan
esa mascara.
·
/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:
10,12,15:tempest
12,20:Ytreme
el
comando: /rlevel 12 borrará al usuario Ytreme puesto que su primer nivel es 12
/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
Lista
todos los usuarios cuyo nivel sea menos o igual a 10.
/ulist >20
Lista
todos los usuarios cuyo nivel sea mayor o igual a 20.
Restricciones en el acceso a
eventos.-
Vista ya
la forma en la que se asignan niveles a usuarios, ahora veremos como puede
hacer que ciertos eventos solo sean accesibles por usuarios específicos (con un
nivel específico), para ello simplemente cambiaremos ese “1” que
solíamos poner en todos los eventos remotos/ctcps por el nivel mínimo que
necesitará el usuario para acceder al evento.
on
10:join:#:{ echo –s Ha entrado un usuario de nivel 10 a superior }
Este
evento hará que cuando un usuario de nivel 10 o superior entre en un canal en
el que usted esté, le salga un mensaje en Status avisándole. Pero recuerde que
este evento no sólo lo accederán los usuaros de nivel 10, sino tambien los de
20, 30, etc…
Pero
también podemos hacer que un evento solo sea accesible por los usuarios de un
nivel determinado, y no por aquellos usuarios que tengan más nivel, lo haremos
mediante el prefijo “+”.
on
+5:join:#:{ echo –s He entrado un usuario de nivel 5 }
De esta
forma si entra un usuario con nivel 10 por ejemplo, este evento no se ejecutará
puesto que esta restringido a los usuarios de nivel 5.
Otra forma
de restringir el acceso a eventos es mediante el sufijo “!” al
nivel, que hará que el evento no se ejecute si fue accionado por usted mismo,
por ejemplo:
on
1!:op:#:{ echo $nick le dio op a $opnick }
Este
evento hará que cuando un usuario le de op a otro nos sea notificado en la
ventana activa, a excepción de cuando sea usted el usuario que da op.
Y al igual
que restringimos el acceso a ciertos eventos también podemos tener eventos de
“libre acceso” por todos los usuarios, independientemente del nivel
que tengan usando un “*” en lugar del nivel:
on
*:join:#:{ echo $chan Ha entrado $nick }
Ese evento
mostrará un mensaje en pantalla cada vez que entre un usuario a un canal, sin
tener en cuenta su nivel.
También
podemos usar el prefijo “@” para indicarle al script que ese evento
solo salte cuando tengamos op en ese canal, por ejemplo:
on @10:join:#:{ op $nick }
Este
evento hará que cuando un usuario de nivel 10 entre a un canal en el que
estemos, y en el que seamos op, le demos op automáticamente.
Resumiendo
un poco esta última parte en la siguiente tabla de ejemplo:
on 100:part
à
100 o superior
on +30:deop à únicamente 30
on 5!:quit à 5 o
superior (except ousted)
on *:join à Todos
on @30:nick à 30 o superior (solo si usted es OP
en el canal)
Visto lo
anterior y para finalizar vamos a realizar un ejemplo que mezcle lo visto hasta
ahora. Se trata de crear un medidor de lag, algo que es fundamental en
cualquier script.
Ejemplo.- Creación de un medidor de
LAG.-
Para medir
el lag que se tiene con una cierta persona lo que se hace, como ya sabe, es
hacerle a esa persona un ctcp ping, pues bien si ueste quiere hallar el lag con
usted mismo, es decir su propio lag con el Server, lo que tendrá que hacer es
como ya habrá adivinado, hacerse un ctcp ping a usted mismo, por lo tanto
analicemos un poco en que se basará nuestro medidor para que después sea más
facil construirlo:
Primero
necesitaremos un timer, es decir que cada “x” segundos el mIRC nos
haga automáticamente un ping para hallar nuestro lag.
Después
necesitaremos que la respuesta a ese ping se nos muestre en un formato
diferente al habitual y que la respuesta habitual se omita, pero habrá que
tener en cuenta que cuando hagamos un ping a nosotros mismos, la respuesta que recibiremos
será del tipo “Tu lag es de x” “segundos”, para ello
usaremos el evento “ctcp 1:ping”.
El problema es que si en ese evento ponemos una línea que diga “Tu lag es
de x segundos” ese ctcp saltará cada vez que alguien nos haga un ping,
sea quien sea, y lo que haremos en este ejemplo es que ese evento solo se
ejecute cuando la persona que le haga el ping sea usted mismo, de esa forma
conseguiremos que cada vez que usted se haga un ping (automáticamente mediante
el timer) se active el evento ctcp del ping que usted habrá diseñado y que
cuando sea otra persona la que le haga un ping, ésta reciba el mensaje
estándar. Pasemos ya a ver el código para este ejemplo, y posteriormente lo
acabaremos de comentar:
Copie lo
siguiente en “aliases”:
/medidor {
/timer 0 30 ctcp $me ping
/auser 55 $me
}
Copie lo
siguiente en “remotes”:
ctcp
55:ping:{
%lag :
$ctime - $2
titlebar
Lag: %lag
halt
}
On
1:connect:{ medidor }
Y ya está,
lógicamente este es un medidor de lag bastante primitivo en el sentido de que
se le pueden añadir muchas más cosas, pero esta es la base y a partir de ella
usted podrá ir elaborando su propio medidor de lag con sus conocimientos.
La
explicación es bastante simple, cuando usted conecte a un servidor de IRC (salta el evento on 1:connect) se
ejecutará el alias “medidor” que iniciará un timer indefinido (de
ahí el “0” como primer parámetro) que consistirá en hacerse a usted
($me) un ctcp ping cada 30 segundos.
Además
cuando usted conecte será añadido a la lista de usuarios con nivel 55. Al cabo
de 30 segundos se producirá por primera vez ese ctcp ping que pusimos en el
timer, y puesto que el ping lo manda usted que es un usuario de nivel 55,
saltará el evento “ctcp 55” que calculará el lag y lo mostrará en
la barra de título del mIRC mediante el comando “titlebar”, por
último se usa un “halt” para que la respuesta predeterminada del
mIRC al ping quede escondida. Y obviamente si cualquier otro usuario le hiciera
un ping, como usted será el único con nivel 55, este evento no saltará y por tanto
el otro usuario recibirá la respuesta estándar del ping.