PDA

View Full Version : Modding InfoCenter - Changing the object Placement


Numenor
9th Aug 2005, 10:25 AM
>>> MODDING INFOCENTER <<<

CHANGING THE OBJECTS PLACEMENT


DISCLAIMER: The "Modding InfoCenter" threads are NOT tutorials: they are intended to help average-experienced object creators performing specific tasks, or to give users a deeper in-sight on specific modding-related subjects. So, don't expect to find step-by-step explanations, to be performed "blindly". Please DO NOT REPOST the following info, or part of them, on other sites.
All the "Modding InfoCenter" threads are created and mantained by Numenor and JWoods. Everyone is welcome to post his own questions or additional information about the specific thread subject.


-------------------------------------------------------------------------------------

SUMMARY
In this article, we'll discuss about changing the objects placement, i.e. the ability of the object to be placed on tables, counters, walls, ground, etc...

:deal: This InfoCenter article is also provided in PDF format. To view it, we strongly suggest to download the Foxisoft PFD Viewer (http://www.foxitsoftware.com/pdf/rd_intro.php): it's free and small, less than 1Mb!

-------------------------------------------------------------------------------------


PART 1 - FINDING WHERE THE PLACEMENT INFO ARE STORED

You may have noticed that in the OBJD there are many fields that hold information about the object placement. For instance, field 0x0006 is "Default allowed Heigh flags", field 0x0005 is "Default Wall placement flags".
Defining the object placement using those OBJD fields would have been easy... Too easy! So, Maxis decided to define the object placement using the "Init" BHAVs, just to make things harder :)

:here: FAQ: The "Init" BHAV is a set of instructions that are executed every time an object is picked from the catalogue and placed on the lot. These instructions may define multiple aspects of the object behaviour, among which its placement.

Almost every object contains a private Init BHAV (called "Function - Init") that usually calls one or more semiglobal Init BHAV. Either in the private or in the semiglobal BHAVs, the placement flags for the object are set.

:new: :cool: HINT: If you can't find an Init BHAV in the package, or there are multiple ones, you can know for sure which one is the right BHAV to edit by opening the Object Functions file: in the first line, you'll find the name of the "real" Init BHAV. (If there are multiple Object Functions files, look into the one with the lowest Instance number).

:here: FAQ: Private BHAVs are contained in the custom object package, and are assigned to GroupID 0xFFFFFFFF; semiglobal BHAVs reside into the "objects.package", located in the gamedir, and are assigned to a global GroupID 0x7Fxxxxxx.

:cool: HINT: simPE has a useful feature, called "Import Semiglobals"; if you use it, be sure to change the GroupID of the imported semiglobals to 0xFFFFFFFF, otherwise any change will apply to all the objects that use that semiglobal BHAV, and your object will act as a hack!


PART 2 - EDITING THE PLACEMENT FLAGS

Now, you could search the BHAVs and spot the all the lines that adjust the object placement, but the easiest thing to do is to add some lines at the end of the private BHAV, and use them to change the placement flags at will: all the previous settings will be overridden.

:here: FAQ: The values that we are going to edit are flags, i.e. values composed by multiple bits can be independently "set" to 1 or "cleared" to 0. Each bit defines a single placement surface/wall, so we can freely choose on what surfaces the object can or can't be placed.

As said, we have to add a line at the end of the private Init BHAV, set the function (Op-Code) to 0x0002 (="Expression") and set the operands in the form:

My 0x00NN Set Flag Literal Value 0x00MM

In the Expression above, 0x00NN is the type of placement (horizontal or wall placement), and 0x00MM is the flag that we want to "set" (= activate). You can set the following values:
My 0x0004 Set Flag Literal Value 0x0001 ---> Placeable on floor
My 0x0004 Set Flag Literal Value 0x0002 ---> Placeable on low tables
My 0x0004 Set Flag Literal Value 0x0003 ---> Placeable on dining tables
My 0x0004 Set Flag Literal Value 0x0004 ---> Placeable on counters
My 0x0004 Set Flag Literal Value 0x0005 ---> Placeable on Sims
My 0x0004 Set Flag Literal Value 0x0006 ---> Placeable in sims' hand
My 0x0004 Set Flag Literal Value 0x0007 ---> "Sitting" :confused:
My 0x0004 Set Flag Literal Value 0x0008 ---> Placeable on end tables
My 0x0004 Set Flag Literal Value 0x0009 ---> Placeable in counters
My 0x0004 Set Flag Literal Value 0x000A ---> Placeable under counters
My 0x0004 Set Flag Literal Value 0x000B ---> Placeable on decorative slots (i.e. mantles)
My 0x0004 Set Flag Literal Value 0x000C ---> Placeable on Driveways (not sure 100%, it could be "on OFB counters")
My 0x0004 Set Flag Literal Value 0x000D ---> Placeable on OFB Shelves (not sure 100%)

My 0x000D Set Flag Literal Value 0x0001 ---> Needs wall on its front
My 0x000D Set Flag Literal Value 0x0002 ---> Needs wall on the right
My 0x000D Set Flag Literal Value 0x0003 ---> Needs wall on its back
My 0x000D Set Flag Literal Value 0x0004 ---> Needs wall on the left
My 0x000D Set Flag Literal Value 0x0005 ---> Needs front-right facing
My 0x000D Set Flag Literal Value 0x0006 ---> Allowed front-right facing
My 0x000D Set Flag Literal Value 0x0007 ---> Needs front-left facing
My 0x000D Set Flag Literal Value 0x0008 ---> Allowed front-left facing
My 0x000D Set Flag Literal Value 0x0009 ---> No front wall allowed
My 0x000D Set Flag Literal Value 0x000A ---> No right wall allowed
My 0x000D Set Flag Literal Value 0x000B ---> No back wall allowed
My 0x000D Set Flag Literal Value 0x000C ---> No left wall allowed
My 0x000D Set Flag Literal Value 0x000D ---> Needs fence
My 0x000D Set Flag Literal Value 0x000E ---> No fence arch allowed

If you want your object to be placeable on different surfaces, you have to add (and edit) multiple lines to the private Init BHAV.
sometimes you may need to prevent an object to be placed on specific surfaces; in this case, use as reference the table above, but use the "Clear Flag" operand instead of the "Set Flag".

:here: FAQ: When editing the BHAVs, be sure that all the "True target" point to the next instruction (except the last one, that just has "Return True" as True Target): see purple marks in picture.
Be sure also that the OpCode is set to "0x0002" (see green mark in picture).
Lastly, instead of manually edit the Hex values, you can use the extremely useful "Instruction Wizard" (blue marks)
http://thumbs.modthesims2.com/getimage.php?file=460583&thumb=1 (http://thumbs.modthesims2.com/getimage.php?file=460583) http://thumbs.modthesims2.com/getimage.php?file=460584&thumb=1 (http://thumbs.modthesims2.com/getimage.php?file=460584)



EXAMPLE
If you want your object to be placed on all the surfaces (tables, counters, mantles), you have to add 5 lines:
My 0x0004 Set Flag Literal Value 0x0002
My 0x0004 Set Flag Literal Value 0x0003
My 0x0004 Set Flag Literal Value 0x0004
My 0x0004 Set Flag Literal Value 0x0008
My 0x0004 Set Flag Literal Value 0x000B

(optional: My 0x0004 Set Flag Literal Value 0x0001 to allow placement on floor)


:cool: HINT: When you set an object to be placed on a wall, you may want to set if the object has to go down with the walls or not. To do so, add another line to the BHAV, set the OpCode to 0x0002 ("Expression"), and set the operands in the form:
"My 0x0008 Set Flag 0x000B"---> Hide for cut-away
"My 0x0008 Clear Flag 0x000B" ---> Always visible, even with walls down

:cool: HINT: If you object still refuses to be placed on some surfaces, there may be a weight problem: all the object have a "weight", and all the surfaces have a "support strenght"; the "Weight" is not actually used in game (no tables will break up if a too heavy object is placed on them!), but Maxis uses this system to prevent a particular (large) object to be placed onto particular (narrow) surfaces.
Since we can't change the surfaces Support Strenght, we have to edit the object Weight: add another line to the BHAV, set the OpCode to 0x0002 as usual, and use the expression:
"My 0x001B Assign To Literal Value 0x0000" ---> Set the object weight (My 0x001B) to zero


-------------------------------------------------------------------------------------

OTHER USEFUL RESOURCES

