Afk unlock shrouded forms (now support some potions)

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

Moderator: MacroQuest Developers

rapierguy
a ghoul
a ghoul
Posts: 122
Joined: Thu Apr 14, 2005 1:07 am

Post by rapierguy » Tue Mar 28, 2006 3:17 pm

I was just looking at this code does it move on to the next room or stay in one room after the room is cleared?

newgamez88
orc pawn
orc pawn
Posts: 27
Joined: Thu Mar 09, 2006 12:01 pm

Post by newgamez88 » Tue Mar 28, 2006 6:03 pm

It starts in the rat room, after clearing the room it moves to the bat room, then to the reject room. After the reject room is cleared, it waits for the rat room to respawn.

rapierguy
a ghoul
a ghoul
Posts: 122
Joined: Thu Apr 14, 2005 1:07 am

Post by rapierguy » Tue Mar 28, 2006 6:39 pm

ahh okies thanks thought thats what it does but just wanted to clarify

sonofcycle
orc pawn
orc pawn
Posts: 16
Joined: Thu Mar 23, 2006 9:37 am

Post by sonofcycle » Thu Mar 30, 2006 8:43 am

After using this macro quite a bit I've noticed a couple errors in it, but otherwise it works well. One of the errors is just cosmetic, the other could actually get you banned.

Noticed that when using any shroud that uses 'maul', everytime the macro activates it, you get spammed with "this ability will become available in 3 seconds" or whatever, about 8-10 lines of it per use. In the combat sub the other aa abilities have a /delay 2s right under the /aa act "ability" line so I just added /delay 3s to the maul entry and no more spam.

Secondly, it seems like the events section of this macro is supposed to end the macro when you end up in either Nedaria's Landing or PoK? Well, it doesn't seem to end it. I watched myself die once and show up in PoK, only to somehow get caught in a movement loop, where the macro was trying to get me from mythical point A to mythical point B, bumping into walls and turning around to readjust position. That's fine in Forgotten Halls but it wouldn't be so good to go take a shower and come back and find myself running around like a robot in front of a GM, heh. Including the elixer of health II potion into the macro would probably buffer your HP enough to avoid those occasional deaths as a chanter shroud and avoid that situation though.

Oh one other thing I've noticed that with certain models, namely so far the earth elemental and the basilisk, you can get stuck on that box in the rat room, the one that has a rat behind it. If the macro manages to actually get you behind the box to fight the rat, then it can become a problem (doesn't happen if you fight the mob through the box). Because the model's not tall enough to just walk over the box and that rat is the last one it goes for in the room, it tries to orient on the exit from behind the box and you drag along the back edge of it until you get stuck on the protruding pegs on the right side. Apparently the macro doesn't see this as actually being stuck for whatever reason and he just stands there running against the pegs. Since that rat is always at the same coords, would it be fairly easy to put something in the macro to make you just skip that mob? Or maybe some specific pathing info to cleanly get out from behind the box.

newgamez88
orc pawn
orc pawn
Posts: 27
Joined: Thu Mar 09, 2006 12:01 pm

Post by newgamez88 » Thu Mar 30, 2006 12:16 pm

Thanks for trying my macro and providing important info. I'll look into it.

I heard that the event of entering a new zone is not working as of 2 weeks ago. Not sure if it's fixed by now. I also had this problem that the macro didn't end when I zoned into nedaria or POK. There is a new parameter that maybe useful, which checks whether you are zoning. Also the NPC in nedaria will cast a spell once in a while, that can be used as well.

The 'stuck in rat room' problem is not easy to fix. To skip this mob I need to adjust codes in several places. I'll think about it.

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 » Thu Mar 30, 2006 12:27 pm

Could just have it /keypress jump if you detect you're not moving.
[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]

sonofcycle
orc pawn
orc pawn
Posts: 16
Joined: Thu Mar 23, 2006 9:37 am

Post by sonofcycle » Thu Mar 30, 2006 2:18 pm

Maybe something simple could be added like a sub that would check the zone for Nideno or a PoK NPC and if it finds the npc, then /end, and /call it at various points in the macro?

That being said I reeeeally need to learn how to program this stuff, because as-is I walk a real fine line between saying something sensible and saying something that gets me ripped to shreds. I say that thinking that maybe it would be an easy thing to do, I dunno though.

Thanks a_druid_00, I'll try to work that into the copy I have.

rapierguy
a ghoul
a ghoul
Posts: 122
Joined: Thu Apr 14, 2005 1:07 am

Post by rapierguy » Fri Mar 31, 2006 2:01 am

BTW how can I get this macro to loot the corpses after the mobs are keeled and where in the macro should it be placed?

newgamez88
orc pawn
orc pawn
Posts: 27
Joined: Thu Mar 09, 2006 12:01 pm

Post by newgamez88 » Fri Mar 31, 2006 4:03 am

I just updated the code. The 'stuck in rat room' problem should be fixed. Also zoning to POK/Nedaria should result in /endmacro.

I also added some codes to support 3 types of potions.

Be aware that, now bind wound will stop at 60% health instead of 65, so it will be more dangerous if you don't use the 'Distillate of Health II' potion for your casters (Yes that means: please use it).

