ソラマメブログ
商品紹介
cargo-G C03

cargo-G C03L

QRコード
QRCODE
※カテゴリー別のRSSです
アクセスカウンタ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 1人
オーナーへメッセージ

  
Posted by at

2009年01月12日

LSL、VBA、C、Parlの対比表

かーごです。

備忘録にちょこちょこ書いていこうと思います。
(随時更新)
LSLVBA(Excel)CPeal
コメント// comment ' comment /* comment */ # comment
変数の定義integer i;string str;list lst;vector v;rotation r; Dim i As Integer int i;char c; $a
文字列の結合str1 + str2str1 & str2#include <string.h>char a[5]="abc", b[5]="def";int n;strcat(a, b); //a=a+bstrncat(a, b, n); //a=a+b(n文字) $a . $b
ユーザー関数integer user(string s, integer i) {    return i; }Function user(s As String, i As Long) As integer    user = i End Functionint user(){    return i;} sub User{    my($a) = @_[0];    my($b) = @_[1];    return; }
条件分岐(if)if (条件式) {    処理1} else {    処理2}if (条件式1) {    処理1} else if (条件式2) {    処理2} else {    処理3 }If 条件式 Then    処理End IfIf 条件式 Then    処理1Else    処理2End IfIf 条件式1 Then    処理1ElseIf 条件式2 Then    処理2Else    処理3 End Ifif (条件式) {    処理1} else {    処理2}if (条件式1) {    処理1} else if (条件式2) {    処理2} else {    処理3 }if (条件式) {    処理1} else {    処理2}if (条件式1) {    処理1} elsif (条件式2) {    処理2} else {    処理3 }
前判断ループwhile (条件) { 処理 }while (条件) 文; while (条件) ;Do While 条件    処理    (Exit Do)LoopDo Until 条件    処理    (Exit Do) Loopwhile (条件) { 処理 }while(条件)文;while(条件) ; while (条件){    処理}
比較> < >= <= == !=> < >= <= = <>> < >= <=== !=文字列の比較#include <string.h>int strcmp(char *str1, char *str2);文字列str1とstr2を比較する。一致すれば0、一致しなければ0以外を返す。 算術比較演算子> < >= <=== !=文字列比較演算子 eq ne gt lt ge le
論理演算子! aa && b a || bNot AA And BA Or BA Xor BA Eqv B A Imp B! aa && b a || bnot $a$a and $b$a or $b! $a$a && $b$a || $b and/or/not の方が優先順位が低い


ああ、すでに挫折w
  

Posted by Cargo at 13:34Comments(4)スクリプト

2008年10月05日

装着で踊りだすスクリプト

ども、かーごです。

装着すると踊りだすスクリプトについてメモ

(1)踊る
 アバターにアニメーションをさせるスクリプトは アイピロさんのTips などにも載っています。

本来、アニメをさせるにはパーミッションの取得とかややこしいのですが・・・
とりあえず、ここではそれは「呪文」として・・・^^;
オブジェクトに座るとアニメをさせるスクリプト。
default{  state_entry(){      llSitTarget(<0.0,0.0,0.1>,ZERO_ROTATION); // llAvatarOnSitTarget()でkeyを調べるのに必要な呪文  }  changed(integer change){    key key_av = llAvatarOnSitTarget(); //座ったアバターのキーをkey_avに入れる    if( key_av != NULL_KEY ){      if ((llGetPermissions() & PERMISSION_TRIGGER_ANIMATION)                & llGetPermissionsKey() == key_av) { // すでにアニメーションのパーミッションがあれば        llStopAnimation("sit"); // 通常の座るアニメをストップして        llStartAnimation("アニメーション名"); // 指定のアニメをスタート      }else{ // パーミッションがない時        llRequestPermissions(key_av, PERMISSION_TRIGGER_ANIMATION); // パーミッションをリクエスト      }     }  }  run_time_permissions(integer perm){    if(perm & PERMISSION_TRIGGER_ANIMATION){      llStopAnimation("sit");      llStartAnimation("アニメーション名");    }  }}

緑の文字の所が呪文です。
詳しくはwikiなどを・・・・
"アニメーション名"のところにオブジェクトのコンテンツに入れたアニメの名前を入れます。


(2)装着すると
さて、「装着すると」の部分ですが。
LSLでアイテムが装着されたことを知るには Attachイベント を使います。
オブジェクトが装着もしくは取り外しされると、attach(){} の { } の中が実行されます。

それでは先ほどのスクリプトの change()~のところを書き換えてやりましょう。
default{  attach( key id ) // attachイベント  {    key key_av = id; //装着したアバターのキーをkey_avに入れる    if( key_av != NULL_KEY ){ // アバターのキーがNULLでない = 装着した時      if ((llGetPermissions() & PERMISSION_TRIGGER_ANIMATION)                & llGetPermissionsKey() == key_av) { // すでにアニメーションのパーミッションがあれば         llStartAnimation("アニメーション名"); // 指定のアニメをスタート      }else{ // パーミッションがない時        llRequestPermissions(key_av, PERMISSION_TRIGGER_ANIMATION); // パーミッションをリクエスト      }     } else { // 装着したアバターがNULL = オブジェクトが取り外された時      llStopAnimation("アニメーション名"); // アニメをストップする    }  }  run_time_permissions(integer perm){    if(perm & PERMISSION_TRIGGER_ANIMATION){      llStopAnimation("sit");      llStartAnimation("アニメーション名");    }  }}

attach イベントは装着しても取り外しても発生しますから、key id が NULL_KEYかどうかでどちらかを判断します。
装着されていれば id には有効なキーが装着されていなければ NULL_KEYが代入されていますので、NULL_KEY 以外なら装着、NULL_KEYなら取り外しということになります。
装着ならアニメスタートの呪文を、取り外しならアニメをストップさせます。

と、つらつらと書いてみました。
こんなの、参考になるかな~^^;
  

Posted by Cargo at 19:57Comments(3)スクリプト