配列について

Last-modified: 2015-05-03 (日) 21:31:36

配列について †

概要 †
配列とは、同じ性質を持ったデータを連続的に並べた形
書式
配列名(変数名,サイズ 型)
$201($200,46i) 等
配列名 … ローカルまたはグローバル変数
変数名 … ローカルまたはグローバル変数 ただしサイズで指定する範囲の変数は使用不可
サイズ … 用意する配列の数。(main.scmでは無視される。)
型 (main.scmでは無視される。)
i …4バイト整数
f …4バイト小数
s …8バイト短文字列
v …16バイト長文字列
このうちここで説明するのは型はi(整数型)のみです。

配列は簡単に言うと、多くの変数をまとめて参照しやすくした物で
沢山のPED・オブジェクトを より短いコードで配置することができます。
値は型で指定した物しか使えません。(ここでは整数のみ)


使用例 †
Model.Load(1238)
038B: load_requested_models
while 8248: not model 1238 available
wait 0
end
 
0007: 3@ = 0.0
for 4@ = 0 to 19
 04C4: store_coords_to 0@ 1@ 2@ from_actor $PLAYER_ACTOR with_offset 0.0 3.0 3@
 5@(4@,20i) = Object.Create(1238, 0@, 1@, 2@)
 000B: 3@ += 1.0
wait 10
end
wait 5000
 
for 4@ = 0 to 19
 Object.Destroy(5@(4@,20i))
end
このプログラムを実行すると縦に20個パイロンが生成され、5秒後に全て消えます。
説明は所々省略します。

注目すべき所は

for 4@ = 0 to 19
 5@(4@,20i) = Object.Create(1238, 0@, 1@, 2@)
end
ここです

5@を配列名とし、この変数を含む20個の変数を使用する配列を宣言する。
つまり5@~24@を使用する
このとき変数名は5@~24@以外を選ぶ。

1ループ目 4@には0が入る。 5+0は5なので5@にモデル1238(パイロン)を生成 4@は0なので戻る
2ループ目 4@には1が入る。 5+1は6なので6@にモデル1238を生成 4@は1なので戻る
       :
20ループ目 4@には19が入る。 5+19は24なので24@にモデル1238を生成 4@は19なので戻らずループを抜ける


配列を取り出すとき †
Object.Destroy(5@[10])
5@の10番目の配列に格納されている15@のオブジェクトを消せ という命令になります。

0006: 4@ = 10 //int
Object.Destroy(5@(4@,20i))
これでも同様に"10番目の配列(15@)に格納されている" "11個目に出した" パイロンは消えます。
4@に負の数、19より大きい数、少数を入れた場合は配列が存在しないのでSAが強制終了します。