LSLめも(1)

めも

for
  for( i=0; i<llGetListLength(lst); i++) hoge;
ifのTRUEの扱い
TRUEの条件
integer 0ではない
float 0ではない
string 文字長が 0 ではない
key keyが有効でNULL_KEYではない
vector vectorがZERO_VECTORではない
rotationrotationがZERO_ROTATIONではない
list listの長さが0ではない
  if( ~[「存在しない」がマイナス1で返る関数] ){
    // ~(-1) == 0 == FALSE (ビット反転)なので、上の条件式で問題ありません。
    // != -1 よりもメモリの節約となり、動作も速いです。
  }
integer
-2,147,483,648 ~ +2,147,483,647
vector
    vector vec = <1.0, 2.0, 3.0>;
    float x = vec.x;   //1.0
    float y = vec.y;   //2.0
    float z = vec.z;   //3.0
  

演算子

() [] .小カッコ(Parenthesis),大カッコ(Brackets),ドット
do this second(do this first)
(type)型キャスト
message = "The result is:" + (string)result;
! ~ ++ --論理否定, ビット反転, インクリメント, デクリメント
counter++;
* / %乗算/内積,除算,剰余/外積
rollover = (count + 1) %5;
-減算
one = 3 - 2;
+加算/文字列・配列連結
two = 1 + 1; text = "Hello" + "World";
myList = [1, 2, 3] + [4, 5]; newList = oldList + addList;
説明結果
integerinteger算術加算integer
integerfloatfloat
floatintegerfloat
stringstring文字列結合string
list*leftの末尾にrightを連結list
*listleftをrightの先頭に追加list
vectorvectorx, y, zを各々加算vector
rotationrotationleftとrightを加算する
*実際の回転の組み合わせでは*および/を使用する
rotation
<< >>左シフト,右シフト
eight = 4 << 1; // = 4 * 2
< <= > >=未満,以下,以上,より大きい
isFalse(0) = (6 <= 4);
== !=等価比較,不等価比較
isFalse(0) = ("this" == "that");
&ビット演算AND
zero = 4 & 2; // 4 : 0100 | 2 : 0010
four = 4 & 4;
^ビット演算XOR
zero = 4 ^ 4;
six = 4 ^ 2;
|ビット演算OR
four = 4 | 4;
six = 4 | 2;
||条件比較OR
isTrue(1) = (FALSE || TRUE);
&&条件比較AND
isFalse(0) = (FALSE && TRUE);
= += -= *= /= %=代入
four = 4;

イベント

state_entryステートが開始されたとき
state_entry()
state_exit他のステートに遷移するとき
state_exit()
attachアタッチ/デタッチされたとき
attach(key _id)
優先順位は on_rez() > attach() / _id:アバターのUUID
changedオブジェクトの状態が変化(link等)したとき
changed(integer _flg)
flg ⇒定数
touchタッチされているとき
touch(integer _num)
touch_startタッチが開始されたとき
touch_start(integer _num)
touch_endタッチが終了したとき
touch_end(integer _num)
listenリッスンしたとき
listen(integer _ch, string _nm, key _id, string _msg)
timerタイマーに設定された時間が経過したとき
timer()
controlキーが押されたとき
control(key _id, integer _lv, integer _key)
moneypayされたとき
money(key _id, integer _pay)
link_messageリンクメッセージを受信したとき
link_message(integer _snum, integer _num, string _str, key _id)
dataserverデータを受信したとき
dataserver(key _id, string _str)
emailEメールのデータを受信したときEmailの送受信
email(string _time, string _from, string _sub, string _msg, integer _num)
http_responseHTTPレスポンスを受信したとき
http_response(key _id, integer _st, list _meta, string _str)
remote_dataXML-RPC通信が発生したとき
remote_data(integer _type, key _ch, key _id, string _from,integer _int, string _str)
run_time_permissionsパーミッション要求に返答があったとき
run_time_permissions(integer _flg)
flg ⇒定数
    default{
      state_entry(){
        llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
      }
      run_time_permissions(integer perm){
        if(PERMISSION_TRIGGER_ANIMATION & perm){
          llStartAnimation("nyanya");
        }
      }
    }
  
on_rezオブジェクトがrezされたとき
on_rez(integer _prm)
装着の際はattachより先
object_rez他のオブジェクトをrezし終えたとき
object_rez(key _id)
moving_start移動が開始されたとき
moving_start()
moving_end移動が終了したとき
moving_end()
at_targetオブジェクトが到達目標地点に達したとき
at_target(integer _num, vector _posEnd, vector _pos)
not_at_targetvオブジェクトが到達目標地点に達していないとき
not_at_target()
at_rot_targetオブジェクトの回転が目標値に達したとき
at_rot_target(integer _num, rotation _rotEnd, rotation _rot)
not_at_rot_targetオブジェクトの回転が目標値に達していないとき
not_at_rot_target()
collision衝突が起こっているとき
collision(integer _num)
collision_start衝突が始まったとき
collision_start(integer _num)
collision_end衝突が終了したとき
collision_end(integer _num)
land_collision地面と衝突しているとき
land_collision(vector _pos)
land_collision_start地面と衝突し始めたとき
land_collision_start(vector _pos)
land_collision_end地面と衝突し終えたとき
land_collision_end(vector _pos)
sensorセンサーが探知したとき
sensor(integer _num)
no_sensorセンサーが何も探知しなかったとき
no_sensor()