I don't want to include looting in this macro since that will slow the killing. The code for looting corpse can be found in some other macros here (like, the 'hunter').

sonofcycle
orc pawn
orc pawn
Posts: 16
Joined: Thu Mar 23, 2006 9:37 am

Post by sonofcycle » Fri Mar 31, 2006 7:36 am

YOU ROCK!!!!! :D

rapierguy
a ghoul
a ghoul
Posts: 122
Joined: Thu Apr 14, 2005 1:07 am

Post by rapierguy » Fri Mar 31, 2006 9:22 am

Okies I've tried just about every thing I saw in regards to looting all the mobs after each keel and even checked the "hunter" macs out there but I can't seem to get the loot portion to work. Could someone look at the full code that I've included in this post and tell me what I'm doing wrong?

Code: Select all

|-------------------------------------------------------------------------------- 
|Macro shroud5 for mq2 by PayBackTime, version 30MAR2006 
| 
|What's new: 
|Added the functions to allow using 3 types of potions: 
|  1) Distillate of health II (POK bought. Don't use it if you have boon of vitality spell) 
|      -- this is an AC/hp buff, casters need this to survive. 
|      -- you must place this potion at an inventory slot (i.e., not in bags) 
|      -- you need 12 of this potion if you plan to stay for the entire 6 hours 
|  2) Distillate of celestial healing II (POK bought. By using this you don't need bandages) 
|      -- this is a Heal over time spell, trigged when your hp drops to below 60% 
|      -- you must put this potion at your potion belt 1 position, however you don't 
|         need to put actual potions in an inventory slot. You can put them in bags. 
|         (shift-p to open the potion belt, Ctrl-click the potion, then click position 1 of potion belt) 
|      -- you need maybe 60 of this potion if you plan to stay for the entire 6 hours 
|  3) Distillate of skinspikes II (can only be made by shamans. This is a 10point DS) 
|      -- this is a 10 point DS, will help you kill a lot faster! 
|      -- you must put this potion at your potion belt 2 position, however you don't 
|         need to put actual potions in an inventory slot. You can put them in bags. 
|         (shift-p to open the potion belt, Ctrl-click the potion, then click position 2 of potion belt) 
|      -- you need 30 of this potion if you plan to stay for the entire 6 hours 
|Also the macro will end when you enter POK or Nedaria, or a GM enters the zone. 
|Fixed the problem of stucking behind the box in rat room 
| 
|What this macro does: 
| 
|*Use a shrouded level 5 and hunt in the forgotten hall for unlock shroud forms 
| 
|*What you need to do before invoking the macro: 
| 
|*You must go to Nedaria's landing after changing into a level 5 shrouded form, 
| and say 'interested in visiting' to NPC Eldros Danmor to start an instance of 
| the forgotten hall. Zone in is at eastern side, in a cave. Click the lone stone 
| besides the NPC standing there. The instance will last for 6 hours. 
| WARNING: WOLVES MAY BE KOS TO CERTAIN CLASSES, THEY ARE LEVEL 20+ SO BE AWARE! 
| 
|*You also need to bring backpacks of bandages with you. Bandages can be purchased 
| from the female merchant in front of the small bank in POK. Suggest 2-3 backpacks 
| for casters, 1 for melees. 
| 
|*It is recommended that you bring potions (follow the above instructions) 
| for caster type shrouds. 
|  
|*Invoke the macro after zoning into the forgotten hall and get to the rat room, 
| Do not invoke it at zone in since the program assumes you are either in the 3 rooms, 
| or somewhere in between any two rooms. 
| 
|The following are some values in echo'ed messages in case you wonder what they mean: 
| 
|*Values for room (RV_ROOM): 1=rat room, 2=bat room, 3=reject room 
| 
|*Values for corridor (RV_CORR): 10=rat room, 15=turn point between rat and bat rooms 
|                     20=bat room, 24=outside bat room, 25=turn point between bat and reject rooms 
|                     30=reject room, 35=outside reject room 
|-------------------------------------------------------------------------------- 

Sub Main 

   /declare RV_HasTarget        int outer  0 
   /declare RV_TargetDead       int outer  0 
   /declare RV_DotUsed          int outer  0 
   /declare RV_ROOM             int outer  0 
   /declare RV_CORR             int outer  0 
   /declare RV_GOTO             int outer  0 
   /declare RV_CNT              int outer  0 
   /declare X2                  int outer  0 
   /declare Y2                  int outer  0 
   /declare LocXP2              int outer  0 
   /declare LocXM2              int outer  0 
   /declare LocYP2              int outer  0 
   /declare LocYM2              int outer  0 
   
  /declare Mobstoloot int outer 0 
   /call ReadINI HunterMob.ini "${Zone.Name}" Mob 
   /if (!${Defined[MobArray]}) { 
      /echo Mob Array Creation Error, ending macro... 
      /endmacro 
   } 
   /call ReadINI HunterLoot.ini "${Zone.Name}" Loot 
   /if (!${Defined[LootArray]}) { 
      /echo No Loot Array Created... 
   } 
   /cleanup 
   /fastdrop on 
   /lootn never 

   



   :Start 

   /call GetTarget 

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

   /if (${Target.ID}) { 
      /delay 1s 
      /varset RV_HasTarget 1 
      /goto :KillAdds 
   } 

   /call BandSub 
    
   /goto :Start 
    
