インターフェイス(sample)

以下はサンプルスクリプトです
これは乱数で行き先を決めているだけです

integer LMSG_S_INFO_0 = 101;
integer LMSG_R_INFO_0 = 102;
integer LMSG_S_IDLE = 103;
integer LMSG_R_START = 104;
integer LMSG_R_STOP = 105;
integer LMSG_S_STOP = 106;
integer LMSG_R_RSLT_S = 107;
integer LMSG_R_RSLT_C = 108;
integer LMSG_R_RSLT_F = 109;

integer LMSG_S_PANEL_MIN = 1;
integer LMSG_S_PANEL_MAX = 15;
integer LMSG_S_PANEL_NOP = 16;
integer LMSG_R_PANEL_NOP = 110;

integer gl_i_last_move = 16;
string gl_s_last_info ="";

default
{
    state_entry()
    {
        llMessageLinked(LINK_THIS,LMSG_S_IDLE,"start",NULL_KEY);
    }
    link_message( integer sender_num, integer num, string str, key id )
    {
        if(num==LMSG_R_START){        //  準備OK
            llMessageLinked(LINK_THIS,LMSG_S_INFO_0,"end",NULL_KEY);

        }else if(num==LMSG_R_STOP){  //  強制停止
            llOwnerSay("STOP");

        }else if((num==LMSG_R_INFO_0)||(num==LMSG_R_PANEL_NOP)){  //  infomarion
            if (str!="")
                gl_s_last_info = str;

   // 受信したCSVをリストにして乱数で並べ変え
            list l_tmp = llListRandomize(llCSV2List(gl_s_last_info),1);

   // 前回送信した番号の位置を調べ
   // 二回連続で送らない
            integer i_idx = llListFindList(l_tmp,[(string)gl_i_last_move]);
            gl_i_last_move = llList2Integer(llDeleteSubList(l_tmp,i_idx,i_idx),0);

            llMessageLinked(LINK_THIS,gl_i_last_move,"move",NULL_KEY);

        }else if(num==LMSG_R_RSLT_F){  //  NG
//            llOwnerSay("NG");
            llMessageLinked(LINK_THIS,LMSG_S_INFO_0,"end",NULL_KEY);

        }else if(num==LMSG_R_RSLT_S){  //  OK
//            llOwnerSay("OK");
            llMessageLinked(LINK_THIS,LMSG_S_INFO_0,"end",NULL_KEY);

        }else if(num==LMSG_R_RSLT_C){  //  COMPLETE
//            llOwnerSay("END");

        }
    }
}


このサンプルについての質問や、不具合がある場合には
こちらのコメント欄をご利用ください。

コメント

このアーカイブについて

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。