Help Please

Need some help with that macro you're working on or aren't quite sure how to get your macro to do something? Ask here!

Moderator: MacroQuest Developers

Highlander
a lesser mummy
a lesser mummy
Posts: 51
Joined: Sat Dec 20, 2003 1:26 pm

Help Please

Post by Highlander » Thu Feb 12, 2004 1:26 pm

the following macro i pulled off these boards, as it does work well there are a few things i cant get to work due ot the fact i am a total newbie and i simply dont understand macro language, but please be gentle, i am trying.

1. when i start the macro it does cast my damage sheild, however it does not cast my hp buff spell nor does it cast my Pet Haste Buff, when i cast my pet haste buff and it wears off the macro wont refresh it.

2. this does not cast the spell to heal my pet when he gets down to the specified % HP

3. after starting this macro in Twilight Sea hunting Shadows for smithing supplies and comming back to find myself dead, i copied a evade death sub out of the Hillgiant macro and pasted into this one, needless to say it does not work either, i realize to you folks tha thave been around this for a while it is easy for you to look and see where the code is in error, but for me im afraid i havent a clue, well here is teh code, please help if you can.

Code: Select all

|  Fixed necrofarm.mac - v0.4.1  11/06/03 
|   - removed most "nopredict" from distance calcs in /face 
|   - added "/face loc $target(y), $target(x)" in MoveToTarget Sub 
|   - only oddity I can see is that character looks up just before attacking mob 
|   - All credit goes to Scrime for this awesome script - Stogar 
| 
|  converted necrofarm.mac - v0.4.0b 10/21/2003 by Scrime 
|  Basic pet hunter script converted to new var format 
|     w/ some ideas borrowed from GrimJack's hunter script. 
| 
|  Usage: 
|   ! Have a pet up. 
|   ! Put the correct spells in the spell names. 
|   ! Use /call AddToMobList to add the mobs that you want to hunt. 
|   ! Use /call AddToLootList to add the items that you want to loot 
|   ! Use /call AddToDontLootList to add the items that you want to destroy 
|       because they accidently get looted due to the wildcard nature of the loot list. 
| 
|  Features: 
|   + Anti-KS code.  Selects targets with no other PCs within a variable radius. 
|      Also checks to make sure the target is undamaged and is not already attacking 
|     someone else before engaging. 
|   + Selective auto-looting.  Only keeps the items that you want it to.  Also has a 
|     destroy list, in the case that you are looting all "lightstones", but still want 
|     to destroy "Burned Out Lightstones" (for example) 
|   + Closest mob selection.  Looks through the whole list of mobs you want to hunt 
|     goes after the closest one. 
|   + Debugging code.  Set DEBUG to "1==1" to show debugging code, set to "0==1" to turn 
|     it off. 
|   + Buff tracking.  Keeps track of buffs up on you and your pet, refreshes as nescessary. 
|   + Heals your pet once it drops below 90% health. 
|   + Obstruction avoidance.  Should back up and try to go around something if it gets stuck. 
| 
|  Known Issues/Limitations/Bugs: 
|   - Does not know when to stop hunting.  $freeinv works for some people, crashes the client for 
|     other people.  Until it is fixed, the script will not know when you bags are full. 
|   - Does not stop to med up, stops casting spells once below 20% mana. 
|   - Obstruction detection needs some tweaking, maybe an "allowance" value for being in the same spot 
|     instead of waiting for the x/y locs to be the same. 
|   - Some of the global variables need to be turned in to locals. 
|      
|  Release Notes for v0.4.0b : 
|   * NOTE: This is considered a beta release of the converted previous v0.3.0b, it still needs some more testing.  
|     Use at you own risk, please report any problems.  Enjoy and macro responsibly. 
|   * Hunt distance is now a constant (cHuntDistance) that you can set at the beginning of the script.  This 
|     is the maxiumum distance away from you that the script will look for a new target.  Set to 99999 for no 
|     max distance. 
|   * In the anti-ks code, when looking at our targets assisted target, it will look at the name and if 
|     the name contains the word "corpse" it will disregard the assist and attack anyway. 
|   * In the anti-ks code, if a mob it tries to target becomes invalid because it is not full health or is 
|     currently attacking someone it will not be considered the next time thru the loop. 
|   * Aggro'd mob protection.  If we have a mob aggro'd on us, then the script will select that mob as our next 
|     target to kill AFTER we are done with out current target before doing a normal search for a hunt target. 
|   * Continuous target re-evaluation.  As long as we are moving towards our target, the script will keeping 
|     looking for closer targets.  This makes it so that we wont run past newly spawned valid targets on our way 
|     to our current target (which is farther away). 
|   * Script now backs away from a target if it gets too close to us (too close range defined as cTooCloseRange) 
| 