/return 

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

   /if (${RV_ROOM}==0) { 
           /keypress esc 
           /keypress esc 
           /keypress esc 
           /keypress esc 
           /varset RV_GOTO 1 
           /call RoomSub 
           /return 
   } 

   /if (${RV_ROOM}==1) { 
          /delay 2 
        /target rat npc 
        /if (!${Target.ID} || ${Target.Y}>-475) { 
           /keypress esc 
           /keypress esc 
           /keypress esc 
           /keypress esc 
           /varset RV_GOTO 2 
           /call RoomSub 
           /return 
        } 
   } 
   /if (${RV_ROOM}==2) { 
           /delay 2 
        /target bat npc 
        /if (!${Target.ID} || ${Target.Y}>-475) { 
           /keypress esc 
           /keypress esc 
           /keypress esc 
           /keypress esc 
           /varset RV_GOTO 3 
           /call RoomSub 
           /return 
        } 
   } 
   /if (${RV_ROOM}==3) { 
        /delay 2 
        /target reject npc 
        /if (!${Target.ID}) { 
           /delay 2 
          /target bat npc 
        } 
        /if (!${Target.ID} || ${Target.X}<-80) { 
           /delay 2 
           /keypress esc 
           /keypress esc 
           /keypress esc 
           /keypress esc 
           /target rat npc 
        } 
        /if (!${Target.ID} || ${Target.Y}<-500) { 
           /if (!${Target.ID}) { 
               /sit 
               /echo wait for rat room to respawn... 
               /delay 30s 
               /stand 
           } 
           /if (${Target.Y}<-500) { 
               /delay 2 
               /keypress esc 
               /keypress esc 
               /keypress esc 
               /keypress esc 
               /varset RV_GOTO 1 
               /call RoomSub 
               /return 
           } 
        } 
   } 

   /if (${Target.ID}) { 
       /varset RV_HasTarget 1 
       /return 
   } 
  
/return 

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

   /echo Attacking Mob NOW! 
   /varset RV_TargetDead 0 
   /varset RV_DotUsed 0 
    
   /delay 2 

   :CombatLoop 
  
   /call MoveSub 

   /attack on 

   /if (${Target.ID} && ${Me.State.NotEqual[STUN]}) { 
      /if (${Target.ID}) /face fast 
      /if (!${RV_DotUsed}) { 
         /if (${Me.AltAbilityReady[Swarm of Pain]} && ${Me.CurrentMana} >=11 && !${Me.Moving} && !${Me.Casting.ID} ) { 
         /aa act Swarm of Pain 
         /varset RV_DotUsed 1 
         /delay 2s 
         } 
         /if (${Me.AltAbilityReady[Lesion]} && ${Me.PctEndurance} >=6 && !${Me.Casting.ID} ) { 
         /aa act Lesion 
         /varset RV_DotUsed 1 
         } 
      } 
      /if (${Me.AltAbilityReady[Frost]} && ${Me.CurrentMana} >=5 && !${Me.Moving} && !${Me.Casting.ID} ) { 
      /aa act Frost 
      /delay 2s 
      } 
      /if (${Me.AltAbilityReady[Mana Bolt]} && ${Me.CurrentMana} >=4 && !${Me.Moving} && !${Me.Casting.ID} ) { 
      /aa act Mana Bolt 
      /delay 2s 
      } 
      /if (${Me.AbilityReady[Kick]} && ${Target.Distance}<17 && !${Me.Casting.ID}) { 
      /doability "Kick" 
      } 
      /if (${Me.AltAbilityReady[Maul]} && ${Me.PctEndurance} >=6 && !${Me.Casting.ID} ) { 
      /aa act Maul 
      /delay 2s 
      } 
      /if (${Me.PctHPs}<60 && ${FindItem[Distillate of Celestial Healing II].InvSlot}) { 
        /potionbelt activate 1 
        /delay 1s 
      } 
  } 

   /if (!${Target.ID} || ${Target.Type.Equal[Corpse]}) { 
      /attack off 
      /keypress forward 
      /keypress back 
      
      /varset RV_TargetDead 1 
      /if (!${Target.ID}) { 
         /call ResetSub 
         /return 
      } 
   } 

   /if (!${RV_TargetDead}) { 
      /goto :CombatLoop 
   } 
    
