フリービーでもよくあるスクリプトですが、装着したら銃を右手に持つ内蔵アニメーションが動いて、タイマーで数十秒毎にドリンクを飲む内蔵アニメーションを再生するような感じですね。
飲む間隔はランダムになるように書いてみました。20~30秒で飲みます。
// ドリンク用
float time_min=20; // 飲む間隔の最小時間(秒)
float time_max=30; // 飲む間隔の最大時間(秒)
string anim="hold_R_handgun"; // 右手に銃を持つ内蔵アニメ
req_anim()
{
llRequestPermissions(llGetOwner(),PERMISSION_TRIGGER_ANIMATION); // アニメーション実行リクエスト
}
default
{
state_entry()
{
if (llGetAttached()) req_anim(); // 装着されてたらreq_anim実行
}
changed(integer change)
{
if (change & CHANGED_TELEPORT)
{ // テレポートしたら
req_anim(); // req_animへ
}
}
attach(key id)
{ // アタッチイベント
llSleep(0.1); // スクリプト停止0.1秒
if (id) req_anim(); // 装着されたらreq_animへ
else if (llGetPermissionsKey()) llStopAnimation(anim); // 一応外したらアニメ停止(不要かも?)
}
run_time_permissions(integer perm)
{
if (perm & PERMISSION_TRIGGER_ANIMATION)
{ // アニメーション実行が許可されたら
llStartAnimation(anim); // 手に持つアニメ開始
llSetTimerEvent(time_min); // タイマーをセット
}
}
timer()
{
if (llGetAttached()) { // 装着されてるとき
llSetTimerEvent(time_min+llFrand(time_max-time_min)); // 次回のタイマーの値をランダムに決める
llStartAnimation("drink"); // 飲むアニメを実行
}
else llSetTimerEvent(0); // 装着されてないときはタイマー停止
}
}
基本は装着でアニメするスクリプトと同じで、タイマーイベントで飲む部分を付けただけだったりしますが^^;
0 件のコメント:
コメントを投稿