{"id":16123329,"url":"https://github.com/kitlith/sims3-rs","last_synced_at":"2025-10-07T11:09:02.507Z","repository":{"id":85474513,"uuid":"144552431","full_name":"kitlith/sims3-rs","owner":"kitlith","description":"Command-Line Tools and Libraries for sims3 package files","archived":false,"fork":false,"pushed_at":"2023-11-27T00:01:47.000Z","size":72,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-08T04:11:27.577Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kitlith.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-08-13T08:42:10.000Z","updated_at":"2023-04-23T02:25:18.000Z","dependencies_parsed_at":"2023-11-27T01:25:20.688Z","dependency_job_id":"fb27b2f0-4f63-4162-afed-2f51b6eb0df4","html_url":"https://github.com/kitlith/sims3-rs","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/kitlith/sims3-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kitlith%2Fsims3-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kitlith%2Fsims3-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kitlith%2Fsims3-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kitlith%2Fsims3-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kitlith","download_url":"https://codeload.github.com/kitlith/sims3-rs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kitlith%2Fsims3-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278762930,"owners_count":26041447,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-09T21:15:37.191Z","updated_at":"2025-10-07T11:09:02.481Z","avatar_url":"https://github.com/kitlith.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sims3_rs\n*Command-Line Tools and Libraries for sims3 package files*\nThis project is licensed under the MIT license.\n\n## `find_merged_cc`\nThis tool is designed for finding custom content on sims exported from the game,\nbut it may work with other types of merged package files in the future.\n\n### Usage\n```\nfind_merged_cc 0.2.0\nKitlith \u003ckitlith@kitl.pw\u003e\n\nUSAGE:\n    find_merged_cc [FLAGS] \u003cPACKAGE\u003e \u003cDIR\u003e...\n\nFLAGS:\n    -v, --full       Print full paths instead of just the package filenames\n    -h, --help       Prints help information\n    -V, --version    Prints version information\n\nARGS:\n    \u003cPACKAGE\u003e    Merged file that contains custom content\n    \u003cDIR\u003e...     Directories to search for custom content in\n```\nExample: `find_merged_cc.exe my_sim.package \"path/to/CC Magic/Content/Packages\"`\n\nAdditionally, a batch file `find_merged_cc.bat` is provided so that you can drag\nand drop your merged package file onto if you don't want to use the command-line\ninterface.\n\nThe batch file assumes that your custom content is in the default location for\nCC Magic. If this is not the case, you can change\n`%USERPROFILE%\\Documents\\Electronic Arts\\CC Magic\\Content\\Packages`\nto your own custom content path in the batch file.\n\n### Limitations\nThis tool has not been tested with any kind of merged package file other than\nexported sim package files. Please feel free to test this and leave an issue\nreport if you find any issues with it!\n\nPatterns have a known possible false-positive case:\nIf a pattern is used on a piece of clothing AND installed separately,\nthen the pattern will be found even if only the clothing was in the merged file.\n\n## `geom_tri_count`\nThis tool is designed to figure out the triangle counts within a package file.\nIt *will not* produce usable results when used with a package file that contains\nmultiple pieces of custom content.\n\n### Usage\n```\nUsage: geom_tri_count [packages/directories]\n```\n\nYou can provide multiple filenames and directories on the commandline,\nand all of them will be checked for package files, recursively.\n\nAs the tool is designed for use w/ drag-and-drop, it'll display\n`Press any key to continue` when it is finished, so that the terminal window\nwon't automatically close.\n\n### Example\nI have 4 package files in a folder called `packages`:\n - agnelid_Butterflysims127af_12.7Kedit.package\n - agnelid_NewseaMoonRiver_9.8KeditV1.package\n - ChazyNewseaJ141SexyBombAFVerB.package\n - PlumblobsPeggyzone122TFEF.package\n\nIf I run `geom_tri_count.exe packages` (or drag-n-drop the packages folder onto `geom_tri_count.exe`)\nI get the following output:\n```\nagnelid_NewseaMoonRiver_9.8KeditV1.package -- Polys: [9825, 6857, 2788, 654]\nagnelid_Butterflysims127af_12.7Kedit.package -- Polys: [12776, 8970, 2751, 459]\nChazyNewseaJ141SexyBombAFVerB.package -- Polys: [15277, 7051, 3852, 2197, 2, 1]\nPlumblobsPeggyzone122TFEF.package -- Polys: [24248, 24248, 24248, 24248] (16 submeshes)\nPress any key to continue\n```\nand the following contents in `sims3_geom_poly_count.csv` on my Desktop. (this file is overwritten on every run!)\n```\nFilename, Max Vertices, Max Polygons\n\"agnelid_NewseaMoonRiver_9.8KeditV1.package\", 8624, 9825\n\"agnelid_Butterflysims127af_12.7Kedit.package\", 9076, 12776\n\"ChazyNewseaJ141SexyBombAFVerB.package\", 11356, 15277\n\"PlumblobsPeggyzone122TFEF.package\", 16870, 24248\n```\nwhich should render as the following table in the spreadsheet application of your choice:\n| Filename                                     | Max Vertices | Max Polygons |\n|----------------------------------------------|-------------:|-------------:|\n| agnelid_NewseaMoonRiver_9.8KeditV1.package   |         8624 |         9825 |\n| agnelid_Butterflysims127af_12.7Kedit.package |         9076 |        12776 |\n| ChazyNewseaJ141SexyBombAFVerB.package        |        11356 |        15277 |\n| PlumblobsPeggyzone122TFEF.package            |        16870 |        24248 |\n\n## `dump_package_pngs`\nThis tool is designed to extract all png images from a package file.\n\nWARNING: This tool was written as a kind of quick test, so it's unfinished and\nmay disappear or be heavily changed at any time.\n\n### Usage\nExample: `dump_package_pngs.exe necklace.package`\n\nImages will be placed in the current directory.\n\nAdditionally, you should be able to just drag and drop a package file on top of\nthe exe, this should cause the images to be placed in the same directory of the\nexecutable.\n\n### Limitations\nThe output filename is based on the Instance ID of the image tag, which makes it\nhard to read and may cause issues if two images share the same Instance ID but\nare of different Resource Types.\n\n## `package_names`\nThis tool tries to extract a name from a package file and then rename the package file to match.\n\nWARNING: This tool was created for a specific purpose, maybe experimentation or something.\nI don't remember. I can work with you if you want to make it better or more useful.\n\n## `extract`\nThis tool extracts a single item from a DBPF into a separate file.\nIt is something I threw together to be able to inspect an item from within a hex editor,\nfor format exploration (because of unclear documentation).\n\n### Usage\n\n```\nUsage: extract \u003cpackage\u003e \u003cT:G:I\u003e \u003coutput\u003e\n```\n\nExample: `extract.exe PlumblobsPeggyzone122TFEF.package 15a1849:cb05b3:a0bad0bee0028400 weird.geom`\n\n# Developers\nSo, this was designed to be a rust library for doing stuff with sims3 package\nfiles. However, I have not published it on crates.io or anything because I want\nto finalize the API and crate name(s), as well as actually finish the library\nbefore I claim any names. (This is also my first rust project, so...)\nPlease suggest improvements to the api and such?\n\n## Notes on find_merged_cc limitations\nAt the moment, all I am doing is checking Type+Group+Instance IDs on specific\ntags. Specifically, CASP, TONE (of the skin variety), and OBJD (in case someone\nwants to use this for other types of merged package files). Checking image tags\nor resource XML tags in this manner generates false-positives. This is why\npatterns are not supported.\n\n## TODO\n - [ ] Finish adding all resource types to the ResourceType enum.\n - [ ] Move the refpack decompression (and eventually compression) into its own crate.\n - [ ] How do I cleanly expose ResourceType dependent functionality?\n - [ ] Rename the crate? Possibly to `dbpf` or `sims3-dbpf`.\n - [ ] Move the binaries into their own crate so that their dependencies don't pollute library dependencies.\n - [ ] Merge USAGE.txt into README.md?\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkitlith%2Fsims3-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkitlith%2Fsims3-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkitlith%2Fsims3-rs/lists"}