Modding Infocenter Index (http://www.modthesims2.com/forumdisplay.php?f=333) - Comprehensive list of all the InfoCenter threads
Object Creation Workshop and Repair Center (http://www.modthesims2.com/showthread.php?t=82084) - If your object doesn't work, no matter what you try
Colour Options for "EP-ready" packages (http://www.modthesims2.com/showthread.php?t=42014) - About the texture linking tecniques
Sims 2 start to finish Object Creation Tutorial (http://www.modthesims2.com/showthread.php?t=59293) - Learn how to create your own object





-------------------------------------------------------------------------------------

Khaibit
9th Aug 2005, 02:16 PM
Thank you, Numenor! :bow:

Another useful information from you :)

windkeeper
10th Aug 2005, 01:43 AM
Great to have all that info put together and explained! Thanks! I had the list of placement and intersection codes for a while. My problem is, just adding extra lines of code in BHAV doesn't always work. I was successful with stopping painting from going down with the wall and setting few decorative objects to allow other object or person intersection, thats about it. For example, right now I'm trying to change "on a pedestal" statue to allow person and object intersection by adding modified 0x0008 code - no luck.

Oh, and here is the codes for 0x0008, got them at this forum:

1: can be stepped over
2: allow object intersection
3: allow object and person intersection
4: can walk
5: allow person intersection
6: in use
7: notified by idle for input
8: Do NOT Use Maya Model Footprint
9: chair facing
A: burning
B: hide for cutaway
C: unused -was fireproof
D: Remove Floor
E: Add Floor if Required
F: Hide Floor

*Edit* got my object working by importing BHAV from another object. Needs more testing but so far it works.

Numenor
10th Aug 2005, 08:41 AM
I've read somewhere (probably Dizzy2 said that) that after the Init BHAV has been executed, some parameters can't be modified any more. this means that when changing the BHAV and restarting the game, you have to sell and rebuy the object.

Thanks for letting me know, though... I hate when things don't work like they logically should! :)

Inge Jones
10th Aug 2005, 09:38 AM
If you set something in an init, that *should* only run once - when the object is instantiated. Ie you'd have to rebuy the object if you want to run its init again. An init will also normally run if an object errors, it resets and reruns init.

All the attributes and other settings that can be set in an init can be set at any time during gameplay, for example as a result of choosing a menu option.

There is a way to have an already-purchased object re-initialised after you have updated its code. That is to specify a BHAV to run in the "load" object function. Usually just give the number of the init BHAV! Load runs when the game detects the file on disk has changed.

However, if you specified things like placement flags in the init, that will not affect already-placed objects. Those are only used at the time of placing the object, they will not suddenly cause an object to leap up from a coffee table and hang itself from the wall.

Numenor
10th Aug 2005, 03:59 PM
That's what I thought. But why WindKeeper says that this procedure not always works? I'd like to know from her if re-buying the object fixes the placement.

I can't see any reason why a flag set in the last line of the init BHAV shouldn't override the previous settings.

Inge Jones
10th Aug 2005, 04:00 PM
Well I don't know what exactly is "not working" for them. An already-bought object will not reinitialise itself when you change the file. That is logical and to be expected, given the knowledge that Init only runs at purchase time and when the object errors.

If you buy an object whose init says "place on coffee tables" then you leave the game, change the init to say "don't place on coffee tables" then go back into the game, the object will still want to go on coffee tables, because nothing has happened to make it run Init again.

This is completely logical in my opinion. If they want already-purchased objects to pick up such changes, they need to set a "load" function in the object functions table, pointing to the Init function, so that the object will run Init when they return to the game after changing the file. This is the documented purpose of the Load function.

Inge Jones
10th Aug 2005, 04:20 PM
Windkeeper, to allow intersection, you may also need to add an "allow intersection" function. At its simplest you can just put in a meaningless line that returns true.

Inge Jones
10th Aug 2005, 04:21 PM
Dizzy, it is for when you load a lot. It won't run at other times. You close your game, edit your object, load the game, load the lot, and then the object's "load" function runs. But only if it's been changed on disk.

dizzy2
10th Aug 2005, 04:25 PM
That's nice to know. I always assumed Load was strictly for when you loaded a lot. Now, if only we could run behaviors in simless build mode...

windkeeper
10th Aug 2005, 04:41 PM
Um, I didn't say "it stops working", I was trying to say that for some objects it just plain doesn't work. For example, that venus statue. I added the extra line of code to allow intersection, but sims still cannot walk through it. The reason is probably because the Init calls "sculptures" bhav and I guess that resets everything I try to change. But when I removed all the bhav functions and replaced them with the others taken from a simple decor object that do not have calls to external functions, I was able to add the code I needed and finally make it work.

Inge Jones
10th Aug 2005, 04:44 PM
The global init can only reset something you changed if it runs after your settings. If one BHAV says Set Flag and the other says Clear Flag, it will be the instruction that happens last of all that will win.

I don't think you have understood what I meant about the Allow Intersection function. It's not a line of code in an init, it's a BHAV of its own that is referenced from the Object Functions table. You can put various conditions in there like it can intersect with particular objects but not others. Nowadays if I want to allow intersection I do use that function, even if I don't want to run conditions.

Inge Jones
10th Aug 2005, 05:07 PM
Well I don't think we should hi-jack this thread any more, but I'd be happy to start a new one about Object Functions.

windkeeper
10th Aug 2005, 05:09 PM
I did understand, I just wouldn't know how to create that function and how to call it :). I would love to see an example, or a mini-tut, as that is the behavior that I need to change the most.

windkeeper
10th Aug 2005, 05:21 PM
Yes, please!!! And sorry, Numenor for the off-top!

Numenor
10th Aug 2005, 05:49 PM
Never mind, it's interesting (but please Inge don't post a tutorial here :))
I'd like to take a look at the Venus Statue init BHAVs, though... Maybe the "Allow intersection" flag works differetly than the placement flags, or maybe it's just useless if the "Allow intersection" BHAV isn't called somwhere...

windkeeper
10th Aug 2005, 06:33 PM
The venus statue ("on a pedestal") has three bhav functions: init, init common, and main. Init function calls "[semiglobal] Function - Init - Sculptures". Init Common function has the placement codes, including My 0x0008 which is set to remove the flag. I tried changing that line to "set" the flag, tried adding a new My 0x0008 line at the bottom - both didn't work.

Inge Jones
10th Aug 2005, 06:48 PM
Windkeeper, your line 1 that you added isn't being run. See the grey line with an arrow pointing to it? That means it's not linked into anything - none of the other lines Goto it. You'll know it's going to run when you see a green or a red line going to it.

Also you'd find it useful to use the Sort button, it helps you to see more clearly what order the lines will be executed in.

windkeeper
10th Aug 2005, 07:29 PM
That was the original file without my changes. But I didn't realise that line was not linked when I tried to use it. I was also adding a new line at the bottom and connecting it to the last executable line. Here is what it looked like (see pic). Thanks for the "sorting", I wasn't sure it that affects the actual functions.

Inge Jones
10th Aug 2005, 07:38 PM
What's in the individual inits? Might they be setting the flag wrong? Presumably they do their stuff after calling Init Common. Also have you followed through all the way from the OJBF table that all the parts of your object are running that Init Common?

I wrote the thing about OBJFs I promised you, do try using the Allow Intersection function I mentioned.

Hmm and just in case there is something wrong with flag 3 (ISTR I've had trouble with that one too) use 2 and 5 instead

windkeeper
10th Aug 2005, 08:18 PM
Thanks, Inge! I'm moving my questions there then :D

Numenor, just for your information. After reading Inge post I found whats wrong, the Init Common function is not even listed in OBJF, so there was very little point trying to change it as it looks like it is not even used! :D I changed Init function instead by adding My 0x0008” set to 3, and the object now can intersect with other objects and sims.

Numenor
10th Aug 2005, 11:04 PM
You're right: the Init Common is probably a remaining of an old version, that Maxis discontinued... It's not used at all.

I think I'll add a "Hint" in the main post, explaining that the "Private Init BHAV" I refer to, is the one called in the OBJF.
So far, I only pointed out that the BHAV name is always "Function - Init" (and that's true also for the Venus statue).

Numenor
14th Aug 2005, 12:00 PM
Notice: The question by Lethe_s about indoor use of barbecues has been moved here:
http://www.modthesims2.com/showthread.php?t=83770

dizzy2
30th Sep 2005, 10:46 AM
Looks like there's a new "allowed height" flag (used specifically for ownable cars):

My allowed height flags (0x4) Set Flag Const 0x101:0xC(12)

I suppose this means placeable on driveways.

See:

# Group = 0x7F4EA230, Instance = 0x2071
# Title = Functional - Init - Ownable

Numenor
30th Sep 2005, 12:27 PM
Dizzy - Thank you for your input and valuable info (and not only in this thread! :))

Zalo_m - I've moved (and answered) your question into the Object Creation forum (http://www.modthesims2.com/showthread.php?t=93369)

Targa
10th Oct 2005, 09:17 PM
What are the values for making an object placable on walls and ceilings? I don't see those two locations mentioned.

Edit: Never mind, I figured it out. It's sort of a reverse-logic from the way I was reading your post. For anyone else who doesn't understand right away:

Edit your objects pivot and rotation so it will be the correct height and alignment for where you want it (wall or ceiling), then add to the Init "My 0x000D Clear Flag Literal Value 0x00XX" (where XX is the function number) to clear the "requires" section. So for example, if you wanted to make a wall object placeable on the ceiling, you'd add "clear flag literal value 0x0003" (needs wall on its back).

Also worth mentioning for beginners that to make these settings you need to click the little arrow icon next to where it says"operands".

Calidan
25th Nov 2005, 07:50 AM
well Im trying to make a mini tv (kinda) that can be placed on counters, tables etc but at this stage am having no luck with the placement (defaults to floor). I realise this has been done by others but am using it to help teach myself 'how' its done.

Ive read through the tutorial and all the posts in this thread and so far it is still not working.

In the tutorial (obviously using an older SimPE) it says the BHAV's are like ..
My 0x0004 set flag literal value 0x00?? (?? being the flags I want) but in SimPE 0.50a the closest I can find is weird .. eg.

My 0x0004 set flag flag# literal 0x00?? *shrug*

Then later people are refering to things like

My 0x0004 assign literal value 0x00?? (but the closest to this I can find is 'assign 32bit value literal'

If someone could clarify these, their differences and which one is actually being refered to when modifying object placement please as this is driving me a little nuts :)

--
Calidan

Numenor
25th Nov 2005, 10:04 AM
In the BHAVs, you can assign a value to a variable (like "Local 0x0000", Temp 0x0001, "My 0x0015"...): e.g. "My 0x0015 assign to Literal Value 0x0001", which means "Assign to the parameter My 0x0015 (= 'My Repair level') the value of 1.

But some specific parameters, like the My 0x0004 (= 'My Allowed height flags') are flags, i.e. a binary number made by a list of "0" and "1", where each "0" and "1" is a switch yes/no.
For example, the My 0x0004 is a binary number composed by 11 digits: b00000000000 (the leading "b" stands for "Binary"). You can set each one of these zeros to 1, independently, and each one has a special meaning. The rightmost digit is the Flag#1 and means "Placeable on ground": if the Flag#1 is 0, the object is *not* placeable on ground; if it's 1, the object is placeable on ground.
Now, how can you "switch" only the last digit of this binary number? By using the "Set Flag" operand (that sets the digit to 1) and the "Clear flag" operand (that sets the digit to 0). You need to tell the game exactly the position of the flag you want to switch: in this case it's position 1 = the rightmost digit = "Flag #1".

Therefore, the instruction you need to use, in order for an object *not* to be placeable on the ground is:
My 0x0004 Clear Flag Literal Value 0x0001, which means "My Allowed height flag - Set to 0 the flag in position 1 (= allowed on ground)".

Note 1: "Literal value" (that has recently become simply "Literal") just means a plain number with a fixed value, not a variable; and the leading 0x means that the following number is hexadecimal; therefore, "Flag Literal Value 0x0001" just means Flag 1.

Note 2: The latest versions of SimPE incorporates the extremely useful BHAV editor by PLJones and Inge Jones; as pointed out in the main post, this editor has a "Wizard" that helps a lot when editing these types of values: look picture. The BHAV editor is continously modified and improved, and more and more values are "translated" in understandable language.

Note 3: When you add the "My 0x0004 Clear Flag Literal 0x0001", be sure to add it at the end of the Init BHAV, so that the "Clear Flag" operation will override any previous value.

Calidan
25th Nov 2005, 10:25 AM
In the BHAVs, you can assign a value to a variable (like "Local 0x0000", Temp 0x0001, "My 0x0015"...): e.g. "My 0x0015 assign to Literal Value 0x0001", which means "Assign to the parameter My 0x0015 (= 'My Repair level') the value of 1.

(TRIMMED)

Note 3: When you add the "My 0x0004 Clear Flag Literal 0x0001", be sure to add it at the end of the Init BHAV, so that the "Clear Flag" operation will override any previous value.


Thanks - this I all basically knew from coding days, was just wondering about the 'wording' used in SimPE to be sure I had it right.

As to the problem I'm having at the moment - I have set My 0x0004 (placement) to 2, 3, 4, 8 and B (ie all the 'surfaces' as mentioned in the tutorial) and set the 'tv' object weight to 0 as also suggested, but I can still not get it to lock onto any surface - it will only place on the ground. Could this have something to do with it using the TelevisionGlobals (thought it best to leave that as it IS a tv afterall)? or am I missing something else.

EDIT: Your last suggestion worked a treat (clearing the 'on ground') however now it wont lock onto anything to place. Added a screenshot of my BHAV list - added at the end of the 'default' init BHAV's - and since 0x0001 cleared it must be setting them, it just doesnt want to work for me it seems :)

EDIT2: Please ignore the above :) finally figured it out *hops around excitedly*

--
Calidan

todd
7th Dec 2005, 11:19 PM
By chance do you know the Op-code for "Assign"? I have SimPE 0.50 and "Assign" isn't in my list. The closest thing I have is "Assign 32 bit value" and that doesn't seem to work. I'm trying to set its weight to zero, which I assume is the reason why I can only place the object (a BBQ grill; working on making it not set fires also) on counters (I am using the counter surface flag) when I use moveobjects on.

I had a similar problem with the UI when it came to the "My" operand. When I selected My from the list, it gave me a drop down box to choose from; it wouldn't let me enter my own value. Luckily in one of your screenshots you show the op codes, so I was able to just copy it down.

SnowStorm
8th Dec 2005, 12:07 AM
assign is :=

Inge Jones
8th Dec 2005, 08:36 AM
I find it easier not to use the opcode wizard, just type numbers into the operands till it says what you want underneath :)

