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

Preocts
a snow griffon
a snow griffon
Posts: 312
Joined: Thu Jan 29, 2004 1:02 pm

Post by Preocts » Tue May 18, 2004 3:55 pm

Just glancing at that error and response my suggestion would be to simply add a quick check to make sure you have a target before /face command is sent.

Code: Select all

/if (${Target.ID}) { 
  /face fast
} else {
  /echo Do something else because we don't have a target anymore
}

Space-Boy
a hill giant
a hill giant
Posts: 242
Joined: Wed Dec 04, 2002 12:53 pm
Contact:

Post by Space-Boy » Tue May 18, 2004 7:07 pm

Just a head up to you people running this in EK..... please, for gods sakes, kill chasm crawlers too!! they are place holders for the spiders, and it gets old coming in and finding one spider up in an empty zone ~

also, is there any way to add in a do not loot if the corpse is named chasm line? make the killing process even faster if ya just left the normally empty corpse alone and moved on to the next target
You have gotten better at Carpal Tunnel! (247)

robdawg
a ghoul
a ghoul
Posts: 114
Joined: Tue Mar 23, 2004 11:54 am
Contact:

...

Post by robdawg » Thu May 20, 2004 12:08 pm

if you kill everything in my list you will never run out of crag spiders... :)
ROBDAWG

