• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Change the look. To dismiss this notice, click the X --->

Request - Fishing mac that works Please.. and some other stuff. (1 Viewer)

Infiniteye

BANNED
Joined
Nov 22, 2010
RedCents
104¢
I can't code and I have no idea what I'm doing so I played around with the fishing macs available to the general public (adv fish, hyperfish, fish, skilling) and then I modified the foragedestroy to /fish and /drop but even that doesn't work 100% especially for what I want to do.

The hyperfish is almost exactly what I want out of a fishing macro, Looks for poles, fisherman's companion and summons a pole if needed, even though when it was working it didn't do this. It's written in the code though and should do it. Unfortunately every mac i've tried/edited and gotten to work will still drop fish I want to keep. or it keeps everything including daggers/sandals. I also like to turn melee on and forage but they don't handle foraged items well anymore because you can forage more than one item almost every time now, so there's no redundancy check. Foragedestory seems to have one that you can set to check more than once but it doesn't function. Playing with all these macs has made my head hurt and I have to constantly monitor my fishers for fish scales, rusty daggers, broken poles etc. it's a pain and I'm trying to get tons of fish to help my friend get baking up. It seems like poles break more often these days too. One toon went through six poles in 45 minutes.

I tried setting up kissassist to buff1=Fishing but there's no support for fishing so that ended my possible kiss solution. Even that wouldn't allow me to summon a new pole etc. or look for and equip one. Is anyone interested in making a macro that handles all that and will check for items on cursor and actually filter them properly if there's more than one item? Hell even when there's just fishing going on I can't get the fishing macros to just drop everything but what I want. I think between lag and mq it just misses things and keeps the stuff i don't want still.


Here's the code I played around with in foragedestroy, I named it fishdestroy to keep me from messing anything up. I totally ripped it off but it worked better than any other fish mac out there I could find. from ones that actually work, skilling didn't even turn on, kept telling me to edit the settings and I did, heavily, for the toon and zone I was in. It still didn't turn on, same with skilling, it would start up and seem like it would start fishing any second but never do anything. I hate to say it but even ninjaadvloot doesn't handle multiple foraged items right either, or items fished up. I tried turning kiss on and using autofire to hit fishing. Advloot doesn't handle items fished up, only foraged and even then it has the same problem the rest have, not handling multiple items on cursor, dropping/keeping the wrong things even though i clearly stated =destroy or =keep after things in the loot file. I'm kinda losing my hope with MQ in general, it seems every macro has some kind of problem and doesn't do what it is even supposed to do.

Sorry for the rant, In a nutshell I'm looking for a fish macro that also handles foraging, but will summon a new pole, or look for fishing poles and equip them. It also needs to drop sort the loot properly even if it takes a few extra seconds. I don't like destroying anything anymore because of the "recovery" tab on merchants I want to keep that clear for things that actually may need to be recovered. I'm tired of setting dagger to drop or destroy and still keeping them, or dropping the fish I wanted when it doesn't say anywhere that I want to drop that type of fish which is what hyperfish is doing to me. Hyperfish has an ini where you can set loot1=Raxil fish yet it still drops it!? I just want to fish, forever, as long as there's bait and poles to be summoned/looked for.

These are the macs i've tried and played with and they either work or sorta work or don't work at all and all of them have some or not enough of the features I want.
Most of them including anything that uses ninjaadvloot filters everything wrong and really pisses me off. I didn't include the ini files for the ones that make one simply because it's not that big of an issue and I know I edited them right, and some have the toon names in them. Thanks for any help/repairs you can do or a whole new mac that really works... here's me getting my hopes up, lol.

Fishdestroy - (I copied foragedestroy and repurposed it)
Rich (BB code):
|Fishdestroy.mac 
|Based off of Grimjack's forage.mac - Thank you =) 
|edit the /varset DestroyArray to reflect what you want to destroy. 
|If you add more update DestArraySize to reflect the change. 
|The next value in the array would be like this. 
|/varset DestroyArray(20) "what you want" 
|And you would update DestArraySize like this. 
|/varset DestArraySize 23


sub Main 
   /cleanup 
   /declare LoopCount int outer 
   /declare DestroyArray[7] string outer 
   /declare DestArraySize int outer 
   /varset DestroyArray[1] "Fish Scales"
   /varset DestroyArray[2] "Rusty Dagger"
   /varset DestroyArray[3] "Fresh Fish"
   /varset DestroyArray[4] "Oseka's Messenger"
   /varset DestroyArray[5] "Prawn"
   /varset DestroyArray[6] "Pod of water"
   /varset DestroyArray[7] "Roots"
   /varset DestArraySize 7
   /varset LoopCount 2

   :Fish 
       /delay 2s 
       /if (${Cursor.ID}) /call ItemSort 
       /if (!${Cursor.ID}) { 
      /if (${Me.Skill[Fishing]} > 0) /doability Fishing 
       } 
       /if (${Cursor.ID}) /call ItemSort 
       /goto :Fish 
   :loop 
/return 

sub ItemSort 
   :itemchecker 
      /if (${Cursor.ID}) { 
          /if (${Cursor.Name.Find[${DestroyArray[${LoopCount}]}]}) { 
            /echo Dropping ${Cursor.Name} 
       /drop 
            /delay 2s 
         } 
      /varcalc LoopCount ${LoopCount}+2 
      |/varadd LoopCount 1 
      /if (${Cursor.ID}) { 
        /if (${LoopCount}<${DestArraySize}) /goto :itemchecker 
        } 
   } 

   /if (${Cursor.ID}) { 
      /echo Keeping ${Cursor.Name} 
      /autoinventory 
      /delay 2s 
   } 
   /doevents 
   /varset LoopCount 4 
/return

ADV FISH

