ranger macro ?

o0L33T0o

MASTER OF THE PUPPETS
Joined
Jul 30, 2008
Messages
99
Reaction score
1
Points
8
hi

I have a gimp ranger trying to get him some exp i would like to get a macro going to make him auto assist the main tank and use range attack im aware of /mq2 melee but for some reason i cant seem to get this to work

any one able to hook me up with a macro even one that uses mq2 melee to see if i can get this going just would be easyer to 2 box ranger have him stand back doing bow dammage whist im tanking with merc

thanks

also i have tried the /throwit command fires my bow once i have endless quiver just need macro to go range attack all the time and assist as well ;)
 
Last edited:
This can easilly be done with a hot key. Either on the Ranger, or another character and control the ranger through EQBC.

Make a hot key that says:
Code:
/assist TankName
/autofire

or through EQBC
Code:
/bct ToonName //assist TankName
/bct ToonName //autofire


If you need a Macro to do this for you, any one of the many assist MAcro's out there can do this. Just have to change it to not /stick, or /attack, and make it /face and /autofire

This macro is my basic melee assist macro.
Code:
|Simple Assist Macro v2.0 (ARCHERY)
|Ripped from Various Macro's
|By HardOne
|

#event ImDead          "#*#You have been slain by#*#"
#event ImDead          "Returning to home point, please wait..."
#event ImDead          "#*#Returning to Bind Location#*#"

Sub Main
	|SYSTEM VARS - DO NOT MODIFY.
	/declare maintank 		 string outer	${Param0}
	/declare attackat 			int outer 	${Param1}
	/declare attackid 			int outer
	/declare RT_MyXLOC          int outer	${Me.X} 
	/declare RT_MyyLOC          int outer	${Me.Y}
	/declare MyHeading         	int outer 	${Me.Heading.DegreesCCW}
	/declare Camp_Zone 			int outer	${Zone.ID}
		
	/if (!${Param0.Length} && !${Param1.Length}) {
		/echo You must start the macro including the main assist's name and the percent to attack after.
		/echo i.e.:
		/echo /mac assist Ubertank 90
		/end
	}
	
	/echo AFK AssistTank Running. Assisting ${Param0} at ${Param1}%
	/echo Camp Set to: ${Me.X} ${Me.Y}, Facing: ${Me.Heading.DegreesCCW} in ${Zone}
	/echo Ensuring MQ2Melee is loaded
	/plugin mq2melee
	/delay 2s
	/squelch /target clear
	/squelch /assist off


	:mainloop
		/if (!${SpawnCount[${maintank}]}) {
			/echo Maintank Dead/Missing. Delaying 30 seconds and restarting.
			/delay 30s
			/goto :mainloop
		}
		/assist ${maintank}
		/delay 5
		/if (${Target.ID} && ${Target.Type.Equal[NPC]} && ${Target.PctHPs}<${attackat}) /call Attacking
		/doevents
	/goto :mainloop
	/end

Sub Attacking
	/echo Attacking ${Target.CleanName}!
	/varset attackid ${Target.ID}

	:attackloop
		/if (!${Target.ID}) /goto :endcombat
		/if (${Target.ID}!=${attackid}) /goto :newtarget
[COLOR="Red"][B]		/face
/if (!${Me.Combat}) /autofire on[/B][/COLOR]
		/doevents
	/goto :attackloop


	:newtarget
	/echo Somehow got new target. Re-assisting maintank.
	/squelch /target clear
	:endcombat
	/varset attackid 0
	/delay 2s
	/if (${Camp_Zone} == ${Zone.ID}) /call MoveToLoc ${RT_MyyLOC} ${RT_MyXLOC}
	/face fast heading ${MyHeading}
/return

