• 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 --->

Need a little help with a FH macro (1 Viewer)

methos237

New member
Joined
Nov 28, 2005
RedCents
Ok, I spliced this macro for my buddy (ranger) and I (bard) to duo in FH. I think I have it pretty well set to add him and zone him in if I am already kiting away, but I need to find a way to make it so that if I am solo, or if he joins me and leaves (by death, LD, or logs) I can still run the macro. There is a part in it where after I zone in, I do a PC check and if there aren't 2 people in the zone, I go into a holding pattern (did this so his toon can get set up). My questions are: 1) is this holding pattern needed, and 2) if it is, is there a way I can make a /if {grouped} do the hold , and if not grouped, not do it? I'll paste both the bard and ranger macros that we use, and I appologize that they haven't been credited correctly... just ment them for private use for the 2 of us til I get all the bugs worked out.

Also, if you see anything that needs to be re-hashed, please let me know. Thanks in advance for all the help!


fhbard.mac
Rich (BB code):
#Include FHCommon.inc

#turbo
#Event MobDied "#*#You gain party experience#*#"
#event ding "#*#have gained a level! Welcome to level#*#"
#event end "Shutdown12345"
#event dzadd1 "#*#RANGERNAME tells you, 'Matt'#*#"
#event dzadd2 "OTHERDUDE tells you, 'Matt'"  
#event Zoned "#*#You have entered The Guild Lobby#*#"
|#event dzquit "#*#You have entered Nedaria's Landing#*#"
#event Fhalls "You have entered The Forgotten Halls." 
#event PoK "#*#You have entered The Guild Lobby#*#"
|Change this to the             ^^^^^^^^^^^^^^^
|zone you are bound in


Sub Main

 /declare LootAllItems int outer 0 
 /declare LootSlot int outer 0 
 /call CommonDeclares
|We are waiting for the hotkey to start the macro
	:waitforit
	/doevents
	/doevents
	/goto :waitforit
/return

| We have the extra long delay to account for zoneing Time.
| You may set the delay to what you want.
| You also need to change the twist to your line up.
| We then Clear our target so we don't cast on anything.

Sub event_Fhalls
     /speed 4     
     /delay 40s
  :Waitforall
     /if (${SpawnCount[pc]}!=2) {
  	/g Hurry and get your ass in the zone!
  	/delay 10s
  	/goto :Waitforall
  }
     /g Back in Forgotten Halls, Starting fighting again in 20 seconds!
     /delay 20s
     /call indz

Sub indz  
	/twist off
	/face heading 270
	/delay 1s
	/warp loc -573.50 162.80 2.15
	/circle on 18 -600 160
	/keypress forward hold
	/target clear
	/target clear
	/twist  2 3 4 6 5

	

|This loop calls the events to be redone along with a GM check.
|It checks to insure that the mobs it targets are not over
| level 67(a left over from the vxed mac i think)
|It then check the range of the target if it over 220 it clears it
|The 3rd If command targets an NPC if you do not have a target
|The final Line Watches your health and succor you when you hit 30%
| you could change the command to gate if you like.
| ex /if (${Me.PctHPs}<=30) /gate
   
		:loopstart 
		/delay 1s
		/call GMcheck  
		/if (${Target.Level}>67) /tar npc next 
		/if (${Target.Distance}>220) /keypress esc
		/if (${Target.ID}==FALSE) /tar NPC radius 220 rat
		/if (${Me.PctHPs}<=30) /call regen
		/doevents
	/delay 10  
	/goto :loopstart  
/return  

|I dont like to drop too low on hp so i just change to twist in regen
|with my dots

Sub regen

/twist 2 6
:regenloop
/doevents
/if (${Me.PctHPs}<=30) {
/call succor
/goto :regenloop
}
/if (${Me.PctHPs}>=30) {
   /twist  2 3 5 6 4
   /call indz
}
/return

|I never had this one called while i was in zone.
| but it warps you to that loc turn circle off
| and twists selos and heal song then when you reach
| 80% health you go back to killing 

Sub succor

	/twist 6
	/delay 1s
	/delay 120s
        /return
/delay 60
/call regen
/return

| This is the GM check it is called about every 10 seconds.
| It beeps at you then /quits the game.

Sub GMcheck  
 	/if (${Spawn[gm].ID}) {  
 		/echo Gm detected  
 		/beep 
 		/beep 
 		/beep  
 		/closenow
 		/endmac 
 		/unload 
 		  
 	}  
/return  


|need to change the name of this to the person you want
|added to the adventure

Sub event_dzadd1
	/invite RANGERNAME
	/delay 2s 
	/dzadd RANGERNAME
        /delay 1s
/return

Sub event_dzadd2 
	/invite OTHERDUDE
	/delay 2s 
	/dzadd OTHERDUDE
        /delay 1s
/return

| This sub follows a group invite.

Sub event_invite 
	/invite
/return  

|This next bit removes you from the expdition if you still have it after 
|  you zone out
|Targets Eldros Danmor warps to him gets the adventure window then it 
| warps back to Nideno and says forgotten halls allowing you to zone in.
|You then warp closer to the rock look at point behind the rock and 
| press use or u, also you click with the mouse so you mouse needs to be
| in the center of the screen. 

Sub event_dzquit
        /doevents
        /call gmcheck
        /dzremove RANGERNAME
	/dzremove OTHERDUDE
	/delay 2s
	/dzremove BARDNAME
	/twist off
	/delay 2s
	/target Eldros Danmor
	/warp target
	/delay 2s
	/say interested in visiting
	/delay 3s
	/target Nideno Eliagy
	/warp target
	/delay 2s
	/say Forgotten halls
	/delay 2s
        /doevents
	/warp loc 1544 -665 94
	/face loc 1540, -675
	/look 0
	/doortarget
	/delay 10s
	/keypress u
	/keypress u 
	/delay 1s
	/target clear
	:waitforfh
	/doevents
	/doevents
	/goto :waitforfh
/return

|In the event of a water landing....
| This camps you out.

Sub Event_Zoned 
	/echo Sorry I don't know how or why, but you died.
        /circle off
        /twist off
        /delay 45s
	/sit on
	/closenow 
	/endmacro 
/return


 Sub Event_MobDied 
 /doevents
/twist off 
/delay 3s
/call GMcheck
 /circle off
 /keypress forward
 /delay 1s
 /squelch /declare LootSlot    int inner  0 
 /declare LootCheck   int inner  0 
 /declare LootTotal   int inner  0 
 /target npc corpse radius 200 
 :MovementLoop 
 /face fast nolook 
 /if (${Int[${Target.Distance}]}>13) { 
 /keypress forward hold 
 } 
 /if (${Int[${Target.Distance}]}<13&&${Int[${Target.Distance}]}>11) { 
 /keypress forward 
 } 
 /if (${Int[${Target.Distance}]}<9) { 
 /keypress back 
 } 
 /if (${Int[${Target.Distance}]}>13) { 
 /goto :MovementLoop 
 } 
 /keypress forward 
 /keypress back 
 /delay 5 
 /loot 
 /delay 5 
 /if (!${Corpse.Items}) { 
 /echo NO LOOT!
 /notify LootWnd DoneButton leftmouseup 
/delay 1s 
/call checkanchor  
 /face heading 270
 /circle on 18 -600 160
 /keypress forward hold
 /return 
 } 
 /varset LootTotal ${Corpse.Items} 
 /for LootSlot 1 to ${LootTotal} 
 /itemnotify loot${LootSlot} leftmouseup 
 /delay 5 
 /if (${LootAllItems}) { 
 /echo Keeping a ${Cursor.Name}... WOOT! 
 /autoinventory 
 /autoinventory 
 /delay 5 
 } else { 
 /for LootCheck 1 to ${ItemsToLoot.Size} 
 /if (${Cursor.Name.Find[${ItemsToLoot[${LootCheck}]}]}) { 
 /echo Keeping a ${Cursor.Name}... WOOT! 
 /autoinventory 
 /autoinventory 
 /delay 5 
 } 
 /next LootCheck 
 } 
 /if (${Cursor.ID}) { 
 /echo Destroying a ${Cursor.Name}... 
 /destroy 
 /destroy 
 /delay 5 
 } 
 /next LootSlot 
 /delay 5 
 /notify LootWnd DoneButton leftmouseup 
 /delay 2 
 /call checkanchor 
 /face heading 270
 /circle on 18 -600 160
 /keypress forward hold
