Página 1 de 1

Bot en alemán, ¿cómo lo españolizo?

Publicado: 02 Dic 2009, 19:50
por Ana
Hola, estoy muy contenta de haberos encontrado, sois lo único en castellano sobre Autoit que una se puede echar a la cara! es un descanso tremendo para mí, después de los días que llevo dale que te pego con el alemán y el inglés!

A ver, soy supernovata, lo primero, no conocía ni la existencia del Autoit hace diez días, y ahora quiero ponerme a hacer cosas de profesional, je, pero en fin, yo os cuento mi problema y vosotros me diréis si estoy loca o si es posible hacerlo.

Tengo un bot en alemán para un juego de web que existe tanto en España como en Alemania y en otros países. El problema es que no funciona en un servidor español con una cuenta española, así que desde mi ignorancia total me he puesto a tratar de modificarlo para que funcione. No soy más que una usuaria de nivel medio-bajo de windows. Ahí queda eso.

He ido línea por línea, con la página de ayuda de autoit al lado (y vuestra traducción, que también ayuda, gracias!) y creo que más o menos me hago una ligera idea de para qué sirve casi todo lo que pone en el script. Más o menos.

Entonces lo que hago es modificar la página web que utiliza el script como referencia, y los datos de usuario y contraseña. Pero nada de nada. Hace falta modificar algo más, y no doy con lo que es, por más vueltas que le he dado.
No me importa que el bot siga funcionando en alemán y que los textos aparezcan en alemán, a estas alturas ya sé lo que significa casi todo. Lo que necesito es que funcione, simplemente, creo que después traducir todo eso sabré hacerlo.

Qué hago, os pego aquí todo el script original (son 782 líneas, no sé si eso es abusar) y os digo después qué líneas modifico y cómo? O mejor me pego un tiro ya? :smt030

¿Hay alguien ahí? :smt022

Re: Bot en alemán, ¿cómo lo españolizo?

Publicado: 02 Dic 2009, 20:34
por XPyro
Hola Ana bienvenida a este tu foro de AutoIt en Español.

Para poder ayudarte sobre el Script tendríamos que verlo e igual tener que usar el juego, pero no dudo que muchos de por aquí no lo quieran intentar :smt002

Puedes pegar el Script o subirlo para descargarlo y esperamos poder ayudarte :smt006

Re: Bot en alemán, ¿cómo lo españolizo?

Publicado: 02 Dic 2009, 21:25
por Ana
Pues os agradecería muchísimo cualquier orientación que me podáis dar, porque sospecho que por mis propios medios jamás conseguiré averiguar dónde está el problema. El juego es http://www.molehillempire.es , un jueguecillo de plantar patatas y lechugas, ya ves en qué pierde una las horas, en plantar patatas cibernéticas y traducir del alemán extraños bots... ay, señor.

http://rapidshare.com/files/315363774/W ... 0.au3.html he subido aquí el archivo porque en el foro no se me permite subir .au3 (qué paradoja, ejje)

Todos mis empeños los he puesto en cambiar la parte de _logindaten() , y después de probar de mil formas, no ha servido. Entiendo, vamos digo yo, que las líneas de GUI que son para los dibujillos y los botones y tal no tienen relevancia en este asunto. Vamos, digo yo, imagino que eso es un asunto de estética nada más. Además, lo que falla al ejecutar el bot es el login, no acepta el nombre de usuario ni la contraseña.


Un millón de gracias para cualquier cosa que me podáis decir! :smt002

Re: Bot en alemán, ¿cómo lo españolizo?

Publicado: 02 Dic 2009, 23:01
por MaTaXeToS
Hola ana, no se si podre ayudarte, pero bajo mis pocos conocimientos que tengo, que por no mentir, hace 2 dias que he conocido autoit.

Creo que el problema esta en este codigo:

Código: Seleccionar todo

