script 翻訳メモ

Scripting Helpの翻訳メモです

1.スクリプトシステムについて
1.a
プログラムにはスクリプトシステムが組み込まれています。これはVBコードで完全に実装されており、その文法はVBに似ています。私はTea Scriptという名前を付けました。

Scintillaは、スクリプトエディタで色付け機能を提供するために使用されるため、SciLexer.dllが失われた場合、レベルエディタでスクリプトを記述することはできません。ただし、このような場合は、既に存在するスクリプトは、 問題。

スクリプトシステムを使用すると、ゲーム内のほぼすべてのオブジェクトや変数を操作することができます。これにより、さらに高度なカスタムNPC、ブロック、さらには文字状態を作成できます。

通常、以下の2つの方法で作成したスクリプトを実行できます。
1.イベントの「スクリプト」パネル。
液体中の 'スクリプト'パネル。

2.Variables
2.a
2.a.1変数とは何ですか?
変数は数学から来ます。これらは計算の結果を格納するためのプログラミング言語の抽象的な概念です。これらは一般に名前によってアクセスされます.SMBXにはいくつかの種類の変数があります。
2.a.2変数の種類
SMBXには、ローカル変数、グローバル変数、システム変数があります。使用法、範囲、および寿命の点で異なります。
2.a.3タイプ
SMBXには、主に2つのタイプの変数があります(DoubleとString(一部のシステム関数で使用されます))。
文字列型変数の値は、 "a string"のように二重引用符で囲みます。
いくつかのシステム関数は別のタイプの変数、名前を使用しています。
名前は何かの名前を表し、値を表すために引用符は必要ありません。
2.a.4変数命名基準
変数の名前は、数字、文字、およびそれらの組み合わせのみにすることができます。変数名では大文字と小文字は区別されません。

2.b
2.b.1ローカル変数
レベルエディタでローカル変数を定義することができます。ローカル変数は、定義されているレベルでのみ有効です。これらはダブルタイプ(IEEE 64ビット8バイト、-1.79769313486232×10308〜-4.94065645841247×負の値の場合は10-324、4.94065645841247 ×10-324~1.79769313486232×10308)の変数である。

イベントとスクリプトを使用してローカル変数を制御(=読み書き)することができます。特に、ローカル変数はイベントのメッセージに直接使用できます。

2.b.2グローバル変数
World Editorでグローバル変数を定義することができます。グローバル変数は全世界で感情的です。また、ローカル変数のようなDouble型変数です。

スクリプトを使用してグローバル変数のみを完全に制御することはできますが、イベントの値は引き続き取得できます。

ローカル/グローバル変数を定義するときには、同じ名前のString型ローカル/グローバル変数も定義しました!この文字列型変数の使用については、後で説明します。

2.c
組み込み変数の場合、システム変数とゲームデータ変数があります。これらの値は自動的に変更されます。タイプと範囲は、それぞれ異なります。

1-ups、コイン、得点、レベル内のNPCの数などのシステム変数は、読み取り専用変数です。これらの値は、ゲームの実行中に更新されます。

ゲームデータ変数は複雑な変数の集合であり、スクリプトを介してのみアクセスできます.NPC、ブロック、プレーヤーに格納されたデータはこのタイプに属します。

1597/5000
3.表現
3.a
3.a.1数式
数式は数学記号と関数で構成され、計算後に数値を返します。

ゲームでサポートされている数学記号:
[+]プラス、例えば:1 + 1 = 2
[ - ] - 例えば、2-1 = 1
[*]乗算、例:3 * 4 = 12
[/]除算、例えば:5/4 = 1.25
[\]剰余なしで除算します。例:6 \ 4 = 1
[^]力、例えば:2 ^ 3 = 8
[mod]残りの部分を得る:3 mod 2 = 1
2 *(1 + 3)= 8など、計算の順序を調整する[]()
[&]記号をリンクする、例えば:1&2 = 12