/return 

  
|-------------------------------------------------------------------------------- 
|SUB: Change Room 
|-------------------------------------------------------------------------------- 
Sub RoomSub 
  
    :Startmove 

    /varset RV_ROOM 0 
    /varset RV_CORR 0 
    /if (${Me.X}>100 && ${Me.Y}<-500 )                        /varset RV_CORR 10 
    /if (${Me.X}<-80 )                                        /varset RV_CORR 20 
    /if (${Me.X}>60 && ${Me.Y}>-445 )                         /varset RV_CORR 30 
    /if (${Me.X}>=-15 && ${Me.X}<=100 && ${Me.Y}<-500 )        /varset RV_CORR 15 
    /if (${Me.X}>=-80 && ${Me.X}<-15)                          /varset RV_CORR 25 
    /if (${Me.X}>=-15 && ${Me.Y}>=-500 && ${Me.Y}<=-445 )     /varset RV_CORR 35 

    /if (${RV_GOTO}==1 ) /goto :Moveto1 
    /if (${RV_GOTO}==2 ) /goto :Moveto2 
    /if (${RV_GOTO}==3 ) /goto :Moveto3 

   :Moveto1 
      /if (${Me.X}>100 && ${Me.Y}<-500 ) { 
         /keypress back 
          /delay 2 
          /varset RV_ROOM 1 
          /return 
      } 
   :Moveroom3to1 
      /if (${RV_CORR}==30 ) {    
      /face fast loc -390, 135 
      /call Move2Sub 
      /if (${Me.Y}<=-385 && ${Me.Y}>=-395 && ${Me.X}<=140 && ${Me.X}>=130) { 
         /keypress back 
         /delay 2 
         /varset RV_CORR 35 
         /goto :Movecorr3to1 
      } 
      /goto :Moveroom3to1 
      } 
   :Movecorr3to1 
      /if (${RV_CORR}==35  ) {    
      /face fast loc -475, 135 
      /call Move2Sub 
      /if (${Me.Y}<=-470 && ${Me.Y}>=-480 && ${Me.X}<=140 && ${Me.X}>=130) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 25 
         /goto :Movecorr2to1 
      } 
      /goto :Movecorr3to1 
      } 
   :Movecorr2to1 
      /if (${RV_CORR}==25  ) {    
      /face fast loc -475, -40 
      /call Move2Sub 
      /if (${Me.Y}<=-470 && ${Me.Y}>=-480 && ${Me.X}<=-35 && ${Me.X}>=-45) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 15 
         /goto :Movecorr1to1 
      } 
      /goto :Movecorr2to1 
      } 
   :Moveroom2to1 
      /if (${RV_CORR}==20 ) {    
      /face fast loc -560, -143 
      /call Move2Sub 
      /if (${Me.Y}<=-555 && ${Me.Y}>=-565 && ${Me.X}<=-138 && ${Me.X}>=-148) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 24 
         /goto :Movecorr24to1 
      } 
      /goto :Moveroom2to1 
      } 
   :Movecorr24to1 
      /if (${RV_CORR}==24  ) {    
      /face fast loc -560, -40 
      /call Move2Sub 
      /if (${Me.Y}<=-555 && ${Me.Y}>=-565 && ${Me.X}<=-35 && ${Me.X}>=-45) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 15 
         /goto :Movecorr1to1 
      } 
      /goto :Movecorr24to1 
      } 
   :Movecorr1to1 
      /if (${RV_CORR}==15 ) {    
      /face fast loc -600, -40 
      /if (${Me.Y}<=-595 && ${Me.Y}>=-605 && ${Me.X}<=-35 && ${Me.X}>=-45) { 
         /varset RV_CORR 10 
         /goto :Movelastto1 
      } 
      /call Move2Sub 
      /if (${Me.Y}<=-595 && ${Me.Y}>=-605 && ${Me.X}<=-35 && ${Me.X}>=-45) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 10 
         /goto :Movelastto1 
      } 
      /goto :Movecorr1to1 
      } 
   :Movelastto1 
      /if (${RV_CORR}==10 ) {    
      /face fast loc -600, 150 
      /call Move2Sub 
      /if (${Me.Y}<=-595 && ${Me.Y}>=-605 && ${Me.X}<=155 && ${Me.X}>=145) { 
         /keypress back 
          /delay 2 
          /varset RV_ROOM 1 
          /return 
      } 
      /goto :Movelastto1 
      } 
    /goto :Moveto1 

   :Moveto2 
      /if (${Me.X}<-80 ) { 
         /keypress back 
          /delay 2 
          /varset RV_ROOM 2 
          /return 
      } 
   :Moveroom3to2 
      /if (${RV_CORR}==30 ) {    
      /face fast loc -390, 135 
      /call Move2Sub 
      /if (${Me.Y}<=-385 && ${Me.Y}>=-395 && ${Me.X}<=140 && ${Me.X}>=130) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 35 
         /goto :Movecorr3to2 
      } 
      /goto :Moveroom3to2 
      } 
   :Movecorr3to2 
      /if (${RV_CORR}==35  ) {    
      /face fast loc -475, 135 
      /call Move2Sub 
      /if (${Me.Y}<=-470 && ${Me.Y}>=-480 && ${Me.X}<=140 && ${Me.X}>=130) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 25 
         /goto :Movecorr2to2 
      } 
      /goto :Movecorr3to2 
      } 
   :Movecorr2to2 
      /if (${RV_CORR}==25  ) {    
      /face fast loc -475, -40 
      /call Move2Sub 
      /if (${Me.Y}<=-470 && ${Me.Y}>=-480 && ${Me.X}<=-35 && ${Me.X}>=-45) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 24 
         /goto :Movecorr24to2 
      } 
      /goto :Movecorr2to2 
      } 
   :Moveroom1to2 
      /if (${RV_CORR}==10 ) {    
      /face fast loc -600, 150 
      /call Move2Sub 
      /if (${Me.Y}<=-595 && ${Me.Y}>=-605 && ${Me.X}<=155 && ${Me.X}>=145) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 15 
         /goto :Movecorr1to2 
      } 
      /goto :Moveroom1to2 
      } 
   :Movecorr1to2 
      /if (${RV_CORR}==15 ) {    
      /face fast loc -600, -40 
      /call Move2Sub 
      /if (${Me.Y}<=-595 && ${Me.Y}>=-605 && ${Me.X}<=-35 && ${Me.X}>=-45) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 24 
         /goto :Movecorr24to2 
      } 
      /goto :Movecorr1to2 
      } 
    :Movecorr24to2 
      /if (${RV_CORR}==24  ) {    
      /face fast loc -560, -40 
      /call Move2Sub 
      /if (${Me.Y}<=-555 && ${Me.Y}>=-565 && ${Me.X}<=-35 && ${Me.X}>=-45) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 20 
         /goto :Movelastto2 
      } 
      /goto :Movecorr24to2 
      } 
   :Movelastto2 
      /if (${RV_CORR}==20 ) {    
      /face fast loc -560, -143 
      /call Move2Sub 
      /if (${Me.Y}<=-555 && ${Me.Y}>=-565 && ${Me.X}<=-138 && ${Me.X}>=-148) { 
         /keypress back 
           /delay 2 
          /varset RV_ROOM 2 
          /return 
      } 
      /goto :Movelastto2 
      } 
    /goto :Moveto2 

   :Moveto3 
      /if (${Me.X}>60 && ${Me.Y}>-445 ) { 
         /keypress back 
          /delay 2 
          /varset RV_ROOM 3 
          /return 
      } 
   :Moveroom1to3 
      /if (${RV_CORR}==10 ) {    
      /face fast loc -600, 150 
      /call Move2Sub 
      /if (${Me.Y}<=-595 && ${Me.Y}>=-605 && ${Me.X}<=155 && ${Me.X}>=145) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 15 
         /goto :Movecorr1to3 
      } 
      /goto :Moveroom1to3 
      } 
   :Movecorr1to3 
      /if (${RV_CORR}==15 ) {    
      /face fast loc -600, -40 
      /call Move2Sub 
      /if (${Me.Y}<=-595 && ${Me.Y}>=-605 && ${Me.X}<=-35 && ${Me.X}>=-45) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 25 
         /goto :Movecorr2to3 
      } 
      /goto :Movecorr1to3 
      } 
   :Moveroom2to3 
      /if (${RV_CORR}==20 ) {    
      /face fast loc -560, -143 
      /call Move2Sub 
      /if (${Me.Y}<=-555 && ${Me.Y}>=-565 && ${Me.X}<=-138 && ${Me.X}>=-148) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 24 
         /goto :Movecorr24to3 
      } 
      /goto :Moveroom2to3 
      } 
    :Movecorr24to3 
      /if (${RV_CORR}==24  ) {    
      /face fast loc -560, -40 
      /call Move2Sub 
      /if (${Me.Y}<=-555 && ${Me.Y}>=-565 && ${Me.X}<=-35 && ${Me.X}>=-45) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 25 
         /goto :Movecorr2to3 
      } 
      /goto :Movecorr24to3 
      } 
   :Movecorr2to3 
      /if (${RV_CORR}==25  ) {    
      /face fast loc -475, -40 
      /call Move2Sub 
      /if (${Me.Y}<=-470 && ${Me.Y}>=-480 && ${Me.X}<=-35 && ${Me.X}>=-45) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 35 
         /goto :Movecorr3to3 
      } 
      /goto :Movecorr2to3 
      } 
   :Movecorr3to3 
      /if (${RV_CORR}==35  ) {    
      /face fast loc -475, 135 
      /call Move2Sub 
      /if (${Me.Y}<=-470 && ${Me.Y}>=-480 && ${Me.X}<=140 && ${Me.X}>=130) { 
         /keypress back 
          /delay 2 
         /varset RV_CORR 30 
         /goto :Movelastto3 
      } 
      /goto :Movecorr3to3 
      } 
   :Movelastto3 
      /if (${RV_CORR}==30 ) {    
      /face fast loc -390, 135 
      /call Move2Sub 
      /if (${Me.Y}<=-385 && ${Me.Y}>=-395 && ${Me.X}<=140 && ${Me.X}>=130) { 
         /keypress back 
          /delay 2 
          /varset RV_ROOM 3 
          /return 
      } 
         /goto :Movelastto3 
      } 
    /goto :Moveto3 
/return 


|-------------------------------------------------------------------------------- 
|SUB: Move2, moving when you do not have a target, esp. moving from room to room 
|-------------------------------------------------------------------------------- 
Sub Move2Sub 
      
      /if (${Spawn[gm].ID}) /call PanicSub 
      /if (${Spawn[eldros].ID}) /call PanicSub 
      /if (${Spawn[shroudkeeper].ID}) /call PanicSub 
      /keypress forward hold 
      /varset X2 ${Me.X} 
      /varset Y2 ${Me.Y} 
      /varcalc LocXP2 ${X2}+1 
      /varcalc LocXM2 ${X2}-1 
      /varcalc LocYP2 ${Y2}+1 
      /varcalc LocYM2 ${Y2}-1 
      /delay 2 
      /if (${LocXP2}>${Me.X} && ${LocXM2}<${Me.X} && ${LocYP2}>${Me.Y} && ${LocYM2}<${Me.Y}) { 
         /keypress back 
         /echo stucked corr= ${RV_CORR} goto= ${RV_GOTO}, retry... 
         /delay 2 
         /if (${Me.X}>100 && ${Me.Y}<-500 ) { 
                       /if (${Me.X}>100 && ${Me.Y}<-645) { 
                             /keypress back 
                             /delay 2 
                             /face fast loc -662, 178 
                             /keypress forward hold 
                             /delay 2s 
                       } 
                       /varset RV_CORR 10 
         } 
         /if (${Me.X}<-80 )                                        /varset RV_CORR 20 
         /if (${Me.X}>60 && ${Me.Y}>-445 )   { 
                  /keypress back 
                  /delay 2 
                  /face fast loc ${Math.Rand[10000]}, ${Math.Rand[10000]} 
                  /keypress forward hold 
                  /delay 2s 
                  /varset RV_CORR 30 
         } 
         /if (${Me.X}>=-15 && ${Me.X}<=100 && ${Me.Y}<-500 )  { 
             /if (${RV_CORR}==15 )                   /varset RV_CORR 14 
             /if (${RV_CORR}<14 || ${RV_CORR}>15)    /varset RV_CORR 15 
             /if (${RV_CORR}==14 )                   /varset RV_CORR 10 
         } 
         /if (${Me.X}>=-80 && ${Me.X}<-15) { 
             /if (${RV_CORR}==15 || ${RV_CORR}==24 || ${RV_CORR}>25)    /varset RV_CORR 22 
             /if (${RV_CORR}==25 || ${RV_CORR}==20 ) /varset RV_CORR 24 
             /if (${RV_CORR}==10 )                   /varset RV_CORR 15 
             /if (${RV_CORR}==22 )                   /varset RV_CORR 25 
         } 
         /if (${Me.X}>=-15 && ${Me.Y}>=-500 && ${Me.Y}<=-445 ) /varset RV_CORR 35 
      } 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Move, moving when you have a target, during combat, etc. 
