インターフェイス(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");
}
}
}
このサンプルについての質問や、不具合がある場合には
こちらのコメント欄をご利用ください。
これは乱数で行き先を決めているだけです
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");
}
}
}
このサンプルについての質問や、不具合がある場合には
こちらのコメント欄をご利用ください。
