De DigiWiki.
//Camera Follower Script
//llGetCameraPos & llGetCameraRot Example
//By Nika Rugani
integer perm_track = 0x400;
float second_check = 0.1;
vector object_offset = <2,0,0>; //Offset of the cameras position where the object will set itself
integer die_channel = 0;
string die_command = "/die";
quickPosRot(vector pos, rotation rot)
{//This way you don't have the 0.2 second sleeps from llSetPos and llSetRot
llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_POSITION, pos, PRIM_ROTATION, rot]);
}
default
{
on_rez(integer a)
{
llResetScript();
}
state_entry()
{
llRequestPermissions(llGetOwner(), perm_track);
}
run_time_permissions(integer permission)
{
if(permission == perm_track)
{
llSetTimerEvent(second_check);
llListen(die_channel, "", llGetOwner(), "");
}
else
{
//llResetScript(); //Remove comment to loop the process of requesting permissions if user deny's permission
//llDie(); //Remove comment to kill the object if user deny's it
}
}
listen(integer channel, string name, key id, string str)
{
str = llToLower(str);
if(str == die_command)
{
llDie();
}
}
timer()
{
vector c_pos = llGetCameraPos(); //Get Users Camera Position
rotation c_rot = llGetCameraRot(); //Get Users Camera Rotation
c_pos = (c_pos+object_offset*c_rot); //Apply the offset to the position
quickPosRot(c_pos, c_rot); //EXECUTE ORDER!
}
}