Numenor
8th Dec 2005, 09:39 AM
By chance do you know the Op-code for "Assign"? I have SimPE 0.50 and "Assign" isn't in my list. The closest thing I have is "Assign 32 bit value" and that doesn't seem to work. I'm trying to set its weight to zero, which I assume is the reason why I can only place the object (a BBQ grill; working on making it not set fires also) on counters (I am using the counter surface flag) when I use moveobjects on.

I had a similar problem with the UI when it came to the "My" operand. When I selected My from the list, it gave me a drop down box to choose from; it wouldn't let me enter my own value. Luckily in one of your screenshots you show the op codes, so I was able to just copy it down.

You need to set the height flags as explained in the first post, and then set the weight to zero.

If you use the wizard, you should set the various values in the given order, because the drop-down lists change dynamically.

Start by choosing "My" from the first list, then "Weight" from the second, then "Assign to" (or ":=" in some older versions) from the third, then "Literal" from the fourth and lastly write 0x0000 in the last field; the translation will be "My Weight Assign to Literal 0x0000".

As for the placement flags, the procedure is the same.

HINT: if you are looking for a certain value (e.g. "Weight") from a long drop-down list, you can hit "W" on the keyboard multiple times, until the "Weight" entry is selected.

Reyn
17th Dec 2005, 08:01 PM
This is really useful in general - however, is there a flag to allow one object to intersect other objects? I want to have custom book/knicknack combinations and unless I use moveobject it won't let me put them in the same area.

Echo
18th Dec 2005, 05:31 AM
Reyn -
Allow object intersection:
My 0x0008 Set Flag Literal Value 0x0002
Allow person intersection:
My 0x0008 Set Flag Literal Value 0x0005
Allow object and person intersection:
My 0x0008 Set Flag Literal Value 0x0003

:)

Fat D
18th Dec 2005, 05:28 PM
is there a code to make an object not require, but allow floor beneath?

Reyn
18th Dec 2005, 05:33 PM
Okay, thanks!
And that number looks formiliar, so I'm just dense, aren't I?

Reyn
18th Dec 2005, 05:53 PM
I've another question - sorry, this still looks like gibberish to me - is there a way to have something remain at a fixed height, intersect an object, yet require an object to be there? I don't want my books and such floating in space, I want them to require a bookshelf.

Fat D
18th Dec 2005, 06:06 PM
you will need slots, but this requires heavy coding as it needs own routes and the animations will have to be reassigned for that slot.

SuperFly
5th Feb 2006, 10:13 PM
A question that I can't see an answer to in the original thread- what do you have to do to allow an object to be placed on the ceiling? (Like a TV that hangs from above)

Numenor
6th Feb 2006, 12:51 PM
Attach an object to the ceiling involves very different placement flags, than the ones described in this thread; all the above information apply to objects placed on ground or surfaces.
In this moment I can't check and tell you exactly the changes to the Init BHAV needed to make an object hang from the ceiling, but you can clone any ceiling-mounted object and examine its Init BHAV (following also the links to the semiglobal Init bhavs).

Mind that in the game the ceiling-mounted objects disappear when you zoom in; therefore, this setting might be not suitable for a TV. You could just create a TV that is placed onto the ground, but with a mesh that *simulates* it being attached to the ceiling...

Inge Jones
6th Feb 2006, 02:39 PM
Ah found it - on my ceiling light hider which also does other hanging objects. This is the line that decides if it is a ceiling hanging object:

0002 : 2A000D0000080400000000000000 : 00

[prim 0x0002] Expression (Stack Object's 0x002A (placement flags) Flag Set? flag# Literal 0x000D (attached to ceiling))


And here is the bit that deals with fading out when you get close, if you set the flag that it obstructs view, it will fade, and vice versa:

0002 : 28000400000A0400000000000000 : 00

[prim 0x0002] Expression (Stack Object's 0x0028 (flag field 2) Clear Flag flag# Literal 0x0004 (Obstructs View))

SuperFly
6th Feb 2006, 03:53 PM
Oh, thanks guys :) Much appreciated :)

Numenor
7th Feb 2006, 08:41 AM
Thanks Inge! :)

beautiful_blue22
27th Feb 2006, 03:10 AM
maybe I'm missing it... you start out:

If you can't find an Init BHAV in the package, or there are multiple ones, you can know for sure which one is the right BHAV to edit by opening the Object Functions file: in the first line, you'll find the name of the "real" Init BHAV. (If there are multiple Object Functions files, look into the one with the lowest Instance number).

but you never say what to do if there isn't a BHAV in the package? I'm cloned curtain to make a bed canopy and the problem is that it requires a wall to be placed, but I'm sure not everyone places their beds against walls, so I was looking for way to stop that requirement. This seems to be the solution? But there is no BHAV in my package and I'm quite unsure as to how to proceed. Thanks!

~k

Inge Jones
27th Feb 2006, 07:39 AM
If there isn't a BHAV in the package, it means the object is sharing BHAVs with all other objects like it, and the Init BHAV can be found in the semiglobals file group.

Your package will have a filetype called GLOB for short. Open the file in there (while you have it loaded in SimPe) and it will tell you the correct semiglobals group that your object belongs to.

Then look at the Object Functions (OBJf) file to see what number BHAV is used for the Init(ialisation) BHAV. If you have more than one OBJf let me know and I can offer more specific help.

Then still in SimPe, use the top menu Tools|Object Tools|Import SemiGlobals, navigate to the correct semiglobal group and Scan. Untick them all, and just tick the BHAV or BHAVs that related to Initialisation. Import it or them. You'll get various options relating to renumbering and so on - accept everything.

Go into the OBJf (each of them if more than one) and make sure the number against the Init entry in them agrees with the number the Init BHAVs now have.

