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