Rezzer

Written by Kitsune

 

Written by Innula Zenovka

 

To make this work, set up the rezzer at whatever rotation you want, and place the object you want to rez at the correct relative position. You can either then read their respective positions and rotations by dropping the following simple script into each one and copy-pasting the results into the main script, or, if prefer, you can just read the numbers from the rotation boxes in the prims' edit windows and let the script convert the vector to rotation. 

Either way, enter them in the rezzer script, and there you are.

 

 

//Sample rezzer script by Innula Zenovka Jan 27 2010
// released under the "do what the hell you want with it" licence

vector rezzer_pos = <68.4949, 151.2232, 25.6000>;  // the position of the rezzer when first you set it up
rotation rezzer_rot; // you could read the rotation by script, enter it here and comment out the next line
vector rezzer_rot_window = <180.05,0.00,52.00>;  // the numbers in the rotation box in the edit window

vector child_pos = <133.67170, 156.75260, 1751.52900> ; // the position of the rezzed object at first set up
rotation child_rot;// you could read the rotation by script, enter it here and comment out the next line
vector child_rot_window =<320.25,11.05,257.00>;// the numbers in the rotation box in the edit window

vector offset;
default
{
    state_entry()
    {
        
        rezzer_rot = llEuler2Rot(rezzer_rot_window*DEG_TO_RAD); 
        // you could comment this out and use the following line, to which it is equivalent
        // rezzer_rot = <-0.50000, -0.50000, 0.50000, 0.50000>;
        child_rot = llEuler2Rot(child_rot_window*DEG_TO_RAD);
         // you could comment this out and use the following line, to which it is equivalent
        //child_rot =<0.27363, 0.39548, 0.12470, 0.86785>;
        offset = offset/rezzer_rot;
    }

    touch_start(integer total_number)
    {
        llRezAtRoot(llGetInventoryName(INVENTORY_OBJECT,0),
        llGetPos()+offset*llGetRot(),
        ZERO_VECTOR,
        (child_rot/rezzer_rot)*llGetRot(), 
        99);
    }
}

 

 

The Helper Script:

 

//reads position and rotation
default
{
    state_entry()
    {
        llOwnerSay((string)llGetPos()+" "+(string)llGetRot());
        llRemoveInventory(llGetScriptName());
    }

  
}