• 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

Plugin - MQBrowser

knervous

Active member
Joined
Feb 6, 2016
RedCents
431¢
I've got a plugin in the works that I'd like to share with y'all - an embedded browser in EQ. Welcome any interest in people who want to beta test or any feedback, happy to give more info i.e. source via DM!

Here's a demo video:
 
Nice. Following you on github :-) Since they took the browser out of EQ I think this would be a great addition. I like the fade option, glad you added that.
 
Wow looks sweet, the option of creating a dashboard for a macro like rgmercs or kissassist through html has huge potential.
 
Thanks all! Working on some QOL stuff like creating a PluginInterface for MQ2ItemDisplay to let Browser add a button to direct link from an item into the browser, same way it execs an external browser to lucy.allakhazam.com. Same with MQ2TargetInfo.

Here are the repos:

Plugin: https://gitlab.com/knervous/mq2browser
Dashboard: https://gitlab.com/knervous/mq2browserdashboard

If anyone ends up installing it locally and either it works or doesn't work and wants to let me know that'd be great :)
 
will this work in Next? im interested in testing it, i can do it in mq2 but prefer Next
 
Thanks all! Working on some QOL stuff like creating a PluginInterface for MQ2ItemDisplay to let Browser add a button to direct link from an item into the browser, same way it execs an external browser to lucy.allakhazam.com. Same with MQ2TargetInfo.

Here are the repos:

Plugin: https://gitlab.com/knervous/mq2browser
Dashboard: https://gitlab.com/knervous/mq2browserdashboard

If anyone ends up installing it locally and either it works or doesn't work and wants to let me know that'd be great :)

1636682747270.png

I thought perhaps it was a linker issue, so I went to add it to additional library's directory and such.
1636682880741.png

but it appears the lib folder is missing in this case.

I tried to do a quick search of the MQ2Browser and it's sub folders for .lib but only reference was to dxsdk90.

If there's an additional step for the missing lib please let me know.

Also, not as big a deal but

1636683265146.png

There's some warnings.

strcpy, conversions, and the switch without cases I could sort myself. The others I'm not sure of.

I'm not familiar with regex and I don't know what it means about "they are susperseded by std::invoke_result to know what to do with those warnings, looks like a matter of replacing your current implementation with a non-deprecated version of the same/similar to correct the latter issue.
It's possible you're fine with the warnings. I just like to make the adjustments nessesary to make them not appear is all :-)
 
Last edited:
Oh that was gitignored by accident actually those libs aren’t that big, I’m going to add them to the repo. Will be up today. Brainiac is right you either need to build cef or use a binary distribution and build the wrapper. I plan to just include the lib in the repo.
 
interested to see how that works out. the libs usually aren't portable. (need to be on the same compiler version and debug/release setting)
 
Added, you should be able to pull latest and give that build a shot. Curious as well to see if it will build out of the box. I’ll get around to those warnings eventually too :)
 
1636696988365.png
Built and loaded without additional modifications after pulling.
Also, #shameless plug from me.