Rich (BB code):
|---------------------------------------------------------------------------------
| Advanced Fishing Macro
| adv_fishing.mac
| Author      : panther
| Version     : v1.0beta 2004-07-01 18:58pm GMT
| Useage      : /macro adv_fishing
| Description :
| This macro will fish for you and keep all items in FishingLoot.ini. You need a
| fisherman's companion in an inventory slot for this macro to work properly.
|---------------------------------------------------------------------------------

#turbo 10

#event BrokenPole "Your fishing pole broke!"
#event LostBait "You lost your bait!"
#event NeedPole "You can't fish without a fishing pole, go buy one."
#event NothingCaught "You didn't catch anything."
#event OutOfBait "You can't fish without fishing bait, go buy some."
#event PrimaryHand "You need to put your fishing pole in your primary hand."
#event SkillUp "You have become better at #1#! (#2#)"
#event SpillBeer "You spill your beer while bringing in your line."

Sub Main

   |------------------------------------------------------------
   |Should I display fishing stats? (1 for yes, 0 for no)
   |------------------------------------------------------------
   /declare RV_DisplayStats     int outer  1


   /echo Starting up ${Macro}
   /declare int_BrokenPole     int outer  1
   /declare int_ItemsDropped     int outer  0
   /declare int_LostBait     int outer  0
   /declare int_NothingCaught     int outer  0
   /declare int_SpillBeer     int outer  1
   /declare int_TotalCasts     int outer  1
   |------------------------------------------------------------
   |Load in Loot Table.
   |------------------------------------------------------------
   /call ReadINI FishingLoot.ini "${Zone.Name}" Loot
   /if (!${Defined[RV_LootArray]}) {
      /echo No Loot Table Created... Please create one.
      /endmacro
   }
       /delay 2s
   /autoinventory
      /delay 2s
   :Start
      /call GMCheck
      /delay 2s
      /if (${Cursor.ID}) /call Looting
      /if (${Me.AbilityReady[Fishing]}) {
         /delay 3s
         /varcalc int_TotalCasts ${int_TotalCasts}+1
         /doability Fishing
      }
      /doevents
   /goto :Start
/return


|--------------------------------------------------------------------------------
|SUB: Display fishing stats.
|--------------------------------------------------------------------------------
Sub DisplayStats

   /declare nArray  int local
   /echo Total number of casts = ${int_TotalCasts}
   /echo Items fished so far
   /echo -------------------
   /if (${Defined[RV_LootArray]}) {
      /for nArray 1 to ${RV_LootArray.Size}
         /echo ${Int[${RV_LootStats[${nArray}]}]} - ${RV_LootArray[${nArray}]}'s
      /next nArray
   }
   /echo
   /echo Bad fishing so far
   /echo ------------------
   /echo ${int_BrokenPole} - Broken poles
   /echo ${int_ItemsDropped} - Items dropped
   /echo ${int_LostBait} - Lost bait
   /echo ${int_NothingCaught} - Nothing caught
   /echo ${int_SpillBeer} - Spilt your beer
/return

|--------------------------------------------------------------------------------
|SUB: Check for GM's in zone.
|--------------------------------------------------------------------------------
Sub GMCheck

   /if (${Spawn[gm].ID}) {
      /beep
      /beep
      /beep
      /echo GM entered the zone!
      /echo For safty reasons ending the macro...
      /endmacro
   }

/return

|--------------------------------------------------------------------------------
|SUB: Looting based on FishingLoot.ini.
|--------------------------------------------------------------------------------
Sub Looting

   /declare LootCheck   int inner  0

   /for LootCheck 1 to ${RV_LootArray.Size}
      /if (${Cursor.Name.Find[${RV_LootArray[${LootCheck}]}]}) {
         /echo Keeping a ${Cursor.Name}... WOOT!
         /varcalc RV_LootStats[${LootCheck}] ${RV_LootStats[${LootCheck}]}+1
         /autoinventory
      }
   /next LootCheck

   /if (${Cursor.ID}) {
      /echo Dropping a ${Cursor.Name}...
      /drop
      /varcalc int_ItemsDropped ${int_ItemsDropped}+1
   }

   /if (${RV_DisplayStats}) /call DisplayStats
/return

|--------------------------------------------------------------------------------
|SUB: Read loot table from the INI file.
|--------------------------------------------------------------------------------
Sub ReadINI(FileName,SectionName,ArrayType)

   /echo Attempting to Read Section "${SectionName}" Zone Information from ${FileName}...
   /delay 1s

   /if (${Ini[${FileName},${SectionName},-1,NO].Equal[NO]}) {
      /echo "${SectionName}" is not a Valid Section for FILE:${FileName}, ending macro...
      /delay 1s
      /return
   }
   /declare nValues     int local  1
   /declare nArray      int local  0
   /declare KeySet      string local  ${Ini[${FileName},${SectionName}]}

   :CounterLoop
   /if (${String[${Ini[${FileName},${SectionName},${ArrayType}${nValues}]}].Equal[null]}) {
      /varcalc nValues ${nValues}-1
      /goto :MakeArray
   }
   /varcalc nValues ${nValues}+1
   /goto :CounterLoop

   :MakeArray
   /if (!${nValues}) /return
   /if (${FileName.Equal["FishingLoot.ini"]}&&${nValues}>0) {
      /echo Declaring Loot Array...
      /declare RV_LootArray[${nValues}]  string outer
      /declare RV_LootStats[${nValues}]  string outer
   }

   /for nArray 1 to ${nValues}
      /if (${FileName.Equal["FishingLoot.ini"]}) {
         /varset RV_LootArray[${nArray}] ${Ini[${FileName},${SectionName},${ArrayType}${nArray}]}
         /varset RV_LootStats[${nArray}] 0
      }
   /next nArray

   /echo "${SectionName}" Zone Information Read Successfully from ${FileName}...
   /delay 1s

/return


|--------------------------------------------------------------------------------
|SUB: Event subroutines.
|--------------------------------------------------------------------------------
Sub Event_BrokenPole
   /varcalc int_BrokenPole ${int_BrokenPole}+1
   /varcalc int_NothingCaught ${int_NothingCaught}-1
/return

Sub Event_LostBait
   /varcalc int_LostBait ${int_LostBait}+1
   /varcalc int_NothingCaught ${int_NothingCaught}-1
/return

Sub Event_NeedPole
   /cast item "Fisherman's Companion"
   /delay 11s
   /autoinventory
/return

Sub Event_NothingCaught
   /varcalc int_NothingCaught ${int_NothingCaught}+1
/return

Sub Event_OutOfBait
   /Echo Ran out of Bait.
   /sit off
   /sit on
   /camp
   /endmacro
/return

Sub Event_PrimaryHand
   /cast item "Fisherman's Companion"
   /delay 11s
   /autoinventory
/return

Sub Event_SkillUp(SkillUpText,Skill,int Amount)
   /popup Fishing increased to - ${Amount}
   /echo Fishing increased to - ${Amount}
/return

Sub Event_SpillBeer
   /varcalc int_SpillBeer ${int_SpillBeer}+1
   /varcalc int_NothingCaught ${int_NothingCaught}-1
/return
|--------------------------------------------------------------------------------



