{ "info": { "author": "Jack Ward", "author_email": "jackward84@gmail.com", "bugtrack_url": null, "classifiers": [ "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "[![PyPI version](https://badge.fury.io/py/ultimapy.svg)](https://badge.fury.io/py/ultimapy)\n\n## ultimapy\n\nultimapy 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).\n\n### Features\nultimapy can currently do the following:\n* Render land, statics. This includes rendering of in game items.\n* 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.\n* Draw text from the client (eg, ASCIIFont).\n* Extract information about skills - naming, groups, indexes.\n\n##### Unimplemented features\n###### Planned\n* Rendering gumps\n* Rendering paperdolls (requires gumps)\n* Command to fully set up ultimapy - downloading compatible client files and auto generating your environment to make getting going on your website easy.\n\n###### Unplanned\n* UOP support is not planned, which limits the client version.\n\n\n\n### Installation\nInstall ultimapy to your project with:\n\n`pip install ultimapy`\n\nYou must specify your Ultima Online client directory by any of the following methods:\n\n* `environment.ini` - add the line `ULTIMA_FILES_DIR=/path/to/ultima `\n* Django - add into settings.py: `ULTIMA_FILES_DIR=/path/to/ultima`\n* Specify an environment variable `ULTIMA_FILES_DIR` with the value `/path/to/ultima`\n\n### Settings\nAs 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).\n\nCurrently there are only 2 settings:\n* `ULTIMA_FILES_DIR`, this is the path to your Ultima Online directory. This has no default and will not read from registry.\n* `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.\n\n\n### How to use ultimapy\n\nExample of creating an image:\n\n```\nfrom ultimapy.ascii_font import ASCIIFont\n\nimg = ASCIIFont.FONTS[3].get_string_image(\"Hello world\")\nimg.save(\"HelloWorld.bmp\")\n\nfrom ultimapy.animations import Animation\n\nred = 32\nsouth = 1\njust_standing_there = 0\nonly_give_me_the_first_frame = True\n# args don't need to be explicitly specified, but for the sake of an example...\nimg_frame = Animation.get_animation(body=400, action=just_standing_there, direction=south, hue=red, first_frame=only_give_me_the_first_frame)\nimg = img_frame[0].bitmap # there will only be an index of 1 if you only ask for the first frame\nimg.save(\"red_guy.bmp\")\n```\n\n##### This section is in progress, as there is a sole developer of this project, and work on this project is purely fueled by requirements of https://uolostlands.com", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jackuoll/ultima-py", "keywords": "", "license": "Beerware", "maintainer": "", "maintainer_email": "", "name": "ultimapy", "package_url": "https://pypi.org/project/ultimapy/", "platform": "", "project_url": "https://pypi.org/project/ultimapy/", "project_urls": { "Homepage": "https://github.com/jackuoll/ultima-py" }, "release_url": "https://pypi.org/project/ultimapy/0.0.17/", "requires_dist": null, "requires_python": "", "summary": "UltimaPy - Extract information and images from the UO client files", "version": "0.0.17" }, "last_serial": 5696774, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "c20f12a47b8a9460eec7be47362f62d3", "sha256": "06665875412da06709d24f0fed3c4cc2bf9d6ebd08846519c17b8f88b2f80738" }, "downloads": -1, "filename": "ultimapy-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c20f12a47b8a9460eec7be47362f62d3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2010, "upload_time": "2019-07-30T04:24:49", "url": "https://files.pythonhosted.org/packages/87/c2/9a55611989aa2706608add49843f76cd28ac603055930e53c3967bb09fdf/ultimapy-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "49abeb20f820944208177ee533701c71", "sha256": "6bd7fbfba8ce8e9c8cbe6a444351201de11a4575f4c4e1f29fb9f6ec1d94c086" }, "downloads": -1, "filename": "ultimapy-0.0.1.tar.gz", "has_sig": false, "md5_digest": "49abeb20f820944208177ee533701c71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1488, "upload_time": "2019-07-30T04:24:51", "url": "https://files.pythonhosted.org/packages/ad/08/6ac9b0e504d318ce7df409933f6fa9fcae2636497916d2941556c42e9f13/ultimapy-0.0.1.tar.gz" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "f57407fcc0d36272a6cf2e8b3abcfd44", "sha256": "aaf08a86337cb98d3b0b50553f1c9320b16bcfdde78e406490a416f0c76b1807" }, "downloads": -1, "filename": "ultimapy-0.0.10.tar.gz", "has_sig": false, "md5_digest": "f57407fcc0d36272a6cf2e8b3abcfd44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13960, "upload_time": "2019-08-16T10:55:08", "url": "https://files.pythonhosted.org/packages/1f/16/b613ce4c3070e2453196249912ac82d0fc4f062d9c6c0959b5f6a64f9006/ultimapy-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "aeddf28515d918229d634ffd4489351f", "sha256": "cb0ae5333755816f9d83550dde3c0e8817535eca409825847360691c5c40bf39" }, "downloads": -1, "filename": "ultimapy-0.0.11.tar.gz", "has_sig": false, "md5_digest": "aeddf28515d918229d634ffd4489351f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13968, "upload_time": "2019-08-16T10:57:06", "url": "https://files.pythonhosted.org/packages/eb/cc/5ede7a845db046bd8ce542e53ca70daceeab973dd33e5d6703d4e0f7148c/ultimapy-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "5c30c00df6287097c9f4a79afd7354b8", "sha256": "b762add55c51999191907521a5c65984a8a9d86f6f8daf7fa393b0c90bfe05ac" }, "downloads": -1, "filename": "ultimapy-0.0.12.tar.gz", "has_sig": false, "md5_digest": "5c30c00df6287097c9f4a79afd7354b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13940, "upload_time": "2019-08-18T05:40:07", "url": "https://files.pythonhosted.org/packages/89/69/b3904e448b5376e9bdef50212c8c0fcd3d60a1672a7235cda91c139be3ee/ultimapy-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "14847d74075ceb0ccafa2234cedc674c", "sha256": "e14dca9220cd79e83c50d8938c4aa587a8184d672c189dd9a8a7297e8e9c4ede" }, "downloads": -1, "filename": "ultimapy-0.0.13.tar.gz", "has_sig": false, "md5_digest": "14847d74075ceb0ccafa2234cedc674c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13960, "upload_time": "2019-08-18T11:25:20", "url": "https://files.pythonhosted.org/packages/99/dc/a77611c42b4f099f9e3cbed18f4f98d9e701298232e3e8524f63fe09ae06/ultimapy-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "9647b8d973c1faf8d027112cbbb960a2", "sha256": "7db095ed5552af682b37c5230427dc3eb4a61553638707a2adcab2ffb3704b11" }, "downloads": -1, "filename": "ultimapy-0.0.14.tar.gz", "has_sig": false, "md5_digest": "9647b8d973c1faf8d027112cbbb960a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13959, "upload_time": "2019-08-18T11:26:41", "url": "https://files.pythonhosted.org/packages/f4/28/b35aacfe5bc6282f5340afde3c73cd4b6c95fa5b8f300b68170d47a701fc/ultimapy-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "b5a61bef4a8b02de4f89fab8dce61e09", "sha256": "2808854e34fc5ce7edbf42023ea54b6df9a6af39d3185b5990a076c5ca234f20" }, "downloads": -1, "filename": "ultimapy-0.0.15.tar.gz", "has_sig": false, "md5_digest": "b5a61bef4a8b02de4f89fab8dce61e09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13978, "upload_time": "2019-08-19T05:32:00", "url": "https://files.pythonhosted.org/packages/a0/ad/bd54418fc080bea6840eefec6f1ff35c08f785feea12ee9b37892680fc6e/ultimapy-0.0.15.tar.gz" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "3076e0e34381be270c5f3aa7eb6800f2", "sha256": "a43dfbf4da7848317033e2ae2fe49a532b02ebf2b9fb2ba9b6a11c7564101092" }, "downloads": -1, "filename": "ultimapy-0.0.16.tar.gz", "has_sig": false, "md5_digest": "3076e0e34381be270c5f3aa7eb6800f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13970, "upload_time": "2019-08-19T05:34:10", "url": "https://files.pythonhosted.org/packages/5c/dc/07ce87cde5ae48f650c6ed0e0619404d40046d1bc1b28babaf4bb66085b4/ultimapy-0.0.16.tar.gz" } ], "0.0.17": [ { "comment_text": "", "digests": { "md5": "3aea900f6df5895e6f3ea071bd664266", "sha256": "486f81cc8e6c80deea9de99f64ae2a08797cb2ccf91734af7cd6d18522ba2665" }, "downloads": -1, "filename": "ultimapy-0.0.17.tar.gz", "has_sig": false, "md5_digest": "3aea900f6df5895e6f3ea071bd664266", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13967, "upload_time": "2019-08-19T05:42:12", "url": "https://files.pythonhosted.org/packages/66/00/6481f1756944d4bfb47c7cf70683e7c76b2b886c96495f973e7043ce8049/ultimapy-0.0.17.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "a6aa6cfb72c9d6af1a1bf3d4b5ee6d4f", "sha256": "1a7a7c76d066531f3228501a65755acd0af53ebb5aa9a16d13208d54f89e8d5b" }, "downloads": -1, "filename": "ultimapy-0.0.2.tar.gz", "has_sig": false, "md5_digest": "a6aa6cfb72c9d6af1a1bf3d4b5ee6d4f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10928, "upload_time": "2019-07-30T08:09:09", "url": "https://files.pythonhosted.org/packages/5d/62/bac17abd17a2cb3a71c86749678468ac4dca769ecc9437dbe2dee42d4a32/ultimapy-0.0.2.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "819c89a4f311f6fd0e09336ff2b128c9", "sha256": "487ee2517231ec5b4480b77422e62e349ed814974ee66d249a13e0740374516f" }, "downloads": -1, "filename": "ultimapy-0.0.4.tar.gz", "has_sig": false, "md5_digest": "819c89a4f311f6fd0e09336ff2b128c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10585, "upload_time": "2019-07-30T10:51:29", "url": "https://files.pythonhosted.org/packages/75/c6/8eb47bca5c86845cea02cddc9dd247d6b47ba4fa0a6324ab115dad79adb0/ultimapy-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "1e6a36099bd9bc600e551547d32a5539", "sha256": "a21e6bb9edf069ed0790e7789ffd7bddb29dd199a2c4323ecfe715e077770b57" }, "downloads": -1, "filename": "ultimapy-0.0.5.tar.gz", "has_sig": false, "md5_digest": "1e6a36099bd9bc600e551547d32a5539", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11357, "upload_time": "2019-07-30T23:06:52", "url": "https://files.pythonhosted.org/packages/ef/af/499106e1407ea7e80c980ada163ffc2dfdd1cdf8b74b6e6fe32f92af7548/ultimapy-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "4c5170b0b519f13e71f32799e8eb4da4", "sha256": "068e97e97947baaaa6511f59ad1c9890e4bd111605719f4aa2dbdf545f21a43b" }, "downloads": -1, "filename": "ultimapy-0.0.6.tar.gz", "has_sig": false, "md5_digest": "4c5170b0b519f13e71f32799e8eb4da4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10898, "upload_time": "2019-07-31T13:19:19", "url": "https://files.pythonhosted.org/packages/e6/c2/68609b13f2a36776e3f20578551b0133e5cffca50fb1f8a6c2d3e6ba0b24/ultimapy-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "19eebfeaea6e787bbf92f6a68d37144f", "sha256": "e3cd4e7e4d9ec2c5a538d9502dceee7eaf588a042f0815b53645b400abd17a14" }, "downloads": -1, "filename": "ultimapy-0.0.7.tar.gz", "has_sig": false, "md5_digest": "19eebfeaea6e787bbf92f6a68d37144f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13802, "upload_time": "2019-08-01T06:47:51", "url": "https://files.pythonhosted.org/packages/35/d8/5c6af04b8434234ba19b3aa8609c4432fa89cbd8ce7568b30c2f9c1afc4f/ultimapy-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "766e07ad82c123356775b8828f0c814f", "sha256": "bafd0616ee83f198e1ec9037f559f5022aba99f1cb23c8c3b4a664677dc622c5" }, "downloads": -1, "filename": "ultimapy-0.0.8.tar.gz", "has_sig": false, "md5_digest": "766e07ad82c123356775b8828f0c814f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13886, "upload_time": "2019-08-01T07:13:32", "url": "https://files.pythonhosted.org/packages/e1/a4/351a1f1310da2b3b9e869225227e076239edadff1fe64e05de6f51c494b8/ultimapy-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "44f837a88be98c2a5b5002c2a406e15e", "sha256": "24727465cb55a13044908c10248f76dd841e75eea55a5229f29239a6def93aed" }, "downloads": -1, "filename": "ultimapy-0.0.9.tar.gz", "has_sig": false, "md5_digest": "44f837a88be98c2a5b5002c2a406e15e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13947, "upload_time": "2019-08-02T11:24:40", "url": "https://files.pythonhosted.org/packages/f4/84/717fbac6818a1c1ed2c58eb6c3550c3ddb74b08325f8895d294d240bae67/ultimapy-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3aea900f6df5895e6f3ea071bd664266", "sha256": "486f81cc8e6c80deea9de99f64ae2a08797cb2ccf91734af7cd6d18522ba2665" }, "downloads": -1, "filename": "ultimapy-0.0.17.tar.gz", "has_sig": false, "md5_digest": "3aea900f6df5895e6f3ea071bd664266", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13967, "upload_time": "2019-08-19T05:42:12", "url": "https://files.pythonhosted.org/packages/66/00/6481f1756944d4bfb47c7cf70683e7c76b2b886c96495f973e7043ce8049/ultimapy-0.0.17.tar.gz" } ] }