#turbo 

| used to echo debugging messages.  set to 1=1 if you want to see them, 0==1 if you dont 
#define DEBUG               0==1 

| distance defines, setting these alters the behavior of the script 
| cAntiKSRadius is the distance from each mob that will exclude it from selecting as a 
| target if there is another PC within this range. 
#define cAntiKSRadius         50 
| cAtkRange is how close we get to the mob before we send in the pet 
#define cAtkRange            100 
| cTooCloseRange is how close we let a mob we are attacking get to us before we start to 
| back away 
#define cTooCloseRange         95 
| cHuntDistance is the maximum distance away that the script will select a new target. 
#define cHuntDistance        5000 
#define petRange             50
| spell names
#define selfhpbuff        "Shield of Maelin 
#define SelfShieldSpell      "Force Shield" 
#define PetBuffSpell      "Rune of Death" 
#define PetHealSpell      "Touch of Death" 

| special events to respond to 
#event PetBuffDown   "Your pet's Rune of Death spell has worn off" 
#event Fizzle      "Your spell fizzles!" 
#event SelfShieldSpell  "The Shield Fades Away"
#event selfhpbuff     "Your sheilding fades"
| MAIN ========================================================= 

Sub Main 
   | clear out all variables and set up new ones 
   /zapvars 
   /call DeclareGlobals 

   | clear target, et al 
   /press esc 
   /press esc 
   /press esc 
   /press shift 
   /press alt 
   /press ctrl 

   | never confirm looting nodrop items 
   /lootn never 

   | macro title 
   /echo Starting NecroFarm v0.4.0a - by Scrime 
   /if DEBUG /echo Debugging messages WILL be shown. 
   /echo Attack range is cAtkRange. 
   /echo AntiKS range is cAntiKSRadius. 
   /echo TooClose range is cTooCloseRange. 
   /echo Hunt range is cHuntDistance. 
   /echo PetRange is petrange.

   | set up our hunting array 
   

   /call AddToMobList "shadow"

          
   | set up the loot array 
   /call AddToLootList "swirling" 
       
   | set up the dont loot array 
   /call AddToDontLootList "burned out lightstone" 

   |  Setup Med Location 
   /declare MedXLoc local 
   /varset  MedXLoc $char(x) 
   /declare MedYLoc local 
   /varset  MedYLoc $char(y) 
    
:StartHunting 
   /doevents 
    
   /call CastSpells 

| Check mana if under 20% head off to med location 
   /if n $char(mana,pct)<20 /call MedTime 
    
   /if n @HaveTarget==0 /call FindAggroTarget 
   /if n @HaveTarget==0 /call MoveToTarget 
   /if n @HaveTarget==1 /call KillTarget 
   /if n @HaveTarget==1 /call LootTarget 
      
   /if n @BagsFull==1 /goto :EndMacro 
   /goto :StartHunting 
    
:EndMacro 
   /if n @BagsFull==1 /echo NecroFarm ended: Bags are full, go sell! 
/return 

| SUBS ========================================================= 

Sub DeclareGlobals 
   /declare CurrTarget global 
   /declare CurrMana global 
   /declare LastPosX global 
   /declare LastPosY global 
   /declare OldTarget global 
    
   /declare PetHasteStatus global 
    
   /declare MobArraySize global 
   /declare LootArraySize global 
   /declare MobArrayIndex global 
   /declare LootArrayIndex global 
   /declare ClosestMobID global 
   /declare ClosestMobDist global 
   /declare HaveTarget global 
   /declare ObstCount global 
   /declare DontLootArraySize global 
   /declare InvalidTargetID global 
    
   /declare LootSlot global 
   /declare BagsFull global 
   /declare FizzleFlag global 
    
   | array number defines, dont change 
   /declare MobArray array 
   /declare LootArray array 
   /declare DontLootArray array 
