Help - Search - Members - Calendar
Full Version: wow macros
AC Tools Everything Macro > AC Tool Macros > Other Macros
Alwexx
Does ne1 use actool for nething other than fishing ?
DocDizzy
I use it for Auto AFK and to skill up my LockPicking.
DaMOB
How does the script find the bobber and knows when the fish is on the line and to jerk the line in WoW?
DocDizzy
I have a fishing script I got my hands on. . . .but it seems very hit or miss when it comes to accurately clicking the bobber at the correct time. Sometimes it clicks to early, sometimes it clicks right on, and sometimes it wont click at all.

If someone who has more advanced skill with ACTool wants to take this and try to 'correct/fix' or explain what exactly I might be doing wrong is that would be kewl. I have been using ACTool forever with FFXI, but with WoW I have used it only for not going AFK and for LockPicking on my Rogue.

(BTW I am not a gold seller, nor do I speak Chinese, the site I found this script on was via Yahoo.)

Please Help if you can! Not all of us are experts with scripting but most of us are willing to learn. smile.gif

----------------------------------------
Here is the website I obtained this code at!

http://www.wowgold-wowgold.com/Fishing-Bot-Article375.html
-----------------------------------------


Copied from wowgold.com~



Features
- Bobber scanning has test results of 95%+ accuracy with great speed
- Fish scanning has test results of 70%+ accuracy
- Easy-to-change constants for tweaking
- Supports any resolution (yes, even non-standard ones like really stretched out)
- Supports CosmosUI
- Dynamic RGB color finding (works in practically any light)
- AFK-Away ©

