コグマです
お引越しスクリプトラストです。
LMを一括で入れ替える時に使用している旧LM削除スクリプトです。
HogeHogeHugaHugaを削除したいLMの名前にしてください。
新しいLMと一緒にドラッグすれば古いLMが削除され、新しいものだけが残ります。
お引越しスクリプト-1で使った関数と混ぜれば、コンテンツとLMの同時削除を行うようにもできます。
string OLD_LM ="HogeHogeHugaHuga";
default {
state_entry(){
if (llGetInventoryType(OLD_LM) == INVENTORY_LANDMARK){
llRemoveInventory(OLD_LM);
}
llRemoveInventory(llGetScriptName());
}
}
2009年2月4日水曜日
お引越しスクリプト-3
コグマです
お引越しスクリプト3番目は販売用BOXのサイズ変更用です。
適当な店舗からコピーしてきた看板のセットを新しいモールのサイズに合わせるとき使用しています。
このスクリプトを放り込まれた看板は設定された高さに移動後
一番薄い辺をMinに、他をLargeにサイズ変更されます。
またrezされたばかりのBOX(3辺が均等)であればX軸方向を薄くします。
その後スクリプトは自分自身を削除します。
*注意
・string move="ON";//←これがONの場合は必ずfloat HIGHの値を適切に変更してください。
移動させたい高さになります。
設定を変え忘れると吹っ飛びます。
・”最も薄い辺”は0.5より短い辺で判断しています。
3編とも0.5より短い場合Xが最薄となります。
//ここから
float Min=0.2;//薄くする辺の長さ
float Large=1.0;//大きくする辺の長さ
float HIGH=52;//看板の設置高さ。変更し忘れると吹っ飛びます。
string move="ON";//高さ移動をするかどうか指定。変更しない時はON以外にしてください。
//string move="0";
vector SetPos;
vector GetSize;
vector SetSize;
list Size;
default
{
state_entry()
{
if(move=="ON"){
SetPos=llGetPos();
SetPos.z=HIGH;
llSetPos(SetPos);
}
Size = llGetPrimitiveParams([ PRIM_SIZE]);
GetSize=llList2Vector(Size, 0);
if (GetSize.x<0.5){
SetSize.x=Min;
SetSize.y=Large;
SetSize.z=Large;
}
else if (GetSize.y<0.5){
SetSize.x=Large;
SetSize.y=Min;
SetSize.z=Large;
}
else if(GetSize.z<0.5){
SetSize.x=Large;
SetSize.y=Large;
SetSize.z=Min;
}
else{
SetSize.x=Min;
SetSize.y=Large;
SetSize.z=Large;
}
llSetPrimitiveParams([PRIM_SIZE, SetSize]);
llRemoveInventory(llGetScriptName());
}
}
お引越しスクリプト3番目は販売用BOXのサイズ変更用です。
適当な店舗からコピーしてきた看板のセットを新しいモールのサイズに合わせるとき使用しています。
このスクリプトを放り込まれた看板は設定された高さに移動後
一番薄い辺をMinに、他をLargeにサイズ変更されます。
またrezされたばかりのBOX(3辺が均等)であればX軸方向を薄くします。
その後スクリプトは自分自身を削除します。
*注意
・string move="ON";//←これがONの場合は必ずfloat HIGHの値を適切に変更してください。
移動させたい高さになります。
設定を変え忘れると吹っ飛びます。
・”最も薄い辺”は0.5より短い辺で判断しています。
3編とも0.5より短い場合Xが最薄となります。
//ここから
float Min=0.2;//薄くする辺の長さ
float Large=1.0;//大きくする辺の長さ
float HIGH=52;//看板の設置高さ。変更し忘れると吹っ飛びます。
string move="ON";//高さ移動をするかどうか指定。変更しない時はON以外にしてください。
//string move="0";
vector SetPos;
vector GetSize;
vector SetSize;
list Size;
default
{
state_entry()
{
if(move=="ON"){
SetPos=llGetPos();
SetPos.z=HIGH;
llSetPos(SetPos);
}
Size = llGetPrimitiveParams([ PRIM_SIZE]);
GetSize=llList2Vector(Size, 0);
if (GetSize.x<0.5){
SetSize.x=Min;
SetSize.y=Large;
SetSize.z=Large;
}
else if (GetSize.y<0.5){
SetSize.x=Large;
SetSize.y=Min;
SetSize.z=Large;
}
else if(GetSize.z<0.5){
SetSize.x=Large;
SetSize.y=Large;
SetSize.z=Min;
}
else{
SetSize.x=Min;
SetSize.y=Large;
SetSize.z=Large;
}
llSetPrimitiveParams([PRIM_SIZE, SetSize]);
llRemoveInventory(llGetScriptName());
}
}
お引越しスクリプト-2
コグマです
お引越しスクリプトの2番目は販売用BOXの名前付けスクリプトです。
箱の名前を中に入れられたオブジェクトの名前に変更後自分自身を削除します。
↓この部分の書き換えで実際につけられるBOX名の操作も出来ます。
//llSetObjectName(glasses_name+" BOX");//オブジェクト名+BOXになる
変数名がglasses_nameなのはうちが眼鏡屋だからです。
//プリムの名前をコンテンツのオブジェクト名に変更します。
default
{
state_entry()
{
string glasses_name;
glasses_name = llGetInventoryName(INVENTORY_OBJECT,0);
llSetObjectName(glasses_name);
//llSetObjectName(glasses_name+" BOX");//オブジェクト名+BOXになる
llRemoveInventory(llGetScriptName());
}
}
お引越しスクリプトの2番目は販売用BOXの名前付けスクリプトです。
箱の名前を中に入れられたオブジェクトの名前に変更後自分自身を削除します。
↓この部分の書き換えで実際につけられるBOX名の操作も出来ます。
//llSetObjectName(glasses_name+" BOX");//オブジェクト名+BOXになる
変数名がglasses_nameなのはうちが眼鏡屋だからです。
//プリムの名前をコンテンツのオブジェクト名に変更します。
default
{
state_entry()
{
string glasses_name;
glasses_name = llGetInventoryName(INVENTORY_OBJECT,0);
llSetObjectName(glasses_name);
//llSetObjectName(glasses_name+" BOX");//オブジェクト名+BOXになる
llRemoveInventory(llGetScriptName());
}
}
2009年2月3日火曜日
お引越しスクリプト-1
コグマです
モールの新規出店や移転でのLMやコンテンツ入れ替え箱の調整など
お店をやっていてめんどくせーーー!って作業を軽減するスクリプトなんですが
自分用に作って実際に使っているものを公開します。
大した物じゃないですけどね。
まず一つ目
最初に検出されたオブジェクトを削除した後にスクリプト自信を削除します。
商品につける店舗名略称の総手直しで使っています。
このスクリプトで箱の中身を削除してから新しい物をドラッグしています。
//コンテンツのオブジェクトを削除します(一個だけ有効)
default
{
state_entry()
{
llRemoveInventory(llGetInventoryName(INVENTORY_OBJECT,0));
llRemoveInventory(llGetScriptName());
}
}
モールの新規出店や移転でのLMやコンテンツ入れ替え箱の調整など
お店をやっていてめんどくせーーー!って作業を軽減するスクリプトなんですが
自分用に作って実際に使っているものを公開します。
大した物じゃないですけどね。
まず一つ目
最初に検出されたオブジェクトを削除した後にスクリプト自信を削除します。
商品につける店舗名略称の総手直しで使っています。
このスクリプトで箱の中身を削除してから新しい物をドラッグしています。
//コンテンツのオブジェクトを削除します(一個だけ有効)
default
{
state_entry()
{
llRemoveInventory(llGetInventoryName(INVENTORY_OBJECT,0));
llRemoveInventory(llGetScriptName());
}
}
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);//プリムカラー変更関数表示
}
}
}
2008年6月30日月曜日
2008年3月5日水曜日
スクリプトアップデート
メニューのボタンを押したあと、再度メニューを表示するように変更。
何度も本体をクリックしないですむようになりました。

