What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal

Improved Capabilities Possible?

ounvme

New Member
Joined
Dec 2, 2011
Messages
38
Reaction score
1
I am probable going to get some flack for this one but oh well. HB is currently very impressive with what it has done and possibly could do. I am a long time macroer/afker back from the times of everquest(macroquest - mq2). Since this program is offset based it seems that the features could be similar to those of macroquest which with certin plugins was limitless in features.

To get an idea of the features and capabilities have a look here - http://www.macroquest2.com/wiki/index.php/Main_Page

The reason I bring this up is I created this macro that would AFK target kill and loot in a specified area with a high level of control. I am wondering if similar capabilities can be incorporated into HB with simplified macros yet a higher level of features and control?

Code:
#include spell_routines.inc 

Sub Main 


/declare 	CampRadius      int	outer 100 
/declare   	PullDistance    int    	outer 100 
/declare  	MinPDistance    int    	outer 0 
/declare   	MaxZ            int    	outer 35 
/declare    	MinZ            int    	outer -35 
/declare  StuckXLoc       float  outer 0.0 
/declare  StuckYLoc       float  outer 0.0 
/declare  	Channel 	string 	outer /g 
/declare 	StartZone	int	outer ${Zone.ID}
/declare 	IniFile         string 	outer ${Me.Name}_pullbot.ini 
/declare  	HomeXLoc        int    	outer ${Me.X} 
/declare  	HomeYLoc        int    	outer ${Me.Y} 
/declare  	HomeZLoc        int    	outer ${Me.Z}
/declare  	Engaged                	outer FALSE 
/declare  	Tagged                 	outer FALSE 


/declare LeechTouchPct       string outer 20

/declare SKepic            string outer "Innoruuk's Dark Blessing" 
/declare SKepicGem         string outer item 
/declare SKepicPct         string outer 38 

/declare LifeTapSpell       string outer "Touch of Tharoff Rk. II" 
/declare LifeTapGem         string outer gem4 
/declare LifeTapPct         string outer 65 

/declare SnareSpell     string outer "Festering Darkness" 
/declare SnareGem       string outer gem8 

/declare PullSpell         string outer "Terror of Jelvalak" 
/declare PullGem           string outer gem7 

/declare AggroSpell        string outer "Terror of Jelvalak" 
/declare AggroGem          string outer gem7 

/declare AETaunt		string outer "Revile"
/declare AETauntGem		string outer gem2

/declare Debuff1           string outer "Challenge for Power Rk. II" 
/declare Debuff1Gem        string outer gem3 
/declare Debuff1IconName   string outer Challenge for Power Recourse Rk. II 


/declare Buff1             string outer "Mask of Lament" 
/declare Buff1Gem          string outer item 
/declare Buff1IconName     string outer Hateful Guard 

/declare Buff2             string outer "Stormeye Band" 
/declare Buff2Gem          string outer Item
/declare Buff2IconName     string outer Storm Guard

/declare Buff3             string outer "Corrupted Spectral Shoulderguards" 
/declare Buff3Gem          string outer item 
/declare Buff3IconName     string outer Prismatic Ward I

/declare Buff4             string outer "Arcaapi Ventail" 
/declare Buff4Gem          string outer item 
/declare Buff4IconName     string outer Form of Endurance IV

/declare Buff5             string outer "Drape of Korafax Rk. II" 
/declare Buff5Gem          string outer gem9 
/declare Buff5IconName     string outer Drape of Korafax Rk. II

/declare Buff6             string outer "Shroud of the Blightborn" 
/declare Buff6Gem          string outer gem9 
/declare Buff6IconName     string outer Shroud of the Blightborn 

/declare Buff7             string outer "Remorseless Demeanor Rk. II" 
/declare Buff7Gem          string outer gem9
/declare Buff7IconName     string outer Remorseless Demeanor Rk. II

