BHAV:Pick Up / Put Down

From SimsWiki
Jump to: navigation, search

Contents

Overview

Here we show a SimAntics BHAV code snippet that will direct the current Sim to pick up the object clicked on (which is defined note to be placeable on the floor or decorative slots) and then put it down again on the same surface.

Illustrating

This code snippet illustrates several primitives. Use these links to see full details about how to use these primitives in order to recreate the BHAV code below.

We also illustrate the use of global function

  • Route - Route to Reach (0x0188)

The BHAV code

Preparatory steps

Firstly we start by remembering the current object in case we need it later since this code is going to use the Stack Object for other things. We also save away the ID of the object that our current object is sitting on.

0x0000: Expression (Local 0x0000 := Stack Object ID),             True Target: 0x0001, False Target: Error
0x0001: Expression (Local 0x0005 := Stack Object's container id), True Target: 0x0002, False Target: Error

Picking up

Now we direct the Sim to go to the object and pick it up.

0x0002: Route - Route to Reach(),                         True Target: 0x0003, False Target: False
0x0003: Reach/Put (Pick up: Stack Object ID, Slot: 0x00), True Target: 0x0004, False Target: False

Putting down

Now we put it down again, using our remembered containing object ID, we run the 'surface' function provided by that containing object (e.g. a counter). If we are unable to do this (perhaps something has been placed on that surface since we picked it up) we will drop it on the floor.

0x0004: Expression (Stack Object ID := Local 0x0005), True Target: 0x0005, False Target: Error
0x0005: Run Functional Tree (flat surface),           True Target: 0x0007, False Target: 0x0006
0x0006: Reach/Put (Drop onto: Floor, Slot: 0x00),     True Target: 0x0007, False Target: 0x0007
0x0007: Your code
Personal tools
Namespaces

Variants
Actions
Navigation
game select
Toolbox