HyperFishing Mac Help please

Did you make sure to move your "Fishing" hot button from your Actions window over to a hotbar? I think its same, as with forage macros, you need to have it on your hotbar iirr.
 
It needed the empty section check updated. Try this one, let us know. :)

htw
 
Having an Issue with this old mac just dropping everything caught and i am by no means good enough at the coding aspect of things to figure out why.

Code for the mac i am using

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 1
   /declare UserVar_CampOutFinish   int   outer 1
   /declare UserVar_DestroyNoDrop   int outer 1

   |------------------------------------------------------------------------
    | 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 0
   /declare op_int_GotFishComp      int outer 0
   /declare op_int_FishByLoot      int outer 0
   /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 1
         /goto :BreakForFindFishComp
      }
   /next op_int_LoopCounter
   :BreakForFindFishComp
   /varset op_int_LoopCounter 0
   
   |------------------------------------------------------------------------
    | 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 1s
       /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["Food"]}) {
         /autoinventory
      }
   } else {   
      /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}) {
      /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         
|----------------------------------------------------------------------------

Loot InI example-I have tried adding both hpyerloot.ini and hyperfish.ini to my folder.
[Neriak - Commons]
Loot1=Fresh Fish
Loot2=Fish Scales

[The Plane of Nightmares]
Loot1=Fresh Fish
Loot2=Fish Scales
Loot3=Crawdad
Loot4=Waterleaf Scale
Loot5=Nightmare Cichlid

[The Plane of Valor]
Loot1=Fresh Fish
Loot2=Fish Scales
Loot3=Crawdad
Loot4=Vallorian Discus

[North Qeynos]
Loot1=Fresh Fish
Loot2=Fish Scales
 
LOL there was no way this ever worked as is, too many issues. ;)

I played with it a bit, made a bunch of changes. I don't have a fisherman's companion on my toon, so didn't get to test with that.

See if you find any issues if ya want.

htw

Code:
|----------------------------------------------------------------------------
|     Name: HyperFish.Mac                                       
|Developer: Fibby                                             
|     Date: 11/27/2004                                 
|  Updated:  7/30/2016
|----------------------------------------------------------------------------
|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:   HyperFish.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.2  htw      Changed Zone.Name to Zone.ShortName, fixed INI section exists
                 check and fixed several other bugs
| 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 NeedPoleA "You can't fish without a fishing pole, go buy one."
#event NeedPoleB "You need to put your fishing pole in your primary hand."
#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."
#event CaughtIt "You caught #1#!"
#event CaughtSomething "You caught something..."


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

Sub Main

   |------------------------------------------------------------------------
    |User Settings = Set these please (1 for yes, 0 for no)   
   |------------------------------------------------------------------------
   /declare UserVar_DisplayStats   int outer 1
   /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
   /declare int_FoodCaught     int outer  0

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

   |------------------------------------------------------------------------
   | 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
   /doevents
   /if (${Me.AbilityReady[Fishing]}) {
       /delay 2s !${Cursor.ID}
       /doevents
       /delay 1s
       /varcalc int_TotalCasts ${int_TotalCasts}+1
       /doability Fishing
   }
   /goto :Fish
