This comes with two client-side patches and several server-side patches. The client-side patches will disable the automatic logon process so you can type an account number and create/select a character to log on with. The server-side patches are plenty and modify where the core stores the 'Account ID/Number' and how it is processed.
Because the new options may be confusing let me first explain the differences...
Game Logon: automatic
Account Password: ignored
Account Logon: 'Account ID' equals 'Client IP Address'
Account Creation: 'Account ID' equals 'Client-Side Logon Key'
Game Logon: automatic but can be disabled by using "MANUALLOGON"
Account Password: ignored
Account Logon: 'Account ID' equals 'Client IP Address'
Account Creation: 'Account ID' equals 'Client IP Address'
Game Logon: automatic but can be disabled by using "MANUALLOGON"
Account Password: ignored, but ...
... if the 'Account Name' is valid than the password must be empty
Account Logon: 'Account ID' defaults to 'Client IP Address' but ...
... if 'Account Name' inside the packets is set and non-zero and is a number then ...
... the 'Account Name' is converted to an 'Account ID'
Account Creation: 'Account ID' defaults to 'Client IP Address', but ...
... if 'Account Name' inside the packets is set and non-zero and is a number then ...
... the 'Account Name' is converted to an 'Account ID'
NOTE: Only the localhost is allowed to use 2130706433 (127.0.0.1) as an 'Account Name'.
This gives uodemo+ server operators the chance to have an account decidated to them.
I have modified the demo so that when an 'Account Name' is found in the packet it will be verified. The server will respond with error codes using previously unused server code already available in the uodemo.exe.
New accounts and characters will only be stored in the Dynamic0.mul.q file if you enabled SAVEDYNAMIC0. This is on exit only so if the Ultima Online demo crashes for some reason everything will be lost.
UoDmClnt, Publish 4 has the MANUALLOGON enabled by default and there is no way to disable it. Use an older version for older functionality.
I do plan to make CharacterDelete (packet 0x83) work again, the demo server is receiving the packet but is ignoring it:
- HandlePacket83_CharacterDelete.jpg (108.85 KiB) Viewed 3978 times
The packet reply for this packet (packet 0x86) is in the demo server code too but unreferenced. I'm planning to link the two functions and provide a working CharacterDelete for the UO demo.
This patch is pretty experimental, some feedback would be nice .