ColorChangeScript (RGB調整)
こんばんは、なつです。
Scriptのお話の前にちょっと前説を^^
サイドバーにも、リンク貼らせて頂いてますが、
SL Fashion Divaさんでfri.-Tabsって髪がバーゲン中の情報をゲットして、速攻で購入^^

で、この髪フード付きで、friでは、このフードと同色の服も売ってるんですけど、
人と同じになるのが、いやなんで^^
別のお店の服を合わせたんですけど、
当然、色が合いません><
この髪のフードは「タッチ→ダイアログ」で12色のカラーチェンジが出来るスクリプトが入ってますが、
同じ黒でも、微妙に違います(当然ですけど)
微調整は、編集可能なので、編集画面からできますけども~
ちょっと、自作のスクリプトを組み込みました^^
スクリプトは下に書きますが、
この髪は、元からのスクリプトが入っているので、
今回のスクリプトは、
髪の選択しといて編集画面を出して、リンクパーツ単体で編集できるようにしといて、
フードのパーツの中に組み込みます。
こうすると、髪の毛の部分をタッチすると、元からのダイアログが出て、
フードをタッチすると新しいダイアログがでます。
新しいダイアログってのは、これです

メッセージの部分のCOLOR RGB = <___,___,___>は、その都度のRGB値が表示されます。
「WHITE」、「GRAY」、「BLACK」は、プリムカラーを
<1.0,1.0,1.0>、<0.5,0.5,0.5>、<0.0,0.0,0.0>にします。
強制的に、黒、ねずみ色、白にしちゃいます。
「default」は、
ダイアログを開いた時のRGB値に戻します。
「RGB+」と「RGB-」は、
R、G、Bを0.01単位で3つ共、プラス(マイナス)します。
色の濃さ調整として使います。
「R+」、「R-」は、
赤のプラス(マイナス)、
「G+」、「G-」は、
緑のプラス(マイナス)、
「B+」、「B-」は、
青のプラス(マイナス)、をそれぞれ個別で0.05づつ変化させます。
それぞれ、最大値=1.0、最小値=0.0なので、

↑これは、Rが最大値(1.0)になった状態です。
「R+」のボタンが、「R maximum」になってます(もう足せませんってことです^^)
尚且つ
「RBG+」のボタンも、「RGB maximu」になって足せないようにしました。
こういう、色変更の仕方ってのは、あまり他の物に流用できそうもないですけど・・・^^
今回は、この髪のフードの色調整に特化したので、これでいいのかな>と思ってます。
編集画面から調整したほうが早くない?とか言わないの~><
あ、調整後↓

大体、合ってるでしょ?^^服と。
じゃ、今日はこのへんで^^
スクリプトは、コメントとして追加します。

カールさん^^勝手にリンクして、勝手に記事引用してます^^
いつも、みてますよ~更新楽しみにしてます~
なっちゃんリンクありがと!
float fx = 0.05;
key toucher;
integer LHandle;
integer CHANNEL = -723723;
string Rplus = “R+”;
string Gplus = “G+”;
string Bplus = “B+”;
string Rminus = “R-”;
string Gminus = “G-”;
string Bminus = “B-”;
string Dminus = “RGB-”;
string Dplus = “RGB+”;
list Colors = [Rplus, Gplus,Bplus, Rminus, Gminus, Bminus, Dminus, "default",Dplus,"WHITE","GRAY","BLACK"];//maximum minimum
vector my_color;
vector d_color;
syoki(){
Rplus = “R+”; Gplus = “G+”; Bplus = “B+”; Rminus = “R-”; Gminus = “G-”; Bminus = “B-”; Dminus = “RGB-”; Dplus = “RGB+”;
if (my_color.x >= 1.0)
{
my_color.x = 1.0;
Rplus = “R maximum”;
}
else
{
Rplus = “R+”;
}
if(my_color.x = 1.0)
{
my_color.y = 1.0;
Gplus = “G maximum”;
}
else
{
Gplus = “G+”;
}
if(my_color.y = 1.0)
{
my_color.z = 1.0;
Bplus = “B maximum”;
}
else
{
Bplus = “B+”;
}
if(my_color.z <= 0.0)
{
my_color.z = 0.0;
Bminus = "B minimum";
}
else
{
Bminus = "B-";
}
if(my_color.x == 1.0||my_color.y == 1.0||my_color.z == 1.0)
{
Dplus = "RGB maximum";
}
else
{
Dplus = "RGB+";
}
if(my_color.x == 0.0||my_color.y == 0.0||my_color.z == 0.0)
{
Dminus = "RGB minimum";
}
else
{
Dminus = "RGB-";
}
Colors = [Rplus, Gplus,Bplus, Rminus, Gminus, Bminus, Dminus, "default",Dplus,"WHITE","GRAY","BLACK"];
Menu();
}
Menu(){
llDialog(llGetOwner(), "Select command \n ==========================\nCOLOR RGB = " + (string)my_color+"\n==========================", Colors, CHANNEL);
llSetTimerEvent(30);
}
default
{
state_entry()
{
LHandle = llListen(CHANNEL, "", llGetOwner(), "");
llListenControl(LHandle, FALSE);
}
changed(integer change)
{
if(change & CHANGED_OWNER)
{
llResetScript();
}
}
touch_start(integer total_number)
{
toucher = llDetectedKey(0);
if(toucher == llGetOwner())
{
d_color = llGetColor(ALL_SIDES);
my_color = d_color;
llListenControl(LHandle, TRUE);
llDialog(llGetOwner(), "Select command \n ==========================\nCOLOR RGB = " + (string)my_color+"\n==========================", Colors, CHANNEL);
llSetTimerEvent(30);
}
}
listen(integer channel, string name, key id, string message)
{
if(message == "R+")
{
my_color.x = my_color.x + fx;
}
else if(message == "G+")
{
my_color.y = my_color.y + fx;
}
else if(message == "B+")
{
my_color.z = my_color.z + fx;
}
else if(message == "R-")
{
my_color.x = my_color.x – fx;
}
else if(message == "G-")
{
my_color.y = my_color.y – fx;
}
else if(message == "B-")
{
my_color.z = my_color.z – fx;
}
else if(message == "RGB-")
{
my_color = my_color – ;
}
else if(message == “RGB+”)
{
my_color = my_color + ;
}
else if(message == “default”)
{
my_color = d_color;
}
else if(message == “WHITE”)
{
my_color = ;
}
else if(message == “GRAY”)
{
my_color = ;
}
else if(message == “BLACK”)
{
my_color = ;
}
syoki();
llSetColor(my_color,ALL_SIDES);
//llSetText((string)my_color,,1.0);
//Menu();
llSetTimerEvent(30);
}
timer()
{
llSetTimerEvent(0);
llListenControl(LHandle, FALSE);
}
}