osTeleport Agent

Creating scripts
Dot Macchi
Posts: 219
Joined: Sun Dec 23, 2012 12:15 pm
Has thanked: 75 times
Been thanked: 207 times

Re: osTeleport Agent

Post by Dot Macchi »

Mykyl wrote:Also, can anyone explain to me how to figure out the vector for "vector direction = <0,0,0>; " - how do I figure out how to make the avatar face a particular direction?
I'll see if I can find out what vector to use for different compass directions. It'll probably involve inworld experimentation rather than reading about vectors and quaternions.
Ohn Lang
Posts: 142
Joined: Sun Dec 23, 2012 5:11 pm
Has thanked: 38 times
Been thanked: 67 times

Re: osTeleport Agent

Post by Ohn Lang »

/me scratching head

I've tried all sorts of variations in the last hour or so, and if I am using it to teleport between worlds I always wind up facing east no matter what. If I am using it to teleport within a one region world, my lookat isn't changed at all, I just face the direction I was facing when i clicked the teleport object. I swear I had this working a few months ago. At the time, I was making a basic teleporter between floors. And I had set the look at to point the avatar toward the main area of the given floor. I swear it worked then!!
User avatar
Marstol Nitely
Posts: 480
Joined: Mon Dec 24, 2012 1:42 am
Has thanked: 1019 times
Been thanked: 432 times

Re: osTeleport Agent

Post by Marstol Nitely »

I believe you. ;)
These users thanked the author Marstol Nitely for the post:
Ohn Lang
Graham Mills
Posts: 1314
Joined: Sun Dec 23, 2012 2:26 pm
Has thanked: 1134 times
Been thanked: 1142 times

Re: osTeleport Agent

Post by Graham Mills »

Well, llMapDestination doesn't do anything with the lookat vector either so I guess it's at least consistent with that. On the other hand, the new LSL llTeleportAgent does use lookat so maybe that works.

http://opensimulator.org/wiki/LSL_Status/Functions
Ohn Lang
Posts: 142
Joined: Sun Dec 23, 2012 5:11 pm
Has thanked: 38 times
Been thanked: 67 times

Re: osTeleport Agent

Post by Ohn Lang »

Graham Mills wrote:Well, llMapDestination doesn't do anything with the lookat vector either so I guess it's at least consistent with that. On the other hand, the new LSL llTeleportAgent does use lookat so maybe that works.

http://opensimulator.org/wiki/LSL_Status/Functions
Unfortunately, according to the wiki, llTeleportAgent only works for the owner of the object. :(
Graham Mills
Posts: 1314
Joined: Sun Dec 23, 2012 2:26 pm
Has thanked: 1134 times
Been thanked: 1142 times

Re: osTeleport Agent

Post by Graham Mills »

Ohn Lang wrote:Unfortunately, according to the wiki, llTeleportAgent only works for the owner of the object. :(
What a waste! Looks like it's been implemented that way in OpenSim too: http://opensimulator.org/mantis/view.php?id=6341
Did you check?
Ohn Lang
Posts: 142
Joined: Sun Dec 23, 2012 5:11 pm
Has thanked: 38 times
Been thanked: 67 times

Re: osTeleport Agent

Post by Ohn Lang »

No, i had assumed OS would implemented it in the same way as SL for backward compatibility. LL handicapped several of the newer functions which made them quite useless IMO. I think in some cases, they had to because after creating the functions they learned that there were serious security issues, griefing-made-easy style.
User avatar
Marstol Nitely
Posts: 480
Joined: Mon Dec 24, 2012 1:42 am
Has thanked: 1019 times
Been thanked: 432 times

Re: osTeleport Agent

Post by Marstol Nitely »

I use the osTeleport Agent for a "telemap" on my region. It works well for teleporting others around to different regions in my world. I made a HUD using it and it took me a while to figure out why the HUD only worked for me (because of the osTeleportAgent). The osTeleportOwner seems to work well in the Telemap HUD.

Tried changing vectors on OsTeleportAgent and I'm still looking NE. I should have remembered this before, but it's been a while since I placed them. When I placed my teleporters, I wanted to have the avatar be able to find them easily when they landed, so I played with the vectors. Finally ended up placing them in relation to where the avatar was looking instead of changing the direction the avatar faced.
User avatar
Constance Peregrine
Posts: 2349
Joined: Sun Dec 23, 2012 11:35 am
Has thanked: 2778 times
Been thanked: 1482 times

Re: osTeleport Agent

Post by Constance Peregrine »

I may be way off base as I do not script but only sometimes can modify, so I dont really understand all this for the most part, but perhaps what is needed is another tp script? In any case, I use this grid map tp script often. If it isnt what is needed, sorry to interrupt, pls proceed without me-))

Code: Select all

/*//-- v7-D Enhanced Landmark Mapper v1.2f --//*/
 
/*//-- Requirements:
 3 linked Prims (minimum)
 1 Named "prev" (this will be your previous landmark button)
 1 Named "next" (this will be your next landmark button)
 any other prim in the object will trigger the map destination for the
 currently displayed Landmark name. Recommended to rename landmarks.
//*/
 
