Autor Tema: Extraño popups  (Leído 193 veces)

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

Desconectado ert0s

  • Novato
  • *
  • Mensajes: 21
  • Karma: +1/-0
Extraño popups
« en: Noviembre 12, 2011, 02:26:19 pm »
Hola a ver si me aclarais este codigo que he puesto en los popups, la intencion es averiguar de la lista de nicks del canal cual de ellos estan en el notify y saludarlos, primero he querido reunir en una cadena todos los nicks del notify y despues con un bucle revisar cada uno de los nicks de la nicklist y comprobar si esta dentro de la variable %notifilist. Pero en el menu no sale lo que yo queria, hay varias lineas que no tenia intencion que fueran opciones del menu, como un extraño "while 1 < 4"  etc.. algo he hecho mal.
Código: [Seleccionar]
.Saluda a los que estan en notify: {
  %ncont = 1
  :inicia
  %notiflist = %notiflist $notify(%ncont)
  while ( %ncont < $notify(0) ) {
    inc %ncont
    goto inicia
  }
  %ncont = 1
  :inicia2
  if ($nick(#,%ncont) isin %notiflist){
  %nicklist = %nicklist $nick(#,%ncont)
}
while ( %ncont < $nick(#,0) ) {
  inc %ncont
  goto inicia2
}
msg $chan %nicklist
unset %nicklist
unset %ncont
unset %notiflist
}
Saludos!

Desconectado Lokiyo

  • Administrador
  • Miembro Senior
  • *****
  • Mensajes: 491
  • Karma: +12/-0
  • Sexo: Masculino
    • El revoltijo de Lokiyo
Re:Extraño popups
« Respuesta #1 en: Noviembre 12, 2011, 03:11:02 pm »
Los menús tienen una estructura muy rígida, por lo que mi sugerencia sería que metieras ese código en un alias y el menú simplemente ejecutase el alias.

Desconectado ert0s

  • Novato
  • *
  • Mensajes: 21
  • Karma: +1/-0
Re:Extraño popups
« Respuesta #2 en: Noviembre 12, 2011, 03:57:51 pm »
Los menús tienen una estructura muy rígida, por lo que mi sugerencia sería que metieras ese código en un alias y el menú simplemente ejecutase el alias.
¿como lo pondria en el alias? y como lo ajecutaria posteriormente en el popus?.
En el los alias podria poner por ejemplo...
Código: [Seleccionar]
notf {
;codigo
}
¿y desde el popus lo ejecutaria simplemente nombrando "notf" ?

SykO

  • Visitante
Re:Extraño popups
« Respuesta #3 en: Noviembre 12, 2011, 09:16:45 pm »
 :-X tu error se deve a las "llaves" "{" "}"

apuesto ke en tu popup te sale algo komo:

while
msg
unset
unset
unset

y esto es por ke tu codigo de "Saluda a los que estan en notify" termina despues de   "%nicklist = %nicklist $nick(#,%ncont)" con la "llave" }

el problema en si es ke tienes la llave { junto al ) de esta linea observa:
  if ($nick(#,%ncont) isin %notiflist){

solo necesitas un espacio y todo se arreglara eh aki tu kodigo kon las "{" y "}" en su lugar:

Código: [Seleccionar]
.Saluda a los que estan en notify: {
  %ncont = 1
  :inicia
  %notiflist = %notiflist $notify(%ncont)
  while ( %ncont < $notify(0) ) {
    inc %ncont
    goto inicia
  }
  %ncont = 1
  :inicia2
  if ($nick(#,%ncont) isin %notiflist) {
    %nicklist = %nicklist $nick(#,%ncont)
  }
  while ( %ncont < $nick(#,0) ) {
    inc %ncont
    goto inicia2
  }
  msg $chan %nicklist
  unset %nicklist
  unset %ncont
  unset %notiflist
}


mira esto de las llaves es un problema ke muchos tienemos por ke bueno aveces no vemos bien ke hacemos... te rekomiendo utilizar el boton ke tiene { }... este boton alinea tu codigo dependiendo de tus { y }

http://www.youtube.com/watch?v=wPLrSvoYLCc

salu2 espero te ayude esto

Desconectado ert0s

  • Novato
  • *
  • Mensajes: 21
  • Karma: +1/-0
Re:Extraño popups
« Respuesta #4 en: Noviembre 12, 2011, 09:52:24 pm »
gracias SykO! me ha servido, tenias razon, ahora si funciona el codigo es otra historia jajaja, un ejemplo, en un canal con distintas personas, salen todos los del notify pero..ademas salen O y B que son BOTs de los servicios del Hispano y yo no quiero que salgan, ¿porque salen si yo no los tengo en el notify? saludos.

Desconectado Red_Erik

  • Moderador Global
  • Miembro Senior
  • ****
  • Mensajes: 371
  • Karma: +10/-0
  • Sexo: Masculino
Re:Extraño popups
« Respuesta #5 en: Noviembre 12, 2011, 10:44:49 pm »
Yo tendría en cuenta la sugerencia de Lokiyo y sacaría del popup todo el código, y pondría este en un alias. Además te sugiero que lo programes todo bajo la pestaña de remotes (alt + r , file, new) declarando en el código qué es un alias y qué es un popup. Así:

alias salunotify {
 %ncont = 1
  :inicia
  %notiflist = %notiflist $notify(%ncont)
  while ( %ncont < $notify(0) ) {
    inc %ncont
    goto inicia
  }
  %ncont = 1
  :inicia2
  if ($nick(#,%ncont) isin %notiflist) {
    %nicklist = %nicklist $nick(#,%ncont)
  }
  while ( %ncont < $nick(#,0) ) {
    inc %ncont
    goto inicia2
  }
  msg $chan %nicklist
  unset %nicklist  %ncont %notiflist
}

menu channel {
   .Saluda a los que estan en notify: salunotify
}

Desconectado ert0s

  • Novato
  • *
  • Mensajes: 21
  • Karma: +1/-0
Re:Extraño popups
« Respuesta #6 en: Noviembre 12, 2011, 11:31:19 pm »
no lo entendi bien, todo ese codigo en el remote? o en el alias?

Desconectado ert0s

  • Novato
  • *
  • Mensajes: 21
  • Karma: +1/-0
Re:Extraño popups
« Respuesta #7 en: Noviembre 13, 2011, 01:01:50 pm »
Lokiyo, SykO y Red_Erik, gracias por vuestras respuestas, solucionado el tema, aunque sigo teniendo la duda de porque me salen esos BOTs como si estuvieran en el notify,  me imagino que eso es ya cuestion del programador de script hacer la oportuna comprobacion de cada nick , si corresponde a un BOT fuera, si no añadirlo. Saludos :D

Desconectado Red_Erik

  • Moderador Global
  • Miembro Senior
  • ****
  • Mensajes: 371
  • Karma: +10/-0
  • Sexo: Masculino
Re:Extraño popups
« Respuesta #8 en: Noviembre 13, 2011, 04:20:36 pm »
Te sale el bot B porque B forma parte de la cadena %notifylist si algún nick de esa cadena contiene (y es muy probable que así sea) la letra B. Otro tanto te pasa con el otro bot. Isin no es el comparador adecuado, deberías usar un tokken. Por ejemplo:

 if ( $istok($nick(#,%ncont),%notiflist,32) ) {

El formato para $istok es $istok(aaaa,bbbb,num) , donde aaaa es la palabra a buscar en la cadena bbbb que está formada por palabras separadas por el valor en ascii de num.

$istok te devuelve $true si aaaa está incluida en bbbb. 32 es el valor ascii del espacio en blanco.

En tu caso, $istok dará $true si el nick ($nick(#,%ncont) es una palabra de la cadena %notiflist que contiene varias palabras separadas por el símbolo de valor ascii 32 (el espacio). En caso contrario, el if saltará a la siguiente línea de ejecución (al while).

Los tokkens pueden parecer difíciles de manejar, pero acaban siendo sencillos y útiles. Hay una docena de ellos, así que te toca estudiar. Cualquier duda, ya sabes.


Desconectado ert0s

  • Novato
  • *
  • Mensajes: 21
  • Karma: +1/-0
Re:Extraño popups
« Respuesta #9 en: Noviembre 13, 2011, 05:18:54 pm »
Te sale el bot B porque B forma parte de la cadena %notifylist si algún nick de esa cadena contiene (y es muy probable que así sea) la letra B. Otro tanto te pasa con el otro bot. Isin no es el comparador adecuado, deberías usar un tokken. Por ejemplo:

 if ( $istok($nick(#,%ncont),%notiflist,32) ) {

El formato para $istok es $istok(aaaa,bbbb,num) , donde aaaa es la palabra a buscar en la cadena bbbb que está formada por palabras separadas por el valor en ascii de num.

$istok te devuelve $true si aaaa está incluida en bbbb. 32 es el valor ascii del espacio en blanco.

En tu caso, $istok dará $true si el nick ($nick(#,%ncont) es una palabra de la cadena %notiflist que contiene varias palabras separadas por el símbolo de valor ascii 32 (el espacio). En caso contrario, el if saltará a la siguiente línea de ejecución (al while).

Los tokkens pueden parecer difíciles de manejar, pero acaban siendo sencillos y útiles. Hay una docena de ellos, así que te toca estudiar. Cualquier duda, ya sabes.
Gracias Red_Erik como siempre respuestas muy claras, probare los tokkens ;D

 

anything