[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

|



さて、前置きが長くなりましたが、ただいま気まぐれに製作しているものの一つ「砂袋な椅子」の机には その "お尻かくして・・・" なポーズを幼少時代へのマイ・オマージュ?として付けてみました。
|
- 注意 - お決まりの話しですが、ココに記載の情報利用に伴う一切の不利益についてOrange Forestは責任を負いません。本記事の内容は自己責任で参照下さい。バグ指摘、質問は歓迎です。 |
//---------------------------------------------------------------------------------
// showcurpos - Show current position
// $Id: showcurpos.lsl 682 2010-06-12 15:54:53Z myuse $
//---------------------------------------------------------------------------------
vector gPrevPos = ZERO_VECTOR;
default {
state_entry () {
// Show object after build
llSetAlpha(1.0, ALL_SIDES);
llSetText("", ZERO_VECTOR, 0.0);
// HUDを装着したままスクリプトを編集した場合の初期化処理
if (llGetAttached()) {
llSetAlpha(0.3, ALL_SIDES);
llSetTimerEvent(1.0);
}
}
// HUDを装着した場合、on_rez → attach の順番でイベントが発生する。
// HUDを地面に置いた場合は on_rez のみ発生
// HUDを不透明にして動作停止
on_rez (integer rezParam) {
// Show object after rez
llSetAlpha(1.0, ALL_SIDES);
llSetText("", ZERO_VECTOR, 0.0);
llSetTimerEvent(0.0);
}
attach (key id) {
if (id == llGetOwner()) {
// HUD をオーナーが装着した
// → 半透明にして1秒毎に動作開始
llSetAlpha(0.3, ALL_SIDES);
llSetTimerEvent(1.0);
gPrevPos = ZERO_VECTOR;
}
else {
// HUDを取り外した
// → 不透明にして動作停止
llSetAlpha(1.0, ALL_SIDES);
llSetText("", ZERO_VECTOR, 0.0);
llSetTimerEvent(0.0);
}
}
// 1秒毎に呼び出されるHUD表示更新処理
timer () {
vector pos = llGetPos();
integer ground = (integer)llGround(ZERO_VECTOR);
integer water = (integer)llWater(ZERO_VECTOR);
integer parcel = llGetParcelFlags(pos);
string out;
integer abs;
vector col = <0.0, 0.5, 1.0>; // blue
// Check if moved ?
if (gPrevPos == pos) {
// アバターが移動していない場合は何もしないで終了
return;
}
else {
gPrevPos = pos;
}
// Get absolute altitude
if (ground > water) {
abs = ground;
}
else {
abs = water;
}
abs = ((integer)pos.z) - abs;
out = llGetRegionName() + "/" +
(string)((integer)pos.x) + "/" +
(string)((integer)pos.y) + "/" +
(string)((integer)pos.z) + "\nAbsAlt: " + (string)abs + "m";
// HUDの文字の色の設定
// 赤 : 進入禁止区域
// 橙 : Rez不可
// 青 : Rez, 進入OK
// イマイチ正しく機能しない場合あり
if (parcel & (PARCEL_FLAG_USE_ACCESS_GROUP |
PARCEL_FLAG_USE_ACCESS_LIST |
PARCEL_FLAG_USE_LAND_PASS_LIST)) {
col = <1.0, 0.0, 0.0>; // red
}
else if ((parcel & PARCEL_FLAG_ALLOW_CREATE_OBJECTS) == 0) {
col = <1.0, 0.5, 0.0>; // orange
}
// HUD表示
llSetText(out, col, 1.0);
}
}
|