/declare Buff8             string outer "Umbral Skin" 
/declare Buff8Gem          string outer gem1
/declare Buff8IconName     string outer Umbral Skin


/declare Buff9             string outer "Serrated Ear Spike" 
/declare Buff9Gem          string outer item
/declare Buff9IconName     string outer Might of the Giants



:Main_Loop 
/if (${Zone.ID} != ${StartZone}) /exit
/call PullMob 
/if (${Zone.ID} != ${StartZone}) /exit
/call KillTarget 
/if (${Zone.ID} != ${StartZone}) /exit
/call ReadyForNext 
/if (${Zone.ID} != ${StartZone}) /exit
/call ResetVars 
/goto :Main_Loop 

/return 







Sub PullMob 
/echo Pull Loop
/call ReadyForNext

:Pull_Loop 
  
/call GetTarget 
  
/if (${Target.ID} && ${Target.Distance} < ${PullDistance}) /call TagTarget 
 
  
/if (${Tagged} && ${Math.Distance[${HomeYLoc},${HomeXLoc}]} > 115) { 
/call ReturnHome 
/return 
} else /if (${Tagged}) /return 
   
/goto :Pull_Loop 
 
/return 

| GETS TARGET

Sub GetTarget 
/if (${Zone.ID} != ${StartZone}) /exit
/declare s   int local 
/declare i   int local 1 
/delay 1
/if (${Target.PctHPs} > 50 && ${Math.Distance[${HomeYLoc},${HomeXLoc}]} > 120) {
/echo Moving Back To Camp
/call ReturnHome 
}
/for i 1 to 80

	/varset s ${NearestSpawn[${i},npc radius ${CampRadius}].ID} 
    	|/echo Inifile value for ${Spawn[${s}].CleanName}: ${Ini[${IniFile},"Excludes.${Zone}","${Spawn[${s}].CleanName}"]} 
    
	/if (${Ini[${IniFile},"Excludes.${Zone}","${Spawn[${s}].CleanName}"].Equal[Exclude]}) { 
     	|/echo Ignoring ${Spawn[${s}].CleanName} because of ini file inclusion. 
      	/next i 
    	} 
    
	/if (${Spawn[${s}].Type.Equal["Corpse"]} || !${Spawn[${s}].LineOfSight} || ${Math.Distance[${Me.Z}:${Spawn[${s}].Z}]} >${MaxZ} || 	${Math.Distance[${Me.Z}:${Spawn[${s}].Z}]}<${MinZ}) { 
    | /echo Ignoring ${Spawn[${s}].CleanName} because LoS, Corpse or Z axis 
      	/next i 
    	} 
   
 	/if (${s} && ${Spawn[${s}].Distance} < ${CampRadius} && ${Spawn[${s}].LineOfSight} && !${Spawn[${s}].Type.Equal["Corpse"]}) { 
      	/echo Targeting ID ${s} 
/target clear      	
/delay 1 
      	/squelch /target id ${s} 
        /echo ${Target.Name} Has been aquired at distance ${Target.Distance} 
        
 	/return 
    	}
 
/next i 
/return 



Sub TagTarget 
/if (${Zone.ID} != ${StartZone}) /exit
/if (${Target.Distance} >= ${PullDistance}) { 
/echo Not Close enough, even though we're Supposed to be! 
/call ResetVars 
/return 
}

/face
 
/echo Tagging Mob
/call cast ${PullSpell} ${PullGem} 10s
/delay 5 ${Me.Casting.ID}
/varset Tagged TRUE 
|/squelch ${Channel} Incoming with [ %t ] 
/return 




Sub KillTarget 


/delay 1 

/if (!${Target.ID}) /return 
   
/face
/declare WaitTimer     timer  local 0 
/varset WaitTimer 15s
:WaitForMob 
/echo ${WaitTimer} TIMER
/if (${Target.Distance} > 30) { 
/if (!${WaitTimer}) /return
/echo Waiting For Target
/delay 5 
/goto :WaitForMob 
}
/echo IN COMBAT
/if (${Target.Distance} < 30) /stick 12
:Combat 
/if (${Zone.ID} != ${StartZone}) /exit


