This tutorial is aimed for adding simple decorative slots. In the example I have used I will be adding 14 slots to a bookcase. Adding slots requires adding lines in the Resource Node (CRES), so I recommend reading The Resource Node (CRES) by Numenor for an explanation of the CRES structure. This is important if you want to add slots to a more complicated object or one with multiple nodes.
I am not going to retype a perfectly good explanation of what slots are, but instead link you to a very good overview. The Introduction to slots explains the different types of slots and how they function. The Working Slots is a bit more technical but explains how to create routable slots to an extended footprint. I highly recommend you read both of these prior to using the tutorial.
An Introduction to Slots by Numenor & Atavera
Creating Working Slots for Extended Objects by fisheyes
The Object Data (OBJD) and the Slot File (SLOT) are connected via line 0x0014: slots id in the OBJD. This entry points to the Slot File (SLOT) Instance being used by that particular tile. In the case of a single tile object there is one OBJD and it points to the single SLOT. If you have multiple OBJDs then each one is going to point to a SLOT resource if it has routing or container slots. For container slots about the only difference to where you put your additional slots is where you want your entry point. With multi-tile objects the main OBJD does not need to have the slot link, but rather the OBJDs that are numbered and correspond to the footprint position.
The Text Lists (STR#) is linked to the SLOT and the CRES by the # and the String value. The # is the value in the I9 postion in the SLOT and the String value is in the CRES cObjectGraphNode Filename box.
Some known values:
The values in the table on the left are entered in the boxes on the right. Looking at the table on the left, F1 on the left is Float 1 on the right. F4 is Float 4 which is on the Version 0x05+ tab, and you can see F5, F6 and I6 also is on this tab. S1 and S2 will be on the 0x06+ tab. Keep selecting the different tabs on the right to enter the different values. Note: My SimPE is not maximized to make it easier for screenshots, if you maximize you will see the whole table view on the left and not have to scroll.
After adding all Container slots
You don't need to commit after everything, but if you accidendently select another resource while working on the CRES you will lose your process. You also won't see the lines added in your CRES Hierarchy until you commit, select another resource, then select the CRES again.
After adding the 14 cObjectGraphNode lines - note my 0xC - 0x19 line numbers
We are going to add our container slots to the same node as the routing slot. Select the cTransformNode, look on the right side at the Child Nodes: box. Some values are already added here, these are the existing children. Select the last value and click add, change the value in Child Index to one larger. These values are in Hex and why I told you to write them down previously. I will be adding one line for each one I added in the Edit Block tab, 14 of them with the Child Index values starting at 0x0000000C and going to 0x00000019.
Note that the numbers after 0x in the Child Index box must be equal to 8. And make sure the Unknown 1 value is always 0x0001.
After all Child Nodes have been added
Select another resource, then select the CRES again. Select the CRES Hierarchy and you will see all of the lines you just added as children under your Practical node.
All Child Nodes properly linked
Slot positioning of a node is relative to the parent node. This means your slot position is now how far the parent node. So if a parent node has an x-value of .32, and you want your new slot to be .5 from center you will enter .12 for the x-value.
Axis values:After all values have been entered and you have Clicked Commit, select another Resource then select the CRES again. Then select the CRES Hierachy again. Now you will see all of your added cObjectGraphNode lines have a name and trans values. Save your package and test in game. Use the "M" key to cycle between slots in game. If one of them is not in the place you would like, you can easily find which one because you named them descriptively. Remember? :) This is why mine are labeled as deco1L, deco1R, deco2L, deco2R, etc, each one represent which shelf and the L and R are for Left and Right respectively. Note that when testing slots, slot values are read by the game when the object is bought. So if you have to go back and modify your Translation values you will need to rebuy your object.
TIP: Pressing this button will sort the list alpha/numerically.
If you have any questions regarding this tutorial you can find me at Sims2Artists and at MTS.