• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Change the look. To dismiss this notice, click the X --->

Simple Ranger Mac Help (1 Viewer)

iridini

New member
Joined
May 22, 2005
RedCents
Im looking for a mac that only does a few things. I just want it to assist the MT and /autofire. As you guess this is for a ranger. I just need his bow dps but dont want to keep hitting hot keys to get him to attack the mob i am atacking. Would possible for him to auto folow me if i say follow in group and stop when i say stop. Im not sure but maybe assist me at 90 percent. Im not able to write macros so if someone could help me out I would Greatly appreciate it.
 
This is what I have so far it works great until the mob is dead at which point the macro starts freaking out and I havn't had enough time to really work out whats wrong/. So feel free to look at what event is screwing up I think it has something to do with the | --- Autofire bit section, something about the if else statement but I can't seem to find how to stop it.


Rich (BB code):
|_______________________________________________|
| Everdead's Ranger Macro of Killing            |
| Target mainassist and turn on macro will snare|
| auto bow and all that shit                    |
|_______________________________________________|

#chat group 
#chat tell 

#Event ImHit "#*#tries to hit you#*#"
#Event ImDead "You have been slain by#*#" 
#Event GrpInvite "#*#To join the group, click on the 'FOLLOW' option, 
or 'DISBAND' to cancel#*#" 


#include Spell_Routines.inc 

Sub Main
/declare SpellSnare outer "Snare"
/declare SpellJolt outer "Jolt"
/declare SpellSow outer "Spirit of Wolf"
/declare SpellAttack outer "Firefist"
/declare SpellAttack2 outer "Nature's Precision"
/declare SpellAccuracy outer "Hawk Eye"
/declare SpellColdDD outer "Icewind"
/declare SpellFireDD outer "Ignite"
/declare SpellMagicAE outer "Invoke Lightning"
/declare SpellHeal outer "Light Healing"
/declare SpellRoot outer "Grasping Roots"

| ############ Combat Variables 

/declare AssistAt int outer 98 
/declare CombatAt int outer 97 
/declare GotTarget outer FALSE
/declare Rootat int outer 40 
/declare RootMana int outer 40 

/declare SnareAt int outer 35
/declare SnareMana 10

/declare NukeAt int outer 90 
/declare NukeMana int outer 30 
/declare MinMana int outer 15 

/declare following int outer 0 
/declare follname string outer NULL 

/declare MobSnared outer FALSE
/declare MobRooted outer FALSE
/declare CombatOn outer FALSE
/declare Autofire outer FALSE

/varset MobSnared FALSE
/varset MobRooted FALSE
/varset CombatOn FALSE	
/varset Autofire FALSE
| ############ To Do List 

/declare DoSnare outer TRUE 
/declare DoRoot outer FALSE 
/declare DoNuke outer FALSE 
/declare DoHeal outer TRUE 
/declare Verbose outer TRUE 

/declare M_Assist string outer

|/call MemSpells 

| ############### Target a player as Main Assist 

/if (${Defined[Param0]}) { 
/varset M_Assist ${Param0} 
/echo Assist set to ${M_Assist} 
} else { 
/if (!${Target.ID} || ${Target.Type.NotEqual[PC]}) { 
/echo Your Do not have a main assist, make sure its a player character! 
/endmacro 
} 
/varset M_Assist ${Target.CleanName} 
/echo Assist set to ${M_Assist} 
} 

/assist off 

| ############### 
| ############### Main Loop Starts 
| ############### 
:Main_Loop 

|- Check for new events in chat etc etc... 
/doevents 

|- Do we move? 
:Hold_Main 
/if (${Me.Moving}) /goto :Hold_Main 

|- Check for mobs and do combat stuff 
/if (!${GotTarget}) {
/call GetTarget 
} else {
/if (${CombatOn}) {
/call Combat 
}
}

/goto :Main_Loop 
/return 

| ############### 
| ############### Main Loop Ends 
| ############### 

| ############### Mem Spells in Spell List 

Sub MemSpells 

/echo Memming spells. Hang on. 
/if ( !${Me.Gem[${SpellSnare}]} ) { 
/memspell 1 ${SpellSnare} 
/delay 25 
} 
/if ( !${Me.Gem[${SpellSow}]} ) { 
/memspell 2 ${SpellSow} 
/delay 20 
} 
/if ( !${Me.Gem[${SpellAttack}]} ) { 
/memspell 3 ${SpellAttack} 
/delay 20 
} 
/if ( !${Me.Gem[${SpellAttack2}]} ) { 
/memspell 4 ${SpellAttack2} 
/delay 20 
} 
/if ( !${Me.Gem[${SpellAccuracy}]} ) { 
/memspell 5 ${SpellAccuracy} 
/delay 20 
} 
/if ( !${Me.Gem[${SpellHeal}]} ) { 
/memspell 6 ${SpellHeal} 
/delay 20 
} 
/if ( !${Me.Gem[${SpellFireDD}]} ) { 
/memspell 7 ${SpellFireDD} 
/delay 20 
} 
/if ( !${Me.Gem[${SpellColdDD}]} ) { 
/memspell 8 ${SpellColdDD} 
/delay 30 
} 
/if ( !${Me.Gem[${SpellJolt}]} ) { 
/memspell 9 ${SpellJolt} 
/delay 30 
} 

/if ( ${Window[SpellBookWnd].Open} ) /windowstate SpellBookWnd close 
/echo Spells are memmed. 

/return 

| ############### 
| ############### Attack Subs
| ###############

Sub GetTarget 
/assist ${M_Assist} 
/delay 3 
/if (${Target.Type.Equal[NPC]} && ${Target.PctHPs}<=${CombatAt}) { 
/varset MobRooted FALSE 
/varset MobSnared FALSE 
/varset Autofire FALSE
/varset CombatOn TRUE
/varset GotTarget TRUE
} 
/return 

Sub Combat 
|- Check for new events in chat etc etc... 
/doevents 

|/if (${CombatOn} && ${DoSnare} && !${MobSnared} && ${Target.PctHPs}<=${SnareAt}) { 
|/call cast ${SpellSnare} gem1 
|/varset MobSnared TRUE 
|} 
|/if (${CombatOn} && ${DoNuke} && ${Me.PctMana}>=${NukeMana} && 
|${Target.PctHPs}<=${NukeAt}) { 
|/call cast ${SpellFireDD} gem7 
|} 
|/if (${CombatOn} && ${DoRoot} && ${Me.PctMana}>=${RootMana} && 
|${Target.PctHPs}<=${RootAt}) { 
|/call cast ${SpellRoot} gem9 
|/varset MobRooted TRUE 
|} 

|- Check for new events in chat etc etc... 
/doevents 

| - Autofiring bit
/if (!${Autofire}) {
/echo you are fucked
/autofire
/varset Autofire TRUE
/face
} else {
/if (${Autofire} && ${CombatOn}) {
/face
}
}
}
/return

| ################## Group Invite 

Sub Event_Invited 
/invite 
/return 

| ################## I Died 

Sub Event_ImDead 
/echo Bummer ! 
:Zone_Loop 
/if ( ${Me.Bound.ID} != ${Zone.ID} ) /goto :Zone_Loop 
/delay 5s 
/consent group 
/delay 5 
/gsay Im ready to get rez. 
/gsay I have consented group. 
/call Wait4Rez 
/delay 20 
/call MemSpells 
/if (${Me.State.Equal[Stand]}) /sit 

| ################## This part is taken from wait4res. 

Sub Wait4Rez 
:waitforrez 
/if (!${Window[ConfirmationDialogBox].Open}) { 
/delay 5s ${Window[ConfirmationDialogBox].Open} 
/goto :waitforrez 
} 
/if (${Window[ConfirmationDialogBox].Open}) /notify ConfirmationDialogBox 
Yes_Button leftmouseup 
:zonein 
/delay 5 
/squelch /target mycorpse 
/delay 5 
/if (${Target.CleanName.NotEqual[${Me}'s corpse]}) /goto :zonein 
/if (${Target.CleanName.Equal[${Me}'s corpse]}) { 
/delay 3s 
/call Loot_Corpse 
} else /goto :zonein 
/return 

| ################# Looting Corpse 

Sub Loot_Corpse 
/declare LootTotal int local 0 
/declare LootSlot int local 
/squelch /target mycorpse 
/if (${Target.Type.NotEqual[CORPSE]} || !${Target.ID}) { 
/echo ** Can't target my corpse. 
/return 
} 
/corpse 
/delay 1s 
/loot 
/delay 1s 
/if (${Me.State.NotEqual[BIND]}) { 
/echo ** Massive lag right now... Aborting looting. 
/return 
} 
:LootLag 
/if (${LootTotal}!=${Corpse.Items}) { 
/varset LootTotal ${Corpse.Items} 
/delay 5 
/goto :LootLag 
} 
/for LootSlot 1 to ${LootTotal} 
:LootItem 
/itemnotify loot${LootSlot} rightmouseup 
/delay 3 
/if (${Corpse.Item[${LootSlot}].ID}) { 
/delay 2 
/goto :LootItem 
} 
/next LootSlot 
/delay 5 
/echo ** Done looting my corpse. 
/notify LootWnd DoneButton leftmouseup 
/return 

| ################# 
| ################# Tells n Hells 
| ################# 

Sub Event_Chat(string ChatType,string ChatSender,string ChatText) 

/if (!${ChatType.Equal[GROUP]} && !${ChatType.Equal[TELL]}) /return 

| ################# Follow me 

/if (${ChatText.Equal[Follow me]} || ${ChatText.Equal[Follow]}) { 
/delay 5 
/if (!${Spawn[${ChatSender}].ID}) { 
/e ${ChatSender} is not in zone for me to follow! 
/return 
} 
/varset follname ${ChatSender} 
/varset following 1 
/tell ${ChatSender} I am following you!!! 
/if ( ${Me.Mount.ID} ) /dismount 
:targetfoll 
/target pc ${follname} 
/delay 1s ${Target.Name.Equal[${follname}]} 
/if (${Target.Name.Equal[${follname}]}) { 
/goto :Loop 
} else /goto :targetfoll 

:Loop 
/face fast 
/if (${Target.Distance}>40) /keypress forward hold 
/if (${Target.Distance}<39) /keypress back 
/if (!${Target.ID}) /varset following 0 
/doevents 
/if ((${Target.Name.Equal[${follname}]})&&(${following}>0)) { 
/goto :Loop 
} else { 
/keypress forward 
/keypress back 
} 
} 


| ################# Stop Following me 

/if (${ChatText.Equal[End follow]} || ${ChatText.Equal[stop]}) { 
/varset following 0 
/keypress forward 
/keypress back 
/timed 50 /face pc ${follname} 
/tell ${ChatSender} I Stopped following you!!! 
/return 
}

/return
 
my simple ass ranger macro :)
Rich (BB code):
#event exp "#*#party experience#*#"
 
 
sub main
/declare maintank string outer ${Target.CleanName}
/declare exp int outer 0
:Start
/if (${Me.Moving}) /goto :Start
/varset exp 0
/assist ${maintank}
/delay 10
/if (!${Target.ID} || ${Target.Type.Equal[Corpse]}) {
/goto :Start
}
/if (${Target.ID} && ${Target.Type.Equal[NPC]}) {
/face fast
/call range
}
/goto :Start
/return
 
sub range
/delay 2s
/autofire
:range
/if (${Me.Sitting}) /stand 
/face fast
/doevents
/if (!${Target.ID} || ${Target.Type.NotEqual[NPC]}) {
/autofire
/return
}
/goto :range
/return
 
sub event_exp
/if (${Me.Standing}) /sit
/varset exp 1
/return
 
Simple Ranger Mac Help

Users who are viewing this thread

Back
Top