Publicado por: rayco
« en: Marzo 04, 2021, 09:28:40 am »Buenas.
Ahora si funciona perfectamente, infinitamente las gracias!!!
PD: Voto para ti
Ahora si funciona perfectamente, infinitamente las gracias!!!
PD: Voto para ti

Postea tus dudas sobre IRC o IRcap. Nosotros te ayudaremos.
on *:join:#canal:{
if ($nick == $me) { return }
; -- Crear 3 variables. Para identificar mejor los usuarios del canal, el máximo 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)
echo $chan --> [codigo]-LIMITES Usuarios ==> %usuarios Limite.Max ==> %limite.max
; -- 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 }
}
08:06a Join: Botocito [ B@Botocito.del.canal ]
08:06a glencoe.chathispano.com pone modo +o Botocito
08:06a Botocito pone modo +l 10
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 }
echo $chan --> [codigo]-LIMITES Usuarios ==> %usuarios Limite.Max ==> %limite.max
}
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 }
echo $chan --> [codigo]-LIMITES Usuarios ==> %usuarios Limite.Max ==> %limite.max
}
echo $chan --> [codigo]-LIMITES Usuarios ==> %usuarios Limite.Max ==> %limite.max
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 }
}
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) }
}
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 110else {
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.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
}
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 }
}
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) }
}
le falta un cierre de paréntesis en la condiciónCódigo: [Seleccionar]if (($chr(108) isin $chan($chan).mode) && ($gettok($chan(#chan).mode,2,32) > 100)) { mode $chan +l 100 }
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)
}
}
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) }
}
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)
}
}
if ($chr(108) !isin $chan($chan).mode) { mode $chan +l 100 }