Welp After being /bumped by a vehicle that decide that pedestrians didn't have the right of way when crossing the street when I had the go ahead I'm back after what seems like an eternity in the hospital =
But someone pm'd me on how I fixed the looting thing and here is the entire macro with the loot code included which worked the night before i got hit by the car =)
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
/declare DoHeal bool outer TRUE
/declare DoHoT bool outer TRUE
/declare HealGroup bool outer TRUE
/declare HealPets bool outer TRUE
/declare HealTank bool outer TRUE
: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 IV]} && ${Me.PctEndurance} >=6 && !${Me.Casting.ID} ) {
/aa act Lesion
/varset RV_DotUsed 1
}
}
/if (${Me.AltAbilityReady[Frost of the Ancients IV]} && ${Me.CurrentMana} >=5 && !${Me.Moving} && !${Me.Casting.ID} ) {
/aa act Frost of the Ancients IV
/delay 2s
}
/if (${Me.AltAbilityReady[Mana Bolt VI]} && ${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 V].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 all
/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
/tar corpse radius 50
/call MoveSub
/loot all
/delay 5
/keypress esc
/keypress esc
/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 V].ID} && !${Me.Buff[Elixir of Health II].ID}) {
/if (${Me.AltAbilityReady[Boon of Vitality V]} && ${Me.CurrentMana} >=3) {
/aa act Boon of Vitality V
/delay 6s
/goto :BuffLoop
}
/if (${FindItem[Distillate of Health V].InvSlot}>=22 && ${FindItem[Distillate of Health V].InvSlot}<=29 ) {
/cast item "Distillate of Health V"
/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
BTW I may have some other stuff in there that i think I was working on. If you find some weird stuff let me know I have to get a few more Gamecards before I can get back to using my 4 man hydra again with this code