変更対象はLiar、Welder、Koguma_monocle、KoUsa_monocle、Retro2
こちらで把握できているお客様へは新しい物を送付していますが、届いていないと
いう方はkoguma kumakiまでご連絡ください。
何度も本体をクリックしないですむようになりました。

変更対象はLiar、Welder、Koguma_monocle、KoUsa_monocle、Retro2
こちらで把握できているお客様へは新しい物を送付していますが、届いていないと
いう方はkoguma kumakiまでご連絡ください。
2008年2月23日土曜日
おでこ乗せスクリプトの使い方
このスクリプトはメガネ教室主催で有名な、シリアスギグルのkirin先生作の
スクリプトのモジュールとして動作するように作っています。
したがって受講終了の人や卒業生の人向けの解説になります。
お持ちで無い方は、がんばって稼動命令の送信部分を作ってください。
4期受講の人は来週配られるのでお楽しみに。
まず、下記のスクリプトで装着位置を測定します。
これはルートプリムへ入れてください。
通常の装着部位とおでこに乗せた位置の両方を記録してください。
商品のデフォルト位置になるので調整は念入りにどうぞ。
posが移動距離、rotが回転角度になります。
測定が終わったらこのスクリプトは捨てます。
//ここから
vector pos;
rotation rot;
default
{
touch_start(integer total_number)
{
pos = llGetLocalPos();
rot = llGetLocalRot();
llSay(0, "pos =" + (string)pos);
llSay(0, "rot =" + (string)rot);
}
}
//ここまで
次にkirin式スクリプトの本体であるremoconを改造します。
list ColorsにSwitchとPreferencesを追加してください。
(Colorsの内容は欲しいメニューによって変わるので、今回追加部分以外は
人によって違います)
また新規listとしてlist Preferencesを追加してください
llMessageLinked(LINK_ALL_CHILDREN, 0, message, "");
を
llMessageLinked(LINK_SET, 0, message, "");
に書き換えてメッセージの送信先を”全子プリム”から”全プリム”に変更します。
最後
条件式が並んでいるところへ↓を追加
else if(message == "Preferences")
{
llDialog(toucher, "Save Top or Nose Position", Preferences, CHANNEL);
}
//remocon改造箇所ここから
//メインメニュー追加
list Colors =
[
"Lens", "Frame", "Shine","Switch",
"Transparency", "Preferences"
//メニュー追加
list Preferences =
[
"SaveTopPos", "SaveNosePos","Reset"
];
//条件式追加
else if(message == "Preferences")
{
llDialog(toucher, "Save Top or Nose Position", Preferences, CHANNEL);
}
//メッセージ送信先変更
llMessageLinked(LINK_SET, 0, message, "");
//llMessageLinked(LINK_ALL_CHILDREN, 0, message, "");
//remocon改造箇所ここまで
最後に、移動スクリプト本体を設定します
最初に調べた位置情報を書き込んで再コンパイルします。
出来上がったらremoconと一緒にルートプリムへ入れてください。
top_pos:おでこ位置のpos
nose_pos:鼻位置のpos
top_rot:おでこ位置のrot
nose_rot:鼻位置のrot
//宣言部分例ここから
vector top_pos = <-0.05880, 0.00000, 0.02980>;
vector nose_pos = <-0.07141, -0.00001, 0.02163>;
rotation top_rot = <-0.00000, 0.95882, -0.00000, 0.28402>;
rotation nose_rot = <-0.00000, -1.00000, 0.00000, 0.00000>;
//ここまで
スクリプトのモジュールとして動作するように作っています。
したがって受講終了の人や卒業生の人向けの解説になります。
お持ちで無い方は、がんばって稼動命令の送信部分を作ってください。
4期受講の人は来週配られるのでお楽しみに。
まず、下記のスクリプトで装着位置を測定します。
これはルートプリムへ入れてください。
通常の装着部位とおでこに乗せた位置の両方を記録してください。
商品のデフォルト位置になるので調整は念入りにどうぞ。
posが移動距離、rotが回転角度になります。
測定が終わったらこのスクリプトは捨てます。
//ここから
vector pos;
rotation rot;
default
{
touch_start(integer total_number)
{
pos = llGetLocalPos();
rot = llGetLocalRot();
llSay(0, "pos =" + (string)pos);
llSay(0, "rot =" + (string)rot);
}
}
//ここまで
次にkirin式スクリプトの本体であるremoconを改造します。
list ColorsにSwitchとPreferencesを追加してください。
(Colorsの内容は欲しいメニューによって変わるので、今回追加部分以外は
人によって違います)
また新規listとしてlist Preferencesを追加してください
llMessageLinked(LINK_ALL_CHILDREN, 0, message, "");
を
llMessageLinked(LINK_SET, 0, message, "");
に書き換えてメッセージの送信先を”全子プリム”から”全プリム”に変更します。
最後
条件式が並んでいるところへ↓を追加
else if(message == "Preferences")
{
llDialog(toucher, "Save Top or Nose Position", Preferences, CHANNEL);
}
//remocon改造箇所ここから
//メインメニュー追加
list Colors =
[
"Lens", "Frame", "Shine","Switch",
"Transparency", "Preferences"
//メニュー追加
list Preferences =
[
"SaveTopPos", "SaveNosePos","Reset"
];
//条件式追加
else if(message == "Preferences")
{
llDialog(toucher, "Save Top or Nose Position", Preferences, CHANNEL);
}
//メッセージ送信先変更
llMessageLinked(LINK_SET, 0, message, "");
//llMessageLinked(LINK_ALL_CHILDREN, 0, message, "");
//remocon改造箇所ここまで
最後に、移動スクリプト本体を設定します
最初に調べた位置情報を書き込んで再コンパイルします。
出来上がったらremoconと一緒にルートプリムへ入れてください。
top_pos:おでこ位置のpos
nose_pos:鼻位置のpos
top_rot:おでこ位置のrot
nose_rot:鼻位置のrot
//宣言部分例ここから
vector top_pos = <-0.05880, 0.00000, 0.02980>;
vector nose_pos = <-0.07141, -0.00001, 0.02163>;
rotation top_rot = <-0.00000, 0.95882, -0.00000, 0.28402>;
rotation nose_rot = <-0.00000, -1.00000, 0.00000, 0.00000>;
//ここまで
メガネおでこ乗せスクリプト公開します
こんばんわコグマです。
Liar用に作ったメガネおでこ乗せスクリプトを晒します。
マニアな人は知っていると思うけど、おでこと鼻の位置を移動させるスクリプトって
海外製のメガネだと当たり前に入ってます。
日本のメガネ屋さんでは、私の知る限りありません。
知らないだけでいるかもしれませんけどね。
日本のメガネ屋さんがスクリプトなんかで海外に負けるのが
悔しいので作りました。
がんがん使うなり改造するなりしてもらって、メガネなら日本製だろ?って
事になればうれしいです。
//ここから
vector nose_pos = <-0.01326, -0.00026, 0.03075>;
rotation nose_rot = <0.54660, -0.44860, 0.50000, 0.49999>;
vector top_pos = <-0.02561, -0.00030, 0.11070>;
rotation top_rot = <0.30188, -0.61079, 0.67647, 0.27962>;
string UpDown = "";
default{
link_message(integer sender_num, integer num, string str, key id){
if(str == "SaveTopPos"){
top_rot = llGetLocalRot();
top_pos = llGetLocalPos();
}
else if(str == "SaveNosePos"){
nose_rot = llGetLocalRot();
nose_pos = llGetLocalPos();
}
else if(str == "Reset"){
llResetScript();
}
else if(str == "Switch"){
if(llGetAttached() != 0){
if(UpDown != "Down"){
llSetPrimitiveParams([PRIM_POSITION,top_pos,PRIM_ROTATION,top_rot]);
UpDown = "Down";
}
else if(UpDown == "Down"){
llSetPrimitiveParams([PRIM_POSITION,nose_pos,PRIM_ROTATION,nose_rot]);
UpDown = "Up";
}
}
}
}
}
//ここまで
Liar用に作ったメガネおでこ乗せスクリプトを晒します。
マニアな人は知っていると思うけど、おでこと鼻の位置を移動させるスクリプトって
海外製のメガネだと当たり前に入ってます。
日本のメガネ屋さんでは、私の知る限りありません。
知らないだけでいるかもしれませんけどね。
日本のメガネ屋さんがスクリプトなんかで海外に負けるのが
悔しいので作りました。
がんがん使うなり改造するなりしてもらって、メガネなら日本製だろ?って
事になればうれしいです。
//ここから
vector nose_pos = <-0.01326, -0.00026, 0.03075>;
rotation nose_rot = <0.54660, -0.44860, 0.50000, 0.49999>;
vector top_pos = <-0.02561, -0.00030, 0.11070>;
rotation top_rot = <0.30188, -0.61079, 0.67647, 0.27962>;
string UpDown = "";
default{
link_message(integer sender_num, integer num, string str, key id){
if(str == "SaveTopPos"){
top_rot = llGetLocalRot();
top_pos = llGetLocalPos();
}
else if(str == "SaveNosePos"){
nose_rot = llGetLocalRot();
nose_pos = llGetLocalPos();
}
else if(str == "Reset"){
llResetScript();
}
else if(str == "Switch"){
if(llGetAttached() != 0){
if(UpDown != "Down"){
llSetPrimitiveParams([PRIM_POSITION,top_pos,PRIM_ROTATION,top_rot]);
UpDown = "Down";
}
else if(UpDown == "Down"){
llSetPrimitiveParams([PRIM_POSITION,nose_pos,PRIM_ROTATION,nose_rot]);
UpDown = "Up";
}
}
}
}
}
//ここまで
登録:
投稿 (Atom)