alt201 Posted December 14, 2007 Share Posted December 14, 2007 (edited) Hi, I'm making a bot where it does a pixel scan of a small area to identify colors and let me know what zone I am in, but for some reason this conditional keeps getting called. The conditional "ElseIF" keeps getting called in the code below even though it should be false because the pixelscan is searching for and finding the color I specified. Here is the code expandcollapse popupHotKeySet("{end}", "MyExit") AutoItSetoption("MouseCoordMode", 0) WinActivate("World of Warcraft") WinWaitActive("World of Warcraft") $av = 0 $test = 0 Sleep(1500) Send("{space}") sleep(3000) While 1 Sleep(200) $coord = PixelSearch( 886, 7, 959, 19, 0x207618, 20, 1 ) If @error <> 1 Then;If it finds the color then click to queue once, else it goes to AV function If $test = 0 Then;Not queued Sleep(2000) MouseClick("right", 295, 326, 1) Sleep(2000) $test = 1 $av = 0 EndIf Elseif @error == 1 then;IN AV ;<------ THIS LINE IS GETTING CALLED WHEN IT SHOULD BE FALSE ; BECAUSE PIXELSCAN IS FINDING THE PIXEL IT NEEDS If $av = 0 Then Sleep(Random(2000,4000,1)) send("{space}") Sleep(10000) Send("{w down}") sleep(1900) Send("{d down}") sleep(295) Send("{d up}") sleep(22000) Send("{a down}") sleep(200) Send("{a up}") sleep(5000) send("{w up}") $av = 1 Else Sleep(Random(120000,240000,1));Randomly jump between 2 to 4 minutes ControlSend("World of Warcraft", "", "", "{space}") $test = 0 EndIf Endif WEnd Func MyExit() Exit EndFunc Any help with the syntax or logic would be greatly appreciated. I know that the pixelscan is successful because it executes the code beneath it, it just seems that my else statement isn't working Edited December 14, 2007 by alt201 Link to comment Share on other sites More sharing options...
Valuater Posted December 14, 2007 Share Posted December 14, 2007 (edited) See last post BTW - Welcome tot the Autoit Forums .... Nice First post 8) Edited December 14, 2007 by Valuater Link to comment Share on other sites More sharing options...
alt201 Posted December 14, 2007 Author Share Posted December 14, 2007 Failure Sets @error to 1 if color is not found.Elseif @error == 1 then;IN AV Another self explainitoryNot catching what you mean, it seems like you just repeated my codebtw this is a new acc (because I can't remember my old info) but I've been here for a solid 3 years, I used to come to this site a long time ago years ago, it's been like 3 years since I've even touched anything to do with programming so I'm very rusty.Anyways if you could elaborate and help me out, thank you for your time. Link to comment Share on other sites More sharing options...
alt201 Posted December 14, 2007 Author Share Posted December 14, 2007 To clarify the elseif statement is being called when @error is not 1 it should only be called when it's unsuccessful for my code to work Link to comment Share on other sites More sharing options...
alt201 Posted December 14, 2007 Author Share Posted December 14, 2007 bump Link to comment Share on other sites More sharing options...
Valuater Posted December 14, 2007 Share Posted December 14, 2007 (edited) try this to get more informationexpandcollapse popup; make sure you are getting the info you want #include <AutoitInfo.au3> ; to see where the pressed line is - place the mouse over the Tray Icon Opt("TrayIconDebug", 1) ;0=no info, 1=debug line info HotKeySet("{end}", "MyExit") AutoItSetOption("MouseCoordMode", 0) ; I would think of using this as # 1 instaed of 0 ( not sure of the screen size etc of WoW ; removed for my testing WinActivate("World of Warcraft") WinWaitActive("World of Warcraft") $av = 0 $test = 0 Sleep(1500) Send("{space}") Sleep(3000) While 1 Sleep(200) $coord = PixelSearch(886, 7, 959, 19, 0x207618, 20, 1) If @error <> 1 Then;If it finds the color then click to queue once, else it goes to AV function _AutoitInfoDisplay ($coord, "PixelSearch", 2) ; will display coordinates if no error If $test = 0 Then;Not queued Sleep(2000) MouseClick("right", 295, 326, 1) Sleep(2000) $test = 1 $av = 0 EndIf ElseIf @error == 1 Then;IN AV ;<------ THIS LINE IS GETTING CALLED WHEN IT SHOULD BE FALSE ; BECAUSE PIXELSCAN IS FINDING THE PIXEL IT NEEDS If $av = 0 Then _AutoitInfoDisplay ("#1 error = " & @error & " AV = " & $av & " test = " & $test, "PixelSearch", 2) Sleep(Random(2000, 4000, 1)) Send("{space}") Sleep(10000) Send("{w down}") Sleep(1900) Send("{d down}") Sleep(295) Send("{d up}") Sleep(22000) Send("{a down}") Sleep(200) Send("{a up}") Sleep(5000) Send("{w up}") $av = 1 Else _AutoitInfoDisplay ("#2 error = " & @error & " AV = " & $av & " test = " & $test, "PixelSearch", 2) Sleep(Random(120000, 240000, 1));Randomly jump between 2 to 4 minutes ControlSend("World of Warcraft", "", "", "{space}") $test = 0 EndIf EndIf WEnd Func MyExit() Exit EndFunc ;==>MyExitI cant test your code, i dont have WOWYou will need this AutoitInfo.au3 located here....http://www.autoitscript.com/forum/index.ph...st&p=4468418) Edited December 14, 2007 by Valuater Link to comment Share on other sites More sharing options...
alt201 Posted December 15, 2007 Author Share Posted December 15, 2007 Thanks I'll try that in a bit 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