Sims 2 Variables

From SimsWiki
Revision as of 16:52, 30 December 2009 by MogHughson (Talk | contribs)

Jump to: navigation, search

This section will record all the different variables and attributes you will likely come across. You will most often be using these through the Expression primitive [prim 0x0002]. These tables are your reference to go with that wizard. However you will also find these in various other OpCodes, some without wizards. In those cases, the numeric value before the title name is the number which represents that type of variable to be placed in an appropriate Operand.

Contents

Special Variables

There are two special variables which many instructions can only operate on. You will will especially get very used to saving the previous value of the Stack Object in order to put something else in there, then putting back the original value afterwards.

My

Stack Object

General Variable Reference

Variables
0x00 My attribute
0x01 Stack Object's attribute
0x02 My (semi) attribute
0x03 My
0x04 Stack Object's
0x05 Stack Object's (semi) attribute
0x06 Global
0x07 Literal
0x08 Temp
0x09 Param
0x0A Stack Object ID
0x0B Temp (temp)
0x0C Check tree advert: Range
0x0D Stack Object's Temp
0x0E My motive
0x0F Stack Object's motive
0x10 Stack Object's slot
0x11 Stack Object’s motive (temp)
0x12 My person data
0x13 Stack Object's person data
0x14 My slot
0x15 Stack Object's definition
0x16 Stack Obj attribute (param)
0x17 room (Temp 0)
0x18 Neighbor in stack object
0x19 Local
...
...



0x00: My attribute

This variable is very dependant on the current object. Some objects have attributes. The names of these attributes are taken from Text List (STR#) resource 0x00000100 (see String Resources for all the different Text List usages). In the example below, the coffee maker has only one attribute.

Showing the cross reference between the attribute strings and their use in the Expression Instruction Wizard in SimPE


0x01: Stack Object’s attribute

See 0x00: My attribute.

0x02: My [semi] attribute

This is just as the attributes above, but this time the Text List (STR#) resource defining the attributes is a semi-global instead of a private string resource.

0x03: My

There are lots of fields here that can be used.

Name Description
graphic This is a number which represents the model or mesh that the object is currently using / made of. For example, love letters are cards when set upon a table, but envelopes when on the floor – two different meshes. The names of these meshes are taken from Text List (STR#) resource 0x00000085 (see String Resources for all the different Text List usages) and this attribute contains the number which points at the correct string.

Of course, in general you don't see graphic being set-up unless an object has multiple meshes to choose between. This is because the default graphic is used. This is set in the OBJD Resource, RAW Data section, Resource cross-refs

...
direction
container id Some objects must be on or in something, for example, the coffee maker must be on a counter. The counter would be represented by the container id.

0x04: Stack Object's

See variables#0x03: My.

0x05: Stack Object’s [semi] attribute

See 0x02: My [semi] attribute

0x06: Global

There are lots of fields here that can be used.

Global Attribute Name Details
Hour This is as you would expect. If it is 16:30, Hour has value 16.
Day of Month
...
Game Edition This allows you to tell what version of the game you are running. It’s a bit field, but also has the value 2000 (0x07D0) to show it is the Base Game Only. The flags are:-
01: Not Base only
02: University EP (Flag 01 is also set in this case of course)
03: Night Life EP
04: Open For Business EP
05: Family Fun SP
06: Glamour Life SP
07: Pets EP
08: Seasons EP
09: Celebration! SP
0A: H&M SP
0B: Bon Voyage EP
0C: TSS (SP?)
0D: Store ?
0E: Free Time EP
0F: Kitchen and Bathroom SP
10: IKEA SP
Day of Week Monday = 0 ... Sunday = 6

0x07: Literal

This is how you represent a number.

0x08: Temp

You can use temporary variables. These are commonly used to return values from other BHAVs since Local variable only live within a BHAV.

0x09: Param

Your Behaviour Function (BHAV) may have arguments / parameters passed into it. If you use parameters in a BHAV you must remember to set how many. See BHAV#Declaring your stack variables for details on how to do this.

0x0A: Stack Object ID

This is a short-hand for Stack Object's (0x04) -> object id.

0x0B: Temp [temp]

0x0C: Check tree advert: Range

0x0D: Stack Object’s Temp

0x0E: My motive

This gives you access to all the various motive values.

Motive Details
shopping
Scratch/Chew
Mood
Mood+Mem
Energy Motives.JPG
Comfort
Hunger
Water/Hygiene
Bladder
Environment
Social
Fun
Sleep State

0x0F: Stack Object’s motive

See 0x0E: My motive for more details.

0x10: Stack Object’s slot

0x11: Stack Object’s motive [temp]

0x12: My person data

This gives you access to various attributes of a Sim.

hex dec Person Data attribute Details
0x0000 0 Sitting?
0x0001 1 Money Amount over Head
...
0x0008 8 Current Outfit This is the current outfit type, e.g. 0 = Casual. This is not which outfit of that type they are wearing. It does not change if you change outfit within the type.
0x001B 27 tick counter
0x0028 40 route goal
0x0050 80 ci: Current Interaction Object ID
0x0052 82 Fatness [0-1000] Three ranges, 0 being fat, 1000 being fit. Can be seen as part of your Sims "Personality" page in the game.Fitness.JPG
0x0067 103 ci: Current Running Object ID
0x006B 107 School Object GUID 1 These two form the upper and lower portions of the GUID for the object that is the School attended by the Sim. Setting these to Temp[0] and Temp[1] and then using the Set to Next [prim 0x001F] with Object of type GUID in temp 0/1 will give you a Stack Object that you can then run call trees against and so on.
0x006C 108 School Object GUID 2

0x13: Stack Object’s person data

See 0x12: My person data above for more details.

0x14: My slot

0x15: Stack Object’s definition

This gives you access to the various attributes of an object that you have defined in Object Data (OBJD). If you look at the RAW Data tab in 'Alphabetical' order rather than 'Categorized' order you will see the names in exactly the same order as shown in any instruction wizard.

0x16: Stack Obj attribute [param]

0x17: room [Temp 0]

0x18: Neighbor in stack object

0x19: Local

You can use local variables. If you use local variables in a BHAV you must remember to set how many. See BHAV#Declaring your stack variables for details on how to do this.

and plenty more to come

Personal tools
Namespaces

Variants
Actions
Navigation
game select
Toolbox