Acceder · Crear usuario
Anunciarse
Canal Personal   GONZO · Mia

Categoría IRC

Trabajar con datos en Scripting mIRC

Una carencia del lenguaje Scripting de mIRC es el trabajo con bases de datos. Si haces un bot de un juego más o menos complejo necesitarás almacenar datos de cada jugador con puntuaciones o configuraciones, o un bot que se encarge de recopilar datos para estadisticas por ejemplo, en cualquier caso necesitarás un sistema para almacenar los datos y trabajar con ellos de la forma más rápida posible. Entre las opciones que a uno se le puede ocurrir estan trabajar con variables pero es mala idea, porque es posible que se borren en un mal cierre y a la hora de hacer copias de seguridad no es nada facil, aunque la velocidad sea optima no se puede usar. Otra opcion es guardar los datos en texto plano y mediante bucles, /write y $read() buscar y sacar la información, esta formula usé para programar la primera versión del VirtuaLPoL fue una solución válida pero su rendimiento era lamentable, además el coste de programación se desorbitó hasta tener más de 1300 lineas de código. Otra opción es añadir .dll especiales para el efecto como la dll para conectar a bases de datos SQL, pero no me gusta añadir addons ni dll al mIRC. La solución más fácil que propongo es trabajar con archivos .ini Son archivos cuya estructura permite guardar y extraer datos incluso sacar totales de items y similar. Su estructura es la siguiente:

