• 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
Guild Buff Assistant

Release Guild Buff Assistant (2 Viewers) 2.0

No permission to download
Released 1.3.3

This version should be more friendly to people running multiple BuffBots at once. Each character will get its own INI for settings. Want only your wizard to charge people and no one else? Easily done now!
 
yeah I guess I am crazy, 1st I bought the statue for our guildhall, so people could click to FM then I bought EoK on my portwiz so people can port wherever they want from the GH... I spoil my friends.
 
yeah I guess I am crazy, 1st I bought the statue for our guildhall, so people could click to FM then I bought EoK on my portwiz so people can port wherever they want from the GH... I spoil my friends.

My guild is pretty spoiled as well. On days when the buffers are down people freak out a bit.
 
Is there any way to turn off the check for guild members? I run all my bots in a seperate guild than my main box group, would be nice to have this function for them also.
(They have access to the bot guild's GH via permissions.)
 
having an issue with getting cleric to actually buff.
running 6 buffers with it and cleric is only one not working.

goes through all the motions but does nothing. targets fine. stands up and then sits right back down with no spells cast.

any ideas?

Nevermind. I figured it out.
thanks
 
Last edited:
I modified this a few days ago to add the code from cpu.mac by alynel in order to minimize resources on the box I run all my buffbots on. I figured since it was only used for idle toons, I could turn all the bells and whistles off. Obviously, this isn't for everyone, but it helps a lot. Maybe an ini toggle?

I just pasted

| Options -> Display, first bunch of checkboxes
/if (${Window[OptionsWindow].Child[ODP_PCNamesCheckBox].Checked}) {
/echo Hiding PC names
/notify OptionsWindow ODP_PCNamesCheckBox leftmouseup
}
/if (${Window[OptionsWindow].Child[ODP_NPCNamesCheckBox].Checked}) {
/echo Hiding NPC names
/notify OptionsWindow ODP_NPCNamesCheckBox leftmouseup
}
/if (${Window[OptionsWindow].Child[ODP_PetNamesCheckBox].Checked}) {
/echo Hiding Pet names
/notify OptionsWindow ODP_PetNamesCheckBox leftmouseup
}
/if (${Window[OptionsWindow].Child[ODP_MercNamesCheckBox].Checked}) {
/echo Hiding Merc names
/notify OptionsWindow ODP_MercNamesCheckBox leftmouseup
}
/if (${Window[OptionsWindow].Child[ODP_ShowPetOwnerNames].Checked}) {
/echo Hiding Pet Owner names
/notify OptionsWindow ODP_ShowPetOwnerNames leftmouseup
}
/if (${Window[OptionsWindow].Child[ODP_ShowMercOwnerNames].Checked}) {
/echo Hiding Merc Owner names
/notify OptionsWindow ODP_ShowMercOwnerNames leftmouseup
}
/if (${Window[OptionsWindow].Child[ODP_ShowTargetRingCheckbox].Checked}) {
/echo Hiding Target Ring
/notify OptionsWindow ODP_ShowTargetRingCheckbox leftmouseup
}
/if (${Window[OptionsWindow].Child[ODP_ShowTargetHealthCheckbox].Checked}) {
/echo Hiding Target Health
/notify OptionsWindow ODP_ShowTargetHealthCheckbox leftmouseup
}
/if (${Window[OptionsWindow].Child[ODP_LevelOfDetailCheckbox].Checked}) {
/echo Disabling Level of Detail
/notify OptionsWindow ODP_LevelOfDetailCheckbox leftmouseup
}
/if (!${Window[OptionsWindow].Child[ODP_ShowHelmCheckbox].Checked}) {
/echo Showing My Helm
/notify OptionsWindow ODP_ShowHelmCheckbox leftmouseup
}
/if (!${Window[OptionsWindow].Child[ODP_ShowPreLuclinMounts].Checked}) {
/echo Showing Pre-Luclin Mounts
/notify OptionsWindow ODP_ShowPreLuclinMounts leftmouseup
}

| Options -> Display, combo boxes at the top right
/if (1 != ${Window[OptionsWindow].Child[ODP_LoadScreenCombobox].GetCurSel}) {
/echo Setting Load Screen to None
/invoke ${Window[OptionsWindow].Child[ODP_LoadScreenCombobox].Select[1]}
}
/if (1 != ${Window[OptionsWindow].Child[ODP_SkyCombobox].GetCurSel}) {
/echo Setting Sky Type to Off
/invoke ${Window[OptionsWindow].Child[ODP_SkyCombobox].Select[1]}
}
/if (1 != ${Window[OptionsWindow].Child[ODP_NewArmorFilterCombobox].GetCurSel}) {
/echo Setting New Armor to None
/invoke ${Window[OptionsWindow].Child[ODP_NewArmorFilterCombobox].Select[1]}
}

| Far Clip Plane = 20%. Valid values are 0 - 20, corresponding to a clip plane of 0 - 100%
/echo Setting Far Clip Plane to 20%
/notify OptionsWindow ODP_ClipPlaneSlider newvalue 4

| Options -> Display, particle effects
/if (1 != ${Window[OptionsWindow].Child[ODP_SpellParticlesNearClipCombobox].GetCurSel}) {
/echo Setting Spell -> Near Clip to Near
/invoke ${Window[OptionsWindow].Child[ODP_SpellParticlesNearClipCombobox].Select[1]}
}
/if (1 != ${Window[OptionsWindow].Child[ODP_SpellParticlesDensityCombobox].GetCurSel}) {
/echo Setting Spell -> Density to Off
/invoke ${Window[OptionsWindow].Child[ODP_SpellParticlesDensityCombobox].Select[1]}
}
/if (1 != ${Window[OptionsWindow].Child[ODP_SpellParticlesFilterCombobox].GetCurSel}) {
/echo Setting Spell -> On For to My Spells
/invoke ${Window[OptionsWindow].Child[ODP_SpellParticlesFilterCombobox].Select[1]}
}
/if (1 != ${Window[OptionsWindow].Child[ODP_EnvironmentParticlesNearClipCombobox].GetCurSel}) {
/echo Setting Env -> Near Clip to Near
/invoke ${Window[OptionsWindow].Child[ODP_EnvironmentParticlesNearClipCombobox].Select[1]}
}
/if (1 != ${Window[OptionsWindow].Child[ODP_EnvironmentParticlesDensityCombobox].GetCurSel}) {
/echo Setting Env -> Density to Off
/invoke ${Window[OptionsWindow].Child[ODP_EnvironmentParticlesDensityCombobox].Select[1]}
}
/if (1 != ${Window[OptionsWindow].Child[ODP_ActorParticlesNearClipCombobox].GetCurSel}) {
/echo Setting Player -> Near Clip to Near
/invoke ${Window[OptionsWindow].Child[ODP_ActorParticlesNearClipCombobox].Select[1]}
}
/if (1 != ${Window[OptionsWindow].Child[ODP_ActorParticlesDensityCombobox].GetCurSel}) {
/echo Setting Player -> Density to Off
/invoke ${Window[OptionsWindow].Child[ODP_ActorParticlesDensityCombobox].Select[1]}
}
/if (1 != ${Window[OptionsWindow].Child[ODP_ActorParticlesFilterCombobox].GetCurSel}) {
/echo Setting Player -> On For to Me
/invoke ${Window[OptionsWindow].Child[ODP_ActorParticlesFilterCombobox].Select[1]}
}

| LOD Bias = Very Low
/echo Setting LOD Bias to Very Low
/notify OptionsWindow ODP_LODBiasSlider newvalue 0

| Advanced Options, combo boxes
/if (1 != ${Window[AdvancedDisplayOptionsWindow].Child[ADOW_SkyReflectionSizeCombobox].GetCurSel}) {
/echo Setting Dynamic Sky Reflection Size to Tiny (32)
/invoke ${Window[AdvancedDisplayOptionsWindow].Child[ADOW_SkyReflectionSizeCombobox].Select[1]}
}
/if (1 != ${Window[AdvancedDisplayOptionsWindow].Child[ADOW_SkyUpdateIntervalCombobox].GetCurSel}) {
/echo Setting Sky Reflection Update Interval to Once per minute
/invoke ${Window[AdvancedDisplayOptionsWindow].Child[ADOW_SkyUpdateIntervalCombobox].Select[1]}
}
/if (1 != ${Window[AdvancedDisplayOptionsWindow].Child[ADOW_TerrainTextureQualityCombobox].GetCurSel}) {
/echo Setting Terrain Texture Quality to Minimum
/invoke ${Window[AdvancedDisplayOptionsWindow].Child[ADOW_TerrainTextureQualityCombobox].Select[1]}
}
/if (1 != ${Window[AdvancedDisplayOptionsWindow].Child[ADOW_MemoryModeCombobox].GetCurSel}) {
/echo Setting Memory Mode to Least Memory Usage
/invoke ${Window[AdvancedDisplayOptionsWindow].Child[ADOW_MemoryModeCombobox].Select[1]}
}

| Advanced Options, checkboxes
/if (${Window[AdvancedDisplayOptionsWindow].Child[ADOW_WaterSwapCheckbox].Checked}) {
/echo Disabling new water in old zones
/notify AdvancedDisplayOptionsWindow ADOW_WaterSwapCheckbox leftmouseup
}
/if (!${Window[AdvancedDisplayOptionsWindow].Child[ADOW_VertexShadersCheckbox].Checked}) {
/echo Enabling hw Vertex Shaders
/notify AdvancedDisplayOptionsWindow ADOW_VertexShadersCheckbox leftmouseup
}
/if (!${Window[AdvancedDisplayOptionsWindow].Child[ADOW_20PixelShadersCheckbox].Checked}) {
/echo Enabling 2.0 Pixel Shaders
/notify AdvancedDisplayOptionsWindow ADOW_20PixelShadersCheckbox leftmouseup
}
/if (${Window[AdvancedDisplayOptionsWindow].Child[ADOW_AdvancedLightingCheckbox].Checked}) {
/echo Disabling Advanced Lighting
/notify AdvancedDisplayOptionsWindow ADOW_AdvancedLightingCheckbox leftmouseup
}
/if (${Window[AdvancedDisplayOptionsWindow].Child[ADOW_ShadowsCheckbox].Checked}) {
/echo Disabling Shadows
/notify AdvancedDisplayOptionsWindow ADOW_ShadowsCheckbox leftmouseup
}
/if (${Window[AdvancedDisplayOptionsWindow].Child[ADOW_FloraCheckbox].Checked}) {
/echo Disabling Radial Flora
/notify AdvancedDisplayOptionsWindow ADOW_FloraCheckbox leftmouseup
}
/if (${Window[AdvancedDisplayOptionsWindow].Child[ADOW_StreamItemTexturesCheckbox].Checked}) {
/echo Disabling Stream Item Textures
/notify AdvancedDisplayOptionsWindow ADOW_StreamItemTexturesCheckbox leftmouseup
}
/if (!${Window[AdvancedDisplayOptionsWindow].Child[ADOW_DisableTattoosCheckbox].Checked}) {
/echo Disabling Tattoos
/notify AdvancedDisplayOptionsWindow ADOW_DisableTattoosCheckbox leftmouseup
}
/if (${Window[AdvancedDisplayOptionsWindow].Child[ADOW_EnablePostEffectsCheckbox].Checked}) {
/echo Disabling Post Bloom Effects
/notify AdvancedDisplayOptionsWindow ADOW_EnablePostEffectsCheckbox leftmouseup
}
/if (${Window[AdvancedDisplayOptionsWindow].Child[ADOW_EnableBloomCheckbox].Checked}) {
/echo Disabling Bloom Lighting
/notify AdvancedDisplayOptionsWindow ADOW_EnableBloomCheckbox leftmouseup
}

| Shadow Clip Plane = 0%. Valid values are 0 - 100
/echo Setting Shadow Clip Plane to 20%
/notify AdvancedDisplayOptionsWindow ADOW_ShadowClipPlaneSlider newvalue 0

| Actor Clip Plane = 20%. Valid values are 0 - 100
/echo Setting Actor Clip Plane to 20%
/notify AdvancedDisplayOptionsWindow ADOW_ActorClipPlaneSlider newvalue 20

| Max Foreground FPS = 30. Valid values are 0 - 100, corresponding to an fps of 0 - 150
/echo Setting Foreground FPS to 30
/notify AdvancedDisplayOptionsWindow ADOW_MaxFPSSlider newvalue 20

| Max Background FPS = 30. Valid values are 0 - 100, corresponding to an fps of 0 - 150. Slightly different to foreground FPS for some reason
/echo Setting Background FPS to 30
/notify AdvancedDisplayOptionsWindow ADOW_MaxBGFPSSlider newvalue 21

/invoke ${Window[OptionsWindow].DoClose}
/invoke ${Window[AdvancedDisplayOptionsWindow].DoClose}

/echo \agSettings changed!


...in at line 188. It runs the script and then continues on to your code.
 
Added Paladin buffs and rez.. I may have got the paladin buffs incorrect as I currently don't have one. Let me know and will get it fixed. Also added a new INI setting as requested for low power mode.
 
Why are my "bots" only buffing my pets?

Also, does anyone have an ini set up to buff for every level for all buff classes they are willing to share?
 
Last edited:
@RedQueen found an interesting set of bugs in this one. The 61-70 spells have all been replaced so if you want to use the default ini for this someone needs to go through and fix all of the new spell names. Otherwise, for 61-70 you need to set your ini to the correct spell in the [Spells] section for any characters you want to actually cast the correct buffs. It doesn't error out because the spells still exist in the database, they're just not in the spell book. So it just silently continues on with trying to cast them, which should error out except...

If MQ2Cast_Spell_Routines.inc will set your ${spellName} to the ${Macro.Return} of /call SRFindBookName when it tries to find a spell in your spellbook. NOT finding the spell means that gets set to 0. A check should be added after the section modifying spellName to check to make sure you still have a valid spellName (or that code needs to be cleaned up to not let you settle on an invalid spellName). So, when this macro bombs out on those 61-70 spells right now, it does so silently because the spell exists, but it can't be found in your book.

Outside of that, most of the copy pasted code could be cleaned up and moved into subroutines to avoid all of the duplicate code, but in the latest version, pulling the gem from the ini will never work. because:
Code:
    /Declare EncHighLvlBuff1    string outer ${Ini[BuffBot_${EverQuest.Server}_${Me.CleanName}.ini,Spells,61-70 Haste]}
    /Declare EncHighLvlBuff1Gem    string outer
    /if (${Me.Class.Name.Equal[Enchanter]} && ${EncHighLvlBuff1.Find[|]}) {
        /varset EncHighLvlBuff1 ${EncHighLvlBuff1.Arg[1,|]}
        /varset EncHighLvlBuff1Gem ${EncHighLvlBuff1.Arg[2,|]}
    }

At the point where it's trying to get the gem number, the place where it is trying to get the Gem number FROM has already been replaced with just the spell name. Swapping the order would resolve this:
Code:
    /Declare EncHighLvlBuff1    string outer ${Ini[BuffBot_${EverQuest.Server}_${Me.CleanName}.ini,Spells,61-70 Haste]}
    /Declare EncHighLvlBuff1Gem    string outer
    /if (${Me.Class.Name.Equal[Enchanter]} && ${EncHighLvlBuff1.Find[|]}) {
        /varset EncHighLvlBuff1Gem ${EncHighLvlBuff1.Arg[2,|]}
        /varset EncHighLvlBuff1 ${EncHighLvlBuff1.Arg[1,|]}
    }

But a check should still be added to see if the data is valid (and, again, all of that moved to a sub so you're not just repeating the same code 1000 times).

Move the spells and buffs into an array and just do it by your class name, your own level, and your target's level range and you could save a ton of code. So, that's how you start if you want to fix this mac. Alternatively, bribe @ChatWithThisName to turn it into a plugin.
 
is the author of this wonderful macro still around? We have run into a problem with one of our buffers not casting all the buffs they are set to. Specially the ranger will not cast the Wildstalker's Enrichment, despite everything being the in spells.ini. Is there a way to debug this problem?

Edit: spelling

Further edit:
Ok the ranger is casing Wildstalker's Enrichment now, but has stopped casting Shout of the Wildstalker, now. It appears the macro can't handle the TBL spells as well.
 
Last edited:
is the author of this wonderful macro still around? We have run into a problem with one of our buffers not casting all the buffs they are set to. Specially the ranger will not cast the Wildstalker's Enrichment, despite everything being the in spells.ini. Is there a way to debug this problem?

Edit: spelling

This Mac has buff up to RoS, Wildstalker's Enrichment is TBL. Open the mac and replace Copsestalker's Enrichment with Wildstalker's Enrichment, also it cast Wildstalker's Unity for some reason replace that with Shout of the Wildstalker
 
This Mac has buff up to RoS, Wildstalker's Enrichment is TBL. Open the mac and replace Copsestalker's Enrichment with Wildstalker's Enrichment, also it cast Wildstalker's Unity for some reason replace that with Shout of the Wildstalker
Thanks, helps if I hit refresh before I edit.... been a long morning. I edited the ranger part of the macro to add in more "sections", this seems to be a poor way to do it, but appeared to work, but now I find that it is casting both Copse and Wildstalker Enrichment, instead of the shout and enrichment.....
 
Thanks, helps if I hit refresh before I edit.... been a long morning. I edited the ranger part of the macro to add in more "sections", this seems to be a poor way to do it, but appeared to work, but now I find that it is casting both Copse and Wildstalker Enrichment, instead of the shout and enrichment.....
This casts shout and 105 enrichment, I dont have a TBL ranger to test if windstalkers enrichment casts, but i added it in.
 

Attachments

I've tried using this on a couple of toons (clr and sha), and they will cast buffs on my 115 toon. But when they are not casting, they constantly switch between AFK and not AFK. Is there a way to turn off AFK? Thanks in advance!
 
I am trying to change configuration, but it ignores the config and still casts pre-ToV buffs from the Enchanter.

[Spells]
1-45 Haste=Swift Like the Wind|gem1
1-41 Clarity=Boon of the Clear Mind|gem2
42-45 Clarity=Gift of Pure Thought|gem3
46-60 Haste=Speed of Vallon|gem4
46-60 Clarity=Clairvoyance|gem5
61-70 Haste=Speed of Prokev|gem6
61-70 Clarity=Precognition|gem7
71-80 Haste=Speed of Milyex|gem6
71-80 Clarity=Perspicacity|gem7
71+ Haste=Speed of Milyex|gem6
71+ Clarity=Perspicacity|gem7

81+ Haste=Speed of Cekenar|gem13
81+ Clarity=Voice of Sagacity|gem12


The macro keeps adding in this section, and ignores this section. It's also using spell slot 1, and not 6 or 7 for its earlier buffs. I tried changing 71+ to 71-80, but it reverts back by ignoring my 71-80 lines, adds the 71+ and uses that instead on a 115.
 
@Teichou i added ench clarity and haste, shaman buffs and mage ds spells up to 115 attached is the updated macro. It is fully tested
 

Attachments

Is it possible to add for cleric, Jorlleag and Righteousness?

Also Sagacity, Cekanar, and 2 runes for the chanter?
 
Last edited:
set this up and my wizard just gets all twitchy and goes afk and unafk over and over and over again and wont cast spells.

My shaman is doing the afk thing and works, but is casting stupid spells from level 106 and lower.

Edit: My wiz will TL you to bind.... but that's an AA ability.

Also, how do I add ports? All the ports in this macro are old and useless. I need new ToV ports.
 
Last edited:
@Teichou i added ench clarity and haste, shaman buffs and mage ds spells up to 115 attached is the updated macro. It is fully tested
Why is it just endlessly cycling AFKs? It also prevents me from doing anything on the character while i stand there.... the cursor just keeps dropping anything I pick up.
 
Willing to pay someone for their time:

Would like to add some shaman buffs, ench buffs, cleric buffs, ranger buffs - all 115.

I have no idea how to write code for this.
 
Release Guild Buff Assistant

Users who are viewing this thread

Back
Top
Cart