Foro IRcap

Ayuda IRcap => Ayuda scripting IRcap => Mensaje iniciado por: Hanna en Junio 17, 2020, 09:28:07 pm

Título: Poner el W segun su ipvirtual
Publicado por: Hanna en Junio 17, 2020, 09:28:07 pm
Hola.

Hay un tema parecido pero al no ser igual he querido poner en un nuevo tema.

Tengo a un pesado en el canal, que al parecer repite parte de una ipvirtual pero lo demás es exactamente igual.
Me gustaría que cuando entrara alguien con esa ipvirtual se active el modo W pero en cambio si sale un usuario del canal o desconecta automáticamente quite el W.

Código: [Seleccionar]
on *:JOIN:#vigo:{
   if ((hQSK04 isin $address($nick,2)) && ($me isop $chan) && ($chr(87) !isin $chan(#).mode)) {
    mode $chan +W | ; msg #vigo_ops Se ha puesto el W
  }
}

on *:PART:#vigo:{
   if ((hQSK04 isin $address($nick,2)) && ($me isop $chan) && ($chr(87) !isin $chan(#).mode)) {
    mode $chan -W | ; msg #vigo_ops Se ha quitado el W
}
}

on *:QUIT:#vigo:{
   if ((hQSK04 isin $address($nick,2)) && ($me isop $chan) && ($chr(87) !isin $chan(#).mode)) {
    mode $chan -W | ; msg #vigo_ops Se ha quitado el W
  }
}

Pero cuando lo activo me sale constantemente:

Código: [Seleccionar]
#vigo:{ Unknown command
¡Gracias!
Título: Re:Poner el W segun su ipvirtual
Publicado por: Quetzalcoatl en Junio 17, 2020, 09:46:07 pm
el problema es el evento de quit
la sintaxis es
ON <nivel>:QUIT:<comandos>

el evento QUIT es uno donde no se puede especificar el canal, así como en el evento de NICK, se tiene que usar forzosamente una comparación si el nick que sale o es cambiado esta en el un canal predefinido con ison $chan

Código: [Seleccionar]
on *:QUIT:{
   if ((hQSK04 isin $address($nick,2)) && ($me isop $chan) && ($chr(87) !isin $chan(#).mode) && ($nick ison #vigo)) {
    mode $chan -W | ; msg #vigo_ops Se ha quitado el W
  }
}
Título: Re:Poner el W segun su ipvirtual
Publicado por: Hanna en Junio 17, 2020, 10:01:12 pm
Hola Quetzcoatl

¿Y cómo podría hacerlo?

Es que forzar comparación con el nick o en este caso con la ipvirtual no se hacerlo :(
Título: Re:Poner el W segun su ipvirtual
Publicado por: Hanna en Junio 22, 2020, 09:43:48 pm
Hola.

No había visto que editaste el mensaje, disculpame.

¡Muchas gracias!

Voy a probarlo :P

PD: Voto para ti
Título: Re:Poner el W segun su ipvirtual
Publicado por: Hanna en Junio 26, 2020, 08:16:33 pm
Hola.

Perdón por la tardanza, me funciona perfectamente, muchas gracias :D
Título: Re:Poner el W segun su ipvirtual
Publicado por: Quetzalcoatl en Junio 26, 2020, 08:49:23 pm
Me da gusto saberlo  :)
Saludos Hanna
Título: Re:Poner el W segun su ipvirtual
Publicado por: Cadaver en Junio 27, 2020, 06:21:43 pm
LOVE IS IN THE AIR!
Título: Re:Poner el W segun su ipvirtual
Publicado por: Gyk en Junio 29, 2020, 09:26:59 am
Buenas noches.

¿Es posible hacer que se active el W según su realname?

Y si es, cómo sería?

Gracias!!!!
Título: Re:Poner el W segun su ipvirtual
Publicado por: Quetzalcoatl en Junio 29, 2020, 05:14:48 pm
Hola GyK

En relacion a lo que preguntas, es posible agregando un /who al nick que entre, en este caso tomando el ejemplo de codigo que se propuso por Hanna seria:
on *:JOIN:#vigo:{ who $nick
....aqui va el codigo original
....aqui va el codigo original
}
Esto lanzaria un who a todo nick que entre en #vigo, y por medio del raw 352 obtendriamos los datos completos del nick excepto el canal en el que se encuentra, por lo que se debera especificar el canal en una variable llamada %canal o cualquier tipo de identificador que sea comodo de usar y quedaria algo como:
Código: [Seleccionar]
raw 352:*:{
var %canal #vigo
if ($6 !isin %canal) { return }
if ((hQSK04 isin $9-) && ($me isop %canal) && ($chr(87) !isin $chan( $+ %canal $+ ).mode)) {
 mode $chan +W | msg $+(%canal,_ops) Se ha puesto el W debido a $6 fullname no permitido $9-
 }
}

la parte del if que compara hQSK04 con $9, obviamente se debe cambiar hQSK04, por la palabra a sancionar.

No he probado el código, pero la idea basica, es esa.

Saludo.
Título: Re:Poner el W segun su ipvirtual
Publicado por: Gyk en Julio 01, 2020, 09:57:17 pm
Buenos días.

Muchisimas gracias, excelente código, pero tengo una pregunta.

Si quiero que se active con toda palabra que contenga *kiwiirc*

Y lo he probado y no pone el modo cuando alguien entra con esa parte en la fullname

Código: [Seleccionar]
raw 352:*:{
var %canal #vigo
if ($6 !isin %canal) { return }
if (( *kiwiirc* $9-) && ($me isop %canal) && ($chr(87) !isin $chan( $+ %canal $+ ).mode)) {
 mode $chan +W | ; msg $+(%canal,_ops) Se ha puesto el W debido a $6 fullname no permitido $9-
 timerkiwiirc 0 100 mode $chan -W
 }
}

¡Gracias!!!!!
Título: Re:Poner el W segun su ipvirtual
Publicado por: Quetzalcoatl en Julio 01, 2020, 10:07:41 pm
creo que ya, lo habían preguntado antes en otro post, pero el * dentro de una if no lo toma como comodines, debido a eso esta el isin, si le quitas  los asteriscos te debe funcionar.
Título: Re:Poner el W segun su ipvirtual
Publicado por: Gyk en Julio 01, 2020, 11:04:36 pm
Hola.

¡Gracias por responder!

Pero si pongo solo kiwiirc y la fullname es: [http://kiwiirc.com]

¿Funcionaria?

¡Gracias!
Título: Re:Poner el W segun su ipvirtual
Publicado por: Quetzalcoatl en Julio 01, 2020, 11:24:23 pm
si por que isin = es en es un operador de comparacion si una palabra y/o conjuntos de caracteres estan en él
ejemplo si tenemos a %x y a %Y y usamos

if (%x isin %y) { echo -s la condición es verdadera }
o //echo -s $iif(%x isin %y,cierto,falso)
donde los valores pudieran ser x =1 y Y= 100, solo compara el 1 si lo contiene 100, y donde si se admiten comodines( ya sea * o ?) es cuando lleven  iswm e iswmcs ya que es para casos mas sensibles pudiendo separar mayúsculas o minúsculas.

saludos

Pd: todo esto y mas se puedes encontrar en el manual de ayuda en la seccione de operadores lógicos
Título: Re:Poner el W segun su ipvirtual
Publicado por: Gyk en Julio 02, 2020, 11:28:33 pm
Hola.

¡Muchisimas gracias!!!!  ;D ;D ;D

PD: Voto para ti  :P