/return 

Sub AddToMobList 
   /if "@Param0"!="" { 
      /varadd MobArraySize 1 
      /varset MobArray(@MobArraySize) "@Param0" 
      /if DEBUG /echo Added @Param0 to the MobArray at position $int(@MobArraySize). 
   } 
/return 

Sub AddToLootList 
   /if "@Param0"!="" { 
      /varadd LootArraySize 1 
      /varset LootArray(@LootArraySize) "@Param0" 
      /if DEBUG /echo Added @Param0 to the LootArray at position $int(@LootArraySize). 
   } 
/return 

Sub AddToDontLootList 
   /if "@Param0"!="" { 
      /varadd DontLootArraySize 1 
      /varset DontLootArray(@DontLootArraySize) "@Param0" 
      /if DEBUG /echo Added @Param0 to the DontLootArray at position $int(@DontLootArraySize). 
   } 
/return 

| ============================================================== 

| FindAggroTarget 
| this function targets the closest mob that is not our pet and looks to see if it has us as its 
| target.  If we find a target here, then we put our pet on it and skip normally finding 
| a target. 
Sub FindAggroTarget 
   /if DEBUG /echo Entering FindAggroTarget... 
   | clear our current target 
   /press esc 

   | target the closest mob that is not our pet 
   /target npc notid $char(pet) 

   | if we have a target, then we need to see if it has a target 
   /if $target()=="TRUE" { 
      /if DEBUG /echo Checking closest target ($target(name), id:$target(id)) for aggro. 
      /varset ClosestMobID $target(id) 
      /assist 
      /delay 5 
      
      | if the closest mob's target is us, then select it as our target to kill. 
      /if n $target(id)==$char(id) { 
         /target id @ClosestMobID 
         /if DEBUG /echo $target(name) ($target(id)) is aggro'd on us, selecting as next target to kill. 
         /varset HaveTarget 1 
         /varset ClosestMobID $target(id) 
      } 
   } 
   /if DEBUG /echo Leaving FindAggroTarget... 
/return 

| ============================================================== 

Sub FindTarget 
   /if DEBUG /echo Entering FindTarget... 

   | make sure we have nothing targeted 
   /press esc 
    
   | routine to find the closest, non-engaged mob from our list 
   | returns nothing, but ClosestMobID will be set to the mob to engage. Keeps looking until it finds a target. 
:StartFindTarget 
    
   | reset the distance and ID of closest mob 
   /varset ClosestMobDist cHuntDistance    
   /varset ClosestMobID 0 
   /varset HaveTarget 0 
    
   | go thru the list of mobs we want to hunt and find the closest one that isn't being engaged. 
   /for MobArrayIndex 1 to @MobArraySize 
      /target npc nopcnear cAntiKSRadius notid InvalidTargetID @MobArray(@MobArrayIndex) 
      /if DEBUG { 
         /if $target()=="TRUE" { 
            /echo Looking for @Mobarray(@MobArrayIndex), found $target(name,clean) (id: $target(id)), Distance: $target(distance)          
         } 
      } 
      
      | check to make sure we targeted something 
      /if $target()=="FALSE" /goto :SkipMob 
      
      | if the target is not full life, someone else is probably fighting it, skip it 
      /if n $target(hp,pct)!=100 { 
         /if DEBUG /echo Target is not full life, skipping. 
         /varset InvalidTargetID $target(id) 
         /goto :SkipMob 
      } 
      
      | see if this mob is closer than the last mob we checked 
      /if n $target(distance)<@ClosestMobDist { 
         /if DEBUG { 
            /echo $target(name) is closer than our former target, switching. 
         } 
         /varset ClosestMobID $target(id) 
         /varset ClosestMobDist $target(distance) 
         /varset InvalidTargetID 0 
         /varset HaveTarget 1 
      } 

:SkipMob 
   /next MobArrayIndex 
    
   | if we didn't find a target, start over    
   /if n @HaveTarget!=1 /goto :StartFindTarget 
    
   | re-target whichever mob was closest 
   /target id @ClosestMobID 
    