|-------------------------------------------------------------------------------- 
Sub MoveSub 

      /varset RV_CNT 0 

      :MoveLoop 
      
      /stand 
      /if (${Target.Distance}>17) { 
              /if (${Target.ID}) /face fast 
              /keypress forward hold 
              /varset X2 ${Me.X} 
              /varset Y2 ${Me.Y} 
              /varcalc LocXP2 ${X2}+1 
              /varcalc LocXM2 ${X2}-1 
              /varcalc LocYP2 ${Y2}+1 
              /varcalc LocYM2 ${Y2}-1 
              /delay 5 
              /if (${LocXP2}>${Me.X} && ${LocXM2}<${Me.X} && ${LocYP2}>${Me.Y} && ${LocYM2}<${Me.Y}) { 
                  /if (${Me.X}>100 && ${Me.Y}<-500 ) { 
                          /if (${Me.X}>100 && ${Me.Y}<-645) { 
                                /keypress back 
                                /delay 2 
                                /face fast loc -662, 178 
                                /keypress forward hold 
                                /delay 2s 
                          } 
                           /keypress back 
                          /delay 2 
                          /face fast loc -600, 150 
                          /echo stucked when moving to mob in the rat room, retry... 
                          /keypress forward hold 
                          /delay 2s 
                          /keypress back 
                          /if (${Target.ID}) /face fast 
                          /varcalc RV_CNT ${RV_CNT}+1 
                          /if (${RV_CNT}>100 && ${Target.PctHPs}==100) { 
                                 /keypress back 
                                 /keypress esc 
                                 /keypress esc 
                                 /keypress esc 
                                 /keypress esc 
                                 /echo stucked too many times, restarting cycles... 
                                 /call RoomSub 
                                 /return 
                          } 
                          /goto :MoveLoop 
                  } 
                  /if (${Me.X}<-80 )  { 
                          /keypress back 
                          /delay 2 
                          /face fast loc -560, -143 
                          /echo stucked when moving to mob in the bat room, retry... 
                          /keypress forward hold 
                          /delay 2s 
                          /keypress back 
                          /if (${Target.ID}) /face fast 
                          /varcalc RV_CNT ${RV_CNT}+1 
                          /if (${RV_CNT}>100 && ${Target.PctHPs}==100) { 
                                 /keypress back 
                                 /keypress esc 
                                 /keypress esc 
                                 /keypress esc 
                                 /keypress esc 
                                 /echo stucked too many times, restarting cycles... 
                                 /call RoomSub 
                                 /return 
                          } 
                          /goto :MoveLoop 
                 } 
                  /if (${Me.X}>60 && ${Me.Y}>-445 )  { 
                          /keypress back 
                          /delay 2 
                          /face fast loc ${Math.Rand[10000]}, ${Math.Rand[10000]} 
                          /echo stucked when moving to mob in the reject room, retry... 
                          /keypress forward hold 
                          /delay 2s 
                          /keypress back 
                          /if (${Target.ID}) /face fast 
                          /varcalc RV_CNT ${RV_CNT}+1 
                          /if (${RV_CNT}>100 && ${Target.PctHPs}==100) { 
                                 /keypress back 
                                 /keypress esc 
                                 /keypress esc 
                                 /keypress esc 
                                 /keypress esc 
                                 /echo stucked too many times, restarting cycles... 
                                 /call RoomSub 
                                 /return 
                          } 
                            /goto :MoveLoop 
                  } 
                  /keypress back 
                  /keypress esc 
                  /keypress esc 
                  /keypress esc 
                  /keypress esc 
                  /echo stucked outside, restarting cycles... 
                  /call RoomSub 
                  /return 
              } 
              /keypress back              
              /if (${Target.ID}) /face fast 
              /goto :MoveLoop 
      } 

  
       /if (${Target.Distance}>15) { 
              /if (${Target.ID}) /face fast 
              /keypress forward hold 
              /delay 2 
              /keypress back 
              /if (${Target.ID}) /face fast 
      } 
