Last updated: 25th of September 2009
Latest version of UOAI : UOAI Bèta v0.4.27
Version implementing a quick fix for clients >= v7.0.0.0: UOAI v7.0.0.0 version (will be merged with the v0.4.27 into v0.4.28 eventually)
Note: The latest versions of UOAI.NET and UOAI should now be fully compatible! Thx to arul!
UOAI include file for C/C++ developers: UOAI.h - a usage example for C++ developers can be found a little further in this forum thread.
Please uninstall and reinstall UOAI correctly when downloading a new version. .NET Developers should also make sure they are using the latest .NET Wrapper Library.
The managed wrapper is written and maintained by arul.
The setup application was written by Boydon!
.NET developers, should use the .NET wrapper, the automatically generated interop assemblies will perform badly. See UOAI.NET and the UOAI Managed Wrapper Reference for more info!
ChangeList
- September 25 2009
- v0.4.27
- Statusinfo problems where fixed. Mobile.Name, .Strength, etc... should now work correctly. Also Mobile.onUpdate is now correctly invoked whenever a mobiles hits change (only worked for playermobile previously).
- v0.4.27
- September 19 2009
- More bugs in v7.0.0.0 support were fixed. I think the .Reputation field on Items/Mobiles might still be bugged though, please test!
- September 17 2009
- Support for v7.0.0.0 was bugged, a version with a quick fix (only supported by v7 or higher client versions) was made available. It is still to be considered as experimental support and will eventually be merged with the v0.4.26 UOAI version into a v0.4.27 version supporting both v7 and lower client versions.
- Quick fix version for v7 clients re-uploaded: another small fix was implemented to solve issues with Item.Contents access.
- September 15 2009
- v0.4.26
- Online installer seemed broken (since May?!??), should be fixed now.
- Removed the automatic registration procedures, they are to be readded later on.
- Support for UOML client v7.0.0.0 (and lower) was added.
- v0.4.26
- May 23 2009
- v0.4.25
- Registration code was fixed, however DllUnregisterServer was still buggy... should be fixed now.
- v0.4.25
- May 21 2009
- v0.4.24
- The code requesting extra privileges (added in v0.4.22) was removed again, since it crashes UOAI on some systems.
- v0.4.23
- Setup of v0.4.22 failed due to a bug in the initializations of path-variables. Should be fixed.
- v0.4.24
- May 20 2009
- v0.4.22
- Increased the timeout used when waiting for packets, which might resolve some problems on laggy connections. (another, faster, solution will be implemented in a future v0.4 version)
- Some extra priveleges are requested during registration, which might resolve problems with custom installers when windows Vista's UAC is enabled. (not sure yet if the requested priveleges will suffice)
- v0.4.21
- Registration functions now assume the directory from which UOAI.dll was loaded is the default installation path, instead of checking the install_path registry entry first.
- v0.4.22
- May 18 2009
- v0.4.20
- UOClient.AlwaysRun boolean wasn't read correctly (a uint was read, while its actually stored as a byte), should be fixed now.
- Bugs in the registrationprocedure found and corrected.
- Further delay of initialization-code added to the point where really required, that is when the first class object is requested from UOAI, to minimize the amount of code executed during registration. Hopefully this will fix most installation problems.
- Timeouts in the event handling code are now passed to each UOClient object, which allows reopening the memory mapped queue used to pass events, whenever the UOClient object lost its connection to the injected dll due to a timeout. This should fix the issue noted (mostly during debugging of userapps) where events are no longer invoked after an application using UOAI was shut down/restarted while the client kept running.
- Latest version of UOAINET.dll included.
- Gump-locking now prevents closing the gump alltogether, rather than delaying the "close"-action. This should fix the problems noted when closing a container that is being enumerated by UOAI.
- v0.4.20
- May 13 2009
- v0.4.19
- Due to a small change to the initializations typelibrary registrations were failing during installation, causing an early return during registration and therefore incomplete registration. Should be fixed now.
- Small changes to Drag/Drop, which should make drag/drop faster and more reliable. Normally Item.Drag, immediately followed by Client.Drop() or Client.DropInto() without any delays in between should work fine and fast now.
- v0.4.19
- May 10 2009
- v0.4.18
- Some more bugs in the synchronization-lock system in the injected dll were fixed:
- An item with a corresponding gump, requires its gump to be locked when the item is locked, to prevent the client from hanging whenever the item's gump is destroyed while the item itself is locked by UOAI. Code to lock the corresponding gump of an item was therefore added to the lock-item code.
- The code that locks the container in which an item is contained, when the contained item gets locked, did not initialize the container correctly. If the container did not exist yet in the item instance cache, it did not get locked correctly. Initialization code for teh container was therefore added to the lock-item code.
- Some more bugs in the synchronization-lock system in the injected dll were fixed:
- v0.4.18
- May 8 2009
- v0.4.17
- Synchronization locks (client-side destructor hooks) weren't working correctly for items in a container, potentially causing client-crashes or lockups when closing a container when UOAI is acessing items contained in it at the same time :: should be fixed now.
- v0.4.16
- Small changes to the code that links to "libdisasm.dll", which might fix the problems encountered when writing custom installers for UOAI.
- v0.4.17
- May 6 2009
- v0.4.15
- Method used to read AOS Name/Properties (UOItem.Name/.Properties) changed. Access to .Name/.Properties should be faster and the in-game properties gump should no longer get messed up.
- v0.4.15
- May 5 2009
- v0.4.14
- OnNewItem-event didn't work correctly for items in a container, should be fixed.
- v0.4.13
- Bug at shutdown (in v0.4.12 only) fixed. I previously moved loading and initalization of libdisasm.dll to the callibration function, to avoid the dll being loaded during installation, when only DllRegisterServer is used. That also meant, however, that cleanup of libdisasm should only be done if it was actually loaded... in the case no client was ever detected (and callibrated), this cleanup was still done, resulting in a crash at shutdown.
- Automation String handling (BSTR) was done incorrectly. This should fix problems with the ".Login" function when used from the wrapper in [MTAThread]-mode (and probably will also fix potential problems with other functions taking string paramters).
- v0.4.14
- May 3 2009
- v0.4.12
- Fixed a bug in unicode speech event, causing speech to be passed incorrectly.
- Loading of dlls (libdisasm.dll/UOClientDll.dll) done differently, to ease writing of custom installers.
- Bug during cleanup fixed. (heap corruption noticed from C++ should no longer be present)
- v0.4.12
- April 28 2009
- v0.4.11
- Some extensive debugging of the event-system was done. Two serious bugs were found and fixed. One of them was causing the event-system to shutdown when little events have to be handled; the other was causing an access-violation in the client, probably explaining all client-crashes noted in the v0.4 UOAI versions. I think the event-system should be completely stable now.
- v0.4.11
- April 27 2009
- v0.4.10
- Header file for C/C++ developers, UOAI.h, online now.
- UOPacketQueues (eventqueues) did not work when used from an eventhandler : one thread per client was passing both the events and filling in the packetqueues. To maintain the order in which (packet-)events occur this thead waits until your eventhandler returns. The result is however that while your eventhandler is executing, packetqueues do not get filled with packets anymore. I'm using packetqueues when reading statusinfo now, so statusinfo was not read when accessed from an eventhandler. This should be fixed now.
- v0.4.10
- April 26 2009
- v0.4.9
- Status-info, such as mobile.name, mobile.strength, ... are now read packet-based, which means there's no need for the statusbars to be opened first anymore.
- The setup application now include the right version of both the source code and a binary version (UOAINET.dll) of the managed wrapper written by arul.
- v0.4.8
- The setup application now DOES include both source code and a binary version (UOAINET.dll) of the managed wrapper written by arul.
- v0.4.9
- April 25 2009
- v0.4.8
- The setup application now includes both source code and a binary version (UOAINET.dll) of the managed wrapper written by arul.
- v0.4.8
- UOItem.Name and UOItem.Properties should be read (slightly) faster now.
- Packetsizes for variable-length packets were read incorrectly and so UOAI was passing packets with incorrect size through its event-system. This should be fixed now. I'm hoping the event-system will already be a lot more stable now. Note that, when sending packets with UOAI or reading packets from the packet-events, the packet-size of a variable-length packet should/will be in HOST-order. The conversion to network-order for the size-short is taken care of by the client's internal packet-handling functions.
- v0.4.8
- April 24 2009
- v0.4.7
- UOItem.Name and UOItem.Properties should be working correctly now. (I think... let me know if not!
)
- UOItem.Name and UOItem.Properties should be working correctly now. (I think... let me know if not!
- v0.4.7
- April 23 2009
- v0.4.6
- Event-system wasn't always working due to a minor bug in its initialization, should be fixed now.
- v0.4.6
- April 21 2009
- v0.4.5
- I forgot to include an updated version of UOClientDll.dll (the injected dll). Client-crash issue at login should be fixed now.
- v0.4.4
- Installer now temporarily installs a debugging version.
- Installer now also installs the source code of UOAI and the injected UOClientDll.
- BOOL UOItem.IsMulti added.
- (not working as it should yet:) A multi item will have a non-empty contents. The idea is that for a multi UOItem.Contents will represent a list of its components. Currently however the components offsets get added correctly (so contents.count should represent the correct number of components), but the first time a component gets accessed, UOAI fails to create a UOItem for it because it can not verify its offset in the main itemlist. This will be fixed soon though.
- v0.4.5
- April 18 2009
- v0.4.3
- UOClient.LoadStaticTile, UOClient.LoadLandTile and UOClient.LoadGumpArt all returning a bitmap handle (HBITMAP) added.
- v0.4.3
- April 18 2009
- v0.4.2
- UOAI converted to an Inproc-server (DLL). (UOAI.exe -> UOAI.dll).
- UOAI is now self-registering (Easy registration using "RegSvr32 UOAI.dll" is now possible, allowing easier redistribution of UOAI with your apps).
- v0.4.1
- New callibrations did not work with older clients, should be fixed (tested with UOML Client v4.0.11c only for now).
- v0.4.0
- .Login function added
- onConnectionLoss and onLogout events added
- player skills-handling : client.SkillValue(i), .SkillCap(i), .SkillLock(i), .RealSkillValue(i)
- client.ServerName and .PlayerName added
- item.Name, item.Properties added (AOS only?)
- error in getpacketsize fixed (ntohs was not present when reading from packet)
- mobile.onUpdate did not work for playermobile, should be fixed
- item/mobile.Distance
- BOOL isStatusOpen, BOOL isPaperdollOpen added
- BOOL RenameAble added
- status-bar no longer needs to be open when reading status-info : it is opened automatically (and closed again if it was closed) when accessing any status-info. (same for the paperdoll when reading title from the paperdoll)
- .color returns doubleword that should be word? :: fixed for both .highlightcolor (get/set) and .color
- basic gump-revision (ID=offset, Type=type, Kind=vtbl_offset + GenericGumpID, GenericGumpType for generic gumps, ...) + updated search function(s)
- typeinfo added (from tileinfo) : item.TypeName, .Height, .Weight, . AnimationType, and booleans based on the flags in tileinfo.
- .Targetting was not always working -> changed to packet based targetting (added client.ShowTargetCursor)
- update nsis script to uninstall UOAI on install (thx to Boydon)
- patch for client 12.0.4 and client 13
- libdisasm-based callibrations are used now (should prevent callibration-problems in the near future + ease solving them)
- Fixed bug where events were triggered multiple times after an incorrect shutdown/restart of UOAI, while the client kept running.
- .lasttargetz was read wrong, it is now read correctly as a signed short
- packet filtering/events booleans (.ReceiveFilteredPackets, .ReceiveUOAISentPackets, ... )
- removed useless isvalid-function
- drag/drop changed: lDraggedID is now added/used correctly, and Client.Drop(x,y,z) or .DropInto(containeritem) are used added
- Stackcount was read incorrectly, should now be fixed
- UOAI.ClientPath, UOAI.ClientExe added (launchclient control)
- UOAI.ForceShutdown added (do not use this)
- v0.4.2
- January 13 2009
- @01h00
- Packetevents did not receive packets correctly when using the "ReceiveAllPackets=true" option. Should be fixed now.
- @01h00
- January 12 2009
- @23u30
- Bug fixed in previous update, crashes caused by early release of items/mobiles during invalidation.
- @22u30
- (UO)Client.onMapChange event added.
- Filtering of sent packets should now work correctly.
- Item and Mobile validation was bugged and slow, and was therefore completely redesigned. Items/Mobiles are now invalidated through a hook of the corresponding object's destructor in the uo client. (similar change will be applied to gumps eventually)
- As a result of previous change all properties and methods on items and mobiles will execute a lot faster.
- onDelete events were changed: deletion now also correctly occurs for mobiles walking off the screen. (delete events are now invoked on invalidation)
- @23u30
- January 8 2009
- @2h00
- Packet-filtering added: (UO)Client.AddPacketFilter(packettype); .RemovePacketFilter(packettype); .IsPacketFiltered(packettype); BOOL (UO)Client.ReceiveFilteredPackets. Filtered packets are not handled by the client or passed on to the server. If ReceiveFilteredPackets is true on a client object, than that clients OnPacketRecieve/Send events and packetqueues created from that client will be able to receive the filtered packets even though they are not passed to the server or handled by the client.
One issue remains: packets sent with the .SendPacket2Client/Server will also apply the filters. If your intent is to filter a packet to modify it and pass it on afterwards, you'll have to remove the filter on receiving the filtered packet and re-add it after handling it.
- Packet-filtering added: (UO)Client.AddPacketFilter(packettype); .RemovePacketFilter(packettype); .IsPacketFiltered(packettype); BOOL (UO)Client.ReceiveFilteredPackets. Filtered packets are not handled by the client or passed on to the server. If ReceiveFilteredPackets is true on a client object, than that clients OnPacketRecieve/Send events and packetqueues created from that client will be able to receive the filtered packets even though they are not passed to the server or handled by the client.
- @2h00
- January 6 2009
- @22h00
- Fixed (UO)Client.ShowMessage (previously UOClient.Speech or Client.PlayerSay). The speaker-serial was removed, since it wasn't correctly used in this function.
- @21h00
- Fixed .Facet (.Map) callibration info for newer clients.
- Morning
- The binary version of the managed wrapper library now ships with UOAI, including a basic reference guide.
- Support for the latest client(s) (6.0.12.*) was added.
- Previously reported crashes were fixed.
- IPC subsystem, that passes packets from a client to UOAI was completely redesigned. Event invokation should be much faster now and UOAI should be a lot more stable than previous versions.
- A .PID member was added to the UOClient object and a .FindClient(PID) method was added to the UOAI.Clients Collection.
- Fix of the .Facet (.Map in the .NET wrapper) member on UOMobile and UOItem objects.
- .SendPacket2Server and .SendPacket2Client methods were added to UOClient objects.
- Some minor interface changes were done: UOItem.Drag; UOItem.Equip and UOMobile.Equip now all return a boolean value indicating success or failure; ... (probably more small changes I forgot to list here).
- @22h00
- December 8 2008
- @ 0h00: CPU-usage was extremely high, this should be solved in the new version i just uploaded. Download and install UOAI again to solve high CPU-usage problems.
- December 7 2008
- @ 20h20: Latest setup did not include the latest sources, those were added now. If you need the latest source-code, please download and install UOAI again.
- @ 20h: Previous fix (@ 18h) to solve bugs in the UOMobile/Item instance handling for uninitialized, but allocated instances (such as the player-mobile before log-in), was incomplete. It should work fine with the latest version though: please download and reinstall UOAI.
- @ 18h: Windows Vista compatibility required the setup to run with admin privileges. The nsis-script was updated, UOAISetup.exe was uploaded again.
- @ 18h: Uninitialized, but already allocated Item/Mobile-instances in the UOClient were not handled correctly. Those items/mobiles were inserted into the instance-cache with ID 0, while in fact they should be considered as invalid. (I think the player-item/mobile is the only one that will ever be allocated, but not initialized) This is now fixed. The sample was having trouble due to this bug, so the sample should run correctly again too! Please download and reinstall UOAI.
- December 1 2008
- Setup application replaced by an NSIS-based setup written by Boydon! The NSIS-installscript is included in the sourcecode.
- COM events added, the following events are now available
- UOClient
- .onExit();
- .onNewItem(int ItemID, int ItemType);
- .onNewMobile(int MobileID);
- .onSpeech(int itemid, int itemtype, int SpeechType, int SpeechColor, int SpeechFont, BSTR SpeakerName, BSTR speech);
- .onClilocSpeech(int itemid, int itemtype, int SpeechType, int SpeechColor, int SpeechFont, BSTR SpeakerName, int cliloc_number, BSTR parameters);
- .onDeath(int ID, int CorpseID);
- .onTargetRequest(VARIANT_BOOL targetground, int cursorID);
- .onTargetResponse(VARIANT_BOOL cancelled, int cursorID, int targetID, int targetX, int targetY, int targetZ, int targetTile);
- .onLoginCompletion();
- .onPacketSend(BYTE packet[], int packetsize);
- .onPacketReceive(BYTE packet[],int packetsize);
- .onFight(int attackerID, int victimID);
- .onDelete(int ID);
- .onKeyDown(int virtualkeycode);
- .onKeyUp(int virtualkeycode);
- .onSpeechRequest(int SpeechType, int SpeechColor, int SpeechFont, BSTR speech);
- UOItem
- .onDelete();
- .onSpeech(int speechtype, int color, int font, BSTR speech);
- .onClilocSpeech(int speechtype,int color, int font, int clilocnumber, BSTR parameters, BSTR affix);//not sure when this affix is actually used?
- UOMobile
- .onDelete();
- .onUpdate();
- .onSpeech(int speechtype,int color,int font, BSTR speech);
- .onClilocSpeech(int speechtype,int color,int font,int clilocnumber,BSTR parameters,BSTR affix);
- .onAttack(int VictimID);
- .onAttacked(int AttackerID);
- .onDeath(int CorpseID);
- UOClient
- UOClient.CreatePacketQueue() added, returning a UOPacketQueue object
- UOPacketQueue allows you to receive specific packet-types (cmds)
- UOPacketQueue returns packets in the form of UOPacket instances, which implement functions to allow easy reading from the packetbuffer
- Event-based code went through a lot of changes, so updating to the latest version is recommended.
- Signed/Unsigned issues should be (partly) solved
- Issues with different boolean types should be resolved
- I will now maintain the latest version + update-list in this thread, and link through this thread from the download-section (so people downloading UOAI need to be registered on the forums)
- November 24 2008
- UOAI.Net, by Arul, was added to the downloads section.
- Website was restyled this weekend.
- November 21 2008
- Crash caused by synchronization issues when allocating memory from different COM/non-Com threads solved.
- Minor updates to the webpage: Style sheet added to the webpage and content divided over multiple pages.
- November 19 2008
- First tests on a 64-bit machine running Windows XP Proffesional x64 were succesfull.
- A pHpBB Forum was installed.
- First tests on Windows Vista seem to be succesfull, if UOAI is used from an account with administrator privileges
- New Setup was uploaded, please uninstall and reinstall UOAI.
- UOClientDll.dll was referring to a text-file (with debugging info) that is only available on my system, removing this debugging-code solved the unexpected issues.
- Missing TypeLibrary Added
- Due to unexpected bugs, download links are temporarily disabled.
- November 18 2008
- UOAI Preliminary Beta 0.1 is made available for download.
