Responder al mensaje

Advertencia - mientras estabas leyendo, fueron publicadas 7 respuestas. Probablemente desees revisar tu mensaje.

Nota: este mensaje no se mostrará hasta que sea aprobado por un moderador.

Nombre:
Email:
Asunto:
Icono del mensaje:

Verificación:
Escribe las letras mostradas en la imagen
Escuchar el texto / Solicitar otra imagen

Escribe las letras mostradas en la imagen:
¿Cuánto es uno menos uno? (en letra y en minúscula):

teclas método abreviado (sólo IE y Mozilla): presiona alt+s para enviar formulario/publicar o alt+p para previsualizar


Sumario de Temas

Publicado por: chicharrero
« en: Ayer a las 10:24:25 pm »

 lo probe con y sin $
Código: [Seleccionar]
alias revisarcanalalentrar { var %i 1 | while ($nick($1,%i)) { $BaneaUsuarios($ifmatch,$1) | inc %i } }y puse los errores que dio por eso puse el codigo completo por si ponía algo mas mal
Publicado por: Cadaver
« en: Ayer a las 09:04:37 pm »

Creo que el error es $

Código: [Seleccionar]
alias revisarcanalalentrar { var %i 1 | while ($nick($1,%i)) { $BaneaUsuarios($ifmatch,$1) | inc %i } }
Publicado por: chicharrero
« en: Ayer a las 07:51:46 pm »

hola Cadaver
como comente anteriormente de esa manera que comentas pasa esto :
buenas Quetzalcoatl de nuevo
probe lo que me comentaste puse asi:
Código: [Seleccionar]
 
on 1:join:#: {
  if ($nick == $me) { revisarcanalalentrar $chan }
  else { $BaneaUsuarios($nick,$chan) }
}

alias revisarcanalalentrar { var %i 1 | while ($nick($1,%i)) { BaneaUsuarios($ifmatch,$1) | inc %i }
}

on *:nick:{
  var %a 1 | while ($comchan($newnick, %a)) { $BaneaUsuarios($newnick,$v1) | inc %a }
}

alias BaneaUsuarios {
  var %cuentaNicks = 1
  while (%cuentaNicks <= $lines(patrones.txt)) {
    if ($read(patrones.txt,%cuentaNicks) isin $1) || ($read(patrones.txt,%cuentaNicks) iswm $1) {
      var %cuentaExcepciones = 1
      while (%cuentaExcepciones <= $lines(patrones-exceptuados.txt)) {
        if ($read(patrones-exceptuados.txt,%cuentaExcepciones) isin $1) || ($read(patrones-exceptuados.txt,%cuentaExcepciones) iswm $1) {
          halt
        }
        inc %cuentaExcepciones
      }
      .timer 1 5 ban $2 $1 $+ !*@* | .timer 1 5 kick $2 $1 Su nick no es el mas adecuado para la tematica del canal 4 $chan Por Favor, cámbielo. Gracias.
      halt
    }
    inc %cuentaNicks
  }
}

y me devuelve este error:
BANEAUSUARIOS($IFMATCH,$1) comando desconocido

probé de esta manera :
Código: [Seleccionar]
on 1:join:#: {
  if ($nick == $me) { revisarcanalalentrar $chan }
  else { $BaneaUsuarios($nick,$chan) }
}

 alias revisarcanalalentrar { var %i 1 | while ($nick($1,%i)) { $BaneaUsuarios($ifmatch,$1) | inc %i }
}
y así no da error ninguno, tampoco hace nada de nada , nueva mente muchas gracias un abrazo bro
y tengo un nick en la sala que esta en las lista de patrones.txt
Publicado por: Cadaver
« en: Ayer a las 05:20:31 pm »

El error mismo te dice la respuesta "REVISARCANALALENTRAR comando desconocido" no existe un  alias llamado así, ahi @Quetzalcoatl te puso  el alias tal  vez se te paso  copiarlo.