ゲームはまた、数学関数、システム関数、カスタム関数を含む多くの種類の関数をサポートしています。ここでは、数学関数の使用についてのみ説明します。
[abs]は、パラメータの絶対値を返します。例:abs(-1)= 1
[atn]は逆正接値を返します。例:4 * atn(1)= 3.141592654 ...
[cos]はコサイン値を返します。例:cos(3.1415926)= - 1
[exp]はeのパワーを返します。例えば、exp(4)はe ^ 4に等しい
[fix]パラメータを丸めます。たとえば、fix(4.44)= 4、fix(-4.44)= - 4
[int]はパラメータを丸めます。たとえば、int(4.44)= 4、int(-4.44)= - 5
[log]自然対数の底の値を返します。例:log(e)= 1
[sgn]パラメータの符号を得る:sgn(5)= 1、sgn(-5)= - 1
[sin]は正弦値を返します。例:sin(3.1415926)= 0
[sqr]は平方根を返します。例えば、sqr(2)は2 ^ 0.5に等しくなります
[tan]は接線の値を返します。例:tan(3.1415926)= 0
[rnd]は0と1の間のランダムな値を返し、パラメータはなく、直接使用することができます。例:4 * rnd
※ラジアンは三角関数で使用してください。

3.a.2課題
代入は、式の結果を変数に送ることです。

使用:変数=式

例:val(a)= cos(2)+ 3 + sgn(4)+ rnd * 5 + log(6)
3.b
論理式は、数式と論理記号で構成されています。式が真であるかどうかを教えてくれます。
計算後は0(=偽)または1(=真)になります。

論理シンボルには、演算子の比較と論理演算子の2種類があります。まず、比較演算子を計算します。

ゲームでサポートされている演算子を比較する:
[=]等しい、例えば:1 = 1は1(=真)を返し、1 = 0は0(=偽)を返します。
[>]より大きい、例えば:1> 0は1を返し、1> 2は0を返します
[<]より小さい、例えば:1 <2は1を返し、1 <0は0を返します
[<>]が等しくない、たとえば:1 <> 2は1を返し、1は> 0を返します。
[> =]より小さくない、例えば:1> = 1は1を返し、1> = 2は0を返す
[<=]より大きくない、例えば:1 <= 1は1,1 <= 0は0を返す

ゲームでサポートされる論理演算子:
ユニタリ演算子:[しない]
P NOT P
0 1
1 0
二項演算子:[と]、[または]、[xor]、[eqv]、[imp]
P Q PおよびQ PまたはQ P XOR Q P EQV Q P IMP Q
0 0 0 0 0 1 1
0 1 0 1 1 0 1
1 0 0 1 1 0 0
1 1 1 1 0 1 1

論理式は一般的に 'If'ステートメントで使用されますが、それらを使用して変数の値を設定することもできます。
3.c
イベントで式を使用することもできますが、上記のすべての数学関数とシンボルはイベントでサポートされています。ただし、他の関数やイベントの特殊変数には大きな制限があります。次の変数のみがイベントでサポートされます。スクリプトでも同じように。

[val]または[v]:ローカル変数
[gval]または[gv]:グローバル変数(ReadOnly)
[lvltimer]:ゲームタイマー(ReadOnly)
[sysval]:システム変数(ReadOnly)

イベントのメッセージには、use、input&val(* variable name *)のようにローカル変数を含めることができます。
例:&val(a)星を入力する必要があります。

4.制御フロー
4.a
与えられた条件式が真を返すなら、 'If'ステートメントは式を実行します。
つかいます:
条件を満たす場合
[ステートメント]
[Elseif condition-n Then]
[ステートメント]
[その他]
[ステートメント]
終了の場合

'[]'の中のものはオプションです。 '条件'は論理式を意味します。
複数の 'Elseif'は 'If'ステートメントには存在しますが、 'Else'には1つのみ存在します。

'condition'がtrueを返す場合、ゲームは次のステートメントを実行し、次に 'End If'にジャンプして他のステートメントを実行します。


4.b
'Select Case'ステートメントは、テスト式の結果に従って、指定されたステートメントの1つを選択します。
つかいます:
Select Case test-expression
事例紹介
[ステートメント]
[ケース式-n]
[ステートメント]
[その他のケース]
[ステートメント]
エンドセレクト

'[]'の中のものはオプションです.'Expression 'は数学的表現です。
複数の 'Case'は 'Select Case'ステートメントには存在しますが、 'Case Else'には1つしか存在しません。

