
Chuuy
Active Members-
Posts
33 -
Joined
-
Last visited
Everything posted by Chuuy
-
Something Better Then PixelChecksum?
Chuuy replied to Chuuy's topic in AutoIt General Help and Support
Yeah, this is what I'm going to try to do. I'll be surprised if everything matches up though. Anyway, new thing: I have this code in Pascal, however, it calls some functions that I don't have. So I'm recreating the functions (this OCR stuff) in AutoIt. Is there someway I can make a .dll with AutoIt so that I can call functions in the .dll with Pascal? Thanks, Chuuy. -
Something Better Then PixelChecksum?
Chuuy replied to Chuuy's topic in AutoIt General Help and Support
Actually, I'm dealing with a rectangle of 6x10. So I performed 25,746 checksums in a second. However, that still doesn't solve the issue of me needing to take 21,000 different .bmp's to compare the checksums to. -
Something Better Then PixelChecksum?
Chuuy replied to Chuuy's topic in AutoIt General Help and Support
Sorry, but how is this supposed to help me? I downloaded it and watched a demo of a bunch of special effects, but I don't understand how that helps me read data from my screen. -
Something Better Then PixelChecksum?
Chuuy replied to Chuuy's topic in AutoIt General Help and Support
Whoops, sorry about the double post. I guess my internet lagged or something. But thanks, I'll check it out. -
I'm making a program that reads 42 different spots of the monitor. Now, each spot is basically a number with a color in the background. So, I need to be able to read the number along with the color. There are 5 colors, and an unlimited amount of numbers. However, usually they don't go above 100, so let's say the max was 100. That means that if I was trying to read a specific spot of the board, the program would have to compare 500 different images and return the vale of what the actual image is. Now, sometimes it has to read more then 1 spot in a span of 30 seconds. Sometimes it'll go up to 30 spots, sometimes 42. I'm not sure the computer can do all of that within 30 seconds. The other problem is, I don't want to have to Print Screen 42 x 5 x 100 = 21,000 different .bmp's. So, I was wondering if there's a simpler solution to this. Is there some sort of software out there that can read a number and the general background color? Thanks, Chuy.
-
Basically, I'm going to create a program that refreshes a web page ever minute or so, reads different parts of the web page, and then the bot does other stuff based on that. So, how can I read the web page? I know you can use IEBodyReadText, but if I know a specific spot a value will always pop up at, how do I read that? Also, is there a way the webpage can be refreshed and read while Internet Explorer stays minimized? Thanks.
-
Thanks! This is the second time that my NomadMemory.au3 has been outdated. Thanks again.
-
So lets say I have this: $Price = _MemoryRead(0x529B9F6D, $ah_Handle, 'short')oÝ÷ Øî²×!jxÛhjëh×6$Price = _MemoryRead(0x073B07C8, $ah_Handle, 'short') +0x04
-
Well, I'm using NomadMemory and I think I want the program to read address 073B07C8 with an offset of 04. I'm really confused and I can't find any examples. Here's a picture of my pointers.
-
For some reason, everytime I try to read memory, it always returns 0 with an @Error of 6. I'm using NomadMemory. Error 6 is: 6 = Failed to read from the specified process. I have no idea what causes this problem. Here's the code I came up with. Also, I bypasses Hackshields hook, so the fact that it usually hooks ReadProcessMemory() shouldn't be a problem. #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_Res_Description=Auto MTS Merchant #AutoIt3Wrapper_Res_Fileversion=0.0.0.32 #AutoIt3Wrapper_Res_FileVersion_AutoIncrement=y #AutoIt3Wrapper_Res_Language=1033 #AutoIt3Wrapper_Run_Tidy=y #AutoIt3Wrapper_Tidy_Stop_onerror=n #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <NomadMemory.au3> Dim $ah_Handle, $Hotkey, $Value1, $Value2, $Value3, $Value4, $Value5, $Price $ah_Handle = _MemoryOpen("MapleStory.exe") If $ah_Handle = 0 Then MsgBox(0, "Error", "_MemoryOpen Failed" & @error) $Hotkey = HotKeySet("{ESC}", "Quit") If $Hotkey = 0 Then MsgBox(0, "Error", "HotKeySet Failed") While 1 MouseClick("main", 1119, 199, 1, 0) $Value1 = _MemoryRead(0x525FB339, $ah_Handle, 'dword') If $Value1 = 0 Then MsgBox(0, "Error", "_MemoryOpen1 Failed" & @error) $Value2 = _MemoryRead(0x525FB33B, $ah_Handle, 'dword') If $Value2 = 0 Then MsgBox(0, "Error", "_MemoryOpen2 Failed" & @error) $Value3 = _MemoryRead(0x525FB941, $ah_Handle, 'dword') If $Value3 = 0 Then MsgBox(0, "Error", "_MemoryOpen3 Failed" & @error) $Value4 = _MemoryRead(0x525FB943, $ah_Handle, 'dword') If $Value4 = 0 Then MsgBox(0, "Error", "_MemoryOpen4 Failed" & @error) $Value5 = _MemoryRead(0x525FBF39, $ah_Handle, 'dword') If $Value5 = 0 Then MsgBox(0, "Error", "_MemoryOpen5 Failed" & @error) $Price = _MemoryRead(0x4721CED5, $ah_Handle, 'short') If $Price = 0 Then MsgBox(0, "Error", "_MemoryOpen6 Failed" & @error) If $Value1 = 4294077426 And $Value2 = 4294967282 And $Value3 = 1811939314 And $Value4 = 1811049471 And $Value5 = 4294077426 And $Price < 1149 Then MouseClick("main", 511, 183, 1, 0) MouseClick("main", 448, 366, 1, 0) EndIf WEnd Func Quit() Exit 0 EndFunc ;==>Quit
-
Nevermind, I guess not. I just simply need to convert this C++ code to AutoIt. BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: DisableThreadLibraryCalls(hModule); CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)MainWin, hModule, 0, NULL); break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: FinishedExit = TRUE; break; } return TRUE; }
-
EDIT: I think I got it, nvm.
-
#include <NomadMemory.au3> Dim $ah_Handle, $Hotkey, $Addy1 = 0x525FB339, $Addy2 = 0x525FB33B, $Addy3 = 0x525FB941, $Addy4 = 0x525FB943, $Addy5 = 0x525FBF39, $Addy6 = 0x4721CED5, $Value1, $Value2, $Value3, $Value4, $Value5 $ah_Handle = _MemoryOpen("MapleStory.exe") If $ah_Handle = 0 Then MsgBox(0, "Error", "_MemoryOpen Failed" & @error) $Hotkey = HotKeySet("{ESC}", "Quit") If $Hotkey = 0 Then MsgBox(0, "Error", "HotKeySet Failed") While 1 $ah_Handle = _MemoryOpen("MapleStory.exe") Sleep(250) $Value1 = _MemoryRead($Addy1, $ah_Handle, 'dword') If $Value1 = 0 Then MsgBox(0, "Error", "_MemoryOpen1 Failed" & @error) $Value2 = _MemoryRead($Addy2, $ah_Handle, 'dword') If $Value2 = 0 Then MsgBox(0, "Error", "_MemoryOpen2 Failed" & @error) $Value3 = _MemoryRead($Addy3, $ah_Handle, 'dword') If $Value3 = 0 Then MsgBox(0, "Error", "_MemoryOpen3 Failed" & @error) $Value4 = _MemoryRead($Addy4, $ah_Handle, 'dword') If $Value4 = 0 Then MsgBox(0, "Error", "_MemoryOpen4 Failed" & @error) $Value5 = _MemoryRead($Addy5, $ah_Handle, 'dword') If $Value5 = 0 Then MsgBox(0, "Error", "_MemoryOpen5 Failed" & @error) $Price = _MemoryRead($Addy6, $ah_Handle, 'short') If $Price = 0 Then MsgBox(0, "Error", "_MemoryOpen6 Failed" & @error) If $Value1 = 4294077426 And $Value2 = 4294967282 And $Value3 = 1811939314 And $Value4 = 1811049471 And $Value5 = 4294077426 And $Price < 1149 Then MouseClick("main", 511, 183, 1, 0) MouseClick("main", 448, 366, 1, 0) EndIf WEnd Func Quit() Exit 0 EndFunc ;==>Quit I'm trying to Read the Memory, but I keep getting @Error 6, Failed to read from the specified process. I have no idea why. All of the addresses are valid, yet it fails to read them all.
-
I'm having trouble with the TCPSend function. I keep getting WSA Error 10054: But this entire time, the game is open and everything. I don't understand why I'm getting that error message. Here's my code: Dim $Startup, $Socket, $Send, $ItemPacket, $Item, $Price, $ItemIDforSend $Startup = TCPStartup() If $Startup = 0 Then MsgBox(0, "Error", "TCPStartup failed:" & @error) HotKeySet("{ESC}", "Quit") $Socket = TCPConnect("63.251.217.122", 8989) If $Socket = -1 Then MsgBox(0, "Error", "TCPConnect failed:" & @error) If @error = 1 Then MsgBox(0, "Error", "The IP Address is incorrect.") If @error = 2 Then MsgBox(0, "Error", "The Port is incorrect.") While 1 $Send = TCPSend($Socket, 'F1 00 05 01 00 00 00 02 00 00 00 00 00 00 00 01 01 01 00 00 00 00 00') If $Send = 0 Then MsgBox(0, "Error", "TCPSend failed:" & @error) ; $ItemPacket = TCPRecv($Socket, 2048) ; $Item = BinaryMid ( $ItemPacket, 27, 3 ) ; $Price = BinaryMid ( $ItemPacket, 50, 3 ) ; $ItemIDforSend = BinaryMid ( $ItemPacket, start, 3 ) ; If $Item = 111001000010001100011111 And $Price < 100101100000101 Then ; $Send = TCPSend($Socket, 'F1 00 10' $ItemIDforSend) ; EndIf WEnd Func Quit() Exit 0 EndFunc ;==>Quit I know I already had a topic like this, but I spammed the crap out of it and asked a lot of stupid questions. So I wanted to make a new one. Feel free to close/delete that other one. o.o
-
Ok, I figured this out with the BinaryMid function. But, I'm having trouble with the TCPSend command. I keep getting WSA Error 10054: But this entire time, the game is open and everything. I don't understand why I'm getting that error message. Here's my code: Dim $Startup, $Socket, $Send, $ItemPacket, $Item, $Price, $ItemIDforSend $Startup = TCPStartup() If $Startup = 0 Then MsgBox(0, "Error", "TCPStartup failed:" & @error) HotKeySet("{ESC}", "Quit") $Socket = TCPConnect("63.251.217.122", 8989) If $Socket = -1 Then MsgBox(0, "Error", "TCPConnect failed:" & @error) If @error = 1 Then MsgBox(0, "Error", "The IP Address is incorrect.") If @error = 2 Then MsgBox(0, "Error", "The Port is incorrect.") While 1 $Send = TCPSend($Socket, 'F1 00 05 01 00 00 00 02 00 00 00 00 00 00 00 01 01 01 00 00 00 00 00') If $Send = 0 Then MsgBox(0, "Error", "TCPSend failed:" & @error) ; $ItemPacket = TCPRecv($Socket, 2048) ; $Item = BinaryMid ( $ItemPacket, 27, 3 ) ; $Price = BinaryMid ( $ItemPacket, 50, 3 ) ; $ItemIDforSend = BinaryMid ( $ItemPacket, start, 3 ) ; If $Item = 111001000010001100011111 And $Price < 100101100000101 Then ; $Send = TCPSend($Socket, 'F1 00 10' $ItemIDforSend) ; EndIf WEnd Func Quit() Exit 0 EndFunc ;==>Quit
-
#include <NomadMemory.au3> Dim $Item, $Price $Startup = TCPStartup() If $Startup = 0 Then MsgBox(0, "Error", "TCPStartup failed:" & @error) HotKeySet("{ESC}", "Quit") $Socket = TCPConnect("63.251.217.122", 8989) If $Socket = -1 Then MsgBox(0, "Error", "TCPConnect failed:" & @error) If @error = 1 Then MsgBox(0, "Error", "The IP Address is incorrect.") If @error = 2 Then MsgBox(0, "Error", "The Port is incorrect.") $ah_Handle = _MemoryOpen("MapleStory.exe") While 1 $Send = TCPSend($Socket, 'F1 00 05 01 00 00 00 02 00 00 00 00 00 00 00 01 01 01 00 00 00 00 00') If $Send = 0 Then MsgBox(0, "Error", "TCPSend failed:" & @error) TCPRecv($Socket, 2048) ; I set the max length of characters to a random number, I think it's enough for the packet listed below If $Item = 1082002 And $Price < 1355 Then $Send = TCPSend($Socket, 'F1 00 10 XX XX XX') EndIf WEnd Func Quit() Exit 0 EndFunc ;==>Quit Hi, it's me again. I'm basing the entire program off of reading and sending packets, but I have a few questions on recieving packets. Basically, when I TCPSend the first packet, it refreshes a list. When a new item is added to the list, I recieve a packet, which is what I'm trying to recieve in TCPRecv. Now, I want to read this packet. The packet I recieve will look like this: 37 01 15 A6 B8 00 00 10 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 01 01 02 E4 23 1F 00 00 00 80 05 BB 46 E6 17 02 02 00 00 00 00 00 2F 29 BE 01 8C 0A 00 00 72 01 00 00 00 00 00 00 00 D6 5B 5D A4 F1 C9 01 07 00 4D 61 78 41 75 72 61 0B 00 53 49 4E 64 55 52 75 6E 6E 69 6E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 E4 23 1F 00 00 00 80 05 BB 46 E6 17 02 01 00 00 00 00 00 2D 29 BE 01 6C 07 00 00 22 01 00 00 00 00 00 00 00 D6 5B 5D A4 F1 C9 01 07 00 66 75 6C 61 6E 6F 78 0C 00 52 6F 43 6B 53 74 61 52 6C 78 58 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 25 21 1F 00 00 00 80 05 BB 46 E6 17 02 01 00 00 00 00 00 29 29 BE 01 6E 00 00 00 6F 00 00 00 00 00 00 00 00 D6 5B 5D A4 F1 C9 01 09 00 61 6E 74 31 66 72 33 33 7A 0C 00 45 6E 74 68 75 73 69 65 73 74 69 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 41 2D 1F 00 00 00 80 05 BB 46 E6 17 02 01 00 00 00 00 00 20 29 BE 01 6E 00 00 00 6F 00 The red part is the item ID, and the green part is the price. When the item ID = E4 23 1F And Price < 4B 05 then send the second packet where XX XX XX = The part above highlighted in Blue. I didn't see anything in the help file about this, and neither did searching the forum. So could I get some help please? Thank you.
-
Alright thanks, but I'm having trouble with this, and it's not the most imporant part, so I'm just going to go back to clicking with MouseClick. However, a new question. It appears that they encrypted the price and that I can't read it out of memory, is it possible to use OCR or something of the sort to read the number? EDIT: Well, I've found a lot of examples over the forum, so lets see what happens. Update: Nevermind, I found the price in the memory. Should be good now.
-
No one knows about sending packets?
-
I'm having trouble trying to send packets. #include <NomadMemory.au3> Dim $Item, $Price $ah_Handle = _MemoryOpen("MapleStory.exe") $SocketID = TCPConnect(63.251.217.122, 8989) While 1 TCPSend($SocketID, F1 00 05 01 00 00 00 02 00 00 00 00 00 00 00 01 01 01 00 00 00 00 00) $Item = _MemoryRead(0x000000, $ah_Handle) ; Will change to correct address later $Price = _MemoryRead(0x000000, $ah_Handle) ; Will change to correct address later If $Item = 1082002 And $Price < 1355 Then MouseClick("main", 511, 183, 1, 0) ; Will set x and y later MouseClick("main", 448, 366, 1, 0) ; Will set x and y later EndIf WEnd I have the IP and port of what I want to send packets to, and I also have the packet. But I'm getting syntax errors. Do you solve this by putting quotes around the IP and packet? Because I did that, and it compiled, but it wasn't working.
-
Ooh, alright, thanks again!
-
Oh sorry, one more thing. Does anyone know anything about sending packets with AutoIt?
-
Alright, thanks a lot. I'm going to be expanding this into a bigger and more automated bot, so I'll post if I have any more problems, but for now, this is great and I need to load up Cheat Engine. Thanks.
-
Well, I was basically copying the functions along with the parameters from NomadMemory.au3, and he defined variables in the parameters. Unless you meant x and y under MouseClick, that's because each click is going to be in a different spot. Also, should I declare the value of $iv_Address as a local address? But that wouldn't work, because they're both different addresses. Should I just write in the address like below? So, this code would work fine for my purposes: #include <NomadMemory.au3> Dim $Item, $Price $ah_Handle=_MemoryOpen("MapleStory.exe") While 1 Local $iv_Address MouseClick("main", x, y, 1, 0) ; Will set x and y later MouseClick("main", x, y, 1, 0) ; Will set x and y later $Item=_MemoryRead(0x000000, $ah_Handle) ; Will change to correct address later $Price=_MemoryRead(0x000000, $ah_Handle) ; Will change to correct address later If $Item = 1082002 And $Price < 1355 Then MouseClick("main", x, y, 1, 0) ; Will set x and y later MouseClick("main", x, y, 1, 0) ; Will set x and y later EndIf WEnd
-
Well it's me again. I revised my code, and I believe this is correct syntax. Please check it over, thanks. #include <NomadMemory.au3> Dim $Item, $Price _MemoryOpen($iv_Pid =, $iv_DesiredAccess = 0x1F0FFF, $if_InheritHandle = 1) ; Will set PID later While 1 MouseClick("main"[, x, y[, 1[, 0]]]) ; Will set x and y later MouseClick("main"[, x, y[, 1[, 0]]]) ; Will set x and y later _MemoryRead($iv_Address =, $ah_Handle, $sv_Type = 'dword') = $Item ; Will set address later _MemoryRead($iv_Address =, $ah_Handle, $sv_Type = 'dword') = $Price ; Will set address later If $Item = 1082002 And $Price < 1355 Then MouseClick("main"[, x, y[, 1[, 0]]]) ; Will set x and y later MouseClick("main"[, x, y[, 1[, 0]]]) ; Will set x and y later EndIf WEnd
-
Well, I haven't added in the address to read for yet, I want to write the code first, then I'll load up Cheat Engine/Ollydbg and add in the addresses, the PID, and the mouse xy coordinates. Can you tell me what's wrong with my syntax. =0 I'm really struggling with this.