Mensajes recientes

Páginas: 1 ... 8 9 [10]
91
Ayuda scripting IRcap / Re:Limite de usuarios.
« Último mensaje por rayco en Marzo 04, 2021, 07:08:00 am »
Buenos días.

El último me convence mucho más, que para cambiar el modo debe estar al máximo.

Una pregunta igual yo no lo veo ¿Dónde está puesto el límite?

A este me refiero:

Código: [Seleccionar]
on *:join:#canal:{
  ; -- Crear 3 variables. Para identificar mejor los usuarios del canal, el maximo que deben tener(10 en 10)
  var %usuarios $nick($chan,0), %limite.max $iif(!$mid(%usuarios,-2),10,$mid($calc(%usuarios +10),1,-1) $+ 0))
  ; -- la variable del valor de +l si es que existe un modo en el canal.
  var %l.modo $gettok($chan($chan).mode,2,32)
  ; -- si no tiene modo lo pone al max, de +10 y termina.
  if ($chr(108) !isin $chan($chan).mode) { mode $chan +l %limite.max | return }
/*
 Si hay un limite donde los usuarios sean diferente al limite max, entonces hace cambios es decir si +l=20 y los usuarios son 19
 el %limite.max sera 20, no hará nada pero si son +l=20 y el %limite.max es 30, cambiara a +l=30, esto es debido a que la variable
 de %limite.max siempre va de 10 en 10 dependiendo de los usuarios, si son 4, el valor sera 10, si son 9 sera  10 y si son 10 serán 20
*/
  if (%l.modo != %limite.max) { mode $chan +l %limite.max }
}

Saludos.
92
Ayuda scripting IRcap / Re:Limite de usuarios.
« Último mensaje por Quetzalcoatl en Marzo 01, 2021, 10:40:42 pm »
rayco Cuando el número de usuarios en el canal, sea menor a 100 pondrá el limite en 100, de lo contrario  el numero de usuarios en +10(cada ves que exista una entrada nueva, siendo igual o superior a 100 usuarios en el canal).

Toma en cuenta que si es muy concurrido estará modificando el limite constantemente, por eso eran los if's de si no existe limite que lo ponga en 100 y si existe el limite pero esta en un número mayor o menor a 100. (siendo que en usuarios menor a 100 no se verán los cambios de limite en el canal, pero si se estarán mandando)

quizás lo visualices mejor si se comentan las lineas:
Código: [Seleccionar]
on *:join:#canal:{
  ; -- si la cantidad de usuarios es menor a 100 entonces entra en el primer if
  if ($nick($chan,0) < 100) {
    ; -- si No existe un limite en el canal(+l) lo coloca en 100
    if ($chr(108) !isin $chan($chan).mode) { mode $chan +l 100 }
    ; -- de lo contrario, existe el limite pero es superior a 100 y los usuarios
    ; -- en el canal son menos de 100 en el canal evaluados en el primer if, hace el cambio
    else {
      if ($gettok($chan($chan).mode,2,32) > 100) { mode $chan +l 100 }
      ; -- notese que no se toma si es igual a 100
    }
    ; -- cierre del primer if
  }
  /*
  de lo contrario si es que son mas de 100 en el canal, hace un incremento de 10
  pero el incremento lo hace en un periodo de un seg por entrada, pero si entran
  2 usuarios uno detrás de otro en un limite de 110, cada segundo hará el incremento.
  tal ves sea mejor poner un delay más amplio y considerar si los usuarios son están
  en un rango del limite de 1, es decir si el limite max del canal y usuarios son 1 de diferencia.
  */
  else { .timerSube_Limite $+ $chan 1 1 mode $chan +l $calc($nick($chan,0) + 10) }
}