/return

Sub CheckAnchor    
 /if (${Math.Distance[${AnchorY},${AnchorX}]}>12) /call MoveToAnchor    
/return 

Sub MoveToAnchor 
/call indz
/return


|----------------------------------------------------------------------------

fhcommon.inc
Rich (BB code):
#event Dzquit "#*#You have entered Nedaria's Landing#*#" 
#event Movedone "Arrived at MoveTo location"

Sub CommonDeclares
  /declare ZoneID int outer ${Zone.ID} 
  /declare wezoned int outer 0
  /echo Finished with Common Declares
/return

Sub event_Dzquit
  /declare i int local
  /doevents flush
  /g We got booted to Nedaria
  /varset wezoned 1
  /dzremove BARDNAME
  /dzremove RANGERNAME
  /dzremove OTHERDUDE
  /declare bardinzone local TRUE
| If I'm not the bard, skip down to waiting for him to get the mission and zone in.
  /if (!${Me.Name.Equal[BARDNAME]}) {
  	/delay 30s
  	/goto :others
  }
  /twist stop
  /delay 1s
| Selo's song of travel is in Gem9 for me.  
| /twist 9
  /speed 4
/delay 2s
	/target Eldros Danmor
	/warp target
	/delay 2s
	/say interested in visiting
	/delay 3s
	/target Nideno Eliagy
	/warp target
	/delay 2s
	/say Forgotten halls
	/delay 2s
        /doevents
	/warp loc 1544 -665 94
	/face loc 1540, -675
	/look 0
	/doortarget
	/delay 10s
	/keypress u
	/keypress u 
	/delay 1s
	/target clear
  
  :others
  /if (${Zone.ID}==998) /return
  /doevents
| Wait till the bard is no longer in Nedaria, this means the mission has been accepted and he's in FHalls  
  /if (!${Me.Name.Equal[BARDNAME]} && ${bardinzone}) {
  	/target BARDNAME
  	/if (!${Target.ID}) /varset bardinzone FALSE
  	/delay 5s
  	/goto :others
  }
  
  /if (${Zone.ID}!=998) /goto :others
/return



  /delay 40s
  :Waitforall
  /if (${SpawnCount[pc]}!=2) {
  	/g Waiting for everyone to zone in.
  	/delay 10s
  	/goto :Waitforall
  }
  /g Back in Forgotten Halls, Starting fighting again in 20 seconds!
  /delay 20s
  /if (${Me.Name.Equal[bard]}) /twist 1 2 3 4 5
  /varset wezoned 0
/return

fhranger.mac
Rich (BB code):
|Forgotten Halls Subordinate Macro
|Written by Moonspell for Redguides.com

|This macro is supposed to have your Ranger
|assist a target and throw axes at it.  It will 
|automatically summon more axes if you run out
|and end the macro if you are out of axe components.

|Additionally, it'll warp you to the proper starting
|spot, face you in the right direction, then commence
|tossing axes.  If your HP gets too low, it will warp 
|you away and allow you to meditate back to health.

|Setup:  Get invited to your group and get an expo.  
|Zone into Nedaria's Landing, run the macro, then
|type "/echo you have entered nedaria's landing"
|without the quotation marks.  This should cause your toon
|to warp to the starting npc and zone you into the instance.

|Hotbar configuration.
|Slot 1: Summon Axe Combat Ability
|Slot 2: Ranged Attack
|Slot 3: Potion Belt Two Hotkey
|Slot 4: Rage Volley/Destroyer's Volley

|Be sure to change all instances of bardsName
|with the name of the toon you would like
|the character who is running this macro
|to assist.

|Some of the lines are borrowed from
|the Forgotten Halls AFK bard macro
|and have been edited by me.
|This macro can easily be edited
|to be used by any class that can
|throw items or use a bow.  Just get
|an arrow/thrown weapon summing item
|and you're good to go.

#turbo
#event getexpo "#*#You have entered nedaria's landing#*#"
#event kill "#*#You gain party experience#*#"
#event zone "#*#You have entered The Forgotten Halls#*#"
#event noammo "#*#You have run out of ammo#*#"
#event died "#*#You have entered the Guild Lobby#*#"
#event invited "#*#BARDNAME invites you to join a group#*#"
|#event callofearth "#*#Your Call of Earth Spell has worn off BARDNAME#*#"
|#event feetlikecat "#*#Your Feet Like Cat Spell has worn off BARDNAME#*#"
|#event shieldofspikes "#*#Your Shield of Spikes Spell has worn off BARDNAME#*#"
|#event warderprotection "#*#Your skin returns to normal#*#"

Sub Main
|We are waiting for the hotkey to start the macro
	/echo <<< Forgotten Halls Subordinate Macro Initiated >>>
        /call CommonDeclares
	/squelch /t BARDNAME Matt
	:waitforit
	/doevents
	/doevents
	/goto :waitforit
/return


Sub CommonDeclares
  /declare ZoneID int outer ${Zone.ID} 
  /declare wezoned int outer 0
  /echo Finished with Common Declares
/return

Sub event_invited
	/delay 2s
	/keypress ctrl+i
	/delay 2s
	/squelch /g Joined succsessfully!
/return
Sub event_getexpo
  /declare i int local
  /doevents flush
  /varset wezoned 1
  /declare bardinzone local TRUE
  /dzquit
| If I'm not the bard, skip down to waiting for him to get the mission and zone in.
  /if (!${Me.Name.Equal[BARDNAME]}) {
  	/delay 5s
  	/goto :others
  }
	:others
  /if (${Zone.ID}==998) /return
  /doevents
| Wait till the bard is no longer in Nedaria, this means the mission has been accepted and he's in FHalls  
  /if (!${Me.Name.Equal[BARDNAME]} && ${bardinzone}) {
  	/target BARDNAME
  	/if (!${Target.ID}) /varset bardinzone FALSE
  	/delay 5s
  	/goto :others
  }
	/warp loc 1544 -665 94
	/face loc 1540, -675
	/look 0
	/doortarget
	/delay 1s
	/keypress u
	/delay 1s
	/keypress u
	:waiting
		/doevents
		/doevents
		/goto :waiting

  /if (${Zone.ID}!=998) /goto :others
	/return

Sub event_zone
	/delay 10s
	/face heading 90
	/delay 4s
	/warp loc -597.71 93.81 1.93
	/delay 20s
	/call killloop
/return

Sub killloop
	/delay 15s
	/assist BARDNAME
	/autofire
    :waitfortarget
	/assist BARDNAME
	/doevents
	/delay 2s
        /if (${Target.ID}==FALSE) /goto :waitfortarget
	/if (${Target.Distance}>220) /keypress esc 
	/if (${Me.PctHPs}<=30) /call succor
	/doevents
	/delay 10
	/goto :waitfortarget

/return

Sub event_kill
	/delay 3s
	/call killloop

Sub succor
	/warp loc 245 -33 0
	/delay 2s
	/sit
	:loopheal
	/if (${Me.PctHPs}>80) {
	/stand
	/face heading 90
	/warp loc -597.71 93.81 1.93
	/delay 4s
	/call killloop
/return
}
/delay 60
/goto :loopheal
/return

Sub event_noammo
	/keypress 1
	/delay 16s
	/autoinventory
	/delay 3s
	/keypress 1
	/delay 16s
	/autoinventory
	/delay 3s
	/keypress 1
	/delay 16s
	/autoinventory
	/delay 3s
	/keypress 1
	/delay 16s
	/autoinventory
	/delay 3s
	/keypress 1
	/delay 16s
	/autoinventory
	/delay 3s
	/keypress 1
	/delay 16s
	/autoinventory
	/delay 3s
	/keypress 1
	/delay 16s
	/autoinventory
	/delay 3s
	/keypress 1
	/delay 16s
	/autoinventory
	/delay 3s
	/keypress 1
	/delay 16s
	/autoinventory
	/delay 3s
	/keypress 1
	/delay 16s
	/autoinventory
	/delay 3s
/return




Sub event_died
	/echo Bring out yer dead! *clang*
	/echo Bring out yer dead! *clang*
	/echo Bring out yer dead! *clang*
	/echo <<< Terminating Macro >>>
	/delay 6s
	/camp desktop
	/delay 60s
	/end
/return
 
Last edited:
Need a little help with a FH macro

Users who are viewing this thread

Back
Top