-
텔레포터 스크립트 기본형웹프로그래밍/LSL(세컨드라이프) 2015. 8. 1. 01:23반응형
아바타를 지금있는 이곳에서 원하는 곳으로
순간이동 시켜주는
가장 기본적인 형태의 “텔레포터” 스크립트 입니다.스크립트를 프림안에 넣고
프림에 “앉으면” 텔레포트 됩니다.// :CATEGORY:Teleport // :NAME:teleport_anywhere_script // :AUTHOR:Anonymous // :CREATED:2010-01-10 05:20:56.000 // :EDITED:2013-09-18 15:39:06 // :ID:871 // :NUM:1231 // :REV:1.0 // :WORLD:Second Life // :DESCRIPTION: // teleport anywhere script.lsl // :CODE: //The target location .. change this to where you want to end up (x, y, z) vector gTargetPos = < 246, 181, 415 > ; // Text for the “pie menu” string gSitText = ”Teleport”; // Define channel number to listen to user commands from integer myChannel = 123; // No need to edit the global variables below // Return position for tp object - no need to edit vector gStartPos = < 0, 0, 0 > ; // Key for avatar sitting on object, if any key gAvatarID = NULL_KEY; // If you don’t enable this the teleport object will be left at the destination. integer gReturnToStartPos = TRUE; // This routine do the actual transport warpPos(vector destpos) { //R&D by Keknehv Psaltery, 05/25/2006 //with a little pokeing by Strife, and a bit more //some more munging by Talarus Luan //Final cleanup by Keknehv Psaltery // Compute the number of jumps necessary integer jumps = (integer)(llVecDist(destpos, llGetPos()) / 10.0) + 1; // Try and avoid stack/heap collisions if (jumps > 100) jumps = 100; // 1km should be plenty list rules = [PRIM_POSITION, destpos]; //The start for the rules list integer count = 1; while ((count = count << 1) < jumps) rules = (rules = []) + rules + rules; //should tighten memory use. llSetPrimitiveParams(rules + llList2List(rules, (count - jumps) << 1, count)); } default { state_entry() { // Put the teleport text in place of the Sit in the pie menu llSetSitText(gSitText); // Read the objects position so it can return to it after teleporting gStartPos = llGetPos(); // Sit the avatar on the object llSitTarget( < 0, 0, 1 > , ZERO_ROTATION); // Define commands to listen for llListen(myChannel, ”“, ”“, ”“); } on_rez(integer startup_param) { llResetScript(); } listen(integer chan, string name, key id, string cmd) { if (cmd == “show”) { llSetAlpha(1, ALL_SIDES); } else if (cmd == “hide”) { llSetAlpha(0, ALL_SIDES); } else if (cmd == “reset”) { llResetScript(); } else if (cmd == “help”) { llSay(0, “Usage: ”); llSay(0, “”); llSay(0, “show Make teleporter visible”); llSay(0, “hide Make teleporter invisible”); llSay(0, “reset Resets teleporter script”); llSay(0, “help This text”); } } changed(integer change) { if (change & CHANGED_LINK) { // Find id for avatar sitting on the object gAvatarID = llAvatarOnSitTarget(); // If someone sits on it… if (gAvatarID != NULL_KEY) { // Move avatar to destination warpPos(gTargetPos); // Pause for 1 second llSleep(1); // Unsit avatar llUnSit(gAvatarID); // Wait 1 second more llSleep(1); // If teleporter should return to original position…. if (gReturnToStartPos) { // … send object to its start position warpPos(gStartPos); } } } } } // END //
[또다른 텔레포트 스크립트 보기]
그룹원만 허용하며,
다이얼로그로 목적지를 선택하여 텔레포트 시키는 스크립트반응형'웹프로그래밍 > LSL(세컨드라이프)' 카테고리의 다른 글
프림(오브젝트)과 대화하기 - llListen (0) 2015.08.03 애니메이션 만들기 와 업로드 기본 (0) 2015.08.02 아바타의 표정을 좀더 세밀하게 조정하기 - 세컨드라이프&오픈심 (0) 2015.07.31 표정 허드(Facial Expressions HUD) 만들기 - 세컨드라이&오픈심 (0) 2015.07.30 내가만든 쉐입 내려받기/올리기 - 세컨드라이프 또는 오픈심 (0) 2015.07.29