Contents:
Patcher.exe	=> the patchprogram executable to get and install the patches (you can rename it as you want)
autopatcher.dll	=> a dll the patcher needs for work (do not rename!)
config.xml	=> configuration file for the patcher.exe, configure it and give it to your players
Patchmaker.exe	=> executable to create patchfiles
version.tdv	=> so the file on the server should look like, where things like the latest patch version are stored
beschreibung.txt	=> german tutorial
tutorial.txt	=> english tutorial

1. Creating a Patch
Start patchmaker and click (with the right mouse button) on the field "zu patchende Dateien".
Then add all files you want to have in the patch.
The patcher knows two different ways to patch files. The first is only to compress and copy the file. The second is an
"intelligent" difference patch. But this is only avaliable for the standart-uo-mulfiles
(anim/art/gumps/textures/statics/map/radarcol/tiledata/sound).
if a file you choosed is on of these, it is set to "intelligent patch" per default. you can see this as the file
is green in the list. all files that are compressed only are shown red.
you can also only compress files that could also be patched intelligent, if you want. therefore you select the file in
the list, click the right mouse button and choose "Nicht Patchen".
( "Nicht Patchen" here means not intelligent patching )

=> this is recommended for your basic patch, i.e. the first version, for you can be sure after this that all player
now have the same basic files, where the difference patches are based on.

when you added all files that should be included in the patch, then click on the "..." button and select the
directory, where your "at the moment basic files" are, that means these files, the patcher should do the difference
patch against. (just the latest version your patcher produces at the moment)

then you click the "Start" button and choose a name for the patchfile.
the name has to have the form patch_x.tdv, where "x" is the number of your patch. (so the first patch would be 
patch_1.tdv )
then just wait until the patchmaker has finished, this may take some time, so be happy and wath the progress bar ;)

hint:
for internal technical reasons it makes sense to copy anim.idx and not patch differentially if you only added new items,
but no new animations to anim.mul.
in all other cases, the difference patch will be much smaller.

2. configuration of version.tdv
"Version" has to be the number of the latest patch, so for the first patch it is "Version=1".
"Versionname" is the name of the version, that is shown in the patcher when applaying the patch.
(could be any string)
Important: Version has to be continuously, i.e. patch 2 follows patch 1 and is followed by patch 3.
The player does not see the real version number, but only what you wrote as versionname.
"Shardinfo" : here you can write some text that is shown in the patcher
"Banner" : here you can declare an image that is loaded as banner from the patcher
this file has to be in the same directory like version.tdv
( the banner is loaded only once and then again when its name changed. if there is no
banner, an uodev-banner will be shown )

possible version.tdv:

[TDV]					<== has always to be here
Version=1				<== Versionsnummer, continuously
Versionname=1.0				<== Name of the current version
Shardinfo=Wir haben einen neuen Patch.	<== Any Text
Banner=shardbanner.jpg			<== Banner as jpg, format 468x50 pixel
Auth=0					<== Auth Level, if > 0 then there will be a passwordcheck
FileSuffix=tdv				<== Which ending the patch_1.* files have ( IMPORTANT! only for the patches, version.tdv _must_ have a .tdv ending )

3. configuration of the config.xml
UOPath : just let it "", then at the first start there will open a window to select the UO directory
set VersionName and Version to 0. there will be saved the name and version of the actual patchversion
Servername is the adress to the directory on the server, where the version.tdv file and all patches
( patch_1.tdv, patch_2.tdv, ... ) are
Client is the file in the uo-directory that should be started when the patch has finished
LoginString is the string that is written into login.cfg before starting the client
ProgName is the title of the this application
( maybe "Shardname Patcher" or something like this )

4. uploading version.tdv and patch_1.tdv (and maybe more patches)

5. give your players the files patcher.exe, autopatcher.dll and config.xml

6. let your player start the autopatcher

7. it works (at least i hope so, if not feel free to ask me or in www.uodev.de board ;) )

8. hint: the patcher first connects to uodev to see if there is a newer version (of the autopatcher)
if there is one, it will be loaded automatically (then the patcher updates itself and closes. after that
just restart the patcher and you have the latest version)

9. to avoid problems, the patcher will _always_ be downwards compatible.

10. a link to www.uodev.de on your homepage would be great, if you use this program :)

11. things you need for the passwordchecking:
important: the version.tdv has to be loadable without authorization
is Auth > 0 in version.tdv, the patcher connects with username and md5-encrypted password
( lowercase ) to:
Servername/patcher.php?action=authenticate&user=Username&password=Password
in the header of the reply it expects an 'patcher-auth' with value 'ok' if it worked, else
there should be anything else.
if authorization was corret, there has to be send a cookie with a PHP-sessionid
after this the patcher tries to load all patches via
Servername/'patcher.php?sessionId=PHPSessionID&request=patch_i.tdv
for all patches there has to be the md5-chechsum in the header of the answer
( the answer that is the file ) as 'patch_verification'.

VD
varan@torderverlorenen.de
www.uo-mittelerde.ch
www.uodev.de