Autor Tema: modos de canal  (Leído 1284 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado rank

  • Novato
  • *
  • Mensajes: 47
  • Karma: +2/-134
modos de canal
« en: Agosto 23, 2019, 05:28:32 am »
Hola.

He intentado hacer un pequeño código, para cuando pongan algún moderador de mi canal, un modo restrictivo, el mismo bot cuando pase cierto tiempo lo quite, por si en algún momento se le va la pinza y cierra y deja el modo puesto.

Código: [Seleccionar]
on @*:mode:#xe:{

   notice $me $2 pone modo +R | .timerModeR 0 300 mode #xe -R
}

on @*:mode:#xe:{

   notice $me $2 pone modo +W | .timerW 0 1800 mode #xe -W

}

on @*:mode:#xe:{

   notice $me $2 pone modo +M | .timereme 0 600 mode #xe -M
}

on @*:mode:#xe:{

   notice $me $2 pone modo +m | .timerres 0 250 mode #xe -m
}

El problema es que solo quita el tiempo por el tiempo que le he puesto.

Los demás cuando ponen el modo lo quita al instante.

¿qué hago mal?

Un saludo.


Desconectado Quetzalcoatl

  • Miembro de pleno derecho
  • ***
  • Mensajes: 198
  • Karma: +240/-2
  • HipercomputoHipermegared
    • elchatirc
Re:modos de canal
« Respuesta #1 en: Agosto 23, 2019, 08:03:08 am »
Que tal RANK

 Aunque no se si entendí bien, pero tu código es para que cuando se cambien los modos restrictivos en el canal ya sea por cualquier @op, estos sean quitados después de expirar X tiempo después, variando de acuerdo al tipo.

Después de ver tu código a simple vista encontré tres detalles siendo el ultimo el de tú duda
1.- No se debe tener mas de un evento repetido, es mejor poner solo un evento ya que en algunas versiones del mIRC, solo toma el primero que le hará caso(varia de acuerdo a la versión)
2.- El identificador de $1 aplica solo a los modos que se aplican al canal, por lo que cuando mandas un notice $me $2 no te aparece quien puso el modo, para ello se usa $nick
3.- La razón por la que los modos se quiten, es por que estas creando timers infinitos la sintaxis es timer<nombre/opcional> <repeticiones> <Tiempo en seg> <Comando(s)> y en tu ejemplo pones 0, el cual es indicativo para que sea infinito, es por ello que cuando alguien pone un modo restrictivo, este se removerá si es que el ciclo de su remoción llego de nuevo.

Quizás este código te sea útil para lo que intentas realizar:
Código: [Seleccionar]
on @*:mode:#xe:{
  var %a $remove($1,+), %b
  if (($left($1,1) == +) && (%a isin RWMm)) {
    if ($asc(%a) == 109) { %b = 250 } | elseif ($asc(%a) == 77) { %b = 600 } | else { %b = $replace(%a,$chr(82),300,$chr(87),1800) }
    .notice $me $nick pone modo $1-
    .timerMODE_ $+ $asc(%a) 1 %b mode $chan $replace($1,+,-)
  }
}

Saludos cordiales.

PD: la variable %a es el modo y %b se usara para el tiempo, de acuerdo al valor ascii del modo, es como se asigna el tiempo en %b
« última modificación: Agosto 23, 2019, 08:09:58 am por Quetzalcoatl »

Desconectado rank

  • Novato
  • *
  • Mensajes: 47
  • Karma: +2/-134
Re:modos de canal
« Respuesta #2 en: Agosto 27, 2019, 03:08:28 pm »
Muchas gracias!!!!!


Desconectado rayco

  • Miembro Junior
  • **
  • Mensajes: 82
  • Karma: +1/-73
Re:modos de canal
« Respuesta #3 en: Abril 15, 2021, 04:31:40 pm »
Buenas tardes.

Me parece un código excelente, pero me gustaría hacer una consulta.

Quería añadir el modo Q y que lo quite a los 15 minutos, qué línea tendría que modificar?

¡Gracias de antemano!

Desconectado rayco

  • Miembro Junior
  • **
  • Mensajes: 82
  • Karma: +1/-73
Re:modos de canal
« Respuesta #4 en: Abril 16, 2021, 10:37:35 pm »
Hola.

¿Se puede añadir otro modo?

¡Gracias!

Desconectado Quetzalcoatl

  • Miembro de pleno derecho
  • ***
  • Mensajes: 198
  • Karma: +240/-2
  • HipercomputoHipermegared
    • elchatirc
Re:modos de canal
« Respuesta #5 en: Abril 17, 2021, 06:12:27 am »
para anexar otro modo solo se tiene que modificar estas dos lineas

Código: [Seleccionar]
if (($left($1,1) == +) && (%a isin RWMm)) {
    if ($asc(%a) == 109) { %b = 250 } | elseif ($asc(%a) == 77) { %b = 600 } | else { %b = $replace(%a,$chr(82),300,$chr(87),1800) }

dado que el código esta para que reaccione a los modos de RWMm se tendría que agregar un nuevo modo en este caso mencionas el Q el cual es el ascii 81 --> //echo -a $asc(Q)
y modificar el tiempo de 15 min pasarlos a segundos--> //echo -a $calc(15*60)
ya una ves dado el código numérico de Q y el tiempo de 900, solo basta agregar a la primera linea de si %a esta en RWMmQ y agregar el reemplace el valor del $chr(81) y su correspondiente tiempo 900
nos queda como...
Código: [Seleccionar]
if (($left($1,1) == +) && (%a isin RWMmQ)) {
    if ($asc(%a) == 109) { %b = 250 } | elseif ($asc(%a) == 77) { %b = 600 } | else { %b = $replace(%a,$chr(82),300,$chr(87),1800,$chr(81),900) }
igual esa ultima linea se podria poner todo en el replace los tiempos, pero seria un poco mas confuso si uno se equivoca en una coma, pero es posible
quedando como

Código: [Seleccionar]
on @*:mode:#xe:{
  var %a $remove($1,+), %b
    if (($left($1,1) == +) && (%a isin RWMmQ)) {
    %b = $replace(%a,$chr(77),600,$chr(81),900,$chr(82),300,$chr(87),1800,$chr(109),250)
    .notice $me $nick pone modo $1- | .timerMODE_ $+ $asc(%a) 1 %b mode $chan $replace($1,+,-)
  }
}

saludos
PD : El código original se pidió para modos individuales es decir +R +m, no para modos dobles o mas como +RMmW

Desconectado rayco

  • Miembro Junior
  • **
  • Mensajes: 82
  • Karma: +1/-73
Re:modos de canal
« Respuesta #6 en: Abril 18, 2021, 05:46:52 pm »
Buenas tardes.

Citar
PD : El código original se pidió para modos individuales es decir +R +m, no para modos dobles o mas como +RMmW

Entiendo que si ponen el modo Q a los 15 minutos lo debe quitar el bot solo, eso es así, no?

Como si ponen el R o el W o el M

si ponen un modo de esos se quita después de pasado el tiempo que hay en el código establecido, que no tienen que ser todos los modos, si no cualquiera de ellos.