YODAFISH (also doesn't work the way it is coded)

Rich (BB code):
|*******************************************************************|
| - YodaFish.mac -                                                 *|
| - By: Yoda                                                       *|
| - v2.0 by DKAA                                                   *|
|                                                                  *|
| Usage:                                                           *|
| To Fish and Gate if anything attacks you.                        *|
| Will Sit and camp out when you run out of bait.                  *|
| To be used with a Fisherman's Companion.                         *|
|                                                                  *|
|*******************************************************************|

#turbo

#event BrokenPole "#*#You can't fish without a fishing pole, go buy one.#*#"
#event NoBait "#*#You can't fish without fishing bait, go buy some.#*#"

Sub Main
    /cleanup
    :Fish
        /call CheckPole 
        /doability Fishing
        /delay 65 
        /doevents

        /if (!${Cursor.ID}) /goto :Fish

        /if (${Cursor.Name.Equal[Tattered Cloth Sandal]}) {
            /destroy
            /delay 1s
        } else {
            /if (${Cursor.Name.Equal[Rusty Dagger]}) {
                /destroy
                /delay 1s
            } else {
                /call KeepItem
            }
      }
   /goto :Fish
/return

Sub KeepItem
   /if (${Cursor.Name.NotEqual[Fish Scales]}) /echo Caught ${Cursor.Name}
   /notify InventoryWindow IW_CharacterView leftmouseup
/return

Sub CheckPole
   /if (${Me.Inventory[mainhand].Name.Find[Fishing Pole]}) /return
   /echo  You need to put your fishing pole in your primary hand.
   /endm
/return

Sub Event_BrokenPole
   /
/return

Sub Event_NoBait
   /endmacro
/return


Hyperfish (I like the way this one is set up but still doesn't work properly anymore)


Rich (BB code):
|----------------------------------------------------------------------------
|     Name:   HyperFish.Mac                                       
|Developer: Fibby                                             
|     Date: 11/27/2004                                 
|----------------------------------------------------------------------------
|Purpose:   HyperFish is designed to be the next generation "smart" fishing   
|         automation macro.  It will auto replace any broken poles that   
|         may have met their demise at your hands either by searching your
|         inventory for one or summoning one from a fishermans companion    
|                                                         
|         This Macro is INI driven for it's "loot" tables on a per zone   
|         basis.  However, if there's not a section for the zone you want   
|         to fish in the INI file, then it will create a new section for    
|         your benifit.                                         
|                                                         
|         If there are no loot items defined in the zone section of the    
|         ini file, then the macro will assume that you want to "keep"   
|         all things that are edible and drop all "non food" items.  If   
|         in happens to fish a no-drop non food item, and that item is    
|         not declared in your loot tables, then it will attempt to        
|         destroy that item by default.  You can of course change that     
|         flag if you wish.                                    
|                                                         
| Depends:   HyperLoot.ini - Same directory as this macro               
|----------------------------------------------------------------------------
|Credits:   This script was inspired by panther and his adv_fish macro      
|         while it is an outstanding macro.. I wanted something more...   
|----------------------------------------------------------------------------
|Revisions:
| v1.1  fby      Bug Fixes pointed out by Budman                                                   
| v1.0   fby      Created the initial file offering                     
|----------------------------------------------------------------------------

#turbo 10


|----------------------------------------------------------------------------
| Event Declarations         
|----------------------------------------------------------------------------

#event BrokenPole "Your fishing pole broke!"
#event LostBait "You lost your bait!"
#event NeedPole "You can't fish without a fishing pole, go buy one."
#event NothingCaught "You didn't catch anything."
#event OutOfBait "You can't fish without fishing bait, go buy some."
#event PrimaryHand "You need to put your fishing pole in your primary hand."
#event SkillUp "You have become better at #1#! (#2#)"
#event SpillBeer "You spill your beer while bringing in your line."


|----------------------------------------------------------------------------
| Main Macro Code            
|----------------------------------------------------------------------------

Sub Main

   |------------------------------------------------------------------------
    |User Settings = Set these please (1 for yes, 0 for no)   
   |------------------------------------------------------------------------
   /declare UserVar_DisplayStats   int outer 0
   /declare UserVar_CampOutFinish   int   outer 0
   /declare UserVar_DestroyNoDrop   int outer 0

   |------------------------------------------------------------------------
    | Counter data holders here            
   |------------------------------------------------------------------------
   /declare int_BrokenPole      int outer  0
   /declare int_ItemsDropped   int outer  0
   /declare int_LostBait      int outer  0
   /declare int_NothingCaught   int outer  0
   /declare int_SpillBeer      int outer  0
   /declare int_TotalCasts      int outer  0

   |------------------------------------------------------------------------
    | Operational Variables for this macro   
   |------------------------------------------------------------------------
   /declare op_int_GotLootArray   int outer 1
   /declare op_int_GotFishComp      int outer 1
   /declare op_int_FishByLoot      int outer 1
   /declare op_int_LoopCounter      int outer 0
   /declare op_int_ExitMacro      int outer 0
   
   /echo Starting up ${Macro}
    | Check our inventory for Fish Comp.   
   /for op_int_LoopCounter 1 to 8
      /if (${InvSlot[pack${op_int_LoopCounter}].Item.Name.Equal["Fisherman's Companion"]}) {
         /echo Whoopie!! Found our Fisherman's Companion!
         /varset op_int_GotFishComp 8
         /goto :BreakForFindFishComp
      }
   /next op_int_LoopCounter
   :BreakForFindFishComp
   /varset op_int_LoopCounter 8
   
   |------------------------------------------------------------------------
    | Load in Loot Table.                
   |------------------------------------------------------------------------
   /call ReadINI HyperFish.ini "${Zone.Name}" Loot
    /varset op_int_GotLootArray ${Macro.Return}

   |------------------------------------------------------------------------
   | Inventory anything we may have on our cursor before starting
   |------------------------------------------------------------------------
   /autoinventory
   
   |------------------------------------------------------------------------
   | Heart of the whole fishing routine..   
   |------------------------------------------------------------------------
   :Fish
   /if (${op_int_ExitMacro}==1) /goto :ExitMacro
   /call GMCheck
   /delay 2s
   /if (${Cursor.ID}) /call Looting
   /if (${Me.AbilityReady[Fishing]}) {
       /delay 3s
       /varcalc int_TotalCasts ${int_TotalCasts}+1
       /doability Fishing
   }
   /doevents
   /goto :Fish
|----------------------------------------------------------------------------
| End our Macro      
|----------------------------------------------------------------------------
:ExitMacro
   /echo -= Total Stats for this Fishing Trip =-
   /call DisplayStats
   /if (${UserVar_CampOutFinish}=1) {
      /sit off
      /sit on
      /camp
   }
/return



|----------------------------------------------------------------------------
| Begin Support sub routines      
|----------------------------------------------------------------------------
| ReadINI: Stolen from adv_fish code, modified to return 1 if
|         loot table built or 0 of loot table not built.
|----------------------------------------------------------------------------
Sub ReadINI(FileName, ZoneName, KeyRoot)
   /declare loc_int_returnValue int local 0
   /echo Attempting to Read "${ZoneName}" Section from ${FileName}
   /delay 1s
   
   /if (${Ini[${FileName}, ${ZoneName}, -1, NO].Equal[NO]}) {
      /echo Zone "${ZoneName}" Not found, Creating it now...
      /Ini ${FileName}, ${ZoneName}, -1, -1
      /delay 1s
        | Obviously, since we didn't have a section, we're not going to
        | have a loot section.. so we can end now
      /return loc_int_returnValue
   }
   
   /declare nValues     int local  1
   /declare nArray      int local  0
    /declare KeySet      string local  ${Ini[${FileName},${SectionName}]}
   
    :CounterLoop
   /if (${String[${Ini[${FileName},${SectionName},${ArrayType}${nValues}]}].Equal[null]}) {
      /varcalc nValues ${nValues}-1
      /goto :MakeArray
   }
   /varcalc nValues ${nValues}+1
    /goto :CounterLoop
   
    :MakeArray
   /if (!${nValues}) {
      | We didn't find any values in our loot tables.. so we'll just exit now
      /return loc_int_returnValue
   } else {
      | Must have found some values.. set our return variable now
      /varset loc_int_returnValue 1
   }
   /if (${FileName.Equal["HyperFish.ini"]}&&${nValues}>0) {
      /echo Declaring Loot Array...
      /declare RV_LootArray[${nValues}]  string outer
      /declare RV_LootStats[${nValues}]  string outer
   }
   
   /for nArray 1 to ${nValues}
      /if (${FileName.Equal["HyperFish.ini"]}) {
         /varset RV_LootArray[${nArray}] ${Ini[${FileName},${SectionName},${ArrayType}${nArray}]}
         /varset RV_LootStats[${nArray}] 0
      }
   /next nArray
   
   /echo "${SectionName}" Zone Information Read Successfully from ${FileName}...
   /delay 1s
/return loc_int_returnValue

|----------------------------------------------------------------------------
|SUB: Display fishing stats.
|----------------------------------------------------------------------------
Sub DisplayStats
   /declare nArray  int local
   /echo Total number of casts = ${int_TotalCasts}
   /echo Items fished so far:
   /if (${Defined[RV_LootArray]}) {
      /for nArray 1 to ${RV_LootArray.Size}
         /echo   ${RV_LootArray[${nArray}]} -  ${Int[${RV_LootStats[${nArray}]}]}
      /next nArray
   }
   /echo
   /echo Bad fishing so far:
   /echo    Broken Poles - ${int_BrokenPole}
   /echo   Items Dropped - ${int_ItemsDropped}
   /echo       Lost Bait - ${int_LostBait}
   /echo  Nothing Caught - ${int_NothingCaught}
   /echo    Spilled Beer - ${int_SpillBeer}
/return

|----------------------------------------------------------------------------
|SUB: Main Looting routine.. based on adv_fish, heavily modified.
|----------------------------------------------------------------------------
Sub Looting
   /declare LootCheck   int inner 0
   
   /if (${op_int_GotLootArray}==0) {
      /if (${Cursor.Type.Equal["Meal"]}) {
         /autoinventory
      }
   } else {   
      /for LootCheck 1 to ${RV_LootArray.Size}
         /if (${Cursor.Name.Find[${RV_LootArray[${LootCheck}]}]}) {
            /echo Keeping a ${Cursor.Name}
            /varcalc RV_LootStats[${LootCheck}] ${RV_LootStats[${LootCheck}]}+1
            /autoinventory
         }
      /next LootCheck
   }
   /if (${Cursor.ID}) {
      /if (${Cursor.NoDrop}) {
         /if (${UserVar_DestroyNoDrop}==1) {
            /destroy
         } else {
            /autoinventory
         }
      } else {
         /echo Dropping a ${Cursor.Name}...
         /drop
         /varcalc int_ItemsDropped ${int_ItemsDropped}+1
      }
   }
   /if (${UserVar_DisplayStats}==1) /call DisplayStats
/return

|----------------------------------------------------------------------------
|SUB: Pole replacement logic
|----------------------------------------------------------------------------
Sub FindPole
   /declare lv_int_Return int local 0
   /declare lv_int_LoopCounter int local 0
   /if (${op_int_GotFishComp}==1) {
      | We have our companion.. summon our pole
      /cast item "Fisherman's Companion"
      /delay 11s
      /autoinventory
      /varset lv_int_Return 1
   } else {
      | We don't have a companion, find a fishing pole in inventory
      /for op_int_LoopCounter 1 to 8
         /if (${InvSlot[pack${op_int_LoopCounter}].Item.Container}) {
            /for lv_int_LoopCounter 1 to ${InvSlot[pack${op_int_LoopCounter].Container}
               /echo ${InvSlot[pack${op_int_LoopCounter}].Item.Name} - ${InvSlot[pack${op_int_LoopCounter}].Item.Item[${lv_int_LoopCounter}].Name}
               /if (${InvSlot[pack${op_int_LoopCounter}].Item.Item[${lv_int_LoopCounter}].Type.Equal["Fishing Pole"]}) {
                  /ItemNotifiy pack${op_int_LoopCounter} rightmouseup
                  /ItemNotify ${InvSlot[pack${op_int_LoopCounter}]} ${lv_int_LoopCounter} leftmouseup
                  /autoinventory
                  /varset lv_int_Return 1
                  /goto :BreakoutLoop
               }
            /next lv_int_LoopCounter
         } else {
            /if (${InvSlot[pack${op_int_LoopCounter}].Item.Type.Equal["Fishing Pole"]}) {
               /itemnotify pack${op_int_LoopCounter} leftmouseup
               /autoinventory
               /varset lv_int_Return 1
               /goto :BreakoutLoop
            }
         }
      /next op_int_LoopCounter
   }
   :BreakoutLoop
   /if (${lv_int_Return}==0) {
      /echo Bummer.. We're out of Fishing Poles
      /varset op_int_ExitMacro 1
   }
/return lv_int_Return

|----------------------------------------------------------------------------
|SUB: Check for GM's in zone.
|----------------------------------------------------------------------------
Sub GMCheck

   /if (${Spawn[gm].ID}) {
      /beep
      /beep
      /beep
      /echo GM entered the zone!
      /echo For safty reasons ending the macro...
      /endmacro
   }

/return

|----------------------------------------------------------------------------
| End Support sub routines         
|----------------------------------------------------------------------------

|----------------------------------------------------------------------------
| Begin Event Sub Routines         
|----------------------------------------------------------------------------
Sub Event_BrokenPole
   /varcalc int_BrokenPole ${int_BrokenPole}+1
   /varcalc int_NothingCaught ${int_NothingCaught}-1
/return


Sub Event_LostBait
   /varcalc int_LostBait ${int_LostBait}+1
   /varcalc int_NothingCaught ${int_NothingCaught}-1
/return


Sub Event_NeedPole
   /call FindPole
/return


Sub Event_NothingCaught
   /varcalc int_NothingCaught ${int_NothingCaught}+1
/return


Sub Event_OutOfBait
   /echo Bummer.. we're out of bait
   /varset op_int_ExitMacro 1
/return


Sub Event_PrimaryHand
   /call FindPole
/return


Sub Event_SkillUp(SkillUpText,Skill,int Amount)
   /popup Fishing increased to - ${Amount}
   /echo Fishing increased to - ${Amount}
/return


Sub Event_SpillBeer
   /varcalc int_SpillBeer ${int_SpillBeer}+1
   /varcalc int_NothingCaught ${int_NothingCaught}-1
/return
|----------------------------------------------------------------------------
| End Event Sub Routines         
|----------------------------------------------------------------------------


Skilling (NIGHTMARE)

Rich (BB code):
|----------------------------------------------------------------------------
|     Name:   HyperFish.Mac                                       
|Developer: Fibby                                             
|     Date: 11/27/2004                                 
|----------------------------------------------------------------------------
|Purpose:   HyperFish is designed to be the next generation "smart" fishing   
|         automation macro.  It will auto replace any broken poles that   
|         may have met their demise at your hands either by searching your
|         inventory for one or summoning one from a fishermans companion    
|                                                         
|         This Macro is INI driven for it's "loot" tables on a per zone   
|         basis.  However, if there's not a section for the zone you want   
|         to fish in the INI file, then it will create a new section for    
|         your benifit.                                         
|                                                         
|         If there are no loot items defined in the zone section of the    
|         ini file, then the macro will assume that you want to "keep"   
|         all things that are edible and drop all "non food" items.  If   
|         in happens to fish a no-drop non food item, and that item is    
|         not declared in your loot tables, then it will attempt to        
|         destroy that item by default.  You can of course change that     
|         flag if you wish.                                    
|                                                         
| Depends:   HyperLoot.ini - Same directory as this macro               
|----------------------------------------------------------------------------
|Credits:   This script was inspired by panther and his adv_fish macro      
|         while it is an outstanding macro.. I wanted something more...   
|----------------------------------------------------------------------------
|Revisions:
| v1.1  fby      Bug Fixes pointed out by Budman                                                   
| v1.0   fby      Created the initial file offering                     
|----------------------------------------------------------------------------

#turbo 10


|----------------------------------------------------------------------------
| Event Declarations         
|----------------------------------------------------------------------------

#event BrokenPole "Your fishing pole broke!"
#event LostBait "You lost your bait!"
#event NeedPole "You can't fish without a fishing pole, go buy one."
#event NothingCaught "You didn't catch anything."
#event OutOfBait "You can't fish without fishing bait, go buy some."
#event PrimaryHand "You need to put your fishing pole in your primary hand."
#event SkillUp "You have become better at #1#! (#2#)"
#event SpillBeer "You spill your beer while bringing in your line."


|----------------------------------------------------------------------------
| Main Macro Code            
|----------------------------------------------------------------------------

Sub Main

   |------------------------------------------------------------------------
    |User Settings = Set these please (1 for yes, 0 for no)   
   |------------------------------------------------------------------------
   /declare UserVar_DisplayStats   int outer 0
   /declare UserVar_CampOutFinish   int   outer 0
   /declare UserVar_DestroyNoDrop   int outer 0

   |------------------------------------------------------------------------
    | Counter data holders here            
   |------------------------------------------------------------------------
   /declare int_BrokenPole      int outer  0
   /declare int_ItemsDropped   int outer  0
   /declare int_LostBait      int outer  0
   /declare int_NothingCaught   int outer  0
   /declare int_SpillBeer      int outer  0
   /declare int_TotalCasts      int outer  0

   |------------------------------------------------------------------------
    | Operational Variables for this macro   
   |------------------------------------------------------------------------
   /declare op_int_GotLootArray   int outer 1
   /declare op_int_GotFishComp      int outer 1
   /declare op_int_FishByLoot      int outer 1
   /declare op_int_LoopCounter      int outer 0
   /declare op_int_ExitMacro      int outer 0
   
   /echo Starting up ${Macro}
    | Check our inventory for Fish Comp.   
   /for op_int_LoopCounter 1 to 8
      /if (${InvSlot[pack${op_int_LoopCounter}].Item.Name.Equal["Fisherman's Companion"]}) {
         /echo Whoopie!! Found our Fisherman's Companion!
         /varset op_int_GotFishComp 8
         /goto :BreakForFindFishComp
      }
   /next op_int_LoopCounter
   :BreakForFindFishComp
   /varset op_int_LoopCounter 8
   
   |------------------------------------------------------------------------
    | Load in Loot Table.                
   |------------------------------------------------------------------------
   /call ReadINI HyperFish.ini "${Zone.Name}" Loot
    /varset op_int_GotLootArray ${Macro.Return}

   |------------------------------------------------------------------------
   | Inventory anything we may have on our cursor before starting
   |------------------------------------------------------------------------
   /autoinventory
   
   |------------------------------------------------------------------------
   | Heart of the whole fishing routine..   
   |------------------------------------------------------------------------
   :Fish
   /if (${op_int_ExitMacro}==1) /goto :ExitMacro
   /call GMCheck
   /delay 2s
   /if (${Cursor.ID}) /call Looting
   /if (${Me.AbilityReady[Fishing]}) {
       /delay 3s
       /varcalc int_TotalCasts ${int_TotalCasts}+1
       /doability Fishing
   }
   /doevents
   /goto :Fish
|----------------------------------------------------------------------------
| End our Macro      
|----------------------------------------------------------------------------
:ExitMacro
   /echo -= Total Stats for this Fishing Trip =-
   /call DisplayStats
   /if (${UserVar_CampOutFinish}=1) {
      /sit off
      /sit on
      /camp
   }
/return



|----------------------------------------------------------------------------
| Begin Support sub routines      
|----------------------------------------------------------------------------
| ReadINI: Stolen from adv_fish code, modified to return 1 if
|         loot table built or 0 of loot table not built.
|----------------------------------------------------------------------------
Sub ReadINI(FileName, ZoneName, KeyRoot)
   /declare loc_int_returnValue int local 0
   /echo Attempting to Read "${ZoneName}" Section from ${FileName}
   /delay 1s
   
   /if (${Ini[${FileName}, ${ZoneName}, -1, NO].Equal[NO]}) {
      /echo Zone "${ZoneName}" Not found, Creating it now...
      /Ini ${FileName}, ${ZoneName}, -1, -1
      /delay 1s
        | Obviously, since we didn't have a section, we're not going to
        | have a loot section.. so we can end now
      /return loc_int_returnValue
   }
   
   /declare nValues     int local  1
   /declare nArray      int local  0
    /declare KeySet      string local  ${Ini[${FileName},${SectionName}]}
   
    :CounterLoop
   /if (${String[${Ini[${FileName},${SectionName},${ArrayType}${nValues}]}].Equal[null]}) {
      /varcalc nValues ${nValues}-1
      /goto :MakeArray
   }
   /varcalc nValues ${nValues}+1
    /goto :CounterLoop
   
    :MakeArray
   /if (!${nValues}) {
      | We didn't find any values in our loot tables.. so we'll just exit now
      /return loc_int_returnValue
   } else {
      | Must have found some values.. set our return variable now
      /varset loc_int_returnValue 1
   }
   /if (${FileName.Equal["HyperFish.ini"]}&&${nValues}>0) {
      /echo Declaring Loot Array...
      /declare RV_LootArray[${nValues}]  string outer
      /declare RV_LootStats[${nValues}]  string outer
   }
   
   /for nArray 1 to ${nValues}
      /if (${FileName.Equal["HyperFish.ini"]}) {
         /varset RV_LootArray[${nArray}] ${Ini[${FileName},${SectionName},${ArrayType}${nArray}]}
         /varset RV_LootStats[${nArray}] 0
      }
   /next nArray
   
   /echo "${SectionName}" Zone Information Read Successfully from ${FileName}...
   /delay 1s
/return loc_int_returnValue

|----------------------------------------------------------------------------
|SUB: Display fishing stats.
|----------------------------------------------------------------------------
Sub DisplayStats
   /declare nArray  int local
   /echo Total number of casts = ${int_TotalCasts}
   /echo Items fished so far:
   /if (${Defined[RV_LootArray]}) {
      /for nArray 1 to ${RV_LootArray.Size}
         /echo   ${RV_LootArray[${nArray}]} -  ${Int[${RV_LootStats[${nArray}]}]}
      /next nArray
   }
   /echo
   /echo Bad fishing so far:
   /echo    Broken Poles - ${int_BrokenPole}
   /echo   Items Dropped - ${int_ItemsDropped}
   /echo       Lost Bait - ${int_LostBait}
   /echo  Nothing Caught - ${int_NothingCaught}
   /echo    Spilled Beer - ${int_SpillBeer}
/return

|----------------------------------------------------------------------------
|SUB: Main Looting routine.. based on adv_fish, heavily modified.
|----------------------------------------------------------------------------
Sub Looting
   /declare LootCheck   int inner 0
   
   /if (${op_int_GotLootArray}==0) {
      /if (${Cursor.Type.Equal["Meal"]}) {
         /autoinventory
      }
   } else {   
      /for LootCheck 1 to ${RV_LootArray.Size}
         /if (${Cursor.Name.Find[${RV_LootArray[${LootCheck}]}]}) {
            /echo Keeping a ${Cursor.Name}
            /varcalc RV_LootStats[${LootCheck}] ${RV_LootStats[${LootCheck}]}+1
            /autoinventory
         }
      /next LootCheck
   }
   /if (${Cursor.ID}) {
      /if (${Cursor.NoDrop}) {
         /if (${UserVar_DestroyNoDrop}==1) {
            /destroy
         } else {
            /autoinventory
         }
      } else {
         /echo Dropping a ${Cursor.Name}...
         /drop
         /varcalc int_ItemsDropped ${int_ItemsDropped}+1
      }
   }
   /if (${UserVar_DisplayStats}==1) /call DisplayStats
/return

|----------------------------------------------------------------------------
|SUB: Pole replacement logic
|----------------------------------------------------------------------------
Sub FindPole
   /declare lv_int_Return int local 0
   /declare lv_int_LoopCounter int local 0
   /if (${op_int_GotFishComp}==1) {
      | We have our companion.. summon our pole
      /cast item "Fisherman's Companion"
      /delay 11s
      /autoinventory
      /varset lv_int_Return 1
   } else {
      | We don't have a companion, find a fishing pole in inventory
      /for op_int_LoopCounter 1 to 8
         /if (${InvSlot[pack${op_int_LoopCounter}].Item.Container}) {
            /for lv_int_LoopCounter 1 to ${InvSlot[pack${op_int_LoopCounter].Container}
               /echo ${InvSlot[pack${op_int_LoopCounter}].Item.Name} - ${InvSlot[pack${op_int_LoopCounter}].Item.Item[${lv_int_LoopCounter}].Name}
               /if (${InvSlot[pack${op_int_LoopCounter}].Item.Item[${lv_int_LoopCounter}].Type.Equal["Fishing Pole"]}) {
                  /ItemNotifiy pack${op_int_LoopCounter} rightmouseup
                  /ItemNotify ${InvSlot[pack${op_int_LoopCounter}]} ${lv_int_LoopCounter} leftmouseup
                  /autoinventory
                  /varset lv_int_Return 1
                  /goto :BreakoutLoop
               }
            /next lv_int_LoopCounter
         } else {
            /if (${InvSlot[pack${op_int_LoopCounter}].Item.Type.Equal["Fishing Pole"]}) {
               /itemnotify pack${op_int_LoopCounter} leftmouseup
               /autoinventory
               /varset lv_int_Return 1
               /goto :BreakoutLoop
            }
         }
      /next op_int_LoopCounter
   }
   :BreakoutLoop
   /if (${lv_int_Return}==0) {
      /echo Bummer.. We're out of Fishing Poles
      /varset op_int_ExitMacro 1
   }
/return lv_int_Return

|----------------------------------------------------------------------------
|SUB: Check for GM's in zone.
|----------------------------------------------------------------------------
Sub GMCheck

   /if (${Spawn[gm].ID}) {
      /beep
      /beep
      /beep
      /echo GM entered the zone!
      /echo For safty reasons ending the macro...
      /endmacro
   }

/return

|----------------------------------------------------------------------------
| End Support sub routines         
|----------------------------------------------------------------------------

|----------------------------------------------------------------------------
| Begin Event Sub Routines         
|----------------------------------------------------------------------------
Sub Event_BrokenPole
   /varcalc int_BrokenPole ${int_BrokenPole}+1
   /varcalc int_NothingCaught ${int_NothingCaught}-1
/return


Sub Event_LostBait
   /varcalc int_LostBait ${int_LostBait}+1
   /varcalc int_NothingCaught ${int_NothingCaught}-1
/return


Sub Event_NeedPole
   /call FindPole
/return


Sub Event_NothingCaught
   /varcalc int_NothingCaught ${int_NothingCaught}+1
/return


Sub Event_OutOfBait
   /echo Bummer.. we're out of bait
   /varset op_int_ExitMacro 1
/return


Sub Event_PrimaryHand
   /call FindPole
/return


Sub Event_SkillUp(SkillUpText,Skill,int Amount)
   /popup Fishing increased to - ${Amount}
   /echo Fishing increased to - ${Amount}
/return


Sub Event_SpillBeer
   /varcalc int_SpillBeer ${int_SpillBeer}+1
   /varcalc int_NothingCaught ${int_NothingCaught}-1
/return
|----------------------------------------------------------------------------
| End Event Sub Routines         
|----------------------------------------------------------------------------
 
Ok if you have a brell's fishing pole you are set. Summon your rod and place in primary. Buy your catch-o-lot bait and you are set. The brell's pole is unbreakable now. This is as simple a macro as you get for fishing that works.
 

Attachments

  • AutoFish.mac
    3 KB · Views: 38
@ChatWithThisName 's fishing macro is definitely the one to use. I dont have a fishermans companion so I bought a stack of catchalot bait, and like 10 poles, and let it fish all night. By the next day it was at 200, and I didnt have any stupid boots, daggers, or other junk. incredible work!!
 
You should already have a mac called fish.mac. All you have to do is equip your pole and bait. Make a bandolier entry named fish. Open the fish make and add /bandolier Activate fish were i have it highlighted above call /check pole. It will keep going till you run out of poles or bait. It will destroy Tattered Cloth Sandal and Rusty Dagger while keeping every thinging else. There are better ones but this will work for all.
|*******************************************************************|
| - YodaFish.mac - *|
| - By: Yoda *|
| - v2.0 by DKAA *|
| *|
| Usage: *|
| To Fish and Gate if anything attacks you. *|
| Will Sit and camp out when you run out of bait. *|
| To be used with a Fisherman's Companion. *|
| *|
|*******************************************************************|

#turbo

#event BrokenPole "#*#You can't fish without a fishing pole, go buy one.#*#"
#event NoBait "#*#You can't fish without fishing bait, go buy some.#*#"


| --------------------------------------------------------------------------------------------
| SUB: Main
| --------------------------------------------------------------------------------------------
Sub Main
/cleanup
:Fish
/bandolier Activate fish
/call CheckPole
/doability Fishing
/delay 65
/doevents

/if (!${Cursor.ID}) /goto :Fish

/if (${Cursor.Name.Equal[Tattered Cloth Sandal]}) {
/destroy
/delay 1s
} else {
/if (${Cursor.Name.Equal[Rusty Dagger]}) {
/destroy
/delay 1s
} else {
/call KeepItem
}
}
/goto :Fish
/return


| --------------------------------------------------------------------------------------------
| SUB: KeepItem
| --------------------------------------------------------------------------------------------
Sub KeepItem
/if (${Cursor.Name.NotEqual[Fish Scales]}) /echo Caught ${Cursor.Name}
/autoinventory
/return


| --------------------------------------------------------------------------------------------
| SUB: CheckPole
| --------------------------------------------------------------------------------------------
Sub CheckPole
/if (${Me.Inventory[mainhand].Name.Find[Fishing Pole]}) /return
/echo You need to put your fishing pole in your primary hand.
/endm
/return


| --------------------------------------------------------------------------------------------
| SUB: Event_BrokenPole
| --------------------------------------------------------------------------------------------
Sub Event_BrokenPole
/endmacro
/return


| --------------------------------------------------------------------------------------------
| SUB: Event_NoBait
| --------------------------------------------------------------------------------------------
Sub Event_NoBait
/endmacro
/return


| [+++ Formatted by MQ2fusing tabs for indents +++]
 
Last edited:
So I just wasted some time doing the Fisherman's Companion Quest since Blessed Fishing Rod would give error:
"You need to put your fishing pole in your primary hand"

Was still getting error so checked fish.mac and found it's missing these entries (probably more) under the CheckPole subroutine:
INI:
    /if (${Me.Inventory[mainhand].Name.Find[Brell's Fishin' Pole]}) /return

Whole thing:

| SUB: CheckPole:
| --------------------------------------------------------------------------------------------
| SUB: CheckPole
| --------------------------------------------------------------------------------------------
    Sub CheckPole
    /if (${Me.Inventory[mainhand].Name.Find[Fishing Pole]}) /return
    /if (${Me.Inventory[mainhand].Name.Find[The Bone Rod]}) /return
    /if (${Me.Inventory[mainhand].Name.Find[Aglthin's Fishing Pole]}) /return
    /if (${Me.Inventory[mainhand].Name.Find[Ancient Fishing Pole]}) /return
    /if (${Me.Inventory[mainhand].Name.Find[Collapsible Fishing Pole]}) /return
    /if (${Me.Inventory[mainhand].Name.Find[Grey Wood Fishing Pole]}) /return
    /if (${Me.Inventory[mainhand].Name.Find[Hintol`s Fishing Pole]}) /return
    /if (${Me.Inventory[mainhand].Name.Find[KT's Magic Fishing Pole]}) /return
    /if (${Me.Inventory[mainhand].Name.Find[The Bone Rod]}) /return
    /if (${Me.Inventory[mainhand].Name.Find[Kerran Fishing Pole]}) /return
    /if (${Me.Inventory[mainhand].Name.Find[Uliorn's Fishing Pole]}) /return
    /if (${Me.Inventory[mainhand].Name.Find[Brell's Fishin' Pole]}) /return
    /echo  You need to put your fishing pole in your primary hand.
    /endm
    /return

Also The Bone Rod is listed twice which is probably just redundant.
 
Last edited:
Request - Fishing mac that works Please.. and some other stuff.

Users who are viewing this thread

Back
Top