Global $aWares[65] = ["", "Kirsche", "Salat", "Erdbeere", "Apfel", "Tomate", "Karotte", "Aubergine", "Brombeere", "Zwiebel", "Himbeere", "Johannisbeere", "Gurke", "Pflaume", _
		"Radieschen", "Paprika", "Zucchini", "Mirabelle", "Kuerbis", "Walnuss", "Spargel", "Birne", "Kartoffel", "Brunnen1", "Brunnen2", "Dekosteine", "Gehweg1", _
		"Gehweg2", "Gehweg3", "Pavillion1", "Pavillion2", "Pavillion3", "Blumenkohl", "Brokkoli", "Heidelbeere", "Knoblauch", "Spinat", "Sitzecke", "Zengarten", _
		"Teich", "Steinkreis", "Unkraut", "Baumstumpf", "Stein", "Gartenzwerge", "Maulwurf", "Gehweg4", "Kugeln", "Sonnenblume", "Ringelblume", "Rose", "Lilie", _
		"Kornblume", "Orchidee", "Krokus", "Olivenbaum", "Feuerstelle", "Vogelscheuche", "Gerbera", "Lavendel", "Tulpe", "Rotkohl", "Sandkasten", "Rutsche", "Kaffee"]
Global $sWares = "Karotte|Salat|Gurke|Erdbeere|Tomate|Zwiebel|Radieschen|Paprika|Kartoffel|Blumenkohl|Brokkoli|Knoblauch|Spinat|Sonnenblume|Ringelblume|Aubergine|Brombeere|Himbeere|Johnnisbeere|Zucchini|Spargel|Heidelbeere"
Esto es un array que tiene las cadenas de texto de la web, lo cual estan en aleman.
Creo que el bot trabaja basandose en la busqueda de dichas palabras y actuando dependiendo de cada una de ellas, al estar en aleman, el bot busca en la web, y como no las encuentra, por eso no avanza..

Eso es lo que creo, pero bueno, intentare buscar más afondo y intentare comentarte algo.

Re: Bot en alemán, ¿cómo lo españolizo?

Publicado: 03 Dic 2009, 01:23
por Chefito
Bienvenida. Intentaremos ayudarte en todo lo posible :smt002 .
Por cierto, una chica! En el foro se hecha de menos el sexo femenino :smt005 . Espero que te quedes con nosotros mucho tiempo :smt002 .

Mmmmm.....he estado mirando el código y tienes que cambiar muchas cosas.
Para empezar tienes que poner perfectamente el nombre, usuario y servidor de la página en español. Esto se guardará en un archivo .ini.
Después tienes que cambiar instrucciónes _IE.... que accedan a los objetos por el texto que contiene el objeto o cualquier otra función que utilice texto para hacer su acción. Por ejemplo, seguramente no te pasa del principio porque en la función para logearte (_login()), al hacer _IELinkClickByText($oIE, "Einloggen") no cliquea, ya que no existe ningún objeto con este texto. En español sería _IELinkClickByText($oIE, "Iniciar"), ya que el botón que intentas cliquear tiene ese texto.
Mucho cuidado con esto.
También he visto que tienes que cambiar mucha direcciones web que acceden a la aleman.
Por ponerte un ejemplo dentro del código:

Código: Seleccionar todo

	_IENavigate($oIE, "http://s" & $userserver & ".wurzelimperium.de/garten_map.php?garden=" & $garten & "")
	_status("Bitte Warten. Garten wird neu Geladen")
	_IENavigate($oIE, "http://s" & $userserver & ".wurzelimperium.de/main.php?page=garden")
Pero hay muchas más.

Luego tendrás que cambiar los texto que busca en el código html. Por ejemplo:

Código: Seleccionar todo

		$sHTML = $oElement.outerHTML
		If _feld_info($i) == 1 And Not StringInStr($sHTML, "gegossen") And Not StringInStr($sHTML, "_04.gif") Then
Seguro que gegossen no está en la página en español :smt005 .

También tendrás que mirar los nombres de las imagenes y otros objetos. Ejemplo:

