• 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
Very Vanilla MQ (Live Servers)

Vanilla - Very Vanilla MQ (Live Servers) (5 Viewers) 3.1.52471.11

No permission to download
Joined
Jun 28, 2014
RedCents
22,093¢
Pronouns
He/Him
I posted a thread in the Creator's Forum so people could ask questions to keep them out of other threads, but it didn't get any questions. Still I see questions being asked in other places, so I thought I'd post an AMA where we can answer any questions you have. The blurb from the resource is below:

MacroQuest Developer Preview is the latest build of the development branch of MacroQuest. Often jokingly referred to as "MQNext" this build has quite a few bug fixes, but has also seen a ton of work under the hood. If you're just interested in what bugs have been fixed versus Live, you can find the full list here. That's also the tracker to look at any of the outstanding issues that we already know about on the issue tracker main page.

Some of the user-facing highlights are:
- Focused on addressing stability and eliminating crashes
- It's fast, quite a bit of work has been done to reduce load times (including that the spell database load/access times are now 4x faster)
- Lua can now be used in addition to the original macro engine
- Integrated imgui and developer tools like the window inspector and the item inspector (check your EQ button for the "MacroQuest" menu item)
- A whole new console (defaults to CTRL+`) that can be moved OUTSIDE the EQ window
- Built in crash reporting lets us know what crashed (this is on by default in the Developer Preview build, but you can turn it off in your MacroQuest.ini)

Some other things to note are:
- The directory structure has been reorganized with ini files all sitting together in the config folder instead of the root folder
- A resource folder has been added to organize other data
- A rudimentary wiki exists Here

Although our intention is to keep crash reporting anonymous, crash reports may contain information about your character (names, groupmates) or your computer (location of files, directory names) or other information that as in memory at the time of the crash. In the Live build we will probably turn this off by default, but if you would like to turn it off now, it is in the MacroQuest.ini.
 
how is it going to compare to MQ2 that we have now?

will it do the same things? plugin wise? like with the CWTN type plugins?
 
is it going to be fully open? or are we still going to have to deal with core parts being locked down like we do with current mq2?
 
plugin conversion will be up to the authors or designee's most likely. I have tested a bunch of CWTN's plugins when he ported a copy over for me, and they 99% worked without issue until the next patch, so at that time they were working fine.
 
And I as well as others have been extensively testing KA/MA/Core/RGM etc looking for issues that've cropped up with changes in MQ2 or bugs to be squashed.
 
Just to post this for posterity and visibility rather than where it was, originally:

Brainiac, Dannuic, and Knightly are leading development and open-sourcing of the code. You can donate to either Brainiac here or Dannuic here. Knightly does not accept funds for his participation.
If you have a Creator flag you are able to run the beta build of Next that is available on RedGuides here. Next does not need to run as an administrator on your system.
 
how is it going to compare to MQ2 that we have now?
It is mostly backwards compatible. As toadwart mentioned, we have testers from all of the major macros and have had for a while. There are some things that we did change, but that's usually where the interface wasn't working in Live either, so it should be minimal impact to macros.
will it do the same things? plugin wise? like with the CWTN type plugins?
It's going to be open and I'm happy to convert any open source plugins. You can see the list of the ones I've converted here: https://gitlab.com/redguides/plugins . Some of them have added features (MQ2MyButtons adds back in the dynamic labels that were removed and fixes some crashes on startup, MQ2SpawnMaster adds a TLO for checking if your target is in the SpawnMaster List).

Closed source plugins you'd have to talk to the authors, but every author who has a closed source plugin has the capability to build for Next.
is it going to be fully open? or are we still going to have to deal with core parts being locked down like we do with current mq2?
The majority will be open. You'll be able to compile yourself for Live again. The piece that replaces IC (and contains protections against DPG) has had some debate as to whether it should be open or not, though right now likely not. That's one of the things that once you open that box you can never go back and the "how" of what we're doing to prevent detection isn't necessarily something we want anyone to be able to see. Unlike IC, however, Next doesn't depend on that piece and it doesn't violate the GPL. You could choose to run without it (though also forfeiting the protection it provides). There are currently 4 developers that have access to that as well as Redbot. But since I don't want anyone trusting us implicitly, for any piece that's not open we're looking at getting an independent auditor to certify the code and will likely offer that in perpetuity (paid for by us to start, and whoever wants an updated version from that point on).
 
It is mostly backwards compatible. As toadwart mentioned, we have testers from all of the major macros and have had for a while. There are some things that we did change, but that's usually where the interface wasn't working in Live either, so it should be minimal impact to macros.

It's going to be open and I'm happy to convert any open source plugins. You can see the list of the ones I've converted here: https://gitlab.com/redguides/plugins . Some of them have added features (MQ2MyButtons adds back in the dynamic labels that were removed and fixes some crashes on startup, MQ2SpawnMaster adds a TLO for checking if your target is in the SpawnMaster List).

Closed source plugins you'd have to talk to the authors, but every author who has a closed source plugin has the capability to build for Next.

The majority will be open. You'll be able to compile yourself for Live again. The piece that replaces IC (and contains protections against DPG) has had some debate as to whether it should be open or not, though right now likely not. That's one of the things that once you open that box you can never go back and the "how" of what we're doing to prevent detection isn't necessarily something we want anyone to be able to see. Unlike IC, however, Next doesn't depend on that piece and it doesn't violate the GPL. You could choose to run without it (though also forfeiting the protection it provides). There are currently 4 developers that have access to that as well as Redbot. But since I don't want anyone trusting us implicitly, for any piece that's not open we're looking at getting an independent auditor to certify the code and will likely offer that in perpetuity (paid for by us to start, and whoever wants an updated version from that point on).
Sounds awesome. Thank you for your leadership and innovation guys.
 
Some plugins have bugs that are either hard to track down or are known and difficult to fix. One example, to my understanding is, multi threading on MQ2AutoLoot, that causes it to crash. Similarly, some gremlins in DanNet (although it might be falsely accused since to captures unrelated bugs). Will or are the root causes of such bugs being actively resolved in Next?

MQ2React’s configuration is in YAML. Is Next moving it’s INI formats to YAML also ? If so, how does that gel with backward compatibility?

Thanks,
 
Some plugins have bugs that are either hard to track down or are known and difficult to fix. One example, to my understanding is, multi threading on MQ2AutoLoot, that causes it to crash.
It's not so much that multithreading causes it to crash as that multithreading makes it harder to track why it crashed or allows you to get into situations where states are not what you expect them to be (in some cases, since that's a general statement). “Some people, when confronted with a problem, think ‘I know, I’ll use multithreading’. Nothhw tpe yawrve o oblems.” (Eiríkr Åsheim, 2012) There's very little functionality in a plugin that would require multithreading, and AutoLoot would be better served switching to OnPulse states rather than threading...

Similarly, some gremlins in DanNet (although it might be falsely accused since to captures unrelated bugs). Will or are the root causes of such bugs being actively resolved in Next?
Regarding the first part, I don't think there are any unrelated captures in DanNet anymore, even in Live. If DanNet is showing up as a crash at this point, it's probably something in DanNet. That said, @dannuic has done more work in DanNet on Next than in Live for a few reasons -- 1.) It's easier, there are more convenience functions to work with but 2.) With the crash aggregator that we use we can see similar crashes grouped together and we can look at the same crash under different circumstances. You can think of this like being able to look at a problem from multiple angles. Instead of seeing one dump file, we see it for everyone who has the same problem. Going back to things like AutoLoot, this lets us see the reasons things occur a lot easier. Doesn't mean we'll always fix them, but at least we know why they happen. I will say that since we get notices for every crash, we try to fix the more common plugin crashes just because we don't want to keep getting notices. No promises though, everyone works on what they want to work on.

MQ2React’s configuration is in YAML. Is Next moving it’s INI formats to YAML also ? If so, how does that gel with backward compatibility?
Just to be clear on this one, and I don't think you were implying this but for anyone else reading, we didn't move anything to yaml. Except for MQ2Discord (which already had a beta of yaml for Live that we used for Next) all of the things that use ini still use ini. We just have a yaml library integrated with Next so that it's just as easy to use yaml as it is to use ini for plugin authors. For multi-tiered data, yaml is just friendlier. INI is still great for key-value pairs though, and we added quite a few helper functions to make working with INI easier as well. My personal opinion is if you're going to move formats, you should write a converter so people don't have to convert it themselves. But, I also believe in being lazy and not changing what's not broken.

This is very much a "right tool for the right job" situation. The reason I wrote MQ2SQLite initially is because people were using the INI format for what amounted to databases and I thought SQLite would be a better option. I still think that for some plugins as well -- MQ2SpawnMaster would be really cool with a database that kept track of Quest vs Named vs Rare mobs and allowed you to filter out by category. Similarly, MQ2TargetInfo could use that same database for its placeholder function (and narrow it by zone so you get less false positives). But none of that is anything that we have planned for release.

On the subject of "right tool for the right job" though, we also integrated vcpkg (https://github.com/microsoft/vcpkg) which allows plugin authors to easily bring in any library that has a vcpkg port. We've also done some work on custom ports that don't exist in the normal vcpkg repo. For everything though, the source is stored in the MQNext repo, so you never have to worry about losing the source to a library you pulled in, but at the same time it's about as easy as we can make it to bring in a library. This allows for rapid development without having to jump through hoops or reinvent the wheel. Of course, many of the plugins we have now could actually be rewritten in Lua as a script, since Lua lets you run multiple scripts at the same time (and has an equally impressive set of third party libraries).
 
Last edited:
since Lua lets you run multiple scripts at the same time (and has an equally impressive set of third party libraries).
Does this mean there is support for running multiple scripts already?
e.g
/mac xyz
/mac def

And both are then running ?
 
Last edited:
Will there be any benefit of writing a Lua macro over the old language? If so, what would it be? Will they retain feature parity in terms of access to MQ TLO's etc?
 
Is updating offsets done in-house or are you dependent on the main MQ source for that?
If the former is true, will the method become available so that future developers could have a go?
 
Does this mean there is support for running multiple scripts already?
e.g
/mac xyz
/mac def

And both are then running ?
Lua scripts are run using /lua run scriptname and you can run multiple with Next. You cannot run multiple .mac files at the same time, we didn't change that portion. But to match your example, yes you could:
Code:
/lua run xyz
/lua run def
Will there be any benefit of writing a Lua macro over the old language? If so, what would it be? Will they retain feature parity in terms of access to MQ TLO's etc?
Lua has first level support in Next, anything a macro can do, Lua can do (including access to all TLOs and all commands). We want to improve it more, but it's fully functional right now. The benefit of Lua, besides being able to take advantage of third party libraries and directly integrate them, is that it's an already written and well defined language. When we add something to the macro language, we have to write it ourselves. For example, I went down the road of wanting to do in-line commenting and I wrote a proof of concept for that -- but everything to get in-line commenting, I had to write myself. With Lua, it's just a feature of the language. Loops, flow control, etc -- Lua is a full language on its own so we get all of the benefits of the full language for free which means we can focus on the things that we don't get for free -- like new MQ features and TLOs -- rather than extending the macro language to do things other languages already do. When improvements to Lua happen, we get those for free as well.

For new users, if you want to learn the macro language right now, you pretty much have to come to this community. For new users who want to start learning Lua? There's a crazy amount of resources out there. Similarly if you want to find sample code to do something, you're going to have to ask around here for a macro. But with Lua, you have the whole of the internet to find your answer.
Is updating offsets done in-house or are you dependent on the main MQ source for that?
If the former is true, will the method become available so that future developers could have a go?
I'm not sure what you mean, but we're not dependent on anything outside of the Next source. If you're asking about how to find offsets, Ghidra is free and gaining more traction. It's what I use, although I'm not as fast with Ghidra as I was with IDA.
 
Will there be any benefit of writing a Lua macro over the old language? If so, what would it be? Will they retain feature parity in terms of access to MQ TLO's etc?
Lua is maintained by more than just the mq2 devs,
actual books/tutorials on Lua
data structures
a ton of extra libraries you can use
probably speed (unsure)
 
Lua scripts are run using /lua run scriptname and you can run multiple with Next. You cannot run multiple .mac files at the same time, we didn't change that portion. But to match your example, yes you could:
Code:
/lua run xyz
/lua run def
That is going to be interesting for sure, basically moving script(Lua) to plugin level functionality with the multiple running scripts. Will be making my life easier with some things I am playing around with.
 
Will crash reporting be more function for tracking bugs to particular lines or their parent functions?

Lua gets me super excited!

I really appreciate everything you guys do and all the hard work. Cheers!

LB
 
lua is maintained by more than just the mq2 devs,
actual books/tutorials on lua
data structures
a ton of extra libraries you can use
probably speed (unsure)
speed, I hope. I used luajit over 5.4 for that reason. It's pretty fast.

Lua is coming to you out of the box with imgui bindings. So that's also a reason to choose Lua over macros.
Will crash reporting be more function for tracking bugs to particular lines or their parent functions?

Lua gets me super excited!

I really appreciate everything you guys do and all the hard work. Cheers!

LB
If you are talking about Lua, you get full stack traces on crashes, which includes function and line.
 
This is pretty exciting stuff. Random questions in no particular order.

1. Right now those with the creator title can try it out, will you ever decide to invite regular members to the closed beta for UAT or QA? Conversely, i wonder how i can get the creator title without being able to program...

2. Are there any features of MQ2Next that you guys are especially proud of, something exciting for us to hype up and look forward to perhaps?

3. In some random discussions about MQNext here and there, it was stated that MQNext offers improved performance over MQ2, could you speak to that? What improves? Someone said that eqwire isn't necessary with MQNext as it's performance improvements are enough? In MQ2, macros and plugins have a little bit of a performance gap. Plugins seem to always be more responsive and snappier than macros, will the performance improvements of MQNext close this gap a bit? Am I way off track with performance improvements here?

4. The IC replacement, you said that you guys are discussing a 3rd party code certification likely to prevent another instance where what it does is in question and to inspire confidence and trust in the application. You said you guys would pay initially but after that we'd have to pay for updated version.... updated version of what? The certification or the plugin itself? What did you mean? Did you mean the IC replacement will be a paid plugin? Did you mean that the community would have to pay to have it recertified as it was updated when necessary? (isn't independent code review and certification in the thousands of dollars? perhaps my perspective on the cost is skewed because I work in IT, on the infrastructure side, and only hear conversations in passing about this topic.) Will the IC replacement anger DPG in any way? Maybe they like the self reporting feature of the current IC? I'm sure you guys have already anticipated this and improved the protections.

5. How many buttons will mq2mybuttons have in MQNext? I'd like to start planning how I'll spend them :)

6. Will MQ2 and MQNext coexist or will Next completely replace MQ2 for the entire MQ community (including the other guys)?

Some random thoughts.

I completely understand why the IC replacement would need to be kept to an inner circle to protect the protection, otherwise if it falls into the wrong hands that protection is lost. I appreciate the efforts to prove via 3rd party that the code does what it says it will do and nothing more, without question. However, for me personally, FOUR developers plus Red is WAY better than what we had going on before and I am good with that. RedGuides is my gateway to MQ in EQ, without RG I'm not going to MQ and therefore not likely to EQ either, I guess for me, RedGuides has built up my trust and Red being part of the counsel overseeing this plugin is all the certification I need. A summary explanation of what the plugin does, what it doesn't do, and Red giving the thumbs up saying that is accurate, is good for me. I don't need to see the nuts and bolts myself. When one guy had control of the plugin, it seemed to be about power over the community. When there is a council of four developers plus Red that have control of that plugin's replacement, then that's a lot of people who have to collaborate and agree to do something shady. Just my opinion for what its worth. Others will likely disagree.

I'll likely think of more questions as I am pretty excited about this but this is all i could muster at the moment! Thanks for your efforts on MQNext and thank you for this thread!
 
That is going to be interesting for sure, basically moving script(lua) to plugin level functionality with the multiple running scripts. Will be making my life easier with some things I am playing around with.

I have a question related to the extended functionality and ability to run multiple luacros that control behavior. Previous design protocols meant that Users had to load plugins, some closed source, to manage multiple processes.
Does the inclusion of mean that the VV compile has extraneous plugins (both free and paid) that could be demade into luacros and run simultaneously?

Off of the top of my head these are some of the free plugins that may no longer be necessary.

MQ2Autoforage - Easy luacro to check if forage is ready
MQ2Autoloot - some form of Ninjadvloot retooled to handle Inventory/Loot functions, maybe with an imgui interface
MQ2FeedMe - Another simple luacro to eat/drink defined foods when hungry. Maybe easier to look less botlike in POK/GL.
MQ2React - Cursory status checking + action luacro

Here's an example fishing/foraging luacro that dannuic posted some months back. It probably needs to be updated and completed but it ~works!

Code:
local mq = require('mq')
local ForceEnd = function ()
    mq.cmd.endlua()
end

mq.event('BrokenPole', "#*#You can't fish without a fishing pole, go buy one.#*#", ForceEnd)
mq.event('NoBait', "#*#You can't fish without fishing bait, go buy some.#*#", ForceEnd)

local KeepItem = function ()
    while (mq.TLO.Cursor.ID() ~= 0) do
        if (mq.TLO.Cursor.Name() == "Tattered Cloth Sandal" or mq.TLO.Cursor.Name() == "Rusty Dagger") then
            mq.cmd.destroy()
            mq.delay('1s')
        else
            if (mq.TLO.Cursor.Name() ~= "Fish Scales") then
                mq.cmd.echo('Caught '..mq.TLO.Cursor.Name())
            end
            cmd.autoinventory()
        end
    end
end

local CheckPole = function ()
    if (string.find(mq.TLO.Me.Inventory('mainhand').Name(), 'The Bone Rod') ~= nil) then return end
    mq.cmd.echo('You need to put your fishing pole in your primary hand.')
    mq.cmd.endlua()
end

while true do
    CheckPole()
    mq.delay(10)

    KeepItem()
    mq.cmd.doability('Fishing')
    mq.delay(10)

    KeepItem()
    mq.cmd.doability('Forage')
    mq.delay(10)

    mq.doevents()
end
 
Last edited:
1. Right now those with the creator title can try it out, will you ever decide to invite regular members to the closed beta for UAT or QA?
We had actually invited some non-creators as testers prior to having it up for Creators. Creators is just who has access to that on RG. @r1pt1de is working on getting it into the launcher already, I believe. When that's ready we'll need to change the crash reporting to off, and then we're ready for open beta. Right now it's a little humbug because you have to go manually download every update.
Conversely, i wonder how i can get the creator title without being able to program...
You can make Creator for really good guides or maintaining and posting ini files as well.
2. Are there any features of MQ2Next that you guys are especially proud of, something exciting for us to hype up and look forward to perhaps?
It's funny, most of the features I'm proud of are ones I didn't have anything to do with. Lua, of course, which dannuic did the work for. But I still giggle when I move the ImGui console outside of the EQ window (even though it's a little buggy). That's something brainiac wrote probably more than a year ago and it's just super cool to me. The window inspector is also pretty awesome if you're doing anything with the UI, it's actually how we realized that there were two of the Yes/No dialog boxes and that windows weren't unique which is what allowed us to fix that for MQ2Rez and all that last year (in Next). I think being able to generate a UI from a Lua script on the fly is pretty amazing and opens up a world to script writers that was previously only there for plugin authors. The built in frame limiter is super cool and works amazingly well and having all of the options in a menu is very cool as well. Those are the ones that come to mind.
3. In some random discussions about MQNext here and there, it was stated that MQNext offers improved performance over MQ2, could you speak to that? What improves?
Some of the containers have changed and we've modified a lot of code. Many of the speed improvements are accidental and just come from cleanup on the code. There weren't many deliberate attempts to improve speed, but we did set out a few times to improve load times -- I mention above that the spell load times improved by a factor of 4 just by changing how it's done.
Someone said that eqwire isn't necessary with MQNext as it's performance improvements are enough?
We built in a frame limiter that replaces much of the functionality of eqwire, so it's not so much that performance improvements are enough as a different method of frame limiting was put in place as part of the base package. @william12 can probably speak to the performance benefits here.
In MQ2, macros and plugins have a little bit of a performance gap. Plugins seem to always be more responsive and snappier than macros, will the performance improvements of MQNext close this gap a bit? Am I way off track with performance improvements here?
Delayed code is delayed code, even in Live there shouldn't be a noticeable difference in macros and plugins that are written the same way. I think the reason this comes up is because in a macro you can add as many delays as you want while you "wait" for stuff. In a plugin, if you "sleep" you're going to sleep the whole thread (including the game, unless you're multithreading). This forces people to make different design decisions in plugins, switching from "delay" to "check if I'm ready to do this" which is more of a state management philosophy. So I think responsiveness is probably in having had to remove all the "wait for this" stuff which you can do in a macro just as well as a plugin. The only other bit is probably slash commands since there are only certain times that bind commands execute in a macro, while in a plugin those slash commands are always called -- this might give the appearance of sluggishness in a macro (to the user) but it's really just a design issue on the part of the author. (ie, for binds to be more responsive, call them more frequently).

I think the primary reason most people switch to plugins is for simultaneous action. Ladon lists a bunch of plugins above that could be done in Lua because Lua can run concurrently. That's not really an option in Live -- if you want simultaneous action while running a macro it HAS to be in a plugin. But most of the plugin language is designed around adding capability for macro writers and less around adding automation, and that's where something like Lua really shines (it's much easier to evaluate a TLO in a script than it is in a plugin). Though we have it on our radar to remove that plugin issue as well, though not for release.
4. The IC replacement, you said that you guys are discussing a 3rd party code certification likely to prevent another instance where what it does is in question and to inspire confidence and trust in the application. You said you guys would pay initially but after that we'd have to pay for updated version.... updated version of what? The certification or the plugin itself? What did you mean?
When you certify code it's a point-in-time snapshot of the code. One of the reasons that DPG can't say "This third party program is okay" is because as soon as they say that, we could change it. That goes for any third party program, so they call out the actions that are against their Terms of Service (like automation and basically everything MacroQuest does) rather than specifically allowing certain things. If they said "InnerSpace is okay" but tomorrow InnerSpace started adding automation in again, then they'd have to remove that from their Terms of Service again and it's a constant battle to say what's okay and what's not okay. I bring this up because code changes over time. Even just "oh, we found a bug, so we had to update this" is a code change. So it's unlikely we're going to pay for a full code review every time that happens, but it also means that as soon as we make a small code change, the old certification of the previous code is out of date. You can reverse engineer the code to see what changed and that we didn't add anything nefarious, but we wanted to allow the option that at some point in the future someone might say "Hey, enough has changed, can we get an updated code review?" and, as long as it's not coming out of my pocket, the answer will always be yes. (Note that I did say from a respectable independent agency and not like "My cousin John reviews code for a living"). Although, if your cousin John does review code for a living and works for a known company, I'm still looking for a good respected agency that will do this on the small scale we're working without a full engagement.
Did you mean the IC replacement will be a paid plugin? Did you mean that the community would have to pay to have it recertified as it was updated when necessary? (isn't independent code review and certification in the thousands of dollars? perhaps my perspective on the cost is skewed because I work in IT, on the infrastructure side, and only hear conversations in passing about this topic.)
No, the replacement won't be a paid plugin, our group is very focused on getting MQ back to Open Source and one of the things that was paramount to plazmic was that this code not be sold. It's why the license is GPL v2, which none of us would actually have chosen for a license due to its restrictive (ly open) nature. And yes, independent code review is quite expensive. Most companies want a full engagement over a long period of time, but I think it's important enough if we're going to keep a closed source plugin to 1.) Prove that we're not violating any license since this was written from the ground up and doesn't depend on any GPL code and 2.) after what happened with IC, regain the trust of the community. So we'll pay for it ourselves the first time around, but our altruism in that area only goes so far -- when the code is updated if someone wants it they can do it every time it changes to their heart's content, but we're just not footing the bill for that. So it's a compromise, but with the caveat that anyone wanting to can verify the integrity. There's also the other method as well -- Reverse Engineer it -- but then you're having to trust the word of other people which really isn't that different from trusting brainiac, dannuic, Redbot, and me (and alynel, but he's not that active right now). So, my preference is to have that be done by an independent party.
Will the IC replacement anger DPG in any way? Maybe they like the self reporting feature of the current IC? I'm sure you guys have already anticipated this and improved the protections.
If anything, they'll probably be glad that their Woebot mailbox stops getting spammed~ But in seriousness, if it does anger them...it is what it is. It is my opinion that IC is doing more harm than good at this point, and eqmule has intimated that he's specifically not blocking some of the eqgame calls that look for MacroQuest as well as the reporting code. If people weren't getting suspended and banned, you could argue that IC is doing its job. But people are getting suspended and banned so its not a good enough protection mechanism. Our concern is with protecting the MQ community and not with appeasing DPG. That said, obviously we don't want to piss them off, but we're going to do everything we can to hide MQ so that our users are safe, this community has to come first. If you get suspended or banned, it's going to be because either you were doing something that deserves to get you suspended or banned or because we completely missed a brand new detection mechanism and have to update the code to account for it. It's not going to be because we intentionally left something out or added a reporting mechanism in. We don't think that will anger DPG, but if it does, we'll deal with it the same way we did the 15 years prior to self reporting. Smile and wave, boys, smile and wave.
5. How many buttons will mq2mybuttons have in MQNext? I'd like to start planning how I'll spend them :)
The direct answer to your question is 12, but the eventual answer is "as many as you want." One of the benefits of splitting out TargetInfo/GroupInfo/XTarInfo into their own respective plugins and the cleanup I did there was that I got reacquainted with the EQ UI. The place where I was stuck on MyButtons was that I didn't know how to paginate and my next goal for evolution of that (if someone doesn't beat me to it) is to allow you to specify number of pages and number of buttons per page. The way MMO does it, I think is they just give you something like 30 buttons. But I don't personally want 30 buttons all on one page so I'd been holding out making changes to the number of buttons (other than I had increased it to 12 from 10 when I brought it back to life). Button pagination isn't something we've done in plugins before, so I didn't have an example to work off of, but I have a good idea of how to do it now.
6. Will MQ2 and MQNext coexist or will Next completely replace MQ2 for the entire MQ community (including the other guys)?
That's really up to everyone else. We did not envision the two coexisting since there's really no reason for the current iteration of MQ2 to exist once we've released. But MMO has full access to the source and I know Xeniaz has been working on updating their plugins to work with Next (and they also have access to every plugin we've updated for Next as a head start -- since everything we've updated is open source).
RedGuides has built up my trust and Red being part of the counsel overseeing this plugin is all the certification I need. A summary explanation of what the plugin does, what it doesn't do, and Red giving the thumbs up saying that is accurate, is good for me...<snip>...When there is a council of four developers plus Red that have control of that plugin's replacement, then that's a lot of people who have to collaborate and agree to do something shady.
While that probably would have been enough before the IC debacle and I certainly trust Redbot's judgement myself -- he'll probably tell you himself he's not a coder. I'd like to think he could probably pick out "Oh, and we're sending your information somewhere else" but the fact of the matter is that the community suffered a breach of trust. There are varying levels of "current trust" and we're trading on our existing reputations, which, unfortunately was what eqmule was also trading on. So I think it warrants an indisputable approach at this point. Hopefully others feel the same way you do, but until everyone feels comfortable again I think we owe it to the community to raise that level of trust.
I have a question related to the extended functionality and ability to run multiple luacros that control behavior. Previous design protocols meant that Users had to load plugins, some closed source, to manage multiple processes.
Does the inclusion of mean that the VV compile has extraneous plugins (both free and paid) that could be demade into luacros and run simultaneously?
I sort of answered this above, but I didn't want to leave you out of my quoting spree. MacroQuest was originally designed around the idea that automation was done in macros and functionality was extended through plugins. But there are things like MQ2Nav that would be extremely hard to do even in Lua. I'm hoping opening up Lua will spur development from people wanting to write "quick utilities" instead of "full fledged run your toon and wash dishes" macros (not that there's anything wrong with that too). The plugins you listed could definitely all be done in Lua, and in fact, most of the plugins we have right now that perform automation can be done in Lua since the impetus for doing them in plugins was just "simultaneous operation" rather than any need for C features. However, whether someone will is really up to the community.

Stop trying to make luacros a thing, use it for a cough syrup brand! :D
 
Last edited:
Someone said that eqwire isn't necessary with MQNext as it's performance improvements are enough?

We built in a frame limiter that replaces much of the functionality of eqwire, so it's not so much that performance improvements are enough as a different method of frame limiting was put in place as part of the base package. @william12 can probably speak to the performance benefits here.

The frame limiter is the bee's knees. Dannuic could explain it better but the game window's rendering is now separate from the main loop. My settings in the frame limiter are to render 30fps in the foreground and 0.2 fps in the background (1 frame every 5 seconds). My simulation rate is set to 30fps so those background characters follow and run through macros as if they were running at 30fps. No more weird boxes running off into the sunset!

On VV with EQWire my computer starts to act unhappy when I get to ~20 characters loaded. I spent some VPN time registering accounts and was able to get 80 characters loaded without issue on an 8c/16t processor on Next. I started to run out of RAM and experience some IO issues with the files that needed to be loaded. Also--- logging HAS to be off unless you're using an NVME.

1616953986432.png
 
Some plugins have bugs that are either hard to track down or are known and difficult to fix. One example, to my understanding is, multi threading on MQ2AutoLoot, that causes it to crash. Similarly, some gremlins in DanNet (although it might be falsely accused since to captures unrelated bugs). Will or are the root causes of such bugs being actively resolved in Next?

MQ2React’s configuration is in YAML. Is Next moving it’s INI formats to YAML also ? If so, how does that gel with backward compatibility?

Thanks,
I've been beating the crap out of DanNet in Live for months and months with zero issue
 
Regarding Framelimiter.

The only bug is certain things in EQ require the UI I.E With BGrender set to 0 and you try to mem your spell set in the background it will take FOREVER. So what do we do ? You set the bgfps low enough that it still functions and mems spells. I found setting it to 1 works pretty good. Other things like the scribe macro or buying from an npc have the same issue.
 
That's really up to everyone else. We did not envision the two coexisting since there's really no reason for the current iteration of MQ2 to exist once we've released. But MMO has full access to the source and I know Xeniaz has been working on updating their plugins to work with Next (and they also have access to every plugin we've updated for Next as a head start -- since everything we've updated is open source).

In regards to co-existing - Currently it's my understanding that Next doesn't support EMU, are their plans to update it to do so? Otherwise is it reasonable to expect that there will be a level of co-existing if only for the purposes of EMU.
 
In regards to co-existing - Currently it's my understanding that Next doesn't support EMU, are their plans to update it to do so? Otherwise is it reasonable to expect that there will be a level of co-existing if only for the purposes of EMU.
The way Next is coded is that the libraries to support each EQ client can be different without all of the ifdef calls that happen in Live. We do this by using branches in git rather than trying to maintain it in one single code base. The benefit of the emulator client is that it's old and hasn't changed in a long time, so there's not much that has to go into it in the way of figuring out structs and offsets. Since it's well known, there are already multiple flavors of MQ for Emulator. But, again, it's also not changing. You could never build a new version of MacroQuest, we could all disappear, and the current emulator client would still work in perpetuity, along with all the plugins built for it. It's static, unlike the Live/Test clients.

But I think your question is probably more along the lines of the RedGuides specific build and adding features to the emulator client. My philosophy is that those should be abstracted in the build so that if you make a call, it's handled however it can be handled for emulators rather than having to code plugins to work for emulators specifically. As seen recently with the way that MQ2Melee has ifdefs to support emulator -- that shouldn't have to matter to the plugin writer, it should either be abstracted in the library so that the plugin writer doesn't have to "know" and handle it separately, or it should be branched because the plugin writer wants to handle it separately and code specifically for emulator.
 
Maybe this is off topic, but would it make sense to extract a few plugins to a separate service, that you would run locally?
I am not 100% sure that I understand this correctly, but take MQ2Nav

If you have 6+ characters, then each one has their own nav mesh loaded into memory.
If there was a service as a separate executable then all characters could use that service.

I am not sure how much of the total memory useage mq2nav is responsible for, I am guessing it depends on the size of the zone.
 
Maybe this is off topic, but would it make sense to extract a few plugins to a separate service, that you would run locally?
I am not 100% sure that I understand this correctly, but take MQ2Nav

If you have 6+ characters, then each one has their own nav mesh loaded into memory.
If there was a service as a separate executable then all characters could use that service.

I am not sure how much of the total memory useage mq2nav is responsible for, I am guessing it depends on the size of the zone.

Yes, but that is a concern for mq2nav alone (and one that i am very familiar with).
 
Yes, but that is a concern for mq2nav alone (and one that i am very familiar with).
And one that has a much easier fix in next, because now we have local pipe infrastructure for communication between clients. (If I ever get time to rewrite dannet, I would tier with pipes now)
 
What is the reason behind MQ requiring admin vs Next not? I just assumed the admin priv was because it was injecting into another .exe and it was a requirement to get around Windows restrictions.
 
I too have been beating the crap out of dannet in next, and occasionally I get it to squawk, so hopefully those crashes are helpful to find issues for dannuic, but I will say that most of the time the only issues I encounter are related to minor tweaks that cause something to work wonky, which get fixed quickly, it's a very dynamic business, and I will say that Next is absolutely faster to run macros and such than before. There'll be some tweaking of macros in some instances needed to actually slow them down because they go too fast now! How's that for an issue to deal with?
 
What is the reason behind MQ requiring admin vs Next not? I just assumed the admin priv was because it was injecting into another .exe and it was a requirement to get around Windows restrictions.

Nope, not a requirement. The only requirement is that if you run eq elevated, then injection requires elevation. But normally you shouldn't be running eq elevated. I believe innerspace will launch eq elevated though.
 
Q. How will /mqp work from now on? Currently it assumes that it will pause the one and only macro running.
 
- Built in crash reporting lets us know what crashed (this is on by default in the Developer Preview build, but you can turn it off in your MacroQuest.ini)

I am playing around with the preview and finding some crashes. Should I register issues on git or are you getting the crash report automatically ?
 
What does KissAssist and LemonAid feel like on MQNext? Do they perform better? Do things faster or more reliably? Are there new TLOs/Members to use in my conditions? What will the end user notice when going about our business beating up mobs and moving around in Norrath?
 
Having embedded Lua in MQNext is a fantastic improvement over ad-hoc MQ2scripten !

As others said before Lua is a widely used scripting language in embedded game programming with well documented practices.


If I understand correctly it should be possible to write a converter to assist in migrating MQ2 scripts to Lua?

(Similar to say VB.net to C# converters, or Java -> Kotlin, which would not be idiomatic but a start at least)


PS. Personally I'd have loved Python support but Lua is a fine choice. 1-based indexing ugh :)
 
Vanilla - Very Vanilla MQ (Live Servers)

Users who are viewing this thread

  • Back
    Top
    Cart