Use
1. Copy/Paste the code below into AC Tool (found at http://www.actool.net
2. Run WoW in Windowed Mode
3. Put fishing skill in slot '0'
5. Under Video Options (press Escape to bring up main menu), UNCHECK 'Hardware Cursor'
6. Zoom into 1st person mode
7. Review constants in script, particularly 'runCount' to set how many times the script should run
8. Run the macro

Notes
- For best results, try turning all fancy graphics options off (especially 'Terrain Highlights' under Shaders.. takes all the brightness out of the water) and use a low resolution (perhaps under 800x600, the smaller the faster)
- If you are having problems finding the bobber, where the mouse simply goes over the bobber and never stops, or goes a little bit past the bobber before stopping, try increasing the 'scanSpeed' constant. Do this only after turning off all fancy graphics and decreasing resolution
- Please please please fish AWAY FROM CIVILIZATION. We need as little publicity as possible, thankyouverymuch.
- Try to find a spot where you are level with the water. Run the script once or twice and note the highest line where the script scans for the bobber. Then throw 15 or so casts manually and note where the highest cast goes. Try to match those two lines up, you will get much faster results.
- If the bobber is landing outside of the scan area, adject the scan area percentage constants in the macro to include the areas where the bobber lands.
- You can turn off AFK Away if you want to chat while fishing

Future
- The fish scanner isnt the best right now, will definitely need tweaking. I'll try to get that working better in a future update.
- An inventory management system to automatically open up containers such as clams, bottles, chests, etc.
- An option to quit fishing after a set amount of time
- An option to turn on random timings between casts/clicking of the fish/etc

The Bot


---------------------------------------Script Start-----------------------------

// WoW Fishing Bot v1.1
// Made by QuietKnight

// Changes
// v1.1
// + Added in the option to turn off AFK Killer
// + Added in changes log
//
// v1.0
// + Initial version

// Special instructions:
// - Put your fishing skill in slot '0'
// - Zoom into 1st person mode
// - Under Video Options, uncheck 'Hardware Cursor'

SetActiveWindow World of Warcraft

Constants

/////////////////////////
// CHANGABLE CONSTANTS //
/////////////////////////

// Run count
// How many times the script should try to fish
runCount = 10

// Speed
// This is the initial scan speed. The lower the number, the faster the scan goes,
// and the higher the number, the slower the scan goes. If you're having problems
// where the initial scan isnt finding the bobber and just scanning right over it,
// try increasing this number slowly.
scanSpeed = 60

// Scan box distances
// These are the distances away from the sides of the screen to scan for a lure
// These are measured as percentages of the screen in the appropriate direction
scanLeftDist = .3
scanRightDist = .3
scanTopDist = .4
scanBottomDist = .25

// Brightness range
// This is the number of RGB values over and under the 'bright spot' that is the
// lure to look for. Basically, if you're getting the message 'No fish to hook',
// try increasing both numbers a bit, and if the bobber bobs but you dont catch
// anything, try decreasing both numbers a bit. This can change from environment
// to environment. Also, generally speaking brightRangeUp shouldnt be very high.
brightRangeDown = 50
brightRangeUp = 10

// Brightness distance
// Doesnt matter what it does, but basically, leave it alone unless you're having
// problems actually catching the fish. If you're having problems and you want
// to tweak it, general rule is, the higher the resolution, the higher the number,
// the but number range should only be anywhere from 2 MIN to 6 MAX. If you start
// getting too out of wack with this, you'll never catch a fish
brightDist = 3

// AFK Away
// Set to 1 to use AFK Away (which presses Enter twice before every cast) or
// to 0 to disable AFK Away entirely. This comes in useful if you like to
// chat on WoW while fishing.
afkAway = 0

/////////////////////////////
// NON-CHANGABLE CONSTANTS //
/////////////////////////////

// Optimal scan step ratios
widthToWindowRatio = 0.056
heightToWindowRatio = 0.075

// Scanbox
scanTop = 0
scanBottom = 0
scanLeft = 0
scanRight = 0
scanStepX = 0
scanStepY = 0
scanSuccess = 0

// THE Box
boxMinX = 0
boxMaxX = 0
boxMinY = 0
boxMaxY = 0
boxCenterY = 0
boxCenterX = 0

boxScanStep = 4

boxAvgWidth = 0
boxAvgHeight = 0

// Misc vars
x = 0
y = 0
i = 0
j = 0

// Mouse vars
isMouseOrange = 0
mouseX = 0
mouseY = 0

// Lure location
lureInitLocX = 0
lureInitLocY = 0

// RGB Info
brightX = 0
brightY = 0
brightTotal = 0
brightR = 0
brightG = 0
brightB = 0
brightRMin = 0
brightRMax = 0
brightGMin = 0
brightGMax = 0
brightBMin = 0
brightBMax = 0
curTotal = 0

// Splash
splashed = 0

End

///////////////
// Main Proc //
///////////////

Delay 1000
Call CalculateScanBoxConstants

Loop $runCount
Keys 0
Delay 1000
Call FindLureInitial
Call FindBoxCenter

Compute x = $boxMaxX-10
MousePos $x, $boxCenterY
Delay $scanSpeed

Call GetRGBValue
Call WaitForSplash

If $afkAway = 1
Delay 2500
KeyDown {RETURN} 250
KeyDown {RETURN} 250
Delay 2000
Else
Delay 5000
End

End


////////////////
// Procedures //
////////////////

Procedure CalculateScanBoxConstants


Compute scanTop = {WindowTop} + Trunc( {WindowHeight} * $scanTopDist )
Compute scanBottom = ( {WindowTop} + {WindowHeight} ) - Trunc( {WindowHeight} * $scanBottomDist )
Compute scanLeft = {WindowLeft} + Trunc( {WindowWidth} * $scanLeftDist )
Compute scanRight = ( {WindowLeft} + {WindowWidth} ) - Trunc( {WindowWidth} * $scanRightDist )

Compute boxAvgWidth = Trunc( {WindowWidth} * $widthToWindowRatio )
Compute boxAvgHeight = Trunc( {WindowHeight} * $heightToWindowRatio )

Compute scanStepX = $boxAvgWidth
Compute scanStepY = Trunc( $boxAvgHeight / 2 )

End

Procedure FindLureInitial
SetConst scanSuccess = 0
Compute y = $scanTop

While $y <= $scanBottom AND $scanSuccess = 0

Compute i = {LoopNo} MOD 2

If $i = 0
Timestamp In Even
Compute x = $scanLeft
Else
Timestamp In Odd
Compute x = $scanLeft + Trunc( $boxAvgWidth / 2 )
End

While $x <= $scanRight AND $scanSuccess = 0
// Move the mouse and wait a second (wait is required!)
MousePos $x, $y
Delay $scanSpeed

Call isMouseOrange

// If the mouse is orange
If $isMouseOrange = 1
SetConst lureInitLocX = $x
SetConst lureInitLocY = $y
SetConst scanSuccess = 1
End

Compute x=$x + $scanStepX
End

Compute y=$y + $scanStepY
End

End

Procedure FindBoxCenter

// Find X min
SetConst scanSuccess = 0
Compute x = $lureInitLocX
Compute y = $lureInitLocY
While $scanSuccess = 0

// Move the mouse and wait a second (wait is required!)
MousePos $x, $y
Delay $scanSpeed

Call isMouseOrange

If $isMouseOrange = 0
SetConst boxMinX = $x
SetConst scanSuccess = 1
Else
Compute x= $x - $boxScanStep
End
End

// Find X max
SetConst scanSuccess = 0
Compute x = $lureInitLocX
Compute y = $lureInitLocY
While $scanSuccess = 0

// Move the mouse and wait a second (wait is required!)
MousePos $x, $y
Delay $scanSpeed

Call isMouseOrange

If $isMouseOrange = 0
SetConst boxMaxX = $x
SetConst scanSuccess = 1
Else
Compute x= $x + $boxScanStep
End
End

// Find Y min
SetConst scanSuccess = 0
Compute x = $lureInitLocX
Compute y = $lureInitLocY
While $scanSuccess = 0

// Move the mouse and wait a second (wait is required!)
MousePos $x, $y
Delay $scanSpeed

Call isMouseOrange

If $isMouseOrange = 0
SetConst boxMinY = $y
SetConst scanSuccess = 1
Else
Compute y= $y - $boxScanStep
End
End

// Find Y max
SetConst scanSuccess = 0
Compute x = $lureInitLocX
Compute y = $lureInitLocY
While $scanSuccess = 0

// Move the mouse and wait a second (wait is required!)
MousePos $x, $y
Delay $scanSpeed

Call isMouseOrange

If $isMouseOrange = 0
SetConst boxMaxY = $y
SetConst scanSuccess = 1
Else
Compute y= $y + $boxScanStep
End
End


Compute boxCenterX = Trunc(( $boxMinX + $boxMaxX ) / 2)
Compute boxCenterY = Trunc(( $boxMinY + $boxMaxY ) / 2)

SetConst lureInitLocX = $boxCenterX
SetConst lureInitLocY = $boxCenterY

End

Procedure GetRGBValue

SetConst $brightTotal = 0

Compute y = $boxCenterY
Compute i = $boxCenterY + Trunc( ($boxMaxY - $boxCenterY) / 3 )

While $y <= $i

Compute x = $boxMinX
While $x <= $boxCenterX

LoadRGB $x, $y
Compute curTotal = {RGBRed} + {RGBGreen} + {RGBBlue}

If $curTotal > $brightTotal
Compute brightTotal = $curTotal

SetConst brightR = {RGBRed}
SetConst brightG = {RGBGreen}
SetConst brightB = {RGBBlue}

Compute brightRMin = $brightR - $brightRangeDown
Compute brightRMax = $brightR + $brightRangeUp
Compute brightGMin = $brightG - $brightRangeDown
Compute brightGMax = $brightG + $brightRangeUp
Compute brightBMin = $brightB - $brightRangeDown
Compute brightBMax = $brightB + $brightRangeUp

SetConst brightX = $x
SetConst brightY = $y
End

Compute x=$x + 2
End

Compute y=$y + 2
End

End

Procedure WaitForSplash

SetConst $splashed = 0

Call isMouseOrange

While $splashed = 0 AND $isMouseOrange = 1
Delay 100

// Check current spot
LoadRGB $brightX, $brightY
If {RGBRed} > $brightRMax OR {RGBRed} < $brightRMin OR {RGBGreen} > $brightGMax OR {RGBGreen} < $brightGMin OR {RGBBlue} > $brightBMax OR {RGBBlue} < $brightBMin

// Check top left
Compute x=$brightX-$brightDist
Compute y=$brightY-$brightDist
LoadRGB $x, $y
If {RGBRed} > $brightRMax OR {RGBRed} < $brightRMin OR {RGBGreen} > $brightGMax OR {RGBGreen} < $brightGMin OR {RGBBlue} > $brightBMax OR {RGBBlue} < $brightBMin

// Check top right
Compute x=$brightX+$brightDist
Compute y=$brightY-$brightDist
LoadRGB $x, $y
If {RGBRed} > $brightRMax OR {RGBRed} < $brightRMin OR {RGBGreen} > $brightGMax OR {RGBGreen} < $brightGMin OR {RGBBlue} > $brightBMax OR {RGBBlue} < $brightBMin

// Check bottom left
Compute x=$brightX-$brightDist
Compute y=$brightY+$brightDist
LoadRGB $x, $y
If {RGBRed} > $brightRMax OR {RGBRed} < $brightRMin OR {RGBGreen} > $brightGMax OR {RGBGreen} < $brightGMin OR {RGBBlue} > $brightBMax OR {RGBBlue} < $brightBMin

// Check bottom right
Compute x=$brightX+$brightDist
Compute y=$brightY+$brightDist
LoadRGB $x, $y
If {RGBRed} > $brightRMax OR {RGBRed} < $brightRMin OR {RGBGreen} > $brightGMax OR {RGBGreen} < $brightGMin OR {RGBBlue} > $brightBMax OR {RGBBlue} < $brightBMin

// Check top left (extended)
Compute x=$brightX-($brightDist*2)
Compute y=$brightY-($brightDist*2)
LoadRGB $x, $y
If {RGBRed} > $brightRMax OR {RGBRed} < $brightRMin OR {RGBGreen} > $brightGMax OR {RGBGreen} < $brightGMin OR {RGBBlue} > $brightBMax OR {RGBBlue} < $brightBMin

// Check top right (extended)
Compute x=$brightX+($brightDist*2)
Compute y=$brightY-($brightDist*2)
LoadRGB $x, $y
If {RGBRed} > $brightRMax OR {RGBRed} < $brightRMin OR {RGBGreen} > $brightGMax OR {RGBGreen} < $brightGMin OR {RGBBlue} > $brightBMax OR {RGBBlue} < $brightBMin

// Check bottom left (extended)
Compute x=$brightX-($brightDist*2)
Compute y=$brightY+($brightDist*2)
LoadRGB $x, $y
If {RGBRed} > $brightRMax OR {RGBRed} < $brightRMin OR {RGBGreen} > $brightGMax OR {RGBGreen} < $brightGMin OR {RGBBlue} > $brightBMax OR {RGBBlue} < $brightBMin

// Check bottom right (extended)
Compute x=$brightX+($brightDist*2)
Compute y=$brightY+($brightDist*2)
LoadRGB $x, $y
If {RGBRed} > $brightRMax OR {RGBRed} < $brightRMin OR {RGBGreen} > $brightGMax OR {RGBGreen} < $brightGMin OR {RGBBlue} > $brightBMax OR {RGBBlue} < $brightBMin

SetConst splashed = 1
RightClick Shift
Delay 500

End
End
End
End
End
End
End
End
End

Call isMouseOrange

End
End

Procedure isMouseOrange
SetConst $isMouseOrange = 0

// Get the mouse color
Compute mouseX= {MouseX} + 4
Compute mouseY= {MouseY} + 4
LoadRGB $mouseX, $mouseY

// If the mouse is orange (variance added just for good measure..)
If {RGBRed} >= 210 AND {RGBRed} <= 218 AND {RGBGreen} >= 160 AND {RGBGreen} <= 168 AND {RGBBlue} >= 84 AND {RGBBlue} <= 92
SetConst $isMouseOrange = 1
End
End



------------------------------------Script End---------------------------
Kleenex2k
i have made leveling bots before, trying to figure out a way of (without it being a warlock using soul stone) ressurecting, walking to corpse... if i can make that, then i can make a bot which can walk to a place, and not just random, or spinning around

just dont name your character 'Bot' http://armory.worldofwarcraft.com/search.x...Type=characters
DocDizzy
OMG haha Why would someone name them selfs that. lol Thats the Chinese for ya, they dont jack around. lol
DaMOB
I no longer play WoW but just glancing at that script it made my head hurt.

Basically, I don't see how it knows where to move the pointer to so it can watch the color of the pointer (the pointer has to be over the bobber) and able to screenscrape fast enough and with enough reliability to know when the bobber moves. Sometimes the bobber will time out too (no fish bit it) then what does it do?

I will grab the script and beautify it then study it a little more.

"UNCHECK 'Hardware Cursor'" Yep, if you don't do that then you will not see the cursor since the cursor is living within the video card.

This macro will fail the higher your skill level gets.

See in WoW the time it takes a fish to jump on your hook is related to your skill because at skill level 1 the green bar can almost get to the left most end before it bites but at 225 (highest I ever got on my fisherman since I never finished the quest before I left WoW) the green bar was much farther to the right and my friend had max fishing and he would plop the bobber in the water and 2-3 seconds later have a fish. Well, see this macro would have a hell of a time with that speed because it is screen scraping for the cursor color every second until it finds the cursor color changes due to it finally hovering over the bobber. So, it would have < 3 seconds to find the bobber (it finds the bobber by moving the cursor every second until it turns orange) at max fishing level and at level 1 it would have around 25 secs roughly.

So, if the bobber is way at the top it will work tons better than if the bobber lands at your feet towards the bottom of your screen.

Now, all of the above is just for finding it initially but after it finds it it tries to find the boundary box of the bobber and basically repeats the above steps only on a smaller scale but the 1 second wait per move of the mouse pointer is still there. That 1 second is necessary but it is so long for both routines that you may have had a bite before it finished finding all of the coords for the bobber and the bounding box of the bobber so it never sees that you actually had a bite.

Too fallible for me and it is not due to the macro it is due to the way the macro must work. The only way to make a reliable fishing macro in WoW is to find the memloc for it.
DocDizzy
Naw I did uncheck that. The way this script seems to scan is in a horizontal sweep of the screen. It has under changeable constants "Scan Box Distance" and it measures in percents. so 25% in from the right, is .25 so on and so forth, then from what I can only 'assume' and yes I know what assume spells lol "Brightness Distance" is the measure of the vertical scan. For example if Brightness Distance is 3 it will do closer sweeps than if it is 5. I don't really know how to explain that any better think of like a ruler. . . 1foot sweeping each centimeter as compared to every inch, Scan speed is how fast the curser scans the screen. If its to fast. . . . it skips right past the bobber. lol No help there. If its to slow then it wont catch the bobber in time, but even when it does catch the bobber and 90% of the time it will. . . it will either click way to early or just wont click at all. lol It drives me crazy because under brightness range it says go up in # if it clicks to soon that is "No Fish on Hook!," and then it says if the bobber, bobs to lower the number. . . . . this is where I feel like I am going crazy. I was tweeking and tweeking and finally found out those numbers seem to not change anything at all. With the same numbers in both of those fields it will will allow the bobber to bob without clicking AND it will still click way to soon, but maybe 3 our of 200 has it ever actually clicked at the correct time.

Like I say I don't know these scripts very well and this big ones like this are just overwhelming I try to look at them and figure out relatively what they must mean or do, but meeh I am lost. lol Thx for helpin bro! Going to suck soon. . . . The flamers should be waking up soon. laugh.gif




As for Memloc hax. . . I went that route and got 2 accounts banned. Certainly not the first account I have had banned per hacking/botting probably wont be the last, I guess I have just never had any real security issues with AC Tool. I had hoped and thought I remembered there being a WoW Forum under ACTool but there have been many site changes over the past 7 years? lol Anyways any advice or help is certainly welcomed.
DaMOB
Fuck 'em.

Basically, I am looking at this and I see the logic which is rather nice but I know how fishing works in WoW and this macro having to always search like it does is where the problem(s) lie(s).

There was a wow forum a long time ago now but it went away due to a lack of macros so we use this general forum, which barely sees any still.


Ahem, look at line 416 and I spotted this -> RightClick Shift

WTF is that supposed to be? Wonder why it doesn't error out since RightClick uses no parameters that I know of (or that help mentions).

Something else I don't see is what does it do if you actually catch a fish? That box will popup to loot it so I take it it wants you to turn autoloot on as well?
DaMOB
Later today I might make a trial account and try this macro so I can watch it and see what it is doing. I will know much more when I do that because I do see some iffy code sections just scanning through this macro.
DocDizzy
From the research I have done from others who have used this and had it actually work you have to have auto loot shut off. . . . The only times I actually caught anything though I happened to have AutoLoot on, as for the Shift RightClick I had seen that too. What it made me think of was the auto loot function where you auto loot a corpse or whatever by holding SHIFT + RightClick, but it has to be active in your interface to do this. . . .so I activated it even though I was not instructed to do so. Really I am just being lazy I guess. I need my fishing to 350+ for a special boss in SSC and I hate fishing. Like I say I know I could easily go back to a Memloc bot, but then I have an increasingly higher risk of being caught. : / Guess I just need to grind it out if no one can figure it out.
DaMOB
Well, rightclick shift is nothing. I mean it is gibberish because the shift holds no meaning if the docs are to be believed but keydown shift 1 sec, rightclick would make much better sense. I know in C++ I would keydown shift, rightclick, keyup but AcTool has no keyup so it uses a timer instead (the 1 sec in the example).
DocDizzy
oh ok yeah that makes sense. Please remember my skill in writing scripts is very basic I am just learning as I go, so that was just my guess. :/
smiller
rightmousedown
rightmouseup

leftmousedown
leftmouseup

doesn't work for keys though, not quite what ur after but i just thought it might be usefull in some way...
Syeager
BTW, if you want to have auto loot enabled in your UI settings, remove the word "Shift" in the line that says "RightClick Shift".
Cboggie
This macro works really well at finding the bobber. Does anyone know if there is a way to trigger a right click when a sound is played. You could change the splash sound to something more distinct and when that sound is detected , it right clicks.....that would work every time.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2010 Invision Power Services, Inc.