UltimaPy - Extract information and images from the UO client files
ultimapy is a python library for rendering images from the Ultima Online client files. The SDK part of the project is almost a direct 1:1 code translation of the C# Ultima SDK (used by UOFiddler, among other things).
The C# SDK does not run with mono due to implementations being missing from the underlying libraries. Attempts to get this to run in dotnet core or using mono have never been successful. Rewriting this code in Python allows the code to be used in a linux environment, for the most part out of the box. Since Python has many available popular open source web frameworks, this library allows you to serve up images directly in code used by your web framework of choice.
It also includes some features not seen anywhere else, such as the rendering of player avatars. Items & paperdolls have been done before in PHP, but that code is difficult to read and edit, whereas this library takes a much more flexible and simple approach (the same as which is used in the C# SDK). This lib even fixes a few rendering bugs which are present in the C# SDK.
ultimapy can currently do the following:
- Render land, statics. This includes rendering of in game items.
- Render "animations" or single frames of animations. This includes monsters and players, though player construction is done by rendering the mount, body, hair and clothing layers in order.
- Draw text from the client (eg, ASCIIFont).
- Extract information about skills - naming, groups, indexes.
- Rendering paperdolls / individual gumps
- UOP support is not planned, which limits the client version.
Install ultimapy to your project with:
pip install ultimapy
You must specify your Ultima Online client directory by any of the following methods:
environment.ini- add the line
- Django - add into settings.py:
- Specify an environment variable
ULTIMA_FILES_DIRwith the value
As above, settings can be set through any of the methods that the
ULTIMA_FILES_DIR can be set by (
environment.ini, Django settings, environment variable).
Currently there are only 2 settings:
ULTIMA_FILES_DIR, this is the path to your Ultima Online directory. This has no default and will not read from registry.
ULTIMA_MOUNT_IDS, if loaded via environment, should be a valid json list of all possible mount IDs. If set in Django, can simply be set up as a list. This has a default of mounts that are found in the 188.8.131.52 client.
How to use ultimapy
Example of creating an image:
from ultimapy.ascii_font import ASCIIFont img = ASCIIFont.FONTS.get_string_image("Hello world") img.save("HelloWorld.bmp")
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size ultimapy-0.0.21-py3-none-any.whl (18.1 kB)||File type Wheel||Python version py3||Upload date||Hashes View|
|Filename, size ultimapy-0.0.21.tar.gz (14.5 kB)||File type Source||Python version None||Upload date||Hashes View|
Hashes for ultimapy-0.0.21-py3-none-any.whl