mientras que:
Código: [Seleccionar]
on *:join:#canal:{
  ; -- cuando los usuarios del canal son menores a 100, pone un limite en el canal en 100
  ; -- sin importar si tiene o no limite el canal
  if ($nick($chan,0) < 100) { mode $chan +l 100 }
  ; -- de lo contrario sube el limite en usuarios del canal(+l) de 10 en 10,
  ; -- si están 101 usuarios pasara el limite a 111 y si entra otro pasara a 112, sucesivamente.
  else { .timerSube_Limite $+ $chan 1 1 mode $chan +l $calc($nick($chan,0) + 10) }
}
Siendo que en ambos código el ultimo else, podría, hacer el cambio si estuvieran 109 usuarios pasen a 120, pero si son 108 se mantendrá en 110
así que si fueran 115 usuarios en sala se mantendrá en 120, pero si el limite esta en 100 y son más 100 usuarios, pondrá un limite de 110
hasta que llegue a una cantidad de usuarios de 109, incrementara a 120
Código: [Seleccionar]
else {
if ($calc($gettok($chan($chan).mode,2,32) - $nick($chan,0)) <= 1) { .timerSube_Limite $+ $chan 1 3 mode $chan +l $calc($nick($chan,0) + 11) }
}
el timer se dejo con un retraso de 3, para evitar join masivos para que no cambie el limite muy rápido.

Aunque si lo miras con atención, y solo pusieras el if, quizás también fuese una solución simple, debido a que siempre que el limite este a diferencia de menor o igual a 1, pondrá un limite de +11, como dije arriba en valores de 100 en adelante, pero si fuera un canal con 35 usuarios con un limite 40, no pasaría nada, hasta que subieran a 39, el problema seria si se quedara en 40 el limite y los usuarios bajaran a 15

rayco Debo hacer notar que solo me he basado en los códigos que pusiste así como el de _M3xiC4n0_

yo lo que haria seria:
Código: [Seleccionar]
on *:join:#canal:{
  ; -- Crear 4 variables. Para identificar mejor los usuarios del canal, el maximo que deben tener(10 en 10)
  var %usuarios $nick($chan,0), %limite.max $iif(!$mid(%usuarios,-2),10,$mid($calc(%usuarios +10),1,-1) $+ 0))
  ; -- limite maximo a 100 y la variable del valor de +l si es que existe un modo en el canal.
  var %limite 100, %l.modo $gettok($chan($chan).mode,2,32)

  ;---- Inicio de los if's
  ; -- si son menos de 100 los usuarios entonces
  if (%usuarios < %limite) {
    ; -- si existe un limite en el canal y es el mismo que el limite de 100, va al final y no hara nada
    if (%l.modo = %limite) { goto fin }
    ; -- pero si no existe el limite en el modo del canal y siendo menores a 100, se va al timer para asignarlo.
    goto L1
  }
  /*
  a partir de aquí serán más de 100 los usuarios del canal, es decir que:
  si son más de 100 y existe el modo de +l, pero esta cercano a cumplirse
  digamos que 109 usuarios y con el canal en +l 110, entonces pasara a 120, en caso
  de que no exista un limite en el canal lo asignara. Usuarios +10 y redondeados a su máximo de 10 en 10
  pero si son 108 y el limite del canal en 110, pasara al fin, sin modificar el modo del canal.
  */
  if ($calc(%l.modo - %usuarios) <= 1) { %limite = %limite.max | goto L1 }
  ; -- Pero si existe un modo con limite igual al máximo permitido, ira directo al final.
  if (%l.modo = %limite.max) { goto fin }
  :L1
  .timerSube_Limite $+ $chan 1 3 mode $chan +l %limite
  :FIN
}

Esto ultimo esta escrito solo de forma empírica, por lo que No lo he probado y la variable %limite seria la base del control, es decir que tu base de usuarios no quieras que sea a partir de 100, sino que sea a 50 u otro. De todas maneras están los comentarios por si surgiera una duda de algo no contemplado, que son los que alargan el código  :-X

uno más simple sin limite base y que va a variando de cada 10 cuando se llega al máximo de usuarios es
Código: [Seleccionar]
on *:join:#canal:{
  ; -- Crear 3 variables. Para identificar mejor los usuarios del canal, el maximo que deben tener(10 en 10)
  var %usuarios $nick($chan,0), %limite.max $iif(!$mid(%usuarios,-2),10,$mid($calc(%usuarios +10),1,-1) $+ 0))
  ; -- la variable del valor de +l si es que existe un modo en el canal.
  var %l.modo $gettok($chan($chan).mode,2,32)
  ; -- si no tiene modo lo pone al max, de +10 y termina.
  if ($chr(108) !isin $chan($chan).mode) { mode $chan +l %limite.max | return }