:EndFindTarget 
   /if DEBUG /echo Leaving FindTarget... 
/return 

| ============================================================== 

Sub MoveToTarget 

   /if DEBUG /echo Entering MoveToTarget... 
   | moves us to the currently target, stops once we are within our cAtkRange 
    
:KeepMoving 
   | constantly look for a closer target 
   /call FindTarget 
   /call CheckForObst 

   | check to make sure our target is still alive 
   /if $target()=="FALSE" { 
      /if DEBUG /echo Our target died before we got to it, finding a new one. 
      /sendkey up up 
      /varset HaveTarget 0 
      /goto :EndMoveToTarget 
   }    
    
   | check to make sure our target is still full life, if not someone is probably fighting it 
   /if n $target(hp,pct)!=100 { 
      /if DEBUG /echo Our target started losing hp before we got to it, finding a new one. 
      /sendkey up up 
      /varset InvalidTargetID $target(id) 
      /varset HaveTarget 0 
      /goto :EndMoveToTarget 
   } 
    
   /face loc $target(y), $target(x) 
   /sendkey down up 
    
   | check to see if we are close enough yet 
   /if n $target(distance)<=cAtkRange { 
      /if DEBUG /echo In range of target, stop moving. 
      /sendkey up up 
      /goto :EndMoveToTarget 
   } 
    
   /goto :KeepMoving 
    
:EndMoveToTarget 
   /if DEBUG /echo Leaving MoveToTarget... 
/return 

| ============================================================== 

Sub KillTarget 
   /if DEBUG /echo Entering KillTarget... 
    
   | check to make sure our target is still alive 
   /if $target()=="FALSE" { 
      /if DEBUG /echo Our target died before we attacked it, finding a new one. 
      /varset InvalidTargetID 0 
      /varset HaveTarget 0 
      /goto :EndKillTarget 
   }    
    
   | check to make sure our target is still full life, if not someone is probably fighting it 
   /if n $target(hp,pct)!=100 { 
      /if DEBUG /echo Our target started losing hp before we attacked it, finding a new one. 
      /varset InvalidTargetID $target(id) 
      /varset HaveTarget 0 
      /goto :EndKillTarget 
   } 
    
   | make sure our target doesnt have a target, if it does then it's attacking someone, skip it 
   /assist 
   /delay 5 
   /if DEBUG /echo Our target's ID=@ClosestMobID, assisted target's ID=$target(id) 
    
   | check the assisted target's id, then check its name.  if the name contains "corpse", then 
   | our original target should be considered valid. 
   /if n $target(id)!=@ClosestMobID /if n $instr(corpse,$target(name))==-1 { 
      /if DEBUG /echo Our target had a living target, it must've been fighting someone, skip it. 
      /varset InvalidTargetID $target(id) 
      /varset HaveTarget 0 
      /goto :EndKillTarget 
   } 
    
   | send our pet in 
   /pet attack 

   | wait until mob is dead, if it starts to flee, follow it 
:MainCombatLoop 
   /call CastSpells 
:FollowMob 
   | check to see if the mob is getting away from us, if so follow 
   /if n $target(distance)>cAtkRange { 
      /if DEBUG /echo Target moved away from us, following. 
      /face  
      /sendkey down up 
   } else { 
      /face 
      /sendkey up up 
   } 
    
   | check to see if the mob is getting too close to us, if so back off 
   /if n $target(distance)<cTooCloseRange { 
      /if DEBUG /echo Target getting too close to us, backing away. 
      /face 
      /sendkey down down 
   } else { 
      /face 
      /sendkey up down 
   } 
    
   | if we lose our target while attacking it, then the mob died. 
   /if $target()=="FALSE" /goto :EndKillTarget 
   /goto :MainCombatLoop 

:EndKillTarget 
   | make sure our pet follows us 
   /pet follow 
   | make sure we stop moving 
   /sendkey up up 
   /sendkey up down 
    
   /if DEBUG /echo Leaving KillTarget... 
/return 

| ============================================================== 

Sub LootTarget 
:StartLootTarget 
   /if DEBUG /echo Entering LootTarget... 
    
   | target the corpse of the mob we just killed 
   /target id @ClosestMobID 
    
   | move up to it 
   /face 
:CheckCorpseDistance 
   /call CheckForObst 
   /if n $target(distance)>15 { 
      /face 
      /sendkey down up 
      /goto :CheckCorpseDistance 
   } else { 
      /sendkey up up 
   } 

   | open the loot window 
   /loot 
   /delay 2s 
    
   | check each slot (0-7) to see if its something we want to keep 
   /for LootSlot 0 to 7 
      /click left corpse @LootSlot 
      /delay 1s 

      | if there is nothing on the cursor, then we are out of loots, stop the loop 
      /if "$cursor()"=="NULL" /goto :EndLootTarget 
      
      /if DEBUG /echo Checking loot slot #@LootSlot: $cursor(name) 

      | check whats on our cursor against the list of things we DONT want to keep 
      /for LootArrayIndex 1 to @DontLootArraySize 
         /if "$cursor(name)"=="@DontLootArray(@LootArrayIndex)" { 
            /if DEBUG /echo $cursor(name) matches @DontLootArray(@LootArrayIndex), destroying. 
               /click left destroy 
               /delay 1s 
             /goto :NextLoot 
         } 
      /next LootArrayIndex 

      | check whats on our cursor against the list of things we want to keep 
      /for LootArrayIndex 1 to @LootArraySize 
         /if "$cursor(name)"~~"@LootArray(@LootArrayIndex)" { 
            /if DEBUG /echo $cursor(name) matches @LootArray(@LootArrayIndex), keeping. 
               /click left auto 
               /delay 1s 
             /goto :NextLoot 
         } 
      /next LootArrayIndex 
      
      | if we make it to here, it means that the loot didnt match anything in our list 
      | so, we destroy the object. 
      /if DEBUG /echo $cursor(name) doesn't match anything in our list, destroying. 
      /click left destroy 
      /delay 1s 
      
:NextLoot 
   /next LootSlot 

:EndLootTarget 
   /press esc 
   /varset HaveTarget 0 
    
   | if our bags are full, its time to stop hunting and go sell.  For now, end the macro. 
   | /if n $freeinv(space)==0 /varset BagsFull 1 
   | /if DEBUG /echo Inventory space remaining: $freeinv(space) slots. 
    
   /if DEBUG /echo Leaving LootTarget... 
/return 

|  =============================================================
Sub EvadeDeath 
   /echo $char(hp,pct)% health is too low: Lifetapping. 
   :evade 
   /target npc radius 300 
   /delay 1s 
   /cast "Touch of Mujaki" 
   /delay 4s 
   /press esc 
   /if n $char(hp,pct)<=70 { 
      /echo $char(hp,pct)% health is still too low.  Lifetapping again.. 
      /goto :evade 
   } else { 
      /stand 
      /echo $char(hp,pct)% health is satisfactory.  Continuing the hunt! 
   } 
/return 


| ============================================================== 

Sub CastSpells 
   /if DEBUG /echo Entering CastSpells... 
:StartSpells 

   | see if we have mana to spare 
   /if n $char(mana,pct)<20 /goto :SkipSpells 
    
   | decide which spell to cast 
    /if   n $char(buff,"SelfShieldSpell")==0 { 
       /if DEBUG /echo Trying to cast "SelfShieldSpell". 
       /call NoFizzleCast "SelfShieldSpell" 
       /if DEBUG /echo Delay time is: $int($calc($spell("SelfShieldSpell",casttime)*10+5)) 
       /delay $int($calc($spell("SelfShieldSpell",casttime)*10+5)) 
      /goto :StartSpells 
   } 
    
   | check to see if we have a pet up 
   /if n $char(pet)!=0 { 

      | check to see if we need to heal our pet. 
      /if n $spawn($char(pet),hp,pct)<75 { 
         /if DEBUG /echo Trying to cast "PetHealSpell".      
         /target id $char(pet) 
         /call NoFizzleCast "PetHealSpell" 
         /if DEBUG /echo Delay time is: $int($calc($spell("PetHealSpell",casttime)*10+5)) 
         /delay $int($calc($spell("PetHealSpell",casttime)*10+5)) 
         /goto :StartSpells 
      } 
      
      | check to see if we need to cast shield. 
      /if n $char($buff,"selfhpbuff")==0 { 
         /if DEBUG /echo Trying to cast "selfhpbuff".      
         /call NoFizzleCast "selfhpbuff" 
         /if DEBUG /echo Delay time is: $int($calc($spell("selfhpbuff",casttime)*10+5)) 
         /delay $int($calc($spell("selfhpbuff",casttime)*10+5)) 
         /goto :StartSpells 
      }   

      | check to see if we need to buff our pet 
      /if n @PetHasteStatus==0 { 
         /if DEBUG /echo Trying to cast "PetBuffSpell". 
         /target id $char(pet) 
         /call NoFizzleCast "PetBuffSpell" 
         /if DEBUG /echo Delay time is: $int($calc($spell("PetBuffSpell",casttime)*10+5)) 
         /delay $int($calc($spell("PetBuffSpell",casttime)*10+5)) 
         /varset PetHasteStatus 1 
         /goto :StartSpells 
      } 
   } 
