レターや残り時間は箱の上にフローティングテキストで表示しますが、テクスチャで表示するように改造してボード型にするとLucky boardのようになります。更にタッチを調べる部分をsitに変えて椅子を付けたらLucky chairのような装置になります。更に更に、椅子をトイレに変えたら。。。って、もういいですかねwww
// Lucky object
integer interval=5; // レターチェンジ間隔(分)
integer time; // 残り時間用
string letter="-?ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // ラッキーレターに使う文字
string ll; // ラッキーレター用
string tmp; // 前回のレター記憶用
string prize;
win(key id, string name)
{ // 当たったときの処理
llSay(0,name+", you win!!"); // 当たりー♪
llGiveInventory(id,prize); // アイテムを渡す
init(); // initへ
}
init()
{
llSetText("OFF",<1,1,1>,1.0);
prize=llGetInventoryName(INVENTORY_OBJECT,0); // コンテンツ内の1つ目のオブジェクト名
ll=""; // レターをクリア
time=0; // 残り時間を0に設定
if (prize) llSetTimerEvent(0.1); // 賞品が入ってたら0.1秒後にタイマー
else llSetTimerEvent(0); // 入ってなかったらタイマー停止
}
default
{
state_entry()
{
init(); // initへ
}
changed(integer change)
{
if (change & CHANGED_INVENTORY) { // コンテンツ内が変化したらinit
init();
}
}
touch_start(integer total_number)
{
if (ll == "") return; // レターが設定されてないときはリターン
key id=llDetectedKey(0); // タッチしたアバターのキー
if (id == "" || id == NULL_KEY) return; // キーが取得できなかったらリターン
string name=llDetectedName(0); // タッチしたアバターの名前
if (ll == "?") win(id,name); // ラッキーレターが?だったら当たり
else {
string s=llGetSubString(name,0,0); // アバター名の最初の1文字
integer num=FALSE;
if (s == "0" || (integer)s > 0) num=TRUE; // 文字が数字かをチェック
if (ll == llToUpper(s)) win(id,name); // 文字を大文字に変換してラッキーレターと一致したら当たり
else if (ll == "0-9" && num) win(id,name); // 文字が数字でラッキーレターが0-9だったら当たり
else llSay(0,"Sorry, your name begins with "+s+"."); // それ以外はハズレ;;
}
}
timer()
{
llSetTimerEvent(60); // タイマーを60秒にセット
if (time < 1) { // 残り時間が1以下になったらレター変更
time=interval; // 残り時間を再設定
if (ll == "") ll=tmp;
while (tmp == ll) { // 前回出たレターと被らないように
integer i=llFloor(llFrand(llStringLength(letter))); // 乱数
ll=llGetSubString(letter,i,i); // 乱数からラッキーレターを決定
if (ll == "-") ll="0-9"; // レターが-だったら 0-9にする
}
tmp=ll; // 今回出たラッキーレターを記憶
llSay(0,"The lucky letter is "+ll+"."); // チャット表示
}
// フローティング表示
llSetText("If your name begins with "+ll+",\ntouch to get a prize!\n"+(string)time+" minute(s) left.",<1,1,1>,1.0);
time--; // 残り時間を減算
}
}
賞品のオブジェクト(オブジェクト以外は箱詰めして)をコンテンツに入れて、レターチェンジの数値を変えて使ってくださいね^^
10月10日追記: あ、箱型プリムのまま使うとは限らないですよね。。。てことで、タイトルもラッキーオブジェクトに変えましたw
10月14日追記: 一応タッチしたアバターのキーが取得できないときリターンさせるようにしました。
0 件のコメント:
コメントを投稿