[url=http://www.seathound.com]Seat Hound[/url]
[url=http://www.sportsrumormill.com]Sports Rumor Mill[/url]
[url=http://www.packerforum.com]Packer Forum[/url]

NeedMacroHelp
orc pawn
orc pawn
Posts: 14
Joined: Thu May 20, 2004 7:08 pm

Post by NeedMacroHelp » Thu May 20, 2004 7:34 pm

Can you post the completely updated code?

Preocts
a snow griffon
a snow griffon
Posts: 312
Joined: Thu Jan 29, 2004 1:02 pm

Post by Preocts » Thu May 20, 2004 8:18 pm

NeedMacroHelp wrote:Can you post the completely updated code?
This is only your third post and you are already starting to piss me off. That has got to be a record... no wait, iluvseq holds that record... you're not that good afterall. :cry:

Page one of this forum HAS the completely updated version. Anything that isn't there has not been tested and approved by the macro's creator. Now please just use this script in some overly populated zone and get your ass banned from the game so I can laugh at you some more.

Chill
Contributing Member
Contributing Member
Posts: 435
Joined: Fri May 07, 2004 5:06 pm
Location: Erie, PA

Update + Mods

Post by Chill » Thu May 20, 2004 9:46 pm

Monk-version moved to its own post.
Last edited by Chill on Sun May 23, 2004 9:49 am, edited 1 time in total.

Mimatas
a hill giant
a hill giant
Posts: 262
Joined: Wed Mar 10, 2004 4:22 pm

Post by Mimatas » Sat May 22, 2004 6:08 pm

I've been having some difficulty with this one in Marus Seru... for starters, a lot of mobs are under the world. You can still target and cast on them.. and even attack them if you're close enough, and they'll pop back up.. but it looks kinda fishy cuz you shouldn't be able to target them without MQ.

The other problem is that the zone has very steep slopes... so there are times where I can be within the max range (which I've set to 5 now) and still be too far away. I tried adding a height variable and making sure the height difference was < 5, but all that did was make me tap forward when I'd run to a mob that was > 5 Z units away, instead of holding it. anyone have any ideas?

robdawg
a ghoul
a ghoul
Posts: 114
Joined: Tue Mar 23, 2004 11:54 am
Contact:

...

Post by robdawg » Sat May 22, 2004 8:28 pm

Minor Updates

- Modified the Movement Code by combining 2 Sub's and made the strafe code more random. Basically Random 100 instead of Random 2.
- Adding in some minor stats messages. So anything in your lootarray will be tracked during each session.
- Instead of 3 range values to set, there is now only 1, RV_Range. Set that 1 variable and the other range values will set themselves.
- Added a few more examples of zones that I use for farming and they work great.

I think I fixed a few other things, but can't remember. I know there are other things that people have been requesting, but I am busy with a few other macro's right now that I think a lot people will like.

But if you have any particular requests or questions that are not to much of a hassle then send me a PM.
ROBDAWG

[url=http://www.seathound.com]Seat Hound[/url]
[url=http://www.sportsrumormill.com]Sports Rumor Mill[/url]
[url=http://www.packerforum.com]Packer Forum[/url]

fryfrog
a hill giant
a hill giant
Posts: 271
Joined: Fri Jun 20, 2003 5:37 am

Post by fryfrog » Mon May 24, 2004 2:25 am

Code: Select all

| Hunter Macro 
| Hunter.mac 
| Author      : robdawg 
| Version     : v1.3 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 fast movement range? 
   |------------------------------------------------------------ 
   /declare RV_FastRange        int outer  40 
   |------------------------------------------------------------ 
   |How far is the maximum combat range? 
   |------------------------------------------------------------ 
   /declare RV_RangeMax         int outer  80 
   /declare RV_Range			int outer  60
   /declare RV_Fuzzy			int outer  20
   |------------------------------------------------------------ 
   |How far is the minimum combat range? 
   |------------------------------------------------------------ 
   /declare RV_RangeMin         int outer  60 
   |------------------------------------------------------------ 
   |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 
   /declare RV_FindAllCorpses	int	outer  1
   |------------------------------------------------------------ 
   |Loot Array Information. 
   |------------------------------------------------------------ 
   /call ReadINI HunterMob.ini "${Zone.Name}" 
   /if (!${Defined[RV_MobArray]}) { 
      /echo Mob Array Creation Error, ending macro... 
      /endmacro 
   } 

   |------------------------------------------------------------ 
   |Mob Array Information. 
   |------------------------------------------------------------ 
   /call ReadINI HunterLoot.ini "${Zone.Name}" 
   /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_ObstacleCount    int outer  0 

   /fastdrop on 
   /lootn never 
    
   :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 
   /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 
      /goto :KillAdds 
   } 
    
   /goto :Start 
    
/return 

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

   /declare RV_CurrentRadius   int local 
   /declare RV_TargetSub   int local 
   :Acquire 
   /for RV_CurrentRadius 200 to ${RV_MaxRadius} step 200 
      /for RV_TargetSub 1 to ${RV_MobArray.Size} 
         /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.Name} 
            /echo Acquired ${Target.Name} 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}>=${FailMax}) { 
         /echo Waiting for Respawns, Resetting Failure Counter... 
         /if (${RV_FindAllCorpses}==1) {
            /echo Trying to find unlooted corpses...
            /for RV_CurrentRadius 200 to ${RV_MaxRadius} step 200 
               /for RV_TargetSub 1 to ${RV_MobArray.Size} 
               /target corpse radius ${RV_CurrentRadius} nopcnear "${RV_MobArray[${RV_TargetSub}]}"
               /if (${Target.ID}) {
                  /call LootMob
                  /call ResetSub
               } 
               /next RV_TargetSub
               /delay 2 
            /next RV_CurrentRadius 
         } else {
            /delay 30s 
         }
         /varset RV_FailCounter 0
      /goto :Acquire 
   } 
/return 

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

   /varset RV_MyXLOC ${Int[${Me.X}]} 
   /varset RV_MyYLOC ${Int[${Me.Y}]} 
   /varset RV_ObstacleCount 0 
    
   /doevents 
    
   :MovementLoop
   /if (!${Target.ID}) /return

   /varcalc RV_ObstacleCount ${RV_ObstacleCount}+1

   /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 
   } 

   /face fast 
   /if (${Int[${Target.Distance}]}<${RV_Range}-${RV_Fuzzy}) { 
      /keypress back hold
      /delay 5 ${Target.Distance}>${RV_Range}
      /keypress back
   } 
   /if (${Int[${Target.Distance}]}>${RV_Range}+${RV_Fuzzy}) { 
      /keypress forward hold
      /delay 5 ${Target.Distance}<${RW_Range}
      /keypress forward
   }
   /if (${Math.Calc[${RV_ObstacleCount}%5]}==0) { 
      /call CheckObstacle 
      /goto :Movementloop 
   } 
   /if (${Int[${Target.Distance}]}<${RV_Range}-${RV_Fuzzy}||${Int[${Target.Distance}]}>${RV_Range}+${RV_Fuzzy}) /goto :MovementLoop 

/return 

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

   /echo Attacking Mob NOW! 
   /varset RV_Fighting 1 
   /varset RV_TargetDead 0 
   /pet attack
   :CombatLoop
   /if (${Me.PctMana}>50&&${Target.PctHPs}>70) {
      /delay 1s
      /cast "Touch of Mujaki"
      /delay 4s
   }
   
   /doevents 
   /if (!${Target.ID}) { 
      |/keypress forward 
      |/keypress back 
      /varset RV_TargetDead 1 
      /varset RV_Fighting 0 
      /delay 1s 
      /echo Finding bodies...
      /target radius ${Math.Calc[${RV_Range}+${RV_Fuzzy}+25]} corpse 
      /delay 1s 
      /if (!${Target.ID}) { 
         /call ResetSub 
         /return 
      } 
      /face fast 
   }
   /call MoveToMob 
   /call SpecialIT 
 
   /if (!${RV_TargetDead}) { 
      /goto :CombatLoop 
   } 
    
/return 

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

   /declare LootSlot    int inner  0 
   /declare LootCheck   int inner  0 
   /declare LootTotal   int inner  0 
   
   /varset RV_ObstacleCount 0
   :LootMoveLoop
   /varcalc RV_ObstacleCount ${RV_ObstacleCount}+1
   /face fast
   /if (${Int[${Target.Distance}]}>=15) { 
      /keypress forward hold
      /delay 5 ${Target.Distance}<8
      /keypress forward
   }
   /if (${Math.Calc[${RV_ObstacleCount}%5]}==0) { 
      /call CheckObstacle 
      /goto :LootMoveLoop 
   }

   /if (${Int[${Target.Distance}]}>=15) /goto :LootMoveLoop
    
   /delay 1s
   /loot 
   /delay 1s
   /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! 
               /autoinventory 
               /delay 1s 
            } 
         /next LootCheck 
      } 
      /if (${Cursor.ID}) { 
         /echo Destroying a ${Cursor.Name}... 
         /destroy 
         /delay 1s 
      } 
   /next LootSlot 
    
/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 Check 
|-------------------------------------------------------------------------------- 
Sub CheckObstacle 

   /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_ObstacleCount 0 
  
/return 

|-------------------------------------------------------------------------------- 
|SUB: Obstacle Avoidance 
|-------------------------------------------------------------------------------- 
Sub HitObstacle 
   /echo Obstacle hit, moving around it... 
   /keypress forward 
   /keypress back hold 
   /delay ${Math.Calc[${Math.Rand[5]}+5]} 
   /keypress back 
   /if (${Math.Rand[2]}) { 
     /keypress strafe_right hold 
   } else { 
     /keypress strafe_left hold 
   } 
   /delay ${Math.Calc[${Math.Rand[15]}+5]}
   /keypress strafe_right 
   /keypress strafe_left 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Special Combat 
|-------------------------------------------------------------------------------- 
Sub SpecialIt 
   /if ((${Int[${Me.PctHPs}]}<85)&&(${Me.Gem["Touch of Mujaki"]})&&(${Me.SpellReady["Touch of Mujaki"]})) { 
      /keypress forward 
      /keypress back 
      /echo Casting Touch of Mujaki because of low health... 
      /cast "Touch of Mujaki"
      /delay 4s
   } 
/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) 

   /echo Attempting to read section "${SectionName}" 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 (!${KeySet.Arg[${nValues},|].Length}) { 
      /varcalc nValues ${nValues}-1 
      /goto :MakeArray 
   } 
   /varcalc nValues ${nValues}+1 
   /goto :CounterLoop  

   :MakeArray 
   /if (!${nValues}) /return 
   /if (${FileName.Equal["HunterMob.ini"]}) { 
      /echo Declaring Mob Array... 
      /declare RV_MobArray[${nValues}] string outer 
   } 
   /if (${FileName.Equal["HunterLoot.ini"]}) { 
      /echo Declaring Loot Array... 
      /declare RV_LootArray[${nValues}] string outer 
   } 
   /for nArray 1 to ${nValues} 
      /if (${FileName.Equal["HunterMob.ini"]}) /varset RV_MobArray[${nArray}] ${Ini[${FileName},${SectionName},${KeySet.Arg[${nArray},|]},NULL]} 
      /if (${FileName.Equal["HunterLoot.ini"]}) /varset RV_LootArray[${nArray}] ${Ini[${FileName},${SectionName},${KeySet.Arg[${nArray},|]},NULL]} 
   /next nArray 
    
   /echo "${SectionName}" read from ${FileName}... 
   /delay 1s 
    