/if (!${Me.Combat} && ${Target.Distance} < ${Target.MaxRangeTo}) /attack on 

        
/if (${Target.ID}) /face 


| COMBAT AREA

    

/if (!${Me.Song[${Debuff1IconName}].ID}) /call cast ${Debuff1} ${Debuff1Gem} 


/if (${Me.PctHPs}<=${LeechTouchPct}) /alt activate 87 
/if (${Me.PctHPs}<=${LifeTapPct}) /call cast ${LifeTapSpell} ${LifeTapGem} 
|/if (${Me.PctHPs}<${SKepicPct}) /call cast ${SKepic} ${SKepicGem}      
/if (${Me.PctHPs}<78 && ${Me.Song[Remorselessness].ID}) /call cast ${LifeTapSpell} ${LifeTapGem} 
 
/if (${Target.PctHPs} > 40 && ${Math.Distance[${HomeYLoc},${HomeXLoc}]} > 115) {
/echo Moving Back To Camp
/call ReturnHome 
}



| Primitive Add Control
/if (${SpawnCount[npc radius 20 zradius 20]} >= 2 && ${Me.SpellReady[${AETaunt}]}) {
/echo ADDS IN AREA!!!!	

    	
    	 
  	/call cast ${AETaunt} ${AETauntGem}   
   
}
 
/if (${SpawnCount[npc radius 20 zradius 20]} >= 2 && !${Me.SpellReady[${AETaunt}]}) {
/echo ADDS IN AREA!!!!	

    	 
  	/if (${Me.AltAbilityReady[822]}) /alt activate 822     
   
}

/if (${Me.AltAbilityReady[825]}) /alt activate 825
    

/if (${Target.CleanName.Equal["a mechano steam warder"]} && ${Me.AltAbilityReady[6000]}) /alt activate 6000

/if (${Target.PctHPs} < 50 && ${Me.SpellReady[Festering Darkness]} && !${Target.Buff[Festering Darkness].ID}) /call cast "Festering Darkness" gem5 



 
     


/if (${Target.Distance} > 140) { 
/target clear 
/varset Engaged FALSE 
/return 
}
 

/if (!${Me.TargetOfTarget.Name.Equal[${Me}]} && ${Target.Distance} < 25 && ${Me.AbilityReady["Taunt"]}) { 
/doability "Taunt" 
/call cast ${AggroSpell} ${AggroGem} 
} 
     
/if (!${Target.ID} || ${Target.Type.Equal[Corpse]}) { 
/echo Target Clear  
/squelch /target clear 
/delay 3 
/attack off 
/delay 3 

/call CheckForAdd
/if (${Target.ID}) /goto :Combat 

/return 
}
 
/goto :Combat 

/return 







Sub ReturnHome 
/echo Too Far Away From Camp


/if (${Target.ID}) /face 

/return 



 

Sub MoveAround 
  

/echo MOVIN AROUND 
 /keypress forward 
  /keypress back hold 
  /delay 1s 
  /keypress back 
  /if (${Math.Rand[2]}) { 
     /keypress strafe_right hold 
  } else { 
     /keypress strafe_left hold 
  } 
  /delay 1s 
  /keypress strafe_right 
  /keypress strafe_left 
}

/call ReturnHome

/return 







Sub CheckForAdd 
/echo Checking For Adds
     /declare s int local 
     /declare i int local 
     /for i 1 to 3 
       /varset s ${NearestSpawn[${i},npc].ID} 
       /if (${Spawn[${s}].Type.Equal["Corpse"]} || !${Spawn[${s}].LineOfSight}) /next i 
       /if (${Spawn[${s}].Distance} <  80 && ${Spawn[${s}].LineOfSight}) { 
                /squelch /target id ${s} 
         /goto :Got_Add 
       } 
     /next i 
 
     /return 
     :Got_Add 
     /varset Engaged TRUE 
     /face nolook fast 
     /squelch /stick 10 moveback 
     /delay 1s 
     /Doability "Taunt" 
     /call cast ${AggroSpell} ${AggroGem} 
     /delay 1s 
 
   /return 







