Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float VEL=0.3;
- list gLocations=[
- "Pos1",<10, 30.43, 24.96>,
- "Pos2",<153.781, 162.724, 21.3398>,
- "Boneflower",<155,155,127>,
- "IMD",<155,168,138>,
- "Cyber Apoc",<164,52,27>,
- "Pirate Kitty",<36,32,21>,
- "Telehub",<155,108,30>,
- "Shrine",<29,178,27>,
- "Moon",<184,143,147>
- ];
- rotation r0;
- string gAnimation;
- // Text for the "pie menu"
- string gSitText="Teleport";
- // If you don't enable this teh teleport object will be left at the destination.
- integer gReturnToStartPos=TRUE;
- // Alpha for hovertext
- float gTextAlpha=0.5;
- // colour for hovertext
- vector gTextColour=<1.0,1.0,1.0>;
- /////////////////////////////////////////////////////////////////
- //Runtime variables. You should leave these alone.
- vector gStartPos=<0,0,0>;
- key gAvatarID=NULL_KEY;
- integer gChannel=574368374;
- vector gTargetPos=<0,0,0>;
- //////////////////////////////////////////////////////////////////
- // Function for instant intra-sim movement
- warpPos( vector d, float vel )
- {
- //vector direction=llVecNorm(d - llGetPos());
- rotation r=getRotToPointAxisAt(<1,0,0>,d);
- llRotLookAt(r,1.0,1.0);
- vector norm=llVecNorm(d-llGetPos());
- while(llVecDist(llGetPos(),d)>10)
- llSetPos(llGetPos()+norm*vel);
- llSetPos(d);
- }
- rotation getRotToPointAxisAt(vector axis, vector target) {
- return llGetRot() * llRotBetween(axis * llGetRot(), target - llGetPos());
- }
- //////////////////////////////////////////////////////////////////
- // Main codeblock.
- default
- {
- state_entry() {
- llSetSitText(gSitText);
- gStartPos = llGetPos();
- llSitTarget(<0,0,0.1>,ZERO_ROTATION);
- gChannel=(integer)llFrand(1000000000)+1000000000;
- llSetText(" ",<1,1,1>,1);
- // llSetText(llList2String(gLocations,0),gTextColour, gTextAlpha);
- gTargetPos=(llList2Vector(gLocations,1));
- llListen(gChannel,"",NULL_KEY,"");
- r0=ZERO_ROTATION; llSetRot(r0); //llGetRot();
- }
- on_rez(integer start_param){
- llResetScript();
- }
- changed(integer change){
- if(change & CHANGED_LINK)
- {
- gAvatarID = llAvatarOnSitTarget();
- if(gAvatarID != NULL_KEY)
- {
- llSetAlpha(0.0,ALL_SIDES);
- llRequestPermissions(llAvatarOnSitTarget(), PERMISSION_TRIGGER_ANIMATION);
- }
- else
- {
- integer perm=llGetPermissions();
- if ((perm & PERMISSION_TRIGGER_ANIMATION) && llStringLength(gAnimation)>0)
- llStopAnimation(gAnimation);
- llSetAlpha(1.0, ALL_SIDES);
- gAnimation="";
- }
- }
- }
- run_time_permissions(integer perm)
- {
- if (perm & PERMISSION_TRIGGER_ANIMATION)
- {
- llStopAnimation("sit");
- gAnimation=llGetInventoryName(INVENTORY_ANIMATION,0);
- llStartAnimation(gAnimation);
- //llSetAlpha(0.0, ALL_SIDES);
- //llSetText("",<0,0,0>,0.0);
- list options=[];
- integer i =0;
- for(i=0;i<llGetListLength(gLocations);i=i+2){
- options+=[llList2String(gLocations,i)];
- }
- llDialog(gAvatarID,"Choose target location",options,gChannel);
- }
- }
- listen(integer channel, string name, key id, string message){
- integer index=llListFindList(gLocations,[message]);
- if (index==-1) return;
- gTargetPos=llList2Vector(gLocations,index+1);
- warpPos(gTargetPos,VEL);
- llSleep(1);
- llUnSit(gAvatarID);
- llSleep(1);
- warpPos(gStartPos,10);
- llSetRot(r0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement