Skip to main content

UltimaPy - Extract information and images from the UO client files

Project description

PyPI version

ultimapy

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).

It does not support saving back to client files, only reading.

Why?

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.

Features

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

Installation

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 ULTIMA_FILES_DIR=/path/to/ultima
  • Django - add into settings.py: ULTIMA_FILES_DIR=/path/to/ultima
  • Specify an environment variable ULTIMA_FILES_DIR with the value /path/to/ultima

Settings

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 5.0.8.3 client.

How to use ultimapy

Example of creating an image:

from ultimapy.sdk.art import Art
from ultimapy.sdk.hues import Hues

moongate_item_id = 0x0F6C
art = Art.get_static(moongate_item_id, check_max_id=False)
art.save("art.png")

red = Hues.HUES[32]
red_hued_art = red.apply_to(art, only_grey_pixels=False)
red_hued_art.save("red_art.png")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ultimapy-0.0.24.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ultimapy-0.0.24-py3-none-any.whl (20.3 kB view details)

Uploaded Python 3

File details

Details for the file ultimapy-0.0.24.tar.gz.

File metadata

  • Download URL: ultimapy-0.0.24.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.8.17

File hashes

Hashes for ultimapy-0.0.24.tar.gz
Algorithm Hash digest
SHA256 02a5fe1603d2e125e4fe969cbbac0fcb07206e38d4752895aa66ee4d4c6fb34d
MD5 2572e5d890c2806ee6fa631bce97e134
BLAKE2b-256 5d42af93926ea238edc25e0b59ddb38836b35df0cf60b7e3a57e2dc3729da979

See more details on using hashes here.

File details

Details for the file ultimapy-0.0.24-py3-none-any.whl.

File metadata

  • Download URL: ultimapy-0.0.24-py3-none-any.whl
  • Upload date:
  • Size: 20.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.8.17

File hashes

Hashes for ultimapy-0.0.24-py3-none-any.whl
Algorithm Hash digest
SHA256 af4b25b5dd979f74d965fd09e0080bf176cb3a306c3c18c2af3c0d80c6383928
MD5 da40c3d57e074f5d055fa846db2d9caa
BLAKE2b-256 e5a8539c308a0d77e1d7e8da895e8065d100b13c4896cb971dbbc874b025f877

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page