MIRC Scripting - Errores comunes con los condicionales Por Blue-Elf

9 - Errores comunes con los condicionales Por Blue-Elf

[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
Este mini artículo resume los errores más comunes (y no tan comunes) en que incurren los scripters, casi todos relacionados con el uso del "if".
UTILIZANDO LOS OPERADORES >= Y <= Recuerda siempre que estos operadores deben ser consistentes.
Este código es incorrecto:

|| Código: ||
|| If ($1 => $2)
If ($1 =< $2) ||


La utilización correcta es:

|| Código: ||
|| If ($1 >= $2)
If ($1 <= $2) ||


Cómo puedes ver, el signo igual, siempre va detrás. Ten en cuenta también que aunque, en algunos lenguajes de programación <> significa no igual, en mIRC tienes que utilizar != para significar "no igual".

|| Código: ||
|| UTILIZANDO ISIN ||


Muchos scripters abusan de este operador, lo que lleva a muchos errores. Por ejemplo:

|| Código: ||
|| if ($right($1,4) isin .mp2 .mp3) ||


Lo que el scripter pretende es detectar si $1 acaba en mp2 o mp3, pero puede dar lugar a error si el final de $1 es 2.mp, por ejemplo. Una forma mejor de hacerlo es:

|| Código: ||
|| if (*.mp? iswm $1) && ($right($1,1) isnum 2-3)) ||


o

|| Código: ||
|| if (($right($1,4)
.mp2) || ($right($1,4)
.mp3) ||

Es un código más extenso, pero más preciso. Esto es aplicable en muchos sitios, y aunque a veces no tenga importancia, puede ser "la diferencia" en algunas ocasiones.

|| Código: ||
|| ISIN AND $ISTOK ||


Algunas veces se utiliza ISIN para comprobar que algo está dentro de una lista, sin embargo, $istock ($findtok) es una forma mejor de hacer esto. Por ejemplo:

|| Código: ||
|| shelp {
if ($1 isin j p plist addpack doffer) goto $1
commands
} ||
Este código probablemente daría error si el usuario teclease /shelp a, algo que el scripter no quería. La forma correcta de hacerlo sería:

|| Código: ||
|| shelp {
if ($istok(j p plist addpack doffer, $1, 32) goto $1
commands
} ||


El identificador $istok buscará únicamente pallabras. El 32 es el código ascii de un espacio, que es lo que separa los tokens, o palabras aquí.
RETURN AND HALT
Aunque no está directamente relacionado con el uso del If condicional, este es uno de los errores más graves que cometen los scripters: no saber cuando usar /halt y cuando utilizar /return puede dar lugar a muchos problemas:
/halt: Para completamente el script, y también cualquier comportamiento por defecto del mIRC.
/return: Para sólo esa parte del script.
Por ejemplo, los scripters, crean alias a los que se puede llamar desde otras partes del script:

|| Código: ||
|| alias do {
msg $1 $2
halt
}
On +100:text:*:#:{
do $nick $1
echo $nick sent $1- to you
} ||

En este ejemplo, el /echo en el evento On text, no funcionará porque se utiliza un /halt ene l alias, que paraliza todo el script, mientras que si se hubiera utilizado /return, el echo si funcionaría, luego el código correcto es:

|| Código: ||
|| alias do {
msg $1 $2
return
}
On +100:text:*:#:{
do $nick $1
echo $nick sent $1- to you
} ||

Con este código el echo si funcionará porque se ha utilizado /return en lugar de /halt. Un error muy común de mala utilización del /halt es con ifs, dentro de los elses, por ejemplo:

|| Código: ||
|| alias do {
if ($1 < %blah) { %blah = $1 }
else { halt }
} ||


Este código puede tener la intención de llevar la cuenta más alta de algo. Sin embargo, si el If falla, el alias pararía cualquier script o alias que lo hubiera llamado, que probablemente no sea lo que se pretendía. Se debería haber utilizado un "return" o simplemente no haber utilizado el else en asoluto.
Artículo Original: http://www.pairc.com/cgi-bin/a-view.cgi?user=0&code=12
[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.