From this point on, those inits will belong to your object only, and you can edit them and your new object will use your new code.

darylmarkloc
28th Feb 2006, 06:30 AM
This looks like the logical place to ask this - has anyone defined what is required to change an object from indoors to outdoors?

Numenor
28th Feb 2006, 08:19 AM
Exactly, what you mean with "indoor" and "outdoor" objects? That can be placed only on floor tiles or - on the contrary - can be placed only on free ground?

You have to set (or clear) some specific "Placement Flags" (*after* you have enabled the placement on ground as explained above!):

OpCode: 0x0002 (Expression)
Operands: 2A000100FF0903070000000000000000
(My Placement Flags Set Flag Literal "Allow on floor")

and

OpCode: 0x0002 (Expression)
Operands: 2A000200FF0903070000000000000000
(My Placement Flags Set Flag Literal "Allow on terrain")


Obviously, if you want an object to be placed on floor but not on terrain you need to add two lines to the Init BHAV: the first with the "Set Flag" to allow placement on floor, the second with "Clear Flag" to prevent placement on terrain.

darylmarkloc
28th Feb 2006, 09:36 AM
That's what I was after..thank you. I have an obsession with using the model plane for outdoor objects (because it doesn't interfere with placing other objects under or near it) and would rather not have to have people use 'moveobjects on' to place my things. :)

beautiful_blue22
28th Feb 2006, 01:26 PM
Thanks Inge for your great clarification. I've run into another problem however... When I open GLOB it says I'm using "urtainGlobals". I went to OBJF like you said, and then opened up the Import Globals, I scrolled down to "urtainGlobals" and then hit scan and "nothing" happens. Nothing is listed in the box. I went up one and clicked scan and the box flooded with data, then tried "urtainGlobals" again and nothing happened again. Any ideas??

~k

urtainGlobal is a typo I think (on their part) as it should say "curtainGlobal".

Inge Jones
28th Feb 2006, 01:40 PM
Unfortunately a typo in GLOB actually ends up evaluating to the wrong semiglobals as it is based on the name. Yes you want curtainglobals and scan those semiglobals.

Don't touch your GLOB just now, but if by any chance your object doesn't work due to that typo I can help you get a working GLOB. Editing it in the file doesn't always work.

beautiful_blue22
28th Feb 2006, 02:20 PM
OK I'll give it a try in a bit (I'm off to work soon, but I can do it from there) and let you know. Thanks again!

~k

beautiful_blue22
28th Feb 2006, 04:08 PM
well I've imported the "curtainGlobals" and I changed the 3 OBJFs to reference it the imported BHAVs. I then added the clear flag for the wall requirement, and then added a set flag for allow object intersection. Unfortunately neither worked. I saved the file as something else and tried deleting the wall requirement and that worked, but my object still doesn't allow object intersection.

I'm not sure how to proceed. Thanks so much for your help and patience!

~k

MizzesSimmer
18th Mar 2006, 01:35 PM
What are the flags that allow you to place objects on the food shelf in OFB? I am making decorative food (bakery stuff) and want to be able to place it on those food shelves.
Thanks!

Numenor
18th Mar 2006, 05:19 PM
I'm still not sure 100%, but the values should be:

My 0x0004 Set Flag Literal Value 0x000C ---> Placeable on OFB Counters
My 0x0004 Set Flag Literal Value 0x000D ---> Placeable on OFB Shelves

Thanks for having asked: I've updated the first post.

MizzesSimmer
18th Mar 2006, 07:05 PM
Thanks for the reply! I appreciate it!

MizzesSimmer
19th Mar 2006, 07:24 PM
Hi Numenor, it doesn't seem to work for the chill display feezer. Tho I wasn't too sure which Init to place them in, there was Init and Init Common. I tried one then the other, but still no results.

Numenor
20th Mar 2006, 01:35 AM
I think that the freezer isn't considered a counter, nor a shelf... Maybe it exists a 0x000E code? I don't know, but it worths a try...
You can add the placement lines at the end of the normal Init (not the common): it's important to add the lined at the end, because the last setting is the only one that is retained (i.e. if in the common Init there is a line that prevents a certain placement, and the last line allows that placement, the placement is allowed...)

MizzesSimmer
20th Mar 2006, 05:13 AM
Ok, not the common. I read through the lines and it didn't look like I should place one there, as the last line pointed back to the second(around there) and it just repeated itself. But since it didn't work with the other Init, I just thought I would experiment.
Guess that failed, lol.
Oh and thanks, Numenor, I will try that code. wish me luck, hope it works!

Numenor
20th Mar 2006, 02:59 PM
MizzesSimmer, if you have a "common" init and a "normal" one, this probably means that you are working on a multi-tile object, right? If not, it's quite unusual to have such subdivision in the Init routines...

Anyway, be sure that the Init BHAV you are working on is actually executed: check all the Object Function files, and be sure that all the Init lines point to the right Init BHAV (read the instance from the "Action BHAV" field)

It sounds obvious, but I felt important to clear up this: if you edit a BHAV that - for any reason - is not executed by *all* the Object Functions files, your modification is useless.

roddyaleixo
21st Mar 2006, 02:28 AM
Hi all :) I am working on an object, and I was wondering what I should change if I want to make the object placeable on the pool, and not on the terrain...
I've searched over and over and can't find which resources I have to change, so I just decided to come and ask, Lol...

Numenor
21st Mar 2006, 08:06 AM
I'd use the following line:

OpCode 0x0002 (Expression)
My 0x002A (placement flags) Set Flag Literal 0x000C (allow in pool)

If you use the instruction wizard, here is the full string:
2A000C00000903070000000000000000

roddyaleixo
21st Mar 2006, 05:17 PM
Thanks Numenor! :)

Numenor
21st Mar 2006, 08:08 PM
Does it means that it worked? :) I've never tested it myself...

roddyaleixo
22nd Mar 2006, 02:48 AM
Actually I just tested it... It didn't really work, well, it worked for 'looks'... when I am in the game it says that I must place it in a pool, but it simply doesn't let me do it.. Lol.. Maybe I have a problem with the weight part... It is my first time experimenting with BHAVs, so I am unsure of what I am doing... but I like to break out the boundaries ;) here is what I got on the weight line, even though I am mostly certain I screwed it up somehow:

[prim 0x0002] Expression (My 0x001B (weight) := Literal 0x0000)

Actually, may I send you a PM Numenor? Before I even take this project foward I needed to ask you permission for something first, plus, since it is a 'secret' project, I think it would be better if I had you know of it before everyone else...
Thanks once again for your help, and for all these useful explanations on the modding infocenter :)

Sorry for my spelling, or anything I said that shouldn't be said LOL!
I am tired and sleepy ;)

Numenor
22nd Mar 2006, 09:50 AM
Sure, you can PM me! :) But mind that I have not much time, so don't ask me to join a project... ;)

roddyaleixo
23rd Mar 2006, 03:37 AM
Hi!
Thanks for your reply to my PM Numenor! I am happy that I can go on with my project. :)
By the way, I found out what my problem was! I don't know if the weight part helped, but I decided to try looking into other objects that go into the pool, so I simply cloned the pool ladder to investigate, and found some interesting results that allowed me to put my object in the pool without 'the move_objects on' cheat.
I just thought I should share it with everyone.
Notice these 3 placement flags are required for the object to actually 'stack' into the pool. If you take one of them out, it wont do the trick:

[prim 0x0002] Expression (My 0x002A (placement flags) Set Flag flag# Literal 0x000C (allow in pool))

[prim 0x0002] Expression (My 0x002A (placement flags) Set Flag flag# Literal 0x000D (attached to ceiling))

[prim 0x0002] Expression (My 0x002A (placement flags) Set Flag flag# Literal 0x000A (allow in air))

there were obviously other placement flags in the pool ladder package, but while I was experimenting I found out that only these 3 are required to do the trick, I am glad it worked for me, since it is my first time making this :)

chrissy6930
25th Mar 2006, 11:23 AM
Hi all,

I am working on some garden and fence lights right now. for the garden lantern I would like to also allow for placement on fence posts:
My 0x002A Set Flag Literal Value 0x000E
yet the only way to make it show up on a fence post seems to be by setting the weight to zero. doing so also means that I cannot place my garden lantern on the ground any more.
plus while I have allowed for object intersection I cannot place 2 lanterns on top of each other when placed on a fence post.
the latter problem also arises when I clone a fence light and allow for object intersection. its just won't do it...

could somebody pls have a look?
thanx in advance!

Inge Jones
25th Mar 2006, 02:55 PM
I'm not completely clear on what you're trying to achieve. I know what you mean by one of the lamps goes on a lamppost, but where exactly did you want the other one? On the fence post with it? The one called fencelantern looks really tall, am I looking at the right thing?

BTW your node 4 in the garden lamp init is invalid. Are you using the PJSE bhav editor plugin? If so that will show you if you look at the translation under the operands that the line is not actually doing anything.

Numenor
25th Mar 2006, 02:59 PM
Chrissy, first off, I'm a little confused, because the light that you call "GardenLamp" looks much like a fence lamp (no stand), and the opposite.

That said, exactly, what is the goal you want to achieve?

If you want to put multiple lights attached to the same fence post, I think it's not possible: each post can host only one light (the move_object won't work, either).

If you want the tall lamp to replace an existing fence post (i.e. the lamp is located on the ground, in the very same location of the post), this is not possible, even if you set the flag "allow object intersection" (this is because the fence are NOT objects, but rather walls). You must use a combination od move_object and snaptogrid off, in order to do that.

With regards of your packages: as a general rule, when you are setting up the placement of an object, you should check if, by chance, the semiglobal Init BHAVs called from within the private Init prevent a specific placement; for instance, your "FenceGasLantern" (which has the tall stand and looks like a garden lamp) executes the "Init - FencePost", that includes the instruction "My Placement flags Clear Flag [allow on terrain]"; therefore, if you don't add an instruction that sets again the [allow on terrain] flag, the lamp will only be placeable on fences.

Another thing I've noticed in your package is the weight: you have used the "Set Flag" operator, instead of the ":=" operator.

Let me know what you'd like your lamp to do, and I'll try and fix your packages (if possible :))

