Jump to content
Ce site utilise des cookies ! En apprendre plus

Ce site utilise des cookies !

Les cookies nous permettent de personnaliser le contenu et les annonces, d'offrir des fonctionnalités relatives aux médias sociaux et d'analyser notre trafic. Nous partageons également des informations sur l'utilisation de notre site avec nos partenaires de médias sociaux, de publicité et d'analyse, qui peuvent combiner celles-ci avec d'autres informations que vous leur avez fournies ou qu'ils ont collectées lors de votre utilisation de leurs services.


Pour en savoir plus sur la manière dont google utilise certaines données collectées cliquez sur le lien suivant : 



Pour continuer d'utiliser ce site, vous devez accepter (en bas de la page) de nous permettre de stocker ces cookies sur votre ordinateur :) 


Vous trouverez ci dessous la liste des cookies et leur utilité :



While some cookies will almost always be set by the Suite, there are some cookies that are set only in very specific circumstances.  If you have a need to identify all cookies the Suite may set, the following is a list of cookies and their intended purposes.

  • ips4_hasJS

This cookie is set by javascript and then later read to determine if javascript is supported in the user agent.

  • ips4_ipsTimezone

This cookie is set by javascript to detect the user's local time zone so that the software can adapt the displaying of times automatically.

  • ips4_IPSSessionFront

This is a session tracking cookie, used to track the user between page clicks.

  • ips4_member_id

This cookie would contain the user's member ID, used to "remember" the user in case their session ends between visits.

  • ips4_pass_hash

This cookie would contain a hash used to validate that the viewing user's member ID was not forged (it is not the actual password hash).

  • ips4_cms_filters (Pages only)

This cookie would track filters set by a user when filtering content in the Pages application.

  • ips4_ipsApprovalQueueSplash (Moderators only)

This cookie would track that a user has acknowledged the splash screen in the Moderator CP so that it is not shown again.

  • ips4_language (Guests only)

This cookie is used to track a language preference for a guest if the site has more than one language installed and the guest user chooses a specific language to use.

  • ips4_anon_login

This cookie is used to track a user's anonymous login preference if they choose this option during the login process.

  • ips4_theme (Guests only)

This cookie is used to track a theme preference for a guest if the site has more than one theme installed and the guest user chooses a specific theme to use.

  • ips4_ipbforumpass_XXX

When a forum has a specific password set, this cookie is set once a user logs in to that forum to validate that they have logged in on subsequent page loads.

  • ips4_thumbnailSize (Gallery only)

This cookie tracks what type of table layout to use in Gallery listings (list view, small thumbnails or large thumbnails)

Be aware that third party addons may set cookies as well, and that third party services integrated with the Suite (such as Google Analytics or Facebook Logins) may also set their own cookies.





  • Content Count

  • Joined

  • Last visited

Community Reputation

0 Neutre

About anadius

  • Rank
  1. Awesome, thank you!
  2. You're awesome! It works like a charm. Thank you!
  3. I'm here to bug you again. :'D This time I'm trying to create those .bpi, .rmi, .sgi and .hhi images. I've read it's DDS or JPEG with alpha format but it looks somehow encrypted. And to be on topic: could you create a stand alone command line tool that converts image to those formats? Preferably working both with specifying input/output files and pipes: converter.exe -i "<input file>" -o "<output file>" converter.exe < "<input file>" > "<output file>" This would be a great help!
  4. OOOH, now I get it. I think I get how all the files are named now. .trayitem: <item type in hex>!<item ID>.trayitem main file: <0 in hex>!<item ID>.<householdbinary/blueprint/room> two images: <2/3 in hex>!<item ID>.<hhi/bpi/rmi> additional images: households: <(index << 4 ) + 3 in hex>!<sim ID>.sgi where index is from 1 to length of Metadata.HhMetadata.SimData lots: <(index << 8 ) + 3 in hex>!<item ID>.bpi where index is from 1 to Metadata.BpMetadata.NumThumbnails -1 So it seems there can be two items, different types, with the same ID. No files will collide. Haven't tested how the game behaves in that situation yet but that shouldn't happen, there are 18446744073709551616 possible IDs. Wrote a scrip based on what I wrote above and it seems to be doing fine. Compared files with those listed with your tool and they match. Once again, huge thank you! I wouldn't be able to find out any of it without your help.
  5. You. Are. Genius! I've compiled your .proto files and they work flawlessly with protobuf! I compared serialized_pb from decompiled (from .pyc) and compiled (from .proto) versions and they are identical! EA should really just update their tools... Hmm, I might try to dig into that data more but for my needs I think I just need to grab all files with a name like "*!<ID in hex>.*", don't you think? You might consider sharing that _pb2.py to .proto tool, for example on Github. I think many people could find it useful. But of course it's totally understandable if you decide not to. I came here to ask for a tool and not only got what I wanted but also learned a lot! So thanks again!
  6. Thank you, it works! Python Script Decompiler you sent me didn't, it produced many empty files (later I found out it's encoding problem) so I wrote my own (skipped .zip support): import os import glob import unpyc37 def create_parent_dirs(file_path): """create parent dirs for file_path""" os.makedirs(os.path.dirname(file_path), exist_ok=True) for file in glob.glob(os.path.join('**', '*.py[co]'), recursive=True): if file.startswith('__pycache__'): continue decompiled_file = os.path.join('decompiled', file[:-1]) decompiled_content = unpyc37.decompile(file) create_parent_dirs(decompiled_file) with open(decompiled_file, 'w', encoding='utf-8') as f: f.write(str(decompiled_content)) I had to update to Python 3.7 anyway because unpyc37 uses something that's available only in this version. And replce lines like "import protocolbuffers.ResourceKey_pb2" with just "import ResourceKey_pb2". Then I installed protobuf module, which gave me lots of errors when importing decompiled *_pb2.py files. I had to install old, outdated python3-protobuf module instead. I wonder if converting those *_pb2.py to .proto and then, using up to date protoc.exe, back to *_pb2.py would work with updated protobuf module... How did you get those .proto files anyway? BTW for anyone wondering, TrayMetadata from Exchange_pb2 is what you want to use to read .trayitem files. Wow! It's going to be much more advanced than I thought. Didn't expect so many options! I'll use it to double check my own code.
  7. Thank you! But I guess I'll have to decode it anyway because I don't have the same version of python. The problem is there are so many files I don't know which to decompile. And when I tried to decompile them all the tool I used (uncompyle6) failed on the first one (Animation_pb2)... I know that waiting for your tool is easier but I love learning new things.
  8. I don't think so. If I use CC, I add it to description. Don't plan to export with CC. The output JSON file should contain as little as possible: ID (the part between "!" and "." perhaps), author name, item name, item description, item type... and I guess that's it. And then just pass those IDs (comma separated?) and export location (folder or file path) to export function. Good to know! It's cool, I'm writing in Python and there are modules for handling huge JSON files. To be hones I would do it myself but I can't find any info on parsing .trayitem files... Your app is a blessing
  9. I wanted to share my items automatically. Thought of something like this: my script detects the game was closed, uses Tray Importer to list all tray items, selects the ones with my name, checks modification date, uses Tray Importer to export new/modified items and then uploads them wherever I want. Haven't thought much about importing part.
  10. I'd love to see some more command line functionality like listing all tray files (author, name, type, ID, modification date?, etc., possibly in JSON format), exporting them, listing all tray files in archive and importing them.
  • Create New...