:SkipSpells    
   /target id @ClosestMobID 
   /if DEBUG /echo Leaving CastSpells... 
/return 

| ============================================================== 

Sub NoFizzleCast 
   | make sure we dont get passed a null spell name 
   /if "@Param0"!="" { 
:NoFizzleCastStart 
      /varset FizzleFlag 0 
      | check to make sure we have mana to cast this spell 
      /if n $char(mana,cur)<$spell("@Param0",mana) /goto :NoFizzleCastEnd 
      
      /cast "@Param0" 
      /doevents Fizzle 
      
      | if we fizzled, try to cast again 
      /if n @FizzleFlag==1 /goto :NoFizzleCastStart 
   } 
:NoFizzleCastEnd 
/return 

| ============================================================== 

Sub CheckForObst 
   /if n $char(x)==@LastPosX /if n $char(y)==@LastPosY { 
      /varadd ObstCount 1 
   } else { 
      /varset ObstCount 0 
   } 
    
   /varset LastPosX $char(x) 
   /varset LastPosY $char(y) 
    
   /if n @ObstCount>3 { 
      /call GoAroundObst 
   } 
/return 

| ============================================================== 

Sub GoAroundObst 
   /if DEBUG /echo Entering GoAroundObst... 
   | back up some 
   /sendkey up up 
   /sendkey down down 
   /delay 1s 
   /sendkey up down 
    
   | go left or right a bit, randomly 
   /if n $rand(2)==1 { 
      /sendkey down left 
      /delay 5 
      /sendkey up left 
   } else { 
      /sendkey down right 
      /delay 5 
      /sendkey up right 
   } 
    
   | move forward a bit 
   /sendkey down up 
   /delay 1s 
   /sendkey up up 
    
   /if DEBUG /echo Leaving GoAroundObst...    
/return 

| ============================================================== 
  Sub Medtime 

      
   :MoveToMedSite 
      /call CheckForObst 
      /face loc MedXLoc, MedYLoc 
      /sendkey down up 
    
   | check to see if we are close enough yet 
      /if n ($char(x)<> MedXLoc) and  n ($char(y)<> MedYLoc) then /goto :MoveToMedSite 
      /sendkey up up 
      /Sit 

    :MedLoop 
      /if n $char(mana,pct)<100 /goto :MedLoop 
      /Stand 

/return 

| EVENTS ======================================================= 

Sub Event_PetHasteDown 
   /varset PetHasteStatus 0 
/return 

Sub Event_Fizzle 
   /varset FizzleFlag 1 
/return
thank you for any help you choose to give me, it is much appreciated

Hilander

Highlander
a lesser mummy
a lesser mummy
Posts: 51
Joined: Sat Dec 20, 2003 1:26 pm

Post by Highlander » Thu Feb 12, 2004 1:42 pm

another problem: once the pet engages the mob, if i get an add, the pet will finish off the mob and i will go loot it, while my pet will always attack anything that hits me, so when i get up from loot and it searches for targets it disreguards the target my pet is killing due to the anti KS of the mob being below 100%hp i beleive. how can this be adjusted to include the target that is currently being killed by my pet due to roaming mobs argo?

Misc
decaying skeleton
decaying skeleton
Posts: 6
Joined: Wed Jan 21, 2004 12:05 pm

