0x001C

From SimsWiki
Revision as of 06:54, 15 February 2010 by MogHughson (Talk | contribs)

Jump to: navigation, search
Run Tree by Name
OpCode:0x001C
Game Version:The Sims 2


Contents

Overview

This very useful primitive allows you to write functions (trees) that operate on your object but that can be called from another object. Instead of running the funtion using its instance id as you would for a private function in the object, you instead run the funtcion using its name. It’s quite a nice way to write them because the context of your object, i.e. attribute names are all correctly displayed in the call tree code and you also don’t have to 'pollute' the calling object with code that is not really to do with it’s object. It is also used a lot to provide objects of similar type the same named function to be called, but each providing a different implementation, or perhaps some defaulting to a semi-global implementation and others over-riding it as a private implementation.

The only thing the calling object needs is the ability to get the string name of the call tree from within its own strings (although semi-global will do) as shown in the picture.

The call tree name strings are taken from Text List (STR#) resource 0x0000012F (see String Resources for all the different Text List usages).

Using the Instruction Wizard

dd dd qq uu nn xx AA aa
aa BB bb bb CC cc cc uu

These are:

d
unused in the sims 2. In the sims 1, this would have been used to specify the string number(which was always strangely enough 303), however TS2 leaves them at 00 00
q
options (these describe what will happen when the bit is on (1))
1st and 2nd bits
Appear to be unused
3rd bit
Pass this bhav's parameters as options
4th bit
Pass new data (see A, B and C below) as parameters
5th bit
Do not check semiglobal trees
6th bit
Do not check global trees
7th and 8th bits
  • 00-private string
  • 01-global string
  • 10-semiglobal string
  • 11-global string
u
appears to be completely unused
n
line id of string 12f(303) + 1
x
  • 0-run in my stack
  • 1-run in stack object's stack
  • 2-push onto my stack
A (a)
data owner for parameter 0 followed by 2 bytes for value
B (b)
data owner for parameter 1 followed by 2 bytes for value
C (c)
data owner for parameter 2 followed by 2 bytes for value

Use

run in my stack is generally used in check trees. It will return false if no such tree is within range, or if it runs the tree by name, and the tree itself returns false.

run in stack objects stack. This is used in object interactions when you want to run a tree in your stack object remotely.

push onto my stack treats it as if you are running that tree as a private function. This is generally used in the action tree of an interaction.

See also

This article is imported from the old MTS2 wiki. It's original page, with comments, can be found at http://old_wiki.modthesims2.com/0x001C

Personal tools
Namespaces

Variants
Actions
Navigation
game select
Toolbox