Código: Seleccionar todo

Func _Erntenklick()
	_IEImgClick($oIE, "ernten.gif", "src")
	_IELoadWait($oIE)
EndFunc   ;==>_Erntenklick

Func _Giessenklick()
	_IEImgClick($oIE, "waessern.gif", "src")
	_IELoadWait($oIE)
EndFunc   ;==>_Giessenklick

Func _Anpflanzenklick()
	_IEImgClick($oIE, "anpflanzen_out.gif", "src")
	_IELoadWait($oIE)
EndFunc   ;==>_Anpflanzenklick
En definitiva, cogete los códigos html de la página web en español y la alemana y empieza a comparar y a diferenciar en las cosas que te falle el script. Mira como lo han puesto en la española y cambialo.

Saludos.

Re: Bot en alemán, ¿cómo lo españolizo?

Publicado: 03 Dic 2009, 16:56
por Ana
¡muchísimas gracias a los dos por vuestra ayuda! sois unos máquinas!
Madre mía, qué mala es la ignorancia, yo pensaba que las palabras en alemán eran una cuestión secundaria, y resulta que el bot se rige con ellas, qué cosas! ahora mismo me voy a poner a repasar, línea por línea, otra vez siguiendo vuestros consejos, a ver qué consigo. Me conformaría con que funcionase mal, pero al menos funcionase, la verdad, para mí sería un triunfo.

Ya os contaré cómo me va con los nuevos cambios. ¡A por él! ¡Prepárate, maldito bot alemán, esto es la guerra! :smt001





Nota: por cierto, qué pequeña es la red... yo también soy de albacete, chefito!

Re: Bot en alemán, ¿cómo lo españolizo?

Publicado: 03 Dic 2009, 18:48
por MaTaXeToS
Cualquier duda, ya sabes chica, para eso tamos :)
Cuando tengas algo, lo pegas aqui, asi todos podemos disfrutar del bot y aprender de las funciones que utiliza :)

Suerte con la guerra xDD

Re: Bot en alemán, ¿cómo lo españolizo?

Publicado: 06 Ene 2010, 21:06
por Ana
Por si alguien lleva más de un mes debatiéndose entre un mar de dudas, pasando las noches en vela, esperando saber algo sobre el resultado de mi lucha a muerte contra el maldito bot alemán, he aquí el fin de tantas dudas: he sido incapaz, total y absolutamente incapaz de españolizar el bot. Nada. Y mira que le he dado vueltas al muy :smt013 #\/@, mira que lo he atacado de frente y de lado, pero nada, es demasiado para mí. Eso sí, ahora sé algo más de alemán que al principio. Y algo más de autoit, claro. :smt002
Pero no todo está perdido: me ha gustado tanto lo poquito que he aprendido sobre autoit, que me he decidido a crear mi propio bot. Pues sí, para chula yo. De momento he empezado con algo sencillito, he creado un programilla para seleccionar la regadera y regar las plantitas del huerto, que nunca les viene mal algo de agua. Sólo diré que la primera vez que lo vi en funcionamiento, se me pusieron los pelos de punta y los ojos como platos viendo lo que a todas luces era MAGIA para mí: el puntero del ratón se mueve solo!!!
Pero los malvados programadores del juego me han tendido una trampa: han movido la altura de los dibujos, de un día para otro y sin previo aviso, y ahora las coordenadas que puse para los clicks de seleccionar regadera y regar las plantas ya no me valen. Así que me planteo un nuevo reto: conseguir que mi bot no dependa de ninguna coordenada, y se guíe de otra forma, detectando objetos, por ejemplo, estén donde estén, o algo similar. Si alguien tiene alguna sugerencia al respecto, aquí me tiene.

Y otra cosa, ya puesta a pedir: si alguien sabe de algún cursillo (en español) de autoit para principiantas, porfavor agradezco mucho el link.

Y por supuesto: Feliz año nuevo a todo el mundo! :smt035

