4.2 Communication (Dialogs, Messsging, HTTP, XML-RPC)

LSL有很多種發出訊息的方式

第一個是Chat

基本上以距離來畫分的話有這四種函數可以用

llWhisper      10 公尺(耳語)
llSay            20 公尺
llShout       100 公尺(留言)
llRegionSay  (該地區均可聽到)

其餘有關Chat的函式還有底下:

傳送 接收
llSay
llOwnerSay
llShout
llWhisper
llRegionSay
llDialog
llListen
llListenRemove
llListenControl
Event listen

透過傳送和接收便能對應到不同的函式

然後像是

mySay(該物件和該物件擁有者聽到)
mySayOwner(只有該物件擁有者聽到)

都是只能自己聽到的

那以比較常使用的llSay來說

llSay(0,"Hello, Avatar!");

他的地一個參數是頻道

到時候不同的頻道只有聽該頻道的listener可以聽見

那頻道的話範圍是從-2147483648 到 2147483647.也就是integer的值

那需要注意的地方是頻道0是公開(public)的 也就是在這個頻道發送訊息 所有人都慧聽到

要做其他物件觸發時 盡量使用私人(private)頻道

另外還有一個地方是偵錯頻道 預設有參數 用DEBUG_CHANNEL這個即可代表

發送後會顯示在除錯欄位

第二種是Instant Message

他是將一個訊息送到特定Key的人身上

基本上用法格式如下

llInstantMessage(key,string);

這樣擁有該key的人就會接收到該string

傳遞過程中會延遲2秒

三 email

llEmail( string address, string subject, string message );

將擁有第二欄標題和第三欄內容的信件送到第一欄的信箱位置去

傳遞過程中會延遲20秒

四 HTTP

1.函數

llEscapeURL 傳回一串含有選擇的跳脫字元之UTF-8 編碼的字元

llHTTPRequest 從一個HTTP伺服器要求一個資訊

llLoadURL 用內建瀏覽器讀取網頁

llUnescapeURL 傳回一串不含有選擇的跳脫字元之UTF-8 編碼的字元

llHTTPResponse 對 script 發出的要求作出回應.

llGetFreeURLs 傳回可以回應內部HTTP的URL網址數

llGetHTTPHeader 傳回一個sccript要求的HTTP的標頭的值

llReleaseURL 釋放一個不會再被使用的 URL 位置.

llRequestURL 要求一個HTTP內部的非安全性URL位置.

llRequestSecureURL 基本上跟 llRequestURL 一樣不過要求的是安全性的位置 (https://開頭的)

2.事件

http_request 當 script 接收到一個 HTTP 的要求時觸發.

http_response 當一個 HTTP 要求完成時觸發.

3.其他

透過Get, Post限制: 2048 char

五 XML-RPC

是一種對遠端系統送出程序呼叫的標準

目前支援此標準的有 php, perl, Java, VB, curl等

基本上在SL中當作Server會用到下面兩個函數來送出
llRemoteDataReply
llSendRemoteData

接收時會觸發remote_data事件

那操作的時候主要是利用這三個函數

llCloseRemoteDataChannel
llOpenRemoteDataChannel
llRemoteDataSetRegion 

 

六 物件和物件之間的溝通

主要函式

llListen(integer channel,string name, key speakerID,string message)

channel為頻道 message為傳給其他物件的字串

Ex

在接收端地物件上寫

state_entry() 

{

    llListen(18000,"", NULL_KEY,"")

}

listen(integer channel,string name, key id,string message)

{

     llOwnerSay("Object get message is "+message)//顯示該message

}

在傳出端物件寫上 

llSay(18000,"Hi")

結果為從接收端物件傳出Object get message is Hi的結果