Código: [Seleccionar]
alias revisarcanalalentrar { var %i 1 | while ($nick($1,%i)) { BaneaUsuarios($ifmatch,$1) | inc %i } }
Publicado por: chicharrero
« en: Enero 16, 2022, 12:32:33 pm »

buenas de nuevo Quetzalcoatl
si intento aprender y en algunas ocasiones reviso y con lo poco o nada que se veo algun detalle, gracias por el inciso :) me llego bro

si lo pongo asi:
Código: [Seleccionar]
añadiendo $ en revisarcanalalentrar $chan
on 1:join:#: {
  if ($nick == $me) { $revisarcanalalentrar $chan }
  else { $BaneaUsuarios($nick,$chan) }
}

var %i 1 | while ($nick($chan,%i)) { echo -a $BaneaUsuarios  $ifmatch  | inc %i }
me devuelve este error: #nombre de la sala comando desconocido

si lo pongo se esta manera :
Código: [Seleccionar]
quitándole $ en revisarcanalalentrar $chan
 on 1:join:#: {
  if ($nick == $me) { revisarcanalalentrar $chan }
  else { $BaneaUsuarios($nick,$chan) }
}

var %i 1 | while ($nick($chan,%i)) { echo -a $BaneaUsuarios  $ifmatch  | inc %i }
me da este error: REVISARCANALALENTRAR comando desconocido

si lo pongo se esta manera :
Código: [Seleccionar]
quitándole $ en revisarcanalalentrar $chan || echo -a BaneaUsuarios  $ifmatch
 on 1:join:#: {
  if ($nick == $me) { revisarcanalalentrar $chan }
  else { $BaneaUsuarios($nick,$chan) }
}

var %i 1 | while ($nick($chan,%i)) { echo -a BaneaUsuarios  $ifmatch  | inc %i }
me da este error: REVISARCANALALENTRAR comando desconocido

PD: estoy en mi sala haciendo pruebas y tengo un nick que esta en la lista de nick prohibidos

Publicado por: Quetzalcoatl
« en: Enero 15, 2022, 11:21:37 pm »

tienes razon falto el $ al inicio del alias, pero veo que lo resolviste,  si no te marca nada es por que quizás no hay nada que sancionar.

Veo tres posibilidades que pueden estar afectando la primera es el nivel del evento ya que esta para el 1, ignoro si manejas otro nivel para usuarios comunes o se encuentra un evento del mismo tipo con ese nivel y por eso solo este entrando al else del join,
Otra que no exista nada que sancionar o la lista este vacia o sea inaccesible.
en todo caso requieres hacer un debug de las cosas que
Código: [Seleccionar]
alias revisarcanalalentrar { var %i 1 | while ($nick($1,%i)) { $BaneaUsuarios($ifmatch,$1) | echo -a nick en $1 es $ifmatch | inc %i }
o poner el seguimiento en el alias BaneaUsuarios, con un echo común para ver los datos que llegan al hacer un join donde el nick sea $me, En caso de que no se manden datos entonces debe ser un problema de nivel y optar por usar ^* u otra cosa.

originalmente probe el codigo del alias en la ventana de un canal de la siguiente manera
Código: [Seleccionar]
//var %i 1 | while ($nick($chan,%i)) { echo -a BaneaUsuarios  $ifmatch  | inc %i }y me dio los resultados del bucle. Pruebalo y veras que te deberían aparecer, por eso pienso que el problema este en el join, pero ignoro como tengas tus eventos, para dar una solución concreta.

saludos.
Publicado por: chicharrero
« en: Enero 15, 2022, 06:36:56 pm »

buenas Quetzalcoatl de nuevo
probe lo que me comentaste puse asi:
Código: [Seleccionar]
 
on 1:join:#: {
  if ($nick == $me) { revisarcanalalentrar $chan }
  else { $BaneaUsuarios($nick,$chan) }
}

alias revisarcanalalentrar { var %i 1 | while ($nick($1,%i)) { BaneaUsuarios($ifmatch,$1) | inc %i }
}

on *:nick:{
  var %a 1 | while ($comchan($newnick, %a)) { $BaneaUsuarios($newnick,$v1) | inc %a }
}

