Posted by   at 

2009年09月29日

時間でテクスチャを切り替える

こんにちは。

今、アイテムキャンプのスクリプトをいじっているのですが、フローティングテキストが嫌でテクスチャの表示にしたいと考えています。
0123456789のテクスチャ(数字1個につき1枚)を作ったのですが、それを残り時間に応じて表示したいのです。
数字にテクスチャを当てはめる方法がわかりません。
※設定できる時刻は1分~最大99分です。

スクリプトそのものではなくて、参考やヒントでも構いませんので、ご教授いただけると助かります。
なにとぞよろしくお願いします。

※現在作っているテクスチャは数字1個につき1枚ですが、まだ未アップなので0-9で1枚のテクスチャに変更も可能です。
 テクスチャのアップ代を考えるとそちらの方がいいとは思うのですが、テクスチャをずらすのが苦手で1枚1枚にしてみました。   


Posted by LoveHeart  at 12:58Comments(7)スクリプト関連

2009年09月29日

オーナーだけがタッチすると作動するスクリプト

こんばんは^^
タッチで壁のテクスが変わるスクリプトを入れてみたのですが、上手く動きません;;
オーナーだけが作動するようにしたいのですが、誰がタッチしてもテクスが変わってしまいます。
正しく作動するよう、ご教授願えたら幸いです。
よろしくお願いいたします^^

-----------------------------------------------------------------------

integer number;
string name;
integer choice = 0;

default
{
state_entry()
{
number = llGetInventoryNumber(INVENTORY_TEXTURE);
number -= 1;
name = llGetInventoryName(INVENTORY_TEXTURE, choice);
if (name != "")
{
llSetTexture(name, ALL_SIDES);
choice = choice + 1;
}
}

touch_start(integer total_number){
if (llDetectedKey(0) == llGetOwner()) {
}
if (choice < number)
{
name = llGetInventoryName(INVENTORY_TEXTURE, choice);
if (name != "")
{
llSetTexture(name, ALL_SIDES);
choice = choice + 1;
}
}
else
{
name = llGetInventoryName(INVENTORY_TEXTURE, choice);
if (name != "")
{
llSetTexture(name, ALL_SIDES);
choice = 0;
}
}
}

changed(integer change)
{
if (change & CHANGED_INVENTORY)
{
llResetScript();
}
}
}  


Posted by Raz  at 00:42Comments(2)

2009年09月28日

長押しでダイアログを

今日は・・
依然作ったファイスライトスクリを改訂する必要が出てきて
依然の物は・・通常のタッチでダイアログをだしてたのですが
5秒くらいの長押しででるようにしたいのですが
長押しようのスクリをいれた途端に動かなくなってしまって
困ってます。
教えて頂ければ幸いです。
よろしくおねがいします
-----------------------------------------------------------------------


string text="Please choose your favorite jewel.";
string button1="0%";
string button2="25%";
string button3="50%";
string button4="75%";
string button5="100%";

integer counter=0;

list menu=[button1,button2,button3,button4,button5];
integer CHANNEL;

default
{
state_entry()
{
CHANNEL=llCeil(llFrand(2147483646));
llListen(CHANNEL,"",NULL_KEY,"");
touch_start(integer total_number)
if (llDetectedKey(0) == llGetOwner()){
if (counter < 50){
counter ++;
}else if (counter == 50){
counter ++;
handle=llListen(channel, "", llGetOwner(), "");

llDialog(agent,text,menu,CHANNEL);
llSetTimerEvent(60.0);


{
key agent=llGetOwner();
if (llDetectedKey(0) == llGetOwner()) {
counter=0;

}
}


}
else
{
llWhisper(0,"Sorry.Only an owner can change it.");
}
state default;


}


listen(integer channel, string name, key id, string msg)
{
if (channel == CHANNEL)
{
if (msg == button1) {
llMessageLinked(LINK_ALL_CHILDREN,0,"0%","");
}
else if (msg == button2) {
llMessageLinked(LINK_ALL_CHILDREN,0,"25%","");
}
else if (msg == button3) {
llMessageLinked(LINK_ALL_CHILDREN,0,"50%","");
}
else if (msg == button4) {
llMessageLinked(LINK_ALL_CHILDREN,0,"75%","");
}
else if (msg == button5) {
llMessageLinked(LINK_ALL_CHILDREN,0,"100%","");
}




}
llResetScript();
}

----------------------------------------------------------------------------

エラーが出るのは
touch_start(integer total_number)なんですが。。。
対処方法がわかりません・・

教えて頂ければ幸いです
  


Posted by Philotes  at 15:23Comments(7)スクリプト関連