/*
 Si hay un limite donde los usuarios sean diferente al limite max, entonces hace cambios es decir si +l=20 y los usuarios son 19
 el %limite.max sera 20, no hará nada pero si son +l=20 y el %limite.max es 30, cambiara a +l=30, esto es debido a que la variable
 de %limite.max siempre va de 10 en 10 dependiendo de los usuarios, si son 4, el valor sera 10, si son 9 sera  10 y si son 10 serán 20
*/
  if (%l.modo != %limite.max) { mode $chan +l %limite.max }
}

Basado en el anterior, igual sin probar.

Saludos rayco
93
Ayuda scripting IRcap / Re:Limite de usuarios.
« Último mensaje por rayco en Marzo 01, 2021, 12:53:50 pm »
Buenas tardes.

Pero si quito:  && ($gettok($chan(#chan).mode,2,32) > 100)

Y dejo el código:

Código: [Seleccionar]
on *:join:#canal:{
  if ($nick($chan,0) < 100) { mode $chan +l 100 }
  else { .timerSube_Limite $+ $chan 1 1 mode $chan +l $calc($nick($chan,0) + 10) }
}

Cuando baje de 100 usuarios, se vuelve poner el límite a 100? o se deja si el límite estaba en 110 por la subida de usuarios?

¡Gracias!
94
Ayuda scripting IRcap / Re:Limite de usuarios.
« Último mensaje por Quetzalcoatl en Marzo 01, 2021, 12:02:11 am »
Eso debe funcionarte, ya que previamente no se había mencionado que si el canal no tuviera el limite lo asignara.

le falta un cierre de paréntesis en la condición

Código: [Seleccionar]
if (($chr(108) isin $chan($chan).mode) && ($gettok($chan(#chan).mode,2,32) > 100)) { mode $chan +l 100 }

la otra condición(del anterior post con <) es cuando el numero +l sea menor a 100, ejemplo que sea un #prueba +ntl 30 lo pondria a 100, pero como estaba en un inicio,  es lo que te cumple las condición de que si el numero de usuarios en el canal es menor a 100 y existe un limite que esta en mas de 100(#pueba +ntl 120) te lo reajuste a 100.

Código: [Seleccionar]
on *:join:#canal:{
  if ($nick($chan,0) < 100) {
    if ($chr(108) !isin $chan($chan).mode) { mode $chan +l 100 }
    if (($chr(108) isin $chan($chan).mode) && ($gettok($chan($chan).mode,2,32) > 100)) { mode $chan +l 100 }
   
  }
  else { .timerSube_Limite $+ $chan 1 1 mode $chan +l $calc($nick($chan,0) + 10)
  }
}

Igual puedes quitar el && ($gettok($chan(#chan).mode,2,32) > 100)
para solo te lo asigne a 100, si es que no quieres que si tenga un limite superior o inferior pre asignado, solo que cumpla la condición de que ya tenga un limite, ya que el disparador seria el primer if de
  if ($nick($chan,0) < 100)


Código: [Seleccionar]
on *:join:#canal:{
  if ($nick($chan,0) < 100) { mode $chan +l 100 }
  else { .timerSube_Limite $+ $chan 1 1 mode $chan +l $calc($nick($chan,0) + 10) }
}

Que prácticamente seria casi el que pusiste en un inicio. :P

saludos rayco
95
Ayuda scripting IRcap / Re:Entrada de rango de ipvirtual.
« Último mensaje por Hanna en Febrero 28, 2021, 10:51:17 pm »
Buenas noches.

Muchísimas gracias, por las molestias y por las dos opciones.

Voto para ti ;)
96
Ayuda scripting IRcap / Re:Limite de usuarios.
« Último mensaje por rayco en Febrero 28, 2021, 10:49:25 pm »
Buenas noches.

Va perfecto, pero me he dado cuenta que cuando baja de 100 usuarios el canal, el límite no lo pone en 100 si no, en el límite que puso anteriormente.

O sea, si lo pone el límite 110 usuarios porque llegaron a 100 usuarios, y si baja los usuarios del canal a 99 sigue teniendo el límite a 110 (y me gustaría en ese caso que lo vuelva a poner en 100).

¿me explico?

Código: [Seleccionar]
on *:join:#canal:{
  if ($nick($chan,0) < 100) {
    if ($chr(108) !isin $chan($chan).mode) { mode $chan +l 100 }
    if (($chr(108) isin $chan($chan).mode) && ($gettok($chan($chan).mode,2,32) < 100)) { mode $chan +l 100 }
   
  }
  else { .timerSube_Limite $+ $chan 1 1 mode $chan +l $calc($nick($chan,0) + 10)
  }
}

Muchisimas gracias!  ;D
97
Ayuda scripting IRcap / Re:Entrada de rango de ipvirtual.
« Último mensaje por Quetzalcoatl en Febrero 28, 2021, 12:13:09 am »
insertando $chr(3) => control +k y el color separado por una coma ==> $chr(3),4 si es que se trata de la concatenacion de la cadena $+()
o manualmente presionando control+k y el color
ejemplo:
Código: [Seleccionar]
msg #zamora_ops Entra al canal de #zamora $+($chr(3),4,Afectado:,$chr(160),$chr(2),$nick,$chr(2) [,$address,]) por: Usuario vigilado
msg #zamora_ops Entra al canal de #zamora $+(4Afectado:,$chr(160),$chr(2),$nick,$chr(2) [,$address,]) por: Usuario
vigilado


msg #zamora_ops 4Entra al canal de #zamora $+(Afectado:,$chr(160),$chr(2),$nick,$chr(2) [,$address,]) por: Usuario vigilado

Dependiendo donde se quiera aplicar
98
Ayuda scripting IRcap / Re:Entrada de rango de ipvirtual.
« Último mensaje por Hanna en Febrero 27, 2021, 11:31:48 pm »
Buenas noches!!!!

Muchisimas gracias, una pregunta más si no es molestia.

   msg #zamora_ops Entra al canal de #zamora $+(Afectado: ,$chr(2),$nick,$chr(2) [,$address,]) por: Usuario vigilado

¿cómo podría poner toda la línea en rojo? Gracias!
99
Ayuda scripting IRcap / Re:Entrada de rango de ipvirtual.
« Último mensaje por Quetzalcoatl en Febrero 27, 2021, 02:50:59 am »
es raro que te suceda eso, pero igual puedes usar un caracter en blanco como el 160 y quedaria algo como
Código: [Seleccionar]
on *:JOIN:#zamora:{
  if ((AU31fE isin $address($nick,2)) && ($me isop $chan) && ($chr(87) !isin $chan(#).mode)) {
    msg #zamora_ops Entra al canal de #zamora $+(Afectado:,$chr(160),$chr(2),$nick,$chr(2) [,$address,]) por: Usuario vigilado
 }
}
100
Ayuda scripting IRcap / Re:Entrada de rango de ipvirtual.
« Último mensaje por Hanna en Febrero 27, 2021, 02:09:34 am »
Buenas noches.

Estuve haciendo pruebas como me dijiste, pero sigue saliendo igual.

Código: [Seleccionar]
on *:JOIN:#zamora:{
  if ((AU31fE isin $address($nick,2)) && ($me isop $chan) && ($chr(87) !isin $chan(#).mode)) {
    msg #zamora_ops Entra al canal de #zamora $+(Afectado: ,$chr(2),$nick,$chr(2) [,$address,]) por: Usuario vigilado
  }
}

Mensaje en el canal debug:

<@Zamora> Entra al canal de #zamora Afectado:Edi [ircap@dt2.nAl.AU31fE.virtual] por: Usuario vigilado

¡Muchas gracias!
Páginas: 1 ... 8 9 [10]