Go to Page... |
Compatibility: | Shadowlands patch (9.2.7) WOTLK (3.4.0) Classic (1.14.3) |
Updated: | 09-02-22 10:34 PM |
Created: | 10-20-17 09:37 PM |
Downloads: | 453,846 |
Favorites: | 1,027 |
MD5: |
Neuron development is on an indefinite hiatus upon the launch of WoW 10.0. If you are interested in helping with development efforts to push the project forward into Dragonflight, please reach out to Soyier.
Introduction:
Neuron is a full featured action Bar addon for World of Warcraft: Shadowlands
Important Note: Neuron tentatively works with World of Warcraft: Classic and The Burning Crusade: Classic, but none of our developers actively play Classic, so support and bug fixes are offered without any guarantee. Realistically, many bugs in Classic require max level characters to debug, and none of us have any such characters. Outside help with Classic is always welcome!
Want to Donate?
Making add-ons is a lot of work! Your help goes a huge way to making my add-on work possible. If you would like to Donate, Github Sponsors is the preferred method as they are currently matching donations dollar for dollar and take zero cut.
Want to contribute?
File Name |
Version |
Size |
Author |
Date |
1.4.17 |
545kB |
Soyier |
08-16-22 04:54 PM |
|
1.4.16 |
545kB |
Soyier |
05-31-22 11:14 AM |
|
1.4.15 |
545kB |
Soyier |
05-14-22 04:40 PM |
|
1.4.14 |
518kB |
Soyier |
05-11-22 08:12 AM |
|
1.4.13 |
518kB |
Soyier |
02-22-22 03:35 PM |
|
1.4.10 |
517kB |
Soyier |
06-29-21 08:23 AM |
Comment Options |
05-25-19, 01:56 AM | |
|
|
|
Soyier |
View Public Profile |
Send a private message to Soyier |
Find More Posts by Soyier |
Add Soyier to Your Buddy List |
Soyier |
View Public Profile |
Send a private message to Soyier |
Find More Posts by Soyier |
Add Soyier to Your Buddy List |
hid |
View Public Profile |
Send a private message to hid |
Find More Posts by hid |
Add hid to Your Buddy List |
05-11-19, 09:07 PM | ||
|
Re: Hide/unhide toggle for all bars
Just curious, what was the macro you used before so I can know what I did that broke it **Update** added this feature. Can you please download the Github MASTER version and test this for me. typing "/neuron toggleall" should disable and re-enable all neuron buttons. It was a bit tricky to make sure that the keybinds still work, as usually hiding buttons also disables the buttons keybinds.
Last edited by Soyier : 05-11-19 at 10:37 PM.
|
|
|
Soyier |
View Public Profile |
Send a private message to Soyier |
Find More Posts by Soyier |
Add Soyier to Your Buddy List |
05-11-19, 08:00 PM | |
A Kobold Labourer
Forum posts: 1
File comments: 40
Uploads: 0
|
Hide/unhide toggle for all bars
Before (old versions of Ion/neuron) I used to use a macro to toggle hidden state for all bars with 1 keybind(to easily edit things while keeping all bars hidden during gameplay), but I recently got back and that macro stopped working (it was just: /script Neuron.NeuronBar:ChangeBar(NeuronActionBar1) /neuron Conceal;" for every bar in a macro), it no longer works and I've looked at the code a bit (to be honest I could just spend half an hour looking through the code and figure out what changed myself, but thought I'd be lazy and just ask for once)
So if anyone could tell me an easy way to hide/unhide all neuron bars with 1 macro/keybind I'd really appreciate it! Speaking of: If we could get a "/neuron toggleall" option that'd be a great QoL improvement for us using Neuron this way!
Last edited by hid : 05-11-19 at 08:27 PM.
|
|
hid |
View Public Profile |
Send a private message to hid |
Find More Posts by hid |
Add hid to Your Buddy List |
04-27-19, 02:28 PM | ||
|
Re: Alpha up
|
|
|
Soyier |
View Public Profile |
Send a private message to Soyier |
Find More Posts by Soyier |
Add Soyier to Your Buddy List |
04-19-19, 02:57 PM | ||
|
I do love IntelliJ Idea, but it's really the EmmyLUA plugin that I can't get enough of. It's the best LUA plugin for any software that I've used. It makes coding LUA actually fun, instead of a nightmare. I can't believe Maul just used a text editor for so many years. I could never, I'm too spoiled lol
Last edited by Soyier : 04-19-19 at 02:58 PM.
|
|
|
Soyier |
View Public Profile |
Send a private message to Soyier |
Find More Posts by Soyier |
Add Soyier to Your Buddy List |
04-19-19, 11:59 AM | |
A Kobold Labourer
Forum posts: 0
File comments: 50
Uploads: 0
|
I like IntelliJ, right up to the point they want me to pony up some cash to develop PHP. I'll use it for trying to learn lua though. And weirdly enough I'm this close (pinches fingers together) to using VSCode for editing PHP. That or Sublime. Just need to figure out how to change my syntax highlighting and figure out how well regular expressions are supported.
|
|
Apollumi |
View Public Profile |
Send a private message to Apollumi |
Find More Posts by Apollumi |
Add Apollumi to Your Buddy List |
04-19-19, 09:11 AM | ||
|
Also, IntelliJ is open source, cross platform, and portable, so that should address your issues. IntelliJ also has plugins for pretty much every language there is, and it is a very capable C++ IDE |
|
|
Soyier |
View Public Profile |
Send a private message to Soyier |
Find More Posts by Soyier |
Add Soyier to Your Buddy List |
04-19-19, 01:25 AM | |
A Kobold Labourer
Forum posts: 0
File comments: 50
Uploads: 0
|
Thank you gentlemen.
I can hopefully start C++ tutorials soon and lua is something I want to combine with it. Working on the addon would give me some practical application for the learning process. I've downloaded IntelliJ IDEA in a zip package. Version info included below. I have this "thing" about only using portable apps and then often only if they are cross platform and opensource. I have been using Notepad++ and really like it for my web development. I was planning on using Codeblocks for C++. I guess I'll see what IntelliJ has to offer. If I could use one IDE for pretty much everything I would prefer to do that. I had thought about using Eclipse but there is just something I don't like about Eclipse. Perhaps I should just spend more time with it. I also have VSCode but don't trust anything Bill has touched any further than I could throw his ego so really have only touched it twice. ** IntelliJ ver download ** Version: 2019.1.1 Build: 191.6707.61 Released: April 16, 2019 So I'm going to start on C++ by watching and using the videos from TheChernoProject. If you have any other recommendations on beginner tutorials for C++ please let me know.
Last edited by Apollumi : 04-19-19 at 01:26 AM.
|
|
Apollumi |
View Public Profile |
Send a private message to Apollumi |
Find More Posts by Apollumi |
Add Apollumi to Your Buddy List |
04-18-19, 04:17 PM | |
|
Re: Simple coding question
Ok so Buju already got us started but here is a basic 2min lesson on addons haha.
The LUA code is read into memory while the game is loading the character in, and it's at this time that the entire addon is read from top to bottom. What I mean by this is the LUA engine begins reading code starting with the 1st .lua or .xml file in the Neuron.toc file, and goes down the list in the .toc file until the very end. Also, it isn't simply reading the code into memory for later, this is the literal moment that the code is run (which seems counter intuitive but it actually makes sense). Thus if I had an addon that counted from 1->1000 and printed the numbers to the chat window, this would happen at the exact moment it's read the first time, and the user would see the full list of numbers in the chat box right when the world finishes loading. So in essence, the program is run in its entirety before the character is even on the screen. Now, to answer your other questions, or to pre-empt your question of "if the addon is run in its entirety before the game is even loaded, how does the addon work in real-time?" And the answer to this is 1) Frames and 2) Events. Frames: Frames are the base UI elements of the game. A frame is anything that is visible on the screen, and Frames can have parent frames, and can be nested in one another etc. I.e. We have a Bar frame, with a bunch of Nested Button frames, and so on. The frames themselves have a number of properties belonging to them, and a number of scripts and events that you can "hook" onto to do work. I.e. a button has an OnClick event, and I can hook a function of mine to do something when this event happens. This function is 'hooked' to the OnClick event of this particular button during the pre-loading stage when all the LUA code is being read in initially. And this code is now bound to the button frame itself, and will be executed each and every time this button event happens so as long as the button exists or we choose to unhook this event. You can see all the frames in game by using the "/framestack" command in game. Events: The game as far as an addon is concerned is a series of sequential events that are being fired all the time. If you use "/eventtrace" in game you can see all the events happening. Now, events are important because they're the only clue to the UI as to what is going on. So events fire when combat starts, combat ends, a spell is cast, channeling starts, etc. Now, the big trick to creating an addon like Neuron is registering the Neuron scripts to specific events in the game. The castbar for example is registered to the UNIT_SPELLCAST_CHANNEL_START function, so when this particular event fires, the castbar knows to spin up a series of functions that will lead to the castbar becoming visible and showing the cast happening. There are thousands of different events in the game, and they are a nightmare and a gift at times. Finding the correct events to register our scripts and frames onto is a pain in the arse, but it works surprisingly painlessly most of the time. Further, events come in two varieties, game events like "PLAYER_ENTERING_WORLD" that give you status updates on what is happening in the game itself, and object script psuedo-events like "OnMouseclick" or "OnHide" or "OnEnter", which are all functions inherent to frames that can be hooked and leveraged for our purposes. By default a button does nothing when clicked, it's only when we hook this function call and attach our own function that clicking the button actually does something. So, in summary: The code that you see in the .lua files is very boring and just consists of creating a series of frame objects, setting up a bunch of functions and hooking them to specific events, and registering our frames to in game events. Once this happens, the code that exists and is running in the game is only the stuff that is tied to the frames and events (and any secondary functions that our called by the hooked/registered functions). At runtime during the game, everything that happens in response to player or game input is whatever we front-loaded onto those frames and events ahead of time. Please see https://github.com/brittyazel/Neuron...ster/README.md particularly the section on Development. Getting a good development environment set up makes all the difference, and I can't rave enough about IntelliJ and the EmmyLUA plugin. It's a serious game changer. This guide in particular is incredible and is 90% the reason I even know what the hell is happening: https://github.com/Ellypse/IntelliJ-...E-WoW-API/wiki
Last edited by Soyier : 04-18-19 at 09:14 PM.
|
|
Soyier |
View Public Profile |
Send a private message to Soyier |
Find More Posts by Soyier |
Add Soyier to Your Buddy List |
04-17-19, 10:29 PM | ||
|
Re: Re: Re: Simple coding question
Last edited by BujuArena : 04-17-19 at 10:32 PM.
|
|
|
BujuArena |
View Public Profile |
Send a private message to BujuArena |
Find More Posts by BujuArena |
Add BujuArena to Your Buddy List |
04-17-19, 09:22 PM | ||
A Kobold Labourer
Forum posts: 0
File comments: 50
Uploads: 0
|
Re: Re: Simple coding question
So I am thinking similar to Java (not javascript). Makes sense. Thank you for answering.
I think they have addons run on another thread now so it doesn't take time away from rendering each frame of the game? Don't know, just guessing. Still I am thinking that the game engine must allow time each frame for each of the addons code to look in the buffer for keyboard input and events, etc...? So they can still impact performance but not as much?
|
|
|
Apollumi |
View Public Profile |
Send a private message to Apollumi |
Find More Posts by Apollumi |
Add Apollumi to Your Buddy List |
04-17-19, 08:28 PM | ||
|
Re: Simple coding question
After the scripts are compiled to machine code, yes, the addons' now-compiled machine code runs each frame while you play. This is why a more powerful CPU core is better for running lots of addons.
Last edited by BujuArena : 04-17-19 at 08:30 PM.
|
|
|
BujuArena |
View Public Profile |
Send a private message to BujuArena |
Find More Posts by BujuArena |
Add BujuArena to Your Buddy List |
04-17-19, 08:14 PM | |
A Kobold Labourer
Forum posts: 0
File comments: 50
Uploads: 0
|
Simple coding question
Yes, this will make me look stupid. And I am coding stupid currently. But I have some questions for you about lua.
What I am wondering is does a lua "addon" stay resident in memory like a program and doesn't exit. My lack of understanding comes from the fact I have only done scripting where the code is parsed until the end and then the variables are gone until the script is parsed again. Server side (host side) variables aside that is. How does an addon stay present on the screen while the program code executes redrawing the scene over and over? Is it because the program code (wow in this case) is rendering the addon for each frame also? I guess I'm asking is the neuron code rerun for each frame of the game. And by doing this it is checking key presses, events, and modes for every single frame. I would think parsing a bunch of addon scripts each and every frame would slow you down far more than it does. So in my mind either it stays resident in memory or the lua engine is incredibly fast. You could possible regret throwing out there that you like to pass on knowledge about coding. Heh. @@@@@@@@@@@@@@@@@@@@@@ I think the hardest aspect of learning anything is learning what it "means". Where is it's place and how is it realistically (not idealistic) used. It is hard to teach what something means, for lack of a better word. A subject has to have clear boundaries to focus people otherwise they can assume all sorts of meaningless things. People deeply versed in something can often make bad teachers because they know what something means in a more or less instinctive way and often lack the ability to express it.
Last edited by Apollumi : 04-17-19 at 08:25 PM.
|
|
Apollumi |
View Public Profile |
Send a private message to Apollumi |
Find More Posts by Apollumi |
Add Apollumi to Your Buddy List |