chrissy6930
25th Mar 2006, 03:17 PM
I'm not completely clear on what you're trying to achieve. I know what you mean by one of the lamps goes on a lamppost, but where exactly did you want the other one? On the fence post with it? The one called fencelantern looks really tall, am I looking at the right thing?

BTW your node 4 in the garden lamp init is invalid. Are you using the PJSE bhav editor plugin? If so that will show you if you look at the translation under the operands that the line is not actually doing anything.

the fence park lantern is supposed to sit on a fence and its height should then be the same as that of a park lantern. its meant for use on a bridge or whatever lot creators might come up with. the idea is to have fence park lights with 1, 2 and 3 lanterns per mesh which can then be combined with each other to create additional looks.
as for the garden lantern if u place 2 of them on top of each other one of which turned by 90 degrees u will get another look as well...

yes I did use the PJSE bhav editor plugin provided thats the same as the PJSE Instruction Wizard... and now that u mention it I see what you mean: that 'invalid' doesn't look like it could do anything...

chrissy6930
25th Mar 2006, 03:36 PM
Numenor: hmmm! the garden lamp is a bit too big to look right on the available fences. therefore I simply decided to make it a garden light by default and allow for fence post placement so I can place it there once I came up with a suitable fence...

I cannot place more than one light on the same fence post? well that's gonna reduce the possibilities a bit. good to know though!

and nope the fence park lanterns are not supposed to replace a fence post they should be placed on them. so I can make a fence light to be also placed on the ground by adding the placement flag again? thats cool! :)

EDIT: I just tried to fix them myself: after correcting the weight operator on the garden lantern I still cannot place the lantern on a fence post. and when trying to set up the fence lantern adding
My 0x002A Set Flag Literal Value 0x0002
My 0x0008 Set Flag Literal Value 0x0002
My 0x002A Set Flag Literal Value 0x0009
its still only possible to place it on the fence post...
therefore could you pls try to fix my packages for me or show me how to do it myself?

thanx in advance!

niol
25th Mar 2006, 04:09 PM
So, can a light be made like a table to hold something above it?

padre333
6th Apr 2006, 12:08 PM
after a lengthy trial-and-error process and with the invaluable information from everybody here in this thread, I was able to make a floorlamp, which was cloned from a Maxis table lamp (no floorlamp seemed to clone properly for me) stand on the floor!
i just wanted to say thanks, is all!
you guys rock my world!
p

MizzesSimmer
19th Apr 2006, 11:17 PM
Now here I am buggin again, but I was wondering what the values are that makes a hottub sit part way underground like it does? I want to make a pond out of the aquarium, but want it to sit underground like the hottub does, without ground overlapping it. Would it be the remove floor flag?

Numenor
20th Apr 2006, 08:51 AM
I don't know... BTW, there is another problem, in addition to the underground placement: the hot tub actually cuts a hole in the ground; and this doesn't happen by chance, I'm sure: the hot tub must contain something that does that.

MizzesSimmer
20th Apr 2006, 01:02 PM
Yeah, i guess it would be more complicated then I was thinking. If you look at the bhavs there is a whole, I don;t know what you would call it, section?, for placement. And ofcourse I don't know what any of those lines mean in there either. Maybe I should just test them out each on a simple object, see what happens, what does what? Oh, and thanks for answering tho, Numenor, appreciate it!

SnowStorm
20th Apr 2006, 01:12 PM
[prim 0x0002] Expression (My 0x0008 (flags) Set Flag flag# Literal 0x000F (Hide Floor))

I think this is all I had to add to the init bhav for my sunken tub to work.

MizzesSimmer
20th Apr 2006, 11:42 PM
really? that would be great, I'll try it!

phoenix_phaerie
22nd Apr 2006, 02:14 AM
I've cloned a two-tile sculpture to create a large hanging potrack, and I'd like to allow object and person intersection so that I can place it above counters and such. I am absolutely brand new to "modding", but this is all I want to do. Can anyone help me out?

MizzesSimmer
22nd Apr 2006, 02:31 AM
I think i can help with this one, please correct me Numenor if i am wrong!

First, read the beginning posts so you know how to set a new BHAV, then add this:

My - flags - (0x0008) set flag - literal - allow object and person intersection (0x0003)

and also i am not sure but I think you need this one?:

My - flags - (0x0008) set flag - literal - allow object intersection (0x0002)

I think this would work. Hope it helps!

Numenor
22nd Apr 2006, 08:11 PM
The "Allow object (and person) intersection is used when the object i placed on the floor; but in this case, the object is attached to the ceiling.

Therefore, my suggestion is to add the following line:

My - Placement Flags - Set Flag - Literal - Attached to Ceiling
(OpCode 0x0002 - operands 2A000D00000903070000000000000000)

simfantastic2
23rd Apr 2006, 08:58 PM
How do i get it so that the object will only be placeable outdoors? Thanks:)

zookini
23rd Apr 2006, 09:08 PM
I'm a beginner at BHAV editing and I am completly lost. Right now I'm trying to get my object placeable on a dining table. http://img45.imageshack.us/img45/4427/untitled22ur.th.jpg (http://img45.imageshack.us/my.php?image=untitled22ur.jpg)
This is what I see when I open up the Init BHAV. None of mine looks really like the pictures you gave. Would I click the little "Add" button to put in another one? I don't know. I'm completly lost. Is there an easier thread to start with?

IgnorantBliss
23rd Apr 2006, 09:11 PM
zookini, try checking the "special buttons" box and then click on Add Via True (or something similar that appears after you check the box) to add the new line.

Morague
24th May 2006, 12:11 AM
Aloha,

I've been doing a bit of work on the foods & I just wanted some clarification on allowed height flags.

All of the allowed height flags are set out in Food Global & I'm assuming they are inheritable by the different foods because most foods do not have an "allowed height flag" statement. But.... :) Some of them do.

So, I was wondering why some do & some don't. If they don't they seem to just use the ones from Food Global, but if they do does it meant they only use the ones stated locally or is this just duplicating what's in the global?

For example, lets say that the toaster pastry file have defined height flags of 03 & 06. Does this mean it can't use 04? The global file has 03, 04, 06 & others.

I guess what I'm wondering is are the local statements limiting or are they redundant?

Morague

Numenor
24th May 2006, 09:27 AM
Usually, the local init, in the first line, calls the semiglobal init. In this case, all the placement flags defined in the semiglobal are applied to the object, and then the local settings are applied.

In some cases, as you have correctly noticed, the additional settings are the same as the semiglobal ones; and they are just redundant.
In some other cases, the flags in the local statements are cleared, in order to prevent a placement that is usually allowed. In this case, the last instruction executed has the priority: if the semiglobal allows placement on the tables and the following private instruction prevents it, the object is NOT placeable on the tables.

If the semiglobal sets the flags 03 & 06, and the local sets again the same, plus the 04, all the three heights are allowed (local statements are partly redundant); but be sure to check if - by chance - the local statements clear a flag previously set by the semiglobal.

Morague
24th May 2006, 09:10 PM
Thank you, Numenor.

I thought that would be the case - otherwise it just doesn't make any sense.

It's good to know about clearing the flag in the local Init. Thanks!

Morague

morten8035
22nd Jun 2006, 08:02 PM
Numenor?
Can you update the pictures for the lates version of SimPE?
I think it's harder do find what i locking for if the picrue is oldder than the newest version.
But it is a step by step tutorial a place?

Here is there I came to. And that at the picture is sonething other.

http://thumbs2.modthesims2.com/images11/MTS2_319001_morten8035_simpe-morten8035.jpg

Numenor
22nd Jun 2006, 10:43 PM
Basically, there are no differences... The only difference is the icon for the Instruction Wizard: instead of an arrow, now it's a "hammer & wrench" icon (in your screenshot, it's grayed out because it is active only if tou select a line containing an "Expression" function).

The Modding Infocenter articles are not step-by-step tutorial; but anyway, here are some additional instructions:

1) First thing to do, when editing a BHAV (*especially* the Init BHAVs) is to click the Sort button. This will give you a more understandable layout of the BHAV.
2) Then, check the option "Special Buttons" (near the Add/Delete buttons): this will bring out some more useful command buttons.
3) Select the last line in the BHAV and click "Insert via true": this will add a new line (identical to the last one) properly linked to the previous.
4) Select the new line and change - if needed - the OpCode to 0x0002.
5) Click on the "Hammer&Wrench" button to access the Instruction wizard.
6) Edit the values in the wizard, according to what explained in the article.

morten8035
23rd Jun 2006, 11:30 AM
It don't work :(
I tryed to do so the smal fridge can be placed at counters, but it don't work :(

Numenor
23rd Jun 2006, 04:08 PM
The small fridge? Probaby (I said probably) it's a problem of weight.
In order to prevent "impossible" placements (for instance, a huge statue on an end table), Maxis usually uses the weight.
Try setting a very low weight for the fridge appending to the Init BHAV a line like this:

OpCode 0x0002 (Expression)
Operands: 1B000100000503070000000000000000
Translation: My Weight Set to Literal 0x0001

This solution might not work, though, because some "surface" objects (especially counters) check also the "category" of the object to be placed on them ("category" means, for instance: fridges, sinks, decorative, etc...).

One last note: placing a mini-fridge on a counter might prevent sims for using it, or the animations might look very odd; this is because the animations of the sims are tailored on the original height of the mini-fridge. But it worths a try, anyway... :)

morten8035
23rd Jun 2006, 04:12 PM
Ok :)
But can you make a step by step tutorial?
I think it's better to understand what I must do :)

trezero
27th Jun 2006, 09:27 PM
o_0 Random thought (on the mini-fridge thing)

Would it be possible use the animation for a full-sized fridge if the mini was on a counter? I'm not by any means expert at BHAVs, but there should be a way for the bhavs to determine whether or not it's on a counter, and use the corresponding Animate Sim.

T'would seem to me that the full-sized animation would look almost right. Or at least better.

Numenor
27th Jun 2006, 10:47 PM
The problem are not the BHAv, but the animations themselves. When the sim opens the mini-fridge, he performs a complex animation: bends toward the fridge, reach the handle with the hand, opens the door, takes something inside and closes the door.
Some of these animations are (as I call them) "stand-alone", i.e. the animation doesn't take care of the actual position of the object. The bending is a stand-alone animation, so that the sim will bend even if the fridge is on a counter.
On the contrary, when the sim grabs the door, it's an IK animation (Inverse Kinematic): the hand of the sim always reaches the handle, in its actual position: therefore, the sim will bend, and then his hand (in an unnatural position) will reach the handle in its upper position.
I haven't personally tested, but I'm quite sure the animation would happen as described, if the fridge is moved on a counter.

My suggestion is to clone a full-height fridge and "cut" the lower part of the mesh (while keeping the exact position of the handle); and then make this pridge placeable on the counter. This way, the final position of the handle will be the same as a normal full-height fridge, and therefore the normal fridge animations can be used without any problem.

trezero
30th Jun 2006, 04:10 PM
Ah, but then what happens when the fridge is placed on the ground, eh? Then your animations will look all funky again.


I was asking if there was a flag or something in the BHAVs that would distinguish between the fridge being on the ground or on a counter. If so, you could set up your animate BHAV to use the regular mini-fridge animation if it was ont he floor, and the regular fridge animation if it was on a counter.

The only advantage to "cutting" the bottom off a full fridge would be to use the same animation, which isn't really a factor.

Numenor
30th Jun 2006, 09:05 PM
No, there isn't such a flag, unfortunately. Animations are carefully tailored on specific dimension and position of the object.

If you notice, all the objects in the game that can be placed at different heights do not have any "direct" animation, i.e. the sim never touches the object (at most, he can remote-control it, like the radio).

trezero
3rd Jul 2006, 04:50 AM
Dang.

What about newspapers? They can be placed on both the ground and tables, and sims have no problems with them.....

How does the BHAV distinguish between ground and table there?

Numenor
3rd Jul 2006, 12:36 PM
There are generic routines in the game to allow sims to pick various objects from the ground or from a table.
Yours is a good question, though: how the sim can understand where is placed the newspaper? I will investigate it. But the main point is that, once the initial position of the object has been correctly determined, a specific animation is played (Pick up from ground / Pick up from table). And fridges have only one type of animation...

Echo
4th Jul 2006, 12:34 PM
Picking stuff up is generally done using the Reach/Grab primitive. They can use generic reach/grab animations, or choose them specifically using CT functions.

That said, if you want to be able to check in code whether something is on the ground or on top of something, you could try something like:
Verify - Object ID (Object ID=Stack Object's 0x0002 (container id))

If it returns false then it's on the ground (or out of world, but I presume that's not going to happen in an interaction!), and if it returns true then it's contained within another object. If you need to check for particular types of surfaces it can be placed on, you can just check the container id's category.

Once you know where the object is, you can pick an animation that works for that height.

Lethe_s
29th Jul 2006, 01:36 PM
hi all,

I'm probably missing something here,
the object i'm working on right now, is meant to go on walls, but 'under' any paintings, lamps etc.
I added the 'allow intersection' lines to a cloned painting, but it's not allowing other paintings to go over it.
is there a different line to allow wall stuff intersection, or am I plain doing it wrong?
here's a pic of what my init looks like

Numenor
29th Jul 2006, 02:16 PM
You should also add these lines:
- My 0x003F (exclusive placement flags) Clear Flag flag# Literal Value 0x0003 (no other object of same type) -> [3F000300FF0A03070000000000000000]
- My 0x003F (exclusive placement flags) Clear Flag flag# Literal Value 0x0002 (wall) -> [3F000200FF0A03070000000000000000]

Lethe_s
29th Jul 2006, 02:57 PM
yay! it worked!
thank you, Numenor

Claireh82
12th Oct 2006, 03:04 PM
Ok I'm trying to make a mini version of the glamour life stereo to be placed on coffee tables, counters etc. I've followed the instructions regards the bhavs (setting flags for all 5 lines and clearing the allow floor placement flag) and weight (set it to literal 0) but now my object cannot be placed anywhere, any ideas why?

Numenor
12th Oct 2006, 03:58 PM
Mmmhhh... From what you say, it seems that you did it correctly...
Will you please post here your package?

Claireh82
12th Oct 2006, 05:55 PM
Thanks Numenor

kuronue
30th Oct 2006, 05:58 AM
I see there's one for allowing it to be held by a sim-- if I were trying to make a candle that shed light that my sim could hold, that would be what I'd set, right? I've not yet begun my project mostly because I have no idea how ot go about making it holdable (and I'm still curious about the shedding light thing), hence why I've been reading this section..

Numenor
31st Oct 2006, 08:35 AM
0Clairh82 - Sorry if it took so long for me to check your object...
After several tests, fixes and so on, I finally realized something that I should have seen in the first place: your object, though reduced in size, is still a 2-tiles object.

So, I've transformed it to a 1-tile object, by deleting the additional OBJD files (the "0,0" and the (20,1") and setting the main OBJD so that it was not any more a multi-tile OBJD (if you are interested in the differences, compare the OBJD from the cheap boombox and the original OBJD of the original 2-tiles glamour stereo).
I've also deleted the OBJF and the NREF having same instance numbers as the deleted OBJD (each OBJD must have one, and one only, OBJF and NREF to go with it).

Unfortunately, the stereo still doesn't work fine, and fixing it is quite long and difficult: all the effects (audio waves, CD spinning etc.) still have the original position, as shown in the attached screenshot. I order to fix it, you should edit the translation values in the CRES (the difficult part is to find the right values to put there...).
I'm attaching the fixed package, in case you want to go on with this project.


Kuronue - Those values (allow in hand and allow on sim) are mainly used for clothing and accessories.
Yes, it is possible to create a buyable object that can be held in hand, but you need to find the right animations to make the sims go grabbing the object, and then walk around holding the object in his hand, etc.
If used without a proper animation, the "allow on sim" value lets you just to put the object somewhere in the middle of the sim's head, and the "allow in hand" value makes the object sit on the external part of the sim's hand (and the sim will also walk around without noticing to have a lit candle attached to the external part of his hand :lol: ).

Marhis
18th Dec 2006, 02:59 PM
Following this tutorial and instructions I finally succeed at modding the smartmilk maker placement, so thanks everybody :).
Now, I'm trying to do the same for the espresso maker, but for some reasons it doesn't work.
Placement mod itself is working, i.e. the espresso maker is placeable on tables and end tables as well as counters, but the maker itself works only if placed on counters: if on a table, is not clickable.

If you serve coffee while the machine is on a counter, then you move it on a table, the "take coffee" pie menu is available (but not the "clean up" one) and working, but that's all.

I've looked at coffee machine globals, but they seems to refer to community espresso cart, not the base game one.
I'm not a real modder and I don't know much about BHAV and so on, thus I'm stuck.

I'll attach the little mod I made, if someone has a clue, is very appreciated. :)

Numenor
18th Dec 2006, 09:16 PM
This is a well-known problem (at least, to me :lol: )

The espresso machine, for a reason that frankly I can't understand, explicitely check if it is placed on a counter; if not, it refuses to work. Perhaps this condition has been set becasue the animations wouldn't look good, at a different height...

If you examine the Guardian BHAV for the Take/Serve coffee interactions, you will see this test (that checks if the container of the espresso machine is in category "counters" or not). If it's not a counter, the menu option won't show up.

The global mod should include the said Guardian BHAVs, in order to work.

Marhis
19th Dec 2006, 09:28 PM
Thanks Numenor, it worked perfectly!
I chose to add categories, instead of deleting that check, just in case it's more important than it seems.

Thanks again :).

maybesomethingdunno
21st Dec 2006, 09:14 PM
Okay, I've read everything (especially posts #47 and #48) but still cannot get the effect I am wanting. I want my object to only be placed indoors. I've Set the Flag to allow the object to be placed on floor tiles and Cleared the Flag so the object is not allowed on terrain. But, this allows the object to be placed on flooring tiles that have been placed outside (such as a brick walkway through the lot's garden or something). If I set the flag to attach the object to the ceiling, Sims and non-ceiling objects can intersect it even using Echo's method for fixing the footprint in her tutorial (http://www.modthesims2.com/member/showthread.php?t=97054). Can someone please tell me what do I need to do or what I am doing wrong?

Numenor
22nd Dec 2006, 02:03 AM
I don't think that effect can be reached using the Object Placement flags; the flags can only check the height/type of the slot they are being put into, they can't check the surroundings, in order to determine if the tile is indoor or outdoor.

There are global bhavs that check the indoor/outdoor location, but they can't be called from within the Init BHAV...
After all, there is no "indoor" object in the game that can't be placed outside, and viceversa.

maybesomethingdunno
22nd Dec 2006, 03:52 AM
Well, it was worth a try. :)
I would have thought there would be something of that nature since there is the tooltip that tells you that fountains can only be placed outdoors and the burglar alarm can only be placed indoors unless the "move objects on" cheat is active. But, how the programming or inner-workings of TS2 works is not always how I would like it to work. (It would be interesting if Maxis add an "indoor/outdoor" placement in the Seasons EP for such things as the weather elements.) Thanks Numenor.

Numenor
22nd Dec 2006, 05:51 PM
Oh, I didn't remember about the fountain and the burglar alarm... Then, examining the BHAVs from those two objects might shed light on the subject. It could be something in the Init, but it may be in some other BHAV too.

EDIT
In the alarm INIT there is a line:
My 0x001E (room placement) := Literal 0x0002

while in both the UNI fountains there is (still in the INIT) the line:
My 0x001E (room placement) := Literal 0x0001

I think this is the answer to your question :)

maybesomethingdunno
23rd Dec 2006, 03:27 AM
I must do something like name a child after you, Numenor. :)
My object can now only be placed indoors. Thank you! The fact that neither of the two clearly indicates anything about indoor/outdoor requirements (unlike how "allow on terrain/floor", "wall not allowed on right", "allow object and person intersection", etc are more apparent) probably added to my inability to recognize the significance of those values. Again, thank you so much.

Numenor
23rd Dec 2006, 09:39 PM
The descriptions you mention ("allow on terrain/floor" etc) were manually added into SimPE by Peter and Inge Jones (using their own info, as well as the ones provided by Dizzy2 and other modders); they constantly are trying to "translate" everything in a readable format, but it's a huge work :)
There are still a lot of parameters that lack a description; but - if you notice - you have provided the solution, when you pointed out two objects that can only be placed indoor or outdoor: I just examined their BHAVs and excluded all the parameters that knowingly performed other things; the only two "unknown" lines were the right ones :D

morten8035
3rd Feb 2007, 09:14 PM
I tryed to do the "Super Stuffer Mantle Warmers" placeable on all tabel types, but that did not work :(
Picture: http://i127.photobucket.com/albums/p143/morten8035/simpe_objectplacement_morten8035.jpg
Have I did something wrong?

Numenor
4th Feb 2007, 12:20 AM
Morten, where are all the "My 0x0004" lines that you are supposed to add to the init?
I can't see any...

PS: Lines from 0x0C to the end are useless, you can delete them. Or are the ones that you have added? In this case, you should edit them (using the wizard, as explained in the tutorial).
If you don't want to waste time linking correctly each line, just hit the button "Inge's InitLinker", that becomes visible if you tick the "Special Button" checkbox.

morten8035
4th Feb 2007, 11:41 AM
Where do I add the 0x0004 ? http://i127.photobucket.com/albums/p143/morten8035/6993.jpg
It's lots of places to type them in and I don't see any 0x0C to delte.

Numenor
5th Feb 2007, 01:22 AM
The "0x0C" I was talking about isn't visible in your last screenshot: it's the line number, located ad the very left of each line of the BHAV.

As for where to put the 0x0004, look at the first screenshots in the tutorial (click to enlarge).
I've replaced both screenshots to reflect the recent changes in SimPE.

Now the Wizard button looks like a "hammer and screwdriver" and is located next to the FF FF FF fields.
When you open the wizard, look at the second screenshot, in the tutorial; you will have, instead of the simple "0x0004" text, a drop-down list; select the "allowed height flags" entry (which is the textual name for the "0x0004").

solfal
7th Feb 2007, 05:18 PM
In the alarm INIT there is a line:
My 0x001E (room placement) := Literal 0x0002

while in both the UNI fountains there is (still in the INIT) the line:
My 0x001E (room placement) := Literal 0x0001

The garden gnome is only placeble outdoors. Thanks to this information I was able to get my toy-train I made from the gnome to be placeble indoors, but then it lost the ability to be placed outdoors. I couldnīt find a workaround for this.

Numenor
7th Feb 2007, 09:12 PM
The "My 0x001E" value might be a "flag field": if the first bit is set (binary 01) the object is placeable outside; if the second bit is set (binary 10), it is placeable indoor. Setting both bits (binary 11 = decimal 3 = hex 0x0003) might perform the magic... :)
Perhaps! :lol:

So, try to change the BHAV line as: My 0x001E := Literal 0x0003 and see if it works...

solfal
8th Feb 2007, 05:46 PM
Great. It was magic :lol: . Now it workes both outdoors and indoors. Thank you so much!

Numenor
8th Feb 2007, 10:07 PM
I'm glad it worked! We've learned something new :)

Chrissie
3rd Mar 2007, 11:23 AM
Hi there,

first off all... my english is not the best.

I want to make a new table lamp. And I want to place it also on mantles (low tables, dining tables, coffee tables and end tables).

But I'm a newcomer for BHAVs!! And I don't know what I have to do! Please someone can help me?

Hugs and Kisses, Chrissie

Numenor
3rd Mar 2007, 12:22 PM
Then follow the directions provided in this thread: they tell you which BHAV you have to create/modify, and how. In your case, you should clone a table lamp (which should already be placeable on any table), and add a BHAV saying:
My 0x0004 Set Flag Literal Value 0x000B
(which means: Placeable on decorative slots, like mantles)

Chrissie
4th Mar 2007, 10:44 AM
Thanks a lot Numenor,

I have inserted the line but the lamp cannot place at mantles or baywindow. Please, can you have a look at the lamp?

Hugs and Kisses, Chrissie

Numenor
4th Mar 2007, 04:52 PM
The line that you have added is never actually executed, because it's not linked correctly to the previous one.

"Quick solution": check the option "Special Buttons" and then click the button "Inge's InitLinker"

Standard solution: re-read the first post, especially the FAQ where it says:
"FAQ: When editing the BHAVs, be sure that all the "True target" point to the next instruction (except the last one, that just has "Return True" as True Target)"
There, I've explained how to link each line with the following one.

Chrissie
4th Mar 2007, 05:31 PM
Thanks again :)

But I can't place the lamp (on decorative slots)...

Now each line is linked to the next! But it will not work:(

I'm afraid, that this placement will not work for lamps :blink:

Take a look please, I can't find the mistake...

Hugs and Kisses, Chrissie

ParsimoniousKate
29th Apr 2007, 11:49 AM
I've read through this thread a couple of times - its possible I've missed it but I'm trying to find the edit that will change an object so that when it is placed on O4B shelves it will stack 6 items rather than 4?

JohnBrehaut1
29th Apr 2007, 12:02 PM
That has to do with slots. Slots can hold one object, so to change it to 4, you'd need to add 2 more slots. :) There should be a tutorial by fisheyes (I think thats the right name) on how to create new slots, somewhere in these forums.

xanathon
29th Apr 2007, 12:06 PM
@Pistachio:

You may want to have a look at the Slot Enabler Package (SEP) (http://www.modthesims2.com/showthread.php?t=144021)

Echo
29th Apr 2007, 12:32 PM
Pistachio - My bad, I was thinking of this part:
My 0x0004 Set Flag Literal Value 0x000D ---> Placeable on OFB Shelves (not sure 100%)

But that's only enabling the functionality. What you actually want is in this thread:
http://www.modthesims2.com/showthread.php?t=137561
or more particularly, this:
Technical explanation
Maxis started to use a previously unused data field in the Object Data: the data field 0x004F [Unused - Shadow Brightness (Sims1)]. I've noticed that almost all the existing objects, before OFB, had this field set to zero or 0x96; while in OFB the objects have a value of 0x2 (small objects), 0x1 (medium objects) and 0x00 (large objects).
...
"0x0002 (Expression) - Stack Object's Master definition 0x004F Set to Literal 0x0002". This line overrides the value stored in the Object Data field 0x004F, "replacing" it with the value 0x2 (which, in my tests, is the only one that allows placement on business shelves).
You want to set your object to a "small object".

Sorry for the bad pointer! Mea culpa!

ParsimoniousKate
1st May 2007, 02:35 PM
I spent quite a while trying to match that up with the available options in the BHAV editor - don't know if there are 2 ways of editing these in SimPE, but the editor that the little hammer icon brings up doesn't number anything and I don't really understand the logic of how this stuff works anything like well enough to interpret so I ended up rather lost!

In the end I opted for Stack Object's Master definition Object size quantity per shelf := Literal 0x0002 - that seemed to be the closest match to your suggested instruction but it didn't work so I guess I got it wrong lol!

But, changing the value in the OBJD worked perfectly so it didn't matter, I should learn to try the easy stuff first!! Thanks Echo - literally couldn't have done it without you - this has been driving me a bit twisty for a couple of weeks now! I managed to figure out how the animation speed/texture tiling thing worked so all I need to do is figure out how to edit the light and this object *might* just be fit for publication lmao!! :jest:

knightguy82
31st May 2007, 12:28 AM
i wanted to enable fence post placement for a table lamp what code would i need to do this?

Numenor
1st Jun 2007, 12:29 AM
The easiest way is to call, from within the Init BHAV, the semiglobal 0x200D ("Init - FencePost"); calling that semiglobal will automatically fix all the flags as needed.
Your Init BHAV can be as simple as this:

[semi 0x2006] Function - Init
[semi 0x200D] Init - FencePost


However, just for your information, the peculiarity of fence lamps is that they must have set the placement flag 0x0E (Allow on fence), and they must have cleared the flags 0x01 (Allow on floor) and 0x02 (allow on terrain).

Therefore, the relevant init lines for a fence lamp are:

My 0x002A (placement flags) Set Flag flag# Literal 0x000E (allow on fence post)
My 0x002A (placement flags) Clear Flag flag# Literal 0x0001 (allow on floor)
My 0x002A (placement flags) Clear Flag flag# Literal 0x0002 (allow on terrain)

simnuts101
29th Nov 2007, 04:37 AM
OK, I'm a bit confused, and I think it may be becasue SimPE has changed since the screen shots.

I want to change an object to allow:

Object intersection (My 0x0008 Set Flag Literal Value 0x0002
Object and person intersection (My 0x0008 Set Flag Literal Value 0x0003)
Person intersection (My 0x0008 Set Flag Literal Value 0x0005)

I'm not sure first of all how to get the wizard working, and I'm not sure where to put the literal value's in, as mentioned, SimPE is different now then the screen shots presented.

Any help would be greatly appreciated!

Thank's :)

Numenor
29th Nov 2007, 08:46 AM
The screenshot is a bit old, but the current version is basically the same:

http://img156.imageshack.us/img156/8581/pic1yf0.jpg

simnuts101
29th Nov 2007, 03:16 PM
Ah, thank you Numenor!

Your going to hate me! lol But I'm assuming the "My" goes into the wizard, but again, the latest version is quite different from the screen shots here. I'm not sure if I use the "Old Style". Also, does the literal value go into to OpCode? Again assuming it does just looking for confirmation. I should be able to figure it out from there.

Thanks again! :)

Simnuts

Numenor
29th Nov 2007, 04:12 PM
I'm not going to hate anyone, lol :lol:
Once you have opened the wizard, it appears like this:

http://img250.imageshack.us/img250/575/pic1xy4.jpg (http://img250.imageshack.us/my.php?image=pic1xy4.jpg)

As you can see, the only differences are:
1) I now use Vista, and therefore the visual look is different;
2) the last field, in the bottom-right corner, now contains a descriptive name, instead of the less-understandable hex numbers. This "translation" already occurred long ago for the "0x0004" that became "allowed height flags".
So, when you read in the tutorial, for example,
My 0x0004 Set Flag Literal Value 0x0002 ---> Placeable on low tables
you have to open the wizard and select from the pull-down lists the correct values, until you read:
My // allowed height flags
Set Flag
Literal // low table