/return

fryfrog
a hill giant
a hill giant
Posts: 271
Joined: Fri Jun 20, 2003 5:37 am

Post by fryfrog » Mon May 24, 2004 2:30 am

I will highlight a few of my changes that I made that you may find useful.

The first big change was to the waiting for mobs code. Since we aren't doing anything, I thought we may as well check for corpses that match what we are looking for and hunt them down. Sometimes we kill something and accidentally miss the body somehow. I know, I saw it do it all the time. Things like pets killing mobs that agro'd on you, or mobs that don't get attacked by you AFTER they attack you and take damage from a DS or a pet defending you... or maybe someone else killed a mob and left it.

Was pretty easy, mostly just minor modification of existing code.

Code: Select all

         /echo Waiting for Respawns, Resetting Failure Counter... 
         /if (${RV_FindAllCorpses}==1) {
            /echo Trying to find unlooted corpses...
            /for RV_CurrentRadius 200 to ${RV_MaxRadius} step 200 
               /for RV_TargetSub 1 to ${RV_MobArray.Size} 
               /target corpse radius ${RV_CurrentRadius} nopcnear "${RV_MobArray[${RV_TargetSub}]}"
               /if (${Target.ID}) {
                  /call LootMob
                  /call ResetSub
               } 
               /next RV_TargetSub
               /delay 2 
            /next RV_CurrentRadius 
         } else {
            /delay 30s 
         }
The next big change came to the movment code. I didn't really like the "min" and "max" range, so instead I created a "range" and a "fuzziness". If the range is 60 and the fuzziness is 10, he will try to stay between 50 and 70 units away from the creature. I also modified the movement code some what itself, using the newish /delay time *event* to help control movment better.

Code: Select all

Sub MoveToMob 

   /varset RV_MyXLOC ${Int[${Me.X}]} 
   /varset RV_MyYLOC ${Int[${Me.Y}]} 
   /varset RV_ObstacleCount 0 
    
   /doevents 
    
   :MovementLoop
   /if (!${Target.ID}) /return

   /varcalc RV_ObstacleCount ${RV_ObstacleCount}+1

   /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 
   } 

   /face fast 
   /if (${Int[${Target.Distance}]}<${RV_Range}-${RV_Fuzzy}) { 
      /keypress back hold
      /delay 5 ${Target.Distance}>${RV_Range}
      /keypress back
   } 
   /if (${Int[${Target.Distance}]}>${RV_Range}+${RV_Fuzzy}) { 
      /keypress forward hold
      /delay 5 ${Target.Distance}<${RW_Range}
      /keypress forward
   }
   /if (${Math.Calc[${RV_ObstacleCount}%5]}==0) { 
      /call CheckObstacle 
      /goto :Movementloop 
   } 
   /if (${Int[${Target.Distance}]}<${RV_Range}-${RV_Fuzzy}||${Int[${Target.Distance}]}>${RV_Range}+${RV_Fuzzy}) /goto :MovementLoop 

/return
The next was a minor change to the looting subs, just to include a little bit of obsticle avoidance. I also prefer to use % (mod) instead of resetting a variable each time for a check. This way, you can still have something fire every 5 times, BUT you can also easily keep track of how many times it has fired total... IE, at 5 times you can take little corrective actions... but if you hit 10 or 20 times you can make bigger ones. Didn't implement this though :)

Code: Select all

:LootMoveLoop
   /varcalc RV_ObstacleCount ${RV_ObstacleCount}+1
   /face fast
   /if (${Int[${Target.Distance}]}>=15) { 
      /keypress forward hold
      /delay 5 ${Target.Distance}<8
      /keypress forward
   }
   /if (${Math.Calc[${RV_ObstacleCount}%5]}==0) { 
      /call CheckObstacle 
      /goto :LootMoveLoop 
   }
