Current ToDo

The latest version of the UOAI library and all directly related information can be found in this forum.

Re: Current ToDo

Postby Artaxerxes on Fri Nov 28, 2008 1:22 am

New version of UOAI uploaded and attached to the first post in this thread.

Changes were made to the event-based code, currently the following events are triggered on the UOClient object:
  • UOClient.onExit();
  • UOClient.onNewItem(int ItemID, int ItemType);
  • UOClient.onNewMobile(int MobileID);
  • UOClient.onSpeech(int itemid, int itemtype, int SpeechType, int SpeechColor, int SpeechFont, BSTR SpeakerName, BSTR speech);
  • UOClient.onClilocSpeech(int itemid, int itemtype, int SpeechType, int SpeechColor, int SpeechFont, BSTR SpeakerName, int cliloc_number, BSTR parameters);
  • UOClient.onDeath(int ID, int CorpseID);
  • UOClient.onTargetRequest(VARIANT_BOOL targetground, int cursorID);
  • UOClient.onTargetResponse(VARIANT_BOOL cancelled, int cursorID, int targetID, int targetX, int targetY, int targetZ, int targetTile);
  • UOClient.onLoginCompletion();
  • UOClient.onPacketSend(BYTE packet[], int packetsize);
  • UOClient.onPacketReceive(BYTE packet[],int packetsize);
  • UOClient.onFight(int attackerID, int victimID);
  • UOClient.onDelete(int ID);
  • UOClient.onKeyDown(int virtualkeycode);
  • UOClient.onKeyUp(int virtualkeycode);
  • UOClient.onSpeechRequest(int SpeechType, int SpeechColor, int SpeechFont, BSTR speech);
Next will be events on UOItem, UOMobile and UOGump objects, normally by tomorrow night (GMT+1) or saturday morning these will be implemented.
If you have any suggestions, that is any events you think should be added, let me know.
Artaxerxes
Site Admin
 
Posts: 530
Joined: Tue Nov 18, 2008 9:51 pm

Re: Current ToDo

Postby arul on Sun Nov 30, 2008 12:11 pm

Great news! Thanks.
arul
Pro
 
Posts: 107
Joined: Thu Nov 20, 2008 2:03 am
Location: Prague

Re: Current ToDo

Postby Artaxerxes on Sun Nov 30, 2008 12:54 pm

Currently working on more events: Some will be moved to a later date, f.e. the "beforeUpdate" event would have to be invoked synchronously, while all events are now invoked asynchronously, so not sure if it will ever be implemented (might slow down things too much). Then the same thing goes for packet-filtering, it has to be done synchronously. This last one could be implemented though with a .setFilter(BYTE cmd, BYTE filterbytes[], BYTE filtermask[]), which will be passed to the injected dll, so filtering can be directly done in the hooks. The packet will then be compared to the filterbytes array, taking into account the mask (so only the bytes marked with a 0xFF byte in the mask will actually be compared).
I'm also working on the UOPacketQueue object, which will basically represent a queue that receives specific packet types of your choice. It might preform a little better than using com-events, but doesn't do the packet-parsing for you.
Except for events I'm also working on moving the status-info to packet-based statusinfo and adding the "follow"-functionality using packets.
The event-layout in the next upload (by tonight i think), will have the following new events:
  • 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);
Artaxerxes
Site Admin
 
Posts: 530
Joined: Tue Nov 18, 2008 9:51 pm

Re: Current ToDo

Postby arul on Sun Nov 30, 2008 3:05 pm

One thing about the setFilter(...) function, what if there are 2 applications accessing the same client? There's probably no way to tell who set the filter, without apparent drawback of passing in some unique identifier, so these hooks will have to work client-wide.

That being said, I'd change the method signature a little to read like this:

bool setFilter(BYTE cmd, BYTE filterBytes[], BYTE filterMask[])
returns false if there was already a filter set, otherwise returns true.

Or there may be another kind of policy for managing the filters.
arul
Pro
 
Posts: 107
Joined: Thu Nov 20, 2008 2:03 am
Location: Prague

Re: Current ToDo

Postby Artaxerxes on Sun Nov 30, 2008 11:00 pm

arul wrote:One thing about the setFilter(...) function, what if there are 2 applications accessing the same client? There's probably no way to tell who set the filter, without apparent drawback of passing in some unique identifier, so these hooks will have to work client-wide.

That being said, I'd change the method signature a little to read like this:

bool setFilter(BYTE cmd, BYTE filterBytes[], BYTE filterMask[])
returns false if there was already a filter set, otherwise returns true.

Or there may be another kind of policy for managing the filters.


Didn't think about that, there will indeed be some difficulty managing filters set by multiple apps. Either I will have to uniquely identify each app or each filter in the injected code, or as you say just disallow multiple filters per packet-type.

I didn't get to implementing this yet though, so haven't decided yet.

I'm currently recompiling the setup with the latest changes, all event-based code should be there now (including the packetqueue type of events), except for the gump-events, these will be added later. New setup + source will be up in the next 10 minutes.
Artaxerxes
Site Admin
 
Posts: 530
Joined: Tue Nov 18, 2008 9:51 pm

Re: Current ToDo

Postby Artaxerxes on Sun Apr 26, 2009 3:52 pm

Todo was updated. Let me know if theres something missing on my todo list.
Artaxerxes
Site Admin
 
Posts: 530
Joined: Tue Nov 18, 2008 9:51 pm

Re: Current ToDo

Postby megamandos on Sat May 23, 2009 7:40 am

Do you need an update system to be coded?
"Those who sacrifice liberty for security, deserve neither." Benjamin Franklin
User avatar
megamandos
Guru
 
Posts: 312
Joined: Thu Jan 29, 2009 5:01 am

Re: Current ToDo

Postby Artaxerxes on Sat May 23, 2009 12:38 pm

megamandos wrote:Do you need an update system to be coded?


You mean like an application that downloads/patches a new version whenever available? Not sure about that... It's true that UOAI still changes a lot, and maybe for users of applications written based on UOAI it might be more interesting to have bugs fixed by automatically getting updates... but i personally dislike applications that automatically connect to the internet to download updates, or that constantly prompt to ask if updates should be downloaded. Also, many updates of UOAI are really small right now, so there is no need to download each and every patch. I think it would be more efficient to have a content-management/bug reporting php system online that allows versioning of files, so that you can built your applications against one specific UOAI version. I didn't find the time yet to work on the site though.
Maybe an updater that can be downloaded seperately from UOAI, so that people who don't want UOAI to constantly check for updates don't need to install it, could be usefull.
Artaxerxes
Site Admin
 
Posts: 530
Joined: Tue Nov 18, 2008 9:51 pm

Previous

Return to UOAI Developers Forum

Who is online

Users browsing this forum: No registered users and 1 guest

cron