2008年12月22日月曜日

色変更用16進数⇒10進数変換プログラム


コグマです

#ff0000みたいな16進数のカラー表記ありますよね。
あれをlslで使える1を最大にした10進数に変換するスクリプトです。
やっつけで作ったので汚いですが、適当に改造してやってください。

適当なプリムに入れて先頭が#の7桁をしゃべると、プリムをその色に変更して、llSetColorでそのまま使える関数をしゃべります。

//256段階で表示←先頭のコメントを外すと、edit画面のcolor変更のところで使える256段階表示をしゃべらせられます。

======================================

string AAA;
string BBA;
string CCA;
string AAB;
string BBB;
string CCB;
string AAC;
string BBC;
string CCC;
string DD;


default{
state_entry()
{

integer handle = llListen(0,"", llGetOwner(),"");
}

touch_start(integer total_number){
llOwnerSay("Script Reset");
llResetScript();


}
listen(integer channel, string name, key id, string str)

{
DD=llGetSubString(str,0,0);
if(DD=="#"){
AAA = "0x" + llGetSubString(str,1,2);
BBA = "0x" + llGetSubString(str,3,4);
CCA = "0x" + llGetSubString(str,5,6);
AAB = (string)((integer)AAA);
BBB = (string)((integer)BBA);
CCB = (string)((integer)CCA);
AAC = (string)((float)AAB/255);
BBC = (string)((float)BBB/255);
CCC = (string)((float)CCB/255);
//llOwnerSay("<"+ AAA +","+ BBA + "," + CCA +">");//元の数字を表示
//llOwnerSay("<"+ AAB +","+ BBB + "," + CCB +">");//256段階で表示
llOwnerSay("llSetColor(<"+ AAC +","+ BBC + "," + CCC +">, ALL_SIDES);");//少数で表示
llSetColor(< (float)AAC , (float)BBC , (float)CCC> , ALL_SIDES);//プリムカラー変更関数表示
}
}
}

0 件のコメント:

コメントを投稿