Packingslips

**Packing slips** are data entries which register metadata for various assets in The Sims Online. They are located in various files in the packingslips folder of the game.

Each of them is assumed to be used ingame except for outfits.xml, packingslips.dat, and packingslips.txt.

## Accessory table

accessorytable.xml uses the AssetList element as follows:

```
<AssetList>
<DefineAssetString key="example-1" assetID="0x0000000100000000"></DefineAssetString>
<DefineAssetString key="example-2" assetID="0x0000000200000000"></DefineAssetString>
...
</AssetList>

```

* **key** - The string identifier of this asset
* **assetID** - A 64-bit big-endian integer in hexadecimal notation preceded by "0x" specifying the File ID followed by Type ID

## Animation table

animtable.xml follows the AssetList format as described in Accessory table.

## Catalog

catalog.xml uses the Catalog element as follows:

```
<Catalog>
<P g="0x00000001" s="12" p="700" n="Bed - Single - Example"></P>
<P g="0x00000002" s="-1" p="0" n="Painting - Example - B"></P>
...
</Catalog>

```

* **g** - A 32-bit big-endian integer in hexadecimal notation preceded by "0x" specifying the File ID of this object
* **s** - An integer specifying the catalog group for this object; according to tuning\_hardcore.ini, valid identifiers are:
	+ -1: Does not appear in catalog
	+ 0: Build Mode - Doors
	+ 1: Build Mode - Windows
	+ 2: Build Mode - Stairs/elevators
	+ 3: Build Mode - Plants
	+ 4: Build Mode - Fireplaces
	+ 5: Build Mode - Pool
	+ 7: Build Mode - Walls/fences/columns
	+ 12: Buy Mode - Seating
	+ 13: Buy Mode - Surfaces
	+ 14: Buy Mode - Appliances (which includes plumbing in The Sims Online)
	+ 15: Buy Mode - Electronics
	+ 16: Buy Mode - Skill/job objects
	+ 17: Buy Mode - Decorative
	+ 18: Buy Mode - Miscellaneous objects
	+ 19: Buy Mode - Lighting
	+ 20: Buy Mode - Pets
	+ 21: Robot factory
	+ 22: Restaurant
	+ 23: Night club
	+ 29: Special (objects with an icon that don't go in the catalog)
* **p** - The price of the object as it appears in the catalog; if *s* is equal to -1, this value is ignored and should be set to 0
* **n** - The string identifier of this object

## Object table

objecttable.xml uses the ObjectInfoTable element as follows:

```
<ObjectInfoTable>
<I g="0x00000001" n="example-1" o="Bed - Single - Example" m="1" f="0" i="2" l="0"></I>
<I g="0x00000002" n="example-2" o="Painting - Example" m="0" f="100" i="0" l="0"></I>
...
</ObjectInfoTable>

```

* **g** - A 32-bit big-endian integer in hexadecimal notation preceded by "0x" specifying the File ID of this object
* **n** - The string identifier of the group which this object belongs to
* **o** - The string identifier of this object
* **m** - Unknown at this time
* **f** - Unknown at this time
* **i** - Unknown at this time
* **l** - A flag set to 0 or 1 specifying whether this object spans two floors (Note: There *are* elevators in TSO; these have l set to 1)

## Outfits

outfits.xml uses the ReservedOutfits element as follows:

```
<ReservedOutfits>
<Censor>0x00000df70000000c</Censor>
<DefaultBody>0x000000010000000d</DefaultBody>
<DefaultHead>0x000000020000000d</DefaultHead>
</ReservedOutfits>

```

* **Censor** - A 64-bit big-endian integer in hexadecimal notation preceded by "0x" specifying the File ID followed by Type ID of the default censor appearance
* **Default Body** - A 64-bit big-endian integer in hexadecimal notation preceded by "0x" specifying the File ID followed by Type ID of the default body outfit
* **Default Head** - A 64-bit big-endian integer in hexadecimal notation preceded by "0x" specifying the File ID followed by Type ID of the default head outfit

This file is not used ingame, as the text string "outfits" (case-insensitive, ASCII or Unicode) does not appear in the game exe or any of its dlls.

## Packingslips.dat

packingslips.dat is a FARv3 archive which contains a binary packing slip for every file in the developers' debug client, as it probably was when the game was still in development. It contains entries for a "testserver" folder, "testclient", "userdata2", "master\_client", "slave\_client", "hitlabui", and so on. This file is not used ingame, as "packingslips.dat" and "packingslips.txt" don't show up in the game exe or any of its dlls.

Each entry follows this format, in big-endian byte order:

* **Major Version** - A 2-byte unsigned integer specifying the major version of this binary packing slip; should be equal to 2
* **Minor Version** - A 2-byte unsigned integer specifying the major version of this binary packing slip; should be equal to 0
* **File ID** - A 4-byte unsigned integer specifying the File ID of this file
* **Type ID** - A 4-byte unsigned integer specifying the Type ID of this file
* **Reserved** - 8 bytes equal to 0
* **Asset Type** - A 4-byte unsigned integer specifying the clsid of the class used to handle this asset format; there may be a name provided for this clsid in the Pre-Alpha constants table.
* **Unknown** - 9 bytes equal to 00 00 00 00 03 00 00 00 00 (in hex)
* **String length** - A single byte specifying the string length of the file's original location
* **MD5 checksum** - 16 bytes representing the MD5 checksum of this file
* **String length** - A single byte specifying the string length of the file's original location
* **String** - A non-null-terminated string specifying the original location of this file, before being packed into an archive
* **Entry Type ID** - Should be equal to 8 for Asset
* **Entry Body Type** - A 4-byte unsigned integer specifying the type of data that follows; should be 0xA96F6D42 for cAssetKey
* **File ID** - A 4-byte unsigned integer specifying the File ID of this file
* **Type ID** - A 4-byte unsigned integer specifying the Type ID of this file

### Packingslips.txt

This file is merely a log produced by the "Mr. Shipper - Asset Compiler/Inventory Agent V 3.06" utility used inhouse by EA to generate packingslips.dat.

## Purchasable objects

purchasables.xml uses the PriceTable element as follows:

```
<PriceTable>
<DefaultPrice assetID="0x00000000" price="500" />

<DaywearFemale assetID="0x00000018" price="5000" />
...

<FormalwearFemale assetID="0x0000012F" price="6000" />
...

<SwimwearFemale assetID="0x00000062" price="6500" />
...

<SleepwearFemale assetID="0x00000515" price="4000" />
...

<SleepwearMale assetID="0x00000544" price="7000" />
...

<DaywearMale assetID="0x00000253" price="5000" />
...

<FormalwearMale assetID="0x00000353" price="6000" />
...

<SwimwearMale assetID="0x00000547" price="6000" />
...

<Decor\_Head\_bunnyEars assetID="0x000005bf" price="12000" />
...

<Decor\_Back\_angelWing assetID="0x000005be" price="20000" />
...

<Decor\_Tail\_bunny assetID="0x000005c1" price="18000" />
...

<Decor\_Shoe\_bunny assetID="0x000005c0" price="5000" />
...

</PriceTable>

```

## Textables

textables.xml follows the AssetList format as described in Accessory table.

## Custom Content

Although The Sims Online did make use of custom content until EA-Land, remakes have made their own compatible versions of the packing slips format or augmented versions to be more user friendly.

### FreeSO

catalog\_downloads.xml is a custom xml format based on catalog.xml used by FreeSO. It's used to manually side-load custom content into the client and server.

```
<CatalogDownloads>
<P g="Object Id" s="Category (1 to 12)" p="Price" n="Name"></P>
</CatalogDownloads>

```

### NewSO

nso\_catalog.xml is an evolution of both catalog\_downloads.xml and catalog.xml by NewSO. It was designed to be user friendly and easier to remember. FreeSO's catalog\_downloads.xml was renamed to tso\_catalog.xml for consistency and choice.

```
<tso>
<download>
<id>Object Id</id>
<catagory>Category (1 to 12)</catagory>
<price>Price</price>
<name>Name</name>
</download>
<tso>

```