Ah, os dejo el link de mi SuperMáquinaRegaderaAutomática de última generación: http://rapidshare.com/files/331327739/r ... a.au3.html Ya sé que es muy poquita cosa, pero ea, es que soy nueva, y yo estoy muy orgullosa de mi pequeño monstruo después de todo. Y me ha costado mucho conseguir que funcione!

Re: Bot en alemán, ¿cómo lo españolizo?

Publicado: 07 Ene 2010, 03:43
por Chefito
Hey! Creía que la única chica del foro nos había abandonado! :smt005

Respecto al código....pufffff....lo estás enfocando bastante mal :smt002 . Eso de hacerlo por clicks de ratón hay que evitarlo a toda costa si se puede :smt012 . Primero, trabaja con Internet Explorer ya que las funciones que trae AutoIt por defecto son para este explorador y te va a resultar más facil.
Segundo, yo intentaría coger el código que me interesase del bot aleman (miro lo que hace cada botón...plantar, regar, etc), analizarlo cuidadosamente, y comparalo con la página web en español.
Piensa que esto lo hacen creando objetos en javascript. Lo mejor es tratar con estos objetos directamente. También observa que ellos cliquean las imagenes por sus nombres. Y muchas más cosas :smt024 .
Vas a tener que mirarte las funciones en la ayuda de autoit que empiezan por _IE...... . También mira el código del bot aleman aunque sea un poco tedioso. Pero al final conseguiras algo decente. Seguro.
Si tienes muchos problemas dimelo y te intento poner un ejemplo.

Por cierto, no me di cuenta que me dijiste que eras de Albacete :smt005 . Quien sabe, lo mismo nos vemos este sabada al mediodia bebiendo un cubo de birras en el tejares y hablamos del tema :smt005 :smt005 .

Saludos.

Re: Bot en alemán, ¿cómo lo españolizo?

Publicado: 12 Ene 2010, 00:31
por BasicOs
@Chefito, muy bueno .. Es Ana pero sabemos si es solo un nick... Internet a veces engaña..Jajaja

Para pasarlo a español es tan facil como coger cada palabrita y pasarla por el diccionario por ejemplo:
Func _Erntenklick()
_IEImgClick($oIE, "ernten.gif", "src")
_IELoadWait($oIE)
EndFunc ;==>_Erntenklick

Sería en español:

Func _Cosecharclick()
_IEImgClick($oIE, "cosechar.gif", "src") ; no sabemos si en la versión en español es cosechar.gif o recoger.gif o recolectar.gif jeje :smt020
_IELoadWait($oIE)
EndFunc ;==>_Cosecharclick

Solo hay que mirar si cosechar al cambiarlo es porque el recurso se llama ernten.gif, entonces no podrías cambiarlo de nombre, ya que es el mismisimo fichero que está cliqueando.
O sea hay funciones que puedes pasar al español pero mirando como se llaman los recursos concretos y comprobarlo.
Salu2:)

Re: Bot en alemán, ¿cómo lo españolizo?

Publicado: 13 Ene 2010, 02:33
por Chefito
Jajajaja....tienes razón BasicOs, internet muchas veces engaña :smt005 .
Pero bueno, tengo la esperanza que no nos haya engañado. Pienso que nadie necesita engañar para que se le pueda dar ayuda.
Ya me conoces, por mi parte siempre intento ayudar sea chico, chica, cosa, extraterestre, etc :smt005 . Por esta razón no veo la necesidad de ningún engaño......pero nunca se sabe, siempre te queda una pequeña duda, no? :smt005 .

Saludos.

Re: Bot en alemán, ¿cómo lo españolizo?

