Welcome to the Achaea Forums! Please be sure to read the Forum Rules.

[Nexus] Khaseem's Nexus GUI "nexGui"

KhaseemKhaseem Member Posts: 16 ✭✭ - Stalwart
edited October 10 in Curing Systems and Scripts

This post will likely be long. tldr: I made a pretty massive GUI+utility for Nexus.

I like Javascript as a hobby to tinker with. Since returning to the game I use the Nexus client 100% of the time to play Achaea. There are (were) some serious compromises one had to make using Nexus when compared to Mudlet. Some of you may be using, saw the post about, or have heard of my previous nexMap package that added the Achaea Crowdmap into Nexus. This post is to share my latest labor of love: nexGui. A complete GUI for the Nexus client. I browsed through all the Mudlet GUI posted examples I could find and picked elements that I liked before settling on this layout and functionality. The great thing here is Nexus is a webpage; with CSS/HTML/Javascript you can do almost anything graphically... and I know very little about web development.

I will open with one major disclaimer. I have put quite a bit of work into this, but as of this writing it is version 0.4.3; it is still very much in development. That is not to dissuade anyone from using it, I use it 100% of the time, and I have had two other testing it the past couple weeks. It works great, but documentation is almost non-existent. I am releasing it as an early access of sorts, mainly because I am running out of ideas that are general and most features and work I have started to do are tightly integrated into my own personal settings. So I am sharing what I have now and I welcome others to use it and provide suggestions and feedback.

With that out of the way, lets get into some details

As you can see above, this is almost a complete remake of the Nexus GUI. The GUI will load individual modules depending on your class, and detecting when you change class. What you're seeing above is for my Occultist class. I will attempt to briefly just run down through each pane, most are self explanatory.

Starting with the 4 stack on the left...

Missing Defs: This displaying missing defenses (go figure). Fed off of a user defined defense array in each class function.

Timers: Again, obvious. Count down timers. Any timer added with time will count down to zero. These can be added on the fly or with the class function.

Self State: Right now this displays current afflictions. It's fairly basic. My intent in the future is to flesh it out more and have it reference your user set curing priorities to display afflictions in order of your prios with associated colors and timers for uncurable timed afflictions.

Target State: This pane is unpopulated out of the box. This is intended for users to customize with their own target information. Limb counters, etc. As an example for occultist:

Middle column...

Straight forward. Chat window up top, main window feed below. What is worth noting is the in-line highlighting of the names. I have started a MongoDB as a character database integrated into nexGui. This is hosted information populated and referenced by all users of nexGui. Right now it strictly pulls information from the API. I have thoughts of adding additional information such as any time a nexGui user looks at or honours a player, that information is stored.

One side note with the Chat window is nexGui "tweaks" some core Nexus functions. One tweak is gagging NPC says from the chat window.

Right side stacks...

Up top you have the map window (showing nexMap of course). Surrounding the map window are the panes for room items, npcs, and players. There are a few bells and whistles worth pointing out in these areas. Since nexGui handles all of the room information itself this allows us to apply additional checks and formatting. You will note in that first image I choose to group all city guards ((5x) City Guards) into one display to declutter the pane for me. But we can really do so much more. Here is an image where with a simple rule in the settings (nexGui.colors.room['a monolith sigil'] = {color:'red',text:'A MONOLITH SIGIL'};) You can change monolith sigils to display however you would like. This also causes them to always float to the top. I've also put it in there to accept ID numbers as well.

As just a fun feature, player names have a mouse over "tooltip" that pulls information from the character database for display.

All NPC and player names are also click to target. Targets will be boxed with a red outline, whether you click them or not.

nexGui uses and tracks your enemy and ally list in game for display purposes. Allies and enemies in the room are surrounded by colored parentheses and always appear at the beginning of the room list.

Moving on down to the 2x3 grid of panes at the bottom right corner. Left to right, top to bottom...

  • The first pane I've been using for lots of different things. It is constantly changing, I have not settled on exactly what I want for it. Right now I've been experimenting with animated theming that changes based on the time of day and environment you're in. I've included 3 or 4 themes out of the box for fun. That one in the image actually has fun little fireflies that randomly flit about. This pane might completely change.

Bonus theme. I've been playing with this cloud theme on the main window. The clouds are animated to slowly drift across the screen and the star constellations change.

  • To the right of the theme pane is my take on an information stream that I saw Penwize using. Streams all curing, affs, defs, priority changes, and target changes. A mini-log of sorts.
  • Next to that is a gamefeed stream pulling from the gamefeed API. Note this also uses the same in-line color highlighting from the mongodb.
  • Lower left we have a stat tracker. Not as fancy as Zulah's full database, but it does what I need/want. Pretty straight forward, the left side can be reset like when you start bashing an area, the right side only resets on logout/login.
  • Bottom middle is the class pane. My intent for this one in particular is 100% user customizable. Everyone will have a different preference on what they want to do with it. This is also one of the panes that is tied to the class functions and changes dynamically when you change class.
  • And finally the Party pane. This pane updates and track automatically your party composition. There is also a type to enter box, for parties that are not actually using the party system. Pull down list and toggles here all set nexGui variables that can be referenced in your own settings if desired.

Quick demo of the GUI updates on class change

There are a couple things not not shown in the display above. One is I have started on a full attack replacement module for nexGui. This is still a work in progress (like everything), right now it really only has the messages for my own classes and other dragons, but if you're a dragon and using this you'll see.

Another residual perk that I did not plan for is nexGui works on mobile and the chat window placement makes it a bit more user friendly.

Closing ramblings.

A big note is that I have pulled in the eventification from Jhui's Nexsys package into nexGui. All of the toggles and options raise events which should make it very clean to tie into your own personal settings. The bulk of nexGui is on github and pulled into Nexus through a CDN. The big pro to that approach is as I continue work on the system users are updated automatically... the big con is I occasionally (more than occasionally) break things. As I mentioned at the beginning of this extraordinarily long post, there is very little documentation in the package right now. The package should work right out of the box. "ng load" and you're off.

If there are questions/issues/feedback I am usually available in Discord or in game. I hope others enjoy it, feel free to shower me with compliments, gifts, and name your first born after me.




Sign In to Comment.