alias BaneaUsuarios {
  var %cuentaNicks = 1
  while (%cuentaNicks <= $lines(patrones.txt)) {
    if ($read(patrones.txt,%cuentaNicks) isin $1) || ($read(patrones.txt,%cuentaNicks) iswm $1) {
      var %cuentaExcepciones = 1
      while (%cuentaExcepciones <= $lines(patrones-exceptuados.txt)) {
        if ($read(patrones-exceptuados.txt,%cuentaExcepciones) isin $1) || ($read(patrones-exceptuados.txt,%cuentaExcepciones) iswm $1) {
          halt
        }
        inc %cuentaExcepciones
      }
      .timer 1 5 ban $2 $1 $+ !*@* | .timer 1 5 kick $2 $1 Su nick no es el mas adecuado para la tematica del canal 4 $chan Por Favor, cámbielo. Gracias.
      halt
    }
    inc %cuentaNicks
  }
}

y me devuelve este error:
BANEAUSUARIOS($IFMATCH,$1) comando desconocido

probé de esta manera :
Código: [Seleccionar]
on 1:join:#: {
  if ($nick == $me) { revisarcanalalentrar $chan }
  else { $BaneaUsuarios($nick,$chan) }
}

 alias revisarcanalalentrar { var %i 1 | while ($nick($1,%i)) { $BaneaUsuarios($ifmatch,$1) | inc %i }
}
y así no da error ninguno, tampoco hace nada de nada , nueva mente muchas gracias un abrazo bro
Publicado por: Quetzalcoatl
« en: Enero 14, 2022, 08:17:03 pm »

I think I understand, do you want me to scan the nicknames when you join a channel?

You need to change the code to:
Código: [Seleccionar]
on 1:join:#: {
  if ($nick == $me) { revisarcanalalentrar $chan }
  else { $BaneaUsuarios($nick,$chan) }
}
and add a new alias
Código: [Seleccionar]
alias revisarcanalalentrar { var %i 1 | while ($nick($1,%i)) { BaneaUsuarios($ifmatch,$1) | inc %i } }With this I must assume that it would be correct
Publicado por: chicharrero
« en: Enero 14, 2022, 04:54:19 pm »

Hello again, Quetzalcoatl if you could add, that when I enter the room, I will analyze the user list and remove the banned nicknames already inside the room, thank you very much
Publicado por: chicharrero
« en: Enero 03, 2022, 04:08:45 pm »

buenas de nuevo
mala cabeza la mía:

Código: [Seleccionar]
on 1:join:#: {
  $BaneaUsuarios($nick,$chan)
}

en mi codigo tenia puesto ($nick) faltaba el $chan. se lo puse y funciona a las mil maravilla disculpen las molestias
Publicado por: chicharrero
« en: Enero 03, 2022, 03:19:00 pm »

buenas Feliz año 2022
Quetzalcoatl retomando el tema me hiciste la modificación para que baneara cambios de nick dentro de la sala y funciona perfecto. ahora lo que falla es cuando entran en sala que no hace nada puedes echarme un cable e intentado hacer cambios pero no soy experto y no doy con la solución. muchas gracias Sr.
Publicado por: Quetzalcoatl
« en: Diciembre 19, 2021, 06:15:17 pm »

En respuesta a

Veamos esta explicación es para los que en verdad quieren aprender primeramente y resumidamente.....
1.- NO EXISTE $CHAN en el evento on :NICK: (si no existe entonces no se puede especificar el canal con el identificador)
2.- Hacer un método para la extracción de los canales en común y verificar si en esos canales se cuenta con op

en conclusión lo de:
Código: [Seleccionar]
on *:nick:{
  if ($newnick ison $chan) { $BaneaUsuarios($newnick) }
}

No funcionara por que REPITO no existe el identificador $chan en el evento ON :NICK:

como mencione debemos usar $comchan --> Este identificador nos permite ver los canales en comun, esta en el manual de ayuda en identificadores, resumiendo funciona asi:
$comchan(nick,0) = devuelve la cantidad de canales en común
$comchan(nick,N) = muestra el canal N listado, es decir si tenemos como canal 4 #navarra, nos los pondrá si ponemos a N como 4, y así sucesivamente.

