それでは、Linden Script でのプログラムからです。
key httpRequestId; key owner; default { state_entry() { llSay(0, "Hello, Avatar!"); } touch_start(integer total_number) { key obj = llGetKey(); owner = llGetOwner(); key creator = llGetCreator(); string objName = llKey2Name(obj); string ownerName = llKey2Name(owner); string creatorName = llKey2Name(creator); integer i = 0; for ( ; i < total_number; i++) { key avator = llDetectedKey(i); if (avator != owner && avator != creator) { llInstantMessage(avator, "Sorry, you cannot touch me."); } else { llInstantMessage(avator, "I am " + objName + " (" + (string)obj + ")."); llInstantMessage(avator, "I am owned by " + ownerName + " (" + (string)owner + ")."); llInstantMessage(avator, "I was created by " + creatorName + " (" + (string)creator + ")."); llInstantMessage(avator, "You are " + llDetectedName(i) + " (" + (string)avator + ")."); httpRequestId = llHTTPRequest("http://kazmuzik.net:8080/sltest/test.jsp", [], ""); } } } http_response(key requestId, integer status, list metadata, string body) { if (requestId == httpRequestId) { llInstantMessage(owner, llStringTrim(body, STRING_TRIM)); } } } |
ローカルで、前回と同様の情報を instant message で送った後、私の自宅にある iMac++ に HTTP Request を送っています。
この HTTP Request を受け付けて、処理する簡単な JSP です。
<% String objectKey = request.getHeader("X-SecondLife-Object-Key"); String objectName = request.getHeader("X-SecondLife-Object-Name"); String ownerKey = request.getHeader("X-SecondLife-Owner-Key"); String ownerName = request.getHeader("X-SecondLife-Owner-Name"); java.util.Formatter f = new java.util.Formatter(); f.format("%s (%s) touched by %s (%s)%n", objectName, objectKey, ownerName, ownerKey); %> <%= f.toString() %> |
これを Tomcat に deploy してやります。
$ cd /opt/tomcat/webapps $ mkdir sltest $ cd sltest $ vi test.jsp (上記のファイル) $ |
JSP なので、これだけです。
実際に、Second Life で、上記の Linden Script が走っているオブジェクト(HTTP sample object) をクリックするか、右クリックの円メニューから Touch を選択すると、次のようなメッセージを受け取ります。
[01:23] HTTP sample object: I am HTTP sample object (12345678-90ab-cdef-1234-567890abcdef). [01:23] HTTP sample object: I am owned by Kaz Muzik (abcdef12-3456-7890-abcd-ef1234567890). [01:23] HTTP sample object: I was created by Kaz Muzik (abcdef12-3456-7890-abcd-ef1234567890). [01:23] HTTP sample object: You are Kaz Muzik (abcdef12-3456-7890-abcd-ef1234567890). [01:23] HTTP sample object: HTTP sample object (12345678-90ab-cdef-1234-567890abcdef) touched \ by Kaz Muzik (abcdef12-3456-7890-abcd-ef1234567890) |
最後のラインが、実際に、JSP が作成したものです。
Tags: programming, second_life