Hi,
for the first one (you said prim - not object):
llGetPostion() gives you the current position. To move up you need the z-component of the vector and add your desired offset like this:
vector startpos;
vector newpos;
integer offset;
startpos = llGetPos();
newpos = <startpos.x, startpos.y, startpos.z + offset);
Since I cannot access SL now I cannot give you a real script for it. But the above code segment should help you on your way.
Second:
I need a bit more info - which axis to rotate around?
Let us assume we're talking prims and not objects again and you'd want to rotate around the z axis with each touch by 90 *more* degrees.
So - first we need the quaternion for a 90° rotation - no SL access so pure guesswork here ...
rotation currentrot;
rotation z_by_90;
rotation newrot;
z_by_90 = llEuler2Rot(<0,0,90> * DEG_TO_RAD);
currentrot = llGetRot();
in order to rotate *in addition* to your current rotation you have to divide or multiply the desired rotation by the rotation you currently have - English is a foreign language for me - I hope I put this right. Division or multiplication defines the direction (positive or negative) of the rotation.
newrot = z_by_90 / currentrot or newrot = z_by_90 * currentrot
Then you set the new new rotation
llSetRot(newrot)
done!
If you loop this by touches, llGetRot() will return the already rotated position so you will get your additional 90° for free by just using the code unaltered in the loop. After 4 rotations you're back where you started ....
No guarantee for this working as written without tests in SL but I have a good feeling
