セカンドライフプラネット

セカンドライフのスクリプト言語(LSL)をプラネットします。3DCG で物体をプラネットしたりもします。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

スクリプトTips制作(日本時間表示)

日本時間を表示するLSL(Linden Script Language)のTips を説明します。
建造ウィンドウで適当なプリムを制作し、以下のLSL-Tips を組み込んでください。

スクリプトを使用するだけであればスクリプトの内容を理解する必要はありません。
(Tipsをコピー&ペーストするだけで動きます)

●日本時間表示のスクリプト
integer JISA = 9;
integer time;
integer hours;
integer minutes;
integer seconds;

update()
{
    time = (integer)llGetGMTclock();
    hours = time / 3600;
    minutes = (time - hours*3600) / 60;
    seconds = time - hours*3600 - minutes*60;
    hours = (hours + JISA) % 24;
}

default
{
    state_entry()
    {
        llSetTimerEvent(1);
    }

    timer()
    {
        update();
        llSetText((string)hours + ":" + (string)minutes + ":" + (string)seconds,
                    <1.0,1.0,1.0>,1.0);
    }  
}


●時計の配付
スクリプト組込済みのオブジェクト(時計)を無料配付しています。サイズやテクスチャーなど自由に変更できます。スクリプトも見られるので、いろいろと改良を加えてみてください。
Game Forum:http://slurl.com/secondlife/Game%20Forum/210/204/22

セカンドライフ スクリプト Tips 日本時間


スクリプトを改造したり、他のスクリプトと合成したりする際にはスクリプトの内容を理解しておく必要があります。以下で、スクリプトの内容を説明します。なお、説明はスクリプトの基礎知識(本ブログのスクリプト超初心者講座、等)を前提としています。

●定数
グリニッジ標準時と日本時間との時差(JISA)は9時間です。整数型で時差(JISA)を定義します。
 integer JISA = 9;


●グローバル変数
 time:グリニッジ標準時を秒単位で保存するための変数です。
 hours:時間を保存するための変数です。
 minutes:分を保存するための変数です。
 seconds:秒を保存するための変数です。


●関数
http://rpgstats.com/wiki/index.php?title=Ja:functions

 float  llGetGMTclock()
http://rpgstats.com/wiki/index.php?title=LlGetGMTclock
グリニッジ標準時を得る関数です。

 llSetTimerEvent(float sec)
http://rpgstats.com/wiki/index.php?title=LlSetTimerEvent
パラメーターで指定した秒数毎に、timerイベントを発生させます。
タイマーを止めるときはパラメーターに0秒を指定します(例2)。
例1:llSetTimerEvent(3.0) // 3秒毎にtimerイベントを発生
例2:llSetTimerEvent(0.0) // タイマーを止める

 llSetText(string text, vector color, float alpha)
http://rpgstats.com/wiki/index.php?title=LlSetText
プリム上に文字列を表示する関数です。
1番目パラメーターで表示する文字列を指定します。
2番目パラメーターで色を指定します。
3番目パラメーターでアルファー値を指定します。
例1:llSetText(“ABC”, <0.0,0.0,1.0>, 1.0) // 文字列”ABC”を青色で表示
例2:llSetText(“XYZ”, <1.0,1.0,1.0>, 0.5) // 文字列を白色半透明で表示


●ユーザー定義関数
http://rpgstats.com/wiki/index.php?title=UserDefinedFunction

 update()
update関数にパラメーターはありません。関数がよばれた時の日本時間を計算します。

 time = (integer)llGetGMTclock();
変数timeにグリニッジ標準時を秒単位で代入します。
例えば、グリニッジ標準時で10時の場合、36000秒となりtimeに36000が代入されます。

 hours = time / 3600;
time / 3600により、秒単位のtime から時間(hours)を計算します。
例えば、time が8000秒であれば、8000 / 3600 = 2.222…ですがhours は整数型なので小数点以下がカットされ、hours には2が代入されます。

 minutes = (time - hours*3600) / 60;
 seconds = time - hours*3600 - minutes*60;

これらの計算はhours計算と同様に考えられます。

 hours = (hours + JISA) % 24;
グリニッジ標準時と日本時間の時差は9時間なので、時差(JISA)を足しています。
そのままでは、24以上になるので24の剰余を計算(%)しています。
 例えば、30 / 24 は1余り6なので、30 % 24 は6となります。

以下、参考資料
http://rpgstats.com/wiki/index.php?title=LlGetWallclock


●イベント
http://rpgstats.com/wiki/index.php?title=Ja:events

 state_entryイベント
http://rpgstats.com/wiki/index.php?title=State_entry
1秒毎のタイマーを設定します。

 timerイベント
http://rpgstats.com/wiki/index.php?title=Timer
update関数を呼び出します。
「時間:分:秒」の書式のテキストを表示します。


●考察・課題
このプログラム何かおかしいですよね^^ タイマー使っているのに1秒ごとにグリニッジ標準時から日本時間を計算しています。タイマー使っているのだから日本時刻の計算は頻繁に行う必要はないはずです。タイマーが正確に動くのであれば、グリニッジ標準時から日本時間を計算するのはrezの際だけでOKなわけです。

60秒に一度だけグリニッジ標準時から日本時間を計算し、それ以外はタイマーでカウントするプログラムに修正してみてください。

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/12/29(土) 19:09:34|
  2. 話題
  3. | トラックバック:0
  4. | コメント:1
<<スクリプトTips制作(UUIDセンサー) | ホーム | LSL-Tips制作講座をはじめます>>

コメント

セカンドライフ挑戦中

遂にセカンドライフ挑戦しました!
アバター作成が難しくて大変ですが、今年は何とかセカンドライフを極めたいです!
  1. 2008/01/02(水) 18:36:07 |
  2. URL |
  3. ケンタ@セカンドライフ #-
  4. [ 編集]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://gameworkshop.blog106.fc2.com/tb.php/57-4a790833
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Aa

Author:Aa
SLプラネットへようこそ!
Koenjiで物づくりしてます。
皆さん、遊びにきてください。

ショップのSLURL

ショップ(白屋)のSLURLです。メタバーズの高円寺にあります。商品を展示販売しています。

メタバーズ、高円寺、白屋

最近の記事

月別アーカイブ

カテゴリー

ブログ内検索

おすすめ商品!


パソコンの横において、疑問点をサッと調べられます!...



オブジェクト制作を基礎から解説!販売方法も詳しく記述!...



すぐに使えるサンプルプログラムを多数収録!...



関数の詳しい記述あり!辞書のように便利!...

ゲームPC

ゲーム用パソコンならドスパラへ!Galleriaシリーズが大人気!

リンク

このブログをリンクに追加する

スポンサードリンク

スポンサードリンク

最近のコメント

最近のトラックバック

RSSフィード

FC2カウンター

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。