Post by Misc » Thu Feb 12, 2004 4:34 pm

Did you set it up for your spell set?

It is currently set up to cast
"Shield of Maelin" as your self hp buff
"Force Shield" as your self shield buff
"Rune of Death" as your pet buff spell
"Touch of Death" as your pet heal spell

If these are not the spells you have loaded, it will not cast them.

also

Code: Select all

#define selfhpbuff        "Shield of Maelin
should read

Code: Select all

#define selfhpbuff "Shield of Maelin[color=red]"[/color]

Highlander
a lesser mummy
a lesser mummy
Posts: 51
Joined: Sat Dec 20, 2003 1:26 pm

help please

Post by Highlander » Thu Feb 12, 2004 7:21 pm

ok that will help with that i hope, thank you for pointing that out, and yes those are the correct spells, and i do have them all loaded before starting the macro. thank you kindly.

any thoughts on the other problems?

Highlander
a lesser mummy
a lesser mummy
Posts: 51
Joined: Sat Dec 20, 2003 1:26 pm

Help please

Post by Highlander » Fri Feb 13, 2004 11:25 am

ok i put the " at the end of the shiels statement, the thing i find so confusing is this, when i start the macro it does cast my Force Shield, but tells me i dont have that spell memorized, when i clearly do, and so im at a loss. any help would be greatly appreciated


Highlander

MrSmallie
a hill giant
a hill giant
Posts: 167
Joined: Fri Oct 11, 2002 11:18 am

Post by MrSmallie » Fri Feb 13, 2004 12:38 pm

Change this line:

Code: Select all

#define DEBUG               0==1
to

Code: Select all

#define DEBUG               1==1
Run it again, and look at the messages it gives you. That will help you narrow down where the problem may be.
Me
[img]http://home.comcast.net/~mrsmallie/ches.JPG[/img]

Highlander
a lesser mummy
a lesser mummy
Posts: 51
Joined: Sat Dec 20, 2003 1:26 pm

help please

Post by Highlander » Fri Feb 13, 2004 2:14 pm

will do thank you

highlander

Highlander
a lesser mummy
a lesser mummy
Posts: 51
Joined: Sat Dec 20, 2003 1:26 pm

please help

Post by Highlander » Fri Feb 13, 2004 2:51 pm

ok after changing this

Code: Select all

#define selfhpbuff        "Shield of Maelin"
to this

Code: Select all

#define Selfhpbuff        "Shield of Maelin"
it now will cast that buff, it is still ignoring the pet buff/heal statements, with no error messages with debug on, i can only guess for some reason it does not see them as valid statements and ignores them, but thats only a guess. i still dont understand why.

Highlander

Misc
decaying skeleton
decaying skeleton
Posts: 6
Joined: Wed Jan 21, 2004 12:05 pm

Post by Misc » Fri Feb 13, 2004 3:09 pm

1. It seems to be skipping this section of code in Sub CastSpells...

Code: Select all

   /if n $char(pet)!=0 { 

      | check to see if we need to heal our pet. 
      /if n $spawn($char(pet),hp,pct)<75 { 
         /if DEBUG /echo Trying to cast "PetHealSpell".      
         /target id $char(pet) 
         /call NoFizzleCast "PetHealSpell" 
         /if DEBUG /echo Delay time is: $int($calc($spell("PetHealSpell",casttime)*10+5)) 
         /delay $int($calc($spell("PetHealSpell",casttime)*10+5)) 
         /goto :StartSpells 
      } 
      
      | check to see if we need to cast shield. 
      /if n $char($buff,"selfhpbuff")==0 { 
         /if DEBUG /echo Trying to cast "selfhpbuff".      
         /call NoFizzleCast "selfhpbuff" 
         /if DEBUG /echo Delay time is: $int($calc($spell("selfhpbuff",casttime)*10+5)) 
         /delay $int($calc($spell("selfhpbuff",casttime)*10+5)) 
         /goto :StartSpells 
      }    

      | check to see if we need to buff our pet 
      /if n @PetHasteStatus==0 { 
         /if DEBUG /echo Trying to cast "PetBuffSpell". 
         /target id $char(pet) 
         /call NoFizzleCast "PetBuffSpell" 
         /if DEBUG /echo Delay time is: $int($calc($spell("PetBuffSpell",casttime)*10+5)) 
         /delay $int($calc($spell("PetBuffSpell",casttime)*10+5)) 
         /varset PetHasteStatus 1 
         /goto :StartSpells 
      } 
   } 
