フローティングテキストの日本語表示

フローティングテキスト(floating / hovering text)を使うとプリムの上に文字列を表示することができます。日本語表示の方法を自分用メモの意味も含めてまとめようと思います。

default
{
state_entry()
{
llAllowInventoryDrop(TRUE);
llSetText(" TEXT ", <1,1,1>, 1.5);

}
}


※ テキストを改行する場合は \n (前後は半角スペース)
※ llSetText(" テキスト ", <色(0.0~1.0)>, 透明度(0で消える));
※ <0,0,0>黒、<0,0,1>青 、<0,1,0>緑<0,1,1>水色、<1,0,0>赤 、<1,0,1>ピンク 、<1,1,0>黄色、<1,1,1>白


ただ単に日本語を入力するだけでは文字化けしてしまいます。
日本語を表示させるには、こちらのサイト(セカンドライフ LSL 日本語変換)で変換したコードを貼り付けることで可能になります。
変換したコードを " TEXT " と置き換えます。( " も含む)

llSetText(llUnescapeURL("%E6%9A%91%E3%81%84%EF%BC%81"), <1,1,1>, 1.5);




いちいちブラウザ立ち上げるのめんどくさいとか重すぎて無理という場合は、チャットで発言した内容をそのままフローティングテキストとして表示してくれるスクリプトを使うことでも日本語表示が可能です。

/banner 発言

もちろん日本語だけでなくアルファベットでもOK。デフォルトだと文字がスクロールしますがこれもコマンドでオンオフできます。
コマンド一覧は /banner help

/banner on / off : フローティングテキストを表示/非表示
/banner length : スクロール時に表示するテキストの長さ
/banner rotate : テキストをスクロールさせる
/banner static : スクロールを止める




string gBanner = "Banner";
integer gNumChars = 20;
integer gPosition = 0;
vector gColor = <1,1,1>;
float gRefreshRate = 1.0;
float gAlpha = 1.0;
integer gImPublic = FALSE;

sendIM(string s){
if(gImPublic){
llWhisper(0,s);
}else{
llInstantMessage(llGetOwner(),s);
}
}

default
{
state_entry()
{
gBanner = llKey2Name(llGetOwner()) + ", type /banner help to learn how to use this banner.";
llListen(0, "", "", "");
llSetTimerEvent(gRefreshRate);
gPosition = 0;
}

timer(){
integer len = llStringLength(gBanner);
integer diff = (gPosition + gNumChars) - len;
string template = llGetSubString(gBanner,gPosition,gNumChars + gPosition);
while(llStringLength(template) < sub =" llGetSubString(template,0,gNumChars);"> len){
gPosition = 0;
}
}

listen(integer number, string name, key id, string msg){
if(id != llGetOwner()){
return;
}
list argv = llParseString2List(msg, [" "], []);
integer argc = llGetListLength(argv);
string cmd = llToLower(llList2String(argv, 0));
if(cmd == "/banner"){
string arg = llToLower(llList2String(argv, 1));
if(arg == "length"){
gNumChars = llList2Integer(argv, 2);
if(gNumChars < gnumchars =" 20;" arg ="=" grefreshrate =" llList2Float(argv," grefreshrate =" 0.2;" arg ="=" arg ="=">,1);
}else if(arg == "on"){
llSetTimerEvent(gRefreshRate);
}else if(arg == "off"){
llSetTimerEvent(0);
llSetText("",<0,0,0>,0);
}else if(arg=="getrot"){
llSay(0,(string)llGetRot());
}else if(arg=="im"){
gImPublic = !gImPublic;
sendIM("gImPublic now set to " + (string)gImPublic);
}else if(arg == "help"){
sendIM("/banner on / off - enable / disable banner display");
sendIM("/banner - set banner text to ''");
sendIM("/banner length - set banner length in characters (for rotation)");
sendIM("/banner rotate - enable rotation");
sendIM("/banner static - disable rotation");
}else{
gBanner = llGetSubString(msg,8,128);
llSetText(gBanner + "\n.\n.\n.",<1,1,1>,1);
gPosition = 0;
}
}
}
}

[スクリプトを見る]


声に出して読みたい日本語
声に出して読みたい日本語斎藤 孝

草思社 2001-09-12
売り上げランキング : 1861

おすすめ平均 star
star本書のレビューを判断する面白い方法
star本書の価値を問い直したい
star名文のオンパレード

Amazonで詳しく見る
by G-Tools