-
텔레포트 스크립트 2웹프로그래밍/LSL(세컨드라이프) 2021. 5. 28. 15:15반응형
이곳에 오래전에 등록해 놓은 "텔레포트 스크립트 기본형" 은
해당 오브젝트에 앉아서 위치를 이동하는 스크립트 였고이곳에 새로 남기는 스크립트는
오브젝트를 클릭하여
원하는 목적지를 다이얼로그 박스에서 선택한뒤
아바타만 바로 옮겨버리는 스크립트 이다.
(추가로, 그룹원을 판단하여 그룹원일 경우에만 실행하도록 한다)key teleportee; //클릭한 아바트의 키값 integer elListener; //다이얼로그의 대답을 듣는 리스너 vector goPos; //목적지 위치 벡터값 default { state_entry() { llSay(0, "Touch to teleport"); } touch_start(integer total_num) { //기존에 설정된 리스너가 있을수 있으니 지워준다 llListenRemove(elListener); //클릭한 아바타의 키값을 받아온다 teleportee = llDetectedKey(0); if (llDetectedGroup(0)) { //그룹원일 경우 // 새로운 리스너 등록 elListener = llListen(-99, "", teleportee, ""); //다이얼로그 보여줌 llDialog( teleportee, "\n스튜디오 이동", ["현관", "2층", "3층"], -99); } else { //그룹원이 아닐경우 llSay(0, "Dont't touch me..."); } } //다이얼로그 버튼을 누르면 listen(integer chan, string name, key id, string msg) { if (msg == "현관") { goPos = <50, 204, 62>; } else if (msg == "2층") { goPos = <50, 204, 65>; } else if (msg == "3층") { goPos = <50, 204, 68>; } //텔레포트 퍼미션을 물어본다 llRequestPermissions(teleportee, PERMISSION_TELEPORT); //리스너를 지운다 llListenRemove(elListener); } run_time_permissions(integer perm) { //텔레포트 퍼미션이 허용되면 if (PERMISSION_TELEPORT & perm) { //아바타를 해당 목적지로 텔레포트 시킨다. llTeleportAgent(teleportee, "", goPos, <0.0, 0.0, 0.0>); } } }
반응형'웹프로그래밍 > LSL(세컨드라이프)' 카테고리의 다른 글
이전버전의 .blend 파일을 열때 텍스쳐가 보이지 않는 경우 (0) 2021.04.28 최근의 오픈심(오픈시뮬레이터)의 설치 방법(0.8.1 버전부터) (0) 2015.10.28 연결된 프림 오브젝트간 대화(통신)-llMessageLinked() (0) 2015.08.05 주변의 오브젝트, 아바타 등 사물을 검색하는 스크립트 - llSensor (0) 2015.08.04 프림(오브젝트)과 대화하기 - llListen (0) 2015.08.03