There is no need at all to manually write anything into the "operands" fields.

IMPORTANT: the descriptive labels appear correctly only if you have checked the option "Attribute picker", visible in the screenshot above.

simnuts101
29th Nov 2007, 06:07 PM
Thank so much Numenor! I have Vista, and I just could not figure out how to get around, but you have cleared this up now!

Thanks again, I really appreciate you taking the time! :)

Simnuts

simnuts101
30th Nov 2007, 06:27 AM
Hi Numenor:

Sorry to bother you again!

This is how my "instruction wizard" looks when I click on the small tool icon. I've gone through my setting thinking I may not have something checked off properly, or maybe I don't have the latest plugin? It look's like I have the latest version of PJSE Coder Plugin, but thought I would just show you.

Thanks again for everything! :D

Simnuts

edit: What I am working on is the Shining Kinight Floor Lamp, and I noticed that under the Light - On and Light - Off, the wizard comes up differently again. Could it be that the "Function - Init" just can't be edited? I'm looking to allow object and person intersection. Thanks again!

http://i44.photobucket.com/albums/f6/Simnuts/Num01.jpg

http://i44.photobucket.com/albums/f6/Simnuts/Num02.jpg

Echo
30th Nov 2007, 11:30 AM
See the "opcode" box two lines up and slightly to the left of the button you pressed? You need to change that to say 0x0002. That's "Expression". (See the "FAQ" line under the list of all the possible values for details. :) )

Numenor
30th Nov 2007, 03:51 PM
Echo is absolutely right (of course ;) ). You know, the Wizard pops up different screens, depending on the "opcode" currently set: if the opcode is 0x0002 (Expression), you are presented the screen depicted in my screenshots; if the opcode is another BHAV (in your screenshot, it's 0x2006 - Function Init), the wizard only allows you to set the parameters to pass to that BHAV.

In other words, the wizard is not related to the BHAV that you are currently editing, but to the single line that you are editing.

simnuts101
30th Nov 2007, 06:41 PM
:faceslap: Thanks guys! This is so new to me right now, but I now understand!!

You guys are the BEST!! :D Appreciate all the help! ;)

Simnuts

edit: Just wanted to let you know it worked GREAT! :D Thanks again!! :rofl:

ParsimoniousKate
7th Dec 2007, 06:45 PM
Just wondering, is there a way to simultaneously allow 'normal' small object placement options with the option to sit it on a fence post, only I seem to find that allowing fence post in the height flags precludes every other type of placement?

Thayet
11th Mar 2008, 04:13 AM
Thank you so much for this! It took me a few tries (couldn't figure out what the sign/symbols for 'assign to' was) but now I can place books cloned from bookshelves on every type of surface. I'm so happy, thank you so much!

Charisa1114
27th Jul 2008, 03:17 AM
Any idea on how to make objects placeable on roofs only?

Menaceman44
8th Sep 2008, 01:00 PM
I'm so glad that I found this thread. I just hope I've followed everything correctly now. I'm about to go test my object in game.
I may be back later some time to ask questions about something else I have planned relating to this if I can't figure it out on my own first.


EDIT: Well that didn't seem to go to plan. I must have done something wrong as I couldn't place my object at all. I'll have to start again anyway as I must have cloned my base object wrong because all of the animations had been lost.

ash05
12th May 2009, 02:05 AM
I'm new to modding, and was was wondering how to turn a wall hanging (specifically the "Past Reflections Mirror" on its side.

Phaenoh
6th Jul 2009, 11:22 PM
No matter what I, Leesester, or cmomoney do we can not seem to make my little windmill placeable on anything other than the ground. Anyone else have any ideas?

joninmobile
10th Sep 2009, 09:51 PM
Can't you just extract something that would be placed on tables, delete the other BHAVs and add them with the extracted BHAVs for your normally not for tables package?

Echo
11th Sep 2009, 08:48 AM
jon, no, not really. BHAVs control a lot more about an object than just where they're placed. If you pull out all the BHAVs from one file and substitute in others, what you'll end up with is a mess. :) If you really want to make an object from a table into an object that isn't from a table, you're much better off cloning an object which isn't from a table, then importing in the mesh/textures/etc over the top.

Numenor
11th Sep 2009, 05:58 PM
Phaenoh, I can't see any line like "Expression (My 0x0004 (allowed height flags) Set Flag flag# ..." in your Init BHAV. Without those lines, the "Allowed heigh flag" has a value of zero, which allows the object to be placed only on the ground. You should add several lines like the one above, each one setting a specific flag (end table, dining table, etc.)

joninmobile
12th Sep 2009, 04:06 AM
jon, no, not really. BHAVs control a lot more about an object than just where they're placed. If you pull out all the BHAVs from one file and substitute in others, what you'll end up with is a mess. :) If you really want to make an object from a table into an object that isn't from a table, you're much better off cloning an object which isn't from a table, then importing in the mesh/textures/etc over the top.

This is what I'm trying to do, scale down and make the immobile chimes sculpture from the base game sit on tables and be used as a centerpiece. I've tried everything listed here the weight factor and everything. And I actually read through all pages. But I'm still unable to do this. And for some reason it keeps showing up as a two tile (with green in buy mode) instead of a one tile like I want it to be, and it will sit on the ground, but not on surfaces using this method. Now echo, your idea of cloning and replacing the textures and the GMDC didn't work either because I got the correct image of the chimes instead of the vase which I cloned it from, but it was all black in the blue preview screen in simPE, and yes I did import the texture in milkshape, and regroup.

Echo
12th Sep 2009, 07:45 AM
Any object which has more that one tile can only be placed on the ground. If you just want the immobile chimes, then that shouldn't be too hard since it's not animated. Clone the vase of flowers (the one which can go on tables) and export the mesh as 3ds. (Don't export the whole gmdc, just the mesh). Save a copy of the texture images as well. Go to the cloned vase and import the mesh as a "replacement" for the vase. That should change the group names so they are the same as they were in the vase. Now use "Build DXT" to import the textures over the top of the vase ones and you should be done.

While it is possible to shrink a two tile object back down to one tile and change its placement flags, it's really very messy and easy to get wrong. Transferring meshes is much, much easier. :)

joninmobile
12th Sep 2009, 06:16 PM
Well it finally worked! Thanks so very much Echo, I should point out, for those who would like to try this, that the repository method works fine when using your mesh replacement method as well.

destiny1331
1st Sep 2010, 11:56 PM
I hope this thread still gets answered. Is it possible to edit the likes of a laptop so that it sits on any surface or is it bound by the conventions of the game to only be able to sit on desks and dining tables.

I tried several times now to make the changes described in this thread as well as a similar one I found on here to do with the same thing but with a tv.

If its not possible then is there a work around?

thanks in advance.

Echo
2nd Sep 2010, 12:56 AM
It should be possible to change its placement, but I expect it would become unusable on other surfaces. Sims need to sit down on a chair relative to the laptop's container object, and only desks and dining tables provide chair slots in those locations.

destiny1331
2nd Sep 2010, 11:58 AM
Hi Echo,

Thanks for the reply, it makes sense to see it in writing. I suspected that it might have something to do with the container object / game conventions.

You don't happen to know if it would be possible to clone something like a vase and then make it look like a laptop. I known it sounds daft even typing it, but unless there is another kind of work around I am thinking it might be the next course of action to try.

Echo
3rd Sep 2010, 01:42 AM
That would certainly look like a laptop on another surface, but it wouldn't actually work as a laptop (obviously!). If you only want it for pictures though, then that's fine. :)