Top > 配列について
HTML convert time to 0.004 sec.


配列について

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: [email protected] = 0.0
for [email protected] = 0 to 19
 04C4: store_coords_to [email protected] [email protected] [email protected] from_actor $PLAYER_ACTOR with_offset 0.0 3.0 [email protected]
 [email protected]([email protected],20i) = Object.Create(1238, [email protected], [email protected], [email protected])
 000B: [email protected] += 1.0
wait 10
end
wait 5000
 
for [email protected] = 0 to 19
 Object.Destroy([email protected]([email protected],20i))
end
このプログラムを実行すると縦に20個パイロンが生成され、5秒後に全て消えます。
説明は所々省略します。

注目すべき所は

for [email protected] = 0 to 19
 [email protected]([email protected],20i) = Object.Create(1238, [email protected], [email protected], [email protected])
end
ここです

[email protected]を配列名とし、この変数を含む20個の変数を使用する配列を宣言する。
つまり[email protected][email protected]を使用する
このとき変数名は[email protected][email protected]以外を選ぶ。

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


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

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