/return 

|-------------------------------------------------------------------------------- 
|Code: Looting 
|-------------------------------------------------------------------------------- 
Sub ClearCorpses 
   /declare CorpseSub int local 
   /for CorpseSub 1 to ${Mobstoloot} 
      /call LootMob  
   /next CorpseSub 
   /call ResetSub 
/return 

Sub LootMob 
   /declare LootSlot int inner 0 
   /declare LootCheck int inner 0 
   /declare LootTotal int inner 0 
   /declare LootLoop int local 0 
   :WaitLootMobWnd 
   /squelch /target corpse radius 100 
   /delay 5 
   /squelch /stick 
   /if (${Target.Type.Equal[CORPSE]}) /loot 
   /delay 5 
   /varcalc LootLoop ${LootLoop}+1 
   /if (${LootLoop}>3) /return 
   /if (!${Corpse}) /goto :WaitLootMobWnd 
   /if (!${Corpse.Items}) { 
      /echo NO LOOT! Cheap Bastard! 
      /notify LootWnd DoneButton leftmouseup 
      /delay 2 
      /return 
   } 
   /squelch /stick off 
   /varset LootTotal ${Corpse.Items} 
   /for LootSlot 1 to ${LootTotal} 
      /itemnotify loot${LootSlot} leftmouseup 
      /delay 1s 
      /for LootCheck 1 to ${LootArray.Size} 
         /if (${Cursor.Name.Find[${LootArray[${LootCheck}]}]}) { 
            /echo Keeping a ${Cursor.Name}... WOOT! 
            /varcalc LootStats[${LootCheck}] ${LootStats[${LootCheck}]}+1 
            /autoinventory 
            /delay 1s 
         } 
      /next LootCheck 
      /if (${Cursor.Value}>9000 && ${Cursor.Stackable}) { 
         /echo Keeping a ${Cursor.Name}... 
         /autoi 
         /delay 1s 
      }  
      /if (${Cursor.NoDrop}&&!${Cursor.Magic}) { 
         /echo Destroying a ${Cursor.Name}... 
         /des 
         /delay 1s 
      }  
      /if (${Cursor.NoDrop}&&${Cursor.WornSlots}<1) { 
         /echo Destroying a ${Cursor.Name}... 
         /des 
         /delay 1s 
      }  
      /if (${Cursor.ID}) { 
         /echo Dropping a ${Cursor.Name}... 
         /drop 
         /delay 1s 
      } 
   /next LootSlot 
   /notify LootWnd DoneButton leftmouseup 
/return   



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

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


|-------------------------------------------------------------------------------- 
|Code: 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 (${Ini[${FileName},${SectionName},${ArrayType}${nValues},NOTFOUND].Equal[NOTFOUND]}) { 
      /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 MobArray[${nValues}] string outer 
      /declare MobStats[${nValues}] string outer 
   } 
   /if (${FileName.Equal["HunterLoot.ini"]}&&${nValues}>0) { 
      /echo Declaring Loot Array... 
      /declare LootArray[${nValues}] string outer 
      /declare LootStats[${nValues}] string outer 
   } 
   /for nArray 1 to ${nValues} 
      /if (${FileName.Equal["HunterMob.ini"]}) { 
         /varset MobArray[${nArray}] ${Ini[${FileName},${SectionName},${ArrayType}${nArray}]} 
         /varset MobStats[${nArray}] 0 
      } 
      /if (${FileName.Equal["HunterLoot.ini"]}) { 
         /varset LootArray[${nArray}] ${Ini[${FileName},${SectionName},${ArrayType}${nArray}]} 
         /varset LootStats[${nArray}] 0 
      } 
   /next nArray 
   /echo "${SectionName}" Zone Information Read Successfully from ${FileName}... 
   /delay 1s 