Publicado: 14 Ene 2010, 20:31
por Ana
:smt022 pues vaya, yo que creí que había conseguido ALGO con mi pequeño bot-regadera-automática y resulta que no, que es una castaña.... ay
Uff, me pedís que vuelva otra vez a tomar como base el bot alemán, pero la verdad es que terminé muy harta, pero que muy harta de él, y de verme superada a cada línea. Lo que colmó el vaso fue que descubrí que no había que traducirlo todo, que en ocasiones el programa español utilizaba algunas palabras en alemán, y eso lo complica todo muchísimo.
En fin, no quisiera destruir las expectativas que mis Maestros han puesto en mí, pero la verdad es que me dí por vencida con lo del bot hace tiempo, y ya sólo aspiraba a conseguir que mi pequeña regadera automática de patatas funcionase medio en condiciones, nada más.

Con respecto a esas cañas en el tejares, hombre, yo estoy a favor, pero en el tejares no, que no hay manera de pillar taburete! Mejor en la paz, que también está petao siempre, pero a veces pillas mesa con algo de suerte! Claro que mejores son las tapas del tejares... um qué duda...

Re: Bot en alemán, ¿cómo lo españolizo?

Publicado: 19 Ene 2010, 01:42
por Chefito
Niña, no te desesperes :smt021 :smt002 . Investiga más, y lee....lee más autoit, más html y javascript. Yo lo que veo es que estás muy verde para intentar hacer lo que quieres :smt017 . Necesitas tener más conocimientos de lo anterior.
Mira, he hecho un pequeño ejemplo de una regadera automática. Te lo he explicado línea por línea. A ver si así te enteras algo :smt005 .
El ejemplo es muy simple, pero facilmente ampliable.
Primero tienes que cargar tu jardín en el Internet Explorer (esto se puede automatizar como lo ha hecho el bot alemán, pero como lo veo una cosa no muy complicada, no lo he hecho).
Después de cargar tu jardín, ejecuta el script. Si tienes plantadas lechugas o zanahorias y no las tienes regandose, se te regarán automaticamente :smt002 .
Puedes aumentar el array metiendo más productos....en alemán por supuesto. Lo que pasa que al principio solo me salen esas dos cosas y nada más.

Código: Seleccionar todo

#include <IE.au3>
Global $Productos[2]=["salat","karotte"]	;Lechuga, Zanahoria (en alemán).
Global $WebJuego = "http://www.molehillempire.es"
Global $oIE=_IEAttach("Molehill Empire")	;Ataco la página web con el jardín cargado ya.
$ImgRegar=_IEGetObjById($oIE,"giessen")	;obtengo el objeto imagen para regar.
$ImgRegar.click		;hago click en la imagen "regar" para regar después.
$oFrame = $oIE.document.garten		;obtengo el objeto jardín (garten).
For $i = 1 To 204	;recorro todos los cuadrados del jardín.
	$oElement = _IEGetObjById($oFrame, "f" & $i)	;cojo todos los objetos de los cuadros del jardín.
	;ConsoleWrite($oElement.outerhtml&@crlf)
	$TextoHtml=$oElement.outerhtml		;obtengo el texto html del objeto.
	For $n=0 to 1	;recorro el array y miro si hay lechugas o zanahorias en el jardín.
		;1º condición: Miro si la imagen de los recuadros del jardín es lechuga y zanahoria.
		;2º condición: Miro que no se esté regando ya en ese recuadro.
		If StringInStr($TextoHtml,$Productos[$n]) And StringInStr($TextoHtml,"gegossen.gif")=0 Then
			_IEAction($oElement, "click")	;si se cumple esa condición cliqueo ese recuadro para regar.
		EndIf
	Next
Next
La verdad es que no sería muy complicado hacer un bot en español....e incluso mejor que el alemán. Auque hay que reconocer que los compañeros alemanes se lo han currado y lo han dejado bastante mascado :smt001 . Buen trabajo por lo compas alemanes de AutoIt!!.
A ver si vas descubriendo cositas......sigue investigando el bot alemán y el código de la página.

Por cierto, a mi también me gusta "la paz", pero coger sitio es una odisea :smt005 . Ultimamente voy mucho a "El porche", que con la reforma y tal parece que dan mejores tapas y encima ahora también dan cenas......si quieres :smt002 .

Saludos.