evann Posted December 14, 2009 Share Posted December 14, 2009 Hello All! Brand new Autoit user here to pick your brains. I have some basic coding/scripting experience, but new to Autoit. I'm trying to build a script to monitor text in a mud-type game window, and write certain strings to a log file, ignoring the rest of the text. I have no need to send any commands or information. I have made a script that can read a text file and capture and save strings, but I do not know how to capture from the game interface. Any pointers or suggestions where to look for enlightenment? Evann Link to comment Share on other sites More sharing options...
jvanegmond Posted December 15, 2009 Share Posted December 15, 2009 Hello All! Brand new Autoit user here to pick your brains. I have some basic coding/scripting experience, but new to Autoit. I'm trying to build a script to monitor text in a mud-type game window, and write certain strings to a log file, ignoring the rest of the text. I have no need to send any commands or information. I have made a script that can read a text file and capture and save strings, but I do not know how to capture from the game interface. Any pointers or suggestions where to look for enlightenment?EvannI'm happy to enlighten you. You want to computer to read some text. But there is an important difference between text, and text. Let us have a look at the following example:This is some text.In fact, both are text for us humans. We can read it just fine, because that's the way we work. We recognize a series of pixels, we see a pattern and match it to a character we already recognize. However, for a computer; text is much different! A text, or often called a string, for a computer is a list of characters. It's a sequence of bytes. For example the string "abc" is represented (in a common format called ASCII) as 97 98 99. On your screen this is represented to you by a certain pattern of pixels (depending of the font you are using). That's what your game is doing; It represents you these pixels, and these are what you want to read.However, there is an important realization to make here. Your computer may lose all knowledge of a string, when it is converted to pixels for display on your screen.We can see the difference here clearly. The following is a sequence of characters, using a font it is turned into pixels, and displayed on your screen. Your computer retains the original meaning of the text, and you can even change the font and the pixels that are shown changes:This is some text.This on the other hand:You can read it as text just fine. However, to your computer this is an image. All references to the original text are lost, because it has been turned into pixels on another machine. Then the pixels have been pushed over a wire, and put on your screen, that's what you're looking at now.The question for your application now is;Can you retrieve the text from your game on such a basic level where the computer still has the original text? If that's possible, great! This is an easy job, your computer only needs to relay the information to you.If that's not possible, we will need to make your computer learn how to read text like a human. It must look at some pixels, and then decide which character is represented there. This is a massively complex task because of all the different fonts, and because it must seperate the background from the text in the foreground. This process is called optical character recognition.For now, I hope I have shined a shiny light onto your problem and that you will find your own way. If that seems impossible, try to go as far as you can and see if you can ask any more specific questions at that point. github.com/jvanegmond Link to comment Share on other sites More sharing options...
evann Posted December 16, 2009 Author Share Posted December 16, 2009 Thanks for the reply. At this point I'd guess here that the text is available at my end, as the user interface here does have a log function that can be turned on, and generates a basic notepad text file of all the text that scrolls by in the window, both localy generated and received from the server. My problem is, I don't want all of it, just certain strings. Now, I could let it log everything into these monster text files and parse out the pieces I want easy enough, But I'd just as soon do it in one go, and avoid the huge files. The 'control' that displays the text is as follows, according to autoit window tool (assuming I am using it correctly, of course) >>>> Control <<<< Class: ScrollText Instance: 9 ClassnameNN: ScrollText9 Advanced (Class): [CLASS:ScrollText; INSTANCE:9] ID: 15051528 Text: Position: 218, 255 Size: 910, 396 ControlClick Coords: 677, 230 Style: 0x50000000 ExStyle: 0x00000000 Handle: 0x00010276 As far as I can tell it is this control that displays the incoming and outgoing text. As stated before, I don't care to modify either incoming or outgoing, merely monitor and grab certain strings as they are displayed. But... I do not know how to read from this. Evann Link to comment Share on other sites More sharing options...
jvanegmond Posted December 17, 2009 Share Posted December 17, 2009 Check the visible text and hidden text windows on the window info tool. If you can see the text there, you can get it easily. If not, then the log file is probably your best solution. github.com/jvanegmond Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now