2022/07/17

箱の使い方まとめ

ベネチア SIM のイベントで広告看板をさげた飛行船 Airship Go Round Signboard を飛ばすコントロールボックス/箱の使い方をまとめました。

  • イベント会場の近くに箱を置く
  • 箱に広告画像を貼る

基本これだけで OK!
…詳しく書いたページです:
Airship Go Round Signboard Box: How to Use

2022/07/16

メニューに表示/調整

看板飛行船を自動で出す箱ですが 時間などコントロール情報はオブジェクトの説明のところに書いてあって変更するときはこの説明を書き直します。

ただ編集モードに慣れてないとどこを変えればいいのか迷ったりもするので もっと簡単にタッチでメニューを出してボタンで調整できるようにしました。

  • 開始や終了時刻を前後にずらす
  • 位置(X/Y/Z)の調整
  • 飛行船のスピードを速く/遅く
  • 手動で開始または終了

実際に変更しなくても または変更する前に 現在の状態をメニューのメッセージ部分で確認することもできます。

メニューのメッセージに現在の状態を表示するスクリプト:

list GoroundMsg = [ // もとのメッセージ
"Going Round: %%", // "%%"部分を数値で置き換える
"Position: %%, Speed: %%",
"Adjust End Time, Position, or Speed:"
];
string setMenuMsg(list msgs,list replaces) {
  string msg = "\n"+llDumpList2String(msgs,"\n"); // 改行でつなぐ
  list context = llParseString2List(msg,["%%"],[]); // 置き換わる"%%"で分解
  return mergeList2String(context,replaces); // 置き換えるリストと混ぜる
}
list getDesc2List() {
  string desc = llGetObjectDesc(); // オブジェクトの説明
  return llParseString2List(desc,[" "],[]); // 説明を空白で分解
}
string mergeList2String(list context,list replaces) { // 2つのリストを混ぜる
  integer n = llGetListLength(context);
  integer i = 0;
  string merged = "";
  for (; i<n; ++i) merged += llList2String(context,i)+llList2String(replaces,i);
  return merged; // 混ぜた文字列
}

メッセージ文の流れは決めておいて箇所箇所を数値データと置き換えます。
でその置き換わる数値データは箱オブジェクトの説明からとるわけです。

ページ: Airship Go Round Signboard Box: How to Use