Macro Bot.mac Updates and Bug Fixes by [40oz]

I had/have no intention to abandon this project, but between work issues and moving around the world, and potentially another move here in a month or two, this has just become very low on my priority list. I haven't even been playing EQ except once in a while to stay on the raid attendance board at very low attendance. Hopefully I can jump in and help with small fixes eventually, but I don't know when that will be.

At least we know you are alive :)
 
Last edited:
Hi all,
I narrowed the issues on bot.mac
It all goes perfectly if i NEVER use the BUFF and DOT lines.
Its been tested on CLE, SHM, SK and NEC so far.
As a reminder, i dont use GOM at all.
Cheers,
Arph
 
thats phenomenal to know, self buffing, grp buffing can all be set up via downflags (i do that anyways), me personally I dont dot really ever

I havent bothered playing anything that depends on dots in yrs, and I lost my necro mac long ago, but there was a simple necro mac that was phenomenal and would run circles around bot for necros cause all it did was pick a target dot and fd (was massive dps cause it was so simple)

sounding very promising for this macro again /keeping fingers crossed
 
So I've looked into GoM issues a lil. GoMUse${i} is used in Dot and Nuke Routines. Any class using these will encounter issues unless they remove #warning. But even with it removed that means that GoM is not working correctly.

Code:
	/if (${Me.Song[Gracious Mana].ID}) {
		/if (!${Defined[GoMSpellName1]}) /declare GoMSpellName1 string outer "Gracious Mana"
	} else /if (${Me.Song[Gift of Mana].ID}) {
		/if (!${Defined[GoMSpellName1]}) /declare GoMSpellName1 string outer "Gift of Mana"
	} else /if (${Me.Song[Gift of Radiant Mana].ID})
		/if (!${Defined[GoMSpellName1]}) /declare GoMSpellName1 string outer "Gift of Radiant Mana"
	} else /if (${Me.Song[Gift of Dreamlike Exquisite Radiant Mana].ID}) {
		/if (!${Defined[GoMSpellName1]}) /declare GoMSpellName1 string outer "Gift of Dreamlike Exquisite Radiant Mana"
	} else /if (${Me.Song[Gift of Exquisite Radiant Mana].ID}) {
		/if (!${Defined[GoMSpellName1]}) /declare GoMSpellName1 string outer "Gift of Exquisite Radiant Mana"
	} else /if (${Me.Song[Gift of Amazing Exquisite Radiant Mana].ID}) {
		/if (!${Defined[GoMSpellName1]}) /declare GoMSpellName1 string outer "Gift of Amazing Exquisite Radiant Mana"
	} else /if (${Me.Song[Gift of Phantasmal Exquisite Radiant Mana].ID}) {
		/if (!${Defined[GoMSpellName1]}) /declare GoMSpellName1 string outer "Gift of Phantasmal Exquisite Radiant Mana"
	}

was added in hopes of correcting that. This is meant to be automated.

As I may have mentioned I don't really play the game anymore. I could look all these up and try to figure out what is supposed to be more important than another but I'd rather come to you and ask that these be put in proper order from best to worst.

The idea is that the worst be the last option, and the best be the first option.

For those of you not coding proficient, I want it to check if the best possible one is available....else if the next best possible one is available etc on down the line. until it finds one that you have. Once it finds the one you have it declares that one at the one to use and exits the if/else chain.

You need not fix the code, just rearrange the text in "here" to show me the correct order, I'll fix the code if needed and you don't know how.

I added the code to the /call Load, which is the first thing that should happen when executing the macro. I chose this location because this is after the ${GoM} string is defined, but before any of the variables are used.

More testing is needed to identify icons as those are also used as variables. thus this may not work.

Not to mention the part where I have a tendency to make mistakes in coding, specifically when I can't test it myself.

Thanks in advance.
 
does anyone have any working ini's for a mage, wizard, warrior, bard, cleric, or shaman? or a working bot mac?
 
Last edited:
Uploading the latest files I have, removed the #warning from bot40.mac to reduce confusion for non-code savey users. Those that are helping me test can just add #warning back.

This release also fixed SummonItem section best I can tell based on user testing.

Update: Found all 75 /call Cast in bot40.mac and added NULL for any parameters not provided to prevent Subroutine ##### not found in WaitCast sub.
 

Attachments

  • Spell_routines.inc
    68.6 KB · Views: 14
  • bot_custom_events.inc
    1.4 KB · Views: 13
  • bot40.mac
    509.7 KB · Views: 13
