I introduce to you UoDemo+ Publish 11, an Ultima Online Gold Demo Patch that enables PvP.

This has been on my hard disk for far too long and I want it out there.

As you all know by now, I've been spending a lot of (too much?) time inside this demo.I analyzed the script parsing engine, created a decompiler for it.I discovered lots of unused functions like writing back DYNAMIC0 and made patches to enable them.DYNAMIC0 is what you can call the world state, it includes all player(s), shopkeepers and their inventories in one file. (The file even contains the accounts of OSI people who worked on the demo...)

I also discovered the demo contained many socket functions, that gave me the idea, does the demo supports multiple clients connecting to it? The demo is really more than just some demo guys, it's contains code from the real OSI servers from June 1998, there is no doubt about that. And yes, it supports multiple clients!

I discovered that the demo supports by default:- bind/listen socket code (yes the demo is capable of listening to a port, the code just never gets called)- accepting incomming connections (bind/listen is never enough, you need to accept connections too)- a linked list to store multiple incoming sockets (connecting players that is)- select API operations on the linked list (is data available/can data be sent/is error?)- sending data to a socket

The demo is (read:was) missing:- calls to the functions listed above- WSAStartup (to initalize socket operations) (WSAStartup is available and unused, but that's from the client side, not the server side)- receive data from a socket

By analyzing the socket classes and by carefully modding the demo I was able to make it all work. I brought the unused pieces together and added the missing code like WSAStartup and receiving data from sockets.

There a currently a few limitations, these are:- you can only connect to it with a patched uodemo to act as a pure client (that is due to the many protocol changes OSI made, nothing I can do about that)- the demo creates new accounts based on the "user's gameplay encryption key"http://kec.cz/tartaros/steamengine/uplo ... cket00.htm NOTE: the last two fields are not available in the demo, the packet length is 0x64 instead 0x68.- when logging in, the demo uses your IP number as the account ID (this is incompatible with the create account approach) This means you have to create a new character every time you close the patched client (I will patch the demo someday to modify this behaviour)- Character names have to be UNIQUE! (as it was on OSI back then?)- if you are running the demo in a Virtual Machine set the VM's priority class to Normal (for both active/inactive)- Never connect to 127.0.0.1, the internal client of the uodemo uses that socket address, even though it's a linked list in memory, for your information, the socket handle is 0xBEEF (OSI humor?)

Now, the server starts listening on the port defined in the uogolddemo directory in the DAT file. By default this is port 10016. If you want to change that port you will need to extract all files from the DAT file and modify the server.txt file. If you set the port value to 0 the server function will be disabled. WSAStartup will always be called because that was really required to make my patch possible.

About the patched client: I named this beast UoDmClnt, you have to place the EXE somewhere . I don't care where. You have to create a file called UoDmClnt.cfg and place it in your UO game directory. The contents are "DemoServer=IP,PORT". For example "DemoServer=192.168.1.15,10016". This client is basically a patched uodemo.exe that disables the server code and connects to the IP address configured in UoDmClnt.cfg.

I hope some of you guys have the time to experiment with it, it would be interesting to have some of the UOSA timings verified or deverified. Just remember: it's June 1998, all patch notes after that are not in the demo this includes pre-casting and meditation.

Wow. Very extensive and impressive work you've done.There are lots of interesting things hidden in the code for the UODemo. I remember a looong time ago on a Sphere shard called Athlore that a guy by the name of Incognito used certain aspects of the demo's code to develop a God client that worked on Sphere shards. He could do everything from change his characters name/skills/appearance to being able to walk through walls and be totally invincible. I don't think he EVER shared it with anyone.

Just woke up, been hearing rumors about something like this upcoming... This is truly amazing, probably the most breakthrough work this shard will ever see on one matter. I can only imagine the time and dedication it took!

_________________

[22:26] <ian> why am i making 3750 empty kegs[22:27] <ian> 1125000 for 3750 empty kegs----------------------------------------[10:44] <ian> a good cat is a dead cat

This is truly amazing, thank you Batlin for helping me out and making sure I got it running. I'll see if I can get some port forwarding open tonight and set up a somewhat permanent server for a week or two for the demo, otherwise would be neat if someone did this... extremely cool.

_________________

[22:26] <ian> why am i making 3750 empty kegs[22:27] <ian> 1125000 for 3750 empty kegs----------------------------------------[10:44] <ian> a good cat is a dead cat

This is very exciting! Is there anyway to maintain world state in between client instances?

I've had the UOdemo along with a T2A install backed up on an external harddrive for many years. At the time when I played there existed a tailoring imbalance which allowed for quick cash, so I worked for a whole day to accumulate around 10k gold and buy a boat, but just about when I broke 10k the client crashed and I lost the world state.

Is the rest of the game world populated if you manage to get out of Occlo?

This is very exciting! Is there anyway to maintain world state in between client instances?

There is. Start the "uodemo+" with an environment variable "SET SAVEDYNAMIC0=YES". The world state is only "saved" when you exit the demo, it's not saved regullary but this could be implemented.

Quote:

At the time when I played there existed a tailoring imbalance which allowed for quick cash, so I worked for a whole day to accumulate around.

Do you remember the method?

Quote:

Is the rest of the game world populated if you manage to get out of Occlo?

Boats are broken and without hacking the game state (or implementing a teleport script) and overwrite some of the server data files (inside uodemo.dat) you cannot get out of the world without making the demo crash. I managed to get out and let me tell you : there is NOTHING but the same graphics you can see with InsideUO. You can't even mine or lumberjack because the data file for the resources only include Occlo.

_________________+ORC: If you give a man a crack he'll be hungry again tomorrow, but if you teach him how to crack, he'll never be hungry again.chumbucket: I don't collect pixels.

I truley hope some people put some work into this. I have enjoyed playing on UOSA for quite some time but as the combat has changed it is no longer realistic and i've lost interest to the point of ready to leave this shard.

_________________

Mr.Brown wrote:

peace out bro hopefully you can play again..you taught me t2a pvp!

Nevermore wrote:

Besides just by playing the shard, vets will have plenty of things that most people who haven't been around as long don't.

Managed to make godclient login until character creation, at this place, client trying to create character, but handles there, character not created on server.

This is becouse character creation packet have 0x68 bytes length.In other case, when trying to login with ip different from 127.0.0.1, never see already existing characters, server don't send any.But they exist in dynamic0.mul.When logging with 127.0.0.1 ip, can see Avatar, and created character with other client. But cannot login with it.

p.s. If anybody need godclient, icq or pm me.To run godclient, you need ren client patched till 2.0.6c, the godclient is version 2.0.8n.I have 2 clients, original, and noncrypted, to able to login i used noncrypted with EditServer property in uo.cfg.If any knowledge about godclient needed, i can help, coded runuo to support most client functions including worldeditor, and some packets included in packetguide.

Who is online

Users browsing this forum: No registered users and 10 guests

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum