;--------------------------------------------
;          Clones en Popup
;           por BaZoOkA
;          www.ViKIrC.tk
;       www.escripting.com.ar
;--------------------------------------------
;-Descripción
;bueno pues este es un codigo para poder visualizar los clones de un nick en lo popups
;por una parte si tienes OP(@) o Halfop(%) podras elminar uno a uno los clones o patearlos a todos.
;por otra parte si no tienes ni op ni halfop pues le podras hacer whois a cada uno de ellos.
;y tambien de las dos formas podras ver los nicks y el total de clones que tiene el nick.

;Empezemos, tratare de explicar claramente este codigo....

;aqui tenemos un evento on start, este salta al momento de iniciar tu mIRC o Script.
on *:start: { 
;hacemos una condición ke si no existe la hash llamada ClonesPop entonces ke la creé
  if (!$hget(ClonesPop)) { 
;si la condicion es verdadera creamos la hash ClonesPop.
    hmake ClonesPop 100
  }
}

;Aqui tenemos un evento on load este salta al cargar algun tipo de codigo para mIRC.
on *:load: { 
;esta parte es igual ke el evento anterior.
  if (!$hget(ClonesPop)) { 
    hmake ClonesPop 100
  }
}

;Aqui empezamos a crear los alias ke nos ayudaran a nuestro objetivo.

;empezamos creando el alias popupclon, el cual nos va ayudar a devolver los clones de un nick.
alias -l popupclon {
;hacemos una comparación ke si $1 es begin ke seria el inicio del popup al darle click con el
;boton derecho del mouse a un nick.
;primero borramos de la hash ClonesPop todos los temas ke empiezen con ClonP.*
;despues con el alias gclonp ke lo explicaremos luego, almacenamos todos los clones dentro de el nick selecionado.
  if ($1 = begin) { hdel -w ClonesPop ClonP.* | gclonp $address($gettok($snicks,1,44),2) }
;aki empezamos a devolver los nicks para ponerlo en el popup
;la primera comparacion es para no devolver los ids de los popups 1,2,... en la comparación if vemos unos &&
;eso es para hacer un doble compación && es "Y" claro esta que los dos deben de existir si no, no se hace la acción
;en la segun compación hacemos un tipo bucle. ya ke $1 va devolviendo la cantidad de popups creados
  if ($1 isnum) && ($gettok($hget(ClonesPop,$hmatch(ClonesPop,ClonP.*)),$1,44)) { 
;aki $ifmatch nos retorna nick por nick de los clones... y $2 sera la accion ke hagamos sobre el nick ke nos devolvio.
 return $ifmatch : $2 $ifmatch 
  }
}

;ahora empezamos con el alias gclonp con el cual almacenamos los nicks dentro de una direccion de tipo *!*@host.com.mx
alias -l gclonp { 
;hacemos la condición de ke si los clones dentro del nick selecionado son mayores ke 1 entonces hacemos los siguiente.
  if ($ialchan($1,$chan,0) > 1) {
;creamos una variable local llamada %i con el valor 1
    var %i 1
;Con el while hacemos un bucle para ke scaneé los clones del nick
    while ($ialchan($1,$chan,%i).nick) {
;incrementamos %i para que el bucle pase a lo siguiente osea al siguiente nick.
      inc %i
;almacenamos los nicks ke nos devolvio el bucle en %a y usamos el token $addtok para
;almacenarlos de esta forma %a = Clon,Clon1,Clon2,...ect.
      var %a = $addtok(%a,$ifmatch,44)
    }
;una vez terminado el bucle añadimos un tema a la hash ClonesPop el tema se llamara ClonP.Nickselecionado y contendra lo almacenado en %a
    hadd ClonesPop $+(ClonP.,$gettok($snicks,1,44)) %a
  }
}

;estos 3 alias son para la eliminación por medio del kick hacia los clones.
;empezamos el alias kickcpop con este alias pateamos un clon deteminado. dentro de ello hacemos una condición
;si existe el tema MsgKick dentro de ClonesPop pues usamos ese si no usamos el identificador $anmsgk para almacenar un msg de kick.
alias -l kickcpop { kick $chan $1 $iif($hget(ClonesPop,MsgKick),$ifmatch,$anmsgk) }
;ahora expliquemos el alias anmsgk ke es el identificador ke usamos anteriormente.
:en una variable local almecenamos los datos que ingresamos a la pregunta del $input, una vez almacenado ahora agregamos el tema MsgKick a la hash ClonesPop con el contenido de %a, luego retornamos lo ke nos devuelve al leer el tema MsgKick de la hash ClonesPop.
alias -l anmsgk { var %a $input(No se ha definido un mensaje para patear $crlf $+ ¿Cual sera el mensaje?,109,Mensaje Kick) | hadd ClonesPop MsgKick %a | return $hget(ClonesPop,MsgKick) }
;Bien este alias se les hara conocido a aquellos ke vieron un codigo mio llamado "Contra Clones"
alias -l ptocp { 
;hacemos una condicion de ke si los clones del nick seleccionado son mayores ke 1 entonces hacemos la acción.
  if ($ialchan($address($gettok($snicks,1,44),2),$chan,0) > 1) {
;creamos una variable local llamada %i con valor 1
    var %i 1
;empezamos nuestro bucle el cual nos devolvera los clones del nick.
    while ($ialchan($address($gettok($snicks,1,44),2),$chan,%i).nick) {
;$ifmatch no devuelve un nick segun vaya avanzando el bucle y usamos el alias kickcpop ke anteriormente lo explicamos ke es para patear.
      kickcpop $ifmatch
;incrementamos a %i para el avanze del bucle.
      inc %i 
    }
  }
}
;este alias lo utilizamos como identificador,simplemente para devolver el total de clones en el nick.
alias -l tclonp { return $ialchan($address($gettok($snicks,1,44),2),$chan,0) }

;Aqui empezamos a trabajar con los popup
;iniciamos un popup en lista de nicks
menu nicklist { 
;hacemos un sencilla condicion ke si no devuelve nada el identificador $server ponemos $style(2) para poner desabilitado el popup.
  $iif(!$server,$style(2)) Clones Popup
;en este popup se hacen una serie de comparación con el $iif, primero ke si los clones del nick son mayores ke uno ke ponga 
;$style(2) Click en uno para $iif($me isop $chan || $me ishop $chan,patearlo,whois) el $style(2) ya sabemos ke es para desabilitar el popup
;luego "Click en uno para..." en lo que sigue hacemos una condición que si es op ó halfop pues pues ke ponga el texto "patearlo" si no pues ponemos el texto "whois" que es lo ke haremos en dado caso si no tenemos op ni halfop haremos whois al nick si no lo patearemos
;en caso de ke la condición sea falsa mostrara "Nick sin clones"
  .$iif($ialchan($address($gettok($snicks,1,44),2),$chan,0) > 1,$style(2) Click en uno para $iif($me isop $chan || $me ishop $chan,patearlo,whois),$style(2) Nick sin clones):halt
  .-
;Aqui usando el identificador $submenu ke nos sirve para hacer popups dinamicos y nuestro identificador ke ya creamos antes llamado $popupclon con la ayuda de ellos
;nos devolvera en los popups los clones del nick seleccionado.
;algo mas.. hay una condicion si es ke tenemos op ó halfop mandamos a patear al nick si no le hacemos whois.
  .$submenu($popupclon($1,$iif($me isop $chan || $me ishop $chan,kickcpop,whois)))
  .-
;este es un popup que solo se vera si es que tenemos op ó halfop el cual no ayudara para patear a todos los clones con el comando ante ya explicado ptocp
  .$iif($me isop $chan || $me ishop $chan,$iif($ialchan($address($gettok($snicks,1,44),2),$chan,0) > 1,Patear a todos)):ptocp
  .-
;Aqui hacemos una condición que ya deben de saberse que si los clones del nick son mayor que uno entonces mostramos desabilitado el total de clones.
  .$iif($ialchan($address($gettok($snicks,1,44),2),$chan,0) > 1,$style(2) Total de clones $tclonp):halt
}

;y bien asi concluimos este codigo espero que sea de su utilidad, en caso de terne dudas,comentarios,bugs o cualquier cosas que tenga que ver con el codigo
;pueden contactarme a mi mail: RossRam@Gmail.com
;bien pues no queda mas que decir que a disfrutar del codigo :)
;si hay falta de ortografia disculpen, si desean mandan a mi mail la corrección.


;-Nota: la -l en los alias es para hacer un alias local de este archivo y no tener problemas con otros
;alias ya creados

    Source: geocities.com/mx/bazooka_irc

               ( geocities.com/mx)