@D_P_
_object setVectorUp [0,0,0]
This doesn't use a valid vector, so it really should raise an error or, more likely for BIS, just have no effect. Without going into vector mathematics at great length (Google could be your friend here, but that rather depends on your mathematical background), a vector is a direction in 3D space with [x,y,z] being the magnitude of the vector in all three directions (in the game, this is [East, North, Up]). Thus, [0,0,0] points in no direction at all, [0,0,1] points up, [0,0,-1] points down, [1,0,0] points East, [-1,0,0] points West, [1, 1, 0] points NE, etc.
@Mandoble
cross1 setVectorUp [vectorUp cross1 select 0,vectorUp cross1 select 1,-(vectorUp cross1 select 2)]
Mirrors the object in the X-Y plane, rather than turning it upside down. Thus this would only turn the item upside-down correctly if its current up vector was [0,0,1] (object up is world up, so right way up) or [0,0,-1] (object up is world down, so upside-down). Wouldn't work if the object was on any kind of a slope or otherwise wasn't perfectly aligned to up/down axis...
Diagramatically:
[T = top of object, B = bottom of object, Z axis is up on the page]
T
\
\
B
becomes
B
/
/
T
To properly invert an object, so that its "head" is were its "feet" used to be, shouldn't it be?
cross1 setVectorUp [-(vectorUp cross1 select 0), -(vectorUp cross1 select 1), -(vectorUp cross1 select 2)]
Thus:
T
\
\
B
becomes
B
\
\
T
So, I hope that clears things up (or that people don't jump on me too hard if I've got it wrong ;P).