• 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
Resource icon

Release Overseer (3 Viewers) 04/27/2026

No permission to download
But you need to be really careful with this (see my post in this forum thread on Sep 16th). It works fine if you launch overseer separately, however, if you launch multiples at the same time (either via like /dgga /lua run overseer, or doing it from ingame.cfg) then it will quite often ignore your overseer.lua, create a default one for that character and use it instead.
happens to me too. I need to start all of mine individually.
 
That seems odd. I run 11 toons and log them all in at the same time without an issue. I do have the /Lua run oversser in that field, but I also use a /timed so it does not try to start multiple things at one time and I load it last. Maybe try something like below to see if it helps?

/multiline ; /timed 50 /Lua run guildclicky; /timed 100 /Lua run lem; /timed 150 /Lua run alphabuff; /timed 200 /Lua run invisdisplay; /timed 250 /Lua run boxhud; /timed 300 /Lua run overseer
 
That seems odd. I run 11 toons and log them all in at the same time without an issue. I do have the /lua run oversser in that field, but I also use a /timed so it does not try to start multiple things at one time and I load it last. Maybe try something like below to see if it helps?

/multiline ; /timed 50 /lua run guildclicky; /timed 100 /lua run lem; /timed 150 /lua run alphabuff; /timed 200 /lua run invisdisplay; /timed 250 /lua run boxhud; /timed 300 /lua run overseer
As I said in my September 16th comment, it seems to me that it is an issue with exclusive permissions when opening the overseer.Lua. I say this because the Settings object is nil (as determined by print statements that I added) after it has been loaded (on the characters that fail). I tried looking at the Lua logic that loads the file and it wasn't totally clear to me how to modify it to make it open in read-only mode so as to not inhibit others from simultaneously reading the file.

One simple workaround would be to add a retry:

Code:
if (the settings file exists on the filesystem) then  --Note: This protects against infinite loop in case the file doesn't exist
   repeat
        attempt to load the settings file
        if (settings == nil) then
            delay some random amount
        endif
    until settings ~= nil
endif

The above logic fails if the overseer.Lua file is corrupted (i.e. is seen by the filesystem as existing, but unable to be loaded by the load logic). Maybe one could account for this edge case just by adding a print statement inside the "if (settings == nil)" check like "Retrying loading the settings file. If this persists forever then perhaps your overseer.Lua file is corrupted."
 
As I said in my September 16th comment, it seems to me that it is an issue with exclusive permissions when opening the overseer.lua. I say this because the Settings object is nil (as determined by print statements that I added) after it has been loaded (on the characters that fail). I tried looking at the lua logic that loads the file and it wasn't totally clear to me how to modify it to make it open in read-only mode so as to not inhibit others from simultaneously reading the file.

One simple workaround would be to add a retry:

Code:
if (the settings file exists on the filesystem) then  --Note: This protects against infinite loop in case the file doesn't exist
   repeat
        attempt to load the settings file
        if (settings == nil) then
            delay some random amount
        endif
    until settings ~= nil
endif

The above logic fails if the overseer.lua file is corrupted (i.e. is seen by the filesystem as existing, but unable to be loaded by the load logic). Maybe one could account for this edge case just by adding a print statement inside the "if (settings == nil)" check like "Retrying loading the settings file. If this persists forever then perhaps your overseer.lua file is corrupted."
Gotcha! My bad as I missed the reference to the 9/16 post. I use individual files, so the issue you are describing would not apply to my setup or comment.

I do wonder though if using the /timed for this Lua with a different value for each toon in the server_toonname.cfg file instead of the ingame.cfg file would be a quick workaround until/if another solution is discovered.
 
Yeah, that's the weird thing. When I launch EQ for a handful of toons simultaneously (using an AutoLogin profile) they seem to all be naturally staggered by a few seconds, however, I still encounter the overseer issue sporadically. Note: my overseer launch is in my ingame.cfg. I imagine that doing a "/dgga /lau run overseer" would be a much more reliable way to reproduce the problem I'm seeing because this would be much closer to simultaneous.

Anyway, I switched back to per-character configurations after my 9/16 post, so I'm referencing my prior findings--while I was still trying to use the single shared configuration.

I will try to find some time to try out my solution that I pseudo-coded above. If it works reliably then I'll send you the change for your review and possible inclusion.

I sincerely hope that my comments haven't come across as ungrateful or criticizing. Completely on the contrary, I'm a huge fan of this script and *very* appreciative of your efforts on it. Thank you.
 
