Remote: Eventos

Los eventos seran "la piedra angular" de nuestro script. Existen distintos tipos de eventos y estos saltan cuando ocurre algo determinado. Asi por ejemplo un "on text" salta cuando llega algún texto a tu cliente de IRC (mIRC), un "on open" cuando se abre la ventana indicada.

1.- Estructuta general de los eventos:

on level:evento:texto:lugar:{ comandos }

  • level Hace referencia al nivel del usuario que hace saltar el evento. Asi un on 5 el evento saltara solo ante un usuario de nivel 5. Se permite el uso del comodin *
  • texto en algunos eventos se requiere este parametro, si alguien dice el texto x el evento saltara (se permite el uso del comodin: *)
  • lugar en algunos eventos se requiere este parametro. El lugar puede ser: # (canal), ? (query), @ ventana personalizada o de imagen o = (DCC Chat). También se permite el uso del comodin: *

2.- Eventos:

    2.1.- On Text/on Action: on level:text:texto:lugar:{ comandos } El evento salta cuando recibes texto en el lugar indicado. Ejemplos:

  • on *:text:hola $me $+ *:#:{ msg # hombre hola, ¿qué tal? } <--- si en un canal dicen: hola tu_nick salta este evento y mandas el texto hombre hola, ¿qué tal? (lo mandas al canal donde te dijeron hola)
  • on *:text:*:#:{ comandos } <--- Cuando en el canal dicen cualquier texto, salta este evento
  • on 10:text:*:#:{ comandos } <--- Cuando un usuario de nivel 10 dice algo en cualquier canal, salta
  • on *:text:*:?:{ comandos } <--- Cuando te dicen cualquier cosa en un query

    on level:action:texto:lugar:{ comandos } El evento salta cuando recibes un action (/me) en el lugar indicado. Ejemplos:

  • on *:action:* $+ $me $+ 0:#:{ msg # holas $nick } <--- salta cuando alguien hace un action e incluye nuestro nick

    2.2.- On Notice: on level:notice:texto:#/?:{ comandos } El evento salta cuando alguien nos envia un notice (?) o bien lo envia al canal (#). Ejemplos:

  • on *:notice:*:?:{ comandos } <--- salta cuando alguien nos envia un notice a nosotros (un notice "privado")
  • on *:notice:*:#:{ comandos } <--- salta cuando alguien envia un notice al canal donde nos encontramos

    2.3.- On Op/On Deop/On Voice/On Devoice: on level:tipo:#:{ comando }

  • on *:op:#:{ comandos } <--- Este evento salta cuando algún usuario es opeado.
  • on *:dop:#:{ comandos } <--- Este evento salta cuando algún usuario es de-opeado.
  • on *:vo:#:{ comandos } <--- Este evento salta cuando a algún usuario se le da voz
  • on *:devo:#:{ comandos } <--- Este evento salta cuando a algún usuario se le quita voz

Identificadores especiales para este tipo de eventos:

  • $opnick Nos devuelve el nick que es opeado o de-opeado
  • $vnick Nos decuelve el nick que al cual se le da voz o quita voz

Eventos relacionados: on serverop (Cuando un usuario es opeado por el servidor) y on rawmode (Cuando cambian los modos del canal)

  • on *:serverop:#:{ if ($me isop #) { mode # -o $opnick } } <--- Deopeamos al nick que ha sido opeado por el servidor, solo si somos op en el canal.
  • on ^*:rawmode:#:{ echo # [Modos] $nick pone modos: $1- | haltdef } <--- Este evento salta cuando alguien cambia los modos en el canal. (En breve explicare ese ^ y haltdef)

    2.4.- On Topic: on level:topic:#:{ comandos } Este evento salta cuando alguien cambia el topic del canal

  • on *:topic:#:{ if ($me isop #) { notice $nick Por favor restaura el topic original } } <--- Cuando cambian el topic de un canal, si eres op en ese canal, le mandas un notice al nick con: Por favor restaura el topic original

    2.5.- On Join: on level:join:#:{ comandos }

  • on *:join:#:{ if ($nick != $me) && ($nick == Ss) && ($me isop #) { mode # +o $nick } <--- Cuando alguien entra al canal, y no eres tu, y el nick es Ss y tu eres op en el canal; le das op.
  • on ^*:join:#:{ if ($nick == $me) { echo # [Join] Has entrado a $chan | haltdef } }

OJO a ese on ^level: este parametro: ^ nos permite usar haltdef. Estos on ^level: se usan para "modificar" el texto que mIRC emite por defecto ante el evento que ocurre, en este caso join. Con el ejemplo puesto, podemos sustituir el mensaje de *** You have join to #channel, que pone por defecto mIRC, por un mensaje personalizado, en este caso: [Join] Has entrado a #canal_tal

    2.6.- On Part: on level:part:#:{ comandos }

  • on ^*:part:#:{ if ($nick != $me) { echo # [Part] $nick sale de $chan | haltdef } } <--- "Modificamos" los mensajes de nuestro script, en este caso de part (salida de canal). Asin "traducimos" el "incomodo" *** nick has left #channel por el mensaje que nosotros queramos.

    2.7.- On kick/On Ban: on level:tipo:#:{ comandos }

  • on *:kick:#:{ if ($nick == $me) { join $chan } }
  • on ^*:kick:#:{ echo # [Kick] $nick kikea a $knick | haltdef }
  • on ^*:ban:#:{ echo # [Ban] $nick banea a $bnick | haltdef }

Identificadores especiales para este tipo de eventos:

  • $knick Nos devuelve el nick que es kikeado
  • $bnick Nos devuelve el nick que es baneado

    2.8.- On Nick/On Quit: on level:tipo:{ comandos } Estos dos eventos son algo especiales, pues estos eventos no ocurren en ningún canal determinado sino en la red de IRC, por ello no existe $chan.

Como consecuencia si queremos "editar" el mensaje que mIRC daria ante este evento, debemos crear un bucle que nos permita poner el mensaje en los canales comunes a dicho nick (Introducción a mIRC, $comchan; Variables, condicionales y bucles). Ejemplo para el on nick, notese el uso del identificador: $newnick que nos devuelve el nuevo nick

on *:nick:{ var %s
while ($comchan($newnick,%s)) { echo $comchan($newnick,%s) [Nick] $nick pasa a llamrse $newnick | inc %s }
}

    2.9.- On Start/On Exit/On Connect/On Disconnect: on level:tipo:{ comandos } On Start salta cuando se inicia mIRC; On Exit cuando salimos del mIRC; On Connect salta cuando conectamos al servidor de IRC; on Discconcet cuando desconectamos del servidor de IRC al que estamos conectado.

  • on *:start:{ titlebar Script tal y tal by Tal | splay inicia.wav }
  • on *:exit:{ splay exit.wav }
  • on *:connect:{ titlebar Script tal y tal by Tal [Estado: Conectado] }
  • on *:disconnect:{ titlebar Script tal y tal [Estado: Desconectado] }

    2.10.- On Load/On Unload: on level:tipo:{ comandos } Este evento nos sirve para que cuando nuestro fichero.ini sea cargado/descargado se ejecuten los comandos indicados.

  • on *:load:{ echo -s Fichero tal tal ha sido cargado satisfactoriamente }
  • on *:unload:{ echo -s Fichero tal tal ha sido descargado satisfactoriamente }

Estos no son los únicos eventos que existen, aun quedan muchos más, estos solo son los más típicos y usados. Tal vez cuando tenga más gana me decida a ponerlos todos aunque de momento lo dudo. Para ver todos los eventos: /help on