La solución es por medio de un while teniendo una variable de conteo como control en este caso seria el valor de 1 y no de 0
la razón es muy sencilla, si se hace un while con decremento al usar en su asignación $comchan(nick,0) no ciclaria y nos congelara al ejecutarse, a menos que se usen dos variables o doble if de control. En mi caso particular deseo tenerlo asi:

Código: [Seleccionar]
//var %a 1 | while ($comchan(quetzalcoatl, %a)) { echo -s $v1 | inc %a }con eso nos regresa los canales compatibles, pero si lo agregamos por medio de un remoto reemplazamos por $nick, ya que se usara en un evento on :nick: se usara $newnick
quedando como:
Código: [Seleccionar]
var %a 1 | while ($comchan($newnick, %a)) { echo -s $v1 | inc %a }
siendo que en el código original se usa:
Código: [Seleccionar]
on *:nick:{
  if ($newnick ison $chan) { $BaneaUsuarios($newnick) }
}

nos quedaría algo como:
Código: [Seleccionar]
on *:nick:{
  var %a 1 | while ($comchan($newnick, %a)) { $BaneaUsuarios($newnick,$v1) | inc %a }
}
donde agregaríamos el $v1 para especificar el canal en el alias de BaneaUsuarios, el cual debe ser modificado para poder especificar el canal, ya que repito no existe el identificador $chan en el evento ON :NICK:, notese que no he usado el isop, ya que ese puede ser usado en el alias principal.

quedándonos la parte del evento como:
Código: [Seleccionar]
      ban -u1800 $2 $1 $+ !*@* | kick $2 $1 Nick inapropiado. Cambiatelo para entrar. | msg #cogotazos 1[BN %bannick $+ ]  Expulsando 1 $1 ( $address($1,2) ) por: Nick inapropiado.
agregando $2 como el canal, por el evento del cambio de nick por lo tanto en el evento on join deberá agregarse como segundo parametro el canal, ya que se modificara el alias de BaneaUsuarios.

en conclusión el código completo quedaría como:
Código: [Seleccionar]
ON 99:TEXT:*:?: {
  tokenize 32 $strip($1-)
  if (.addnick == $1) {
    msg $nick Añadido $2 en la lista de nicks prohibidos.
    write nicks.txt $2
  }
  else if (.delnick == $1) {
    msg $nick Borrado $2 de la lista de nicks prohibidos.
    write -ds $+ $2 nicks.txt
  }
  else if (.addex == $1) {
    msg $nick Añadido $2 en la lista de nicks en excepción.
    write nicks-exceptuados.txt $2
  }
  else if (.delex == $1) {
    msg $nick Borrado $2 de la lista de nicks en excepcion.
    write -ds $+ $2 nicks-exceptuados.txt
  }
}

on 1:join:#: {
  $BaneaUsuarios($nick,$chan)
}

on *:nick:{
  var %a 1 | while ($comchan($newnick, %a)) { $BaneaUsuarios($newnick,$v1) | inc %a }
}

alias BaneaUsuarios {
  var %cuentaNicks = 1
  while (%cuentaNicks <= $lines(nicks.txt)) {
    if ($read(nicks.txt,%cuentaNicks) isin $1) || ($read(nicks.txt,%cuentaNicks) iswm $1) {
      var %cuentaExcepciones = 1
      while (%cuentaExcepciones <= $lines(nicks-exceptuados.txt)) {
        if ($read(nicks-exceptuados.txt,%cuentaExcepciones) isin $1) || ($read(nicks-exceptuados.txt,%cuentaExcepciones) iswm $1) {
          halt
        }
        inc %cuentaExcepciones
      }
      ban -u1800 $2 $1 $+ !*@* | kick $2 $1 Nick inapropiado. Cambiatelo para entrar. | msg #cogotazos 1[BN %bannick $+ ]  Expulsando 1 $1 ( $address($1,2) ) por: Nick inapropiado.
      halt
    }
    inc %cuentaNicks
  }
}

