Moderator: MacroQuest Developers


Code: Select all
sub LootMob
/loot
/loot
:waitloot
/delay 1s
/if $corpse()!=TRUE /goto :waitloot |funny thing why $corpse()==false dont work
/delay 8
:lootloop
:wait1
/click left corpse @LootSlot
/delay 10
/varadd bobo 1
/if n @bobo>=8 /goto :doneloot
/if $cursor()!=TRUE /goto :wait1
/if $cursor()==TRUE /goto :lootChecker
:lootChecker
/delay 5
/if "$cursor(name)"~~"@MainArray(1,@CheckLoot)" {
/autoinv
/varadd LootSlot 1
/varset bobo 0
/if $corpse(empty)==TRUE /goto :doneloot
/goto :lootloop
}
/if $cursor()==TRUE {
/click left destroy
/delay 5
/varset bobo 0
/varadd LootSlot 1
/if $corpse(empty)==TRUE /goto :doneloot
/goto :lootloop
}
:doneloot
/varset LootSlot 0
/varset bobo 0
/if $cursor()==TRUE /goto :lootChecker
/click left corpse done
/return

Code: Select all
/face loc $target(y), $target(x)Code: Select all
Sub MoveToMob
/face loc $target(y), $target(x)
/if n $target(distance)>=@FastRange /call Fastmove
/if n $target(distance)>@RangeMax {
/press up
}
/if n $target(distance)<@RangeMin {
/press down
}
/return Code: Select all
/face fast look nopredictCode: Select all
/face fast look Code: Select all
| hunter.mac
| v2.1
| Hunt script with loot for new loot parser.
| As always much of this script is inspired or taken directly from
| pieces of macro's found at macroquest2.com's macro depot
| Thank you to all the people who have donated their scripts which
| made this possible. And thank you to the MQ developers.
|
| Edit /varset MainArray(1,0) "silk" and /varset MainArray(1,1) "skin"
| Also edit /varset MainArray(2,0) "widow" and /varset MainArray(2,1) "wolf"
| You can also make these arrays bigger. If you want to search for
| wolfs, widows and orcs you would have this
| /varset MainArray(2,0) "widow"
| /varset MainArray(2,1) "wolf"
| /varset MainArray(2,2) "orc"
| /varset MobArraySize 3
| This picks a random number based on MobArraySize to pick which
| Type of mob it will chose from the array.
|
| What type of loot you want can be expanded in a similar way to
| the mobs you want to hunt. Just add your array entry and update
| /varset LootTotal 2 to be /varset LootTotal [# of loot entries]
|
| Another thing, for the code to actualy destroy items you don't want to
| keep you must have fast item destroy turned on in the game. I would
| test the script for a while on your machine before doing this. It would
| really suck if it picks up your Eyepatch of Plunder and destroies it
| due to a bug.
|
| /target id $char(pet)
|
#turbo 90
Sub Main
/declare MobToHunt global
/declare MainArray array2
/declare MyXLOC global
/declare MyYLOC global
/declare KSRadius global
/declare NotSee global
/declare TooFar global
/declare MyTarget global
/declare TargetDead global
/declare HasTarget global
/declare ObstCount global
/declare LootSlot global
/declare CheckLoot global
/declare LootTotal global
/declare MobArraySize global
/declare RangeMax global
/declare RangeMin global
/declare FastRange global
/press esc
/press esc
/press esc
/press esc
/press alt
/press shift
/press ctrl
/varset RangeMax 12
/varset RangeMin 12
/varset FastRange 12
/varset LootSlot 0
/varset CheckLoot 0
/varset MainArray(1,0) "silk"
/varset MainArray(1,1) "high"
/varset MainArray(1,2) "pixie"
/varset MainArray(1,3) "Greater"
| Add as many of these as you want but make sure you
| increase LootTotal
/varset MainArray(2,0) "spiderling"
/varset MainArray(2,1) "pixie"
/varset MainArray(2,2) "kodiak"
/varset MainArray(2,3) "bear"
| Add as many of these as you want but make sure you
| increase MobArraySize
/varset LootTotal 4
/varset KSRadius 60
/varset HasTarget 0
/varset ObstCount 0
/varset MobArraySize 4
:Start
/call GetTarget
/if @HasTarget=="1" /call MoveToMob
/if @HasTarget=="1" /call CombatSub
/if @HasTarget=="1" /call MoveToMob
/if @HasTarget=="1" /call LootMob
/call ResetSub
/goto :Start
/return
sub GetTarget
:Aquire
/target nopcnear @KSRadius npc "@MainArray(2,$rand(@MobArraySize))"
/varset MyTarget $target(id)
/varset TargetDead 0
/if n $target(id)==0 /goto :Aquire
/if $target()=="False" /goto :Aquire
/varset HasTarget 1
/varset MobToHunt $target(name)
/return
Sub MoveToMob
/face loc $target(y), $target(x)
/if n $target(distance)>=@FastRange /call Fastmove
/if n $target(distance)>@RangeMax {
/press up
}
/if n $target(distance)<@RangeMin {
/press down
}
/return
Sub Fastmove
/varset MyXLOC $char(x)
/varset MyYLOC $char(y)
/varset ObstCount 0
:fastmoveloop
/if $target()=="FALSE" {
/sendkey up up
/if $combat=="TRUE" {
/attack off
/return
}
}
/face fast look
/if n $target(distance)>@FastRange {
/sendkey down up
}
/if n $target(distance)<=@FastRange {
/sendkey up up
/return
}
/varadd ObstCount 1
/if n @ObstCount>=3 {
/call CheckObst
}
/goto :fastmoveloop
/return
sub CombatSub
/if $target()=="FALSE" {
/varset HasTarget 0
/return
}
/attack on
|Pet added
/pet attack
:combatloop
/face fast look
/if $char(class)==Rogue /call BackstabIt
/call MoveToMob
/face fast look
/if n $target(id)==0 /varset TargetDead 1
/if n @TargetDead!=1 /goto :combatloop
/sendkey up up
/delay 1s
/pet follow
/target corpse
/lootn never
/delay 2s
/return
sub LootMob
/loot
/delay 2s
:lootloop
/if n @LootSlot>=9 /goto :doneloot
/click left corpse @LootSlot
/delay 1s
/if "$cursor()"!="TRUE" /goto :doneloot
:lootChecker
/if "$cursor(name)"~~"@MainArray(1,@CheckLoot)" {
/delay 1s
/click left auto
/delay 1s
/varadd LootSlot 1
/goto :lootloop
}
/varadd CheckLoot 1
/if "$cursor()"=="TRUE" {
/if n @CheckLoot<@LootTotal /goto :lootchecker
}
/if "$cursor()"=="TRUE" {
/delay 1s
/click left destroy
/delay 1s
}
/varadd LootSlot 1
/varset CheckLoot 0
/goto :lootloop
:doneloot
/lootn always
/varset LootSlot 0
/return
sub ResetSub
/sendkey up up
/press esc
/press esc
/press esc
/press esc
/press alt
/press shift
/press ctrl
/varset CheckLoot 0
/varset HasTarget 0
/varset ObstCount 0
/delay 1s
/return
sub CheckObst
/if n @MyXLOC==$char(x) /if n @MyYLOC==$char(y) /call HitObst 5
/varset MyXLOC $char(x)
/varset MyYLOC $char(y)
/varset ObstCount 0
/return
sub HitObst
/sendkey up up
/sendkey down down
/if n $rand(99)>50 {
/delay 3s
/sendkey up down
/sendkey down Right
/delay @Param0
/sendkey up Right
/sendkey down up
/delay 3s
/sendkey up up
} else {
/delay 3s
/sendkey up down
/sendkey down left
/delay @Param0
/sendkey up left
/sendkey down up
/delay 3s
/sendkey up up
}
/sendkey up down
/sendkey up Right
/sendkey up Left
/sendkey down up
/return
Sub BackstabIt
/if n $char(ability,"Backstab")!=-2 {
/if $target()=="TRUE" {
/face fast
/doability "Backstab"
}
}
/returnCode: Select all
/face loc $target(y), $target(x)Code: Select all
/face fast look nopredictCode: Select all
/face fast
I tried that but the macro still wandered aimlessly about east karana...I've got the latest build. Am I the only one having the problem when it's /face fast?grimjack wrote:Why change to:The only thing that you had to do was remove the look an nopredict since they are now the default.Code: Select all
/face loc $target(y), $target(x)
becomesCode: Select all
/face fast look nopredict
Code: Select all
/face fast
Thanks