The window seemed to follow what I've come to expect from the imgui things in that it shows up small with no visible "body" for the window. Simply resizing it and google was already loaded up for me.
One of the questions I was initially going to ask was did audio work when you were on youtube. The answer is yes.
However, I tried to type in something to watch on youtube and hit enter into the search bar for their website and it just cleared the field. But if I click the search icon without hitting enter it would search np. When hitting enter the gold border persisted implying the window still had focus. So not sure if there is anything actually wrong with it or if that's intended.
Youtube quickly reminded there was no adblocker :-( lol.

When resizing the window, the entire body blanks out. Also not sure if this is intended or not. Just wanted to point it out because for a browser that's not "normal" behavior.

At the end of the day it appears to work well. It's not at all slow. Just remember some features you might be accustom to using in your normal browsers might not be present, such as searching from the url bar.
Unloading the plugin (as mentioned in the code) doesn't delete the browser info "Leaked on purpose" I think it what it had said. But more suspends it. If you close it, then it's really just hiding it. If you unload the plugin, and then load it again later it will just bring up the last thing you were viewing. I think (based on code comments) this only applies if you don't completely close that instance of EQ.

Thanks for the addition knervous.
 
View attachment 34929
Built and loaded without additional modifications after pulling.
Also, #shameless plug from me.

The window seemed to follow what I've come to expect from the imgui things in that it shows up small with no visible "body" for the window. Simply resizing it and google was already loaded up for me.
One of the questions I was initially going to ask was did audio work when you were on youtube. The answer is yes.
However, I tried to type in something to watch on youtube and hit enter into the search bar for their website and it just cleared the field. But if I click the search icon without hitting enter it would search np. When hitting enter the gold border persisted implying the window still had focus. So not sure if there is anything actually wrong with it or if that's intended.
Youtube quickly reminded there was no adblocker :-( lol.

When resizing the window, the entire body blanks out. Also not sure if this is intended or not. Just wanted to point it out because for a browser that's not "normal" behavior.

At the end of the day it appears to work well. It's not at all slow. Just remember some features you might be accustom to using in your normal browsers might not be present, such as searching from the url bar.
Unloading the plugin (as mentioned in the code) doesn't delete the browser info "Leaked on purpose" I think it what it had said. But more suspends it. If you close it, then it's really just hiding it. If you unload the plugin, and then load it again later it will just bring up the last thing you were viewing. I think (based on code comments) this only applies if you don't completely close that instance of EQ.

Thanks for the addition knervous.

Very very cool, really exciting seeing that working on other machines. Very much appreciate the feedback, that's exactly the response I was hoping to get. I'm open to all suggestions for improving the experience.

To address these one at a time:

- 0x0 body dimensions on first render: I should have a fix for this in the next push
- Youtube enter bar: Something weird going on there. I will fix this down the line for sure.
- Body blacing out during resize: This is a compromise of using ImGui and their rendering system. I am invalidating the texture buffer in the same frame it is resizing since it's not event driven but all imperative in a loop. I could throw in a nicer "fade" image to indicate something is happening rather than a black background.
- Adding "Google search" from URL bar in next push
- Also want to add some nice things from browsers... Was thinking of a "Quick link" dropdown that included all the usual EQ sites, also driven by a config? Sort of like very basic bookmarks
- The unloading is something that I don't think is possible from a cef perspective... It can only be initialized once per process lifetime and expects the process to exit upon shutting down as well. I might do some deep digging to find out what's possible. Main takeaway is there's a lot going on with cef and it isn't as easy as a simple ad hoc load/unload.


I should have a new commit in this weekend to also include button links from items to go to Lucy. It's working now just have to iron out some details.
 
@knervous This looks amazing ! Plus some of what you have planned sounds even more incredible. Can't wait !

@ChatWithThisName Dam you..
 
- Body blacing out during resize: This is a compromise of using ImGui and their rendering system. I am invalidating the texture buffer in the same frame it is resizing since it's not event driven but all imperative in a loop. I could throw in a nicer "fade" image to indicate something is happening rather than a black background.
- Also want to add some nice things from browsers... Was thinking of a "Quick link" dropdown that included all the usual EQ sites, also driven by a config? Sort of like very basic bookmarks
- The unloading is something that I don't think is possible from a cef perspective... It can only be initialized once per process lifetime and expects the process to exit upon shutting down as well. I might do some deep digging to find out what's possible. Main takeaway is there's a lot going on with cef and it isn't as easy as a simple ad hoc load/unload.


I should have a new commit in this weekend to also include button links from items to go to Lucy. It's working now just have to iron out some details.
Ref: Body blanking out during resize. I don't think a fade or anything is really needed. Just made a note of it. Not being able to see the body of the window during resize honestly isn't that big of a deal as I can't imagine anyone would be doing a resize for a long period of time. Except maybe to size the window based on the content of the window. I think it's more reasonable to think that people would be trying to resize to find a happy medium between being able to see the content and fitting within their screen without impeding their view of the game itself.

Ref: Quick Link. That sounds like a great idea. I was thinking it would be nice to have bookmarks. But didn't want to press my luck on the first impressions response.

Ref: unloading. I have no suggestions in regards to this. So I can only wish you luck in finding a solution. I did find that even when unloaded I wasn't able to do a rebuild of the plugin (after making changes to handle "warning" messages) that it wouldn't allow it to replace the file with the new build because VS said it was currently in use. My thought was it was because of the class still being active. I'm just taking your word on the issue. I assume you know what you're talking about when referencing the cef stuff as my coding knowledge is very much limited to the confined space of legacy MQ2 for the most part.
 
Ref: unloading. I have no suggestions in regards to this. So I can only wish you luck in finding a solution. I did find that even when unloaded I wasn't able to do a rebuild of the plugin (after making changes to handle "warning" messages) that it wouldn't allow it to replace the file with the new build because VS said it was currently in use. My thought was it was because of the class still being active. I'm just taking your word on the issue. I assume you know what you're talking about when referencing the cef stuff as my coding knowledge is very much limited to the confined space of legacy MQ2 for the most part.

He's preventing the plugin from actually unloading

I would probably try approaching this by keeping libcef.dll loaded instead of the plugin so that you can actually unload the plugin.
 
Here's an update on a proof of concept for the MQ Dashboard page. I want to be able to show live spawn data not on the 2d map but on the actual zone mesh, have NPCs be filterable and searchable from within the web view, etc.
There's a live demo for the zone viewer as well: https://mqdashboard.vercel.app/

 
Continuing to update, been making headway on the live zone viewer feature, what I’m calling Advanced Map. Pretty weird seeing basically two EQs being rendered haha. Been a time sink but a fun endeavor. Waiting on a feature from brainiac to implement the launch to browser from item display completely.

Once that’s done I want to clean up any unloading / loading issues to the best of my ability and the frameworks allows and then submit this plug-in as a merge request.

 
Last update on this plugin probably for a long time - getting to a point where it's time to prioritize real life for a bit ;) The plugin itself is at a very usable state and all repos are up to date for anyone to try using. The last bit of work I completed was for the Advanced Map, which I think is pretty neat.

Here's a standalone zone viewer and also the Advanced Map with some stock data to test in under the Menu > Advanced Map:


Here's a demo of this working with live EQ data:

 
@knervous May your RL get happy and all well for you and those that need you, especially around this time of year. Will look forward to your return and enjoy seeing the development of your project, I think its incredible. I don't know how to try out what currently exists for it.
 
Plugin - MQBrowser

Users who are viewing this thread

Back
Top
Cart