I am not sure why. But try this anyway...

Code: Select all

   [color=red]/if $char(pet)!=0 { [/color]

      | check to see if we need to heal our pet. 
      /if n $spawn($char(pet),hp,pct)<75 { 
         /if DEBUG /echo Trying to cast "PetHealSpell".      
         /target id $char(pet) 
         /call NoFizzleCast "PetHealSpell" 
         /if DEBUG /echo Delay time is: $int($calc($spell("PetHealSpell",casttime)*10+5)) 
         /delay $int($calc($spell("PetHealSpell",casttime)*10+5)) 
         /goto :StartSpells 
      } 
      
      | check to see if we need to cast shield. 
      /if n $char($buff,"selfhpbuff")==0 { 
         /if DEBUG /echo Trying to cast "selfhpbuff".      
         /call NoFizzleCast "selfhpbuff" 
         /if DEBUG /echo Delay time is: $int($calc($spell("selfhpbuff",casttime)*10+5)) 
         /delay $int($calc($spell("selfhpbuff",casttime)*10+5)) 
         /goto :StartSpells 
      }    

      | check to see if we need to buff our pet 
      /if n @PetHasteStatus==0 { 
         /if DEBUG /echo Trying to cast "PetBuffSpell". 
         /target id $char(pet) 
         /call NoFizzleCast "PetBuffSpell" 
         /if DEBUG /echo Delay time is: $int($calc($spell("PetBuffSpell",casttime)*10+5)) 
         /delay $int($calc($spell("PetBuffSpell",casttime)*10+5)) 
         /varset PetHasteStatus 1 
         /goto :StartSpells 
      } 
   } 



2. see 1 above.

3. this does not work because you did not reference the sub EvadeDeath anywhere.

Highlander
a lesser mummy
a lesser mummy
Posts: 51
Joined: Sat Dec 20, 2003 1:26 pm

Please Help

Post by Highlander » Fri Feb 13, 2004 3:50 pm

tried the change, still bypasses the pet buff/heal statements.

no errors reported, simply leaves CastSpells after buffing me :(

MrSmallie
a hill giant
a hill giant
Posts: 167
Joined: Fri Oct 11, 2002 11:18 am

Post by MrSmallie » Fri Feb 13, 2004 4:59 pm

With your pet there, type in /echo $char(pet)
If it returns a 0, something is screwy.
Me
[img]http://home.comcast.net/~mrsmallie/ches.JPG[/img]

Highlander
a lesser mummy
a lesser mummy
Posts: 51
Joined: Sat Dec 20, 2003 1:26 pm

please help

Post by Highlander » Fri Feb 13, 2004 5:28 pm

it did return a 0 with a pet up


Highlander

MrSmallie
a hill giant
a hill giant
Posts: 167
Joined: Fri Oct 11, 2002 11:18 am

Post by MrSmallie » Fri Feb 13, 2004 5:59 pm

I never use a pet, so not sure how it's supposed to work. You can get rid of the IF statement to make it work, but it will try do it even if your pet is dead...
But if /echo $char(pet) results in "0", then MQ thinks you don't have a pet...
Me
[img]http://home.comcast.net/~mrsmallie/ches.JPG[/img]

Highlander
a lesser mummy
a lesser mummy
Posts: 51
Joined: Sat Dec 20, 2003 1:26 pm

Post by Highlander » Fri Feb 13, 2004 6:27 pm

im wondering why mq would think i dont have a pet, i have went to default UI rebooted and opened eq without eqw so its all raw eq and still when i echo it comes back 0 /shrug

Gumby
a ghoul
a ghoul
Posts: 99
Joined: Sat Jan 24, 2004 5:27 pm

Post by Gumby » Sat Feb 14, 2004 11:24 am

Highlander wrote:im wondering why mq would think i dont have a pet, i have went to default UI rebooted and opened eq without eqw so its all raw eq and still when i echo it comes back 0 /shrug
It broke in the current release. There's already a thread in the bug reports forum.

G