And the final small change was just to make obsticle avoidence a little more powerful... by adding a few randoms with min values that make sense. It will ALWAYS back up for half a second min, but could backup for as much as a full second. It will go left / right for a min of half a second but could be up to 2 seconds.

Code: Select all

Sub HitObstacle 
   /echo Obstacle hit, moving around it... 
   /keypress forward 
   /keypress back hold 
   /delay ${Math.Calc[${Math.Rand[5]}+5]} 
   /keypress back 
   /if (${Math.Rand[2]}) { 
     /keypress strafe_right hold 
   } else { 
     /keypress strafe_left hold 
   } 
   /delay ${Math.Calc[${Math.Rand[15]}+5]}
   /keypress strafe_right 
   /keypress strafe_left 
/return 

MoonRaverX
a ghoul
a ghoul
Posts: 91
Joined: Tue Dec 16, 2003 5:09 pm
Location: Tampa, Fl

Post by MoonRaverX » Mon May 24, 2004 5:08 pm

thanks fryfrog, now i guess it's time to vanilla my caster stuff into it...
-MoonRaverX
(Removed character from my sig due to owner of said character requesting me to.)

"ASCII stupid question, get a stupid ANSI"

Mixy
a lesser mummy
a lesser mummy
Posts: 46
Joined: Tue Jul 09, 2002 5:00 pm

Post by Mixy » Mon May 24, 2004 5:33 pm

I tried this with my necro and a pet by adding a /pet attack in the combat sub however, all it did was target my pet and attemped to attack it.

I haven't looked into it much, but it's a good fyi.

-Mixy!

DumbStruck
a ghoul
a ghoul
Posts: 125
Joined: Fri Apr 30, 2004 8:46 am

Post by DumbStruck » Mon May 24, 2004 7:04 pm

Code: Select all

/echo Attacking Mob NOW! 
   /varset RV_Fighting 1 
   /varset RV_TargetDead 0 
   /pet attack 
   :CombatLoop 
   /if (${Me.PctMana}>50&&${Target.PctHPs}>70) { 
      /delay 1s 
      /cast "Touch of Mujaki" 
      /delay 4s 
   } 
however i prefer to put the cast before the pet attack so that way i catch them off guard (depends what ya farming naturally) at lvl 65 this is not a exp tool but farming tool.. and i use embracing darkness to snare instead of tom[/code]

Maestro
orc pawn
orc pawn
Posts: 12
Joined: Fri Jan 16, 2004 12:53 am

Post by Maestro » Mon May 24, 2004 8:30 pm

Is there a need to have 2 ini files for this? Since all the data is under identical headings, it seems it'd be easier to maintain a single one.
Like:

Code: Select all

[Eastern Plains of Karana]
Mob1=Spider 
Mob2=Lion 
Mob3=Griffawn 
Loot1=Silk 
Loot2=High Quality 
Loot3=Medium Quality 
Loot4=Feather 
Or does that not work?

FrtyTwoIQ
decaying skeleton
decaying skeleton
Posts: 2
Joined: Wed May 26, 2004 7:59 pm

Post by FrtyTwoIQ » Thu May 27, 2004 5:52 am

Anyone know what i can add to special combat so my char will sit at a certain health, IE below 50%, until it's above that % again after a fight is over. I tried /if ((${Int[${Me.PctHPs}]}<50)) {
/varset TempID ${Target.ID}
/keypress forward
/keypress back
/echo Sitting because of low health...
/keypress 9
/delay 3s
/target id ${TempID}
Basically changed his heal trigger but it would do it during combat, as you can see I know virtually nil about programming, so I tried changing it to
/if ((${Int[${Me.PctHPs}]}<50)&&(${RV_HasTarget=0})) {
/varset TempID ${Target.ID}
/keypress forward
/keypress back
/echo Sitting because of low health...
/keypress 9
/delay 3s
/target id ${TempID}
Then the trigger had no effect, meh, sorry if there was some answer to something like this somewhere else in the forum
-Just a dude tryin to learn how to not suck at programming