SphereCommunity
UOExt - We do what EA can't. - Printable Version

+- SphereCommunity (https://forum.spherecommunity.net)
+-- Forum: General Discussion (/Forum-General-Discussion)
+--- Forum: Sphere Tools (/Forum-Sphere-Tools)
+--- Thread: UOExt - We do what EA can't. (/Thread-UOExt-We-do-what-EA-can-t)



UOExt - We do what EA can't. - Warstone - 06-24-2012 10:21 PM

Today I'm proud to represent my new project: UOExt.

Current version is 0.1.0 RC1.

Let me explain what it is..

This tool devepoling for shard owners, alloing them to ship their code to client, run it and communicate with client and protocol.
Right now it can: Automatically update, download plugins (controls from server), hook protocol and allow plugins to react to messages, meking transparently unpacking, decoding, resending etc... All this stuff.

It's arcitecture directed to minimize impact of heavy plugins, so it's created on proxy basis...

UOExt starts new thread in client's address space, allow you to hook some client APIs, amd communicate with proxy like normal thread communication, then it modifies connect API to force it to connect to local proxy, and connects to server pathing all protocol through self.

This project is open source, but due to plugin arcitecture you can write your own close-source pugins.

There is one small problem... Right now it bounds to RunUO(not fully, but close). So, if anyone with good knowledge of Spehre will write it support - it will be greate.

What it potentially (read it like "I know how it could be done, but I havn't got any time Tongue") can do:
Hot-line statics and map patching (all changes will show to client immideatly).
Auto-connection tool (I konw that someone already do it, he changes login screen with custom controls and graphics, skips caracter creation screens, etc)
Many other improvements, that I couldn't imagine ))


RE: UOExt - We do what EA can't. - Warstone - 08-06-2012 05:09 PM

RC2 is on the test stage...

Changes from RC1 to RC2
[Core]
[ADD] UOExt now can read client launch params and use it like IP/Port (I.E: client.exe 127.0.0.1:2593 will fore client to connect to this IP/Port. Razor will be overrided).
[ADD] If normal connect won't answer as needed during Update process, UOExt wil try NOT port for same IP.
[ADD] Persistent connection to Update server it needed.
[ADD] Plugins now can export API for other plugins.
[ADD] x64 and Unix server support based on XML information for plugins.
[ADD] If debug, than log every unknown packet
[FIX] (Speedup) Updater now can update UOExt and reload it without reloading client.
[FIX] Broken "connect" API call.
[FIX] Broken UOExt.GUI.dll update reload.
[FIX] When update packet(s) hasn't come from server UOExt crashes.
[FIX] If no Plugins folder in UO - UOExt crashes.
[FIX] GetPacketLength error.
[DROP] WindowProc hook.
[DROP] Runtime injection API.
[GUI]
[CHANGE] New logo, that generated in runtime with semi-transparency. Tongue


RE: UOExt - We do what EA can't. - Shaklaban - 08-07-2012 11:34 AM

well if it is using custom packets it is not possible to add sphere support it with scripts because spheres incoming packet filter only filters standard packets. packets which is not belong to the client only creates error on console (unknow packet xx received) and packet filter don't catch these packets.

also how can we download source of uoext i just can't find the link on google source link.


RE: UOExt - We do what EA can't. - Warstone - 08-07-2012 05:40 PM

http://code.google.com/p/uo-ext/downloads/list

I know, that Sphere is too fool to process custom packets (BTW, I hear 3 different answers from 3 different people, that use Sphere), so it's to bad for Sphere (as for me - I'm using RunUO, but it's hollywar )) ).

Right now you can specify any encapsulation packet... It can be and sized packet. You can even use existing packet that has been used for smth like bullitain board packet.

Even more... I don't know much about Sphere, but if it dosn't know about 0xEF packet (2.0.3 client didn't know. It's from 6.0.10.X and above), than you can just run fully sparete update server (Only RC2... This is done because of old Sphere and POL servers). UOExt knows about old Seeding mecanics. All it need is to get encryption off from 2.0.3 client (because there is old mecanics based on Pi, or smth. like that and I didn't do this method for now. Maybe it will be later in next versions).

(08-07-2012 11:34 AM)Shaklaban Wrote:  also how can we download source of uoext i just can't find the link on google source link.
You can get working copy with TortoiseSVN or (if you use console version of subversion) using this command:
svn checkout http://uo-ext.googlecode.com/svn/trunk/ uo-ext-read-only


RE: UOExt - We do what EA can't. - admin phoenix - 08-07-2012 11:40 PM

in the past there was a new client coded, palanthair was it´s name.
there were also custom packets like making new size for anims ingame. you could change the body anim from the c_man, for example, to a smaller size so that he is looks like a dwarf.
and I know that valios supported this packet via new sendpacket command. I also used this sendpacket command and it worked.
So, it is possible to support custom packets.

but for my understanding.
with this tool, it will be possible to make such things like I wrote down above?
is there anything else we can do in the future like making new paperdoll and so on?


RE: UOExt - We do what EA can't. - Warstone - 08-08-2012 01:08 AM

Right now UOExt is only... A kind of framework, that runs your code in client address space and allow you to react on protocol...

You can hook CreateDirectDraw function (or smth like this) and return to client your object. This will allow you to control "what client draws on screen"... So generally - yes you can, but it will be hard to do.

What you could do (It will be done someday by me) is... Update static and map in runtime.


RE: UOExt - We do what EA can't. - admin phoenix - 08-08-2012 04:41 AM

for that I have centred. not the same but ok for that Smile


RE: UOExt - We do what EA can't. - darksun84 - 08-08-2012 07:16 AM

i don't think centred can change statics/map while the server is running Veryhappy


RE: UOExt - We do what EA can't. - ShiryuX - 08-08-2012 11:36 AM

If you give me the information to bound it, I'll do itSmile


RC2 is out! - Warstone - 08-16-2012 08:38 PM

Finally it's here. Final changelog:
Code:
Changes from RC1 to RC2
[Core]
  [ADD] UOExt now can read client launch params and use it like IP/Port (I.E: client.exe 127.0.0.1:2593 will force client to connect to this IP/Port. Razor will be overrided).
  [ADD] If normal connect won't answer as needed during Update process, UOExt wil try NOT port for same IP.
  [ADD] Persistent connection to Update server if needed.
  [ADD] Plugins can now export API for other plugins.
  [ADD] x64 and Unix server support based on XML information of plugins.
  [ADD] If this is debug build, than packet logging enabled.
  [ADD] Standalone server now can listen all IPs, if m_IP is null in config.
  [ADD] Several fixes for 2.0.3 support. Right now UOExt can work with 2.0.3 client if you patch it's encryption.
  [FIX] (Speedup) Updater now can update UOExt and reload it without reloading client.
  [FIX] Broken "connect" API call.
  [FIX] Broken UOExt.GUI.dll update reload.
  [FIX] When update packet(s) hasn't come from server UOExt crashes.
  [FIX] If no Plugins folder in UO - UOExt crashes.
  [FIX] GetPacketLength error.
  [DROP] WindowProc hook.
  [DROP] Runtime injection API.
[GUI]
  [CHANGE] New logo, that generated in runtime with semi-transparency. :P