mirror of
https://github.com/ulfgebhardt/autoit_wowfishingbot.git
synced 2025-12-12 23:35:52 +00:00
408 lines
18 KiB
AutoIt
408 lines
18 KiB
AutoIt
;VERSION:
|
|
; Name: Xfish version 3.1
|
|
; Language: English
|
|
; Platform: WinXP, Win2k
|
|
; Author: xeonz16 (base version)
|
|
; berzerkwolf(some tuning changes and added lure function);He is a boon and knows nothing
|
|
; Rylon t.H.D. (The real King - Hail Rylon)
|
|
;
|
|
; (berzerkwolf u jewish bastard - what the fuck have u done - only fucking crap - idot)
|
|
;
|
|
;STEPBYSTEP INTRODUCTION:
|
|
; 1.Install AutoIt 3.2.x ot higher
|
|
;
|
|
; 2.Read this file carefully
|
|
;
|
|
; 3.Adjust following Options in the OPTIONS-Section:
|
|
; -$windowed_mode: If u run the bot in windowmode set windowed_mode to 1, else to 0.
|
|
; -$game_res_x: Only nessecary if u are in wondowed_mode! - Set ur gameresx
|
|
; -$game_res_y: Only nessecary if u are in wondowed_mode! - Set ur gameresy
|
|
;
|
|
; Following definitions help u the avoid the bot to detect some red parts of ur ui als feather of the bobber.
|
|
; -$search_area_space_left: Pixels from the left , wherin the feather is not searched; pixels are counted within the wow-window
|
|
; -$search_area_space_right: Pixels from the right , wherin the feather is not searched; pixels are counted within the wow-window
|
|
; -$search_area_space_top: Pixels from the top , wherin the feather is not searched; pixels are counted within the wow-window
|
|
; -$search_area_space_bottom: Pixels from the bottom, wherin the feather is not searched; pixels are counted within the wow-window
|
|
;
|
|
; The bot presses a button to start fishing. With $fishing_hotkey u define it - normaly its "0"
|
|
;
|
|
; Set the $day variable depending if its day (1) or night (0).
|
|
;
|
|
; 4:Start wow, login, equip fishingrod, be sure that the spot u choose is near water to allow fishing.
|
|
; Make shure ur fishinghotkey is correct and the fishing-cast is there at the right position.
|
|
;
|
|
; 5.Execute the script via rightclick on the file (after successfully installing AutoIt) - select "Execute Script"
|
|
;
|
|
; 6.If the bot is not fishing right, making a lots of missfires, anything - just look it up in "HINTS", "TROUBLESHOOTING"
|
|
; and "ADVANCED TROUBLESHOOTING".
|
|
;
|
|
;HINTS:
|
|
; How to catch rar fish:
|
|
; Deviate fish and Oily Blackmouth are really the only kind that sell in my experience.
|
|
;
|
|
; If you leave bot on all night, it will fill your inventory up with 2-3 stacks of 'rare'
|
|
; fish and zillions of stacks of common crappy ones that you either destroy or sell for
|
|
; 20c a stack.
|
|
;
|
|
; I've found if you SPIKE your inventory before turning the bot on you can catch a way more
|
|
; rare fish. However, this will take longer. I've guessed the bot fills up a medium-low sized
|
|
; inventory in about 3-4 hours. For me, I have to go to work for periods of about 12 hours
|
|
; anyway, so I spike my inventory, by taking a stack of 20 oily blackmouth and splitting them
|
|
; into 20 stacks of 1.
|
|
;
|
|
; After 12 hours when I get home I've got 20 stacks of oily blackmouth instead of 2-3 stacks
|
|
; and 20 stacks of cheapo fish.
|
|
;
|
|
; Where to catch rar fish:
|
|
; You can catch oily blackmouth in the water near ratchet.
|
|
;
|
|
; And deviate fish + deviate scales in the oasis's scattered around the barrens.
|
|
;
|
|
; When you catch these fish, you need to sell them to PLAYERS, namely alchemists...they won't
|
|
; get you crap from merchants.
|
|
;
|
|
; Choose the right fishing spot:
|
|
; Find places where you can see the sky and got a bright feather
|
|
;
|
|
; Zoom in with your character to get a first person view
|
|
;
|
|
; If you are gonna fish the oasis you need to pick a spot VERY carefully so the
|
|
; wandering centaurs don't kill you.
|
|
;
|
|
; Do not look into the sunlight/moonlight - the feather will be dark(er) and more hardly to find.
|
|
; Find a spot where u look WITH the sunlight/moonlight so the feather is bright red/blue and easy to find.
|
|
;
|
|
; If you are getting lots of 'moonglare' you might have to move to another side of the lake.
|
|
; Too much moonglare will cause splash-detection withaut a real splash, changing your location might be the
|
|
; only solution.
|
|
;
|
|
; Prevent Detection:
|
|
; Blizzard has a cheat/bot-searchengine, but does not detect this bot or anyother bot - in fact it does
|
|
; nothing, but searching ur harddrive.
|
|
; Most people get banned, not because of blizzard was detecting the bot, but of players who blamed another of
|
|
; using a bot.
|
|
;
|
|
; So the first rule to keep undetected is not to be seen - so do not fish in tb ore other frequently visted
|
|
; places with this bot!
|
|
;
|
|
; Another trick, not to be detected as a bot user, is to visit the computer with the bot running on it from
|
|
; time to time and look if someone whispered. Answer these whispers to avoid being detected.
|
|
;
|
|
; Also there were some stupid ideas of bezerkwolf to prevent detection:
|
|
;
|
|
; -Extract this files to an unusual folder (like "windows folder system32 etc); -> Not needed till now (patch 2.4.1)
|
|
; -Also he added a random timer function which started the fishing after a random time; -> As long blizzard do not
|
|
; analyse gamedata this is not nessecarry and only waste of time. Also if there would be a gameanalysis used by
|
|
; blizzard to detect bots - the various ping does not allow to detect a constant time between fishing and not fishing.
|
|
; u suxxx berserkwolf
|
|
;
|
|
; Use AutoLure:
|
|
; To use Autolure you should create following macro:
|
|
; /equip [noworn:Fishing Poles] FishingPoleName
|
|
; /use LureName
|
|
; /use 16
|
|
; If you create exactly this macro you should asigne $fishing_rod_equip and $fishing_lure_equip as the same hotkey.
|
|
; If you want to split it your fishing_rod_equip - makro should be only "/equip [noworn:Fishing Poles] FishingPoleName" and fishing_lure_equip - makro the rest of the given makro above
|
|
;
|
|
;TROUBLESHOOTING:
|
|
; Set $splash to 1
|
|
; For troubleshooting the first thing you should do is set $splash to 1. This Options proviedes a spalshscreen with current
|
|
; bot-status.
|
|
; Remember to turn it back to zero after you have the bot working...as leaving it on will limit the bot's lifespan to about
|
|
; 3-4 hours.
|
|
;
|
|
; Mouse moves to wrong location:
|
|
; If the mouse moves to a wrong location, then lower $colorvariance
|
|
; Move the variances in increments of 5 for best result...
|
|
;
|
|
; Mouse does not move:
|
|
; If the mouse doesn't move and the bot gets hung up on 'searching for feather' raise $colorvariance
|
|
; Move the variances in increments of 5 for best result...
|
|
;
|
|
; Splash is not recognized correctly:
|
|
; If the mouse moves to the feather, and then the bot says 'FISH!' without a splash, lower $splashvariance
|
|
; Move the variances in increments of 5 for best result...
|
|
;
|
|
; Make sure u are not running EyeDropper.exe while the bot is active. A running EyeDropper.exe will
|
|
; cause an instatn "Fish!" message auft feather was found.
|
|
;
|
|
; Splash is not recognized:
|
|
; If the bobber splashes and the bot does not do anything, raise $splashvariance.
|
|
; Move the variances in increments of 5 for best result...
|
|
;
|
|
;ADVANCED TROUBLESHOOTING:
|
|
; Still no boober detected:
|
|
; For trouble finding the bobber notice there are several definitions of $feather commented out
|
|
; comment out the current one and use another, and then retry adjusting variances
|
|
; Also look at "Choose the right fishing spot:" in "HINTS"
|
|
;
|
|
; Splashes are not detected right:
|
|
; there are two pixelsearchs for splash, one uses $day and another uses $night, you can
|
|
; easily switch between night- and daymode in the wait_for_bite() function
|
|
;
|
|
; You can also adjust the $s_offset. This determines how many pixels in each direction
|
|
; from the feather the bot 'searches' for the splash. If you tighten this down you will
|
|
; have less missfires.
|
|
; Also look at "Choose the right fishing spot:" in "HINTS"
|
|
;
|
|
;CHANGELOG:
|
|
;
|
|
; changes by berzerkwolf:
|
|
;
|
|
; -Added a random function to simulate a more human usage of the rod; -> Suck it - that is for nothing but waisting time - idot
|
|
; -Added a lure function to combine a lure with the fishing rod; -> Crap does not work properly
|
|
; -Changed some variables for a better tuning; -> Dont know exactly what he did, but the existing tuningvariables are quite usefull
|
|
; -Changed some variables for a more lag friendly game; -> I can think of what he did - and it was crap - idot
|
|
; -Added some needed variables for the new functions; -> 100% of the functions berzerkwolf wrote, were deleted by my mightyness
|
|
;
|
|
; changes by Rylon t.H.D
|
|
;
|
|
; V3.0:
|
|
; -rearranged comments
|
|
; -added some hints
|
|
; -resolution-adjustebility
|
|
; -deleted nearly everything berzerkwolf did. (lure and "human-like-time-wasting-fishing-shiat")
|
|
; -deleted every unused var
|
|
; -made a lot of vars non-global vars.
|
|
; -speed this bot up by up to 20sec where he does at least nothing.
|
|
; -divided the code into functions to keep it easy to understand and editable
|
|
; -rewrote the while-loop -> there is only one now.
|
|
; -forced bezerkwolf to suck my dick
|
|
; -added a stepbystep introduction
|
|
; -made the comments readable - reorder
|
|
; -posibilty to adjust "non-search-area" where ur gui would actually causing missfires
|
|
; -log-function. no globalvar is needed for the message -> crappy shiat (one problem: the splash is blinking all
|
|
; the time, because every while-loop does update it. There would be the possibility to check, what the last
|
|
; message was and only update it, if its nessecarry, but that would mean a global var - no need for that,
|
|
; because the splash is only for debugging!
|
|
; -Autodetection of desktop-res.
|
|
; -Day/Night switch via $day = 1/0
|
|
; -now euip the rod before throing it
|
|
; -added lure-support.
|
|
; -added support for autoloot addon
|
|
; V3.1:
|
|
; -Autoexit if Window is no longer in focus.
|
|
;
|
|
|
|
;OPTIONS:
|
|
;WindowOptions:
|
|
$windowed_mode = 0 ;If u run the bot in windowmode set windowed_mode to 1, else to 0.
|
|
$game_res_x = 1920 ;Only nessecary if u are in wondowed_mode!
|
|
$game_res_y = 1080 ;Only nessecary if u are in wondowed_mode!
|
|
$search_area_space_left = 500 ;Pixels from the left , wherin the feather is not searched; pixels are counted within the wow-window
|
|
$search_area_space_right = 500 ;Pixels from the right , wherin the feather is not searched; pixels are counted within the wow-window
|
|
$search_area_space_top = 250 ;Pixels from the top , wherin the feather is not searched; pixels are counted within the wow-window
|
|
$search_area_space_bottom = 250 ;Pixels from the bottom, wherin the feather is not searched; pixels are counted within the wow-window
|
|
|
|
;GameOptions:
|
|
$fishing_hotkey = "1" ;Key for the fishingrod on ur hotkeybar
|
|
$fishing_rod_equip = "2" ;Key for equipping fishing rod (+lureequip)
|
|
$fishing_lure_equip = "3" ;Key for equipping lure
|
|
$timer_fishing = 25000 ;How long does the fishing-process last
|
|
$fishing_lure_casttime = 5500 ;Lure Casttime in milliseconds
|
|
$fishing_lure_time = 600000 ;Lure life-time in milliseconds
|
|
$day = 1 ;Is Daytime - Sun is shining? -> set $day = 1. If its night st $day = 0.
|
|
$use_lure = 0 ;Determin if lure is used or not! Set to 0 to disable it
|
|
$wow_1121_lure = 0
|
|
$char_screen_key = "c" ;Open Charscreen
|
|
$char_mainhandslot_x = 160 ;Pos of ur Mainhandslot
|
|
$char_mainhandslot_y = 600
|
|
$use_internal_loot = 1 ;Determin if the bot should loot everything (set to 1) or set to 0 if you have an autoloot-addon
|
|
$feather_disapear = 4500 ;How long should it wait til old feather disapeared
|
|
|
|
$lag_offset = 150 ;This is a latency offset. If you have a hight ping you should increase this value. The value is in milliseconds.
|
|
;You should set this offset at least at 100-200 to enable your lure to be added at the right time!
|
|
|
|
;ColorOptions:
|
|
$splash_day = 0xFFFFFF;0xF6F6F6 ;splash color day
|
|
$splash_night = 0xFFFFFF ;splash color night
|
|
;othersplash = 0xA2A67D ;some other splashcodes
|
|
;othersplash = 0xC1AD7A
|
|
;othersplash = 0xD0C08D
|
|
dim $feathers[1]
|
|
;$feathers[0] = 0xBFA67B ;day -- pole
|
|
;$feathers[1] = 0xBD5C27 ;night --bright red
|
|
$feathers[0] = 0x31314E ;day --blue feather
|
|
;$feathers[3] = 0x1A130F ;night --dark dark red
|
|
;$feathers[4] = 0xC33415 ;day --bright red
|
|
;$feathers[5] = 0x8F825B ;day -- pole
|
|
|
|
;SearchParameters:
|
|
$feather_color_variance = 15 ;range of accepted values differing from original code for feather
|
|
$splash_color_variance = 5 ;range of accepted values differing from original code for splash
|
|
$step = 1 ;1 = search every pixel, 2 = search every other pixel...etc don't put higher then like 5
|
|
$s_offset = 25 ;search offset, basically how large an area to search around the feather for splash
|
|
|
|
;Debug:
|
|
$debug = 0 ;set this to 1 to view GUI messages, so you can tell where the bot gets hung up
|
|
;but turn it to zero once the bot is working, and the bot will 'last' for DAYS
|
|
;as compared to maybe 4-5 hours with GUI on.
|
|
|
|
;Begin of plain code
|
|
dim $feather_cord ;Feather-position var
|
|
|
|
WinActivate("World of Warcraft") ;Focus WoW-window
|
|
;cequip_rod() ;Equip the rod do this before loop starts because of the lure which is equiped with the same hotkey.
|
|
|
|
if $use_lure = 1 then
|
|
equip_lure();equip the lur to the rod with makro.
|
|
$timer_lure = Timerinit();start lure-timer - this timer has to start bevor the loop to avoid reset of the timer.
|
|
endif
|
|
|
|
WinActivate("World of Warcraft") ;Focus WoW-window
|
|
main();start the main func
|
|
|
|
;End of plain code - begin of the func declarations
|
|
|
|
func main()
|
|
print_log("Started Main-Loop")
|
|
|
|
win_focus_check();
|
|
|
|
$search_status = 0
|
|
$time = 0
|
|
|
|
if $use_lure = 1 then ;Luresupport
|
|
if TimerDiff($timer_lure) >= $fishing_lure_time+$lag_offset then
|
|
equip_lure();equip the lur to the rod with makro.
|
|
$timer_lure = Timerinit();restart the timer.
|
|
endif
|
|
endif
|
|
|
|
start_fishing() ;throw the rod
|
|
$timer = Timerinit();start timer
|
|
|
|
while $time <= $timer_fishing+$lag_offset; restarts the loop after 21 sec
|
|
|
|
$time = TimerDiff($timer);timerconrtroll
|
|
|
|
if $search_status = 0 then
|
|
;print_log("Searching for feather...")
|
|
if search_feather($feathers) = 1 then
|
|
$search_status = 1 ; Feather found
|
|
endif
|
|
endif
|
|
|
|
if $search_status = 1 then
|
|
print_log("Waiting for bite...")
|
|
if wait_for_bite() = 1 then
|
|
main() ;exitloop ;Fish found and looted -> restart loop
|
|
endif
|
|
endif
|
|
|
|
win_focus_check();
|
|
|
|
wend
|
|
|
|
main();restart main func
|
|
|
|
endfunc
|
|
|
|
func win_focus_check()
|
|
if WinActive("World of Warcraft") == 0 then
|
|
MsgBox(0,"WoW Fishing Info","Info: Bot will exit after this Message, cause the right Window was never/nolonger active! Restart the bot manually!")
|
|
exit
|
|
endif
|
|
endfunc
|
|
|
|
func search_feather($feathers)
|
|
|
|
;find where the feather is located
|
|
for $i = 0 to UBound($feathers)-1
|
|
print_log("Search Feather " + $i)
|
|
if $windowed_mode = 0 then ;left;top;right;bottom
|
|
$feather_cord = PixelSearch ( $search_area_space_left, $search_area_space_top, @DesktopWidth- $search_area_space_right, @DesktopHeight - $search_area_space_bottom, $feathers[$i], $feather_color_Variance, $step)
|
|
else
|
|
$feather_cord = PixelSearch ( ((@DesktopWidth - $game_res_x) / 2) + $search_area_space_left, ((@DesktopHeight - $game_res_y) / 2) + $search_area_space_top, @DesktopWidth - (((@DesktopWidth - $game_res_x) / 2) - $search_area_space_right), @DesktopHeight - (((@DesktopHeight - $game_res_y) / 2) - $search_area_space_bottom), $feathers[$i], $feather_color_Variance, $step)
|
|
endif
|
|
|
|
if NOT @error = 1 then
|
|
print_log("Found Something.")
|
|
;PServer Debug:
|
|
$feather_cord[0] = $feather_cord[0]
|
|
$feather_cord[1] = $feather_cord[1] + 6
|
|
|
|
mousemove($feather_cord[0], $feather_cord[1]);move mouse to feather ;no need to move the mouse at this time - there will be plenty time later - but for orientating its quite usefull
|
|
return 1
|
|
endif
|
|
|
|
seterror(2);resets @error macro so it doesn't fire next loop
|
|
next
|
|
|
|
return 0
|
|
endfunc
|
|
|
|
func wait_for_bite()
|
|
|
|
if $day = 1 then
|
|
$splash = $splash_day
|
|
else
|
|
$splash = $splash_night
|
|
endif
|
|
|
|
;left;top;right;bottom
|
|
$sp = Pixelsearch($feather_cord[0] - $s_offset, $feather_cord[1] - $s_offset, $feather_cord[0] + $s_offset, $feather_cord[1] + $s_offset, $splash, $splash_color_variance)
|
|
if ubound($sp) > 1 then;if $sp returns cords then shift + rightclick, discards $sp cords
|
|
seterror(2) ;resets @error macro so it doesn't fire next loop
|
|
print_log("Fish!")
|
|
loot() ;loot fish
|
|
return 1
|
|
endif
|
|
|
|
return 0
|
|
endfunc
|
|
|
|
func start_fishing()
|
|
print_log("Send Fishing Hotkey")
|
|
send($fishing_hotkey) ;Send fishing hotkey
|
|
sleep($feather_disapear) ;Wait for the old feather to disapear
|
|
endfunc
|
|
|
|
func loot()
|
|
print_log("Loot Fish")
|
|
|
|
sleep(300) ;Some debugging
|
|
|
|
if $use_internal_loot = 1 then ;internal loot
|
|
send("{shiftdown}") ;Activate shift to loot everything
|
|
endif
|
|
|
|
sleep(750)
|
|
mouseclick("right", $feather_cord[0], $feather_cord[1], 1, 1) ;Rightklick on Featherposition, which was located in search_feather()
|
|
sleep(750) ;Wait till lootwindow opens
|
|
|
|
if $use_internal_loot = 1 then ;internal loot
|
|
send("{shiftup}")
|
|
endif
|
|
endfunc
|
|
|
|
func equip_rod()
|
|
print_log("Send Rod-Equip Hotkey")
|
|
send($fishing_rod_equip) ;Send equip-rod hotkey
|
|
sleep(500) ;Wait for the equip
|
|
endfunc
|
|
|
|
func equip_lure()
|
|
print_log("Equip Lure")
|
|
if $wow_1121_lure = 1 then
|
|
print_log("Send CharScreen Hotkey")
|
|
send($char_screen_key)
|
|
print_log("Send Lure-Equip Hotkey")
|
|
send($fishing_lure_equip) ;Send lure-equip hotkey
|
|
sleep(300)
|
|
MouseClick("left", $char_mainhandslot_x, $char_mainhandslot_y, 1, 1);Rightclick on Fishingpole
|
|
sleep($fishing_lure_casttime+$lag_offset) ;Wait for the lure to be equiped
|
|
send($char_screen_key);close char screen
|
|
else
|
|
print_log("Send Lure-Equip Hotkey")
|
|
send($fishing_lure_equip) ;Send lure-equip hotkey
|
|
sleep($fishing_lure_casttime+$lag_offset) ;Wait for the lure to be equiped
|
|
endif
|
|
endfunc
|
|
|
|
func print_log($message)
|
|
;this func just updates splash message if the variable $debug is set to '1' in the beginning
|
|
if $debug = 1 then
|
|
SplashTextOn( "", $message , 100 , 100 ,1 ,1 , 17)
|
|
endif
|
|
endfunc |