2010年07月04日

メッセージを書き込むスクリプト

よく、チャットで発言したらその内容がテキストフローティングで見ることが
出来るスクリプトが有りますが、これと、同じ機能で、書き込みできるのが
オーナーだけでなく、誰でもできるスクリプトを探しています。

具体的には、七夕の短冊やクリスマスツリーのカードに入れて、来て頂いた
方に自由にメッセージを書き込んで貰いたいと思ってます。

できれば、上記の機能に加えて、クリックしたらメッセージの内容が
チャットで見れたりするといいのですが、ご存知ありませんか?



同じカテゴリー(スクリプト関連)の記事画像
オブジェクトのリンクとタッチで開く扉
自動チャットを止めたい
テレポートするとアニメーションが解除される
同じカテゴリー(スクリプト関連)の記事
 テクスチェンジのHUDについて (2015-07-01 04:51)
 モール用のプリムカウンターを探しています (2014-11-29 20:09)
 連続するアニメーションの処理 (2014-08-24 03:23)
 オブジェクトの上にフローティングテキストを出す。 (2014-08-22 16:46)
 チャットログの盗聴について (2014-02-03 03:43)
 椅子に座った後で位置調整できるスクリプト (2013-03-24 16:37)

Posted by メビウス  at 14:38 │Comments(4)スクリプト関連

この記事へのコメント
integer handle;
string nushi;
string negai;

default
{
state_entry()
{
llSetText("願い事募集中", <1, 1, 0>, TRUE);
}

touch_start(integer total_number)
{
if(nushi == "" | nushi == llDetectedName(0))
{
nushi = llDetectedName(0);
handle = llListen(0, nushi, "", "");
llWhisper(0, "1分以内に、ねがいごとをチャットで書いてください。");
llSetTimerEvent(60);
}
else
{
llWhisper(0, "★ "+negai+" ★ by "+nushi+"");
}
}

listen(integer channel, string name, key id, string message)
{
float x = llFrand(0.3) + 0.7;
float y = llFrand(0.3) + 0.7;
float z = llFrand(0.5) + 0.5;
negai = message;
llSetText("ミ★", <x, y, z>, TRUE);
llListenRemove(handle);
llSetTimerEvent(FALSE);
}

timer()
{
llResetScript();
}
}


//ここまで



ひとつのプリムに1コ願い事できる。
願い事をした人が再びタッチすると、訂正できる。
他人がタッチすると、どんな願い事が込められているかをチェックできる。
Posted by しゃだだ at 2010年07月05日 00:11
ご返答いただき
ありがとうございました^^
Posted by メビウス at 2010年07月05日 00:15
もう解決済みかも知れませんが・・・
願い事をフローティングテキストで表示してかつタッチでメッセージも流したい場合は、上記のスクリプトの「llSetText("ミ★", <x, y, z>, TRUE);」という部分を下記のように変えてみても良いと思いますよ。

integer LEN = 50;//表示最大文字数
integer LINE = 10;//テキストの折り返し文字数
string text;
//LENを越えたら文末を省略
if(message>LEN){
message = llGetSubString(message,0,LEN)+"...";
}
//LINEごとに改行
while(message>LINE){
text += llGetSubString(message,0,LINE) + "\n";
message = llDeleteSubString(message,0,LINE);
}
text += "by "+nushi;
llSetText(text, <x, y, z>, TRUE);

フローティングテキストの表示は256バイトくらいまでだった気がするので、ある程度の長さを超えた場合は省略するようにしてあります。
Posted by natsu at 2010年07月06日 11:30
すみません、一行間違えました;

integer LEN = 50;//表示最大文字数
integer LINE = 10;//テキストの折り返し文字数
string text;
//LENを越えたら文末を省略
if(message>LEN){
message = llGetSubString(message,0,LEN)+"...";
}
//LINEごとに改行
while(message>LINE){
text += llGetSubString(message,0,LINE) + "\n";
message = llDeleteSubString(message,0,LINE);
}
text += message+"\nby "+nushi;//ここを忘れてました
llSetText(text, <x, y, z>, TRUE);
Posted by natsu at 2010年07月06日 11:33
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。