モール店などに設置する本店への Landmark Giver スクリプトデス。
ランドマークを渡した数をカウントします(*´∀`*)
オブジェクトオーナー以外の人がタッチすると、コンテンツに入ってるランドマークを渡します。
オブジェクトオーナーがタッチした場合は、オーナーメニューが表示されて
『スクリプトをリセットする』、『コンテンツ内のLMを受け取る』、『カウント数を見る』
のいずれかを選択できます。
コンテンツ内に入れられるランドマークは1個だけです。
Alicia Stella Design サンがWebで公開されているスクリプトを改造しました。
Alicia Stella Design (トップページ)
Alicia Stella Design – Free Script – Landmark Giver – (スクリプトのページ)
/////////////////////////////////////////////////////////////////////////////////
string HOVER_TEXT = "Touch for a LM to Main Shop";
vector TEXT_COLOR = <1.0, 1.0, 1.0>;
integer GIVE_COUNT;
integer LISTEN_HANDLE;
key OWNER_KEY;
integer TOTAL_LANDMARK;
string LM_NAME;
check_content() {
TOTAL_LANDMARK = llGetInventoryNumber(INVENTORY_LANDMARK);
if (TOTAL_LANDMARK == 0) {
llOwnerSay("Could not find a Landmark in the content.");
}
else if (TOTAL_LANDMARK > 1) {
llOwnerSay("This script can have only 1 Landmark in the content. You currently have " + (string)TOTAL_LANDMARK + " Landmarks. Please delete the excess Landmarks.");
}
else if (TOTAL_LANDMARK == 1) {
LM_NAME = llGetInventoryName(INVENTORY_LANDMARK, 0);
llOwnerSay("You have 1 Landmark to give away. The Landmark is ' " + LM_NAME + " '.");
}
}
default {
on_rez(integer start_param) {
llResetScript();
}
state_entry() {
GIVE_COUNT = 0;
OWNER_KEY = llGetOwner();
llOwnerSay("Be sure to only have 1 Landmark in the content.");
llOwnerSay("Touch to Owner's menu : 'Reset Script', 'Give LM to Owner' and 'to see Count how many LM given away'.");
llSetText(HOVER_TEXT, TEXT_COLOR, 1.0);
check_content();
}
changed(integer change) {
if (change & CHANGED_INVENTORY) {
llSleep(2.0);
check_content();
}
}
touch_start(integer total_number) {
if (llDetectedKey(0) != OWNER_KEY) {
GIVE_COUNT = GIVE_COUNT + 1;
llGiveInventory(llDetectedKey(0), llGetInventoryName(INVENTORY_LANDMARK, 0));
}
else if (llDetectedKey(0) == OWNER_KEY) {
LISTEN_HANDLE = llListen(998, "", OWNER_KEY, "");
llDialog(OWNER_KEY, "LM Giver Owner's MENU :", ["Reset", "Get LM", "Count"], 998);
llSetTimerEvent(30.0);
}
}
listen(integer ch, string name, key id, string message) {
if (message == "Reset") {
llResetScript();
}
else if (message == "Get LM") {
llGiveInventory(OWNER_KEY, llGetInventoryName(INVENTORY_LANDMARK, 0));
}
else if (message == "Count") {
llOwnerSay((string)GIVE_COUNT + " landmarks have been given away.");
}
llListenRemove(LISTEN_HANDLE);
llSetTimerEvent(0.0);
}
timer() {
llListenRemove(LISTEN_HANDLE);
llSetTimerEvent(0.0);
}
}
/////////////////////////////////////////////////////////////////////////////////
(ノ∀`)ここにコピペインデントのタブが消えちゃう。。。
ので、ちょっと見づらいかと思いますが。///// ~ ///// をまるっとコピペしてもらえれば
そのまま使えますので、よろしくデス(*´∀`*)
上から一行目と二行目の
string HOVER_TEXT = “Touch for a LM to Main Shop”;
vector TEXT_COLOR = <1.0, 1.0, 1.0>;
ここで、フローティングテキストの文字と色を指定しています。
表示するテキストを変える時は、ここを変更してください。
その他、もともとのAlicia Stellaサンのと比べて、かなり長くなっちゃってますが(ノ∀`)
オブジェクトのコンテンツ内のチェック(ランドマークがいくつ入ってるかナド)と、オーナーメニューを
付けただけなんですけどねw
コピペするのメンドクセーって方は、Little Town 本店の上空に置いておきますので
お時間のある時に拾ってみてください(*´∀`*)
Little Town 本店
店内のテレポーターで Sky Floor へ飛んでください。
デフォルトの木箱で置いてあります。