/return 




|-------------------------------------------------------------------------------- 
|SUB: Bandage, Heal and Buff Self 
|-------------------------------------------------------------------------------- 
Sub BandSub 

   /if (${Spawn[gm].ID}) /call PanicSub 
   /if (${Spawn[eldros].ID}) /call PanicSub 
   /if (${Spawn[shroudkeeper].ID}) /call PanicSub 
   /target myself 
   /delay 5 

   :BuffLoop 
  
   /if (!${Me.Buff[Pure Thought II].ID} && ${Me.AltAbilityReady[Pure Thought]}) { 
      /aa act Pure Thought 
      /delay 6s 
      /goto :BuffLoop 
   } 

   /if (!${Me.Buff[Gift of Speed II].ID} && ${Me.AltAbilityReady[Gift of Speed]}) { 
      /aa act Gift of Speed 
      /delay 6s 
      /goto :BuffLoop 
   } 

   /if (!${Me.Buff[Distillate of Skinspikes].ID} && ${FindItem[Distillate of Skinspikes II].InvSlot}) { 
      /potionbelt activate 2 
      /delay 5s 
   } 
   /if (!${Me.Buff[Boon of Vitality II].ID} && !${Me.Buff[Elixir of Health II].ID}) { 
      /if (${Me.AltAbilityReady[Boon of Vitality]} && ${Me.CurrentMana} >=3) { 
         /aa act Boon of Vitality 
         /delay 6s 
         /goto :BuffLoop 
      } 
      /if (${FindItem[Distillate of Health II].InvSlot}>=22 && ${FindItem[Distillate of Health II].InvSlot}<=29 ) { 
         /cast item "Distillate of Health II" 
         /delay 3s 
      } 
   } 

   :HealLoop 
    
   /if (${Me.PctHPs} <= 65 && ${Me.AltAbilityReady[Heal Wounds]} && ${Me.PctMana} > 70) { 
      /aa act Heal Wounds 
      /delay 5s 
      /goto :HealLoop 
   } 
  
   /sit 
   /delay 1s 

   :BandLoop 
  
   /if (${Me.PctHPs} <= 60 && ${Me.AbilityReady[Bind Wound]}) { 
      /doability "Bind Wound" 
      /delay 15s 
      /goto :BandLoop 
   } 

   :SitLoop 
  
   /if (${Me.PctMana} >0 && ${Me.PctMana} <= 70) { 
      /delay 12s 
      /goto :SitLoop 
      } 
   } 
  
   /stand 

   /keypress esc 
   /keypress esc 
   /keypress esc 
   /keypress esc 
        
/return 

|-------------------------------------------------------------------------------- 
|SUB: Panic, quit the macro 
|-------------------------------------------------------------------------------- 
Sub PanicSub 
   /keypress back 
   /delay 5 
   /keypress back 
   /endmacro 
/return 
  
thanks for any and all help

newgamez88
orc pawn
orc pawn
Posts: 27
Joined: Thu Mar 09, 2006 12:01 pm

Post by newgamez88 » Fri Mar 31, 2006 10:54 am

The following part has problem.

Code: Select all

:KillAdds 
   /if (${RV_HasTarget}) /call CombatSub 
   /if (${RV_HasTarget} && (${Defined[RV_LootArray]} || ${RV_LootAllItems})) /call LootMob  
   /call ResetSub 
First line is my original code, it says that, if after killing a mob you still have a target, that means you have another mob attacking you, so kill it (this should not happen in forgotten halls at level 5).

Second line is yours which calls the lootmob sub. However the condition will not be met since you don't have a target at this moment. I suggest you add a line before it like this

Code: Select all

/tar npc corpse radius 50
Not sure if there are other problems but this is a big one.

sonofcycle
orc pawn
orc pawn
Posts: 16
Joined: Thu Mar 23, 2006 9:37 am

Post by sonofcycle » Fri Mar 31, 2006 1:23 pm

I see another problem.

I see you bothering to loot lvl 2-4 mobs in Forgotten Halls after each keel [sic], possibly after a 6 hr run of this macro garnishing yourself a small pile of copper at most. Why go through the trouble, I have to ask? Selling one fine steel short sword would make you more money than this most likely.
Last edited by sonofcycle on Fri Mar 31, 2006 1:48 pm, edited 2 times in total.
What if there IS no tomorrow? There wasn't one today...

Yunto?
a grimling bloodguard
a grimling bloodguard
Posts: 502
Joined: Sat Nov 19, 2005 12:05 pm

Post by Yunto? » Fri Mar 31, 2006 1:33 pm

Its actually more than 2pp.

But nevertheless.. 2pp > 0pp.

sonofcycle
orc pawn
orc pawn
Posts: 16
Joined: Thu Mar 23, 2006 9:37 am

Post by sonofcycle » Fri Mar 31, 2006 1:51 pm

Yep. And one drop of water to drink out in the Sahara desert is better than none. Would most people bother to bring the canteen with one drop in it? Probably not.
What if there IS no tomorrow? There wasn't one today...