MIRC Scripting - If-then-else

7 - If-then-else

[editar]
Tutorial creado por t0m|ta. Extraido de: http://www.tomatoma.ws/subsecciones.php?forum_id=18&catid=20&todos=1
08 de Marzo de 2006
Bueno, esto ya es programación, la estructura If-Then-Else es común a casi todos los lenguajes de programación. Para los que entendemos inglés, su finalidad (aunque no su uso) resulta bastante lógico podríamos traducirlo cómo "Si_entonces_en Otro caso". Se trata de un condicional, en realidad es una forma de decir: Si esto es cierto, entonces haz esto, En otro caso haz tal otra cosa (o no hagas nada).
Veamos como funcionaría con pseudo con un ejemplo en castellano y en "pseudo código"
En castellano: Si el chico está bien adelante, y sino que le den.
En pseudo código

|| Código: ||
|| if (chico
bien) {
   adelante}
   }
else{
        que le den
         } ||

Dentro de mIRC, nos permite aumentar muchísimo la complejidad de nuestros scripts. Nos permite ejecutar una u otra parte del script en función de que se cumplan unas condiciones que nosotros mismos hemos establecido; con lo cual nuestras órdenes dejan de ser lineales y empiezan a "pensar" por sí mismas.
SINTAXIS

|| Código: ||
|| if (CONDICIÓN) { órdenes }
elseif (CONDICIÓN) { órdenes }
else { órdenes } ||


