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

Any luck on this Chat's i know you have been diving into the dev macs just didnt know if you had a chance to look into this one yet
 
Any luck on this Chat's i know you have been diving into the dev macs just didnt know if you had a chance to look into this one yet

Looking into each individual call to a particular sub is going to be a quite intensive process. I haven't been able to start on it yet. I'm not sure when I'll be able too either. I do have it on my todo list.
 
Bot40.mac status?

I've finally entering a slow period at work and I'd like to help with whatever I can for getting bot40.mac working properly again.

Is there anything an entry level coder, with at least one 105 of every class available, can help with?

The bot40.mac file I've got is 488,485 bytes and says version v2016.1009.

How's 40oz doing with the move?
 
Last edited:
Chats has been working on it a lot, got a lot working on it still a few issues here and there
 
For the sake of clarity, these are the latest Bot40 files I have personally. If you are interested in working on the code these are the latest files to work with.

Structure for the code should be ~~>

Main ~>Load which pulls from the INI in theory all information needed for the current INI. Successively everything inside the OptionsCheck=|Pulling|Merc|AA|Aura|Buff|ClickyMaintenance|ClickyNuke|Fade|Disc|Snare|Endurance|

this is a clip from my ini on a zerker. Though I can't confirm all of these work.

For each thing in the options check it'll run the load sub for the particular item between the |Sub|. using an find | to |. Once loading is complete it should enter the main loop. The main loop should run each sub in the order listed (theoretically). Thus if you want to buff before pulling you should move buff before pulling. if a particular sub it throwing errors and you don't know how to correct issues using the information from the thrown error you should omit that section by deleting it. Otherwise, use it to fix the issue presented. IE: If you get an undeclared variable - you should declare it in the LOAD sub, not the main sub for that routine. IE: Sub Buff vs Sub BuffLoad, BuffLoad should load all variables needed for Sub Buff.

Creating INI entries.
Code:
/ini "MyIni" "Section" "Key" "ValueToSet"

IE:
Code:
/ini "MyIni" "Buff" "BuffXTarget" "FALSE"

would create (or add to if already present) the section [Buff] in the players INI, it would then add (if not present) the Key BuffXTarget and give it the value of FALSE.

Thus

Code:
[Buff]
BuffXTarget=FALSE

Would be added to the INI.

Getting INI Entries
Code:
 ${Ini[Filename,section,key,value-if-non-is-present]}

Example.
Code:
${Ini[MyIni,Buff,BuffXTargets,False]}
If in the buff section BuffXTargets it gets the value, if no value is present, the value is false. This presents true only if in the INI the value is

Code:
[Buff]
BuffXTargets=TRUE

Additionally, all calls to any Sub-routine should use all parameters.

Code:
/call Cast "${InvisSpell}" ${InvisSpellGem}

Would not be sufficient as the Call the cast presents the following

Code:
Sub Cast(spellName,spellType,giveUpValue,mySub,int ResistTotal)

If you don't use all parameters then the call to Cast will give it the following parameters in this case.

Sub Cast (${InvisSpell}, ${InvisSpellGem}, , , ) which would mean that giveUpValue, mySub, resistTotal would evaluate as a blank and not "NULL" or "FALSE" so either each Call to the sub would need to be adjusted or the sub itself updated to check all variables for a value.
 

Attachments

  • bot40.mac
    507.3 KB · Views: 12
  • Spell_routines.inc
    68.6 KB · Views: 13
  • bot_custom_events.inc
    1.4 KB · Views: 11
So Chat, how usable is the macro? I tried boxing with the plugin and it's still no good, I need the macro.
 
Shaman bug:

Undefined Variable Banestrike used on line 2977@bot40.mac
/varset spellload2
$(ini{Bot_$Me.CleanName}_${MacroQuest.Server}_${Me.Class}.ini.${Sub

Macro doesn't even run. It just sits there
 
Shaman bug:

Undefined Variable Banestrike used on line 2977@bot40.mac
/varset spellload2
$(ini{Bot_$Me.CleanName}_${MacroQuest.Server}_${Me.Class}.ini.${Sub

Macro doesn't even run. It just sits there

I haven't done any work to banestrike. Remove BaneStrike from your Options in the INI and run it again.
 
So Chat, how usable is the macro? I tried boxing with the plugin and it's still no good, I need the macro.

|MasterList=Bard|AA|Aura|AutoClickies|Buff|Camp|Campfire|CheckTarget|ClickyMaintenance|ClickyNuke|Debuff|Disc|Dot|FeignDeath|FightBuff|Heal|HealSingle|HealGroup|HealBalance|HealPet|HealSelf|Jolt|Lifetap|MainTankBuff|Mez|Nuke|Pet|Rez|Root|SelfBuff|Snare|Stun|SummonTank|XHeal|AABuy|Follow|ImHit|Ignore|EchoHandler|Endurance|Mana|Merc|Pulling|SetupAdvLootVars|

Embedded inside of the bot40.mac the above is the masterlist for OptionsCheck

For each above item in that list is 2 Subroutines.

One to run the actual routine, and one to load all the settings for the routine.

Any of those given subroutines are subject to give you errors based on undeclared variables. Simply removing the line of code
Code:
#warning
should make the macro stop pausing when variables are undefined. However, that doesn't mean that the sub will run correctly, it simply means it won't notify you of undeclared variables and pause the macro.

So you can try any of those sections that you feel you need, removing #warning should make it work. Though I can't say how much of it will work as expected. But it does function.
 
Shaman bug:

Undefined Variable Banestrike used on line 2977@bot40.mac
/varset spellload2
$(ini{Bot_$Me.CleanName}_${MacroQuest.Server}_${Me.Class}.ini.${Sub

Macro doesn't even run. It just sits there


Off topic, but Banestrike should just be removed, its a useless ability. Doing 15k dmg on a 5 million + hp mob is just silly. Even if its being cast between your global cooldowns, not to mention that a 15k dmg/60 sec reuses, do that math its just horrible.
 
Problem with the enchanter

rva6b4.png
 
Last edited:
New error: chanter casts Sanguine Mind Crystal and Azure Mind Crystal over and over, but keeps interrupting to sit. Chain casts over and over, interrupts over and over. When I stopped it and cast the spell so the items were created, it stopped it. I looked at the code but it seemed fine to me.

Code:
		/if (${Me.PctMana}>95 && ${Me.AltAbilityReady[Sanguine Mind Crystal]} && !${FindItemCount[Sanguine Mind Crystal]}) {
			/alt act ${Me.AltAbility[Sanguine Mind Crystal].ID}
			/call ${EchoSub} "${Teal} Sanguine Mind Crystal --> ${White} ${Me.CleanName}"
		}
	
		/if (${Me.PctMana}>95 && ${Me.AltAbilityReady[Azure Mind Crystal]} && !${FindItemCount[Azure Mind Crystal]}) {
			/alt act ${Me.AltAbility[Azure Mind Crystal].ID}
			/call ${EchoSub} "${Orange} Azure Mind Crystal --> ${White} ${Me.CleanName}"
		}

More problems.

Enchanter bug:

jto0g6.png


Mage bug. The mage never engages. Just stands there.

2dqpoq8.png


Bug 3: I forget which toon this was.

sbqxx0.png
 
Last edited:
New error: chanter casts Sanguine Mind Crystal and Azure Mind Crystal over and over, but keeps interrupting to sit. Chain casts over and over, interrupts over and over. When I stopped it and cast the spell so the items were created, it stopped it. I looked at the code but it seemed fine to me.

Code:
		/if (${Me.PctMana}>95 && ${Me.AltAbilityReady[Sanguine Mind Crystal]} && !${FindItemCount[Sanguine Mind Crystal]}) {
			/alt act ${Me.AltAbility[Sanguine Mind Crystal].ID}
			/call ${EchoSub} "${Teal} Sanguine Mind Crystal --> ${White} ${Me.CleanName}"
		}
	
		/if (${Me.PctMana}>95 && ${Me.AltAbilityReady[Azure Mind Crystal]} && !${FindItemCount[Azure Mind Crystal]}) {
			/alt act ${Me.AltAbility[Azure Mind Crystal].ID}
			/call ${EchoSub} "${Orange} Azure Mind Crystal --> ${White} ${Me.CleanName}"
		}

More problems.

Enchanter bug:

jto0g6.png


Mage bug. The mage never engages. Just stands there.

2dqpoq8.png


Bug 3: I forget which toon this was.

sbqxx0.png

Sadly I don't really have the time to dedicate properly to this macro atm. Finals in a week.

For mezzing, I haven't fixed it that i'm aware of...so remove that from OptionsCheck/CombatRoutine etc. For the mage, no idea. Need logs to do anything with that. Suppose I'd need to get on a mage and test it myself and work on the code myself.

But again, no real time to invest right now. I can do the one off missing bracket fix here and there, but I can't continue the rework at the moment sadly.
 
So some of the issues im seeing with the cleric mac only seems to happen when she goes to heal a pet. Other then that seems everything else is working fairly well hope that helps narrow it down some once you get some time to look into it
 
Does BOT40 support disc conditions? They don't load into the default ini file.

1 DISC as example:

Code:
[Disc]
DiscTotal=1
DiscUse1=FALSE
DiscName1=Blunt Axe
DiscNamedOnly1=TRUE
DiscRecast1=1s
 
Issue using bot40 on Wizzy:

Code:
TOONNAME - [2017/12/13 14:47:50] WARNING: Undefined Variable GoMSpellIcon1 used on line 8245@bot40.mac /if (${GoMCheck}) {Macro Paused.
TOONNAME - [2017/12/13 14:47:50] WARNING: Undefined Variable GoMSpellName1 used on line 8245@bot40.mac /if (${GoMCheck}) {Macro Paused.
TOONNAME - [2017/12/13 14:47:50] WARNING: Undefined Variable GoMSpellName1 used on line 8245@bot40.mac /if (${GoMCheck}) {Macro Paused.
TOONNAME - [2017/12/13 14:47:50] WARNING: Undefined Variable GoMSpellName1 used on line 8245@bot40.mac /if (${GoMCheck}) {Macro Paused.
TOONNAME - [2017/12/13 14:47:50] WARNING: Undefined Variable GoMSpellName1 used on line 8245@bot40.mac /if (${GoMCheck}) {Macro Paused.
TOONNAME - [2017/12/13 14:47:50] WARNING: Undefined Variable NULLImmuneList used on line 8245@bot40.mac /if (${GoMCheck}) {Macro Paused.

I think these might be default values form the INI:

Code:
[GoM]
GoMTotal=3
GoMTotalIfNamed=3
GoMAnnounce=TRUE

GoMUse1=TRUE
GoMSpellName1=Ethereal Incandescence 
GoMSpellGem1=Gem6

GoMUse2=TRUE
GoMSpellName2=Ethereal Hoarfrost 
GoMSpellGem2=Gem10

GoMUse3=TRUE
GoMSpellName3=Gosik's Fire
GoMSpellGem3=Gem8
GoMConditions=TRUE
 
Last edited:
Greetings all, and I'm back temporarily from my college work. I have lots of content to try and go over so I can verify and make corrections to the bot40.mac. Though 40oz hasn't been here for some time I suppose leaving it as bot40 isn't unreasonable as it helps identify the macro as separate from the old bot.mac. I feel 40oz has abandoned this project as we've had no communication since early on in my adoption of this program. I had hoped others would be able to step up to correct minor issues with this bot. But at least in my absense a large list of things to fix has been brought to my attention. I'll be getting to work on this in short order.

It should also be mentioned a large portions of dev's bots have had information accumulated for me to look at as well.

I feel that the majority of the big issues for this macro have been attended too. Hopefully all the minor issues can be fixed. In the mean time I'm going to remind everyone that removing the #warning near the top of the macro should get it moving forward so that it is more or less functional for you.

In some cases I feel that the method this macro loads information should be rewritten, not because it's somehow wrong, but because I don't fully understand it. The loading of the information in the loading subs is primarily what is causing the issues with undefined variables and information missing from the INI. I tried to tackle that issue, and while I did uncover some issues that got corrected, I haven't found all the issues. Hopefully that is something I can do in the next 30 days to get this macro fully functional.

~Chat
 
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.