Only one macro can be used at a time but you can use multiple Lua's at one time. And yes, this Lua does collect your rewards. Look under settings --> rewards and select what you would like in the desired order. Hope that helps!
 
As I said in my September 16th comment, it seems to me that it is an issue with exclusive permissions when opening the overseer.lua. I say this because the Settings object is nil (as determined by print statements that I added) after it has been loaded (on the characters that fail). I tried looking at the lua logic that loads the file and it wasn't totally clear to me how to modify it to make it open in read-only mode so as to not inhibit others from simultaneously reading the file.

One simple workaround would be to add a retry:

Code:
if (the settings file exists on the filesystem) then  --Note: This protects against infinite loop in case the file doesn't exist
   repeat
        attempt to load the settings file
        if (settings == nil) then
            delay some random amount
        endif
    until settings ~= nil
endif

The above logic fails if the overseer.lua file is corrupted (i.e. is seen by the filesystem as existing, but unable to be loaded by the load logic). Maybe one could account for this edge case just by adding a print statement inside the "if (settings == nil)" check like "Retrying loading the settings file. If this persists forever then perhaps your overseer.lua file is corrupted."
Thank you, SomeRandomDude. To help me understand this - it seems there's an issue with "too many characters" hitting the shared Lua at the same time.

EDIT: Doing more testing, I can reproduce this regularly now. Will address.
 
Last edited:
I am encountering a hang with the new Overseer.Lua on the test server. EQ and RG work correctly up to the point where I do /Lua run overseer, and then it all hangs and requires me to kill EQ from the OS task manager. It is working fine on the live server. Thanks.
 
I am encountering a hang with the new Overseer.lua on the test server. EQ and RG work correctly up to the point where I do /lua run overseer, and then it all hangs and requires me to kill EQ from the OS task manager. It is working fine on the live server. Thanks.
I am getting similar behavior on live. Appears to work fine if left alone when starting at login. However, when you try and open the gui for config it freezes the window and you have kill it from task manager.
 
I figured today's update would mess with this amazing program. After the confirmation box was removed, the following errors occur but the program still works fine. It completes all tasks =)

1697675258146.png
 
Also, i tried porting my stuff over from overseer.mac and it didnt port my settings in correctly.

[CODE title="Overseer.mac"]
[QuestPriority]
Durations=6h|12h
Levels=5|4|3|2|1
Priorities=Levels|Durations|Rarities|Types
Rarities=Elite|Rare|Uncommon|Common|Easy
Types=Any

[QuestPriority_Group2]
Durations=24h|12h|6hr
Levels=5|4|3|2|1
Priorities=Levels|Durations|Rarities|Types
Rarities=Elite|Rare|Uncommon|Common|Easy
Types=Crafting|Harvesting|Research

[General]
minimumSuccessPercent=60
storeQuestExperienceHistory=0
useQuestPriorityGroups=Group1|Group2
maxLevelForClaimingExpReward=120
claimAgentPacks=0
requireMercToClaimExpRewards=**Obsolete**
maxLevelPctForClaimingExpReward=95
agentCountForConversion=2
claimRewards=1
useQuestPriorities=**Obsolete**
questSelectionType=Priority
useFastAgentSelection=1
ignoreConversionQuests=0
logLevel=2
minimumQuestExperience=0
monitorQuestRotation=0
version=2
countAgentsBetweenCycles=1
ignoreRecruitmentQuests=0
claimTetradrachmPacks=0
repeatTimeMinutes=-1

[QuestPriority_Unsubscribed]
Durations=24h|12h|6h
Levels=5|4|3|2|1
Priorities=Levels|Durations|Rarities|Types
Rarities=Elite|Rare|Uncommon|Common|Easy
Types=Exploration|Diplomacy|Trade|crafting|Military|Stealth|plunder

[Rewards]
1=Collection Item Dispenser
2=Torment of Veeshan
3=Overseer Tetradrachm
index=3

[QuestPriority_Group1]
Durations=24h|12h|6hr
Levels=5|4|3|2|1
Priorities=Levels|Rarities|Types|Durations
Rarities=Elite|Rare|Uncommon|Common|Easy
Types=Trade|Diplomacy|Exploration
[/CODE]