ゲームは最初に 'test-expression'を計算して戻り値を取得し、同じ値を返す 'Case'の後の式を検索します。式が見つかると、ゲームは直ちにそれに続く文を実行し、他のステートメントを実行するには、 'End Select'を選択します。

4.c
'for'ステートメントは、特定の時間に一連のステートメントを繰り返し実行します。
つかいます:
カウンタ=開始終了[ステップステップ]
[ステートメント]
[Exit For]

'['] 'はオプションです.Counterはローカル変数です。'Start'、 'end'、 'step'は数式です。 'Exit For'は無制限数でステートメント内に存在することができます。 'Exit For 'が実行されると、ゲームは' For 'ステートメントの外側の他のステートメントを実行するために' Next 'にジャンプします。

無視された場合、 'step'はデフォルトで1に設定されます。

'For'ステートメントが実行されると、ゲームは 'start'の値をローカル変数 'c​​ounter'に送ります。 'statement'が実行されます。計算が 'Next'に達すると、ゲームはステップ値を'counter'変数を 'End'に比較します。 'counter'の値が 'End'より大きい場合、ゲームは 'Next'にジャンプし、 'Next' 'For'ステートメント内でステートメントの実行を繰り返します。

次に例を示します。
val(a)= 1〜10の場合ステップ2
もしval(a)= 5ならば
   終了する
 終了の場合


4.d
Do文は、その中の文を繰り返し実行します。
つかいます:

[{While | Until}条件]を実行しますか?
[ステートメント]
[Exit Do]
ループ[{While | until]条件]

'[]'、 'While'、 'Until'の中の1つのキーワードのみ ''を選択できます。 '条件'はaです。 'Exit Do'が実行されると、ゲームは 'Do'式以外の他のステートメントを実行するために 'Loop'にジャンプします。

'While'キーワードが選択された場合、ゲームは '条件'が真を返すまで 'Do'ステートメント内のステートメントの実行を繰り返します。
'Until'キーワードが選択されている場合、ゲームは 'condition'がfalseを返すまで 'Do'ステートメント内のステートメントの実行を繰り返します。

4.e
'With'ステートメントは、指定されたオブジェクトに一連のステートメントを適用します。
つかいます:
オブジェクト付き
[ステートメント]
最後に

'オブジェクト'は、ゲーム内のオブジェクトを意味します。ここに例があります:
npc(1)
.x = 12345
.y = 54321
最後に

4.f
'Goto'文が実行されると、計算がスクリプトの特定の行にジャンプします。
後藤線

'Line'はラベルの名前です。ラベルは次のように作成されます:
ライン:
ラベル名は、変数に存在してはならないシンボルで構成されるべきではありません。同じ名前の2つのラベルが1つのスクリプト内に存在しないようにしてください。 'Goto'ステートメントをinter-functionalallyに使用することはできません。内側の 'With'ステートメントも。

無限ループの例を以下に示します(スクリプトではこれらのことを避けてください):
無限:
val(a)= 1
無限に行く

'Gosub'ステートメントは 'Goto'ステートメントの代替バージョンですが、いくつかの違いがあります。それらが実行されると、プログラムは強制的に特定の行にジャンプします。 'Goto'ステートメントと異なる点は、 'return'ステートメントがその後に続くことです。 'return'ステートメントが実行されると、プログラムは対応する 'Gosub'ステートメントの次の行に戻り、実行を継続します。 'return'ステートメントが 'Gosub'ステートメントなしで発生した場合、そのステートメントは無視されます。 'Goto'ステートメントと同様に、 'Gosub'ステートメントは 'with'ブロックで使用することも、インターファンクショナルで使用することもできず、スクリプトや関数がすべての 'gosub'ステートメントを終了せずに終了すると、現在の構造がクリアされます。 'Gosub'ステートメントは 'sleep'関数の使用可能性に影響を与えないので、 'sleep'関数はサブプロシージャ内で使用することができ、この状況ではリターンスタックはクリアされません。

Gosubライン

次に、 'gosub'ステートメントを使って反復する例を示します。
mysub:
val(a)= val(a)+ 1
val(a)<10の場合
Gosub mysub
終了の場合
戻る

  • 最終更新:2017-02-20 22:58:48

このWIKIを編集するにはパスワード入力が必要です

認証パスワード