You can view the Ashita v3 changelog on the website here:
http://ashita.atom0s.com/changelogv3.php
This thread will contain all the beta changes that have happened between Ashita v2 -> Ashita v3.
Some things may be missed although I'm trying to ensure nothing is left out.
Code: Select all
---------------------------------------------------------------------------------------------------------------------------
Ashita v3 - Overall Changelog (Source Code)
---------------------------------------------------------------------------------------------------------------------------
[CHG] Ashita v3 has been fully rewritten to ensure better code consistency and quality.
[CHG] Base hook has been fully rewritten in Visual Studio 2015 (Update 3), making use of newer C/C++ features. (C++11,14,17)
[CHG] Moved various parts of the source code into sub-folders to cleanup the solution.
[CHG] Updated documentation within the project source code to use JSDoc format for readability and parsing potential of auto-generating docs.
[REM] Removed AnTweakBar from the Ashita Project. This UI is no longer needed with the addition of ImGui.
[CHG] IImGuiManager has been renamed to IGuiManager, taking over the old GuiManagers name/place in the project.
[CHG] Updated Detours library to latest version.
[CHG] Updated TinyXML2 library to latest version.
[CHG] Ashita's logging is now handled within a new manager named LogManager. This is accessible to plugins now via the ILogManager interface.
[CHG] KeyboardWrapper is now named Keyboard and is moved into the DirectInput Wrapper folder.
[CHG] MouseWrapper is now named Mouse and is moved into the DirectInput Wrapper folder.
[CHG] Renamed DatFileEncryption to XiDatFileEncryption.
[CHG] Renamed DatFileStructures to XiDatFileStructures.
[ADD] Added more logging and colored chat output to Ashita to help with debugging.
[ADD] Added more events for plugins to respond to.
[CHG] Changed some existing events to allow for modified data and overriding easier.
[REM] Removed some unneeded hooks / code that are no longer used for anti-windowing purposes.
[CHG] Addons are now stored in the base directory of Ashita inside of their own 'addons' folder instead of within the 'scripts' folder.
---------------------------------------------------------------------------------------------------------------------------
-- ADK Related Changes
---------------------------------------------------------------------------------------------------------------------------
[CHG] ffxi/entity.h - Overhauled the full file, cleaning up types and names.
[CHG] ffxi/enums.h - Overhauled the full file, cleaning up types and names.
[ADD] ffxi/enums.h - Added some new macro definitions for things.
[ADD] ffxi/enums.h - Added some new enumerations for various things.
[CHG] ffxi/inventory.h - Overhauled the full file, cleaning up types and names.
[CHG] ffxi/party.h - Overhauled the full file, cleaning up types and names.
[CHG] ffxi/player.h - Overhauled the full file, cleaning up types and names.
[ADD] ffxi/player.h - Added a lot more information to the player.h structure, replacing a lot of unknown data.
[CHG] ffxi/target.h - Overhauled the full file, cleaning up types and names.
[CHG] Renamed AS_Data.h to AS_BinaryData.h and cleanuped the file overall.
[REM] Removed AS_Rect.h and AS_WindowProps.h files.
[REM] Removed AS_String.h file.
[CHG] Overall cleanup of the ADK files.
[ADD] Added new AS_Objects.h file which holds various Ashita specific structures.
[CHG] AS_Memory.h is now using my personal scanner code instead of an old method.
[CHG] Overhauled AS_Registry.h to cleanup the code as well as fix some minor issues.
[CHG] Ashita.h - Massive overhaul of the entire file, cleaning things up.
[ADD] Ashita.h - Added some ReSharper comments to remove some unimportant warnings.
[CHG] Ashita.h - Ashita interface version is bumped up to 3.0
[REM] Ashita.h - Removed old AnTweakbar code as it is no longer used.
[ADD] Ashita.h - Added a simple structure for reading the current Ashita version from the GetVersion export.
[ADD] Ashita.h - Added the install parameters structure to the ADK for those that may want to create their own injector.
[ADD] Ashita.h - Added new enumerations for various things.
[CHG] Ashita.h - Cleaned up the names and types of all the structures and interfaces.
[CHG] Ashita.h - Adjusted the naming of some members of the IAbility, ISpell and IItem structures.
[ADD] Ashita.h - IItem now contains a member BaseItemId for items that are upgraded. This is the base item id for the upgrade process. (Not all upgraded items use this.)
[CHG] Ashita.h - Renamed instances of 'Monipulator' to 'Monstrosity' to be more clear of its purposes.
[CHG] Ashita.h - Updated the various interfaces to match the new exports and such.
[CHG] Ashita.h - Various functions within each interface has been renamed to conform with the changes inside of Ashita.
[REM] Ashita.h - Removed IGuiManager entirely as AnTweakBar is gone.
[CHG] Ashita.h - ImGui has replaced IGuiManager instead, however it can be found in the imgui.h file in the ADK folder.
[ADD] Ashita.h - Added log file exposure via the new ILogManager interface.
[ADD] Ashita.h - IAshitaCore now contains a handful more properties.
[CHG] Ashita.h - PluginData has been renamed to plugininfo_t instead.
[CHG] Ashita.h - IPlugin has been renamed to IPluginBase. (Plugins should now inherit from 'IPlugin' instead.)
[CHG] Ashita.h - GetInterfaceVersionFunc export is now renamed to getinterfaceversion_f.
[CHG] Ashita.h - CreatePluginDataFunc export is now renamed to createplugininfo_f.
[CHG] Ashita.h - CreatePluginFunc export is now renamed to createplugin_f.
[REM] Ashita.h - CreatePluginFunc (now createplugin_f) no longer takes a parameter.
---------------------------------------------------------------------------------------------------------------------------
Class Specific Changes
---------------------------------------------------------------------------------------------------------------------------
AshitaCore
[CHG] Overall major code cleanup and reorganization.
[ADD] Added new property exports for various window information. (FFXi, PlayOnline, PlayOnline Mask)
[ADD] Added new property exports for various features. (Mouse hooking, etc.)
[ADD] Added new property exports for various Direct3D related things. (Fill Mode, Ambient Lighting, etc.)
ChatManager
[CHG] Overall major code cleanup and reorganization.
[CHG] RunTextScript has been renamed to RunScript.
[CHG] Renamed internal command handler to be less confusing to similar named functions.
[CHG] Cleaned up the custom function hooks.
[CHG] Added some more safety checks to AddToChatlog hook to ensure invalid pointer crashes should not happen.
[CHG] Increased the buffer used for AddToChatlog to allow for longer strings in the event of adding big chunks of data.
[CHG] AutoTranslate hook is now named 'ParseAutoTranslate' to be more consistent with the rest of the code that uses it.
[CHG] ParseCommand hook now validates both steps of its pointer to prevent null pointer crashes.
[CHG] ChatManager::Initialization - call ensures previous data / pointers are freed to prevent memory leaks.
[CHG] ChatManager::Update - call will now be more verbose with Debug/Error logging to help diagnose issues.
[CHG] ChatManager::ParseCommand - now validates both steps of its pointer to prevent null pointer crashes.
[CHG] ChatManager::AddChatMessage - now enforces reparsing of auto-translation text similar to how the client works.
[CHG] ChatManager::ParseAutoTranslate - major cleanup to the processing code of the translate tags. Should be much faster now.
[CHG] ChatManager::RunScript - cleaned up code to be more efficient. Fixed a bug with checking for self-calling scripts.
[CHG] ChatManager::SetInputText - removed some unneeded checks that were overkill.
[FIX] ChatManager::SetInputText - clamps the incoming data length to 120 to match the games max size.
[FIX] ChatManager::Write - fixed a minor bug with mixing unicode and ascii encodings.
[CHG] ChatManager::InternalCommandHandler - major overhaul of all internal handled commands.
[FIX] ChatManager::AddToChatlog - Detour callback will now properly process the 'backlog' queue by passing it to addons/plugins before adding it to the log.
[CHG] HandleNewChatLine has been renamed to HandleIncomingText.
[ADD] HandleOutgoingText has been added as a plugin callback for when outgoing text from the client was not handled as a command.
[REM] Removed some unneeded functions.
[ADD] Added a lot of colored printing messages to the various commands help information.
[REM] Removed the command /unload all as it did not make sense with /unloadall being a command as well.
[CHG] HandleIncomingText now supports modified data and blocking information for plugins to easier handle the event and customize things.
[CHG] HandleOutgoingText now supports modified data and blocking information for plugins to easier handle the event and customize things.
CommandTaskPool
[CHG] Simplified task type names that can be queued into the pool. (GameCommand -> Command, ExecuteScript -> Script).
[CHG] Adjusted the task information structure slightly. Renamed members.
[CHG] Renamed thread information structure members to remove unneeded prefixes in names.
[CHG] Reordered the parameters of the QueueTask function. The task type is now first.
[FIX] Fixed a potential null pointer crash in the thread callback handler.
[CHG] Adjusted some thread-safety lockings.
[ADD] Added check for quit message raising in the thread pool monitoring handler to ensure threads exit and cleanup properly.
ConfigurationManager
[CHG] Renamed LoadConfiguration to Load.
[CHG] Renamed RemoveConfiguration to Remove.
[CHG] Renamed SaveConfiguration to Save.
[REM] Removed the default LoadConfiguration function and merged it into the over-loaded one. (Now just a single Load call.)
[REM] Removed the GetConfigString, GetConfigBool, GetConfigFloat, GetConfigDouble functions.
[REM] Removed old templated value getters.
[CHG] Merged GetConfigString functions into a single instance of the function named GetString.
[CHG] Renamd SetConfigValue to SetValue.
[ADD] Added new templated value getters that handle a wider range of value types. (int8_t -> int64_t, uint8_t -> uint64_t, bool, float, double)
[ADD] ConfigurationManager::Load - will now automatically handle the file extension (.xml) as needed.
[ADD] ConfigurationManager::Load - will now automatically assume configuration files are within the Ashita\config\ folder.
[ADD] ConfigurationManager::Save - now takes a second parameter being the file to save to. (Again the config is assume to be within the config folder automatically.)
[FIX] GetValue templated functions should properly handle values without percision lost or signed/unsigned casting issues.
[CHG] Changed the get/set value exposure to plugins to be named a bit cleaner. Exposed more data types as well.
DataManager
-- This managers code has remained the same.
FontManager
[CHG] Renamed CreateFontObject to Create.
[CHG] Renamed GetFontObject to Get.
[CHG] Renamed DeleteFontObject to Delete.
[ADD] Added several bits of thread-safety locking to the managers functions to prevent threading issues with the fonts map.
[CHG] Updated looping handlers to use C++11 ranged-based loops.
[ADD] Font objects will now move based on the location of the mouse and not based on the center of the text object.
[ADD] Clicking a font object while FFXi is not in focus should now pull the game into focus properly.
[FIX] Fixed a few instances where input handling was not returning true to block input that was captured.
[FIX] Font objects now render in reverse order.
FontObject
[CHG] Renamed some internal variables to be more understandable at first-glance.
[CHG] Renamed FontName to FontFamily to be more consistent with other coding interfaces.
[CHG] Renamed and exposed BorderSize, it is now considered Padding.
[REM] Removed width and height properties as these were no longer used.
[CHG] Renamed m_NeedsUpdate to m_IsDirty and exposed Get/Set functions for it.
[ADD] Added Get/Set functions for creation flags.
[ADD] Added Get/Set functions for draw flags.
[REM] Removed SetFont function.
[ADD] Added SetFontFamily and SetFontHeight functions.
[REM] Removed SetPosition function.
[ADD] Added SetPositionX and SetPositionY functions.
[CHG] Renamed SetLockPosition to SetLocked to be more understandable.
[ADD] Added SetWindowWidth and SetWindowHeight functions. (You should not need these but they are there if you do.)
[CHG] Changed mouse position related function parameters to use int32_t instead of floats. (ie. HitTest function)
[CHG] Font objects will now default to not being visible when first created. You will need to use SetVisibility to true to make your objects show.
[CHG] Font objects will now default to being movable when created. (Locked flag is false.)
[REM] Device pointer is no longer passed to the creation of an object, instead is only passed during Initialization call.
[CHG] Padding is now default to 0 instead of 0.1f.
[CHG] Reordered the initialization of font objects so that the high-risk of failure functions happen first.
[CHG] Tweaked some calculations with rendering font objects to be more accurate.
[CHG] Optimized the code for updating the background primitive object of font objects.
GuiManager
[REM] Removed the old AnTweakBar Gui manager and replaced it with the newer ImGui manager. (ImGuiManager was removed and renamed to GuiManager.)
InputManager
-- This managers code has remained the same.
LogManager
[ADD] Added exposure to the log file. Users can now access the ILogManager interface.
[CHG] Cleaned up the logging output to be more condense and cleaner.
[CHG] Overhauled the logging done by Ashita to be more informative when needed.
PacketManager
[CHG] Minor code cleanup, overall this manager has remained the same from Ashita v2.
PluginManager
[CHG] Optimized various parts of the code.
[CHG] Added some more detailed output for various things.
[CHG] HandleIncomingPacket now supports modified data and blocking information for plugins to easier handle the event and customize things.
[CHG] HandleOutgoingPacket now supports modified data and blocking information for plugins to easier handle the event and customize things.
[ADD] Added new plugin events for various Direct3D related things. (Primitive drawing, render state setting.)
PointerManager
[CHG] PointerManager has been updated to use my newer personal memory scanning function which is async and much faster.
[CHG] PointerManager has been updated to use my newer memory scanning functions format of signatures removing the need of separate signatures and masks.
[CHG] Updated internal pointer table to reflect these changes.
PrimitiveObject
[CHG] Renamed some internal variables to be more understandable at first-glance.
[ADD] Added customizable borders to the primitive objects similar to WPF/HTML style borders.
[ADD] Added GetBorderVisibility, GetBorderColor, GetBorderFlags, and GetBorderSizes functions.
[ADD] Added SetBorderVisibility, SetBorderColor, SetBorderFlags, and SetBorderSizes functions.
[CHG] Changed SetTextureFromResource's first paramter to the file name instead of handle. Allowing for easier usage of the function.
[CHG] Changed the default color from 0xFF000000 to 0x80000000.
[ADD] Added defaults for borders. (Defaults are not visible, red color, no flags set, and 0 size.)
[REM] Device pointer is no longer passed to the creation of an object, instead is only passed during Initialization call.
[CHG] Cleaned up the sprite rendering code when drawing a textured primitive.
[CHG] Cleaned up the sprite rendering code when drawing normal primitive.
[ADD] Added code to render borders around the primitive. (Similar to how HTML borders work.)
[FIX] Fixed a minor potential rendering issue due to render states.
[ADD] PrimitiveObject::SetTextureFromFile - added some additional error checks.
[ADD] PrimitiveObject::SetTextureFromResource - now looks up the file module handle automatically due to first argument change.
ResourceManager
[CHG] Full rewrite of the parser and its headers.
[CHG] Optimized some parts of the parser that were a bit underwhelming. (Faster parser times now.)
[ADD] Added parsing for: augments, jobpoints, merits, mountsname, mountsdesc, titles
[ADD] Added parsing for some missing Japanese files.
[ADD] Added more detailed logging for when things go wrong.
[ADD] Added more chat output to let the user know if things are messing up.