arz Nitelyってシステム屋どうよ?

SecondLifeとWebとの融合を模索するセミプロWeb屋の挑戦

レンタルボックス開発記録 Act.07

2008年09月23日 – 15:48

結局、通信系は独立させることにしました

HTTPリクエストとレスポンス、メール送受信機能だけを持たせ
様々なスクリプトで使い回しができるモジュールです

具体的には…

integer uuExtComm(string str){
    list command = [
        // to ExtComm Module
        "SEND_HTTP_REQUEST",
        "SEND_MAIL",
        "GET_MAIL",
        // from ExtComm Module
        "EVENT_HTTP_RESPONSE",
        "EVENT_GET_MAIL"
    ];
    return llListFindList(command, [str]);
}

というユーザ関数を作っておいて
各イベント内から

llMessageLinked(LINK_THIS, uuExtComm("SEND_HTTP_REQUEST"),
                             "POST|http://~~|param1=boo&param2=hoo&param3=woo", "");

// 長いので2行に折り返し表示させていますが実際は1行です

と、リンクメッセージでモジュールを発動させるという具合です

 

かなり昔にも書きましたが
リンクメッセージでは、コマンドを文字列で送るのはもったいないので
stringとkeyはパラメータ用に取っておき、integer型でコマンドを送るようにしてます

 

さて、次はカレンダーの実装です
(これがいちばん面倒だったりする…)



色コード変換(16進数 → LSL)

2008年05月18日 – 22:09

【2008-09-23】you Xiaoさんから処理を簡略化させる方法を教えて頂き大幅に書き換えました。ありがとうございました。
vector uuHEX2Vector(string HEX);

16進数表記のカラーコードをvectorに変換するユーザ関数

例:uuHEX2Vector(”#FFFFFF”) → 返り値=<1.00000, 1.00000, 1.00000>

// Color Conversion :: HEX2Vector :: 2008-09-23
vector uuHEX2Vector(string HEX){
    vector color;
    color.x = (float)("0x" + llGetSubString(HEX, 1, 2)) / 255;
    color.y = (float)("0x" + llGetSubString(HEX, 3, 4)) / 255;
    color.z = (float)("0x" + llGetSubString(HEX, 5, 6)) / 255;
    return color;
}