[CODE title="overseer.Lua"]-- Persistent Data
local multiRefObjects = {

} -- multiRefObjects
local obj1 = {
["QuestPriority"] = {
["Durations"] = "6h|12h";
["Levels"] = "5|4|3|2|1";
["Priorities"] = "Levels|Durations|Rarities|Types";
["Rarities"] = "Elite|Rare|Uncommon|Common|Easy";
["Types"] = "Exploration|Diplomacy|Trade|Plunder|Military|Stealth|Research|Crafting|Harvesting";
};
["General"] = {
["minimumSuccessPercent"] = 0;
["ignoreRecruitmentQuests"] = false;
["version"] = 7;
["maxLevelForClaimingExpReward"] = 120;
["claimAgentPacks"] = false;
["agentCountForConversionUncommon"] = 2;
["maxLevelPctForClaimingExpReward"] = 95;
["claimEliteAgentEchos"] = false;
["agentCountForConversionCommon"] = 2;
["claimRewards"] = false;
["agentCountForConversionRare"] = 2;
["showUi"] = true;
["ignoreConversionQuests"] = false;
["claimCollectionFragments"] = false;
["agentCountForConversionElite"] = 99;
["logLevel"] = 1;
["ignoreRecoveryQuests"] = true;
["claimTetradrachmPacks"] = false;
["claimEliteEchos"] = false;
};
["Rewards"] = {
[1] = "Character Experience";
[2] = "Overseer Tetradrachm";
["eliteAgentEchoReward"] = "";
["index"] = 2;
};
["Display"] = {
["showDetailed"] = true;
};
["Debug"] = {
["allowTestMode"] = false;
["doNotFindAgents"] = false;
["doNotRunQuests"] = false;
};
}
return obj1
[/CODE]

What did I do wrong? I cleared out the config/overseer folder, then ran the Lua. rewards aren't matching. I see the general overseer group is being imported over the group1 + 2 etc. which is fairly easy to fix. Ive been putting off converting to the Lua due to expecting issues with importing something that was working mostly fine, and I was not wrong :P Now i gotta fix this shiz
 
Any specific handling instructions for the holiday overseer? like getting the 3-6-9h quests first if possible?
These are typically linear - you have to finish first to get second, etc... And you will not be presented with a quest you've already finished.

Lua Overseer should already be configured to do this for you. It'll run the first, if available, else second, etc...
1698432451349.png
 
1698437241729.png

not sure whats going on i logged in started overseer and it opens restarts opens restarts in a loop forever till it crashed , made sure everything was updated relaunched EQ ran overseer agin to the same result was able to grab this screen shoot befor it crashed
 
View attachment 52185

not sure whats going on i logged in started overseer and it opens restarts opens restarts in a loop forever till it crashed , made sure everything was updated relaunched EQ ran overseer agin to the same result was able to grab this screen shoot befor it crashed
Check that you do not have 10 rewards waiting to be collected in the /rewards.
 
ok after not using script to run overseer and doing it manule im guessing its because there is not a single quest avalable for my settings , i have it set to do only the collection items and there are none in this rotation
 
ok after not using script to run overseer and doing it manule im guessing its because there is not a single quest avalable for my settings , i have it set to do only the collection items and there are none in this rotation
That's interesting. I know this used to work. Haven't tested having restrictions that mean no quests are viable.

I'll test that again later today
 
For what it's worth, a similar loop happens if you choose "trade skill" only quests but fail to click 6hr quests as an option and only leave 12h and 24h. I figured it was not worth mentioning since I was the bonehead that told it to do trade skill only but failed to select 6h LOL.

EDIT - Maybe we could add a message like the cwtn plugins have when you try to execute a command on a toon using the wrong class shortname - Stop that, you don't have 6 hours checked slacker! :)
 
Last edited:
For what it's worth, a similar loop happens if you choose "trade skill" only quests but fail to click 6hr quests as an option and only leave 12h and 24h. I figured it was not worth mentioning since I was the bonehead that told it to do trade skill only but failed to select 6h LOL.

EDIT - Maybe we could add a message like the cwtn plugins have when you try to execute a command on a toon using the wrong class shortname - Stop that, you don't have 6 hours checked slacker! :)

First thing - I'm not reproducing this. Created a set of configurations that resulted in no quests being run. Things just completed and sat waiting for next Cycle.
Will continue but not sure what you're guys' situation is.

Second - just FYI if you weren't aware, but there's an option to "Test" the current configuration.
Selecting it will do a Not-Real run-through and show you which quests would run and in which order. A good way to see what's what without actually committing the runs.
1698597098771.png



1698597426318.png
 
