Need help cleaning up code

Help section from before the user variable changes that broke all macros

Moderator: MacroQuest Developers

sarnack
decaying skeleton
decaying skeleton
Posts: 7
Joined: Mon Jul 14, 2003 9:54 pm

Need help cleaning up code

Post by sarnack » Mon Jul 21, 2003 10:06 pm

Could you guys help me clean this up? The issue I am running into is. It will look like it is going to loot the mob but does not pick up the bone chips or the swirling shadows.

Code: Select all

#define MyXLOC v40 
#define MyYLOC v41 
#define KSRadius v42 
#define NotSee v43 
#define TooFar v44 
#define MyTarget v45 
#define TargetDead v46 
#define HasTarget v47 
#define MobToHunt v48 
#define ObstCount v49 
#define LootSlot v50 
#define CheckLoot v51 
#define LootTotal v52 
#define MobArraySize v53 
#define MobDistance v54 
Sub Main 
   /zapvars 
   /press esc 
   /press esc 
   /press esc 
   /press esc 
   /press alt 
   /press shift 
   /press ctrl 
   /varset LootSlot 0 
   /varset CheckLoot 0 
   /varset a(1,0) "shadows" 
   /varset a(1,1) "bone" 
   /varset LootTotal 2 
   /varset a(2,0) "lesser" 
   /varset a(2,1) "skeletal" 
   /varset KSRadius 60 
   /varset HasTarget 0 
   /varset ObstCount 0 
   /varset MobArraySize 2 
   /varset MobDistance 14 
   /delay 1s 
   /lootn never 
   :Start 
   /call GetTarget 
   /if $HasTarget=="1" /call MoveToMob 
   /if $HasTarget=="1" /call CheckKs 
   /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 "$a(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 
/return 



sub MoveToMob 
   /delay 2s 
   /varset MyXLOC $char(x) 
   /varset MyYLOC $char(y) 
   /if n $target(distance)<=$MobDistance { 
      /face fast nopredict 
      /return 
   } 
   /sendkey down up 
   :Movementloop 
   /varadd ObstCount 1 
   /if $target()=="FALSE" { 
      /varset HasTarget 0 
      /return 
   } 
   /face fast nopredict 
   /if n $target(distance)<=$MobDistance { 
      /face fast 
      /sendkey up up 
      /return 
   } 
   /if $ObstCount>=3 { 
      /call CheckObst 
      /goto :Movementloop 
   } 
   /if n $target(distance)>$MobDistance /goto :MovementLoop 
/return 



sub CheckKS 
   /if $target()=="FALSE" { 
      /varset HasTarget 0 
      /return 
   } 
   /target nopcnear $KSRadius npc "$MobToHunt" 
   /if $target(id)!=$MyTarget { 
      /echo Target $target(id) and MyTrgId $MyTarget does not match 
      /echo Starting fresh with new target. 
      /varset HasTarget 0 
      /return 
   } 
/return 



sub CombatSub 
   /if $target()=="FALSE" { 
      /varset HasTarget 0 
      /return 
   } 
   /attack on 
   :combatloop 
   /face fast nopredict 
   
   /if n $target(distance)>13 { 
      /sendkey down up 
      /goto :combatloop 
   } 
   /if n $target(distance)<=$MobDistance /sendkey up up 
   /face fast nopredict 
   /if n $target(id)==0 /varset TargetDead 1 
   /if n $TargetDead!=1 /goto :combatloop 
   /delay 1s 
   /target id $MyTarget 
/return 



sub LootMob 
   /loot 
   /delay 2s 
   :lootloop 
   /if n $LootSlot==0 /click left loot2 
   /if n $LootSlot==1 /click left loot3 
   /if n $LootSlot==2 /click left loot4 
   /if n $LootSlot==3 /click left loot5 
   /if n $LootSlot==4 /click left loot6 
   /if n $LootSlot==5 /click left loot7 
   /if n $LootSlot==6 /click left loot8 
   /if n $LootSlot==7 /click left loot9 
   /if n $LootSlot==8 /click left loot10 
   /if n $LootSlot==9 /goto :doneloot 
   /delay 1s 
   /if "$cursor()"!="TRUE" /goto :doneloot 
   :lootChecker 
   /if "$cursor(name)"~~"$a(1,$CheckLoot)" { 
      /delay 1s 
      /click left auto 
      /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 
   /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 $p0  
      /sendkey up Right 
      /sendkey down up 
      /delay 3s 
      /sendkey up up 
   } else { 
      /delay 3s 
      /sendkey up down 
      /sendkey down left 
      /delay $p0  
      /sendkey up left 
      /sendkey down up 
      /delay 3s 
      /sendkey up up        
   } 
   /sendkey up down 
   /sendkey up Right 
   /sendkey up Left 
   /sendkey down up 
/return 



User avatar
grimjack
Macro Author
Macro Author
Posts: 525
Joined: Thu Nov 07, 2002 6:51 am
Contact:

Fix for that.

Post by grimjack » Tue Jul 22, 2003 1:57 am

This should give you all the info you need to know.
http://macroquest2.com/phpBB2/viewtopic.php?t=2669

Thanks
Grimjack
When they come to me, they're in trouble, or they want some. I bust people out of prison, hunt down vampires, fight alien gods -- All the fun jobs people are too squeamish or too polite to do themselves.

Call me a mercenary. Call me an assassin. Call me a villain. I am all that and more.

My name's John Gaunt, but out on the streets of Cynosure, I am called...
GrimJack