31. 変数

変数の目的は、異なる数値(または時にはテキスト)の値を取る「だけ」です。だから変数はゲームエンジンのいずれかの具体的な特徴とは無関係です。変数の値があれば、様々なTR4/TRNG手順を制御するために、その値を適用することができます。

注:

- 数値変数のデフォルト値は0で、Text変数は空です。
- 数値変数の値は、小数点以下の桁を持つことはできません。だから、例えば、値25.76は、変数では25になります。

可能な変数は次のとおりです。:

A、数値目的のための変数:

Current Value
Global Byte Alfa1-4, Beta1-4, Delta1-4
Global Long Alfa, Beta, Delta
Global Long Timer
Global Short Alfa1-2, Beta1-2, Delta1-2
Last Input Number(プレイヤーが入力した番号)
Local Byte Alfa1-4, Beta1-4, Delta1-4
Local Long Alfa, Beta, Delta
Local Long Timer
Local Short Alfa1-2, Beta1-2, Delta1-2
Store Long A-P
Store Short A1-P1, Store Short A2-P2
Store Byte A1-P1, Store Byte A2-P2, Store Byte A3-P3, Store Byte A4-P4

B、テキスト目的のための変数:

Text1-4(最大で79文字)
Last Input Text(プレイヤーが入力したテキスト最大で79文字)
Big Text(最大で319文字)

変数選択のためのルール:

指定した目的のためにどの変数を使用するかは問題ではありません。 - 以下の事を忘れていなければ:

1.グローバリティ/ローカリティ:
- 「Global」の名前を持つ変数(Current Value、Last Input Number、Store変数とText変数)は、それらを変更する場合にのみ変更されます。(しかしResetHUBスクリプトコマンドに注意してください!)
- 「Local」の名前を持つ変数は指定したレベルでのみそれらの値を保持します。
2.数値型変数のサイズ:
- 「byte」変数の値は常に0と255の間でなければなりません。
- 「short」変数の値は常に-32768と32767の間でなければなりません。
- 「long」変数の値(Current ValueとLast Input Numberを含む)は常に-2147483648と2147483647の間でなければなりません。

変数について理解するためにPaolone氏のチュートリアルを参照してください:異なるサイズの変数は、常に同時に使用することはできません。
3.同時に、指定した目的のためだけに指定した変数を使用しなければいけません。さもないと物事が台無しになります。
4.特別な変数:
- 時には、Current Valueは、特別な目的のために使用できる唯一の変数です。なので、非特別な目的のために別の変数を使用して、非特別な目的のためにCurrent Valueを「浪費」しない方がいいでしょう。
- Last Input Numberは、現時点ではキーパッドスイッチでのみ動作します。(しかし、通常の「Global Long」変数としても使用することができます。)
- 現在はLast Input Textで使用することができるゲーム内の機能はありません。(しかし、通常のText1-4変数としてなら使用することができます。)

変数の使用法:

変数の主な用途:

- 変数が数値を持っているなら、条件としてそれを使用することができます。(例えば、「変数が1ならば、次にこれを行う、または変数が2ならば、それを行う。」)
- (変数またはトリガによって直接定義された)数値を持っているなら、メモリゾーンフィールドにそれを強制することができます。(そのフィールドのプロパティの値を変更します。)
- メモリーゾーンフィールドに数値を持っているなら、変数にそれを強制することができます。(例えば、フィールドの値を条件で検討します。)
- Local/Global Long Timer変数はタイマーです。これらの変数の数値は、タイマーの値です。(1秒は、変数では値30を意味します。)
- 変数の数値またはテキスト値を持っているなら、画面上でその値を表示することができます。
NG Center[Reference]の「Variable Placefolders」リストを参照してください。ここで、変数のIDを確認することができます。
例えば、Local Long Alfa変数のIDは#0070です。 English.txt のストリングスに、この#0070のID番号を入力し、画面上にそのストリングスを表示する、独立したテキスト表示トリガのいずれかを使用します。 独立したテキストについては「19.テキスト、画像、スプライトやバー」を参照してください。
(すると ゲームは、画面上で指定したストリングスを表示しますが、それは常に同じ値を意味するものではありません。なぜなら常に、変数の実際の値が表示されるからです。)
または、この例を参照してください:#0020は、Text1変数です。変数の値は次のようになります。hawk, tiger, warrior。
変数の実際の値が「tiger」である場合、画面上にはこのように表示されます:“A tiger is just attacking Lara!”、もし、これがそのストリングスで入力されたものである場合:“A #0020 is just attacking Lara!”
(注:ストリングスから変数の値を表示するために他の方法を試すことができます。例えば、カスタマイズバーの名前を参照してください。)
- カスタマイズバー用CUST_BARを持っている場合は、そこに数値変数のID(例えばLocal Long Alfaのため#0070)を入力することができます。変数の実際の値は、バーの実際の値になります。(注:バーは0、1、2 ... 99、100の値しか表示できません。もし、変数の値がその範囲以上/以下であれば、別の値に値を変換して範囲に納まるように演算が必要になります。)

変数の追加の使用法:

- 変数の数値を持っていれば、変数の値を変更するために、この変数と(別の変数またはトリガによって直接定義された)別の数値を使用して、演算を行うことができます。 - 注:

= 変数の値を使用して操作を実行する場合は、変数の古い値が上書きされて、新しい値になります。(例えば、変数Aは7。変数Aに5を追加すると、変数Aが12になる) - 以下のいくつかの例外を参照してください。
= Text変数にも同様に「加算演算」があります:別のテキストを添付することができます。

- (変数またはトリガによって直接定義された)値を持っているなら、それで別の変数の値を変更することができます。 (例えば、Local Short Alfa1は9000です。Global Long Timerにそれをコピーするだけで300秒にタイマー値を替えられます、なぜなら値30が1秒であるため、9000/30 = 300。)
- フィールドの値を変更するために、メモリゾーンフィールド値と(別の変数またはトリガによって直接定義された)別の数を使用して、数学的な操作を行うことができます。
- Store変数は、後の応用のために数を保存したり、オブジェクトの位置を記録するために使用されます。
- 変数のためのいくつかの特別なタスクがあります。

変数のために使用されるトリガ:

別の数値型変数に変数の数値をコピーするためのトリガ。:

- F271は、Current Valueに任意の数値変数の値をコピーします。
- F272は、任意の数値変数にCurrent Valueの値をコピーします。

任意の数値変数に(トリガによって定義された)数を強制するトリガ:

F232、F234、F252またはF263は任意の数値変数に数値を強制します。

値を強制した後、値が適切でない経験をしたなら、値を強制する前に、変数の値を0にしてください。

数学演算:

- 2つの数値の変数の間で:

= F285は、Current Valueに任意の数値変数の値を加算します。(「Current Value」を上書き。)
= F286は、Current Valueから任意の数値変数の値を減算します。(「Current Value」を上書き。)
= F288は、任意の数値変数によってCurrent Valueの値を乗算します。(「Current Value」を上書き。)
= F287は、任意の数値変数によってCurrent Valueの値を除算します。(「Current Value」を上書き。)

注:0で変数の値を除算しても何も起きません。

- (トリガによって定義される)数と数値変数間:

= F231は、任意の数値変数に数を加算します。
= F233は、任意の数値変数から数を減算します。
= F251は、数で任意の数値型変数を乗算します。
= F253は、数で任意の数値変数を除算します。

- 数値変数を使う他の数学演算:
F284は、任意の数値変数の符号を反転します。

- 数値型変数の値を0にします:

= F235は、任意の数値変数から値を削除します。(値がビットである場合、すなわち値2の指数。)
= F241は、指定したすべての数値型変数から値を削除します。

タイマーのトリガ:

= F264は、タイマーを開始します。
= F265は、タイマーを停止します。
= F266、F267またはF268は、タイマーを初期化し、そこからタイマーのカウントダウンを始めたり、動いていたタイマーを止めます 。
= F269は、画面にタイマーを表示します。
= F270は、画面からタイマーを取り除きます。

注:FONT_GRAPHICSまたはF269を使用してのみ、タイマーの外観を形成することができます。他のもの(例えば、フォントの色を変える)を形成したい場合は、タイマーを制御するための、今述べたトリガをスキップします。その代わりに、ストリングスにLocal/Global Long TimerのIDを入れて、それが独立したテキストであるかのように、そのストリングスを画面上でON/OFFします。(いくつかの方法で - 。例えばGlobalTrigger - それは継続性があるので - 本当のタイマーであるかのように、タイマーの値は、継続的にリフレッシュされます。)こうなると、まるで独立したテキストであるかのように、タイマーを形成することができます。

Store変数のトリガ:

- Store変数の通常の使用方法:

= F236は、Store変数にCurrent Valueの値をコピーします。
= F237は、Current ValueにStore変数の値をコピーします。

- Store変数の特殊な使用方法:
A55は、Store変数に動的オブジェクトの現在の位置を記録します。この/別のオブジェクトを、後で/今、同じ位置に移動したい場合、A57か(またはA55から、スクエアの上の水平方向の位置を受け取る)A56を有効化することが重要です。

Text変数のトリガ:

- F238は、別のText変数にText変数の内容をコピーします。
- F239は、Text変数に[ExtraNG]ストリングスの内容をコピーします。
- F240は、Big Text変数に[ExtraNG]ストリングスの内容を添付します。
- F242は、Big Text変数にText変数の内容を添付します。
- F243は、Big Text変数に数値変数の値を添付します。

メモリゾーンのトリガ:

以下、それらを参照してください。

変数でCONDITIONトリガ:

- C38、C39またはC40:PARAM_BIG_NUMBERSコンスタンツで指定した数と指定した数値変数の現在の値とを比較します。
- C41、C42またはC43:指定した数と指定した数値変数の現在の値とを比較します。
- C44:変数の現在の値は、値2の指数である「ビット」の値よりも大きいか(またはそれと同等で)なければなりません。
- C45:変数の現在の値は、値2の指数である「ビット」の値よりも小さくする必要があります。
- C46、C47またはC48:指定した数とCurrent Value変数の現在の値とを比較します。
- C56、C57またはC58:指定した別の数値変数とCurrent Value変数の現在の値とを比較します。

特別トリガ:

- スイッチ機能:
F289は、指定したSwitchスクリプトコマンドで定義された「プログラム」を有効にします。(いくつかの機能についてはSWTのコンスタンツを参照してください。)
数値変数の#XXXXのIDコードは、Switchコマンドで入力されています。そして、いくつかのTriggerGroupsは、またコマンドで識別されます。各TriggerGroupは1、2、3等の番号にリンクされています。そこで、変数の値が1の場合、1にリンクされているTriggerGroupが有効になり、変数の値が2の場合、2にリンクされているTriggerGroupが有効になります。
(注:Switchコマンド機能のおかげで、今は、例えば、一つのコードしかないキーパッドスイッチではなく、複数のコードを持ったキーパッドスイッチを配置することができます。

- ランダムな値を作成します:

= F303は、指定した区間から、指定した数値型変数のために乱数を生成します。
= F304は、0と非0Current Valueと、指定した数値型変数のために乱数を生成します。

- トゥーム(ゲーム)インデックス/ NGLE(ルームエディタ)インデックスの変換:

= Current Valueにトゥーム(ゲーム)の部屋のインデックスを持っている場合は、F298でそのインデックスを、NGLE(ルームエディタ)の部屋のインデックスに、(Current Valueで)変換します。
= Current ValueにNGLE(ルームエディタ)の部屋のインデックスを持っている場合は、F299でそのインデックスを、トゥーム(ゲーム)の部屋のインデックスに、(Current Valueで)変換します。
= F297はまた、NGLE/トゥームの部屋のインデックスで何かを行います。しかし、それはバグが多いと思われるので、このトリガを使用しないでください。
= Current Valueにトゥーム(ゲーム)の動的オブジェクトのインデックスを持っている場合は、F300でそのインデックスを、NGLE(ルームエディタ)のオブジェクトのインデックスに、(Current Valueで)変換します。
= Current ValueにNGLE(ルームエディタ)の動的オブジェクトのインデックスを持っている場合は、F301で そのインデックスを、トゥーム(ゲーム)のオブジェクトのインデックスに、(Current Valueで)変換します。

- その他の特別なトリガ:

= F305は、指定した数と変数の値 は二進数の集合体として指定した変数に新しい値を設定します。 - 例えば:
変数の値はちょうど7です。それは二進数では111です。
指定した数は99です。それは二進数では1100011です。
集計は3です。

0000111+
1100011=
0000011

なぜなら、下の桁にそれぞれ上の桁を追加する必要があるからで、これらのルールは以下のとおりです。:

0+0=0
0+1=0
1+0=0
1+1=1

そして、バイナリ数11は10進数で3です。
= ColorRGBスクリプトコマンドを指定する必要があります。F291を有効にした場合、コマンドのカラーコードは、長い数として指定した変数になります。(もし長い数のカラーコードを強制することができるのであれば便利ですが、F291はそれをしません。)
「長い数のカラーコード」を理解するために、例を見てみましょう。:
RGB = 245/200/60:16進数で、これはRGB = $F5/$C8/$3Cです。値を一つに「固めて」:$F5C83C。そしてその値を10進数に戻します:16107580 - これが話している長い数です。
= F302は、A60と同じように動作します:トリガの対象が保存されない場合は、このトリガを有効にすると、それは、保存されます。違い:A60は、指定した動的オブジェクトで動作し、F302はCurrent Valueで指定したトゥーム(ゲーム)インデックスを有する動的オブジェクトで動作します。
= ゲームログ機能のためだけのトリガ(レベルをリリースする前に、このトリガを削除する必要があります):
F309は、ログに指定した変数の現在の値を表示します。


前のページ
次のページ