[seccion]
item1=contenido del item1
item2=contenido del item2
Hasta aquí bien, usando /writeini y $readini() trabajas con los datos, ahorrando bucles y de forma muy eficiente. Pero surge un problema, al trabajar con nicks te das cuenta que estos tienen caracteres que el item no acepta entonces es imposible trajar bien con inis, pues la clave es el item y si trabajas con nicks y sus datos es necesario que el item sea el nick. La solución que propongo a este problema es codificar el nick con $encode($lower(ELNICK),m) de esta forma el nick [Prueba^_ se convertirá en W3BydWViYV5f que es aceptado como item. Ahora solo es añadir ese código cada vez que se tenga referenciar el item y problema resuelto. En el contenido puedes usar separadores (yo siempre uso ":" y ".") y con $gettok() gestionar los datos de cada item.

0 GONZO
03-07-2005

III Concurso de Scripting: Contar sílabas

Por fin he encontrado un momento para probar los códigos que me habeis enviado y hacer la clasificación del III Concurso de Scripting. Solo hemos participado 3 pero más que suficiente, sobre todo porque ha habido competencia y el reto era digno e interesante, o al menos eso opino yo. La clasificación quedaría así:

#1 Lz Sílabas: 729 Precisión: 100% en 50ms
#1 GONZO Sílabas: 729 Precisión: 100% en 2123ms
#2 hyphen Sílabas: 737 Precisión: 98.902% en 891 ms
#3 Matyas Sílabas: 719 Precisión: 98.628%


Pues así estan las cosas, Lz y yo empatados con plena precisión y nos sigen muy de cerca hyphen y Matyas, y cabe a destacar lo rápido que es el código de Lz y Hyphen y tambien el dialog que se ha currado Matyas.

Conclusión: Sacar las silabas de un texto no solo es posible si no que es fácil al menos obtener una precisión aceptable. Como puede verse cada participante ha seguido su estilo y cada uno funciona a su manera. El código de Lz y el mio son totalmente distintos aunque aciertan el pleno (seria interesante probarlo con un texto más grande, pero no tengo tiempo para hacerlo).

Gracias a todos una vez más por participar!

- Códigos participantes - 7kb
- Texto sílabas - 2kb
- III Concurso de scripting: Sílabas (la convocatoria)

2 GONZO
08-04-2005

III Concurso de Scripting: Contar sílabas

Comienza de nuevo el III Concurso de Scripting en mIRC, para todo el que quiera participar, en especial a la gente del canal #scripting.

Esta vez el objetivo será crear un código que cuente las sílabas total de un texto dado con la mayor precisión. Para ello damos un texto de pruebas (50 lineas y 729 sílabas (gracias a hackbot)) con el que podremos probar y comparar nuestros resultados y sera similar en tamaño y forma al texto oficial (100 lineas) en el que se probaran los resultados. Esta vez la velocidad de proceso no tiene importancia, lo único que importa es dar el número más aproximado posible.

El Domingo 27 (Sabado 2 de Abril) se acaba el plazo y todos los códigos que quieran participar deberan ser enviados a mi correo indicando nick y email (opcional). Como es costumbre todos serán publicados al finalizar el concurso.

- Texto de pruebas: texto-silabas-pruebas.txt (729 sílabas) - 2kb
- Wikipedia.org: Sílabas (por si surgen dudas ;)

[amplio el plazo una semana más. Hasta el Sabado 2 de Abril]

11 GONZO
21-03-2005

antídoto para IRC

Una oleada más de spamers azotan las redes de IRC. Esta vez un gusano que se propaga a sí mismo está haciendo spam de una dirección que contiene el virus. Entran a los canales grandes, de 300 personas para arriba y molestando al entrar continuamente y haciendo spam.

Al grano, el patrón es bastante bueno, nick y realname con lista pero el identd es generado por letras minusculas aleatorias de tamaño variable. Además la lista de nicks y realnames estara incluida en el virus y supongo que se podran obtener de alguna manera, otro punto debil. Pero lo que más va a facilitar el trabajo de eliminarlos es que todos tienen un away inconfundible, eso sera su fracaso.

He creado un pequeño código que los expulsa del canal, para ello necesita hacer whois cuando entra alguien al canal con el identd característico. Lo más seguro es que sea necesario +k ya que esta orientado para los bots de canales grandes. Mantendré actualizado al dia el script en este post por si saliesen nuevos patrones o posibles mejoras.

Descargar: antidoto.mrc 1.4 - 1kb

Instalación: Guardar como... > Colocar antidoto.mrc en raiz del mIRC > Modificar #ELCANAL por el canal en el que actuará > Ejecutar /load -rs antidoto.mrc

[code]; ######### antidoto ########### ; Programado por GONZO para redes de IRC ; Programa de libre distribución y modificación ; siempre que se respete la autoría del autor. ; [url=http://gonzo.teoriza.com]http://gonzo.teoriza.com[/url] - [email]gonzomail@gmail.com[/email] ; 1.4 - 24/02/2005

on 1:JOIN:#EL_CANAL: { if (($gettok($right($address($nick,0),-2),1,64) islower) && ($gettok($right($address($nick,0),-2),1,64) isalpha) && ($len($gettok($right($address($nick,0),-2),1,64)) >= 3)) { .timerANT 1 2 .whois $nick } set %antispamers.canal $chan } raw 301:*free*movies*p0rn*film*don*t*Membership*don*t*Money*don't*registration!!!*http*hardsex.tr.cx*: { antivirus.spamer $2 } raw 301:*hello*i'm*betty*do*you*want*fucking*me*http*hardSex.tr.cx*: { antivirus.spamer $2 } raw 301:*thousands*of*videos*and*photos*couples*gang*bangs*black*japan*slam,*jungle*fever*more*outdoor*indoor...*click*: { antivirus.spamer $2 } raw 301:*hi: { if (hi == $3) { antivirus.spamer $2 } } raw 301:*Do*you*want*chat*in*WEBCAM*girls?*WEBCAM*girls*only*here!*Don't*registration!*Don't*Membership!*one*Step*Overthere!!*Http*HardSex.tr.cx*: { antivirus.spamer $2 } raw 301:*0P0RN?video?FREE*tp://Amateur*girls?S*uch?I*nfo*naugthy?girls?only?here*Webcam?Girls?FREE*: { antivirus.spamer $2 } raw 301:*FREE?P0RN?Movies!!!?Flash!!!*Www.sevgiyeri.net/webcamgirls_prog.exe*: { antivirus.spamer $2 } alias antivirus.spamer { kick %antispamers.canal $$1 Esta infectado por un virus, por favor desinfectese. }[/code]

8 GONZO
02-02-2005

II Concurso de Scripting (indexacion)

Ya estan los resultados del II Concurso de scripting.

#1# viRCiaDo: 130ms + 100ms + 991ms = 1221ms #2# GONZO: 421ms + 270ms + 662ms = 1353ms #3# Racy: 30ms + 10ms + 1422ms = 1462ms

Bastante igualados, salvo Racy que al usar tablas hash para almacenar los datos ha ido muy rapido salvo en la busqueda del tiempo lo que por algun extraño motivo se ha retrasado muchosimo, a ver si puede explicarlo.

Como siempre podeis sacar vuestros propios resultados y ponerlos aqui entendiendo que pueden salir distintos por el procesador, numero de archivos indexados, velocidad del disco duro... ya sabeis.

Los codigos los podeis ver aqui.

También aprovechar para sugerir otros "retos" que os motiven más. Gracias a todos por participar.

4 GONZO
27-01-2005

II Concurso de Scripting (indexacion de datos)

Aprovechando lo bien que salio la secuela queda inaugurado el II Concurso de Scripting en mIRC.

Esta vez se trata de manipular e indexar datos, inspirado en la forma de trabajar de todos los buscadores de internet.

El objetivo es crear el mejor sistema de indexación para buscar más rápido. Para ello es obligatorio crear un programa que tenga dos partes: La primera crear un alias /indexar que indexe todas las rutas, tamaños y fecha de cada archivo que esté dentro del directorio c:windowshelp sin limitación de tiempo de proceso; y el segundo alias /buscar que haga una búsqueda de los tres tipos distintos de datos indexados y mostrará todas las coincidencias del tipo ISIN (...esta contenido en...) en un echo con el formato indicado al ampliar este post.

El tiempo a optimizar es la búsqueda, no interesa la indexación, para ello esta vez no solo habra que optimizar un bucle, también habrá que diseñar un sistema de indexación de datos que los guarde en archivos txt (sugerencia).

El plazo para la realización del reto es de 7 dias, el Sabado 22 de Enero se recogeran los resultados y se publicarán aquí junto con todos los códigos de los participantes. Todos seran probados en las mismas condiciones y una vez finalizado podreis publicar vuestros resultados aqui como hicimos la vez anterior.

Imprescindible pulsar en Ampliar para cualquiera que tenga idea de participar.

Un saludo a todos, que la lucidez os favorezca.

# Prohibido utilizar el identificador $findfile ni $finddir con el 2º parametro (el patron) con otro caracter que no sea *. Es decir solo se puede utilizar $findfile(ruta,*,N) y $finddir(ruta,*,N) # El alias que indexa se llama /indexar y indexará los archivos contenidos directorio c:windowshelp Puedes hacer las pruebas en cualquier otro, pero este es el oficial. # Se jugaran con 3 datos: ruta(Por ejemplo c:windowshelpaccess.chm), tamaño en bytes y fecha # La fecha indexada será la de creación del archivo: $file($findfile(c:windowshelp,*,N)).ctime # El alias /buscar tendrá un cronómetro de tiempo por $calc($ticks - %t) # El comando /buscar permitirá hacer la búsqueda de tres formas: * /buscar ruta <texto a buscar ISIN> * /buscar tamaño <tamaño en bytes (solo números)> * /buscar tiempo <tiempo a buscar en formato numérico (solo 9 numeros)> # En la búsqueda $4- no valdrá nada. # La búsqueda del tipo ruta sera ISIN y el resto == # Los resultados se mostraran con echo con el formato: Búsqueda> ruta - tamaño en bytes - fecha * Ejemplo: Busqueda> c:windowshelpaccess.chm - 39363Bytes - Vie Ago 24 12:00:00 2001 # No es necesario ningun orden especifico al mostrar los resultados. # Una semana de plazo. Hasta el Sabado 22 de Enero. Enviar vuestro código junto con vuestro nick(opcional) y email(opcional) a [email]gonzomail@gmail.com[/email] # Sin sensibilidad a mayúsculas. # Los resultados oficiales se calcularán en las mismas condiciones y realizando las mismas 3 búsquedas a todos los códigos participantes. # En caso de que dos códigos funcionen de la misma forma y el tiempo asi lo demuestre se consideraran empatados. # Se publicarán todos los códigos participantes respetando su autor en esta web. # Se probarán en un mIRC 6.16 a pelo. # Importante, crear un alias /desindexar que elimine todos los archivos y resetee variables resuduales. # Gana el que la media de tiempo de búsqueda sea menor.

Plantilla:

[code]; Nick: - Email: alias indexar { ; Indexa el directorio c:windowshelp entero, guardando los datos: ; $findfile(c:windowshelp,*,N) < --- ruta ; $file($findfile(c:windowshelp,*,N)).size <--- tamaño ; $file($findfile(c:windowshelp,*,N)).ctime <--- tiempo

} alias buscar { if (($1 == ruta) && ($2) && (!$3)) { var %t $ticks ; Busca por ruta. ISIN

} elseif (($1 == tamaño) && ($2 isnum) && (!$3)) { var %t $ticks ; Busca por tamaño. IF

} elseif (($1 == tiempo) && ($2 isnum) && ($len($2) == 9) && (!$3)) { var %t $ticks ; Busca por tiempo. IF

} echo 5 Busqueda realizada en $calc($ticks - %t) $+ ms }[/code]

12 GONZO
13-01-2005

Sin internet pero con IRC

Resulta que Anusko, teniendo conexión a internet de tarifa plana, en determinadas horas en las que no debería tener internet sí tiene IRC. Es decir no puede navegar, ni leer el correo, ni nada más salvo conectarse a chats del protocolo IRC. Suponemos que es un fallo técnico del proveedor de internet pero no encontramos explicación a porqué ocurre esto. Aunque se redireccione el puerto 80 sigue sin funcioner internet.

Curioso sin duda, ¿Alguien se atreve a decir porqué ocurre esto? ¿Alguna sugerencia?

[Nota: Tiene una conexión reducida de 8 a 8. ISP Cable R www.mundo-r.com y velocidad a 300/100 kb/s]

12 GONZO
06-01-2005

memo-ignore

Otro addon para IRC. Consigue simular un ignore de los mensajes MeMo de la red IRC-Hispano. Lo consigue ocultando los mensajes y borrandolos una vez que llegan. Tiene una lista de nicks a ignorar gestionada por los comandos /memoignore add NICK y /memoignore del NICK. Es un apaño sencillo hasta que se implemente en el IRCd. Como es costumbre pulsando en ampliar se visualiza el sencillo código para los curiosos scripters.

Descargar: memoignore 1.0 - 1kb

Instalación: Guardar como... > Colocar en raiz del mIRC como memoignore.mrc > Ejecutar /load -rs memoignore.mrc

3 GONZO
01-01-2005

anticlonesx Addon que detiene Clonesx, protección de canales IRC

Voy a publicar este addon ya que su resultado es realmente bueno y que es imposible mantenerlo privado. Así que lo publico para que pueda ser util a todo el mundo.

Se trata del anticlonesx Su función es bloquear y silenciar los ataques de clones a canales de IRC. En concreto solo anula los ataques producidos con el programa ClonesX osea la gran mayoría.

Lo que hace es analizar los patrones y cuando entran repetidamente usuarios con estos patrones se activa la maquinaria, lo primero que hace es fijar modos +RM durante 60 segundos, con lo que se bloqueara el canal esto lo consigue en el mismo segundo en el que entran los clones con lo cual solo podran entrar los que quepan en ese segundo normalmente no más de 10. Después los banea de forma anidada para que pueda poner más bans en menos tiempo (+bbbbbb). También incorpora un protector de querys masivos poniendo +R durante dos minutos en caso de activarse.

Con el comando /anticlonesx se activa o desactiva y para cargar el addon se coloca el archivo anticlonesx.mrc en el raiz del mIRC y se carga con /load -rs anticlonesx.mrc. Puedes ver el código sin necesidad de instalarlo pulsando en Ampliar pero para que funcione correctamente es necesario cargar con /load el archivo. Con el comando //set %anticlonesx.numeroclones N fijas el numero N de clones que tienen que entrar para activarse la protección.

Descargar: anticlonesx v1.3 - 7kb Instalación: Guardar como... > Colocar anticlonesx.mrc en el raiz del mIRC > Ejecutar /load -rs anticlonesx.mrc

[aclaración: He visto que ya existia otro anticlonesx de similar función, he de aclarar que esto no tiene nada que ver con el de EvilKing y Zyberdog y que la coincidencia del nombre ha sido por simple falta de originalidad]

[Actualización: publicada la nueva versión 1.3 del anticlonesx]

32 GONZO
28-12-2004

I Concurso de Scripting (optimización)

Felicidades al ganador! y gracias a todos los que han participado.

1º - 320ms - anónimo (gorriion#hotmail.com)

- 340ms - (empate técnico) kLoKeR - 340ms - (empate técnico) Lz (elezeta#gmail.com)

- 661ms - xlony

- 761ms - Racy (racy.2004#gmail.com)

- 771ms - Axayacatl

- 851ms - GONZO (gonzomail#gmail.com)

Los scripts se han medido en un 1333mhz Athlon XP 512mb en las mismas condiciones. Se han calculado 15 resultados por cada participante del cual ha sido obtenido el resultado más pequeño. Se pueden ver todos los scripts en: scripting-optimizacion.txt Animaros y postear aquí vuestras conclusiones de esto.

[Parece ser que los resultados son diferentes dependiendo del procesador y el disco duro. Por ello no entendais estos resultados estrictamente si no como una aproximacion, total nadie pierde ni gana nada. Cualquiera de confianza que quiera poner sus resultados que lo haga poniendo un comentario.] [Tambien he visto que faltan algunos participantes que por lo que sea no han enviado el email, sabed que aun estais a tiempo.]

7 GONZO
05-12-2004
Página siguiente ►◄ Página anterior
Blogs Teoriza
Ocio Tecnología Cuidarse Informática Contactos Cultura Vacaciones Interesante Místico Personal
Ocio Alarmas Intimidades Hosting Chat Poesías Hoteles CompraVenta Tarot GONZO
Juegos Tecnología Salud Adsl Messenger Mundo Viajes Videos Videncia Mia
CineTV Inventos Internet Música EnCrucero Polémicas
Deportes Virtual Seguridad ComoHacer Turismo Legalidad
Motor Ubuntu Actualidad
Hardware
Enlaces: Teorizo, MovilZona, Gordo navidad 2009, Loteria del Niño, Gordo 2009

Blogs Teoriza™ · Aviso Legal · · Red de Blogs en Español · 6ms · 2003-2009 ©