This is a smaller update, but there will be bigger changes coming soon.
Additions
Settings! You can change your BytExecutor experience to suit your style. More options will be available in future, so check your settings menu every update
Changes
Reintroduced the Settings icon. How else are you suppose to access the settings menu?
Added a new plugin action for executing Byts you’ve last interacted with, which can be assigned to a key bind. To assign it a key bind, go to File > Advanced > Customize Shortcuts... and search Execute Byt Last Interacted. Its behavior can be modified in the BytExecutor settings
Smart Exporting! BytExecutor can now change the class of the script based on where it was being exported. This needs to be enabled in the settings in order to work
A custom screen when no Byts are found
Added more settings options
It is now possible to reset settings to their default state
A category left sidebar has been added
Changes
Sections can now be collapsed by clicking on them
Renamed some sections
Significantly improved settings UI. It is more compact and easier on the eyes
When renaming a Byt, the text box displays rounded corners
Fixes
Removed the parentheses from imported scripts which caused a few bugs when attempting to rename it
My main was terminated, and I happen to have InCommand on that account, since I found this plugin, I’ve decided it was a worthy replacement for InCommand in my workflow. Thanks for making this plugin and keep it up!
I was somewhat hesitant towards releasing this update because of the shear amount of hacks this required. However, I was already using quite a few before this, so here we go!
Additions
Live thread modification. You can pause/terminate a Byt (though not completely accurately) during execution at the cost of speed. Luau has plenty of optimizations that speed up execution speed, but these are disabled when setfenv is used. Therefore, BytExecutor disables this feature by default and must be enabled in the settings. Speed comparison:
--Performance test used
local START = os.clock()
local t = {}
for i = 1, 1e6 do
t[i] = math.random(1, 10)
end
local END = os.clock()
print(END - START)
Added an API for Byts with full auto-complete. Byts can access it with require(script.API)
-- [[ DOCUMENTATION ]] --
--[ Fields ]--
--List of byts
API.Byts: {[string]: BytObject}
--The amount of actors BytExecutor has. This is currently fixed at 100
API.ActorAmount: number
--[ Methods ]--
--Executes the specified byt
API.execute(bytName: string)
--Pauses the specified byt
API.pause(bytName: string)
--Resumes the specified paused byt
API.resume(bytName: string)
--Terminates the specified byt
API.terminate(bytName: string)
--Checkpoint for Byt pausing. Use just after a thread yields
API.yieldCheck()
--Parallelizes and executes the specified byt (supports British spelling too)
API.actorize(bytName: string, actorId: number)
--Very hacky and has a ton of caveats that will be listed further into this post
--Converts a table into a module. Useful for saving information generated by Byts
API.tableToModule(t: table, parent: Instance?): ModuleScript
--Gets the BytObject associated with the Byt name
API.getBytFromName(bytName: string): BytObject
--Gets the Byt address associated with the Byt name
API.getAddressFromName(bytName: string): string
--[ BytObject Methods ]-- (these are pretty much the same as the API methods)
BytObject:Execute()
BytObject:Pause()
BytObject:Resume()
BytObject:Terminate()
BytObject:Actorize(actorId: number) --supports British spelling too
--[[ Events ]]
-- Fired just before termination
API.BeforeTermination(reason: string): GoodSignal
BytExecutor can now check for new available updates and will remind the user to update to the latest version. Can be disabled in the settings
Byts can now be parallelized using the new API. Parallelization relies on Instances called an Actor, and due to plugin-related behavior, it can only support a finite number of them. As such, there are currently only 100 actors Byts can use, with Ids ranging from 1-100. Byts can only use one at a time (though this restriction may be loosened in future updates) and restricts access until execution is finished. It is recommended to have some sort of emergency exit condition since BytExecutor does not have a way to interfere with parallel Byts being executed.
Changes
Disabled the Allow Parallel Byt Proxied Execution option (this has nothing to do with the true parallelization added in this update)
Removed the “Byt Scripts” text
Topbar icons are properly colored
Improved renaming UI
Made settings UI more responsive
Improved colors when the user is hovering over a Byt
Slightly improved light mode icon colors
The button for displaying settings categories is now larger
Checkboxes are now slightly less irritating for look at. This needs some feedback
Fixes
Fixed bug where the scrolling frame would be improperly sized and clipped some options
This will probably be the last time I’ll tell you to update BytExecutor here, since there is an automatic reminder now. So… update BytExecutor now!
Gave functionality to the Power User Mode and Debug Mode options. Their exact purpose will be described in this post
Reload All Byts icon. There are a few bugs that somewhat break execution, but I haven’t been able to reliably diagnose the problem. This serves as a temporary solution, and also as a Power User feature.
Use ScriptEditorService option, which fixes various issues with using BytExecutor in Team Create
BytExecutor about page
Added various other options in the settings menu
Changes
Removed parallelization . The last update introduced a lot of bugs that I didn’t catch earlier that completely broke parallelization. Fixing them would take too long, so I disabled it for now
Tooltips now have padding, making them slighty easier to read
Hovering over the Byt name now displays its BytAddress when Debug Mode is enabled
Slightly improved settings menu UX
Fixes
Fixed confirmation color scheme for light mode
Updated the Sandbox Byts During Execution description
Sorry for not updating in a while. Real life messed me up for several months now and I still don’t have the time to work on BytExecutor. I’m still busy but I am programming when I can.
WARNING: Future versions of BytExecutor beyond v1.4.0 might corrupt your save data as I’m working on something which requires an overhaul as to how data is stored. I recommend you to backup any files regularly!
Additions
Added .BeforePause and .BeforeResume signals to Byt API
Added .exportToModule function which replaces the function of .tableIntoModule (deprecated)
Added additional information to about page
Added icon (to indicate type) to the left of a Byt element.
Update Bar now gives future version numbers
Changes
Updated Icons
Improved error messages
Fixes
Fixed a small issue with string selection in Settings
Fixed a small bug with error reporting
Fixed (hopefully) an issue with losing data
Fixed a visual bug while using light mode
Added internal code in Settings for future releases