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ではない |
rotation | rotationが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;
左 | 右 | 説明 | 結果 |
integer | integer | 算術加算 | integer |
integer | float | float |
float | integer | float |
string | string | 文字列結合 | string |
list | * | leftの末尾にrightを連結 | list |
* | list | leftをrightの先頭に追加 | list |
vector | vector | x, y, zを各々加算 | vector |
rotation | rotation | leftとrightを加算する *実際の回転の組み合わせでは*および/を使用する+em> | 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()