ArmA訓練所 2007/06/30 |
ArmAではスクリプトコマンドを使ってエディターでは出来ないような様々なことが実現可能です。
しかし、いきなり複雑な演出をするコマンドを使おうとしてもうまくできません。
ここではスクリプトコマンドを使う上で基本となる演算子について紹介します。
ArmAのスクリプトの書き方はインタプリタ型プログラミング言語と似ています。
変数の型宣言は必要ではなく、直接変数を代入できます。
これらの変数や値に対して四則演算や比較などが出来ます。
演算や比較に使う記号を演算子といいます。スクリプトの基本になるので覚えておきましょう。
数値を計算するのに使います。
かけ算はアスタリスク、割り算はスラッシュ、余りはパーセント記号かmod、累乗はハット記号(キャレット)を使います。
演算結果はNumberを返します。
演算子 | 効果 | 例 |
---|---|---|
+ | 加算 | a + b |
- | 減算 | a - b |
* | 乗算 | a * b |
/ | 除算 | a / b |
% | 剰余 | a % b |
mod | 剰余 | a mod b |
^ | 累乗 | a ^ b |
Boolean値を組み合わせるのに使います。
否定を使うと条件を反転させることも出来ます。
演算結果はBooleanを返します。
演算子 | 効果 | 例 |
---|---|---|
! | 否定 | !a |
not | 否定 | not a |
&& | 論理積 | a && b |
and | 論理積 | a and b |
|| | 論理和 | a || b |
or | 論理和 | a or b |
Example:
not ( alive unitA ) ユニットAが死亡した場合 ( unitA in thisList ) or ( unitB in thisList ) ユニットAまたはBがこのトリガーに入った場合 ( unitA in thisList ) || ( unitB in thisList ) 同上 ( unitA in thisList ) and ( unitB in thisList ) ユニットAとBが共にこのトリガーに入った場合 ( unitA in thisList ) && ( unitB in thisList ) 同上 not alive unitA and alive unitB ユニットAが死亡し、ユニットBが生きている場合 not ( alive unitA ) and alive unitB 同上 not ( alive unitA and alive unitB ) ユニットAとBのどちらかが死亡した場合
排他的論理演算子はありません。
以下のようにすると同じことが出来ます。
演算子 | 置き換え |
---|---|
Xor | (a || b) && !(a && b) |
Nor | !(a || b) |
Nand | !(a && b) |
値を比較するのに使います。
比較結果はBooleanを返します。
演算子 | 効果 | 例 |
---|---|---|
== | 等しい | a == b |
!= | 異なる | a != b |
< | 小なり | a < b |
> | 大なり | a > b |
<= | 以下 | a <= b |
>= | 以上 | a >= b |
配列を代入すると配列のリファレンス(参照)が代入されます。
参照ではなく、コピー(複製)を与えたいときは先頭に+記号を付けます。
Example 1:
_arrayA = [1,2]; _arrayB = _arrayA;(_arrayBに_arrayAの参照を代入) _arrayA set [0,5];(_arrayAの0番目を5にする) _arrayA は [5,2] (setコマンドを使ったため、_arrayAの値が[5,2]となっている) _arrayB は [5,2] (特に操作していない_arrayBの値も_arrayAと同じになっている)
Example 2:
_arrayA = [1,2]; _arrayB = +_arrayA;(_arrayBに_arrayAのコピーを代入) _arrayA set [0,5];(_arrayAの0番目を5にする) _arrayA は [5,2] (setコマンドを使ったため、_arrayAの値が[5,2]となっている) _arrayB は [1,2] (特に操作していない_arrayBの値はsetコマンドを使う前の_arrayAと同じままである)
配列は結合することと、値を除外させることが可能です。
演算子 | 効果 | 例 |
---|---|---|
+ | 結合 | myArray1 + myArray2 |
- | 除外 | myArray1 - myArray2 |
Example 1:
_arrayA = [1,2]; _arrayB = [3,2,4]; _arrayC = _arrayA + _arrayB; _arrayC は [1,2,3,2,4] (_arrayAの後に_arrayBが追加されている)
Example 2:
_arrayA = [1,2,3,2,4]; _arrayB = [2,3]; _arrayC = _arrayA - _arrayB; _arrayC は [1,4] (_arrayAから_arrayBの値が除外されている)
文字列を結合することが可能です。
演算子 | 効果 | 例 |
---|---|---|
+ | 結合 | myString1 + myString2 |
Example:
_stringA = "Hello "; _stringB = "World!"; _stringC = _stringA + _stringB; _stringC は "Hello World!" (_stringAの後に_stringBが結合されている)