integer gIdxTgt; /*//-- Index of Target --//*/
list    gLstLMs; /*//-- List of Landmarks --//*/
list    gLstLoc; /*//-- List of Locations--//*/
 
key     gKeySec;       /*//-- Key for Security checking dataserver calls --//*/
float   gFltTmt = 5.0; /*//-- Float for Timeout (dataserver calls & inventory changes) --//*/
 
default{
    state_entry(){
        llOwnerSay( "Rebuilding Database" );
        gIdxTgt = llGetInventoryNumber( INVENTORY_LANDMARK );
         /*//-- Grab Landmark Names For Display --//*/
        if (gIdxTgt){
            while(gIdxTgt){
                gLstLMs = (list)llGetInventoryName( INVENTORY_LANDMARK, --gIdxTgt ) + gLstLMs;
            }
             /*//-- Get First LM Location --//*/
            gKeySec = llRequestInventoryData( llList2String( gLstLMs, gIdxTgt = (gLstLMs != []) - 1 ) );
             /*//-- (gLstLMs != []) == llGetListLength( gLstLMs ) --//*/
             /*//-- negative indices would've been nice if they were supported by the Req.Inv.Data call --//*/
            llSetTimerEvent( gFltTmt );
        }else{
            gLstLMs = (list)"Out Of Order, No Landmarks Present";
            gLstLoc = (list)<128.0, 128.0, 0.0>;
            state sReady;
        }
    }
 
    dataserver( key vKeySec, string vStrLoc ){
         /*//-- verify we're getting our data, not another scripts --//*/
        if (gKeySec == vKeySec){
             /*//-- Store Location Vector --//*/
            gLstLoc = (list)((vector)vStrLoc + llGetRegionCorner()) + gLstLoc;
            if (gIdxTgt){
                 /*//-- Get Next LM Location --//*/
                gKeySec = llRequestInventoryData( llList2String( gLstLMs, --gIdxTgt ) );
                llSetTimerEvent( gFltTmt );
            }else{
                 /*//-- Clear Timeout Because Timers Cross States --//*/
                llSetTimerEvent( 0.0 );
                state sReady;
            }
        }
    }
 
    timer(){
        if (gKeySec){
            llOwnerSay( "Dataserver Response Timed Out, auto retry in " + (string)((integer)gFltTmt) + " seconds" );
            gKeySec = "";
        }else{
            llResetScript();
        }
    }
}
 
state sReady{
    state_entry(){
         /*//-- Set The Initial Display --//*/
        llSetText( llList2String( gLstLMs, gIdxTgt ), <1.0, 0.0, 0.0>, 1.0 );
        llOwnerSay( "Ready" );
    }
 
    touch_end( integer vIntNul ){
         /*//-- Check if a prim named "prev" or "next" was touched --//*/
        integer vIntTst = llSubStringIndex( "prevnext", llGetLinkName( llDetectedLinkNumber( 0 ) ) );
        if (~vIntTst){
             /*//-- Update Index Target --//*/
            gIdxTgt += ((vIntTst > 0) - (vIntTst == 0));
             /*//-- ((vIntTst > 0) - (vIntTst < 0)) same as: -1 for "prev", +1 for "next" --//*/
 
             /*//-- Update Display --//*/
            llSetText( llList2String( gLstLMs, (gIdxTgt %= (gLstLMs != [])) ), <1.0, 0.0, 0.0>, 1.0 );
             /*//-- (gLstLMs != []) == llGetListLength( gLstLMs ) --//*/
             /*//-- "gInCnt %= " allows us to wrap our references so they don't go out of range --//*/
        }else{
             /*//-- Trigger map for any other touched prim in this object --//*/
            llMapDestination( llGetRegionName(), llList2Vector( gLstLoc, gIdxTgt ) - llGetRegionCorner(), ZERO_VECTOR );
        }
    }
 
    changed( integer vBitChg ){
        if (CHANGED_INVENTORY & vBitChg){
             /*//-- give the user more time to add new LMs before we recompile our database lists. --//*/
             /*//-- We could check the count too, but don't in case the change was a change of name --//*/
            llSetTimerEvent( gFltTmt );
        }
    }
 
    timer(){
        llResetScript();
    }
}
These users thanked the author Constance Peregrine for the post:
Marstol Nitely
Laissez faire et laissez passer, le monde va de lui même!
My little sounds store https://www.kitely.com/market?store=2040306

Ephemeral wanderer...
User avatar
Marstol Nitely
Posts: 480
Joined: Mon Dec 24, 2012 1:42 am
Has thanked: 1019 times
Been thanked: 432 times

Re: osTeleport Agent

Post by Marstol Nitely »

I don't know much more than how to modify scripts either Minethere. Always have the feeling the real coders want to say "that's not what we're talking about Marstol, hurry along and let the adult scripters talk..." :)
Post Reply