En realidad aquí lo que hacemos es poner una condición, y le decimos:
Si la condición se cumple, ejecuta estas órdenes
Si no se cumple, pero es cumple esta otra condición, ejecuta estas otras órdenes,
Y si no se cumple ninguna de las dos condiciones anteriores
If va seguido de una condición que tiene que cumplirse, esta condición es una comparación entre dos cosas, como hemos visto en el pseudo código.
Los operadores nos sirven para definir la relación que queremos comprobar entre los dos términos de la comparación, por ejemplo:
A > B (A mayor que B, ">" sería el operador mayor qué.
(ahora veremos los distintos operadores que podemos utilizar) y después van las órdenes, es decir si lo que va entre paréntesis es cierto, tienes que asegurarte de que las comparaciones (o condiciones) y las órdenes están bien, por cada condición (entre paréntesis) hay una orden o serie de órdenes (entre { })
Usar los { } agiliza el procesamiento del If_else. Utilízalos con generosidad, por ahorrarte un par de paréntesis en un alias, el if puede resultar ambiguo con lo que se ralentizaría su ejecución o incluso podría no funcionar correctamente o simple y llanamente no funcionar en absoluto.
Puedes anidar tantos if_else cóno necesites, unos dentro de otros. You can nest as many if-then-else statements as you want inside each other.
los operadores

igual a
  • Igual (si las toma en cuenta, por lo que tomatoma no será lo mismo que ToMaToMa)

  • != no es igual a
  • < menor que
  • > mayor que
  • >= Mayor o igual que
  • <= menor o igual que
  • múltiplo de
  • \\ no es un múltiplo de
  • & Comparación bitwise
  • isin la cadena v1 está contenida en la cadena v2
  • isincs string v1 está comprendido dentro del v2 (atendiendo a la diferencia entre mayúsculas y minúsculas)
  • iswm wildcard (cómodín) la cadena v1 es equivalente a la cadena v2
  • isnum el número v1 es un número que está dentro del rango de v2 que está en el formato n1 -n2 (V2 opcional)
  • isalpha la letra v1 es una letra en la lista de letras contenida en v2 (v2 opcional)
  • ison nick v1 está en el canal v2
  • isop nick v1 es operador del canal v2
  • isvo nick v1 tiene voz en el canal v2
  • isban si v1 es una dirección baneada en la lista interna de bans
  • ischan Si v1 es el canal en el que estás.
  • isauto Si v1 es un usuario en tu lista de autoop en el canal v2 v2 (v2 opcional)
  • isignore Si v1 es un usuario en tulista de ignores v2 (v2 opcional)
  • isprotect si v1 es un usuario en tu lista de protegidos en el canal v2 (v2 opcional)
  • isnotify Si v1 es un usuario en tu notify list.


  • Para negar un operador (es decir que signifique exactamente lo contrario, puedes añadirle ! antes del operador, por ejemplo:
    !isauto. quiere decir que la codición se cumple cuando ese nick no está en la lista de auto-op.

    || Código: ||
    || $ifmatch ||

    Devuelve el primer parámetro de la comparación, cuando se ha cumplido la condición, por ejemplo:

    || Código: ||
    || if (text isin sometext) { ...
    }
    $ifmatch devolverá  "text" ||

    Combinando comparaciones Puedes combinar comparaciones usando los caracteres && para "y" y || para "o"

    || Código: ||
    || number {
     if (($1 > 0) && ($1 < 10)) {
    if ($1 < 5) echo el número es menor de 5
    else echo el número es mayor de 5
    }
    else echo el número está fuera de rango 
    } ||
    Este alias mira a ver si el número que especifiques al teclear /number (valor) está dentro del rango especificado (menor de 10)
    Ejemplos

    || Código: ||
    ||
    listops {
    echo 4 * Lista de operadores en #
    set %i 1
    :next
    set %nick $nick(%i,#)
    if %nick
    $null goto done
    if %nick isop # echo 3 %nick es operador!
    inc %i
    goto next
    :done
    echo 4 * Fin de la lista de ops!!
    } ||
    Este alias hace una lista de los operadores del canal en el que estés. Lo hace de la forma difícil, pues podríamos hacermos simplemente usando $opnick() pero al usar $nick() lo podemos usar cómo ejemplo de cómo funciona el "isop" y cómo te devuelve un $null una vez que hayamos llegado al final de la lista.

    || Código: ||
    ||  GiveOps {
    %i = 0
    %nicks = ---:nextnick ---inc %i ---if ($snick(%i,#) == $null) { if ---($len(%nicks) > 0) mode # +oooo %nicks | halt } ---%nicks = %nicks $snick(%i,#) ---if (4 // %i) { mode # +oooo %nicks | %nicks = }
    goto nextnick
    } ||


    Esto es un popup que da op a los nick que estén seleccionados en la lista de nicks del canal en el que estés en ese momento.

    || Código: ||
    ||  on 1:ctcpreply:PING* {
    if ($2
    $null) halt
    else {
    %pt = $ctime - $2
    if (%pt <0) set %pt 0
    if (%pt < 5) echo 4 [PING reply] $nick Pero si estamos pegaos!!!!!
    elseif (%pt < 20) echo 4 [PING reply] $nick estás justo a la distancia perfecta 
    else echo 4 [PING reply] tierra llamando a $nick, Tierra llamando a $nick
    }
    halt
    } ||

    Esto intercepta el ping replay y en su lugar manda un mensaje tontísimo sóbre lo cercano que está el nick que nos ha hecho el ping.
    [editar]

    4 opiniones

    busco un remote

    hola .. estoy buscando un remote o un alias que sea capaz de grabar en un determinado lugar, por ejemplo un .txt , lo que se le diga que guarde, por ejemplo.... si alguien dice algo en determinado canal .. ke lo guarde en un .txt ke .. gracias...
    Alguien que me ayude es urgente.

    Tengo un gran problema y quisiera que alguien me ayudara esque me dejaran hacer un programa con la estructura if then else y este programa tiene que realizar busqueda de unos votantes espero que me puedan ayudar por que lo tengo que entregar mañana.
    El mejor y mas directo manual de scripting.

    Me ha costado encontrarlo pues esta un poco escondido pero me ha sorprendido por su sencillez. Mu bueno. Gracias, lo recomendare siempre que tenga ocasion. Gracias de nuevo.
    Siguen siendo.

    Lo mejor... Regards.

    Tutoriales relacionados con 'MIRC Scripting'

    MIRC dispone de un lenguaje de programación propio, que permite convertirlo en una de las... Más »
    Este artículo está basado en "A Scripting Guide to mIRC 6. 0" de blue-elf belf@mircscripter.... Más »
    Estudiamos una por una las posibilidades de personalización del mIRC, los sonidos, las grabaciones, las... Más »
    Estudiamos los diferentes menús del mIRC, y vemos algunas opciones de configuración sencillas que nos... Más »

    Autor y licencia de 'MIRC Scripting'

    Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
    Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.