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

macro writers i need your help! (1 Viewer)

D

disparu

Hopefully a developer could answer this question for me, any of the macros ive used or made will never EVER process sub events when the /doevents command is used in whatever loop, sometimes it will work if i /echo the #event but it will never work even with a /doevents :loop running

anyone have any ideas?
 
#turbo
#event GL "You have entered Guild Lobby."
#event Barindu "You have entered Barindu, Hanging Gardens."
#event Vxed "You have entered Vxed, The Crumbling Caverns."
#event GainExp "You gain#*#"
#event LoS "You cannot see your target."
#event OOR "Your target is out of range, get closer!"
#event Nedaria "You have entered Nedaria's Landing."
#event Natimbi "You have entered Natimbi, the Broken Shores."
#event Qinimi "You have entered Qinimi, Court of Nihilia."
#chat tell
#include Spell_Routines.inc

Sub Main
/docrack nostun2 on
:loopstart
/doevents
/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 succor
/doevents
/delay 10
/goto :loopstart
/return


Sub GMcheck
/doevent
/if (${Spawn[gm].ID}) {
/mqlog Gm detected
/beep
/beep
/beep
/delay 20s
/alt act 212
/q
/endmac
}
/return



sub event_GL
/keypress back
/keypress back
/twist off
/varset Kite 0
/delay 2s
/varset Bellow 0
/circle off
/delay 1s
/dzremove Player1
/delay 1s
/dzremove Player2
/delay 1s
/dzremove player3
/delay 1s
/dzremove player4
/delay 1s
/dzremove player5
/delay 1s
/dzquit
/delay 1s
/load "spellset"
/delay 1m
/target magus
/delay 1s
/warp target
/delay 1s
/say nedaria
/return


sub event_GainExp
/squelch /stoptwist
/tar npc next
/delay 10
|-----Added venomous stonemite to summoning mobs in gainexp subroutine
/if (${Target.Name.Equal[misguided beludu Creque]}) {
/target npc next
/delay 30
}
/if (${Target.Name.Equal[a venomous stonemite]}) {
/target npc next
/delay 30
}

/squelch /twist 2 3 4 5 6
/return

Sub event_barindu
/keypress back
/keypress back
/delay 5s
/twist off
/dzremove playername
/delay 1s
/circle off
/itemnotify mainhand leftmouseup
/delay 1s
/if (${Cursor.ID}) {
/delay 1s
/call Expedition
} else {
/warp loc 481.93 -1266.57 -118.56
/call CorpseWatcher
/varset lootleft 0
}

}
/return


Sub event_vxed
/delay 1s
/autoinv
/keypress back
/keypress back
/delay 1
/twist 1
/delay 5s
/circle on 69 59.0321 -304.451
/delay 1s
/twist 8
/delay 4s
/warp loc 125 -300 447
|----Reduced # of songs twisted to compensate for lack of focus items
|----Also to break in the macro easily for 1st mob kill
/twist 1 2 3 4 6
/delay 1s
/return

Sub event_OOR
/target npc radius 100 next
/return

Sub event_LoS
/keypress esc
/return

Sub event_Nedaria
/keypress back
/keypress back
/doevent
/delay 5s
/target magus
/delay 1s
/warp target
/delay 1s
/say natimbi
/return

Sub event_Natimbi
/keypress back
/keypress back
/delay 1s
/warp loc 2060 110 550
/delay 1s
/face heading 90
/delay 1s
/keypress forward hold
/return

Sub event_qinimi
/keypress back
/keypress back
/delay 1s
/warp loc 580 348 -15
/keypress forward hold
/return

Sub Expedition
/keypress back
/keypress back
/doevent
/delay 5s
/twist off
/delay 1s
/target npc app
/delay 1s
/warp target
/delay 1s
/say Vxed
/delay 1s
/warp loc 481.93 -1266.57 -118.56
/delay 1s
/face heading 370
/delay 60s
/keypress forward hold
/return

Sub CorpseWatcher
/keypress back
/keypress back
/target ${Me} corpse
/if (${Target.Type.Equal[corpse]}) /call Loot
/delay 1s
/if (!${Target.Type.Equal[Corpse]}) {
/varset NakedTimer 15m
}
/return

Sub NakedTimerEvent
/keypress back
/keypress back
/target ${Me} corpse
/if (${Target.Type.Equal[corpse]}) /call Loot
/if (!${Target.Type.Equal[Corpse]}) {
/varset NakedTimer 5m
}
/return

Sub Loot
:corpsepull
/target mycorpse
/delay 5 ${Target.CleanName.Equal[${Me}'s corpse]}
/if (${Target.CleanName.NotEqual[${Me}'s corpse]}) {
/echo No corpse in this zone
/return
}
/delay 3s
/corpse
/delay 1s ${Target.Distance}<20
/if (${Target.Distance}>20) {
/echo Corpse is too far away
/squelch /warp target
/return
}

/if (${Target.CleanName.Equal[${Me}'s corpse]}) {
/loot
} else {
/echo where did my corpse go?
/return
}
/delay 5s ${Me.State.Equal[BIND]}
/if (${Me.State.NotEqual[BIND]}) /goto :corpsepull
/varset loottotal 0

:LootLag
/if (${loottotal}!=${Corpse.Items}) {
/varset loottotal ${Corpse.Items}
/delay 1s
/goto :LootLag
}
/if (${loottotal}<=${lootleft}) {
/echo Looting aborted. Error in number items to be left on corpse.
/notify LootWnd DoneButton leftmouseup
/return
}
/varset loottotal ${Math.Calc[${Corpse.Items}-${lootleft}]}

/echo Looting all but ${lootleft} item(s)
/for lootslot 1 to ${loottotal}
:LootItem
/itemnotify loot${lootslot} rightmouseup
/delay 5 !${Corpse.Item[${lootslot}].ID}
/if (!${Corpse.Item[${lootslot}].ID}) {
/next lootslot
} else {
/goto :LootItem
}
/if (${Math.Calc[${Corpse.Items}-${lootleft}]}>0) /goto :LootLag
/notify LootWnd DoneButton leftmouseup
/echo Done looting.
/delay 1s
/call Expedition
/return

Sub Event_Chat(string ChatType,string Sender,string ChatText)
/mqlog ${ChatType}: ${Sender} tells you: ${ChatText}


/if (${ChatText.Equal["omgxp"]}) {
/delay 1s
/invite ${Sender}
}



/if (${ChatText.Equal["incxp"]}) {
/delay 1s
/dzadd ${Sender}
}

/if (${ChatText.Equal["camp"]}) {
/warp safe
/delay 1s
/warp succor
/keypress back
/delay 10
/circle off
/twist off
/camp desktop
}

/return

Sub PotionTimerEvent
/if (${Me.PctHPs}<=60) {
/twist off
/delay 30
/call cast "Healing Potion X" item
/delay 30
/squelch /twist 2 3 4 5 6
}
/varset PotionTimer 2m
/return



this is the code im currently trying to make work which belongs to someone else here and is outdated, but the /doevents problem applies to EVERY macro i use, i just cant figure out what the problem is. Actually the real problem I have is when I zone to lets say Barindu, Hanging Gardens the sub routine doesnt execute even though im almost positive its defined properly.
 
Unfortunately, due to changes made in the game a while back, MQ no longer parses those "You have entered" messages. So if you want to use those subs, replace that /doevents that would look for them in the main loop with a line of code that would be like "/if (${Zone.ID}==zoneidofthezonehere) /call subforthatzone", then just do that for all of the zones that you are going through.
 
thez said:
Unfortunately, due to changes made in the game a while back, MQ no longer parses those "You have entered" messages. So if you want to use those subs, replace that /doevents that would look for them in the main loop with a line of code that would be like "/if (${Zone.ID}==zoneidofthezonehere) /call subforthatzone", then just do that for all of the zones that you are going through.

thanks a million, another question though, are the mq2 wiki and manual never updated? i figured code or something needed changing, but everything thing matched the wiki to date.

oh and one more thing, what is the best way to go about finding zone ids?
 
thez said:
Go to the zone, and /echo ${Zone.ID}


working like a charm so far thez, thanks for your help, ive run into a new problem though, the zone.id check loops the sub event for the zone indefinately . any way to make it run only once so it emulates the old method of checking for text?
 
thez said:
Unfortunately, due to changes made in the game a while back, MQ no longer parses those "You have entered" messages. So if you want to use those subs, replace that /doevents that would look for them in the main loop with a line of code that would be like "/if (${Zone.ID}==zoneidofthezonehere) /call subforthatzone", then just do that for all of the zones that you are going through.

I've used an event to look for the "Loading Please Wait..." and then do a slight delay to ensure I'm in the right zone then echo the new id into a var.
 
Yes, but I can't write it out write it out now. Basically, you'll just have to do similar to solar, and check to see if your old zone id is different from your new one, and THEN call that event. It sounds complicated, but it isn't. When I'm less busy, I'll get it together.
 
thez said:
Yes, but I can't write it out write it out now. Basically, you'll just have to do similar to solar, and check to see if your old zone id is different from your new one, and THEN call that event. It sounds complicated, but it isn't. When I'm less busy, I'll get it together.


no need, ive almost got it working thanks to you and solar, i basically did this

#event zoning "LOADING, PLEASE WAIT..."

sub event_zoning
/echo zomg it worked
/if (${Zone.ID}==283) /call event_barindu
/if (${Zone.ID}==344) /call event_GL
/if (${Zone.ID}==280) /call event_natimbi
/if (${Zone.ID}==182) /call event_nedaria
/if (${Zone.ID}==281) /call event_qinimi
/if (${Zone.ID}==290) /call event_vxed
/return

so far so good


thanks a million guys, ill post later if any new problems are incurred
 
thez said:
You should consider putting a delay in there. Maybe like 1s before the checks start.

i saw that note above from solar, but it seems totally unaffected by how long it takes me to zone, it has yet to fail.
 
macro writers i need your help!

Users who are viewing this thread

Back
Top