Sub MoveToLoc(MoveToY, MoveToX) 
   /declare running int local 
   /declare distanceNow float local 
   /declare distanceBefore float local 
   /declare distanceModifier int local 
   /declare distanceTimer timer 15 
   /varset running 0 
   /varset distanceBefore ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]} 
   /varset distanceModifier 1 
   /echo Moving to Location: ${MoveToY}, ${MoveToX}. 
   /echo Distance: ${distanceBefore} 
   :moveToLocation  
      /face fast nolook loc ${MoveToY},${MoveToX} 
      /if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}<10) { 
         /keypress forward 
         /return 
      } 
      /if (${distanceTimer}==0) { 
         /if (${Me.Sneaking}) { 
            /varset distanceModifier 2 
         } else { 
            /varset distanceModifier 1 
         } 
         /varset distanceNow ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]} 
         /if (${Math.Calc[${distanceBefore}-${distanceNow}]}<${Math.Calc[10/${distanceModifier}]}) { 
         /call HitObstacle 
         } 
         /varset distanceBefore ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]} 
         /varset distanceTimer 15 
      } 
      /if (${running}==0) { 
         /keypress forward 
            /if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}>10) { 
               /varset running 1 
               /keypress forward hold 
            } 
      } else { 
         /if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}<11) { 
            /varset running 0 
            /keypress forward 
         } 
      } 
      /goto :moveToLocation 
/return

Sub HitObstacle 
   /echo Obstacle hit, moving around it... 
   /keypress forward 
   /keypress back hold 
   /delay 3 
   /keypress back 
   /if (${Math.Rand[2]}) { 
      /keypress strafe_right hold 
   } else { 
      /keypress strafe_left hold 
   } 
   /delay 5 
   /keypress strafe_right 
   /keypress strafe_left 
   /keypress forward hold 
/return

Sub Event_ImDead
	/doevents
	/if (${Stick.Status.Equal[ON]}) /squelch /stick off
	/keypress forward
	/keypress back
	/keypress Left
	/keypress Right
	/delay 2s
	/echo I've been Killed! Going into Sleep Mode...
	/beep
	/beep
	    :DeathSleep
			/doevents
			/delay 5s
			/if (${Me.State.Equal[HOVER]} || ${Zone.ID} != ${Camp_Zone}) /goto :DeathSleep
/return

I modified the attacking portion here to /face the mob, and changed /attack on to /autofire on. This is untested, but it should work.
 
You are the man thank you so much for this will give it a try tonight


This can easilly be done with a hot key. Either on the Ranger, or another character and control the ranger through EQBC.

Make a hot key that says:
Code:
/assist TankName
/autofire

or through EQBC
Code:
/bct ToonName //assist TankName
/bct ToonName //autofire


If you need a Macro to do this for you, any one of the many assist MAcro's out there can do this. Just have to change it to not /stick, or /attack, and make it /face and /autofire

This macro is my basic melee assist macro.
Code:
|Simple Assist Macro v2.0 (ARCHERY)
|Ripped from Various Macro's
|By HardOne
|

#event ImDead          "#*#You have been slain by#*#"
#event ImDead          "Returning to home point, please wait..."
#event ImDead          "#*#Returning to Bind Location#*#"

Sub Main
	|SYSTEM VARS - DO NOT MODIFY.
	/declare maintank 		 string outer	${Param0}
	/declare attackat 			int outer 	${Param1}
	/declare attackid 			int outer
	/declare RT_MyXLOC          int outer	${Me.X} 
	/declare RT_MyyLOC          int outer	${Me.Y}
	/declare MyHeading         	int outer 	${Me.Heading.DegreesCCW}
	/declare Camp_Zone 			int outer	${Zone.ID}
		
	/if (!${Param0.Length} && !${Param1.Length}) {
		/echo You must start the macro including the main assist's name and the percent to attack after.
		/echo i.e.:
		/echo /mac assist Ubertank 90
		/end
	}
	
	/echo AFK AssistTank Running. Assisting ${Param0} at ${Param1}%
	/echo Camp Set to: ${Me.X} ${Me.Y}, Facing: ${Me.Heading.DegreesCCW} in ${Zone}
	/echo Ensuring MQ2Melee is loaded
	/plugin mq2melee
	/delay 2s
	/squelch /target clear
	/squelch /assist off


	:mainloop
		/if (!${SpawnCount[${maintank}]}) {
			/echo Maintank Dead/Missing. Delaying 30 seconds and restarting.
			/delay 30s
			/goto :mainloop
		}
		/assist ${maintank}
		/delay 5
		/if (${Target.ID} && ${Target.Type.Equal[NPC]} && ${Target.PctHPs}<${attackat}) /call Attacking
		/doevents
	/goto :mainloop
	/end