irst thing - I'm not reproducing this. Created a set of configurations that resulted in no quests being run. Things just completed and sat waiting for next Cycle.
Will continue but not sure what you're guys' situation is.
Gotcha, thanks for checking anyway! This was a couple of weeks ago when it did it. I just tried it again now and you're 100% correct, no error. The only difference I can see is that I have 5 quests running so it has nothing to choose from. I set it back to TS only and selected 12h only as well just to see what it does when it cycles next. I also just realized I do have "automatically restart" checked under general, so that may be related as well. I'll test both just because I'm curious.

Second - just FYI if you weren't aware, but there's an option to "Test" the current configuration.
Selecting it will do a Not-Real run-through and show you which quests would run and in which order. A good way to see what's what without actually committing the runs.
1698597098771.png
Super cool. I had no clue that was there, thank you!!

Just to reiterate, this is one of the best Lua's out there hands down!! Such as huge QoL upgrade when you have multiple toons, you can't live without it, so thank you again!
 
It's the "automatically restart" thats causing it. Turn that off and it stops when you dont have the correct length of a quest selected.

1698615489304.png
 
Request: 2 more mq.doevents()
motivation: when running overseer.Lua the account feels often like complete in freeze.

I started to read the Lua in order to find out, where an addditional doevent() may be helpful.
The first point I identified was right before the delay() within the main loop.
As this delay will "freeze" the code a doevent() right before should not change a lot (if any) of the runtime of overseer itself but gives the ability tho check for any events created by the user-UI before going into the delay.
The result was, I could walk the char around or reply to questions of guildies, while overseer was doing its magic.

[CODE title="function main"]function actions.Main()
if (Settings.General.runFullCycleOnStartup and actions.TutorialIsRequired == false) then nextAction = 'FullCycle'
else nextAction = 'Initialize'
end

while true do
ValidateCharacter()

if (nextAction ~= nil) then
if (nextAction == 'FullCycle') then SetCurrentProcess('Running complete cycle') RunCompleteCycle()
elseif (nextAction == 'Initialize') then SetCurrentProcess('Initialze') ReadInitialData()
elseif (nextAction == 'CountAgents') then SetCurrentProcess('Collecting Statistics') CollectAgentStatistics()
elseif (nextAction == 'ClaimCompletedMissions') then SetCurrentProcess('Claiming completed missions') ClaimCompletedMissions()
elseif (nextAction == 'RunTutorial') then SetCurrentProcess('Running tutorial') RunTutorial()
elseif (nextAction == 'RunConversions') then SetCurrentProcess('Running conversion quests') RunConversions()
elseif (nextAction == 'RunRecoveryQuests') then SetCurrentProcess('Running recovery quests') RunRecoveryQuests()
elseif (nextAction == 'RunRecruitQuests') then SetCurrentProcess('Running recruit quests') RunRecruitQuests()
elseif (nextAction == 'RunGeneralQuests') then SetCurrentProcess('Running general quests') RunGeneralQuests()
elseif (nextAction == 'SelectBestAgents') then SetCurrentProcess('Selecting best agents') SelectBestAgents()
elseif (nextAction == 'PreviewGeneralQuestList') then SetCurrentProcess('Generating quest preview list') PreviewGeneralQuestList()
elseif (nextAction == 'CollectAllRewards') then SetCurrentProcess('Collecting Rewards') CollectAllRewards()
elseif (nextAction == 'RetireEliteAgent') then SetCurrentProcess('Retiring Elite Agent') RetireEliteAgent(nextActionParameter)
elseif (nextAction == 'DumpQuestDetails') then SetCurrentProcess('Outputting Quest Details') DumpQuestDetails()
end

if (hasInitializedQuestTimes == false) then
SetCurrentProcess('Initialize')
ReadInitialData()
end

if (HasInitialized == false) then
InitializeTimers()
HasInitialized = true
end

EndCurrentProcess()
nextAction = nil
end

UpdateTimers()
mq.doevents()
mq.delay(1000)

end
end[/CODE]

Laterone I ran overseer on an account with lot of agents (above 2000), so there was a longer conversion time to be expected.
The original overseer.Lua keeps the account almost irresponsible during the conversion timespan.

[CODE lang="Lua" title="walkagents"]local function walk_agents(typeIndex, action, startAction, doneAction)
if (startAction ~= nil) then
startAction(typeIndex)
end

mq.cmdf('/notify OverseerWnd OW_OM_RarityFilter listselect %s', typeIndex+1)
mq.delay(250)

local agentNode = mq.TLO.Window('OverseerWnd/OW_OM_MinionList').FirstChild

local lastAgentName = nil

::nextAgent::
if Aborting then return end
mq.doevents()
[/CODE]