Posdata: En el mirc cuenta con su propio manual de ayuda para acceder a el se usa /help o presionando la tecla de F1, No estaría mal darle una ojeada si es que algún identificador o manejo de procesos se cuenta con una duda.
Publicado por: Hanna
« en: Abril 04, 2020, 07:32:08 pm »

Hola Quetzacoatl

Me lo estado leyendo y me ha sonado a chino... y explicándomelo tú sigo igual...

Cuando pongo solo un canal se ejecuta bien, así que... tienes toda la razón

PD: Mejor hago 2 cogido y solo cambio los canales... porque como dices es bastante complicado y no se hacerlo yo

Un saludo
Publicado por: Quetzalcoatl
« en: Abril 04, 2020, 07:25:13 pm »

Hola Hanna

En el evento de on *:nick:{ no existe el identificador de $chan es por eso que el if que pones en ese evento jamas se ejecutara, la solución es especificar el canal donde tienes op y/o usar $comchan para ver en cuales canales tienes compatibles y apartir de eso se debe hacer la comparación si eres op en el.
Después modificar el alias BaneaUsuarios para que el $chan sea el $2, ya que requieres enviarlo o usar un $iif para asignarlo en ese alias.
Puedes encontrar toda la información referente de $comchan en el archivo de ayuda.

saludos

pd: si pones
Código: [Seleccionar]
on *:nick:{ echo -st Identificadores de evento on nick NICK= $nick CHAN= $chan NEWNICK $newnick COMCHAN= $comchan($newnick,0) } puedes comprobar lo que digo
Publicado por: Hanna
« en: Abril 04, 2020, 04:34:09 pm »

Hola.

Tengo un código para banear los nicks inapropiados, tanto cuando entran como cuando salen, pero de repente... cuando se cambian dentro del canal no los expulsa.

Cuando entran con el nick inapropiado si lo expulsa y no veo donde está el fallo.

Código: [Seleccionar]
ON 99:TEXT:*:?: {
  tokenize 32 $strip($1-)
  if (.addnick == $1) {
    msg $nick Añadido $2 en la lista de nicks prohibidos.
    write nicks.txt $2
  }
  else if (.delnick == $1) {
    msg $nick Borrado $2 de la lista de nicks prohibidos.
    write -ds $+ $2 nicks.txt
  }
  else if (.addex == $1) {
    msg $nick Añadido $2 en la lista de nicks en excepción.
    write nicks-exceptuados.txt $2
  }
  else if (.delex == $1) {
    msg $nick Borrado $2 de la lista de nicks en excepcion.
    write -ds $+ $2 nicks-exceptuados.txt
  }
}

on 1:join:#: {
  $BaneaUsuarios($nick)
}

on *:nick:{
  if ($newnick ison $chan) { $BaneaUsuarios($newnick) }
}

alias BaneaUsuarios {
  var %cuentaNicks = 1
  while (%cuentaNicks <= $lines(nicks.txt)) {
    if ($read(nicks.txt,%cuentaNicks) isin $1) || ($read(nicks.txt,%cuentaNicks) iswm $1) {
      var %cuentaExcepciones = 1
      while (%cuentaExcepciones <= $lines(nicks-exceptuados.txt)) {
        if ($read(nicks-exceptuados.txt,%cuentaExcepciones) isin $1) || ($read(nicks-exceptuados.txt,%cuentaExcepciones) iswm $1) {
          halt
        }
        inc %cuentaExcepciones
      }
      ban -u1800 $chan $1 $+ !*@* | kick # $1 Nick inapropiado. Cambiatelo para entrar. | msg #cogotazos 1[BN %bannick $+ ]  Expulsando 1 $1 ( $address ) por: Nick inapropiado.
      halt
    }
    inc %cuentaNicks
  }
}

¿Alguna solución?

¡Gracias!

PD: Lo quiero que lo ejecute en los canales donde tenga @, pero no lo ejecuta en ningún canal.
anything