2008年07月21日
POSE STAND
いまさらですが、pose standを作ってみましたので、載せておきます。
イベントリのアニメを自動的に読み込みます。
stand(rootプリム)とnextボタンとbackボタンの3つのプリムをリンクしてください。
☆llSitTarget(<0.0, 0.0, -2.5>, <180.0, 0.0, 0.0, 1.0>)は、ポーズの位置ですので、standのプリム形状および立ち位置よって変えてください。
【Rootプリム】
integer anicount;
key avatar;
string anim;
default
{
state_entry() {
llSitTarget(<0.0, 0.0, -2.5>, <180.0, 0.0, 0.0, 1.0>);
}
link_message(integer sender_num, integer num, string str, key id)
{
if ( str == "next" )
{
llRequestPermissions(avatar,PERMISSION_TRIGGER_ANIMATION);
llStopAnimation(anim);
anicount = anicount + 1 ;
if ( anicount >= llGetInventoryNumber(INVENTORY_ANIMATION) ){
anicount = 0;
}
anim = llGetInventoryName(INVENTORY_ANIMATION , anicount);
llSay(0, anim);
llStartAnimation(anim);
}
if ( str == "back" )
{
llRequestPermissions(avatar,PERMISSION_TRIGGER_ANIMATION);
llStopAnimation(anim);
anicount = anicount - 1 ;
if ( anicount < 0 ){
anicount = llGetInventoryNumber(INVENTORY_ANIMATION) - 1;
}
anim = llGetInventoryName(INVENTORY_ANIMATION , anicount);
llSay(0, anim);
llStartAnimation(anim);
}
}
changed(integer change)
{
if(change == CHANGED_LINK)
{
avatar = llAvatarOnSitTarget();
if(avatar != NULL_KEY)
{
llRequestPermissions(avatar,PERMISSION_TRIGGER_ANIMATION);
llStopAnimation("sit");
anim = llGetInventoryName(INVENTORY_ANIMATION , anicount);
llSay(0, anim);
llStartAnimation(anim);
}
}
}
}
【nextボタン】
default
{
touch_start(integer total_number)
{
llMessageLinked(LINK_ROOT, 0, "next", NULL_KEY);
}
}
【backボタン】
default
{
touch_start(integer total_number)
{
llMessageLinked(LINK_ROOT, 0, "back", NULL_KEY);
}
}
イベントリのアニメを自動的に読み込みます。
stand(rootプリム)とnextボタンとbackボタンの3つのプリムをリンクしてください。
☆llSitTarget(<0.0, 0.0, -2.5>, <180.0, 0.0, 0.0, 1.0>)は、ポーズの位置ですので、standのプリム形状および立ち位置よって変えてください。
【Rootプリム】
integer anicount;
key avatar;
string anim;
default
{
state_entry() {
llSitTarget(<0.0, 0.0, -2.5>, <180.0, 0.0, 0.0, 1.0>);
}
link_message(integer sender_num, integer num, string str, key id)
{
if ( str == "next" )
{
llRequestPermissions(avatar,PERMISSION_TRIGGER_ANIMATION);
llStopAnimation(anim);
anicount = anicount + 1 ;
if ( anicount >= llGetInventoryNumber(INVENTORY_ANIMATION) ){
anicount = 0;
}
anim = llGetInventoryName(INVENTORY_ANIMATION , anicount);
llSay(0, anim);
llStartAnimation(anim);
}
if ( str == "back" )
{
llRequestPermissions(avatar,PERMISSION_TRIGGER_ANIMATION);
llStopAnimation(anim);
anicount = anicount - 1 ;
if ( anicount < 0 ){
anicount = llGetInventoryNumber(INVENTORY_ANIMATION) - 1;
}
anim = llGetInventoryName(INVENTORY_ANIMATION , anicount);
llSay(0, anim);
llStartAnimation(anim);
}
}
changed(integer change)
{
if(change == CHANGED_LINK)
{
avatar = llAvatarOnSitTarget();
if(avatar != NULL_KEY)
{
llRequestPermissions(avatar,PERMISSION_TRIGGER_ANIMATION);
llStopAnimation("sit");
anim = llGetInventoryName(INVENTORY_ANIMATION , anicount);
llSay(0, anim);
llStartAnimation(anim);
}
}
}
}
【nextボタン】
default
{
touch_start(integer total_number)
{
llMessageLinked(LINK_ROOT, 0, "next", NULL_KEY);
}
}
【backボタン】
default
{
touch_start(integer total_number)
{
llMessageLinked(LINK_ROOT, 0, "back", NULL_KEY);
}
}
Posted by Hazuki Criss at 08:27│Comments(0)
│スクリプト