Sub ReadyForNext 
/echo Buffing
/call ReturnHome 

|/face heading ${Heading}


/if (!${Me.Buff[Prescience Rk. II].ID} && !${Me.Buff[Voice of Prescience Rk. II].ID} && !${Me.Buff[Dark Bargain Rk. II].ID}) {
/echo LICH
/call cast "Dark Bargain Rk. II" gem9 
/delay 3s 
}

/echo Start Buffs
 

	/if (!${Me.Buff[${Buff1IconName}].ID} && !${Me.Combat}) /call cast ${Buff1} ${Buff1Gem}
/delay 10 !${Me.Casting.ID}
      	/if (!${Me.Buff[${Buff2IconName}].ID} && !${Me.Combat}) /call cast ${Buff2} ${Buff2Gem}
/delay 10 !${Me.Casting.ID}
      	/if (!${Me.Buff[${Buff3IconName}].ID} && !${Me.Combat}) /call cast ${Buff3} ${Buff3Gem}
/delay 10 !${Me.Casting.ID}
      	/if (!${Me.Buff[${Buff4IconName}].ID} && !${Me.Combat}) /call cast ${Buff4} ${Buff4Gem}
/delay 10 !${Me.Casting.ID}
      	/if (!${Me.Buff[${Buff5IconName}].ID} && !${Me.Combat}) /call cast ${Buff5} ${Buff5Gem}
/delay 10 !${Me.Casting.ID}
      	/if (!${Me.Buff[${Buff6IconName}].ID} && !${Me.Combat}) /call cast ${Buff6} ${Buff6Gem} 
/delay 10 !${Me.Casting.ID}
      	/if (!${Me.Buff[${Buff7IconName}].ID} && !${Me.Combat}) /call cast ${Buff7} ${Buff7Gem} 
/delay 10 !${Me.Casting.ID}
      	/if (!${Me.Buff[${Buff8IconName}].ID} && !${Me.Combat}) /call cast ${Buff8} ${Buff8Gem} 
/delay 10 !${Me.Casting.ID}
      	/if (!${Me.Buff[${Buff8IconName}].ID} && !${Me.Combat}) /call cast ${Buff9} ${Buff9Gem} 

/echo END BUFFS

/delay 20s !${Me.Casting.ID}

/return 
    
   Sub ResetVars 
     
     /delay 1 
     /attack off 
     
     /squelch /target clear 
     /squelch /keypress esc 
     /varset   Engaged         FALSE 
 
     /varset Tagged      FALSE 
   
   /if (${Math.Distance[${HomeYLoc},${HomeXLoc}]} > 115) {
/echo Moving Back To Camp
/call ReturnHome 
}
/return
 
After further understanding of the program I find that most of this can be done with custom classes. I don't fully agree with this method but it really isn't up to me. Essentially the profiles are an #include that tell the CC where its going and what to target. It always seemed easier to me to have the basic class functions already included and allow the macro's do to all the work.

Profiles do have some pro's...They take the complexity out of macroing with the cost of limited functionality to most users.
None the less.....GREAT APPLICATION.....CHEERS!!!
 
Basic setup for HB.

BotBase - > The General task to do (farming herbs, farming mobs, doing battlegrounds)
Profile - > Where am I farming, where can I go, what should I target, what should I not target, where can I repair gear.
CustomClass - > How to fight when I enter combat, or I need to enter combat, or I need to recover health
Plugins - > Covers all the other shit the bot can do, but it doesn't do for easy of use.
 
Back
Top