DH Sarkoth farm with random routing menu

User Tag List

Page 1 of 2 12 LastLast
Results 1 to 15 of 18
  1. #1
    AZRAEL2024's Avatar Private
    Reputation
    2
    Join Date
    Jun 2012
    Posts
    9
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    DH Sarkoth farm with random routing

    Have been playing with autoit for the first time and have been running notAres' DH Sarkoth script and decided to make a few modifications that I thought I would share.

    My aim was to try and humanize the bot a bit more in the hope that this would make it harder for it to be detected, I first of removed the mouse cursor always going into the bottom left corner on the main menu and when looting as this is completely unnatural and not something people would do, I also tweaked the delay only looting as this also seemed a bit to long, (still need to tweak the gap between differant types of loot as well as this is still a bit long.)

    Then I came to the pathing of the bot, now this is something that I feel can be easily detected as it runs the exact same path within a few pixels each and everytime so I wanted to try and change that. As a result this script will now pick between different routes at random to run towards the cellar.

    As it stands there are only three routes it uses at the minute as this is just a proof of concept for my self as much as anything else but thought perhaps people might like to see it, but I plan to increase these along with several other things at a later date, the changes I have in mind are-

    Increase the number of available routes to choose from to somewhere between 10-15 at least

    Add randomization to death action so that instead of always just leaving game it will sometimes also revive and teleport before log out, or revive and continue the run if the cellar check was never reached

    Add random routes to reach the merchant

    Add random attack patterns when killing Sarkoth

    Random through runs have it pause the game for various intervals

    There are some other things I would like to try but these should be defiantly achievable intime, how ever I dont have massive amounts of free time to work on this right now so updates may take a little while to arrive but I will get them done as quickly as my time allows.

    DOWNLOAD
    DHautoroute_0.1

    THINGS TO NOTE :-

    MOVEMENT SPEED - Like a lot of people I had a lot of trouble with getting my movement speed correct with the script so I have reworked it slighty, now it assumes that you will have fleet footed passive, and smoke screen with displacement, then you simply set you movement speed to the total amount from your gear, so if you just have 12% movement speed from boots you would set it at 12 in the ini file, if you have 12 on boots and 5 on chest then you would set it at 17 in the ini etc.


    CURSOR HOVERS OVER CELLAR BUT I JUST PORTAL TO TOWN - this is simply down to everybodies screen being different and therefore colors being slighty different so its not finding the right pixal color match. To fix this use colorpix or similar program to get the HEX Value of the blue color of the open cellar door when you have the mouse over it, (that bit is important), then, right click onb the script and click edit to open AutoIt script editor.

    Now scroll down till you find the following lines

    Code:
    ;Checks if Dank Cellar is Open
    			$Pixel2 = PixelSearch(0, 0, Round(600 * $x_ratio), Round(600 * $y_ratio), 0x334FB7, 3)
    			If Not @error Then
    				GUICtrlSetData($lblStatus, "Status: Cellar - Found")
    and change the bold underlined text for the hex value you come up with, save the script and try rerunning it. I found that it can sometimes take a couple of attempts to get the right color, but its best to try and use th most abundant shade of blue you can see.

    I hope people find this useful, and I have done my best to insure it is as bug free as possible but, as I say this is the first time i'd even heard of AutoIt let alone use it so I may well have missed something, If people post bugs I will try to fix them as quickly as possible.

    Oh, at the moment there is no option to salvage items or stash specific ilvls, this is something I plan to add at a later date.

    Definatly runs in 1600x900, should also be fine in 1920x1080 but cant promise any other resolutions atm.

    DH Sarkoth farm with random routing
  2. #2
    kiIlabyte's Avatar Member
    Reputation
    1
    Join Date
    Jun 2012
    Posts
    27
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    damn it i got 19 x 12 resolution. i was just thinking the other day how a random route each time should help throw them off. i modified another user's script to do what i needed and have been using it but i figure after 3 weeks of running the exact same route each time that it has to be easily detected. if they just ban the cd key and you buy another copy i'm not too worried but if they ban the account then i'd be shitting brick as i have about 200+ hrs of actual play time on my account.

    also thanks for sharing man. i will still try it and maybe it will work.

  3. #3
    AZRAEL2024's Avatar Private
    Reputation
    2
    Join Date
    Jun 2012
    Posts
    9
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    IIf you can set your windows resolution to any 16:9 resolution then set the game to match (windowed fullscreen of course) then it will hopefully be fine, I actually have a 16:10 monitor that maxes out at 1680x1050 so just run set windows and diablo to 1600x900 and its fine.

  4. #4
    kiIlabyte's Avatar Member
    Reputation
    1
    Join Date
    Jun 2012
    Posts
    27
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    ok i'll try that out and let ya know how it goes for others that might ask

  5. #5
    Angrycoder's Avatar Knight-Lieutenant
    Reputation
    20
    Join Date
    Jun 2012
    Posts
    370
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Code:
    $Routing = Random( 1, 3, 1)
    What is the final 1 used for? I believe its a Flag, but not entirely sure what that means.

  6. #6
    AZRAEL2024's Avatar Private
    Reputation
    2
    Join Date
    Jun 2012
    Posts
    9
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Angrycoder View Post
    Code:
    $Routing = Random( 1, 3, 1)
    What is the final 1 used for? I believe its a Flag, but not entirely sure what that means.
    From what I gather it makes Random only use whole units rather than intergers.

  7. #7
    Stormreaver's Avatar Contributor
    Reputation
    152
    Join Date
    Jul 2012
    Posts
    290
    Thanks G/R
    40/136
    Trade Feedback
    0 (0%)
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    Function Random

    Thanks, might take a look at this later.

    Will it be easy for you to highlight for me which parts you added?

  8. #8
    AZRAEL2024's Avatar Private
    Reputation
    2
    Join Date
    Jun 2012
    Posts
    9
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    A side by side comparison of the original notAres' script will show the differences quite quickly but basically added in Func Check() (badly named I know will change it later) which is the random generator function, and makes the call to which ever route is chosen, and then, removed the routing and to hover over the cellar door from Func RestartRun() and each route is now its own function labeled Func Route1(), Func Route2() etc.
    Also the x and y coordinates for where to click the cellar door are variables $xx and $yy which are set at the end of each Func Route so as to allow the routes the option to end in different places each time, (Routes one and 2 end in the same position for example while route three ends at a different spot.).

    I'm sure that someone who actually has used autoit before could come up with something more efficient but I had only spent a couple hours looking at the code when I came up with this I'm afraid, but it should allow for people to be able to add in their own routes fairly easily with this setup.

    My hope is that people will be willing to contribute routes they have made here that I can add to it, after all the more variations we have on routes, even just small variations the more it will "Humanize" the pathing, and to that end I will right up a guide on how to create routes for people which I hope to add either tomorrow or friday

  9. #9
    Stormreaver's Avatar Contributor
    Reputation
    152
    Join Date
    Jul 2012
    Posts
    290
    Thanks G/R
    40/136
    Trade Feedback
    0 (0%)
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    The reason I am asking is that I made my own variations to Shim's script, with more random stuff and my own array of custom looting; and now I am thinking of including your part for even more randomness :P

    I will try to go over it and see how easy to reintegrate everything. Thanks again

  10. #10
    hellsan631's Avatar Corporal
    Reputation
    3
    Join Date
    May 2012
    Posts
    34
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Some notes.

    Bots run the in the same patterns with very small variations.
    This can be combated by throwing different coordinates out there, routes, to make the movement flow more human, this is what your doing, but one problem with doing this is that each route is the exact same pattern (click, sleep, hotkey, sleep, click, sleep, click, sleep, hotkey, sleep, hotkey, sleep, click) etc. To make it feel more human, you need to add a number of different paths, each with their own method (say, two clicks here, sleep, hotkeys, sleep, etc). Spread everything out, so that to get to the cellar, it sometimes takes 5-6 clicks instead of always 4.

    This can be extended to my next point:
    Bots don't usually do random things, humans do.
    For example, somtimes we misclick a hotkey (say an attack key). Or have some "random" behaviors at different times. So instead of clicking 4 times, maybe we throw out a couple of attacks in there. If its always You run to cellar, if cellar is not there, teleport, its easy to detect.

    Also, there are lots of points in the scripts where the sleeps are not randomized. If he always "sleep(800) THEN click vendor" then you can tell its a bot, because the time between clicks is always the same.

    There should also be some different pathing for your general mouse movement. Humans don't always move from point A->B then click on B. There are some slight jitters here and there with one's mouse, circular movement, maybe overshooting the target, which can always be programmed as well.

    I'm currently writing a good randomizing script that i'll pm to you. (not to show off, but maybe it will give you some good ideas).

    Some snippets of code:

    Code:
    Func Rander($average, $range, $tolerance = 1.001)
       
       while($tolerance < 1.001)
    	  $tolerance = $tolerance + 0.0036 
       WEnd
       
       $min = $average - ($range*0.5)
       $max = $average + ($range*0.5)
       
       $num = Random($min,$max)
       $def = $average - $num
       
       $res = Round($average + ($def * Random(1,$tolerance)))
       
       Return $res
    EndFunc
    
    Func RSleep($average,$range = 10)
       Sleep(Rander($average,$range))
    EndFunc
    
    Func RandBehavior($j = -1, $r = 1)
       
       if $j = 0 Then
    	  $j = Round(Random(0,6))
       EndIf
       
       $randy = Random($r,100)
       
       if ($j = 0) Then ;chance that it will move the mouse out of the way
    	  if($randy > 60) Then
    		 RandMove(Round(Random(0, 400) * $x_ratio), Round(Random(700, 1080) * $y_ratio), 300,300)
    		 RSleep(150)
    		 if($randy > 85) Then
    			RandMove(Round(Random(200, 500) * $x_ratio), Round(Random(600, 900) * $y_ratio), 300,300)
    			RSleep(150)
    		 EndIf
    	  EndIf
       ElseIf ($j = 1) Then ;random larger sleep
    	  if($randy > 70) Then
    		 RSleep(400,200)
    		 if($randy > 90) Then
    			RSleep(200,100)
    		 EndIf
    	  EndIf
       ElseIf ($j = 2) Then
    	  if($randy > 70) Then ;random smaller sleep
    		 RSleep(100,35)
    		 if($randy > 90) Then
    			RSleep(150,10)
    		 EndIf
    	  EndIf
       ElseIf ($j = 3) Then ;random attack
    	  if($randy > 70) Then
    		 RSleep(40)
    		 Send("{SHIFTDOWN}")
    		 RSleep(140,30)
    		 $mC = MouseGetPos()
    		 RandClick("right", $mC[0], $mc[1], 2, 2)
    		 RSleep(150)
    		 if($randy > 90) Then
    			$mC = MouseGetPos()
    			RandClick("right", $mC[0], $mc[1], 2, 2)
    			RSleep(150)
    		 EndIf
    		 Send("{SHIFTUP}")
    		 RSleep(40)
    	  EndIf
       ElseIf ($j = 4) Then
    	  if($randy > 70) Then ;random attack 2
    		 $mC = MouseGetPos()
    		 RandClick("right", $mC[0], $mc[1], 2, 2)
    		 RSleep(150)
    		 if($randy > 90) Then
    			$mC = MouseGetPos()
    			RandClick("right", $mC[0], $mc[1], 2, 2)
    			RSleep(150)
    		 EndIf
    	  EndIf
       ElseIf ($j = 10) Then ;has a chance to call the GPH Tesserect script
    	  if($randy > 30) Then
    		 Call("GoldPerHour")
    	  EndIf
       ElseIf ($j = 11) Then
    	  if($randy > 90) Then ;has a chance to leave game INSIDE the celler, instead of teleporting to town and then leaving game
    		 Call("LeaveGame")
    		 Return True
    	  EndIf
       EndIf
       
    EndFunc
    Rander(Average, Range, Tolerance) is a method which takes the average desired number, applies a random-ness to it within the desired range, with another adjustment to add an inconsistency to the mix.

    RSleep(average, range) is just an easy way to add an R to sleep to get a randomized result.

    RandBehavior(BehaviorNumber) is a method in which a random behavior that can (sometimes) occur happens at specific times. This adds "inconsistency" to the mix to try and increase the difference per run.

    Note on your coding as well. Its better to organize all of the coordinates into an array, instead of it having 3 different methods, each the exact same.
    Last edited by hellsan631; 07-05-2012 at 03:05 AM.

  11. #11
    AZRAEL2024's Avatar Private
    Reputation
    2
    Join Date
    Jun 2012
    Posts
    9
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Firstly want to say thanks for you r suggestions on commands, I am still trying to learn how this all works properly so any help with direction and diferant ways you can do things with AutoIt is gratefully received. Always nice to get tips of someone who actually knows what there doing rather than me just fumbling in the dark.

    You raise all the points I was thinking of myself, but not having played with AutoIt before am limited by my sever lack of knowledge, you are right in that it was set sequence in the run which was something else to be addressed, particularly with regards to sleep times as you are right that is very easy to be picked up on. one problem I kept hitting with just having coordinates in a array and then having it just pick them at random was ensuring it found the cellar door at the end of the run unless the end point was always exactly the same, (this I'm sure is just down to my lack of knowladge of AutoIt code,) which kinda goes against what I want to achieve, but it has occured to me that if we get it to search for a match to a .png of the open cellar door then you could end the run anywhere with the cellar door on screen and it would always know where to click which would make life a lot simpler.

    Also have sent a reply to your PM, some really good ideas, and think it would allow to create scripts for multiple resolutions really easy as you could use a $variable in the ini file to set the resolution and have it adjust accordingly I think will have a play and get back to you on what I come up with.

  12. #12
    phuzed's Avatar Member
    Reputation
    2
    Join Date
    Jun 2012
    Posts
    54
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I like the idea of making the bot more human like. It seems most people get greedy and code for bots to go faster, take out sleep and other things.

    Anyways I'm intrigued by this direction, I hope you continue adding random features.

  13. #13
    TheKingKong's Avatar Sergeant Major
    Reputation
    9
    Join Date
    Jun 2012
    Posts
    181
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by hellsan631 View Post
    Some notes.

    Bots run the in the same patterns with very small variations.
    This can be combated by throwing different coordinates out there, routes, to make the movement flow more human, this is what your doing, but one problem with doing this is that each route is the exact same pattern (click, sleep, hotkey, sleep, click, sleep, click, sleep, hotkey, sleep, hotkey, sleep, click) etc. To make it feel more human, you need to add a number of different paths, each with their own method (say, two clicks here, sleep, hotkeys, sleep, etc). Spread everything out, so that to get to the cellar, it sometimes takes 5-6 clicks instead of always 4.

    This can be extended to my next point:
    Bots don't usually do random things, humans do.
    For example, somtimes we misclick a hotkey (say an attack key). Or have some "random" behaviors at different times. So instead of clicking 4 times, maybe we throw out a couple of attacks in there. If its always You run to cellar, if cellar is not there, teleport, its easy to detect.

    Also, there are lots of points in the scripts where the sleeps are not randomized. If he always "sleep(800) THEN click vendor" then you can tell its a bot, because the time between clicks is always the same.

    There should also be some different pathing for your general mouse movement. Humans don't always move from point A->B then click on B. There are some slight jitters here and there with one's mouse, circular movement, maybe overshooting the target, which can always be programmed as well.

    I'm currently writing a good randomizing script that i'll pm to you. (not to show off, but maybe it will give you some good ideas).

    Some snippets of code:

    Code:
    Func Rander($average, $range, $tolerance = 1.001)
       
       while($tolerance < 1.001)
    	  $tolerance = $tolerance + 0.0036 
       WEnd
       
       $min = $average - ($range*0.5)
       $max = $average + ($range*0.5)
       
       $num = Random($min,$max)
       $def = $average - $num
       
       $res = Round($average + ($def * Random(1,$tolerance)))
       
       Return $res
    EndFunc
    
    Func RSleep($average,$range = 10)
       Sleep(Rander($average,$range))
    EndFunc
    
    Func RandBehavior($j = -1, $r = 1)
       
       if $j = 0 Then
    	  $j = Round(Random(0,6))
       EndIf
       
       $randy = Random($r,100)
       
       if ($j = 0) Then ;chance that it will move the mouse out of the way
    	  if($randy > 60) Then
    		 RandMove(Round(Random(0, 400) * $x_ratio), Round(Random(700, 1080) * $y_ratio), 300,300)
    		 RSleep(150)
    		 if($randy > 85) Then
    			RandMove(Round(Random(200, 500) * $x_ratio), Round(Random(600, 900) * $y_ratio), 300,300)
    			RSleep(150)
    		 EndIf
    	  EndIf
       ElseIf ($j = 1) Then ;random larger sleep
    	  if($randy > 70) Then
    		 RSleep(400,200)
    		 if($randy > 90) Then
    			RSleep(200,100)
    		 EndIf
    	  EndIf
       ElseIf ($j = 2) Then
    	  if($randy > 70) Then ;random smaller sleep
    		 RSleep(100,35)
    		 if($randy > 90) Then
    			RSleep(150,10)
    		 EndIf
    	  EndIf
       ElseIf ($j = 3) Then ;random attack
    	  if($randy > 70) Then
    		 RSleep(40)
    		 Send("{SHIFTDOWN}")
    		 RSleep(140,30)
    		 $mC = MouseGetPos()
    		 RandClick("right", $mC[0], $mc[1], 2, 2)
    		 RSleep(150)
    		 if($randy > 90) Then
    			$mC = MouseGetPos()
    			RandClick("right", $mC[0], $mc[1], 2, 2)
    			RSleep(150)
    		 EndIf
    		 Send("{SHIFTUP}")
    		 RSleep(40)
    	  EndIf
       ElseIf ($j = 4) Then
    	  if($randy > 70) Then ;random attack 2
    		 $mC = MouseGetPos()
    		 RandClick("right", $mC[0], $mc[1], 2, 2)
    		 RSleep(150)
    		 if($randy > 90) Then
    			$mC = MouseGetPos()
    			RandClick("right", $mC[0], $mc[1], 2, 2)
    			RSleep(150)
    		 EndIf
    	  EndIf
       ElseIf ($j = 10) Then ;has a chance to call the GPH Tesserect script
    	  if($randy > 30) Then
    		 Call("GoldPerHour")
    	  EndIf
       ElseIf ($j = 11) Then
    	  if($randy > 90) Then ;has a chance to leave game INSIDE the celler, instead of teleporting to town and then leaving game
    		 Call("LeaveGame")
    		 Return True
    	  EndIf
       EndIf
       
    EndFunc
    Rander(Average, Range, Tolerance) is a method which takes the average desired number, applies a random-ness to it within the desired range, with another adjustment to add an inconsistency to the mix.

    RSleep(average, range) is just an easy way to add an R to sleep to get a randomized result.

    RandBehavior(BehaviorNumber) is a method in which a random behavior that can (sometimes) occur happens at specific times. This adds "inconsistency" to the mix to try and increase the difference per run.

    Note on your coding as well. Its better to organize all of the coordinates into an array, instead of it having 3 different methods, each the exact same.
    That looks really promising, can you share with us as well =)

  14. #14
    hellsan631's Avatar Corporal
    Reputation
    3
    Join Date
    May 2012
    Posts
    34
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by TheKingKong View Post
    That looks really promising, can you share with us as well =)
    not enough testing has been done yet. also waiting for some more OCR and "memory reading" things to propagate themselves.

  15. #15
    AZRAEL2024's Avatar Private
    Reputation
    2
    Join Date
    Jun 2012
    Posts
    9
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    It will be a few days before I update, as thanks to some tips from hellsan693, I am heading in a new direction that will allow it create the route at random in real time. This will completely remove the need for any predefined routes completely, meaning that it truly will be random, and it may also be that it can work with any resolution at any ratio.

    I have it so that it will move across the map already, so just a few bits to sort with regard to distances etc then can build from there. I'm hoping this will work as I would like but only some more time and testing will tell, so pls bear with me, and I will update on progress as things develop.

Page 1 of 2 12 LastLast

Similar Threads

  1. [Exploit] annoy people with random /rolls
    By Taxomi in forum World of Warcraft Exploits
    Replies: 14
    Last Post: 06-11-2008, 10:33 AM
  2. Nagrand mote farming with G15
    By 83inge83 in forum World of Warcraft General
    Replies: 0
    Last Post: 05-27-2008, 03:23 AM
  3. Sort of Idea for Honor Farming with 2.4
    By dondado in forum World of Warcraft Guides
    Replies: 15
    Last Post: 03-10-2008, 09:06 PM
  4. Stormwind entrance gank spot, with escape route.
    By Thatoneguy in forum World of Warcraft Exploits
    Replies: 4
    Last Post: 12-29-2007, 08:04 AM
All times are GMT -5. The time now is 10:00 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search