here I added a doevents()
actually the conversion is still running with this modification. Overseer is running fine and I can control the chare, almost like overseer would run in the background, despite overseer is running for more than 2 hours consecutively now. So no negtative effect to find, but a greate improvement in the possibillity to control the char.


Reading the Lua, I saw that at different time-consuming places there are already doevents() placed. So you are allready used to place it within this nice tool.
If you might consider to add these 2 doevents(), the allover responsiveness of the char may improve notable.
 
First thing - I'm not reproducing this. Created a set of configurations that resulted in no quests being run. Things just completed and sat waiting for next Cycle.
Will continue but not sure what you're guys' situation is.

Second - just FYI if you weren't aware, but there's an option to "Test" the current configuration.
Selecting it will do a Not-Real run-through and show you which quests would run and in which order. A good way to see what's what without actually committing the runs.
View attachment 52281



View attachment 52283


Thanks for pointing out the "Preview General Quest Cycle" button. The seasonal quest (Season of Dread) is getting ranked 20th, because of probability (62% in this case). Shouldn't Seasonal / Specific Quests be selected first regardless of how we have set them to be run?
 
Thanks for pointing out the "Preview General Quest Cycle" button. The seasonal quest (Season of Dread) is getting ranked 20th, because of probability (62% in this case). Shouldn't Seasonal / Specific Quests be selected first regardless of how we have set them to be run?
You are correct - the "Run Specific" happens before the "General" quests and % success isn't a priority there. I'm not duplicating what you are seeing yet but will look further:

(Unless the spelling is off. I don't have the actual Season of Dread on any characters at the moment. But you could verify they're spelled the same)
 
Could you add a directory check to the io_utils.Lua create_dir() function? Currently it always runs the os.execute, which causes a terminal window to open on my machine * however many boxes I load up. This fixes it:

Lua:
local lfs = require("lfs")

function actions.create_dir(directoryPath)
    -- Check if the directory exists
    local attr = lfs.attributes(directoryPath)
    if not (attr and attr.mode == "directory") then
        -- Directory does not exist, attempt to create it
        os.execute('mkdir "'..directoryPath:gsub('/','\\')..'" >nul 2>&1')
    end
end
 
Could you add a directory check to the io_utils.lua create_dir() function? Currently it always runs the os.execute, which causes a terminal window to open on my machine * however many boxes I load up. This fixes it:
...
I don't think I've ever noticed a terminal window - but testing this change now and will push when done.

That kinda check is always good practice anyway, thank you.
 
Having an issue with Lua not doing conversion, and may be due to my misunderstanding. Attached are two screen shots. Once shows the settings, and the other an example of how many agents can be converted. I think I have it set to convert if there are at least two agents of the same type. There are no errors, it just doesn't do any conversion.
 

Attachments

  • conversion.jpg
    conversion.jpg
    208.2 KB · Views: 2
  • setting.jpg
    setting.jpg
    25.2 KB · Views: 2
Having an issue with LUA not doing conversion, and may be due to my misunderstanding. Attached are two screen shots. Once shows the settings, and the other an example of how many agents can be converted. I think I have it set to convert if there are at least two agents of the same type. There are no errors, it just doesn't do any conversion.
that is how many you save, if you have more than 2 duplicates of them it will convert.
 
Yeah when you hoover over the convert number it says number of X to maintain. I was under the impression it was the min number of dups but its needs to be set to 1 if you want it run when you have 2 or more. I tried changed it and it seems to work now.
 
Yeah when you hoover over the convert number it says number of X to maintain. I was under the impression it was the min number of dups but its needs to be set to 1 if you want it run when you have 2 or more. I tried changed it and it seems to work now.
That works. Thanks.
 
First time ever I had Eq ctd on all 7 active accounts, after I logged in some minutes ago and launching overseer standing in the guildlobby.
As far as I can tell, I did nothing different comparing to the last days.
Am I the only one with this new behavior?
Are there any log-Files or other file-contents I can post, to help to narrow down the issue.

After restart I tried again to launch overseer.Lua, trying to keep an eye as if I can notice what happens when eq disappears.
After starting on 2 different chars one after the other, it happens while attempting to start a mission.
The names of the mission where different on both toons, so its not a specific mission causing the closure of eq.
 
Same thing happened to me this morning. Have it set to autostart in my ingame.cfg file, and after a few moments each of my instances of eq just popped away. No error message, just lost... like tears in the rain.

Removed it from auto starting, and no problems. Haven't tried rerunning it again yet.
 
Release Overseer

Users who are viewing this thread

Back
Top
Cart