Hunter Macro (v1.3 UPDATED 06-07-2004 12:51pm PST)

Post your completed (working) macros here. Only for macros using MQ2Data syntax!

Moderator: MacroQuest Developers

irascible
orc pawn
orc pawn
Posts: 12
Joined: Sun Mar 20, 2005 1:32 am

Post by irascible » Mon May 23, 2005 12:45 pm

robdawg wrote:finally installing EQ again and I will revamp this hunter macro to be more efficient and feature rich.

so give me a few and I should take care of a lot of problems.
thanks, we look forward to it =)

bertbert
orc pawn
orc pawn
Posts: 19
Joined: Thu May 26, 2005 5:56 pm

Post by bertbert » Thu May 26, 2005 6:15 pm

I've made a few mods to the base code that people might find useful.

Firstly, to restrict the level of mobs you hunt. This can be very useful for XP hunting.

Add this to the Declare section at the top of the macro.

Code: Select all

   |------------------------------------------------------------
   |What level tolerance will I allow for targeting mobs?
   |------------------------------------------------------------
   /declare RV_MobLower         int outer  -4
   /declare RV_MobUpper         int outer  1
The above example will hunt mobs from 4 levels below you to 1 level above (Light Blue to Yellow).

Next change the GetTarget sub to limit the search (I've highlighted the changes).

Code: Select all

Sub GetTarget 

   /declare RV_CurrentRadius    int local 
   /declare RV_TargetSub        int local 
[color=cyan]   /declare RV_MinLevel         int local
   /declare RV_MaxLevel         int local
   /varcalc RV_MinLevel         ${Me.Level}+${RV_MobLower}
   /varcalc RV_MaxLevel         ${Me.Level}+${RV_MobUpper}[/color]

   :Acquire 
   /for RV_CurrentRadius 100 to ${RV_MaxRadius} step 100    
      /for RV_TargetSub 1 to ${RV_MobArray.Size} 
         /target radius ${RV_CurrentRadius} nopcnear notid ${RV_InvalidTargetID} npc "${RV_MobArray[${RV_TargetSub}]}" [color=cyan]range ${RV_MinLevel} ${RV_MaxLevel}[/color]
         /varset RV_MyTargetID ${Target.ID} 
         /varset RV_MyTargetDead 0 
 
I'm also working on an Anchoring routine. I have it more or less working, just need to tidy it up a bit before posting.

bertbert
orc pawn
orc pawn
Posts: 19
Joined: Thu May 26, 2005 5:56 pm

Post by bertbert » Sat May 28, 2005 10:40 am

Slight update to the above. Forgot to allow for the relative values being less than 1.

Code: Select all

Sub GetTarget 

   /declare RV_CurrentRadius   int local 
   /declare RV_TargetSub   int local 
   /declare RV_MinLevel    int local
   /declare RV_MaxLevel    int local
   /varcalc RV_MinLevel    ${Me.Level}+${RV_MobLower}
   /varcalc RV_MaxLevel    ${Me.Level}+${RV_MobUpper}

[color=cyan]   /if (${RV_MinLevel}<1) /varset RV_MinLevel 1
   /if (${RV_MaxLevel}<1) /varset RV_MaxLevel 1[/color]

   :Acquire 
   /for RV_CurrentRadius 100 to ${RV_MaxRadius} step 100    
      /for RV_TargetSub 1 to ${RV_MobArray.Size} 

Katzmeow
decaying skeleton
decaying skeleton
Posts: 9
Joined: Wed Dec 29, 2004 12:22 pm

Hunter is broken

Post by Katzmeow » Tue Jul 05, 2005 3:27 pm

Hunter.mac is broken atm due to the {string TLO problem. Just a heads up that you may not want to try to use this until it gets fixed.


I tried removing the {string as was suggested in this post
Basically they removed the ability to do ${String[something]}

I don't know what part of genbot you posted, but you need to go into all the genbot .inc's and .mac's and change anything that says ${String[${var}]} to just ${var}. It's really simple, but if it's too much for you wait for the code to be updated.
but that doesn't fix it.

Then I tried

loadingpleasewait wrote
why not change it to use the string .Name?

example..
Change

Code: Select all

/if (${String[${Me.Gem[6]}].NotEqual["${Yaulp}"]}) {
to

Code: Select all

/if (${Me.Gem[6].Name.NotEqual["${Yaulp}"]}) {
But I can't quite seem to get the syntax right or something. I'm just beginning to try to write my own macros so I'm not sure what exactly to do to fix it yet but I'll keep trying and post here if I have any success.

skyler
a snow griffon
a snow griffon
Posts: 311
Joined: Wed May 11, 2005 9:22 am

Post by skyler » Tue Jul 05, 2005 3:53 pm

Without looking up and down the whole macro let me ask you, why do you need to confirm where the yalp gem is for your condition? You can always use /call cast Yalp gem#

Also if you could include the error message you are getting, that would be really helpful

Katzmeow
decaying skeleton
decaying skeleton
Posts: 9
Joined: Wed Dec 29, 2004 12:22 pm

Post by Katzmeow » Tue Jul 05, 2005 6:58 pm

No that was simply an illustration of how to fix the {string TLO problem from elsewhere in the forums not an excerpt from this macro. Here is this macro with the offending part hilighted:

Code: Select all

| Hunter Macro
| Hunter.mac
| Author      : robdawg
| Version     : v1.2 2004-05-13 10:06pm PST
| Useage      : /macro Hunter
| Description : This macro will run your character around killing any mobs in your
|      RV_MobArray.  Then it will attempt to loot all items in your
|      RV_LootArray.  This is definitely a work in progress and I am sure
|      someone can think of plenty of upgrades for this.
|------------------------------------------------------------------------------------

#turbo 10

Sub Main

   |------------------------------------------------------------
   |How many times should aquire target fail before delaying?
   |------------------------------------------------------------
   /declare RV_FailMax          int outer  3
   |------------------------------------------------------------
   |How far would you like to target a mob?
   |------------------------------------------------------------
   /declare RV_MaxRadius        int outer  3000
   |------------------------------------------------------------
   |How far is the combat range?
   |------------------------------------------------------------
   /declare RV_Range            int outer 10
   |------------------------------------------------------------
   |What is the minimum Z Value of mobs I should target?
   |------------------------------------------------------------
   /declare RV_MinZRange        int outer  -1000
   |------------------------------------------------------------
   |What is the maximum Z Value of mobs I should target?
   |------------------------------------------------------------
   /declare RV_MaxZRange        int outer  1000
   |------------------------------------------------------------
   |Should I loot all items?
   |------------------------------------------------------------
   /declare RV_LootAllItems     int outer  0
   |------------------------------------------------------------
   |Should I display stats?
   |------------------------------------------------------------
   /declare RV_DisplayStats     int outer  1

   |------------------------------------------------------------
   |Loot Array Information.
   |------------------------------------------------------------
   /call ReadINI HunterMob.ini "${Zone.Name}" Mob
   /if (!${Defined[RV_MobArray]}) {
      /echo Mob Array Creation Error, ending macro...
      /endmacro
   }

   |------------------------------------------------------------
   |Mob Array Information.
   |------------------------------------------------------------
   /call ReadINI HunterLoot.ini "${Zone.Name}" Loot
   /if (!${Defined[RV_LootArray]}) {
      /echo No Loot Array Created...
   }

   |------------------------------------------------------------
   |Variables that you don't need to worry about.
   |------------------------------------------------------------
   /declare RV_FailCounter      int outer  0
   /declare RV_MyTargetID       int outer  0
   /declare RV_MyTargetName     string outer
   /declare RV_MyTargetDead     int outer  0
   /declare RV_InvalidTargetID  int outer  0
   /declare RV_HasTarget        int outer  0
   /declare RV_RandomWait       int outer  0
   /declare RV_LootSlot         int outer  0
   /declare RV_CheckLook        int outer  0
   /declare RV_Fighting         int outer  0
   /declare RV_TargetDead       int outer  0
   /declare RV_MyXLOC           int outer  0
   /declare RV_MyYLOC           int outer  0
   
   /declare RV_FastRange        int outer
   /declare RV_RangeMax         int outer
   /declare RV_RangeMin         int outer
   /varcalc RV_FastRange ${RV_Range}+3
   /varcalc RV_RangeMax ${RV_Range}+1
   /varcalc RV_RangeMin ${RV_Range}-1

   :Start
   /doevents
   /call GMCheck
   /call GetTarget

   :KillAdds
   /if (${RV_HasTarget}) /call MoveToMob
   /if (${RV_HasTarget}) /call CombatSub
   /if (${RV_HasTarget}) /call MoveToMob
   /if (${RV_HasTarget} && (${Defined[RV_LootArray]} || ${RV_LootAllItems})) /call LootMob
   /if (${RV_DisplayStats}) /call DisplayStats
   /call ResetSub

   /varset RV_RandomWait ${Math.Rand[5]}
   /varcalc RV_RandomWait ${RV_RandomWait}+1
   /echo Paranoia - Waiting ${RV_RandomWait} seconds before resuming
   /delay ${RV_RandomWait}s
   
   /if (${Target.ID}) {
      /echo Looks like something is attacking us, killing it...
      /delay 1s
      /varset RV_HasTarget 1
      /varset RV_Fighting 1
      /goto :KillAdds
   }
   
   /goto :Start
   
/return

|--------------------------------------------------------------------------------
|SUB: Aquire Target
|--------------------------------------------------------------------------------
Sub GetTarget

   /declare RV_CurrentRadius   int local
   /declare RV_TargetSub   int local
   :Acquire
   /for RV_CurrentRadius 100 to ${RV_MaxRadius} step 100
      /for RV_TargetSub 1 to ${RV_MobArray.Size}
         /squelch /target radius ${RV_CurrentRadius} nopcnear notid ${RV_InvalidTargetID} npc "${RV_MobArray[${RV_TargetSub}]}"
         /varset RV_MyTargetID ${Target.ID}
         /varset RV_MyTargetDead 0
         /if (${Target.ID}) {
            /if (${Int[${Target.PctHPs}]}<100) {
               /echo Mob NOT a Full Health, picking another...
               /varset RV_InvalidTargetID ${Target.ID}
               /call ResetSub
               /goto :Acquire
            }
            /if (${Int[${Target.Z}]}<${RV_MinZRange}) {
               /echo Mob is BELOW Min Z Range, picking another...
               /varset RV_InvalidTargetID ${Target.ID}
               /call ResetSub
               /goto :Acquire
            }
            /if (${Int[${Target.Z}]}>${RV_MaxZRange}) {
               /echo Mob is ABOVE Max Z Range, picking another...
               /varset RV_InvalidTargetID ${Target.ID}
               /call ResetSub
               /goto :Acquire
            }
            /varset RV_HasTarget 1
            /varset RV_MyTargetName ${Target.CleanName}
            /echo Acquired ${Target.CleanName} at range ${Int[${Target.Distance}]}
            /return
         }
      /next RV_TargetSub
      /delay 2
   /next RV_CurrentRadius

   /if (!${Target.ID}) {
      /delay 2s
      /varcalc RV_FailCounter ${RV_FailCounter}+1
      /echo Failed to Acquire Target in Range ${RV_MaxRadius} ${RV_FailCounter} Time(s)
      /if (${RV_FailCounter}>=${RV_FailMax}) {
         /echo Waiting for Respawns, Resetting Failure Counter...
         /delay 60s
         /varset RV_FailCounter 0
      }
      /goto :Acquire
   }
/return

|--------------------------------------------------------------------------------
|SUB: Moving
|--------------------------------------------------------------------------------
Sub MoveToMob

   /varset RV_MyXLOC ${Int[${Me.X}]}
   /varset RV_MyYLOC ${Int[${Me.Y}]}
   /declare RV_DistanceTimer timer 15
   
   /doevents
   
   :MovementLoop

   /if ((!${RV_Fighting})&&(!${RV_TargetDead})&&(${Target.PctHPs}<100)) {
      /echo Mob not at full health, picking another...
      /varset RV_InvalidTargetID ${Target.ID}
      /varset RV_HasTarget 0
      /call ResetSub
      /return
   }

   /if (${Target.ID}) {
      /face fast
   }
   /if (${Int[${Target.Distance}]}>${RV_FastRange}) {
      /keypress forward hold
   }
   /if (${Int[${Target.Distance}]}<${RV_FastRange}&&${Int[${Target.Distance}]}>${RV_RangeMax}) {
      /keypress forward
   }
   /if (${Int[${Target.Distance}]}<${RV_RangeMin}) {
      /keypress back
   }
   /if (!${RV_DistanceTimer}) {
      /if ((${RV_MyXLOC}==${Int[${Me.X}]})&&(${RV_MyYLOC}==${Int[${Me.Y}]})) /call HitObstacle
      /varset RV_MyXLOC ${Int[${Me.X}]}
      /varset RV_MyYLOC ${Int[${Me.Y}]}
      /varset RV_DistanceTimer 15
      /goto :Movementloop
   }
   /if (${Int[${Target.Distance}]}>${RV_FastRange}) /goto :MovementLoop

/return

|--------------------------------------------------------------------------------
|SUB: Combat
|--------------------------------------------------------------------------------
Sub CombatSub

   /echo Attacking Mob NOW!
   /varset RV_Fighting 1
   /varset RV_TargetDead 0
   
   :CombatLoop
   /doevents
   /attack on
   
   /call MoveToMob
   /call SpecialIT

   /if (!${Target.ID}) {
      /attack off
      /keypress forward
      /keypress back
     
      /varset RV_TargetDead 1
      /varset RV_Fighting 0
      /delay 1s
      /target radius 30 corpse
      /delay 1s
      /if (!${Target.ID}) {
         /call ResetSub
         /return
      }
      /face fast
   }
   /if (!${RV_TargetDead}) {
      /goto :CombatLoop
   }
   
/return

|--------------------------------------------------------------------------------
|SUB: Special Combat
|--------------------------------------------------------------------------------
Sub SpecialIt

   /declare TempID    int inner  0

   /if ((${Target.Distance}<11)&&(${Me.AbilityReady["Bash"]})) /doability "Bash"
   
   /if ((${Int[${Me.PctHPs}]}<50)&&(${Me.Gem["Light of Nife"]})&&(${Me.SpellReady["Light of Nife"]})) {
      /varset TempID ${Target.ID}
      /keypress forward
      /keypress back
      /keypress F1
      /echo Casting Heal Spell because of low health...
      /cast "Light of Nife"
      /delay 3s
      /target id ${TempID}
   }
   
/return

|--------------------------------------------------------------------------------
|SUB: Looting
|--------------------------------------------------------------------------------
Sub LootMob

   /declare LootSlot    int inner  0
   /declare LootCheck   int inner  0
   /declare LootTotal   int inner  0
   
   /face fast
   
   /keypress forward
   /keypress back
   
   /fastdrop on
   /lootn never
   /delay 2s
   /loot
   /delay 2s
   /if (!${Corpse.Items}) {
      /echo NO LOOT! Cheap Bastard!
      /return
   }

   /varset LootTotal ${Corpse.Items}
   /for LootSlot 1 to ${LootTotal}
      /itemnotify loot${LootSlot} leftmouseup
      /delay 1s
      /if (${RV_LootAllItems}) {
         /echo Keeping a ${Cursor.Name}... WOOT!
         /autoinventory
         /delay 1s
      } 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
               /delay 1s
            }
         /next LootCheck
      }
      /if (${Cursor.ID}) {
         /echo Destroying a ${Cursor.Name}...
         /destroy
         /delay 1s
      }
   /next LootSlot
   
   /notify LootWnd DoneButton leftmouseup
   /delay 2
   
/return

|--------------------------------------------------------------------------------
|SUB: Reset
|--------------------------------------------------------------------------------
Sub ResetSub

   /keypress esc
   /keypress esc
   /keypress esc
   /keypress esc
   
   /varset RV_HasTarget 0
   /varset RV_TargetDead 0
   /varset RV_Fighting 0
   
/return

|--------------------------------------------------------------------------------
|SUB: Obstacle Avoidance
|--------------------------------------------------------------------------------
Sub HitObstacle

   /echo Obstacle hit, moving around it...
   /keypress forward
   /keypress back hold
   /delay 3
   /keypress back
   /if (${Math.Rand[100]}+1>50) {
     /keypress strafe_right hold
   } else {
     /keypress strafe_left hold
   }
   /delay 5
   /keypress strafe_right
   /keypress strafe_left
   /keypress forward hold
   
/return

|--------------------------------------------------------------------------------
|SUB: GM Check
|--------------------------------------------------------------------------------
Sub GMCheck

   /if (${Spawn[gm].ID}) {
      /beep
      /beep
      /beep
     
      /echo GM has entered the zone!
      /echo FUCK HIM but ending the macro...

      /keypress forward
      /keypress back

      /quit
      /endmacro
   }
   
/return

|--------------------------------------------------------------------------------
|SUB: Reading from an 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 [b][color=cyan](${String[${Ini[${FileName},${SectionName},${ArrayType}${nValues}]}].Equal[null]}) {[/b][/color]
      /varcalc nValues ${nValues}-1
      /goto :MakeArray
   }
   /varcalc nValues ${nValues}+1
   /goto :CounterLoop 

   :MakeArray
   /if (!${nValues}) /return
   /if (${FileName.Equal["HunterMob.ini"]}&&${nValues}>0) {
      /echo Declaring Mob Array...
      /declare RV_MobArray[${nValues}]   string outer
      /declare RV_MobStats[${nValues}]   string outer
   }
   /if (${FileName.Equal["HunterLoot.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["HunterMob.ini"]}) {
         /varset RV_MobArray[${nArray}] ${Ini[${FileName},${SectionName},${ArrayType}${nArray}]}
         /varset RV_MobStats[${nArray}] 0
      }
      /if (${FileName.Equal["HunterLoot.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: Display Stats
|--------------------------------------------------------------------------------
Sub DisplayStats

   /declare nArray  int local
   
   /if (${Defined[RV_LootArray]}) {
      /for nArray 1 to ${RV_LootArray.Size}
         /echo ${Int[${RV_LootStats[${nArray}]}]} ${RV_LootArray[${nArray}]}'s
      /next nArray
   }
   
/return
Huntermob.ini

Code: Select all

[The Plane of Justice]
Mob1=rat
Hunterloot.ini

Code: Select all

[The Plane of Justice]
Loot1=bone chips
When run as is I get the "Due to the complete misuse of the String Top Level Object it has been removed" error non-stop. I knew that would happen which is why I tried removing it as per my quote of the post on that subject.

When I take out the (${String I get this error:

Code: Select all

 Attempting to read zone information for [The Plane of Justice] from hunter.ini
[color=red][b]Unparsable in calculation 'r'[/color][/b]
hunter.mac@406
ReadINI(FileName,SectionName,ArrayType)):/if (${Ini[${FileName},${SectionName},${ArrayType}${nValues}]}].Equal[null]}) {
Hunter.mac@48(Main)/call ReadINI HunterMob.ini "${Zone.Name}" Mob
[b][color=red]Failed to parse /if condition '(rat)].equal[Null]})' non-numeric encountered[/b][/color]
So I tried what was said by loadingpleasewait:
change it to use the string .Name

Code: Select all

   /if [b](${Ini[${FileName},${SectionName},${ArrayType}${nValues}]}]Name.Equal[null]}) {[/b]
Which gave me this error:

Code: Select all

Attempting to read zone information for [The Plane of Justice] from hunter.ini
[color=red][b]Failed to parse /if command. Could not find command to execute.[/b][/color]
hunter.mac@406
ReadINI(FileName,SectionName,ArrayType)):/if (${Ini[${FileName},${SectionName},${ArrayType}${nValues}]}]Name.Equal[null]}) {
Hunter.mac@48(Main)/call ReadINI HunterMob.ini "${Zone.Name}" Mob
[b][color=yellow]Usage: /if(<conditions>)<command>[/color][/b]

skyler
a snow griffon
a snow griffon
Posts: 311
Joined: Wed May 11, 2005 9:22 am

Post by skyler » Tue Jul 05, 2005 8:49 pm

Based off of the raiddruid macro,

Code: Select all

/varset SitDelay ${Ini[${MyIni},Settings,SitDelay,NOTFOUND]} 
/if (${SitDelay.Equal["NOTFOUND"]}) 
Looks like it would be easier to create a temp variable as your string and then compare your .equal

A_Druid_00
Macro Maker Extraordinaire
Posts: 2378
Joined: Tue Jul 13, 2004 12:45 pm
Location: Rolling on the Lawn Farting

Post by A_Druid_00 » Tue Jul 05, 2005 10:41 pm

Yeah, if you try to load an int from the ini and it's NOTFOUND, it goes apeshit. I stole the ini loading from advbot after making a few failed attempts at my own routine.
[quote]<DigitalMocking> man, A_Druid_00 really does love those long ass if statements
<dont_know_at_all> i don't use his macro because i'm frightened of it[/quote]
[quote][12:45] <dont_know_at_all> never use a macro when you can really fuck up things with a plugin[/quote]

ThatGuy
decaying skeleton
decaying skeleton
Posts: 1
Joined: Wed Jul 06, 2005 11:26 am

Fix

Post by ThatGuy » Wed Jul 06, 2005 11:32 am

I'm pretty newb when it comes to macroing, but as a fix to this hunter mac.

Replace

Code: Select all

/if (${String[${Ini[${FileName},${SectionName},${ArrayType}${nValues}]}].Equal[null]}) {
With

Code: Select all

/if (!${KeySet.Arg[${nValues},|].Length}) {
I took this fix from Chill's Monk-Specific Hunter Macro, Works great now, Hope this helps.

edit: now that its working, i can't seem to target respawns. I'm doing static spawns in Katta Castellum. All the mobs are in my huntermob.ini but when the second batch spawns, I fail to target anything. Any Insight?

mikejones
decaying skeleton
decaying skeleton
Posts: 7
Joined: Mon Jul 18, 2005 12:33 pm

Post by mikejones » Mon Jul 18, 2005 1:06 pm

Can someone show me how to add a root spell that casts at about 20% to this Macro to prevent the mob from running and picking up adds?

gindo
orc pawn
orc pawn
Posts: 17
Joined: Sat Apr 16, 2005 4:24 pm

Hunter.mac not targetting mobs.

Post by gindo » Thu Aug 04, 2005 6:04 pm

has anyone got a 'working' version of hunter.mac the version here (fixed for string tlo) will do one of two things when started...

1) it will either target a mob FAR FAR away even though there is a mob like standing right beside it or...

2) it will fail to aquire target even though one is RIGHT next to it...very frustrating.

If i manually target something it goes about it's business as usual.

thanks for help in advance if any is given.

gindo

barbiegirl
decaying skeleton
decaying skeleton
Posts: 2
Joined: Sun Nov 06, 2005 12:48 pm

Snare

Post by barbiegirl » Sun Nov 06, 2005 1:38 pm

I would like to add a snare spell to this macro. So far I have added a lifetap to the special combat section:

|--------------------------------------------------------------------------------
|SUB: Special Combat
|--------------------------------------------------------------------------------
Sub SpecialIt

/declare TempID int inner 0


/if ((${Int[${Me.PctHPs}]}<70)&&(${Me.Gem["Ancient: Touch of Orshilak"]})&&(${Me.SpellReady["Ancient: Touch of Orshilak"]})) {
/varset TempID ${Target.ID}
/echo Casting Heal Spell because of low health...
/cast "Ancient: Touch of Orshilak"
/keypress forward
/keypress back
/delay 3s
/target id ${TempID}
}

/return



I've tried a few different things to add snare, macro keeps ending. Any help on the code to cast Desecrating Darkness when the mobs hp's at around 50% would be greatly appeciated.

P.S. I looked through the 15 pages of this topic and didn't see anything that could help me answer my question.


Barbie~

User avatar
Slice
a hill giant
a hill giant
Posts: 189
Joined: Wed Oct 30, 2002 2:52 pm

Re: Snare

Post by Slice » Mon Nov 07, 2005 5:42 pm

Code: Select all

|-------------------------------------------------------------------------------- 
|SUB: Special Combat 
|-------------------------------------------------------------------------------- 
Sub SpecialIt 

   /declare TempID    int inner  0 

    
   /if ((${Int[${Me.PctHPs}]}<70)&&(${Me.Gem["Ancient: Touch of Orshilak"]})&&(${Me.SpellReady["Ancient: Touch of Orshilak"]})) { 
      /varset TempID ${Target.ID} 
      /echo Casting Heal Spell because of low health... 
      /cast "Ancient: Touch of Orshilak" 
      /keypress forward 
      /keypress back
      /delay 3s 
      /target id ${TempID} 
   } 

/if ((${Target.PctHPs}<50) && ${MobSnared}==0) {
	/call cast "Desecrating Darkness"
	/varset MobSnared 1
	}    
/return 
Add to CombatSub

Code: Select all

|-------------------------------------------------------------------------------- 
|SUB: Combat 
|-------------------------------------------------------------------------------- 
Sub CombatSub 

   /echo Attacking Mob NOW! 
   /varset RV_Fighting 1 
   /varset RV_TargetDead 0
[color=red]   /declare MobSnared int local 0[/color]
Untested but I think that should work.
Slice

barbiegirl
decaying skeleton
decaying skeleton
Posts: 2
Joined: Sun Nov 06, 2005 12:48 pm

subroutine casts wasn't found

Post by barbiegirl » Wed Nov 09, 2005 2:44 am

Hey Slice, thanks for the help. I am still getting an error however:


Subroutines cast wasn't found
hunter.mac@270 (specialit): /call cast "Desecrating Darkness"
hunter.mac@228 (combatsub): /call Specialit
hunter.mac@91 (Main): /if($(RV_HasTarget))/call CombatSub
The Current Macro has ended


I made both changes, even tried it without the 2nd change to macro and still got the error. Also tried it in two different zones and same thing happened. It would be awesome if you could help me out on this problem


Thanks,
Barbie

Oatm3al
orc pawn
orc pawn
Posts: 23
Joined: Fri Dec 02, 2005 3:48 pm

Post by Oatm3al » Mon Dec 19, 2005 6:16 pm

Any help on adding autocast support for right clickable items and a targetting system that would allow for autoswitching of targets (to something else thats beating on ya) if the current target is not attacked for over 30 seconds, would be greatly appreciated.