Last edited:
Anyone using this for pulling as well? Just tried and toon just sits there and does nothing with nav as pulling method. With nav not pulling method it will target a mob but will not do anything after that.
 
Anyone using this for pulling as well? Just tried and toon just sits there and does nothing with nav as pulling method. With nav not pulling method it will target a mob but will not do anything after that.

I've used it, but it's been a whlie.

Code:
[Pulling]
AlertListClear=TRUE
AlertListClearTimer=60m
PullConColor=LIGHT BLUE,BLUE,WHITE,YELLOW
CourseCorrectionTimer=4
AmIPuller=TRUE
PullRadius=1000
PullZRadius=1000
PullCastRange=150
MQ2NavPullRadius=10
MQ2NavPullZRadius=10
ReturnActionTotal=0
PullingMethod=Standard
PullingAnnounceCMD=NULL
PullingTotal=1
PullAtMyHPs=75
PullSkillRequiresLineOfSight1=TRUE
PullSkillRequiresLineOfSight2=TRUE
LeapName=12345
PrePullSkillName=12345
PrePullSkillGem=12345
PrePullSkillDelay=12345
PrePullSkillReuse=12345
PullSkillGem1=gem4
PullSkillName1=LifeSpike
PullSkillDistance1=0

worked on my low level SK.
 
Thanks Chat. Time to see what I've messed up.
 
I got standard pulling to work. Still can't get nav to work but something is better than nothing. I've never really used nav for this before so it will all be new. I'm probably missing something with it.
 
Ill give the files you posted a shot tonite on the cleric
 
tried it on the cleric no issues as of yet except the Chain sitting is back, i looked for the line u put in before but maybe its changed now?
 
tried it on the cleric no issues as of yet except the Chain sitting is back, i looked for the line u put in before but maybe its changed now?

I could add a timer of a few seconds to keep it from happening immediately. IE: when sit is used it also creates a timer of like 5s, and then the if statement for sitting includes a check to see if that timer is !${sitTimer} in order to sit again.

/sit is used 7 times in bot40.mac file, and 1 time in spell_routines.inc. So I would create a global sitTimer at the start of the macro and anytime /sit I also /varset sitTimer 5s

This would make the macro wait at least 5 seconds between any /sit command.

I could even add an INI entry so you can adjust it on the fly.
 
Okay, sit timer done. Works nicely. Default is 2 seconds. It's not 2 seconds after you stand, it's two seconds after you sit, so if you are sat for more than the sitTimer then stand it will sit again immediately, but if you stand again right after it won't sit till the sit timer is up. 5s seems to be a nice number. This will be a new setting in the INI which will likely generate at the bottom called "[General]" and it will say SitTimer=2s. This field populates after you run the new macro.

Also fixed the Echo that was doing "BuffParse" my bad, some of my debugging crap left behind. This was in Spell_routines.inc
 

Attachments

  • bot40.mac
    510.4 KB · Views: 5
  • Spell_routines.inc
    68.5 KB · Views: 11
Last edited:
Got me an error when I set alert to true.
 

Attachments

  • EQ000005.jpg
    EQ000005.jpg
    48.8 KB · Views: 8
Seems like that may have been MQ2 Tripping out.

Code:
	/if (!${Defined[AlertList${AlertList}]}) {
		/declare AlertList${AlertList} timer outer ${alerttimer}
	} else {
		/varset AlertTimer${AlertList} ${alerttimer}
	}

is the code that would fire the /varset, but it checked to see if it is defined first.

Unless it was declared but ${alerttimer} was blank for some reason and it didn't properly initialize the variable.

AlertListClear=TRUE
AlertListClearTimer=60m

where ${alerttimer} is a parameter passed to the AlertRecheck sub and alert list is 1 according to

Code:
/call AlertRecheck 1 "${Ini[MyIni,Pulling,AlertListClearTimer]}"

calls alert list 1 check and pulls the variable for alerttimer from AlertListClearTimer. Since it doesn't have a default value if none is present then it could cause it to be blank and issues with declaration. I'll add a default value of 60m for this. But I think it's just a matter of filling the field out in the INI

That change is in the upload here.
 

Attachments

  • bot40.mac
    510.4 KB · Views: 3
Last edited:
Sent. If you need something else just let me know.
 
ran my guys for about 6 hours with your last one i haven't seen any issues as of yet, will keep you posted if anything pops up again thank you for taking your time to work on this