Sub Attacking
	/echo Attacking ${Target.CleanName}!
	/varset attackid ${Target.ID}

	:attackloop
		/if (!${Target.ID}) /goto :endcombat
		/if (${Target.ID}!=${attackid}) /goto :newtarget
[COLOR="Red"][B]		/face
/if (!${Me.Combat}) /autofire on[/B][/COLOR]
		/doevents
	/goto :attackloop


	:newtarget
	/echo Somehow got new target. Re-assisting maintank.
	/squelch /target clear
	:endcombat
	/varset attackid 0
	/delay 2s
	/if (${Camp_Zone} == ${Zone.ID}) /call MoveToLoc ${RT_MyyLOC} ${RT_MyXLOC}
	/face fast heading ${MyHeading}
/return

Sub MoveToLoc(MoveToY, MoveToX) 
   /declare running int local 
   /declare distanceNow float local 
   /declare distanceBefore float local 
   /declare distanceModifier int local 
   /declare distanceTimer timer 15 
   /varset running 0 
   /varset distanceBefore ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]} 
   /varset distanceModifier 1 
   /echo Moving to Location: ${MoveToY}, ${MoveToX}. 
   /echo Distance: ${distanceBefore} 
   :moveToLocation  
      /face fast nolook loc ${MoveToY},${MoveToX} 
      /if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}<10) { 
         /keypress forward 
         /return 
      } 
      /if (${distanceTimer}==0) { 
         /if (${Me.Sneaking}) { 
            /varset distanceModifier 2 
         } else { 
            /varset distanceModifier 1 
         } 
         /varset distanceNow ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]} 
         /if (${Math.Calc[${distanceBefore}-${distanceNow}]}<${Math.Calc[10/${distanceModifier}]}) { 
         /call HitObstacle 
         } 
         /varset distanceBefore ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]} 
         /varset distanceTimer 15 
      } 
      /if (${running}==0) { 
         /keypress forward 
            /if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}>10) { 
               /varset running 1 
               /keypress forward hold 
            } 
      } else { 
         /if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}<11) { 
            /varset running 0 
            /keypress forward 
         } 
      } 
      /goto :moveToLocation 
/return

Sub HitObstacle 
   /echo Obstacle hit, moving around it... 
   /keypress forward 
   /keypress back hold 
   /delay 3 
   /keypress back 
   /if (${Math.Rand[2]}) { 
      /keypress strafe_right hold 
   } else { 
      /keypress strafe_left hold 
   } 
   /delay 5 
   /keypress strafe_right 
   /keypress strafe_left 
   /keypress forward hold 
/return

Sub Event_ImDead
	/doevents
	/if (${Stick.Status.Equal[ON]}) /squelch /stick off
	/keypress forward
	/keypress back
	/keypress Left
	/keypress Right
	/delay 2s
	/echo I've been Killed! Going into Sleep Mode...
	/beep
	/beep
	    :DeathSleep
			/doevents
			/delay 5s
			/if (${Me.State.Equal[HOVER]} || ${Zone.ID} != ${Camp_Zone}) /goto :DeathSleep
/return

I modified the attacking portion here to /face the mob, and changed /attack on to /autofire on. This is untested, but it should work.
 
Ok i know this an old thread but i cant seem to figure this out. when i run this mac it spams autofire on and off. any one know a way around this?