//multi teleport 1.3
//Pablo Pharmanaut
//4-1-2008
 
string sPos1 = "Position 1";
vector vPos1 = <your,vectors,here>;
string sPos2 = "Position 2";
vector vPos2 = <your,vectors,here>;
string sPos3 = "Position 3";
vector vPos3 = <your,vectors,here>;
string sPos4 = "Position 4";
vector vPos4 = <your,vectors,here>;
string text = "Multiteleport\n1. Sit on me.\n2.Say destination.\n3. Stand up.";
integer Handle;
 
default {
    state_entry() {
        llSitTarget(<0.0, 0.0, 1.0>, ZERO_ROTATION);
        llSetText(text,<0,1,0>,1.0);
        Handle = llListen(0, "", NULL_KEY, "");
        llListenControl(Handle,FALSE);  //turns off Listen; better for CPU load
    }
 
    changed(integer change) {
        if ((change & CHANGED_LINK)==CHANGED_LINK) {
            llSleep(0.5);
            if (llAvatarOnSitTarget() != NULL_KEY) {
                llSay(0, llKey2Name(llAvatarOnSitTarget())+ ": Say Destination (1-4)"); //shows name of avatar sitting on prim
                llListenControl(Handle, TRUE);
                }
            else if (llAvatarOnSitTarget() == NULL_KEY){
                llSay(0, "Thank you.");
            }
        }
    }
 
    listen(integer channel, string name, key id, string message) {
        if (message == "1") {
            llSetPos(vPos1);
            llSay(0, sPos1);
            llSetTimerEvent(2.0);
        }
        else {
            if (message == "2") {
                llSetPos(vPos2);
                llSay(0, sPos2);
                llSetTimerEvent(2.0);
 
            }
            if (message == "3") {
                llSetPos(vPos3);
                llSay(0, sPos3);
                llSetTimerEvent(2.0);
             }
            if (message == "4") {
                llSetPos(vPos4);
                llSay(0, sPos4);
                llSetTimerEvent(2.0);
             }
        }
    }
 
    timer() {
        llSetPos(vPos1);  //change this value for return position
        llResetScript();
    }
}