|----------------------------------------------------------------------------
| End our Macro      
|----------------------------------------------------------------------------
:ExitMacro
   /echo \aw-= \amTotal Stats for this Fishing Trip \aw=-
   /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)
   /echo \agAttempting to Read ${ZoneName} Section from ${FileName}
   
   /if (${Ini[${FileName},${ZoneName}].Length}==0) {
      /echo \ayZone ${ZoneName} Not found, Creating it now...
      /Ini ${FileName} ${ZoneName} -1 -1
        | Obviously, since we didn't have a section, we're not going to
        | have a loot section.. so we can end now
      /return
   }
   
   /declare nValues     int local  1
   /declare nArray      int local  0
   /declare KeySet      string local  ${Ini[${FileName},${ZoneName}]}
   
   :CounterLoop
   /if (${String[${Ini[${FileName},${ZoneName},${KeyRoot}${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
      /echo \arDidn't find any values in loot table from your INI, defaulting to keeping only food types.
      /return
   }
   /if (${FileName.Equal[HyperFish.ini]}&&${nValues}>0) {
      /echo \agDeclaring Loot Array...
      /declare RV_LootArray[${nValues}]  string outer
      /declare RV_LootStats[${nValues}]  string outer
      /varset op_int_GotLootArray 1
   }
   
   /for nArray 1 to ${nValues}
      /if (${FileName.Equal[HyperFish.ini]}) {
         /varset RV_LootArray[${nArray}] ${Ini[${FileName},${ZoneName},${KeyRoot}${nArray}]}
         /varset RV_LootStats[${nArray}] 0
         /echo \ag${FileName}\aw:\am${ZoneName}\aw:\at${KeyRoot}${nArray} \aw-> \ay${RV_LootArray[${nArray}]}
      }
   /next nArray
   
   /echo \ag${ZoneName} Zone Information Read Successfully from ${FileName}...
   /echo
/return

|----------------------------------------------------------------------------
|SUB: Display fishing stats.
|----------------------------------------------------------------------------
Sub DisplayStats
   /declare nArray  int local
   /echo
   /echo \atTotal number of casts \aw= \ag${int_TotalCasts}
   /echo \aoTotal skill ups this run \aw= \ag${op_int_SkillUps} \aw(Current=${Me.Skill[Fishing]}\aw)
   /echo \amItems fished so far:
   /if (${Defined[RV_LootArray]}) {
      /for nArray 1 to ${RV_LootArray.Size}
         /echo   \au${RV_LootArray[${nArray}]} \aw-  \ao${Int[${RV_LootStats[${nArray}]}]}
      /next nArray
   } else {
      /echo     \auFood Caught \aw= \ao${int_FoodCaught}
   }
   /echo
   /echo \ayBad fishing so far:
   /echo    \auBroken Poles \aw- \ao${int_BrokenPole}
   /echo   \auItems Dropped \aw- \ao${int_ItemsDropped}
   /echo       \auLost Bait \aw- \ao${int_LostBait}
   /echo  \auNothing Caught \aw- \ao${int_NothingCaught}
   /echo    \auSpilled Beer \aw- \ao${int_SpillBeer}
   /echo
/return

|----------------------------------------------------------------------------
|SUB: Main Looting routine.. based on adv_fish, heavily modified.
|----------------------------------------------------------------------------
Sub Looting
   /declare LootCheck   int inner 0
   
   /delay 3s ${Cursor.ID}
   /if (${op_int_GotLootArray}==0) {
      /if (${Cursor.Type.Equal[Food]}) {
         /autoinventory
         /varcalc int_FoodCaught ${int_FoodCaught}+1
         /delay 1s !${Cursor.ID}
      }
   } else {   
      /for LootCheck 1 to ${RV_LootArray.Size}
         /if (${Cursor.Name.Find[${RV_LootArray[${LootCheck}]}]}) {
            /echo \ayKeeping \ag${Cursor.Name}\aw... \arWOOT\aw!
            /varcalc RV_LootStats[${LootCheck}] ${RV_LootStats[${LootCheck}]}+1
            /autoinventory
            /delay 1s !${Cursor.ID}
         }
      /next LootCheck
   }
   /if (${Cursor.ID}) {
      /if (${Cursor.NoDrop}) {
         /if (${UserVar_DestroyNoDrop}==1) {
            /echo \ayDestroying ${Cursor.Name}...
            /destroy
            /delay 1s !${Cursor.ID}
         } else {
            /echo \ayKeeping ${Cursor.Name}...
            /autoinventory
            /delay 1s !${Cursor.ID}
         }
      } else {
         /echo \ayDropping ${Cursor.Name}...
         /drop
         /varcalc int_ItemsDropped ${int_ItemsDropped}+1
         /delay 1s !${Cursor.ID}
      }
   }
   /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 5s ${Me.Casting.ID}
      /delay 30s !${Me.Casting.ID}
      /autoinventory
      /varset lv_int_Return 1
   } else {
      | We don't have a companion, find a fishing pole in inventory
      /if (${Me.Inventory[mainhand].Type.Equal["Fishing Pole"]}) {
         /varset lv_int_Return 1
         /goto :BreakoutLoop
      }
      /for op_int_LoopCounter 1 to 10
         /if (${Me.Inventory[pack${op_int_LoopCounter}].Container}) {
            /for lv_int_LoopCounter 1 to ${Me.Inventory[pack${op_int_LoopCounter}].Container}
               /if (${Me.Inventory[pack${op_int_LoopCounter}].Item[${lv_int_LoopCounter}].Type.Equal["Fishing Pole"]}) {
                  /echo Found ${Me.Inventory[pack${op_int_LoopCounter}].Item[${lv_int_LoopCounter}].Name} (container slot ${lv_int_LoopCounter}) in ${Me.Inventory[pack${op_int_LoopCounter}].Name} (bag slot ${op_int_LoopCounter})
                  /ItemNotify in pack${op_int_LoopCounter} ${lv_int_LoopCounter} leftmouseup
                  /delay 1s ${Cursor.ID}
                  /ItemNotify mainhand leftmouseup
                  /delay 1s ${Cursor.ID}
                  /autoinventory
                  /delay 1s !${Cursor.ID}
                  /if (${Me.Inventory[mainhand].Type.NotEqual["Fishing Pole"]}) {
                     /echo \arSomething went wrong with equipping your Fishing Pole in your primary hand, ending macro!  BLAME HTW!
                     /endm
                  }
                  /varset lv_int_Return 1
                  /goto :BreakoutLoop
               }
            /next lv_int_LoopCounter
         } else {
            /if (${Me.Inventory[pack${op_int_LoopCounter}].Type.Equal["Fishing Pole"]}) {
               /echo Found ${Me.Inventory[pack${op_int_LoopCounter}].Name} (bag slot ${op_int_LoopCounter})
               /itemnotify pack${op_int_LoopCounter} leftmouseup
               /delay 1s ${Cursor.ID}
               /itemnotify mainhand leftmouseup
               /delay 1s ${Cursor.ID}
               /autoinventory
               /delay 1s !${Cursor.ID}
               /if (${Me.Inventory[mainhand].Type.NotEqual["Fishing Pole"]}) {
                  /echo \arSomething went wrong with equipping your Fishing Pole in your primary hand, ending macro!  BLAME HTW!
                  /endm
               }
               /varset lv_int_Return 1
               /goto :BreakoutLoop
            }
         }
      /next op_int_LoopCounter
   }
   :BreakoutLoop
   /if (${lv_int_Return}==0) {
      /echo \arBummer.. 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 \arGM entered the zone!
      /echo \arFor 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_NeedPoleA
   /call FindPole
/return

Sub Event_NeedPoleB
   /call FindPole
/return

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


Sub Event_OutOfBait
   /echo \arBummer.. 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}
   /varcalc op_int_SkillUps ${op_int_SkillUps}+1
/return


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

Sub Event_CaughtIt(CaughtItText,CaughtItem)
   /popup Caught ${CaughtItem}
   /doevents
   /call Looting
/return

Sub Event_CaughtSomething
   /popup You caught ${Cursor.Name}
   /doevents
   /call Looting
/return
|----------------------------------------------------------------------------
| End Event Sub Routines         
|----------------------------------------------------------------------------
 

Attachments

  • HyperFish.mac
    16.3 KB · Views: 18
Last edited:
Also take note where I changed the zone long name to short name. There are certain zones it will cause it to choke otherwise (such as one's with commas).

Just check your zone names, and edit & change the few zone names you have in ini from the zone long name to short name, e.g.:

/echo ${Zone.Name} Shows: The Plane of Knowledge
/echo ${Zone.ShortName} Shows: PoKnowledge

So in your HyperFish.ini where you may have:

[The Plane of Knowledge]
Loot1=bleh
Loot2=blah

Then make it:

[PoKnowledge]
Loot1=bleh
Loot2=blah

For any new defined zones it adds a section for, it will put the short name.

htw
 
Oh I added some color... if joo don't like it, :SADFACE: !!

fishing.png
 
HAH, well, if nothing else, fixing and testing a mac for things like tradeskills let's me finish some things easy...

fishing200.png
 
Hyperfish

So i created my hyperfish.ini and added what i wanted to loot etc, but yet its still dropping what i need on the ground. Help please?

Just read the other Hyperfish thread, I just want to say, after downloading the new hyperfish.mac that htw just made- Thanks alot, it works once again! Much appreciated!
 
Last edited:
Just started to use this myself. Couple things. First was if you don't have a pole but you have the fisherman's companion it will cast and get a pole for ya but it won't place it so you don't start fishing. After I manually placed the pole and started fishing I had the same thing happening as ssmokie. It was just dropping the fish on the ground.
 
Once i replaced the orginal mac with the one HTW posted and edited the Ini i had no problems keeping what i put in there
Edit: Spoke too soon, sometimes it saves what i have added in the ini, and sometimes it drops them
 
Last edited:
So today I got the fishermans companion and tried starting the macro before summoning one. It ended the macro instead of summoning a pole. Also is there a way to make it use the anizoks bait dispenser instead of stopping the Mac cause your out of bait.
 
Need Help

So after HTW worked on this macro i started using it. At first i wasn't having any problems with it dropping the stuff i added to the loot ini. Now it drops probably 90 percent of the fish i am wanting to keep. Here is my loot ini and i didnt change anything in the macro because i do not know how. Its doing it in the Argath zone.

Code:
[PoKnowledge]
-1=-1
Loot1=Fresh Fish

[Ponightmare]
-1=-1
Loot1=Nightmare Cichlid
Loot2=Fresh Fish

[Povalor]
-1=-1
Loot1=Vallorian Discus
Loot2=Fresh Fish

[argath]
-1=-1
Loot1=Raxil Fish
Loot2=Fresh Fish
Loot3=Oseka's Messenger

[Abysmal]
-1=-1
Loot1=Fresh Fish
Loot2=8 lb. Saltwater Tuna
Loot3=10 lb. Saltwater Tuna
Loot4=6 lb. Saltwater Tuna
Loot5=9 lb. Saltwater Tuna
Loot6=8 lb. Saltwater Tuna
Loot7=8 lb. Saltwater Crab
Loot8=9 lb. Saltwater Crab
Loot9=11 lb. Saltwater Tuna
Loot10=7 lb. Saltwater Tuna
Loot11=12 lb. Saltwater Tuna
Loot12=13 lb. Saltwater Crab
Loot13=10 lb. Saltwater Crab
Loot14=7 lb. Saltwater Crab
Loot15=6 lb. Saltwater Crab
Loot16=11 lb. Saltwater Crab
Loot17=10 lb. Saltwater Tuna
Loot18=15 lb. Saltwater Crab
Loot19=15 lb. Saltwater Tuna
Loot20=12 lb. Saltwater Crab
 
I had the same issue. I was trying to get it to save Saltwater Seaweed, but no matter what I added to the ini it kept dropping them. A real pain.
 
havint the same problem, droping alot of fish it was supposed to keep.
 
Here is what I came up with to just fish for Raxil. It's not pretty by any stretch of the imagination but it works to get me raxil and if I break a pole will cast a new one. If you are going for 1 specific fish you can replace the raxil in there with whatever fish you need. I'm sure someone here could make it way better but it got me all the fish I needed.

Code:
#turbo

#event BrokenPole "#*#You can't fish without a fishing pole, go buy one.#*#"
#Event BrokenPole "#*#You need to put your fishing pole#*#"
#event NoBait "#*#You can't fish without fishing bait, go buy some.#*#"
#Event Holding "#*#can't fish while holding#*#"

#include common/sell.inc
#include common/buy.inc
#include common/packs.inc
#include common/cleanpacks.inc
#include common/CommonSubs.inc


Sub Main
    :Fish
        /call CheckPole 
        /doability Fishing
        /delay 65 
        /doevents
/if (${Cursor.Name.NotEqual[Fish Scales]}) /echo Caught ${Cursor.Name}
/if (${Cursor.ID}) {
    /if (${Cursor.Name.Equal[Raxil Fish]}) /Autoinventory
    /if (${Cursor.Name.Equal[Rusty Dagger]}) /destroy
    /if (${Cursor.Name.Equal[Fresh Fish]}) /destroy
    /if (${Cursor.Name.Equal[Fish Scales]}) /destroy
    /if (${Cursor.Name.Equal[Oseka's Messenger]}) /destroy
    /if (${Cursor.Name.Equal[Tattered Cloth Sandal]}) /destroy
    /delay 1s
        } 
    /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[Brell's Fishin' Pole]}) /return

   	/if (${FindItemCount[Brell's Fishin' Pole]} >= 1) {
		/exchange "Brell's Fishin' Pole" mainhand
		/echo Equiping new Fishing Pole. Carry on.
		/return
	}  		
	/if (${FindItemCount[=Fisherman's Companion]}>0) { 
			/echo Using handy Fisherman's Companion to summon you a new pole.. wait for it...
			/nomodkey /ctrl /itemnotify ${FindItem[=Fisherman's Companion].InvSlot} Rightmouseup
			/delay ${Math.Calc[${DelayMult}*10]}s
			/delay 10s ${Cursor.ID}
			/nomodkey /itemnotify mainhand leftmouseup
			/delay 1s
			/autoinv
			/return
		}
		
   /echo  You need to buy more fishing poles.
   /endmacro
/return

Sub Event_BrokenPole
   /if (${FindItemCount[=Fishing Pole]}>0) {
		/call OpenPacks
		/delay ${Math.Calc[${DelayMult}*1]}s
		/nomodkey /ctrl /itemnotify ${FindItem[=Fishing Pole].InvSlot} leftmouseup
		/delay 2s ${Cursor.ID}
		/nomodkey /itemnotify mainhand leftmouseup
		/delay 1s
		/autoinv
		/delay ${Math.Calc[${DelayMult}*2]}s
		/call ClearCursor
		/call ClosePacks
		/return
	} else {
		/if (${FindItemCount[=Fisherman's Companion]}>0) {    
			/nomodkey /ctrl /itemnotify ${FindItem[=Fisherman's Companion].InvSlot} Rightmouseup
			/delay ${Math.Calc[${DelayMult}*10]}s
			/delay 2s ${Cursor.ID}
			/nomodkey /itemnotify mainhand leftmouseup
			/delay 1s
			/autoinv
			/call ClearCursor
			/return

Sub Event_Holding
	/call ClearCursor
	/return

Sub Event_NoBait
   /endmacro
/return
 
Here is what I came up with to just fish for Raxil. It's not pretty by any stretch of the imagination but it works to get me raxil and if I break a pole will cast a new one. If you are going for 1 specific fish you can replace the raxil in there with whatever fish you need. I'm sure someone here could make it way better but it got me all the fish I needed.

Code:
#turbo

#event BrokenPole "#*#You can't fish without a fishing pole, go buy one.#*#"
#Event BrokenPole "#*#You need to put your fishing pole#*#"
#event NoBait "#*#You can't fish without fishing bait, go buy some.#*#"
#Event Holding "#*#can't fish while holding#*#"

#include common/sell.inc
#include common/buy.inc
#include common/packs.inc
#include common/cleanpacks.inc
#include common/CommonSubs.inc


Sub Main
    :Fish
        /call CheckPole 
        /doability Fishing
        /delay 65 
        /doevents
/if (${Cursor.Name.NotEqual[Fish Scales]}) /echo Caught ${Cursor.Name}
/if (${Cursor.ID}) {
    /if (${Cursor.Name.Equal[Raxil Fish]}) /Autoinventory
    /if (${Cursor.Name.Equal[Rusty Dagger]}) /destroy
    /if (${Cursor.Name.Equal[Fresh Fish]}) /destroy
    /if (${Cursor.Name.Equal[Fish Scales]}) /destroy
    /if (${Cursor.Name.Equal[Oseka's Messenger]}) /destroy
    /if (${Cursor.Name.Equal[Tattered Cloth Sandal]}) /destroy
    /delay 1s
        } 
    /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[Brell's Fishin' Pole]}) /return

   	/if (${FindItemCount[Brell's Fishin' Pole]} >= 1) {
		/exchange "Brell's Fishin' Pole" mainhand
		/echo Equiping new Fishing Pole. Carry on.
		/return
	}  		
	/if (${FindItemCount[=Fisherman's Companion]}>0) { 
			/echo Using handy Fisherman's Companion to summon you a new pole.. wait for it...
			/nomodkey /ctrl /itemnotify ${FindItem[=Fisherman's Companion].InvSlot} Rightmouseup
			/delay ${Math.Calc[${DelayMult}*10]}s
			/delay 10s ${Cursor.ID}
			/nomodkey /itemnotify mainhand leftmouseup
			/delay 1s
			/autoinv
			/return
		}
		
   /echo  You need to buy more fishing poles.
   /endmacro
/return

Sub Event_BrokenPole
   /if (${FindItemCount[=Fishing Pole]}>0) {
		/call OpenPacks
		/delay ${Math.Calc[${DelayMult}*1]}s
		/nomodkey /ctrl /itemnotify ${FindItem[=Fishing Pole].InvSlot} leftmouseup
		/delay 2s ${Cursor.ID}
		/nomodkey /itemnotify mainhand leftmouseup
		/delay 1s
		/autoinv
		/delay ${Math.Calc[${DelayMult}*2]}s
		/call ClearCursor
		/call ClosePacks
		/return
	} else {
		/if (${FindItemCount[=Fisherman's Companion]}>0) {    
			/nomodkey /ctrl /itemnotify ${FindItem[=Fisherman's Companion].InvSlot} Rightmouseup
			/delay ${Math.Calc[${DelayMult}*10]}s
			/delay 2s ${Cursor.ID}
			/nomodkey /itemnotify mainhand leftmouseup
			/delay 1s
			/autoinv
			/call ClearCursor
			/return

Sub Event_Holding
	/call ClearCursor
	/return

Sub Event_NoBait
   /endmacro
/return
How do I add this to my macro folder as a macro so i can put it to use.
 
ok what i did to solve this problem is use mq2autodestroy to handle the looting. it runs faster than hyperfish i think so when it tries to drop the fish its already in the bag xD
Just hold the fish you want to keep on cursos and type /autokeep all, the ones you dont want /autodestroy all. Then /autodestroy on and after that /autokeep on.
 
I've got it on my list to log in and do some fishin', but it'll probably be this weekend before I can work on it.

htw
 
adding Hargar Brand Fish Pail

Wondering if theres a way to add this item into the hyperfish macro so that it is used at the start then every 15mins it recasts, even after you've run out of bait the script waits until the 15 mins is up cast new bait and keeps fishing.

Also the script seems to try to fish instantly meaning if you caught something to get the message that you cannot fish while holding something. Is there a way to delay the action long enough for the autoinventory or drop to work before it casts the line again?
 
Last edited: