• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

The AFK Bard Macro

I hear a lot of talk about LoY around the harbor anyone done 50 - 55 here and if so whats a good location to setup camp to be AFK at night and not have to worry about being killed but also offers a consent flow of mobs to kill.


Any location , circle radius information would be wonderful to have trying to get to 60 ASAP i am now 53+ so any place that will get me there in decent time.


Once i ding 62 I will be heading to HoH basement to finish out 65 and work on AAs when not raiding.
 
Anyone know where in PoNightmare to go for Bard Macro? (lvl 50 atm)
Thanks in Advanced. Please include loc/camp/directions if possible! :p
 
Siddin, or whoever can. Could i please get a macro created if possible that will do the following:
If
{mana > 70%}
Then
{Cast Spell (slot 8)} //NOTE: This would be the Target AE 360 Dmg spell we get. However, how can this work w/out messing up the current /twist macro?

// My current /twist hotkey is set to" /twist 1 2 1 3
(1 speed, 2 dot, 1 speed, 3 dot) B/c i dont know if Selos will stay as long as i need it to.)

Any help would be greatful. This would add a nice boost of speed on the killing :)
 
ok have an 11 bard and new to all this stuff.... i need help from point a to point z... where do i start and where do i end... please someone help... email me at [email protected] please and either somehow tell me there or leave a number i can call to get a hold of someoen that actually knows what there doing... also if there is anything that can PL a mage or ENC QUICK! like this .... thx....

Uilven
~I've Fallen And I Can't Get Up~
 
Uilven said:
ok have an 11 bard and new to all this stuff.... i need help from point a to point z... where do i start and where do i end... please someone help... email me at [email protected] please and either somehow tell me there or leave a number i can call to get a hold of someoen that actually knows what there doing... also if there is anything that can PL a mage or ENC QUICK! like this .... thx....

Uilven
~I've Fallen And I Can't Get Up~

RedGuides.com > Member Forums > Everquest 1 > EQ1 Questions & Requests
Request Plvling Zones lvl 1-70
http://www.redguides.com/community/showthread.php?t=337&page=1&pp=10
*******************************************************
RedGuides.com > Member Forums > Everquest 1 > EQ1 Strategies & Cheats
Plvling Zones lvl 1-70 (BARD MACRO)+(PLVLING)
http://www.redguides.com/community/showthread.php?t=631
 
meaning what i need to do to install these macros and what programs are needed... i read the stuff but still do not understand sry not c++ or html knowledgable really.... where do i save files what under how do i use them and such please pm or something with info thank you

Uilven
~Ive Fallen And I Cant Get Up~
 
Take a second to look around the forums for what you seek. I have written a guide to do what you're asking, you need only find it.
 
can someone walk me through the set up and how to compile this and make it work on my computor? i have the basic macroquest running atm but i cannot seem to make this work?
 
basically just copy the mac into any (filename).mac and you can run it from macroquest using the /macro command.
 
copy it from this page and paste it into any .mac fil then use /macro twist in game?
 
nope you type /macro and the name of the filename.. ie /mac afbard
where afbard.mac is the actual filename
 
everytime i try to open any .mac file it says cannot open file is corrupeted ??
any idea what i did wrong ?? i just rebuilt all files on vs.net said 14 succeded
reinstalled quicktime. but stall cannot open any .mac ??

I am a newb if you havent noticed by now /sigh plz help ~
 
Rich (BB code):
#event NeedTarget "You must first select a target for this spell!" 
#event NeedTarget2 "Your target is out of range, get closer!"
#event seetarget "You cannot see your target."
#event exp "#*#experience!!"
 
Sub Main(String Selos, String Dirge, String Bellows)
/declare healsong int outer 0
/declare SeloSong int outer 8 
/declare DirgeSong int outer 7
/declare BellowSong int outer 6
/declare Bellowtimer int outer 300
/declare targetammount int outer
/declare PrevSong int outer 
/varset PrevSong 0 
 
/echo Selo's: ${Me.Gem[${SeloSong}].Name}
/twist 4 2 3 5 7
:MainLoop 
/if (!${Target.ID} || ${Target.ID}==${Me.ID}) /squelch /target clear
/doevents
/nomodkey /keypress forward hold
/call selosong
|/call dirgesong
|/call bellowsong
/call healsong
		 /delay 1S
/nomodkey /keypress forward hold
/varcalc Bellowtimer ${Bellowtimer}+1
/goto :MainLoop 
 
/return 
 
Sub Event_exp
/tar npc radius 150
/twist 4 2 3 5 7
/return
 
Sub Event_NeedTarget 
/if (!${Target.ID}) /target npc radius 150
/return
 
Sub Event_NeedTarget2
/target npc
/return
 
Sub Event_seetarget
/varcalc targetammount ${targetammount}+1
/if (${targetammount}>=10) {
/target npc
/varset targetammount 0
/return
}
/return
 
Sub Event_targetid
/varset targetammount 0
/return
 
sub selosong
/if (${Me.Buff[${Me.Gem[${SeloSong}].Name}].Duration}<=6) { 
		 /echo Selos about to die 
/stopsong
/twist 8
		 /delay 1S
/nomodkey /keypress forward hold
		 /delay 1S
/nomodkey /keypress forward hold
		 /delay 1S
/nomodkey /keypress forward hold
		 /delay 1S
/nomodkey /keypress forward hold
/twist 4 2 3 5 7
		 /varset PrevSong 0 
		 /doevents 
		 /return 
	 } 
 
/return
 
 
 
 
 
Sub healsong
/if (${healsong}==0) /if (${Me.PctHPs}<=95) {
/twist 4 2 3 5 1
/varset healsong 1
/return
}
/if (${healsong}==1) /if (${Me.PctHPs}>=96) {
/twist 4 2 3 5 7
/varset healsong 0
/return
}
/return
just runs around in circles and twists slots 4 2 3 5 7... if you have a problem with selos falling before refresh change the # on this line
/if (${Me.Buff[${Me.Gem[${SeloSong}].Name}].Duration}<=6)
 
Can this macro be converted to work with Druid? Or is there one already out there that lets druids attack and lvl?
 
heh, only problem is, druids can't cast while running... i'll look for a druid mac for ya.
 
here's another one for ya guys, a lot easier than editing the ones i usually put out lol


Rich (BB code):
|Usage: /mac chantkite (radius) (heal%) (healsong) (selos) (#of dots) (dot1-9)
|ie. /mac chantkite 55 60 1 8 5 2 3 4 5 7
|radius of 55, heals at 60%, plays song 1 to heal, plays song 8 for selos, 5 dots, #'s 2 3 4 5 7
|
 
#event NeedTarget "You must first select a target for this spell!" 
#event NeedTarget2 "Your target is out of range, get closer!"
#event seetarget "You cannot see your target."
#event exp "#*#experience!!"
 
Sub Main(int radius,int health,int hpsong,int selos,int dotnumber,int dot1,int dot2,int dot3,int dot4,int dot5,int dot6,int dot7,int dot8,int dot9)
/declare healsong int outer 0
/declare SeloSong int outer ${selos} 
/declare targetammount int outer
/declare PrevSong int outer 
/varset PrevSong 0 
 
/echo Selo's: ${Me.Gem[${SeloSong}].Name}
/circle on ${radius}
/call normaltwist
:MainLoop 
/doevents
/call gmcheck
/nomodkey /keypress forward hold
/call selosong
/call healsong
		 /delay 1S
/nomodkey /keypress forward hold
/goto :MainLoop 
 
/return 
 
Sub Event_exp
/tar npc radius 150
/call normaltwist
/return
 
Sub Event_NeedTarget 
/if (!${Target.ID}) /target npc radius 150
/return
 
Sub Event_NeedTarget2
/target npc
/return
 
Sub Event_seetarget
/varcalc targetammount ${targetammount}+1
/if (${targetammount}>=10) {
/target npc
/varset targetammount 0
/return
}
/return
 
Sub Event_targetid
/varset targetammount 0
/return
 
sub selosong
/if (${Me.Buff[${Me.Gem[${SeloSong}].Name}].Duration}<=6) { 
		 /echo Selos about to die 
/stopsong
/twist ${selos}
		 /delay 1S
/nomodkey /keypress forward hold
		 /delay 1S
/nomodkey /keypress forward hold
		 /delay 1S
/nomodkey /keypress forward hold
		 /delay 1S
/nomodkey /keypress forward hold
/call normaltwist
		 /varset PrevSong 0 
		 /doevents 
		 /return 
	 } 
 
/return
 
Sub healsong
/if (${healsong}==0) /if (${Me.PctHPs}<=${health}) {
/call healtwist
/varset healsong 1
/return
}
/if (${healsong}==1) /if (${Me.PctHPs}>=96) {
/call normaltwist
/varset healsong 0
/return
}
/return
 
sub normaltwist
/if (${dotnumber}==1) /twist ${dot1}
/if (${dotnumber}==2) /twist ${dot1} ${dot2}
/if (${dotnumber}==3) /twist ${dot1} ${dot2} ${dot3}
/if (${dotnumber}==4) /twist ${dot1} ${dot2} ${dot3} ${dot4}
/if (${dotnumber}==5) /twist ${dot1} ${dot2} ${dot3} ${dot4} ${dot5}
/if (${dotnumber}==6) /twist ${dot1} ${dot2} ${dot3} ${dot4} ${dot5} ${dot6}
/if (${dotnumber}==7) /twist ${dot1} ${dot2} ${dot3} ${dot4} ${dot5} ${dot6} ${dot7}
/if (${dotnumber}==8) /twist ${dot1} ${dot2} ${dot3} ${dot4} ${dot5} ${dot6} ${dot7} ${dot8}
/if (${dotnumber}==9) /twist ${dot1} ${dot2} ${dot3} ${dot4} ${dot5} ${dot6} ${dot7} ${dot8} ${dot9}
/return
 
sub healtwist
/if (${dotnumber}==1) /twist ${dot1} ${hpsong}
/if (${dotnumber}==2) /twist ${dot1} ${dot2} ${hpsong}
/if (${dotnumber}==3) /twist ${dot1} ${dot2} ${dot3} ${hpsong}
/if (${dotnumber}>=4) /twist ${dot1} ${dot2} ${dot3} ${dot4} ${hpsong}
/return
 
sub gmcheck
/if (${Spawn[gm].ID}) {
/MQLog GM entered the zone!
/mqlog For safty reasons ending the macro
	 /echo GM entered the zone!
	 /echo For safty reasons ending the macro
/endmac
/keypress instant_camp
}
/return
 
here ya go, sid I edited your code just a tad, hope you don't mind. if you do just let me know, I will remove it. but I wanted a zone function and also a get my but out of the fire function. I figured I'm not the onlyone so I posted it. I also didn't know how to add code so I hope this works hehe. I couldn't get the zone list to fit, but I have attatched this code and zonelist in txt format, for download I just checked it, it is broke, if you know how to fix my problem, please help

Rich (BB code):
|I have added to Siddin's design, now when you are kiting if your health drops below "warpat" then
|you will zone to the zone you specify, healup and zone back, it will warp you to where your cirlce is
|and start up kiting again. input has been modified as follows
|usage: /mac chantkite (current zone) (adjacent zone) (radius) (circle X) (circle Y) (zone%) (heal%) (healsong) (Selos) (#of dots) (dot1-9)
|ie. /mac chantkite southkarana northkarana 55 100 -350 15 60 1 8 5 2 3 4 5 7
|the zone list for shortnames to be used has been added to the bottom of this macro
|obviously I haven't gotten to test this yet, so if I did something wrong, let me know, but I think I did it right.
|only concern is the character variables. not sure if that will work.
|again I only added a few lines of code, most credit goes to siddin for his awesome macros
|

|Usage: /mac chantkite (radius) (heal%) (healsong) (selos) (#of dots) (dot1-9)
|ie. /mac chantkite 55 60 1 8 5 2 3 4 5 7
|radius of 55, heals at 60%, plays song 1 to heal, plays song 8 for selos, 5 dots, #'s 2 3 4 5 7
|
 
#event NeedTarget "You must first select a target for this spell!" 
#event NeedTarget2 "Your target is out of range, get closer!"
#event seetarget "You cannot see your target."
#event exp "#*#experience!!"

/declare curzone char[13]
/declare adjzone char[13]
/varset curzone "             "
/varset adjzone "             "
 
Sub Main(char[13] curzone,char[13] adjzone,int radius,int circley,int circlex,int circlez,int warpat,int health,int hpsong,int selos,int dotnumber,int dot1,int dot2,int dot3,int dot4,int dot5,int dot6,int dot7,int dot8,int dot9)
/declare healsong int outer 0
/declare SeloSong int outer ${selos} 
/declare targetammount int outer
/declare PrevSong int outer 
/varset PrevSong 0
/declare zoned int outer
/varset zoned 0 
 
/echo Selo's: ${Me.Gem[${SeloSong}].Name}
/circle on ${radius} ${circlex} ${circley}
/call normaltwist
:MainLoop 
/doevents
/call gmcheck
/nomodkey /keypress forward hold
/call selosong
/call healsong
		 /delay 1S
/nomodkey /keypress forward hold
/goto :MainLoop 
 
/return 
 
Sub Event_exp
/tar npc radius 150
/call normaltwist
/return
 
Sub Event_NeedTarget 
/if (!${Target.ID}) /target npc radius 150
/return
 
Sub Event_NeedTarget2
/target npc
/return
 
Sub Event_seetarget
/varcalc targetammount ${targetammount}+1
/if (${targetammount}>=10) {
/target npc
/varset targetammount 0
/return
}
/return
 
Sub Event_targetid
/varset targetammount 0
/return
 
sub selosong
/if (${Me.Buff[${Me.Gem[${SeloSong}].Name}].Duration}<=6) { 
		 /echo Selos about to die 
/stopsong
/twist ${selos}
		 /delay 1S
/nomodkey /keypress forward hold
		 /delay 1S
/nomodkey /keypress forward hold
		 /delay 1S
/nomodkey /keypress forward hold
		 /delay 1S
/nomodkey /keypress forward hold
/call normaltwist
		 /varset PrevSong 0 
		 /doevents 
		 /return 
	 } 
 
/return
 
Sub healsong
/if (${healsong}==0) /if (${Me.PctHPs}<=${health}) {
/if (${zoned}==0) /if (${Me.PctHPs}<${warpat}) {
/varset zoned 1
/zone ${adjzone}
}
/call healtwist
/varset healsong 1
/return
}
/if (${healsong}==1) /if (${Me.PctHPs}>=96) {
/if (${zoned}==1) {
/zone ${curzone}
/warp ${cirlcey} ${circlex} ${circlez}
/varset zoned 0
}
/call normaltwist
/varset healsong 0
/return
}
/return
 
sub normaltwist
/if (${dotnumber}==1) /twist ${dot1}
/if (${dotnumber}==2) /twist ${dot1} ${dot2}
/if (${dotnumber}==3) /twist ${dot1} ${dot2} ${dot3}
/if (${dotnumber}==4) /twist ${dot1} ${dot2} ${dot3} ${dot4}
/if (${dotnumber}==5) /twist ${dot1} ${dot2} ${dot3} ${dot4} ${dot5}
/if (${dotnumber}==6) /twist ${dot1} ${dot2} ${dot3} ${dot4} ${dot5} ${dot6}
/if (${dotnumber}==7) /twist ${dot1} ${dot2} ${dot3} ${dot4} ${dot5} ${dot6} ${dot7}
/if (${dotnumber}==8) /twist ${dot1} ${dot2} ${dot3} ${dot4} ${dot5} ${dot6} ${dot7} ${dot8}
/if (${dotnumber}==9) /twist ${dot1} ${dot2} ${dot3} ${dot4} ${dot5} ${dot6} ${dot7} ${dot8} ${dot9}
/return
 
sub healtwist
/if (${dotnumber}==1) /twist ${dot1} ${hpsong}
/if (${dotnumber}==2) /twist ${dot1} ${dot2} ${hpsong}
/if (${dotnumber}==3) /twist ${dot1} ${dot2} ${dot3} ${hpsong}
/if (${dotnumber}>=4) /twist ${dot1} ${dot2} ${dot3} ${dot4} ${hpsong}
/return
 
sub gmcheck
/if (${Spawn[gm].ID}) {
/MQLog GM entered the zone!
/mqlog For safty reasons ending the macro
	 /echo GM entered the zone!
	 /echo For safty reasons ending the macro
/endmac
/keypress instant_camp
}
/return
 
Last edited:
does anyone know if you can alter the diameter of the circle you are running? For example if I am running circle on 120, can I alter that diameter while running in that circle?
 
if you are just running in a normal circle then you type /circle on (new radius) your center might change a little, but you just altered your radius

if you are running a circle generated by some macro, then you prob need to run the macro again with new params
 
A quick tip for bards attempting this. I've found it easier to use the posted targeting macro, combined with MQ2Twist to handle the song twisting (it's available from the MQ2 plugin forums).

Before you start your twists perform the following command:
/twist adjust 2

This will cause your selos to refresh 2 ticks earlier than necessary. This insures that it will never drop for any reason.

Also it helps to be using the nostun offset, available with MQ2docrack. This will ensure that even if you do get hit you will keep running without stopping. My macro uses fading memories the moment you get hit to buy you some extra time, just incase the pathing caused the mobs to hit you for a second. Fading will only buy you time until the next server tick before the mobs re-aggro, but it can be all the time you need (this also works on see-invis mobs since they can't actually aggro you until the server tick). Also, if I drop below 20% health I warp to succor, fade, wait for DA to refresh, face east, turn off the circle, cast DA, warp to the spot, re-circle and start twisting again. This doesn't stop you from getting one rounded, but it has saved me a few times already.

I will post it soon once I have it perfected.
 
you realize that fade turns you invisible if you are not in immediate combat right? you actually stay invisible for up to 1 minute if you don't do anything that would make you visible with any other invisibility spell.
 
I am well aware of the fact that FM makes you invisible, but the 4 dots you have on your mob will aggro it the next time a tick happens.
 
Nevermind, that code was worthless, it just wouldn't execute parts of the code so I trashed it
 
Last edited:
Halls of Honor A
twists 1 for healsong
2 3 4 5 and 7 are dots
and 8 is selos. change this line /if (${Me.Buff[${Me.Gem[${SeloSong}].Name}].Duration}<=2) {
from 2 to something higher if selos doesn't refresh.

Rich (BB code):
#event EXP "#*#experience!!"
|#event NeedTarget "You must select a target for this spell!"
|#event NeedTarget2 "Your target is out of range, get closer!"
#event seetarget "You cannot see your target."
#event targetid "Your Tuyen's Chant of Poison has worn off."
#event targetid "Your Tuyen's Chant of Disease has worn off."
#event targetid "Your Tuyen's Chant of Flame has worn off."
#event targetid "Your Tuyen's Chant of Frost has worn off."
#event logoff "LOADING, PLEASE WAIT..."
#event join "#*#invite me#*#"
#event quit "#*#leave hoh quit#*#"
#event speedsong "#*#speedsong#*#"
 
Sub main
/warp loc 1368.69 1354.42 -113.21
/circle on 110 1382.46 1215.35
/declare myzone int outer ${Zone.ID}
/declare pause int outer 1
/declare avoid1 int outer 0
/declare avoid2 int outer 0
/declare killtarget int outer 0
/declare movedone int outer 0
/declare healsong int outer 1
/declare SeloSong int outer 8 
/declare DirgeSong int outer 7
/declare BellowSong int outer 6
/declare Bellowtimer int outer 300
/declare targetammount int outer
/declare PrevSong int outer 0
/declare maintimer int outer 0
/echo Selo's: ${Me.Gem[${SeloSong}].Name}
:needtarget
/call event_needtarget
/call selosong
:MainLoop 
/if (${Target.ID}==${Me.ID}) /squelch /target clear
/if (${Zone.ID}!=${myzone}) {
/circle off
/nomodkey /keypress forward
/nomodkey /keypress left
/nomodkey /keypress right
/camp desktop
/mqlog camping out
/endmac
}
/doevents
/if (!${Target.ID}) {
/keypress forward hold
/delay 3s
/goto :needtarget
}
/nomodkey /keypress forward hold
/call healsong
/call selosong
/call Bellow
/call GMCheck
|/call dirgesong
 
/delay 1S
/nomodkey /keypress forward hold
/doevents
/goto :MainLoop 
/return 
 
Sub GMCheck
 
/if (${Spawn[gm].ID}) {
/Log GM entered the zone!
/log For safty reasons ending the macro
/mqlog GM entered the zone!
/mqlog For safty reasons ending the macro
/keypress forward hold
/q
}
 
/return
 
Sub Event_join
/declare currentmob local ${Target.ID}
/target ladyhavvk
/invite
/target id ${currentmob}
/return
 
Sub Event_NeedTarget 
/if (!${Target.ID}) /squelch /target npc radius 275
/keypress forward hold
/if (${Target.ID}) /squelch /twist 2 3 4 5 7
/return
 
Sub Event_NeedTarget2
/squelch /target npc radius 275
/keypress forward hold
/return
 
Sub Event_seetarget
/varcalc targetammount ${targetammount}+1
/if (${targetammount}>=10) {
/squelch /target npc radius 275
/squelch /twist reset
/varset targetammount 0
/return
}
/return
 
Sub Event_targetid
/varset targetammount 0
/return
 
sub selosong
/if (${Me.Buff[${Me.Gem[${SeloSong}].Name}].Duration}<=2) { 
/echo Selos about to die 
/squelch /twist 8
/delay 1S
/nomodkey /keypress forward hold
/delay 1S
/nomodkey /keypress forward hold
/delay 1S
/nomodkey /keypress forward hold
/delay 1S
/nomodkey /keypress forward hold
/squelch /twist 2 3 4 5 7
/varset healsong 0
/call healsong
/varset PrevSong 0 
/doevents 
/return 
} 
 
/return
 
sub dirgesong
/if (!${Target.ID}) /return
/if (${Me.CurrentMana}>=880) {
/echo dirge
/squelch /twist ${DirgeSong}
/delay 1S
/nomodkey /keypress forward hold
/delay 1S
/nomodkey /keypress forward hold
/delay 1S
/nomodkey /keypress forward hold
/delay 1S
/nomodkey /keypress forward hold
/squelch /twist 2 3 4 5 7
/varset healsong 0
/call healsong
 
/doevents
/return
}
/return
 
 
Sub healsong
/if (${healsong}==0) /if (${Me.PctHPs}<=95) {
/squelch /twist 1 2 3 4 5
/varset healsong 1
/return
}
/if (${healsong}==1) /if (${Me.PctHPs}>=96) {
/squelch /twist 2 3 4 5 7
/varset healsong 0
/return
}
/return
 
Sub Event_quit
/circle off
/warp succor
/camp desktop
/endmac
/return
 
Sub Event_logoff
/delay 60s
/keypress forward
/keypress left
/keypress right
/camp desktop
/endmac
/return
 
Sub Event_EXP 
/target npc
/if (!${Target.LineOfSight}) /squelch /target clear
|/squelch /target npc radius 275
/if (${Target.ID}) {
/squelch /twist 2 3 4 5 7
/return
} else {
/squelch /twist 8
/goto :looting
}
:looting
/look
/target npc
/if (!${Target.LineOfSight}) /squelch /target clear
/if (${Target.ID}) {
/circle on 110 1382.46 1215.35
/squelch /twist 2 3 4 5 7
/return
}
/target npc corpse radius 200
/if (!${Target.ID}) {
/circle on 110 1382.46 1215.35
/return
}
/if (${Target.ID}) {
/circle off
/call LootMob
/goto :looting
}
/return
Sub LootMob 
/declare LootChance int inner 0
/declare LootSlot int inner 0 
/declare LootCheck int inner 0 
/declare LootTotal int inner 0 
 
/face fast nolook 
 
/squelch /stick 5
:Distance
/if (${Target.Distance}<=10) { 
/squelch /stick off
/loot
} else {
/goto :Distance 
}
/squelch /stick off
/loot
/delay 1s 
/if (!${Corpse.Items}) { 
/shift /notify InventoryWindow IW_Money1 leftmouseup
/destroy
/shift /notify InventoryWindow IW_Money2 leftmouseup
/destroy
/shift /notify InventoryWindow IW_Money3 leftmouseup
/destroy
/notify LootWnd DoneButton leftmouseup
/look
/return 
} 
 
/varset LootTotal ${Corpse.Items} 
/for LootSlot 1 to ${LootTotal} 
/itemnotify loot${LootSlot} rightmouseup 
	/delay 5
/next LootSlot 
/shift /notify InventoryWindow IW_Money1 leftmouseup
/destroy
/shift /notify InventoryWindow IW_Money2 leftmouseup
/destroy
/shift /notify InventoryWindow IW_Money3 leftmouseup
/destroy
/notify LootWnd DoneButton leftmouseup
/look
/cleanup
/return 
 
Sub Bellow 
/if (${Me.AltAbilityReady[Boastful Bellow]} && ${Target.Type.Equal[NPC]}) { 
/aa act Boastful Bellow 
/delay 5
} 
/return 
 
Sub Event_speedsong
/squelch /twist 8
/delay 1S
/nomodkey /keypress forward hold
/delay 1S
/nomodkey /keypress forward hold
/delay 1S
/nomodkey /keypress forward hold
/delay 1S
/nomodkey /keypress forward hold
/squelch /twist 2 3 4 5 7
/varset healsong 0
/call healsong
/return
 
I've just done two back to back runs of 6 hours in Vxed without getting killed. I've been logging the sessions to see what is killing me and the number one offender right now is damaging summoning mobs with a dot in that sweet spot, where your song is about to land and the targeting part of the loop hasn't switched to a proper target yet.

This seems to happen 50% of the time. My solution atm is to warp to succor as soon as the "YOU HAVE BEEN SUMMONED" text appears and to camp out. Unfortunetly by the time the summoned text appears I'm often dead so I'm not sure what to do at this point.

I guess I could stop the twist every time a mob dies and start it up again after the targeting routine. Might lose a little DPS, but if it gauruntees a 6 hour Vxed run every time it would be worth it.
 
i normally restart the twist just because i like my dots in a certain order, but then i'm strange
 
ok so I finally get MQ2 compiled. I got the target.mac set up... but with the MQTwist and MQmoveutils plugins I cant get to function correctly. When i try and load the plugin it says "plugin could not be loaded" i have read the mq2 boards and these boards for almost everything i could find regarding the issue but I cant seem to make them function. can anyone help me compile them and send them to me?
 
thats what I meant. mq2 thats how it is under my MQ2 folder and when i try and /plugin mq2twist etc.... tells me plugin could not be loaded
 
Go ahead and type /plugin list
This will give a list of the plugins there are compiled. It could be that the plugin wasn't included in the compile of your MQ2.

NC23 said:
thats what I meant. mq2 thats how it is under my MQ2 folder and when i try and /plugin mq2twist etc.... tells me plugin could not be loaded
 
Personally this is what I use when I run a bard bot, works a lot better and insta gates out if people get too close and usually have 0 problems with deaths etc. Auto heals yourself, but if you do this macro in vxed I would recommoned adding some target checks for lvl > 67 and the venomous mite.
Usage: /mac kite circle xloc yloc circleradius playerdetectionradius
so like /mac kite circle 1800 -1700 65 120


Rich (BB code):
|kite.mac
|Chopped up Dizzy.mac edited by Airvz 
#Event zone "#*#You have entered #*#" 



#turbo 40 
#chat tell 

Sub Main(string PathType) 
/combat off
/declare HpTimer timer Outer
/varset HpTimer 1m   

/declare timerSelo timer outer 0 
   /if (${PathType.Equal[diamond]}) { 
      /declare DiamondY float outer 
      /declare DiamondX float outer 
      /declare N float outer 
      /declare S float outer 
      /declare E float outer 
      /declare W float outer 
      /declare TooClose float outer 
      /varset DiamondY ${Param1} 
      /varset DiamondX ${Param2} 
      /varset N ${Param3} 
      /varset S ${Param4} 
      /varset E ${Param5} 
      /varset W ${Param6} 
      /varset TooClose ${Param7} 
      /echo Running a diamond around (${DiamondY},${DiamondX}) with N/S/E/W corners ${N} ${S} ${E} ${W} ${If[${TooClose}>0,"- Paranoia Range set at: ${TooClose}",]}. 
   } else /if (${PathType.Equal[circle]}) { 
      /declare CircleY float outer 
      /declare CircleX float outer 
      /declare CircleR float outer 
      /declare TooClose float outer 
      /varset CircleY ${Param1} 
      /varset CircleX ${Param2} 
      /varset CircleR ${Param3} 
      /varset TooClose ${Param4} 
      /echo Running a perfect circle around (${CircleY},${CircleX}) at radius ${CircleR} ${If[${TooClose}>0,"- Paranoia Range set at: ${TooClose}",]}. 
   } else { 
      /call DumbAss 
   } 

   | Declare and set some variables for A.I. control. 
   /declare ProximityTimer timer outer 
   /declare StopMe int outer 0 
   /declare LastAAExp float outer ${Me.PctAAExp} 
   /declare TotalAAExp float outer 0 
   /declare LastLvl float outer ${Me.PctExp} 
   /declare TotalLvl float outer 0 

|EDIT THIS AREA TO AVOID FRIENDS TRIPPING YOUR INSTA GATE
| /alert add 1 playername
   | Add myself to the friendly PC list. 
 /squelch /alert add 1 ${Me.Name} 
 



| EDIT THIS LINE - the songs you'll twist while kiting go here. Dots in gem 2-5 and 10 is for Composers Greaves if you got them
| otherwise EDIT 10 to be whatever gem you have selos in. MAKE SURE YOU HAVE YOUR HEAL SONG IN GEM 6 
   /if (!${timerSelo}) { 
      /squelch /twist  2 3 4 5 10
    } 

   | Start moving and keep running Clockwise around the circular path. 
   /keypress up hold    
   :MainLoop 
   /call GMCheck
  /if (${HpTimer}<=0) /call HpTimerEvent
   /if (${PathType.Equal[circle]}) /call Circle ${CircleY} ${CircleX} ${CircleR} 
   /if (${PathType.Equal[diamond]}) /call Diamond ${DiamondY} ${DiamondX} ${N} ${S} ${E} ${W} 

   /if (!${StopMe}) { 
      /doevents 

      | Display 
      /if (${Me.PctExp}!=${LastLvl} || ${Me.PctAAExp}!=${LastAAExp}) /call ExpGain 

      | If any PCs are too close, go into standby. 
      /if (${TooClose} && ${Spawn[pc noalert 1 radius ${TooClose}].ID} && ${Me.CurrentMana}>900) { 
         /megawarp gate 
         /varset StopMe 1 
         /varset ProximityTimer 20s 
         /echo Foreign PC (${Spawn[pc noalert 1 radius ${TooClose}].Name}) detected inside Paranoia Range (${TooClose}), gating. 
   /mqlog Foreign PC (${Spawn[pc noalert 1 radius ${TooClose}].Name}) detected inside Paranoia Range (${TooClose}), gating. 
      } 

      | Stop twisting if no target. 
      /if (${Target.Type.Equal[PC]} && ${Twisting}) /squelch /twist stop 

      | If the current target is too high-level, too far away or is a PC, find a new one.      
      /if (!${Target.Type.Equal[NPC]} || ${Target.Distance}>300 || !${Target.ID}) { 
         /target myself 
         /if (${Spawn[npc radius 250].ID}) { 
            /target npc radius 250 

            | Activate the Boastful Bellows AA to tag the targetted mob. 
            /alt activate 199 
            /squelch /twist start 
         } else { 
            /squelch /twist stop 
         } 
      } 
   } 

   /if (${StopMe}>0 && ${Twisting}) /squelch /twist stop 

   /if (${StopMe} && !${ProximityTimer}) /goto :Standby 
   /goto :MainLoop 

   :Standby 
   /alt activate 212 
   /keypress back 
   /keypress back 
   /keypress back 

   | This loop iterates until no foreign PCs are in range and the bard has enough mana to FM. 
   :StandbyLoop 
   /doevents 
   /if (${Math.Calc[${Spawn[pc noalert 1 radius ${TooClose}].ID}==NULL]} && ${Me.CurrentMana}>1000) { 
      /varset StopMe 0 
   /delay 5m 
    
      /keypress up hold 
    
   /twist 3 
   /varset timerSelo 5s 
      /echo No foreign PCs detected, resuming chant-kiting. 
      
      /keypress Esc 
      /goto :MainLoop 
   } 
   /goto :StandbyLoop 

/return 

| ------------------------------------------------------- 
| Circle: Keeps the character facing a clockwise tangent 
| to a circular path. Arguments are the center 
| coordinates and the radius of the circle. 
| Created by IceIsFun 
| ------------------------------------------------------- 
Sub Circle(float Y,float X,float R) 
   /declare C_Heading float local 
   /declare C_Distance float local 
   /vardata C_Heading Heading[${Y},${X}].DegreesCCW 
   /vardata C_Distance Math.Distance[${Y},${X}] 

   /if (${C_Distance}<${R}) { 
      /face heading ${Math.Calc[${C_Heading}+180]} 
   } else { 
      /face heading ${Math.Calc[${C_Heading}+${Math.Calc[90*${Math.Calc[${R}/${C_Distance}]}]}]} 
   } 
/return 

| ------------------------------------------------------- 
| Diamond: Keeps the character facing the next corner of 
| a clock-wise diamond path. Arguments are the center 
| coordinates and N/S/E/W distance offsets for each 
| corner of the diamond. 
| Created by IceIsFun 
| ------------------------------------------------------- 
Sub Diamond(float CenterY,float CenterX,float North,float South,float East,float West) 
   /if (${Me.X}>${CenterX} && ${Me.Y}>${CenterY}) /face fast nolook loc ${Math.Calc[${CenterY}+${North}]},${CenterX} 
   /if (${Me.X}>${CenterX} && ${Me.Y}<${CenterY}) /face fast nolook loc ${CenterY},${Math.Calc[${CenterX}+${West}]} 
   /if (${Me.X}<${CenterX} && ${Me.Y}>${CenterY}) /face fast nolook loc ${CenterY},${Math.Calc[${CenterX}-${East}]} 
   /if (${Me.X}<${CenterX} && ${Me.Y}<${CenterY}) /face fast nolook loc ${Math.Calc[${CenterY}-${South}]},${CenterX} 
/return 

| ------------------------------------------------------- 
| ExpGain: echos a formatted message, indicating total AA 
| and regular exp gained during the RunTime of the 
| current macro. Calls Sub Formatted_RunTime. 
| Assumes the following declarations in Sub Main: 
| /declare LastAAExp float outer ${Me.PctAAExp} 
| /declare TotalAAExp float outer 0 
| /declare LastLvl float outer ${Me.PctExp} 
| /declare TotalLvl float outer 0 
| Created by IceIsFun 
| ------------------------------------------------------- 
Sub ExpGain 

   /if (${Me.PctExp}<${LastLvl}) { 
      /varset TotalLvl ${Math.Calc[${TotalLvl}+${Math.Calc[100+${Me.PctExp}-${LastLvl}]}]} 
      /varset LastLvl ${Me.PctExp} 
   } else { 
      /varset TotalLvl ${Math.Calc[${TotalLvl}+${Math.Calc[${Me.PctExp}-${LastLvl}]}]} 
      /varset LastLvl ${Me.PctExp} 
   } 

   /if (${Me.PctAAExp}<${LastAAExp}) { 
      /varset TotalAAExp ${Math.Calc[${TotalAAExp}+${Math.Calc[100+${Me.PctAAExp}-${LastAAExp}]}]} 
      /varset LastAAExp ${Me.PctAAExp} 
   } else { 
      /varset TotalAAExp ${Math.Calc[${TotalAAExp}+${Math.Calc[${Me.PctAAExp}-${LastAAExp}]}]} 
      /varset LastAAExp ${Me.PctAAExp} 
   } 

   /call Formatted_RunTime 

   /echo ${Macro.Name} has generated ${TotalAAExp}% AA Exp and ${TotalLvl}% Regular Exp in ${Macro.Return}. 
/return 

| ------------------------------------------------------- 
| Formatted_RunTime: returns a formatted string, giving 
| the RunTime of the current Macro in HH:MM:SS. 
| Created by IceIsFun 
| ------------------------------------------------------- 
Sub Formatted_RunTime 
   /declare Hours int local ${Math.Calc[${Macro.RunTime}/3600].Int} 
   /declare Minutes int local ${Math.Calc[${Math.Calc[${Macro.RunTime}-${Math.Calc[${Hours}*3600]}]}/60].Int} 
   /declare Seconds int local ${Math.Calc[${Macro.RunTime}-${Math.Calc[${Hours}*3600]}-${Math.Calc[${Minutes}*60]}]} 
   /declare Zero int local 0 

   /declare S_Total string local ${Hours}: 

   /if (${Minutes}>9) { 
      /varset S_Total ${S_Total}${Minutes}: 
   } else { 
      /varset S_Total ${S_Total}${Zero}${Minutes}: 
   } 

   /if (${Seconds}>9) { 
      /varset S_Total ${S_Total}${Seconds} 
   } else { 
      /varset S_Total ${S_Total}${Zero}${Seconds} 
   } 
/return ${S_Total} 

| ------------------------------------------------------- 
| DumbAss: Echos usage instructions for Dizzy.mac 
| ------------------------------------------------------- 
Sub DumbAss 
     /echo kite.mac usage: 
   /echo 
   /echo .: CIRCLE VERSION :. 
   /echo /mac Dizzy circle <Y> <X> <Radius> [<Paranoia Range>] 
   /echo       <Y>        - The Y-coordinate of the center of the circle you want to run. 
   /echo       <X>        - The X-coordinate of the center of the circle you want to run. 
   /echo     <Radius>     - The radius of the circle you want to run. 
   /echo <Paranoia Range> - OPTIONAL range at which non-friendly PCs will trigger a standby mode. 
   /echo 
   /echo .: DIAMOND VERSION :. 
   /echo /mac kite diamond <Y> <X> <North> <South> <East> <West> [<Paranoia Range>] 
   /echo       <Y>        - The Y-coordinate of the center of the diamond you want to run. 
   /echo       <X>        - The X-coordinate of the center of the diamond you want to run. 
   /echo     <North>      - The distance "north" (+Y) from the center of the diamond you want to run. 
   /echo     <South>      - The distance "south" (-Y) from the center of the diamond you want to run. 
   /echo      <East>      - The distance "east" (-X) from the center of the diamond you want to run. 
   /echo      <West>      - The distance "west" (+X) from the center of the diamond you want to run. 
   /echo <Paranoia Range> - OPTIONAL range at which non-friendly PCs will trigger a standby mode. 
   /echo 
   /echo NOTES: 
   /echo - This macro assumes you have compiled and loaded the MQ2Twist plugin. 
   /echo - Edit the line that says "/squelch /twist 2 3 4 5 10" with the gems for your chants. 
   /echo - Edit the line that says "/if (${ChatText.Equal["password"]}) {" with the password of your choice. 
   /echo - If you don't have the bard AA "Fading Memories", Paranoia Range will probably get you killed. 
   /echo - To add a "friendly" PC, type "/alert add 1 mynewfriendsname". 
/return 

| ------------------------------------------------------- 
| Event_Chat: responds to password-protected 
| group requests and status requests. Invites the sender 
| to the group and sets them to "friendly" status if the 
| correct password is given. 
| ------------------------------------------------------- 
Sub Event_Chat(string ChatType,string Sender,string ChatText) 
   /mqlog ${ChatType}: ${Sender} tells you: ${ChatText} 
   /declare MyMob int local 
   /varset MyMob ${Target.ID} 
 |EDIT THIS make "password' whatever you want so people can get invited to group 
 /if (${ChatText.Equal["password"]}) { 
      /alert add 1 ${Sender} 
      /if (${Group}<6) { 
         /target range 1 22000 ${Sender} 
         /invite 
         /tell ${Sender} I'm kiting at ${Me.Y}, ${Me.X} -- come join me. 
      } else { 
         /tell ${Sender} My group is full right now, try back later! 
      } 
   } 
|EDIT THIS LINE make "status" what you want for the bot to relay exp etc..
   /if (${ChatText.Equal["status"]}) { 
      /tell ${Sender} I am currently ${If[${StopMe}>0,"in Standby Mode","chant-kiting"]} in ${Zone.Name}. I have ${Me.AAPoints} unspent AA points and have ${Me.PctExp}% experience. 
   } 
    
   /target id MyMob 
/return 
Sub GMCheck 

   /if (${Spawn[gm].ID}) { 
      /mqlog << Gm Entered Zone /q'd to Save My Ass >>
      
      /echo GM has entered the zone! 
      /echo FUCK HIM but ending the macro... 

      /keypress forward 
      /keypress back 

      /quit 
      /endmacro 
   } 
    
/return 

Sub HpTimerEvent
/if (${Int[${Me.PctHPs}]}<60) {
/squelch /twist 2 3 4 5 6 10
/echo << Heal Song Active >>
}
/if (${Int[${Me.PctHPs}]}>80) {
/squelch /twist 2 3 4 5 10

}
/varset HpTimer 1m
/return  

Sub event_zone 
/camp desktop
/mqlog << Zoned >>
/delay 20s
/endmacro 
/return
 
ok i tried that. no it doesnt show up on the plugin list. So i recompiled MQ2 checked the plugins and it still doesnt register and when I type /plugin MQ2Twist and same with the move utils it gives same message plugin could not be loaded. I must be making a mistake with how to compile the plugins and make them function.. but i have read the boards over and over and either i'm just not understanding it (which is likely) or I am doing it correctly but making a mistake at one point that I cant figure out. Anyway someone could compile the plugins for me? or do I have to do it on my end? starting to get a little frustrated.
 
I got it working last night. everything is pretty good although i been having a hard time finding a really good spot at 59 to kyte. other than that things working great.... btw... is there any way to shut off the auto camp that happens when you zone or die?
 
How would I edit the INI file to use clickies with mq2twist? I assume it would be the INI fhat y characters name correct?
lets say I have composers greaves and Lute of flowing water I would like to use in my twist (lute in inventory so I can twist with drums).
I see this in INI file atm..
[Click_11]
CastTime=0
ReCastTime=0
Name=DISABLED
Slot=DISABLE

Thanks in advance for help
Also is it feaseable to use lute of Flowing water? would allow me to twist more DoTs or PoV etc..
 
[MQ2Twist]
Delay=33
Quiet=0
Adjust=1
[Click_10]
CastTime=0
ReCastTime=0
Name=DISABLED
Slot=DISABLED
;Amulet of Necropotence
[Click_11]
CastTime=0
ReCastTime=0
Name=Amulet of Necropotence
Slot=DISABLED
;Sigil earring of Veracity
[Click_12]
CastTime=0
ReCastTime=0
Name=Sigil Earring of Veracity
Slot=DISABLED
;Tiny cloak of darkest night
[Click_13]
CastTime=15
ReCastTime=0
Name=tiny cloak of darkest night
Slot=DISABLED
;lute of the flowing waters
[Click_14]
CastTime=0
ReCastTime=0
Name=Lute of the Flowing Waters
Slot=DISABLED
;voice of the serpent
[Click_15]
CastTime=30
ReCastTime=0
Name=Voice of the Serpent
Slot=DISABLED
;Composers Greaves
[Click_16]
CastTime=10
ReCastTime=0
Name=Composers greaves
Slot=DISABLED
[Click_17]
CastTime=0
ReCastTime=0
Name=DISABLED
Slot=DISABLED
[Click_18]
CastTime=0
ReCastTime=0
Name=DISABLED
Slot=DISABLED
[Click_19]
CastTime=0
ReCastTime=0
Name=DISABLED
Slot=DISABLED
 
Last edited:
I finally got the Macros working or so I thought,

I set it up to hunt the gnolls in Southern Plains of Karana, just outside of Split Paw, let is run for a hour before I went to bed, no problems, wrote down my level and % complete for next level,

when I woke up this morning my Bard was in the POK , check xp is was same as when I went to bed(maybe 1 or 2 killsmore) so I go to get corpse, look where I left him running in circles not there, when I find him he is on complete other side of split paw on the map

any ideas what went wrong ???
thanks
 
Yeah they nerfed the plugins so you probably ran straight instead of in circles.
 
The AFK Bard Macro

Users who are viewing this thread

Back
Top
Cart