Expression2 Reference訳

このページはこちらのリファレンスを訳したものです。

不明な点などあればこちらまでお願いします。

Features

Syntax

E2の構文に慣れるのには少し時間がかかるでしょう。しかしE2はあなたの想像を超える素晴らしい機能を提供します。ここで注意しておきたいのが、一つのことをやるには複数の方法があるということです。

E2は真偽値を数値型で表します。0がfalse、0以外がtrueに対応します。

Syntax Example Description
# #This is a comment #の後ろに続く、同じ行の文字はコメントになります。(実行される時にコメント部分は無視されます。)
#[Comment]# #[This is a multi-line comment]# #[から#]までの間にある文字はすべてコメントになります。
if() {} if(A) {B = C} Aがtrueの時に{}内の文が実行されます。
else {} else {A = B} 文の前にif文またはelseif文が必要です。直前のifまたはelseif文が実行されなかったときに{}内の文が実行されます。
elseif() {} elseif(A) {B = C} 文の前にif文またはelseif文が必要です。直前のifまたはelseif文が実行されなかったときに、Aがtrueであれば{}内の文が実行されます。
( ? : ) D = A ? B : C もしAがtrueならBの値が返され、そうでないならCの値が返されます。A ?: BはA ? A : Bと同じです。
& if(A & B) {C = 1} AとBが両方trueの時にtrueを返します。
| if(A | B) {C = 1} AかBのどちらかがtrueの時にtrueを返します。
! if(!A) {B = 1} 変数の前に置かれる必要があります。Aがfalseの時にtrueを返します。
~ if(~Button & Button) {DO stuff} 入力変数の前に置かれる必要があります。入力変数の値が変化したときにtrueを返します。
$ Opitch = Pitch + $Pitch * 3 入力変数、出力変数、永続変数の前に置かれる必要があります。現在と前の実行での値の変化量を返します。値の変化をチェックするのに使われます。
-> ->Input or ->Output Inputと一緒に使われた場合、Inputが何かにWireされているならtrueを返します。Outputと一緒に使われた場合、OutputのWire数を返します。
#ifdef #ifdef entity:setAlpha(number) 指定された関数がサーバーで使えるかをチェックします。
#else #else #ifdefの後に置かれる必要があります。指定された関数がサーバーで使えない場合に、この文の後に続くコードを実行します。
#endif #endif #ifdefまたは#elseの後に置かれる必要があります。#ifdef構文を閉じます。

variable

E2では変数名は大文字で始まる必要があります。以下は例です。

Syntax Description
@persist variable これは正しく動きません。変数名は大文字で始まる必要があります。
@persist Variable これは変数名が大文字で始まっているので、正しく動きます。

@trigger directive

Trigger directiveはどの入力変数の値が変化したときにプログラムが実行されるかを選ぶことができます。使用可能な値はall/none、入力変数のリストです。

Syntax Description
@trigger all デフォルト設定です。すべての入力変数がtriggerとなります。
@trigger none すべての入力変数に対してtriggerを無効にします。
trigger Time Button 入力変数Time, Buttonをtriggerにします。Time, Buttonの値が変化したときにコードが実行されます。

@model directive

model directiveはE2のモデルを変更するのに使います。@model "models/props_phx/amraam.mdl"のように使います。

@autoupdate directive

autoupdate directiveを使用するとautoupdateが有効になります。autoupdateを使用するとdupeされた時にE2の内容が新しくなっている場合、自動的に古いほうが新しいほうに書き換えられます。

Loops

E2には3種類のループ構造があります。while, for, foreachループです。これらの構文は1回の実行でループ構造内を何回も繰り返すことが可能です。ただし、あまりにも多くの処理をさせるとE2は自動的に動作を停止します。

Syntax Example Description
while() {} while(A) {B++} Aがtrueである間、{}内の文が繰り返し実行されます。Aがfalseである場合、ループ構造の終わりから実行されます。気をつけなければいけないのはAの評価は最初に行われるということです。
for() {} for(I = A, B, C) {} AがBになるまでループが続き、ループが繰り返されるたびにAの値がCだけ増加します。Cの値は省略可能で、省略された場合にはC = 1となります。ここでAとBはループ内で新たに作られる変数だということに気をつけてください。
foreach () {} foreach(K, V:type=Table) {} Tableの中にあるVのデータ型の要素を列挙します。指定されたデータ型ではない要素はスキップされます。それぞれの要素の内容を変更することが可能です。しかし新たに要素を追加することはできません。
continue if(A) {continue while/for/foreachループ内でのみ使用できます。この文が実行されると即座にループ構造の頭まで戻ります。その時continueより下にある文は実行されません。
break if(A) {break} while/for/foreachループ内でのみ使用できます。この分が実行されると即座にループ構造を出ます。その時breakより下に或る文は実行されません。

Performance

E2は多くの処理をこなすことができますが、E2にはquotaというサーバーをラグから守る機能があります。もし1tickのopsの総量がtickquotaを超えた場合、E2は即座に動作を停止します。また1tickごとにsoftquotaがカウンターに加算されます。もしカウンターの値がhardquotaを超えた場合、E2は即座に動作を停止します。

Editor Shortcut Keys

Shortcut Description
Ctrl-Space コードが間違っていないか検証するバリデートを行います。
Ctrl-S コードをセーブします。
Ctrl-Q エディタを閉じます。
Ctrl-Z 一つ前の変更に戻ります。
Ctrl-Y 一つ後の変更に戻ります。
Ctrl-X 指定された範囲のコードを切り取ります。
Ctrl-C 指定された範囲のコードをコピーします。
Ctrl-V コードをペーストします。
Ctrl-A コードをすべて選択します。
Ctrl-l / Tab インデントします。
Ctrl-O / Shift-Tab アウトデントします。
Ctrl-K 指定された範囲をコメントにします。
Ctrl-Shift-K 指定された範囲をコメントから戻します。
Ctrl-F 指定されたキーワードをコード中から見つけます。
Ctrl-H 指定されたキーワードを置き換えます。
Ctrl-Up 上にスクロールします。
Ctrl-Down 下にスクロールします。
Ctrl-Left 左に一単語だけ飛びます。
Ctrl-Right 右に一単語だけ飛びます。
Ctrl-Home 最初の行に飛びます。
Ctrl-End 最後の行に戻ります。

データ型

E2には数個のデータ型があります。以下の表に示します。

Shorthand Datatype
Number
/ / 2D / 3D / 4D Vector
Angle
String
Entity
Array
Table
Ranger Data
Bone
/ / 2x2 / 3x3 / 4x4 Matrix
Wirelink
Complex number
Quaternion

Number

Description

Numberは数値を表します。

Commands

Function Returns Description
N1 + N2 加算します。
N1 - N2 減算します。
N1 * N2 乗算します。
N1 / N2 割算します。
N1 ^ N2 累乗します。
N1 % N2 N1をN2で割った時の余りを返します。注意: -1 % 3 = 2になります。
mod(N1, N2) N1をN2で割った時の余りを返します。 注意: mod(-1, 3) = -1になります。
sqrt(N1) N1の二乗根を返します。
cbrt(N1) N1の三乗根を返します。
root(N1, N2) N1のN2乗根を返します。
e() ネイピア数を返します。
exp(N1) eのN1乗を返します。
ln(N1) N1の自然対数を返します。
log2(N1) 2を底とするN1の対数を返します。
log10(N1) N1の常用対数を返します。
log(N1, N2) N2を底とするN1の対数を返します。
abs(N1) N1の絶対値を返します。
ceil(N1) N1に最も近い、N1以上の整数を返します。
ceil(N1, N2) 小数点N2桁以下の精度でceil(N1)を返します。
floor(N1) N1に最も近い、N1以下の整数を返します。
floor(N1, N2) 小数点N2桁以下の精度でfloor(N1)を返します。
round(N1) N1を四捨五入した値を返します。
rount(N1, N2) 小数点N2桁以下の精度でround(N1)を返します。
int(N1) N1の整数部分を返します。
frac(N1) N1の小数部分を返します。
clamp(N1, N2, N3) N1がN2以下の時にN2を返し、N1がN3以上の時にN3を返し、どちらでもないときにN1を返します。
inrange(N1, N2, N3) N1が区間[N2, N3]に入っているときに1を返し、そうでないときに0を返します。
sign(N1) N1が0未満の時に-1、N1が0のとき0、N1が0以上の時に1を返します。
min(N1, N2) 最小値を返します。
min(N1, N2, N3) 最小値を返します。
min(N1, N2, N3, N4) 最小値を返します。
max(N1, N2) 最大値を返します。
max(N1, N2, N3) 最大値を返します。
max(N1, N2, N3, N4) 最大値を返します。
random() 0から1までのランダムな小数を返します。
random(N1) 0からN1までのランダムな小数を返します。
random(N1, N2) N1からN2までのランダムな小数を返します。
randint(N1) 0からN1までのランダムな整数を返します。
randint(N1, N2) N1からN2までのランダムな整数を返します。
pi() 円周率を返します。
toRad(N1) N1度をラジアンに変換します。
toDeg(N1) N1ラジアンを度に変換します。
sin(N1) sin(N1)を返します。N1は度です。
cos(N1) cos(N1)を返します。N1は度です。
tan(N1) tan(N1)を返します。N1は度です。
cot(N1) cot(N1)を返します。N1は度です。
sec(N1) sec(N1)を返します。N1は度です。
csc(N1) csc(N1)を返します。N1は度です。
asin(N1) asin(N1)を返します。N1は度です。
acos(N1) acos(N1)を返します。N1は度です。
atan(N1) atan(N1)を返します。N1は度です。
atan(N1, N2) atan(N1/N2)を返します。atan2として知られています。N1, N2は度です。
sinh(N1) sinh(N1)を返します。N1は度です。
cosh(N1) cosh(N1)を返します。N1は度です。
tanh(N1) tanh(N1)を返します。N1は度です。
coth(N1) coth(N1)を返します。N1は度です。
sech(N1) sech(N1)を返します。N1は度です。
csch(N1) csch(N1)を返します。N1は度です。
sinr(N1) sin(N1)を返します。N1はラジアンです。
cosr(N1) cos(N1)を返します。N1はラジアンです。
tanr(N1) tan(N1)を返します。N1はラジアンです。
cotr(N1) cot(N1)を返します。N1はラジアンです。
secr(N1) sec(N1)を返します。N1はラジアンです。
cscr(N1) csc(N1)を返します。N1はラジアンです。
asinr(N1) asin(N1)を返します。N1はラジアンです。
acosr(N1) acos(N1)を返します。N1はラジアンです。
atanr(N1) atan(N1)を返します。N1はラジアンです。
atanr(N1, N2) atan(N1, N2)を返します。N1, N2はラジアンです。
A = B AにBを代入します。
A++ Aをインクリメントします。
A-- Aをデクリメントします。
A += B Aの値をBだけ増やします。
A -= B Aの値をBだけ減らします。
A *= B AにBを掛けた値を代入します。
A /= B AをBで割った値を代入します。
A %= B AをBで割った余りを代入します。
A ^= B AをB乗します。
A == B AとBが等しいとき1を返し、そうでないとき0を返します。
A != B AとBが等しくないとき1を返し、そうでないとき0を返します。
A > B AがBより大きいとき1を返し、そうでないとき0を返します。
A < B AがBより小さいとき1を返し、そうでないとき0を返します。
A >= B AがBより大きい、または等しいとき1を返し、そうでないとき0を返します。
A <= B AがBより小さい、または等しいとき1を返し、そうでないとき0を返します。

String

Description

Stringは文字列操作のために使われます。

Commands

ダブルクオートで文字列を囲むことでstringを作れます。例: "text goes here"
等号==と不等号!=、文字列連結演算子(+)を使用できます。文字列と数値を連結することも可能です。

Function Returns Description
S[N1] 文字列SのN1番目の文字列を返します。読み取り専用です。
S:index(N1) 文字列SのN1番目の文字列を返します。
S:length() 文字列Sの長さを返します。
S:upper() 文字列Sの文字をすべて大文字にします。
S:lower() 文字列Sの文字をすべて小文字にします。
S:sub(N1) 文字列Sにおいて1からN1番目までの文字列を返します。
S:sub(N1, N2) 文字列SにおいてN1からN2番目までの文字列を返します。
S:left(N1) 文字列Sにおいて左からN1番目までの文字列を返します。
S:right(N1) 文字列Sにおいて右からN1番目までの文字列を返します。
S:find(S1) 文字列S中に文字列S1が存在する場合、その最初の位置を返します。存在しない場合0を返します。
S:find(S1, N1) 文字列SにおいてN1番目より後ろにある文字列に対してS:find(S1)を適用します。
S:findRE(S1) 正規表現を用いて文字列SにS:find(S1)を適用します。
S:findRE(S1, N1) 正規表現を用いて文字列SにS:find(S1, N1)を使用します。
S:explode(S1) 文字列Sを文字列S1ごとに区切り、配列として返します。
S:repeat(N1) 文字列SをN1回だけ繰り返した文字列を返します。
S:trim() 文字列Sの最初と最後のスペースを取り除いた文字列を返します。
S:trimLeft() 文字列Sの最初のスペースを取り除いた文字列を返します。
S:trimRight() 文字列Sの最後のスペースを取り除いた文字列を返します。
S:replace(S1, S2) 文字列S中の文字列S1を文字列S2に置き換えます。
S:replaceRE(S1, S2) 正規表現を用いて文字列SにS:replace(S1, S2)を適用します。
S:reverse() 文字列Sを反転した文字列を返します。
S:toNumber() 文字列Sを数値に変換します。
S:toNumber(N1) 文字列SをN1を基底とする数値に変換します。
toString(N1) 数値N1を文字列に変換します。
N:toString() 数値Nを文字列に変換します。
toString(N1, N2) 数値N1をN2進法の数値にし、文字列にします。N2が16の場合、16進数表記になります。
N:toString(N1) 数値NをN1進法の数値にし、文字列にします。N2が16の場合、16進数表記になります。
toChar(N1) ASCIIコードを文字に変換します。
toByte(S1) 文字S1をASCIIコードに変換します。
toByte(S1, N1) 文字列S1のN1番目の文字をASCIIコードに変換します。
format(S1, ...) Luaのstring.formatと同じです。
S:match(S1) Luaのstring.match(S, S1)を実行し、配列として返します。
S:match(S1, N1) Luaのstring.match(S, S1, N1)を実行し、配列として返します。
S:matchFirst(S1) Luaのstring.match(S, S1)を実行し、最初にマッチした文字か、空の文字を返します。
S:matchFirst(S1, N1) Luaのstring.match(S, S1, N1)を実行し、最初にマッチした文字か、空の文字を返します。

Entity

Description

これらのEntity関数はワールドにあるEntity(プロップなど)から情報を受け取ったり、Entityを操作することを可能にします。Entityはtarget finder, entity markerなどのツール、entity()などの関数から取得することが可能です。

E2内部でEntityを取得した場合、Entityの情報が直接E2に送られるので、beacon-sensorなどのツールを介して情報を渡すより高速に動作します。

Valid Entity(存在するEntity)は条件式においてtrueを返します。これを用いて、削除されたEntityに対して操作を行った時のLuaエラーを回避することができます。

Commands

Entityで使える演算子は等号と不等号だけです。また、if(Entity)はEntityがValid Entityである時のみ実行されます。


Function Returns Description
entity(N1) IDがN1であるEntityを返します。N1が指定されていないときにはE2それ自身のEntityを返します。
owner() E2の所有者のEntityを返します。
E:id() Entity EのIDを返します。
noentity() Invalid Entity(存在しないEntity)を返します。
E[S1, type] = X Entity EのS1要素にデータ型typeであるXを代入します。
E[S1, type] = X type Entity EからS1要素のデータを取得します。
E:type() Entity Eが属しているクラス名を返します。
E:model() Entity Eのモデルパスを返します。
E:owner() Entity Eの所有者のEntityを返します。
E:name() Entity Eの名前を返します。
E:steamID() Entity EのSteamIDを返します。
E:isSteamFriend(E1) Entity EがEntity E1とSteamでフレンドであるかどうかを返します。
E:steamFriends() Entity EのSteamフレンドのうち、同じサーバー上にいるフレンドのEntity配列を返します。
players() サーバー上にいるすべてのプレイヤーをEntity配列として返します。
playersAdmins() サーバー上にいるすべてのAdminをEntity配列として返します。
playersSuperAdmins() サーバー上いるすべてのSuperAdminをEntity配列として返します。
E:pos() Entity Eの位置を返します。
E:eye() Entity Eの目が向いている方向を返します。
E:eyeAngles() Entity Eの目が向いている角度を返します。
E:eyeTrace() Entity Eの目の位置からトレースした結果を返します。rangerOffset(16384, E:shootPos(), E:eye())と同じです。
E:shootPos() Enitty Eの目の位置を返します。
E:aimEntity() Entity EがAimしているEntityを返します。
E:aimBone() Entity EがAimしているBoneを返します。
E:aimPos() Entity EがAimしている位置を返します。
E:aimNormal() Entity EがAimしている位置の地面に垂直な正規化された方向を返します。
E:frags() Entity Eが何Killしたかを返します。
E:deaths() Entity Eが何Deathしたかを返します。
E:team() Entity Eが属しているチームのナンバーを返します。
N:teamName() チームナンバーNのチームの名前を返します。
teamColor(N1) チームナンバーN1のチームカラーを返します。
E:forward() Entity Eの前方向を返します。
E:right() Entity Eの右方向を返します。
E:up() Entity Eの上方向を返します。
E:vel() Entity Eの速度を返します。
E:velL() Entity Eのローカル速度を返します。
E:boxCenter() Entity Eのバウンディングボックス(衝突判定用)の中心をローカル座標で返します。
E:boxCenterW() E:toWorld(E:boxCenter())と同じですが、こちらは高速に動作します。
E:boxMax() Entity Eのバウンディングボックスのうち、中心から最も離れている角の位置をローカル座標で返します。
E:boxMin() Entity Eのバウンディングボックスのうち、中心から最も近い角の位置をローカル座標で返します。
E:boxSize() Entity Eのバウンディングボックスの大きさを(奥行、横幅、高さ)として返します。
E:nearestPoint(V1) Vector V1にもっとも近いEntity Eのバウンディングボックス上の位置を返します。
E:aabbMax() Entity Eの軸平行バウンディングボックスのうち、中心から最も離れている角の位置をローカル座標として返します。
E:aabbMin() Entity Eの軸平行バウンディングボックスのうち、中心から最も近い角の位置をローカル座標として返します。
E:aabbSize() Entity Eの軸平行バウンディングボックスの大きさを返します。
E:toWorld(V1) Entity Eを中心とするローカル座標V1をワールド座標に変換します。
E:toLocal(V1) ワールド座標V1をEntity Eを中心とするローカル座標に変換します。
E:toWorld(A1) Entity Eを中心とするローカルアングルA1をワールドアングルに変換します。
E:toLocal(A1) ワールドアングルA1をEntity Eを中心とするローカルアングルに変換します。
E:toWorldAxis(V1) Entity Eを中心とするローカル回転軸をワールド回転軸に変換します。
E:toLocalAxis(V1) ワールド回転軸V1をEntity Eを中心とするローカル回転軸に変換します。
E:angVel() Entity Eの角速度を返します。
E:angVelVector() Entity Eの回転方向をベクトルの方向、速さを大きさとするローカルベクトルを返します。
E:angles() Entity Eの角度を返します。
E:radius() Entity Eの半径を返します。
E:height() Entity Eの高さを返します。
E:bearing(V1) Entity Eから見たワールド座標V1の横方向の位置を角度で返します。
E:elevation(V1) Entity Eから見たワールド座標V1の縦方向の位置を角度で返します。
E:heading(V1) Entity Eから見たワールド座標V1の横方向と縦方向の位置を角度で返します。
E:health() Entity Eのヘルスの値を返します。
E:armor() Entity Eのアーマーの値を返します。
E:volume() Entity Eの体積を返します。
E:mass() Entity Eの質量を返します。
E:timeConnected() Entity Eのサーバーへの接続経過時間を返します。
E:massCenter() Entity Eの重心の位置を返します。
E:massCenterL() Entity Eの重心をローカル座標として返します。
E:setMass(N1) Entity Eの質量をN1にします。
E:inertia() Entity Eの慣性テンソルを(lxx, lyy, lzz)の形で返します。
E:elasticity() Entity Eの弾力性を返します。
E:friction() Entity Eの摩擦係数を返します。
E:applyForce(V1) Entity Eに方向V1、大きさ|V1|の力を加えます。
E:applyOffsetForce(V1, V2) Entity EにV2の位置によるV1の力を加えます。
E:applyAngForce(A1) Entity EにローカルアングルA1のトルクを加えます。
E:applyTorque(V1) Entity Eに回転方向とトルクの大きさを表すローカルベクトルV1のトルクを加えます。
E:isPlayer() Entity Eがプレイヤーかどうかを返します。
E:isOnFire() Entity Eがファイアーボタンを押しているかどうかを返します。
E:isWeapon() Entity EがWeaponかどうかを返します。
E:isNPC() Entity EがNPCかどうかを返します。
E:isFrozen() Entity EがFrozenかどうかを返します。
E:isVehicle() Entity EがVehicleかどうかを返します。
E:isWorld() Entity EがWorldかどうかを返します。
E:isOnGround() Entity Eが地面にいるかどうかを返します。
E:isUnderWater() Entity Eが水中にいるかどうかを返します。
E:isPlayerHolding() Entity Eが他のプレイヤーにホールドされているかどうかを返します。
E:isAdmin() Entity EがAdminかどうかを返します。
E:isSuperAdmin() Entity EがSuperAdminかどうかを返します。
E:isAlive() Entity Eが生きているかどうかを返します。
E:isCrouch() Entity Eがしゃがんでいるかどうかを返します。
E:isNoclip() Entity EがNoclipモードかどうかを返します。
E:friends() Entity Eのプロッププロテクションのフレンドを配列として返します。
E:trusts(E2) Entity E2がEntity Eのプロッププロテクションのフレンドであるかどうかを返します。
E:keyAttack1() Entity EがPrimary fireキーを押しているかどうかを返します。
E:keyAttack2() Entity EがSecondary fireキーを押しているかどうかを返します。
E:keyUse() Entity EがUseキーを押しているかどうかを返します。
E:keyReload() Entity EがReloadキーを押しているかどうかを返します。
E:keyZoom() Entity EがZoomキーを押しているかどうかを返します。
E:keyWalk() Entity EがWalkキーを押しているかどうかを返します。
E:keySprint() Entity EがSprintキーを押しているかどうかを返します。
E:keyDuck() Entity EがDuckキーを押しているかどうかを返します。
E:keyTurnLeft() Entity EがTurnLeftキーを押しているかどうかを返します。
E:keyTurnRight() Entity EがTurnRightキーを押しているかどうかを返します。
E:keyPressed(S1) Entity EがS1キーを押しているかどうかを返します。キーの一覧はこちらで確認できます。S1には"KEY_"をつける必要はないですが、大文字小文字は区別されます。
E:isTyping() Entity Eがチャットにメッセージを入力しているかどうかを返します。
E:driver() Entity EのドライバーEntityを返します。ドライバーがいない場合nilが返されます。
E:passenger() Entity Eの乗客を返します。Eが一人席の場合、ドライバーが返されます。
E:vehicle() プレイヤーの乗るビーグルのEntityを返します。
E:lockPod(N) ビーグルを1のときロック、0のときアンロックします。
E:ejectPod() ビーグルに乗るプレイヤーをイジェクトします。
E:killPod() ビーグルに乗るプレイヤーをキルします。
E:clip1() Entity Eのプライマリーウェポンの弾数を返します。
E:clip2() Entity Eのセカンダリーウェポンの弾数を返します。
E:primaryAmmoType() Entity Eのプライマリーの弾の種類を返します。
E:secondaryAmmoType() Entity Eのセカンダリーの弾の種類を返します。
E:ammoCount(S1) Entity Eの種類S1の弾数を返します。
E:tool() Entity Eが現在持っているツールの名前を返します。
E:removetrails() Entity EのTrailを消します。
E:setTrails(N1, N2, N3, S1, V1, N4) 初期サイズ、終端サイズ、長さ、マテリアルのパス、色、アルファ値の属性を持つTrailをEntity Eに追加します。
E:setTrails(N1, N2, N3, S1, V1, N4, N5, N6) 初期サイズ、終端サイズ、長さ、マテリアルのパス、色、アルファ値、アタッチメントIDの属性を持つTrailをEntity Eに追加します。
E:lookupAttachment(S1) Entity EのAttackmentName S1のAttachmentIDを返します。
E:attachmentPos(N1) Entity EのAttackmentID N1のAttachmentPositionを返します。
E:attachmentAng(N1) Entity EのAttackmentID N1のAttachmentAngleを返します。
E:attachmentPos(S1) Entity EのAttackmentName S1のAttachmentPositionを返します。
E:attachmentAng(S1) Entity EのAttachmentName S1のAttachmentAngleを返します。

Vector

Description

E2ではベクトルが使用可能です。ベクトルは数の扱いを楽にします。また、物を作るうえで重要なツールとなります。

E2では二次元と四次元のベクトルも使用可能です。四次元ベクトルは行列と組み合わせて使われます。

数とベクトルの間で演算を行うことも可能です。例: 5*vec(1, 1, 1)
次元が異なるベクトル間では演算子が使えないことに注意してください。

2D Vector Commands

二次元ベクトルの関数です。

Function Returns Description
vec2(N, N) 二次元ベクトル(N, N)を返します。
vec2() 二次元ベクトル(0, 0)を返します。
vec2(V) 三次元ベクトルVを二次元ベクトルに変換します。Z要素は捨てられます。
vec2(V4) 四次元ベクトルV4を二次元ベクトルに変換します。Z, W要素は捨てられます。
V2:cross(V2) 二つのベクトルのクロス積を返します。
shift(V2) 要素同士を交換します。
V2:rotate(N) V2を角度Nだけ回転します。
V2:toAngle() V2の角度を-180から180の範囲で返します。
V:dehomogenized() 2次元同次座標ベクトルVを二次元デカルト座標ベクトルに変換します。

3D Vector Commands

三次元ベクトルの関数です。

Function Returns Description
vec(N, N, N) 三次元ベクトル(N, N, N)を返します。
vec() 三次元ベクトル(0, 0, 0)を返します。
vec(V2) 二次元ベクトルを三次元ベクトルに変換します。Z成分は0になります。
vec(V2, N) 二次元ベクトルを三次元ベクトルに変換します。Z成分はNになります。
vec(V4) 四次元ベクトルを三次元ベクトルに変換します。W成分は無視されます。
vec(A) 角度からベクトルを作成します。
randvec() ランダムな単位ベクトルを返します。
randvec(N1, N2) 各成分がN1からN2までのランダムなベクトルを返します。
randvec(V1, V2) ベクトルV1からV2までのランダムなベクトルを返します。
V:cross(V) 二つのベクトルのクロス積を返します。
shiftL(V) 各成分を一つ左にずらします。shiftL(x, y, z) = (y, z, x)
shiftR(V) 各成分を一つ右にずらします。shiftR(x, y, z) = (z, x, y)
V:rotate(A) Vを(0, 0, 0)を中心に角度Aだけ回転したものを返します。
V:rotate(N, N, N) Vを(0, 0, 0)を中心に角度(N, N, N)だけ回転したものを返します。
V:toAngle() Vの方向を角度で返します。
V4:dehomogenized() 同時座標ベクトルV4をデカルト座標ベクトルに変換します。
pointHasContent(V, S) SはCONTENTS_列挙型の後半部分の文字列になります。複数のCONTENTSタイプをカンマ区切りで指定可能です。 例: "water,solid" "empty,transparent" この関数は指定されたタイプが位置Vに存在する場合1を返します。
pointContents(V) 位置Vに存在するすべてのContentタイプをカンマ区切りの文字列で返します。
V:isInWorld() Vがワールドの中にあるなら1を、そうでないなら0を返します。
toWorld(V, A, V, A) 新しい座標を返します。
toWorldAng(V, A, V, A) 新しい角度を返します。
toWorldPosAng(V, A, V, A) 新しい位置、角度を格納した配列を返します。
toLocal(V, A, V, A) 新しい位置を返します。
toLocalAng(V, A, V, A) 新しい角度を返します。
toLocalPosAng(V, A, V, A) 新しい位置、角度を格納した配列を返します。
bearing(V1, A, V2) 位置V1から角度Aで見た時のV2の位置にあたる角度のうち、横方向の角度を返します。
elevation(V1, A, V2) 位置V1から角度Aで見た時のV2の位置にあたる角度のうち、縦方向の角度を返します。
heading(V1, A, V2) 位置V1から角度Aで見た時のV2の位置にあたる角度を返します。

4D Vector Commands

四次元ベクトルの関数です。

Function Returns Description
vec4(N, N, N, N) 四次元ベクトル(N, N, N, N)を返します。
vec4() 四次元ベクトル(0, 0, 0, 0)を返します。
vec4(V2) 二次元ベクトルを四次元ベクトルに変換します。Z, W成分は0になります。
vec4(V2, N1, N2) 二次元ベクトルを四次元ベクトルに変換します。Z, W成分はそれぞれN1, N2になります。
vec4(V2, V2) 二つの二次元ベクトルを組み合わせて四次元ベクトルにします。
vec4(V) 三次元ベクトルを四次元ベクトルに変換します。W成分は0になります。
vec4(V, N) 三次元ベクトルを四次元ベクトルに変換します。W成分はNになります。
shiftL(V4) 各成分を左にずらします。shiftL(x, y, z, w) = (y, z, w, x)
shiftR(V4) 各成分を右にずらします。shiftR(x, y, z, w) = (w, x, y, z)

Common Vector Commands

二次元ベクトルと三次元ベクトルで使える関数です。ここでは三次元ベクトルとして書かれていますが、二次元ベクトルと四次元ベクトルにも同じように使えて、同じ次元のベクトルが返されます。

Function Returns Description
ceil(V) 各成分をその値より大きい、最も近い整数にします。
ceil(V, N) ceil(V)を小数点以下第N位の精度で行います。
floor(V) 各成分をその値を下回らない、最も近い整数にします。
floor(V, N) floor(V)を小数点以下第N位の精度で行います。
round(V) 各成分を四捨五入します。
round(V, N) round(V)を小数点以下第N位の精度で行います。
mod(V, N) 各成分をNで割った余りを成分とするベクトルを返します。
mod(V1, V2) V1の各成分をV2の各成分で割った余りを成分とするベクトルを返します。
clamp(V, V1, V2) Vを最小V1、最大V2の範囲におさえます。
clamp(V, N1, N2) Vを長さN1からN2の範囲におさえます。
min(V, V) 長さが最小のものを返します。
max(V, V) 長さが最大のものを返します。
minVec(V, V) それぞれのベクトルの成分の最小値を成分とするベクトルを返します。
maxVec(V, V) それぞれのベクトルの成分の最大値を成分とするベクトルを返します。
mix(V, V, N) 二点をN:1-Nに内分する点を返します。例 mix(V1, V2, 0.5)はV1とV2の中点を返します。
positive(V) 各成分を正の値にしたベクトルを返します。
inrange(V, Vmin, Vmax) VがVminからVmaxの範囲にあるかどうかを返します。
toRad(V) 各成分をラジアンに変換したものを返します。
toDeg(V) 各成分を度に変換したものを返します。
V:length() ベクトルの長さを返します。
V:length2() ベクトルの長さを二乗したものを返します。
V:distance(V) 二点間の距離を返します。
V:distance2(V) 二点間の距離を二乗したものを返します。
V:normalized() Vの単位ベクトルを返します。
V:dot(V) ドット積(内積)を返します。
V:outerProduct(V) 直積(テンソル積)を行列(テンソル)で返します。
V:x() X成分を返します。
V:y() Y成分を返します。
V:z() Z成分を返します。
V:w() W成分を返します。
V:setX(N) X成分をNにしたものを返します。
V:setY(N) Y成分をNにしたものを返します。
V:setZ(N) Z成分をNにしたものを返します。
V:setW(N) W成分をNにしたものを返します。
V:toString() ベクトルを文字列で表したものを返します。"[X,Y,Z]"

Matrix

Description

2x2, 3x3そして4x4行列が使用可能です。これらはベクトルと数を含むさらに高度な操作のためにあります。ベクトルと同様にこれらに関連する知識があれば強力なツールとなります。

以下の操作がサポートされています。
  • 行列の加算と減算
  • スカラー、ベクトル、行列との乗算
  • スカラーによる除算
  • べき算(-1から2までの整数)
  • 行列のデルタ

注意: ベクトルと同様に3x3行列はmatrix, 2x2と4x4行列はmatrix2, matrix4と表されます。

三次元ベクトルと同様にset, swap関数は元の行列を変更しません。

同じサイズのベクトルと行列の間だけで演算が可能なことに注意してください。

2x2 Matrix Commands

2x2行列の関数です。

Function Returns Description
identity2() 2x2の単位行列を作ります。
matrix2() 2x2の零行列を作ります。
matrix2(N, N, N, N) 2x2の行列を(1, 1), (1, 2), (2, 1), (2, 2)の順番で作ります。
matrix2(V2, V2) ベクトルを列ごとに使い、行列を作ります。
rowMatrix(V2, V2) ベクトルを行ごとに使い、行列を作ります。
matrix2(M) 3x3行列を2x2行列に変換します。(i, 3), (3, j)は省略されます。
matrix2(M4) 4x4行列を2x2行列に変換します。(i, 3), (i, 4), (3, j), (4, j)は省略されます。
M2:swapRows() 行を交換します。
M2:swapColumns() 列を交換します。
M2:setRow(N1, N2, N3) 第N1行目を(N2, N3)にします。
M2:setRow(N, V2) 第N行目をV2にします。
M2:setColumn(N1, N2, N3) 第N1列目を(N2, N3)にします。
M2:setColumn(N, V2) 第N列目をV2にします。

3x3 Matrix Commands

3x3行列の関数です。

Function Returns Description
identity() 3x3の単位行列を返します。
matrix() 3x3の零行列を返します。
(N1, N2, ..., N9) 3x3の行列を(1, 1), (1, 2), (1, 3), (2, 1), ...の順番で作ります。
matrix(V, V, V) 列ごとにベクトルから行列を作ります。
rowMatrix(V, V, V) 行ごとにベクトルから行列を作ります。
matrix(M2) 2x2行列を3x3行列に変換します。(i, 3), (3, j)は0になります。
matrix(M4) 4x4行列を3x3行列に変換します。(i, 4), (4, j)は省略されます。
M:swapRows(N, N) 指定された行を入れ替えます。
M:swapColumns(N, N) 指定された列を入れ替えます。
M:setRow(N1, N2, N3, N4) 第N1行目を(N2, N3, N4)にします。
M:setRow(N, V) 第N行目をVにします。
M:setColumn(N1, N2, N3, N4) 第N1列目を(N2, N3, N4)にします。
M:setColumn(N, V) 第N列目をVにします。
setDiagonal(N, N, N) 対角線上の成分を(N, N, N)にします。
M:setDiagonal(V) 対角線上の成分をVにします。
matrix(E) 参照フレーム行列をEのローカルな方向ベクトルから列ごとに(x, y, z)の順番で作ります。
matrix(A) 参照フレーム行列を角度Aから作ります。この行列をかけることは行列を角度Aだけ回転するのと同じです。
M:toAngle() 3x3行列から角度を返します。
M:x() ローカルなX方向ベクトルを参照フレーム行列から返します。M:column(1)と同じです。
M:y() ローカルなY方向ベクトルを参照フレーム行列から返します。M:column(2)と同じです。
M:z() ローカルなZ方向ベクトルを参照フレーム行列から返します。M:column(3)と同じです。
mRotation(V, N) 3x3の回転行列を作ります。Vは軸の方向、Nは角度です。例: ベクトル(7, 8, 9)を軸(1, 1, 0)周りに50度回転する場合、V = mRotation(vec(1, 1, 0), 50) * vec(7, 8, 9)

4x4 Matrix Commands

4x4行列の関数です。

Function Returns Description
identity4() 4x4の単位行列を返します。
matrix4() 4x4の零行列を返します。
matrix4(N1, N2, ..., N16) 4x4の行列を(1, 1), (1, 2), (1, 3), (2, 1)の順番で作ります。
matrix(V4, V4, V4, V4) ベクトルを列ごとに使い、4x4の行列を作ります。
rowMatrix4(V4, V4, V4, V4) ベクトルを行ごとに使い、4x4の行列を作ります。
matrix4(M2) 2x2行列を4x4行列に変換します。(i, 3), (i, 4), (3, j), (4, j)は0になります。
matrix4(M2, M2, M2, M2) 2x2行列から4x4行列を作ります。
matrix4(M) 3x3行列から4x4行列を作ります。(i, 4), (4, j)は0になります。
M4:swapRows(N, N) 行を交換します。
M4:swapColumns(N, N) 列を交換します。
M4:setRow(N1, N2, N3, N4, N5) 第N1行目を(N2, N3, N4, N5)にします。
M4:setRow(N, V4) 第N行目をV4にします。
M4:setColumn(N1, N2, N3, N4, N5) 第N1行目を(N2, N3, N4, N5)にします。
M4:setColumn(N, V4) 第N行目をV4にします。
M4:setDiagonal(N, N, N, N) 対角線上の成分を(N, N, N, N)にします。
M4:setDiagonal(V4) 対角線上の成分をV4にします。
matrix4(E) 4x4参照フレーム行列をEのローカルな方向ベクトルから列ごとに(x, y, z, pos)の順で作成します。最下行は(0, 0, 0, 1)になります。
matrix4(A) 4x4参照フレーム行列を角度Aから作成します。この行列をかけることは行列を角度Aだけ回転するのと同じです。
matrix4(A, V) 4x4参照フレーム行列を角度Aと位置Vから作成します。この行列をかけることは行列を角度Aだけ回転し、Vだけ移動するのと同じです。
M4:x() 4x4参照フレーム行列からx方向のベクトルを返します。
M4:y() 4x4参照フレーム行列からy方向のベクトルを返します。
M4:z() 4x4参照フレーム行列からz方向のベクトルを返します。
M4:pos() 4x4参照フレーム行列から位置ベクトルを返します。
inverseA(M4) 4x4アフィン変換行列の逆行列を返します。

Common Matrix Commands

2x2, 3x3, 4x4行列で使用可能な関数です。ここでは3x3行列として書かれていますが、2x2行列と4x4行列にも同じ方法で使用できます。同じサイズのベクトルまたは行列を返します。

Function Returns Description
M:row(N) 指定された行をベクトルで返します。
M:column(N) 指定された列をベクトルで返します。
M:element(N1, N2) N1行N2列の要素を返します。
M:setElement(N1, N2, N3) N1行N2列をN3にします。
M:swapElements(N1, N2, N3, N4) N1行N2列の要素とN3行N4列の要素を交換します。
diagonal(M) 対角線上にある要素をベクトルで返します。
trace(M) 行列の対角和を返します。
det(M) 行列式を返します。この関数は4x4行列には使えません。
transpose(M) 転置行列を返します。
adj(M) 随伴行列を返します。この関数は4x4行列には使えません。

Angle

Description

三つの異なる方向がベクトルで表されるように、Pitch, Yaw, Rollの三つの要素を持つ角度ベクトルを用いて方向を表すこともできます。

Commands

Function Returns Description
ang(N1, N2, N3) Pitch N1, Yaw N2, Roll N3の角度を作ります。
ang() ang(0, 0, 0)と同じです。
ang(V) ベクトルから角度を作ります。
ceil(A) 角度の各要素をその値を下回らない最小の整数にします。
ceil(A, N) ceil(A)を小数点以下N桁の精度で行います。
floor(A) 角度の各要素をその値を上回らない最大の整数にします。
floor(A, N) floor(A)を小数点以下N桁の精度で行います。
round(A) 角度の各要素を四捨五入します。
round(A, N) round(A)を小数点以下N桁の精度で行います。
mod(A, N) 角度の各要素をNで割った余りにします。
mod(A, A) 角度の各要素を対応する要素で割った余りにします。
clamp(A, Amin, Amax) 角度をAminからAmaxの範囲におさえます。
clamp(A, Nmin, Nmax) 角度の各要素をNminからNmaxの範囲におさえます。
mix(A, A, N) 二つの角度をN : 1 - Nの割合で結合したものを返します。
shiftL(A) 各要素をひとつ左にずらします。
shiftR(A) 各要素をひとつ右にずらします。
inrange(A, Amin, Amax) 角度がAminからAmaxの範囲にあるとき1を返します。
toRad(A) 各要素を度からラジアンに変換します。
toDeg(A) 各要素を度からラジアンに変換します。
angnorm(A) 正規化した角度を返します。
angnorm(N) Nを正規化して角度にしたものを返します。
A:pitch() Pitch要素の値を返します。
A:yaw() Yaw要素の値を返します。
A:roll() Roll要素の値を返します。
A:setPitch(N) AのPitch要素をNにしたものを返します。
A:setYaw(N) AのYaw要素をNにしたものを返します。
A:setRoll(N) AのRoll要素をNにしたものを返します。
A:toString() Aを文字列で表したものを返します。
A:forward() Aから前方向の方向ベクトルを返します。
A:right() Aから右方向の方向ベクトルを返します。
A:up() Aから上方向の方向ベクトルを返します。
A:rotateAroundAxis(V, N) AをV周りにN度回転したものを返します。

Table

Description

テーブルは変数の値を保存することができます。テーブルはデータがリストになって集まったものと見なせます。それぞれのデータは数または文字列でデータの格納位置(インデックス)が決められます。テーブルはすべてのデータ型を格納することができます。テーブルの中にテーブルを含むこともできます。ただしその場合は深さ6を超えて入れ子にすることはできません。

テーブルの中身を他のテーブルに代入した場合、それらは参照関係にあり、片方の値を変更するともう片方の値も変わります。完全なコピーを作る場合、clone()関数を使う必要があります。

Commands

<type>にはデータ型が入ります。*も同様です。

Function Returns Description
Common
これらの関数はインデックスが数、文字列で指定されたテーブルで使えます。
T:clear() テーブルの中身を消去します。
T:count() テーブルが持つデータの個数を返します。
invert(T) テーブルの中身の順番を逆にします。
T:flip() インデックスとその値を入れ替えます。
T:typeids() 各データのtypeIDを格納したテーブルを返します。
T:remove(S/N) 指定されたインデックスにあるデータを消去します。インデックスが数のときは後ろに続くデータが消されたデータの位置を埋めるように移動します。
T:remove*(S/N) * 指定されたインデックスにある、データ型*のデータを消去します。インデックスが数の時は後ろに続くデータが消されたデータの位置を埋めるように移動します。
T:clipTotypeid(S) 指定されたデータ型以外のデータをすべて消します。
T:clipFromTypeid(S) 指定されたデータ型のデータをすべて消します。
T:clone() テーブルのコピーを返します。
T:id() テーブルの識別子を返します。
T:toString() テーブルを文字列で表したものを返します。
T:add(T2) Tの最後尾にT2を追加したものを返します。インデックスが文字列の時、Tにない文字列インデックスの値が追加されます。
T:merge(T2) TとT2を結合したものを返します。インデックスが同じ場合、T2の値に上書きされます。
T:difference(T2) T2に存在するデータをTから消したものを返します。
T:intersect(T2) T2に存在しないデータをTから消したものを返します。
T[S/N, type] * 指定したインデックスにあるデータを返します。
T[S/N, type] = X * 指定したインデックスにデータを代入します。
Number indexes
これらの関数は数をインデックスとするテーブルのみに使えます。
T:pop() 最後の位置にあるデータを消します。
T:pop*() * 最後の位置にあるデータを消してそのデータを返します。
T:min() テーブルにあるデータの最小値を返します。
T:max() テーブルにあるデータの最大値を返します。
T:minIndex() テーブルにあるデータの最小値の位置を返します。
T:maxIndex() テーブルにあるデータの最大値の位置を返します。
T:typeidsArray() 各データのtypeIDを格納した配列を返します。
T:toArray() テーブルを配列に変換します。文字列インデックスにあるデータ、テーブル、配列は削除されます。
T:concat() テーブルにあるデータを連結し文字列にしたものを返します。Vector/Angle/Matrixのようなデータ型には対応していません。
T:concat(S) テーブルにあるデータを、間に文字列Sを入れながら連結します。
T:concat(N) Nより後ろの位置にあるデータを連結し、文字列として返します。
T:concat(S, N) Nより後ろの位置にあるデータに対してT:concat(S)を実行します。
T:concat(N1, N2) N1からN2の間にあるデータに対してT:concat()を実行します。
T:concat(S, N1, N2) N1からN2の間にあるデータに対してT:concat(S)を実行します。
T:push*(*) * データをテーブルの最後に追加します。
T:insert*(N, *) * 指定した位置にデータを挿入します。
T:unshift*(*) * テーブルの最初の位置にデータを挿入します。
T:shift() テーブルの最初の位置のデータを消去します。それより後ろにあるデータは埋め合わせるように移動します。
T:exists(N) 指定した位置にデータがあるときは1、ないときは0を返します。
String indexes
これらの関数はインデックスが文字列で指定されたテーブルでのみ使用できます。
invert(R) 配列をインバートします。探索テーブルを作ります。
T:keys() テーブルのインデックスを配列にしたものを返します。
T:values() テーブルのデータを配列にしたものを返します。
T:exists(S) 指定した位置にデータがあるとき1、そうでないとき0を返します。

Array

Description

テーブルと同様の機能を持ちますが、テーブルと比べて少ないメモリを使用し、インデックスは全て数であらわされます。Expression1のPacket Supportと似ています。Arrayはtableとarrayを除く、すべてのデータ型を保持することができます。

インデックスには0以下の数を使うこともできます。しかしArrayの各関数を利用するためにインデックスは1から始めることをおすすめします。

Arrayはデフォルトで最大1048576個の要素を持つことができます。

Commands

テーブルと同様に一部略記をしています。

Function Returns Description
array() 空のarrayを作成します。
array(...) 与えられたデータを要素するarrayを作成します。サポートされていないデータ型のデータを入力した場合、関数が正しく動くかどうかは保障されません。
R:clone() arrayのコピーを作成します。
R:count() arrayの要素数を返します。
R:sum() arrayの中にある数値データをすべて足し合わせたものを返します。
R:concat() arrayの中にあるデータを文字列として結合したものを返します。vector/angle/matrixには適用されません。
R:concat(S) arrayの中にあるデータを文字列とし、間にSを入れて結合したものを返します。
R:concat(N) arrayのN番目のデータからR:concat()を適用します。
R:concat(S, N) arrayのN番目のデータからR:concat(S)を適用します。
R:concat(N1, N2) arrayのN1番目からN2番目のデータに対してR:concat()を適用します。
R:concat(S, N, N) arrayのN1番目からN2番目のデータに対してR:concat(S)を適用します。
R:average() arrayにある数値データの平均値を返します。
R:min() arrayにある数値データの最小値を返します。
R:minIndex() arrayにある数値データの最小値のインデックスを返します。
R:max() arrayにある数値データの最大値を返します。
R:maxIndex() arrayにある数値データの最大値のインデックスを返します。
R[N, <type>] <type> arrayのN番目にあるデータ型<type>のデータを取得します。
R[N, <type>] = * arrayのN番目にデータ型<type>のデータを保存します。
R:push<type>(*) arrayの最後尾にデータを挿入します。
R:pop<type>() * arrayの最後尾のデータを取り出し、削除します。
R:pop() arrayの最後尾のデータを削除します。
R:unshift<type>(*) arrayの最初にデータを挿入します。それより後ろにあるデータは一つ後ろに移動します。
R:shift<type>() * arrayの最初のデータを取り出し、削除します。それより後ろにあるデータは一つ前に移動します。
R:shift() arrayの最初のデータを削除します。それより後ろにあるデータは一つ前に移動します。
R:insert<type>(N, *) * 指定された位置にデータを挿入します。その位置より後ろにあるデータはひとつ後ろに移動します。
R:remove<type>(N) * 指定された位置のデータを削除します。その位置より後ろにあるデータはひとつ前に移動します。
R:remove(N) 指定された位置のデータを削除します。その位置より後ろにあるデータはひとつ前に移動します。
R:exists(N) 指定された位置にデータが存在するとき1、そうでないとき0を返します。
R:add(R2) RとR2を加算します。
R:merge(R2) RとT2をマージします。

Bone

Description

この拡張機能はE2がボーンエンティティを操作することを可能にします。ボーンはラグドールの一部分のことです(たとえば頭、左腕、右足など)。この拡張機能を使うことにより、ボーンの位置、方向、速度などの情報をプロップと同様に得ることが可能になります。ボーンへの配列、テーブル関数も用意されています。

Commands

Function Returns Description
E:bone(N) Entity EのN番目のBoneを返します。
E:bones() Entity EのすべてのBoneを含む配列を返します。この配列のインデックスは0から始まります。
E:boneCount() Entity Eが持つ総Bone数を返します。
noBone() 空のBoneを返します。
E:aimBone() Entity Eがエイムしている部分のBoneを返します。
B:entity() Bone Bを持つEntityを返します。
B:index() Bone Bのインデックスを返します。Bone Bが空の場合、-1が返されます。
B:pos() Bone Bの位置を返します。
B:forward() Bone Bの前方向を返します。
B:right() Bone Bの右方向を返します。
B:up() Bone Bの上方向を返します。
B:vel() Bone Bの速度を返します。
B:velL() Bone Bのローカル速度を返します。
B:toWorld(V) Bone Bから見たローカル座標であるVをワールド座標に変換します。
B:toLocal(V) ワールド座標VをBone Bから見たローカル座標に変換します。
B:angVel() Bone Bの角速度を返します。
B:angles() Bone Bの角度を返します。
B:bearing(V) Bone Bから見たVの横方向の位置を角度で返します。
B:elevation(V) Bone Bから見たVの縦方向の位置を角度で返します。
B:mass() Bone Bの質量を返します。
B:massCenter() Bone Bの重心の位置を返します。
B:massCenterL() Bone Bの重心の位置をローカル座標で返します。
B:setMass(N) Bone Bの質量を設定します。(0.001から50000まで)
B:inertia() Bone Bの慣性テンソルを(lxx, lyy, lzz)の形式で返します。
B:applyForce(V) Bone Bに力Fを加えます。
B:applyOffsetForce(V, V2) Bone BにVからV2の方向へ力を加えます。
B:applyAngForce(A) Bone BにトルクAを加えます。
B:applyTorque(V) Bone Bにトルクを加えます。Vは各回転軸のトルクの大きさを表します。
B:isFrozen() Bone Bがフリーズ状態にあるとき1、そうでないとき0を返します。

Complex

Description

複素数は実数の拡張で負の数の平方根を含みます。この拡張機能はすべての基本的な演算をサポートします。実数との演算もサポートされています。条件演算子として==、!=が使えますが比較演算子<と>は使えません。

Commands

Function Returns Description
comp() 複素数0を返します。
comp(N) 実数Nを複素数に変換します。虚数部は0になります。
comp(N, N2) 複素数N + N2*iを返します。
i() 虚数単位iを返します。
i(N) 複素数N*iを返します。
abs(C) 複素数Cの絶対値を返します。
arg(C) 複素数Cの偏角を返します。
conj(C) 複素数Cの共役複素数を返します。
real(C) 複素数Cの実数部を返します。
imag(C) 複素数Cの虚数部を返します。
exp(C) e^Cを返します。
log(C) 複素数Cの自然対数を返します。
log(C, C2) 複素数Cを底とする複素数C2の対数を返します。
log(N, C) 実数Nを底とする複素数Cの対数を返します。
log2(C) 2を底とする複素数Cの対数を返します。
log10(C) 複素数Cの常用対数を返します。
sqrt(C) 複素数Cの平方根を返します。
csqrt(N) 実数Nの複素平方根を返します。
sin(C) 複素数Cのsinを返します。
cos(C) 複素数Cのcosを返します。
tan(C) 複素数Cのtanを返します。
cot(C) 複素数Cのcotを返します。
sec(C) 複素数Cのsecを返します。
csc(C) 複素数Cのcscを返します。
asin(C) 複素数Cの逆sinを返します。
acos(C) 複素数Cの逆cosを返します。
atan(C) 複素数Cの逆tanを返します。
atan2(C) 複素数Cの主値を返します。
sinh(C) 複素数Cのハイパボリックsinを返します。
cosh(C) 複素数Cのハイパボリックcosを返します。
tanh(C) 複素数Cのハイパボリックtanを返します。
coth(C) 複素数Cのハイパボリックcotを返します。
sech(C) 複素数Cのハイパボリックsecを返します。
csch(C) 複素数Cのハイパボリックcscを返します。
toString(C) 複素数Cを文字列形式で返します。
C:toString() toString(C)と同じです。

Quaternion

Description

クォータニオン(四元数)は複素数の拡張です。a + biの代わりにa + bi + cj + dkと書かれます。a, b, cは実数、 i, j, kは虚数単位です。虚数単位は3次元空間の基底として使え、クォータニオンは回転を表すことができます。

実数や複素数のように加算、減算、乗算、除算を行うことができます。実数や複素数とクォータニオン同士の演算も可能です。クォータニオンの乗算は非可換であることに注意してください。

注意:クォータニオンの乗算が非可換であるため、割算をするときに二つのやり方があります。Q1/Q2はQ1*inv(Q2)と等しくなります。もう一つの割り方としてinv(Q2)*Q1があります。

この拡張機能はベクトルとクォータニオン同士を回転させるために乗算することをサポートしています。ベクトルVをクォータニオンQを用いて回転させたければV2 = vec(Q*V*inv(Q))のように書きます。

Commands

Function Returns Description
quat() クォータニオン0を返します。
quat(N) クォータニオンNを返します。
quat(C) 与えられた複素数の実数部と虚数部と等しい値を持つクォータニオンを返します。
quat(V) ベクトルをクォータニオンに変換します。(V.x*i + V.y*j + V.z*k)
quat(N, N2, N3, N4) クォータニオンN + N2*i + N3*j + N4*kを返します。
quat(A) 角度Aをクォータニオンに変換します。
quat(V, V2) 与えられた前方向Vと上方向V2からクォータニオンを作ります。
quat(E) Entity Eの角度をクォータニオンに変換します。
qi() クォータニオンiを返します。
qi(N) クォータニオンN*iを返します。
qj() クォータニオンjを返します。
qj(N) クォータニオンN*jを返します。
qk() クォータニオンN*kを返します。
qk(N) クォータニオンN*kを返します。
abs(Q) クォータニオンQの絶対値を返します。
conj(Q) クォータニオンQの共役クォータニオンを返します。
inv(Q) クォータニオンQの逆数を返します。
Q:real() クォータニオンQの実数部を返します。
Q:i() クォータニオンQのi成分を返します。
Q:j() クォータニオンQのj成分を返します。
Q:k() クォータニオンQのk成分を返します。
exp(Q) e^Qを返します。
log(Q) クォータニオンQの自然対数を返します。
qMod(Q) クォータニオンQが0-180の範囲で角度を表すように変更します。
slerp(Q, Q2, N) QとQ2の間で線形補間を行います。N=0のときQ、N=1のときQ2を返します。
qRotation(V, N) 回転軸V周りにN°回転させるクォータニオンを返します。
qRotation(V) 回転ベクトルVからクォータニオンを作ります。Vの方向は回転軸を表し、その大きさは回転角度を表します。
rotationAngle(Q) クォータニオンQの回転角度を返します。
rotationAxis(Q) クォータニオンQの回転軸を返します。
rotationVector(Q) クォータニオンQから回転ベクトルを作ります。
vec(Q) クォータニオンQを実数部を切り捨て、ベクトルに変換します。
matrix(Q) クォータニオンQを変換行列に変換します。
Q:toAngle() クォータニオンQによって表される角度を返します。
toString(Q) クォータニオンQを文字列として表します。

Core

Description

この機能はE2それ自体と直接関係しています。

Commands

Function Returns Description
first() E2がスポーンされた瞬間、またはリセットされた瞬間であるとき1を返します。
duped() E2がdupeされた瞬間であるとき1を返します。
dupefinished() E2のdupeが終わった瞬間に1を返します。
inputClk() 現在の実行が入力によって駆動されているとき1を返します。
reset() E2の内部状態を実行前状態にリセットします。
exit() この関数より後の動作を中止します。
runOnLast(N) Nが0でないのなら、E2が消される最後の瞬間にE2を実行します。
last() E2が消される、またはリセットされる瞬間であるとき1を返します。runOnLast(1)とセットで使う必要があります。
removing() E2が消される瞬間であるとき1を返します。
ops() 平均でどのくらいのopsが各実行で使用されているか返します。
cpuUsage() 秒間のCPU占有率を返します。1000000を掛けることでオーバーレイに表示されるのと同様の値を得ることができます。
opcounter() 現在の実行で使われたopsと、hard quotaの総量を足し合わせたものを返します。
minquota() soft quotaが使い果たされる直前のquotaを返します。
maxquota() hard quotaが動作停止上限を超える直前のquotaを返します。
softQuota() soft Quotaの量を返します。
hardQuota() hard Quotaの量を返します。
perf() whileループの中で使われた場合、hard quota上限付近での動作を安定させます。
perf(N) perf()と同様です。NはE2を安定させる領域でのsoft Quotaのパーセンテージを表します。

Self-Aware

Description

entity()を使うことでE2のすべてのEntity情報を得ることができます。comcmd()を使うことでコンソールコマンドを実行することができます。

また、E2それ自体に力を加えることも可能です。力を時間の中で分散させてかけることはできません。1tick内オブジェクトにかかるすべての力は加算され、オブジェクトにかかります。

Commands

Function> Returns Description
entity() E2のEntityを返します。
concmd(S) コンソールコマンドSを実行します。
applyForce(V) E2に力Vを加えます。
applyOffsetForce(V, V2) E2にVからV2へ向かう方向の力を加えます。
applyAngForce(A) E2にトルクAを加えます。
applyTorque(V) E2にトルクVを加えます。Vの各成分はそれぞれの回転軸のトルクの大きさを表します。
selfDestruct() E2を消します。
selfDestructAll() E2とE2とConstraintを持つすべてのプロップを消します。
ioOutputEntities(S) 出力Sに繋がれたすべてのEntityを配列として返します。
ioInputEntity(S) 入力Sに繋がれたEntityを返します。
ioSetOutput(S, *) 出力Sを*にします。
ioGetInput(S) * 入力Sの値を取得します。
E:getName() E2 Eの名前を返します。
setName(S) E2の名前をSにします。
changed(*) 与えられた値、または変数の値が変わったとき1を返します。tableとarrayを除くすべての型で使用可能です。
select(N, *,...) * Nより後ろに与えられた値のうちN番目のものを返します。
hash() N E2それ自体が使用するハッシュ値を返します。(コメントも含む)
hash(S) N 与えられた文字列のハッシュ値を返します。
hashNoComments() N E2それ自体が使用するハッシュ値を返します。(コメントは含まない)

Debug

Description

ユーザーに様々な情報を表示する関数を含みます。print()とhint()は文字列をスクリーンに表示させる手っ取り早い方法です。

E:printColorDriver(...)やE:printColorDriver(R)を使用することでチャットが捏造されえることに注意してください。誰かがこの関数を最初に使用したとき、ゲーム内で警告するメッセージが表示されます。

Commands

Function Returns Description
print(S) 文字列Sをチャットエリアに表示します。
print(...) チャットエリアにすべての要素をタブスペース区切りで表示します。自動的にtoStringが実行されます(ただしtableは除く)。Luaのprintと同様に動きます。
E:printDriver(S) ビークルEのドライバーに対して文字列Sを表示します。文字列が表示されたとき1、そうでないとき0を返します。
hint(S, N) ヒントメッセージSをN秒間表示します。
E:hintDriver(S, N) ビークルEのドライバーに対してヒントメッセージSをN秒間表示します。
print(N, S) print(S)と同様ですが、テキストの表示位置を変えることができます。Nは_HUD_PRINTCENTER, _HUD_PRINTCONSOLE, _HUD_PRINTNOTIFY, _HUD_PRINTTALKの値を取ることができます。
E:printDriver(N, S) E:printDriver(S)と同様ですが、テキストの表示位置を変えることができます。
printTable(T) テーブルをLuaのPrintTableと同じように表示します。
printTable(R) 配列をLuaのPrintTableと同じように表示します。
printColor(...) chat.AddTextと同じように動きます。
printColor(R) printColor(...)と同様に動きます。
E:printColorDriver(..) ビークルEのドライバーに対してprintColor(...)を行います。
E:printColorDriver(R) ビークルEのドライバーに対してprintColor(R)を行います。

Timer

Description

タイマーは一定時間後に動作を実行するときに使われます。タイマーによって行われる動作は入力による駆動なしで行われます。

Commands

Function Returns Description
runOnTick(N) Nが1のとき、E2は各tickごとに実行されます。
tickClk() 現在の実行がrunOnTickによるものである場合1を返します。
curtime() ゲームが起動してからの時間を返します。
realtime() サーバーが起動してからの時間を返します。
interval(N) Nミリ秒後にE2を実行します。
timer(S, N) 名前S、Nミリ秒後に駆動するタイマーをセットします。
stoptimer(S) 名前Sのタイマーを停止します。intervalをstoptimer("interval")とすることで停止することができます。
clk() 現在の実行がintervalによるものである場合1を返します。
clk(S) 現在の実行が名前Sによるものである場合1を返します。

*curtime()とrealtime()は小数第3桁までの精度があります。サーバーのラグはcurtime()を遅らせますが、realtime()は遅れません。

Other

ここには幾つかタイマーとは関係のない関数があります。しかし時間とは関係しています。

Function Returns Description
curtime() サーバーが起動してからの時間を返します。サーバーのラグによって遅れます。
realtime() サーバーが起動してからの時間を返します。サーバーのラグによって遅れません。
systime() サーバーが起動してからの高精度な時間を返します。ベンチマークに適しています。
date() サーバーの現在時刻を返します。
date(N) 指定されたUnix時刻を返します。
dateUTC() サーバーの現在時刻を協定世界時で返します。
dateUTC(N) 指定されたUnix時刻を協定世界時で返します。
time() サーバーの現在のUnix時刻を返します。
time(T) date()で返されるテーブルと同じ形式の時刻テーブルTをUnix時刻に変換します。

Unit Conversion

Description

すべての変換は正確に行われます。表示するにあたっては結果をroundするのをお勧めします。

Commands

Function Returns Description
toUnit(S, N) Gmodで使われる単位から与えられた単位へ変換します。
fromUnit(S, N) 与えられた単位からGmodで使われる単位に変換します。
convertUnit(S, S, N) ある単位からある単位へ変換します。

Units

Length Description
u GarrysMod Units(標準)
mm ミリメートル
cm センチメートル
dm デシメートル
m メートル
km キロメートル
in インチ
ft フィート
yd ヤード
mi マイル
nmi 海里
Speed Description
u/s GarrysMod Units/秒(標準)
u/x GarrysMod Units/Time Unit
m/s メートル毎秒
km/h キロメートル毎時
in/s インチ毎秒
mi/h マイル毎時
mph マイル毎時
knots ノット
mach マッハ
mm/x ミリメートル/Time Unit
cm/x センチメートル/Time Unit
dm/x デシメートル/Time Unit
m/x メートル/Time Unit
km/h キロメートル/Time Unit
in/x インチ/Time Unit
ft/x フィート/Time Unit
yd/x ヤード/Time Unit
mi/x マイル/Time Unit
nmi/x 海里/Time Unit
Weight Description
g グラム
kg キログラム
t トン
oz オンス
lb ポンド

Server Information

Description

下記の関数はサーバーの情報を取得するのを可能にします。マップ名、ゲームモードなど。

Commands

Function Returns Description
map() 現在のマップ名を返します。
hostname() サーバー名を返します。
isLan() Lan modeがオンの時を返します。
gamemode() 現在のゲームモードを返します。
gravity() プレイヤーに働く重力の値を返します。
propGravity() プロップに働く重力を返します。
airDensity() 大気の密度を返します。
maxFrictionMass() プロップにどのくらい摩擦力が働くのかを返します。
minFrictionMass() プロップにどのくらい摩擦力が働くのかを返します。
speedLimit() 速度の上限値を返します。
angSpeedLimit() 角速度の上限値を返します。
tickInterval() 1tickの間に何秒経過しているのかを返します。
E:ping() プレイヤーEのpingを返します。
isSinglePlayer() シングルプレイヤーなら1、マルチプレイヤーなら0を返します。
isDedicated() サーバーがdedicateなら1、そうでないなら0を返します。
numPlayers() サーバーにいるプレイヤーの人数を返します。
maxPlayers() サーバーの最大人数を返します。
maxOfType(S) あるタイプのEntityの最大保持数を返します。例:maxOfType("wire_thrusters")
playerDamage() PvPが有効の時1を返します。
convar(S) クライアントのConvar Sの設定値を返します。
convarnum(S) クライアントのConvar Sの設定値を返します。
time(S) サーバーから時刻情報を得ます。引数は"year", "month", "day", "hour", "min", "sec", "wday"(曜日。日曜は1), "yday"(一年のうち日数), "isdst"(夏時間かどうか)のどれかになります。

Constraint

Description

下記の関数はEntityのConstraint情報を取得します。

Commands

Function Returns Description
E:getConstraints() Entity EとConstraintを共有するEntityをすべて返します。
E:hasConstraints() Entity Eが持つ総Constraint数を返します。
E:hasConstraints(S) Entity Eが指定されたConstraintを持っているとき1を返します。
E:isConstrained() Entity EがConstraintを持つとき1を返します。
E:isWeldedTo() Entity EがWeldされている最初のEntityを返します。
E:isWeldedTo(N) Entity EがWeldされているN番目のEntityを返します。
E:isConstrainedTo() Entity EがConstraintされている最初のEntityを返します。
E:isConstrainedTo(N) Entity EがConstraintされているN番目のEntityを返します。
E:isConstrainedTo(S) 指定されたConstraintでE:ConstrainedTo()を実行します。
E:isConstrainedTo(S, N) 指定されたConstraintでE:ConstrainedTo(N)を実行します。
E:parent() Entity EがParentされているEntityを返します。
E:parentBone() Entity EがParentされているBoneを返します。
Constraint Types
AdvBallSocket
Axis
BallSocket
Elasti
Hydraulic
Keepupright
Motor
Muscle
Muscle
NoColide
Pulley
Rope
Slider
Weld
Winch

Chat

Description

下記の関数はチャットログを読むためのものです。WireのText Receiverと似ています。

Commands

Function Returns Description
runOnChat(N) N == 0の時、E2はチャットイベントによって駆動されません。N != 0の時、E2はチャットイベントによって駆動されます。
chatClk() 現在の実行がチャットイベントによるものである場合1を返します。
chatClk(E) 現在の実行がプレイヤーEのチャットイベントによるものである場合1を返します。
hideChat(N) N != 0の時、現在処理中のチャット内容を非表示にします。
lastSpoke() 最後に発言をしたプレイヤーを返します。
lastSaid() 最後の発言内容を返します。
lastSaidWhen() 最後の発言が送られた時刻を返します。
lastSaidTeam() 最後の発言がチームチャットで送られた場合1を返します。
E:lastSaid() プレイヤーEの最後の発言内容を返します。
E:lastSaidWhen() プレイヤーEが最後に発言した時刻を返します。
E:lastSaidTeam() プレイヤーEの最後の発言がチームチャットで送られた場合1を返します。

Color

Description

これらの関数はE2がEntityの色を判別し、色を変えることを可能にします。色の変更は自分が持つプロップのみに適用されます。RGBA(Red, Green, Blue, Alpha)を使います。RGBのみで指定したときはAlpha値は変わりません。

それぞれの色の成分は0-255までの範囲で値を持ちます。(0, 0, 0, 255)は黒、(255, 255, 255 ,255)は白です。

アルファ値は不透明度と等しい。0の時透過、255の時不透過となります。

Commands

Function Returns Description
E:getColor() Entity Eの色を(R, G, B)で返します。
E:getColor4() Entity Eの色を(R, G, B, A)で返します。
E:getAlpha() Entity Eのアルファ値を返します。
E:getMaterial() Entity Eのマテリアルパスを返します。
E:getSkin() Entity Eのスキンナンバーを返します。
E:getSkinCount() Entity Eのスキン総数を返します。
E:getBodygroups(N) Entity Eの与えられたGroupIDのボディグループ総数を返します。
E:setColor(N, N, N) Entity Eの色を(N, N, N)に変更します。
E:setColor(N, N, N, N) Entity Eの色を(N, N, N, N)に変更します。
E:setColor(V) Entity Eの色をVに変更します。
E:setColor(V, N) Entity Eの色をV, 不透明度Nに変更します。
E:setColor(V4) Entity Eの色をV4に変更します。
E:setAlpha(N) Entity Eのアルファ値をNにします。
E:setMaterial(S) Entity EのマテリアルをSに変更します。
E:setSkin(N) Entity Eのスキンナンバーを設定します。
E:setBodygroup(N, N) Entity EのボディーグループをサブIDとともに設定します。
hsv2rgb(V) HSV値からRGB値に変換します。
hsv2rgb(N, N, N) HSV値からRGB値に変換します。
rgb2hsv(V) RGB値からHSV値に変換します。
hsl2rgb(V) HSL値からRGB値に変換します。
hsl2rgb(N, N, N) HSL値からRGB値に変換します。
rgb2digi(V, N) RGB値をDigital Screen用の形式に変換します。Nでモードを指定します。
rgb2digi(N, N2, N3, N4) RGB値をDigital Screen用の形式に変換します。N4でモードを指定します。

E2 Function System

Description

この機能はE2のコード中で関数を作ることを可能にします。関数は使用される前に定義されなければなりません。つまり関数はコードの最初の部分に来ることになります。関数は実行時に作成されるので、宣言は一度きりになる必要がありますが、戻り値の型が変わらないのなら中身を変更することができます。元から存在する関数は上書きすることができません。

この例はentity(N)と同じ機能を実装します。EntityIDを受け取り、そのEntityを返す関数です。関数名は小文字から始まる必要があります。

    
    function entity doSomething(EntityID) {
        return entity(EntityID)
    }
    
    

次のように呼び出すことができます。

    
    print(doSomething(1))
    
    

関数の戻り値が存在しない場合、戻り値の型は"void"に指定するか、空にする必要があります。

    
    function void notReturningAnything() {
        print("hi")
    }
    
    

引数がnumber型ではないとき、ID:typeのように型を指定する必要があります。

    
    function vector doSomethingElse(Number, Vector:vector) {
        return Vector * Number
    }
    
    

関数はある型のメソッドとして定義することもできます。関数定義内では元となる型を参照するために"This"が使われます。

    
    function void entity:forceToward(Pos:vector, Mul) {
        This:applyForce(Mul*(Pos - This:pos()))
    }
    
    

関数を再帰的に定義することも可能です。詳しくはE2 Variable Scopesを見てください。

Callable strings

Description

この拡張機能は関数をオブジェクトとして持つアイデアを置き換えたものです。というのも関数をオブジェクトとして扱えるように実装するのは大変な作業だったので、代わりに文字列として扱えるようにしました。

関数への参照をテーブルの中に保存し、コールバック関数として、あるいは他の似たような機能を実装できるようにするためにあります。

    
    function doSomething(Str:string) {
        print("hello, " + Str)
    }

    Something = "doSomething"
    Something("world")
    
    

"hello, world"をプリントします。

関数からの返り値を取得することもできます。そのためには関数の戻り型を指定する必要があります。

    
    function string doSomething() {
        return "hello, world"
    }

    Str = "doSomething"
    ReturnValue = Str()[string]
    print(ReturnValue) #"hello, world"をプリントします。
    
    

注目すべき特徴

この拡張機能はある条件下で予想外の挙動を示すときがあります。例えば

    
    function table:doSomething(Index) {
        print(This[Index, number])
    }
    
    

あなたはこの関数をどのように呼び出しますか。この関数を呼び出すには少し奇妙なやり方でやる必要があります。

    
    Str = "doSomething"
    Str(table(1, 2, 3), 2) #2をプリントします
    
    

さて、これには小さな問題があります。次のように似たような二つの関数を作ったとすると

    
    function table:doSomething(Index) {
        print(This[Index, number])
    }

    function doSomething(This:table, Index) {
        print(This[Index, number])
    }
    
    

最初の関数は呼び出すことができません。なぜなら二番目の関数が優先されるからです。

Entity Discovery

Description

Entityを区別しながら見つけ出す時はこれらの関数を使ってください。基本的なfind関数は返り値としてEntityが何個見つかったか、ということしか返しませんが、Entity情報は再びfind関数を使わない限りE2内に保存されています。

見つけるEntityを絞り込むためにホワイトリストとブラックリストを使うことができます。ホワイトリストとブラックリストはfind関数を実行したときに自動的に適用されます。ホワイトリストとブラックリストを[Exclude, Allow, Include, Disallow, Player, Prop, Model, Class]などの関数を使うことで操作することができます。Exclude/Allowはブラックリストを操作し、Include/Disallowはホワイトリストを操作します。もし同じオブジェクトがブラックリストとホワイトリストの両方で指定されている場合、ブラックリストが優先されます。

Name, Class, Modelでは部分文字列が使えます。

findを実行するのは負荷が高い処理なので、findを実行する回数を減らすために,findしたものを定数として格納することをおすすめします。

find関数の乱用を防ぐために二つのコンソールコマンドがあります。wire_exp2_entFindRateとwire_exp2_playerFindRateです。このコンソールコマンドはfind関数をどれくらいの間隔で実行できるのか指定します。これはfind関数をrunOnTick(1)で実行できないことを意味します。Entity情報はE2ごとに、Player情報はプレイヤーごとに保存されます。

Commands

Function Returns Description
findUpdateRate() find関数を実行できる最短間隔を返します。
findPlayerUpdateRate() プレイヤーごとの、find関数を実行できる最短間隔を返します。
findCanQuery() find関数が実行できるとき1、そうでないとき0を返します。
findInSphere(V, N) 中心V, 半径Nの球体内でfindします。
findInCone(V, V2, N, N2) 中心V, 方向V2, 長さN, 角度N2の円錐形内でfindします。
findInBox(V, V2) 端点V, V2を持つ長方形内でfindします。
findByName(S) 名前Sを持つすべてのEntityをfindします。
findByModel(S) モデルSのすべてのEntityをfindします。
findByClass(S) クラスSを持つすべてのEntityをfindします。
findPlayerByName(S) 名前Sのプレイヤーエンティティを返します。
findExcludeEntities(R) 配列R内のすべてのEntityをfind対象から外します。
findExcludeEntity(E) Entity Eをfind対象から外します。
findExcludePlayer(E) プレイヤーEをfind対象から外します。
findExcludePlayerProps(E) プレイヤーEが持つすべてのプロップをfind対象から外します。
findExcludePlayerProps(S) 名前Sのプレイヤーが持つすべてのプロップをfind対象から外します。
findExcludeModel(S) モデルSのすべてのEntityをfind対象から外します。
findExcludeClass(S) クラスSを持つすべてのEntityをfind対象から外します。
findAllowEntities(R) 配列R内のすべてのEntityをブラックリストから除外します。
findAllowEntity(E) Entity Eをブラックリストから除外します。
findAllowPlayer(E) プレイヤーEをブラックリストから除外します。
findAllowPlayer(S) 名前Sのプレイヤーをブラックリストから除外します。
findAllowlayerProps(E) プレイヤーEが持つすべてのプロップをブラックリストから除外します。
findAllowPlayerProps(S) 名前Sのプレイヤーが持つすべてのプロップをブラックリストから除外します。
findAllowModel(S) モデルSのすべてのEntityをブラックリストから除外します。
findAllowClass(S) クラスSを持つすべてのEntityをブラックリストから除外します。
findIncludeEntities(R) 配列R内のすべてのEntityをfind対象に加え、ホワイトリストにない他のEntityをfind対象から外します。
findIncludeEntity(E) Entity Eをfind対象に加え、ホワイトリストにない他のEntityをfind対象から外します。
findIncludePlayer(E) プレイヤーEをfind対象に加え、ホワイトリストにない他のEntityをfind対象から外します。
findIncludePlayer(S) 名前Sのプレイヤーをfind対象に加え、ホワイトリストにない他のEntityをfind対象から外します。
findIncludePlayerProps(E) プレイヤーEが持つすべてのプロップをfind対象に加え、ホワイトリストにない他のEntityをfind対象から外します。
findIncludePlayerProps(S) 名前Sのプレイヤーが持つすべてのプロップをfind対象に加え、ホワイトリストにない他のEntityをfind対象から外します。
findIncludeModel(S) モデルSのすべてのEntityをfind対象に加え、ホワイトリストにない他のEntityをfind対象から外します。
findIncludeClass(S) クラスSを持つすべてのEntityをfind対象に加え、ホワイトリストにない他のEntityをfind対象から外します。
findDisallowEntities(R) 配列R内のすべてのEntityをホワイトリストから除外します。
findDisallowEntity(E) Entity Eをホワイトリストから除外します。
findDisallowPlayer(E) プレイヤーEをホワイトリストから除外します。
findDisallowPlayer(S) 名前Sのプレイヤーをホワイトリストから除外します。
findDisallowPlayerProps(E) プレイヤーEが持つすべてのプロップをホワイトリストから除外します。
findDisallowPlayerProps(S) 名前Sのプレイヤーが持つすべてのプロップをホワイトリストから除外します。
findDisallowModel(S) モデルSのすべてのEntityをホワイトリストから除外します。
findDisallowClass(S) クラスSを持つすべてのEntityをホワイトリストから除外します。
findClearBlackList() すべてのブラックリストを空にします。
findClearBlackEntityList() Entityブラックリストを空にします。
findClearBlackPlayerPropList() プレイヤープロップブラックリストを空にします。
findClearBlackModelList() モデルブラックリストを空にします。
findClearBlackClassList() クラスブラックリストを空にします。
findClearWhiteList() すべてのホワイトリストを空にします。
findClearWhiteEntityList() Entityホワイトリストを空にします。
findClearWhitePlayerPropList() プレイヤープロップホワイトリストを空にします。
findClearWhiteModelList() モデルホワイトリストを空にします。
findClearWhiteClassList() クラスホワイトリストを空にします。
findResult(N) find結果のN番目を返します。Nは1から始まります。
findClosest(V) find結果で位置Vに最も近いものを返します。
findToArray() find結果を配列にして返します。
findToTable() find結果をテーブルにして返します。
find() findResult(1)と等しい。
findSortByDistance(V) find結果を位置Vに近い順にソートします。返り値はfind結果の要素数です。
findClipToClass(S) クラスSではないすべてのEntityをfind結果から除外します。
findClipFromClass(S) クラスSのすべてのEntityをfind結果から除外します。
findClipToModel(S) モデルSを持たないすべてのEntityをfind結果から除外します。
findClipFromModel(S) モデルSのすべてのEntityをfind結果から除外します。
findClipToName(S) 名前Sを持たないすべてのEntityをfind結果から除外します。
findClipFromName(S) 名前Sを持つすべてのEntityをfind結果から除外します。
findClipToSphere(V, N) 中心V, 半径Nの球体内に存在しないEntityをfind結果から除外します。
findClipFromSphere(V, N) 中心V, 半径Nの球体内に存在するEntityをfind結果から除外します。
findClipToRegion(V, V2) 位置V, V2を結ぶ平面より正の方向にないEntityをfind結果から除外します。この関数を用いることにより、任意の凸面の」でフィルターすることができます。

Global Vatiables

Description

Global Variableは二つのE2の間でデータをやり取りするための方法です。

非共有テーブルにある変数はサーバーから切断したときに自動的に消去されます。しかし共有テーブルにある変数はサーバーから切断しても自動的に消去されません。なのであまりにも多くのデータを共有テーブルに入れることは避けてください。

共有テーブルでは自分のE2だけではなく、他のプレイヤーのE2もそのデータにアクセスできます。非共有テーブルは自分が持つE2しかアクセスできません。

Commands

Function Returns Description
新しい文法 どのデータ型もサポートします。
gTableの取得 テーブルと同じようにデータを取得することができます。"G[Index, type]"
gTable(S) GT グループ名Sの非共有gTableを返します。
gTable(S, N) GT グループ名SのgTableを返します。N == 0の時非共有、それ以外の時共有テーブルとなります。
gTableSafe(N) GT グループ名がE2コードのハッシュ値となる安全なgTableを返します。これはマルチプレイヤーで役に立ちます。チーターは勝手に中身を変更することができなくなります。ハッシュ値はコメントを無視して作られることに注意してください。コメントを変更してもグループ名は変わりません。
削除 データの削除、テーブル内容の削除を行います。
GT:remove*(S) * インデックス名Sのデータを削除し、そのデータを返します。
GT:clear() gTableの中身を空にします。
gRemoveAll*() 非共有テーブル内のデータ型*のデータをすべて削除します。
gRemoveAll*() グループ名Sの非共有テーブル内のデータ型*のデータをすべて削除します。
gRemoveAll() 非共有テーブル内のデータをすべて削除します。
古い文法 古い書き方です。文字列、数値、ベクトル、角度、エンティティだけをサポートします。型を指定するには型名の最初の三文字を使用してください。これらの関数の使用は推奨されていません。新しい書き方を使用してください。
グループコントロール グループの変更、共有非共有の変更を行います。
gSetGroup(S) E2が属するグループを変更します。
gGetGroup() E2が現在属しているグループ名を返します。
gShare(N) 共有、非共有に設定します。
gGetShare() 共有のとき1、非共有のとき0を返します。
gResetGroup() グループを"default"にリセットします。
データの取得、設定 データの保存、取得を行います。
gSet*(S, *) データ型*をインデックス名Sとして保存します。
gGet*(S) データ型*のインデックス名Sのデータを取得します。
gSet*(N, *) gSet*(N:toString(), *)と等しい。
gGet*(N) gGet*(N:toString())と等しい。
削除 変数の削除、テーブル内容の削除を行います。
gDelete*(S) * インデックス名Sにあるデータ型*のデータを削除します。
gDelete*(N) * gDelete*(N:toString())と等しい。
gDeleteAll*() gRemoveAll*(S)と等しい。

Built-In Ranger

Description

Built-In rangerはErkleによるrangerに基づいています。しかし下に示すように幾つかの新しい関数があります。もしオプションを適用したいのならrangerデータを取得する前に設定する必要があります。"ignore world", "hit water"などの設定を永久的に使いたい場合、rangerPersist(1)を使います。

この機能は新しいデータ型を提供します。RD(:rangerとして定義される)です。このデータ型はトレース後のデータを持っています。有用な情報を得るためにはトレースデータ関数を使う必要があるでしょう。

Commands

Function Returns Description
Ranger Options トレース前に使用される必要があります。
rangerPersist(N) 0(デフォルト値)を渡すとranger/rangerOffsetの実行ごとに設定はリセットされます。0以外では設定は変えない限り維持されます。
rangerReset() 設定をリセットします。
rangerFlags() ranger flagを文字列で返します。
rangerFlags(S) ranger flagを設定します。Sの組み合わせは自由です。I=ignore world, W=hit water, E=hit entities, Z=default to zeroです。
rangerHitWater(N) デフォルトで0です。それ以外の値が与えられたとき水に衝突します。
rangerHitEntities(N) デフォルトで1です。0の時エンティティを無視します。
rangerIgnoreWorld(N) デフォルトで0です。それ以外の値が与えられたときワールドを無視します。
rangerDefaultZero(N) 0以外の値が与えられたとき、何も衝突しなかったときに距離値として0を返します。
rangerFilter(E) Entity Eを無視します。
rangerFilter(R) 配列RにあるすべてのEntityを無視します。
Ranger Tracing データの取得を行います。オプションはこれらの関数が呼び出される前に設定される必要があります。
ranger(N) 有効距離Nでトレースします。
ranger(N, N1, N2) 上記の関数と同様です。N1, N2でX方向, Y方向の傾きを指定します。
rangerAngle(N, N, N) それぞれ有効距離、X方向の角度, Y方向の角度です。
rangerOffset(V, V2) 位置VからV2の間でトレースします。
rangerOffset(N, V, V2) 有効距離N, 位置Vから方向V2に向けてトレースします。
Ranger Hull Tracing 上と同じですが、トレースがサイズを持っています。Hullは回転させることができません。
rangerHull(N, V) 距離、最大ボックスサイズ
rangerHull(N, V, V) 距離、最小ボックスサイズ、最大ボックスサイズ
rangerHull(N, N, N, V) 距離、X方向、Y方向の傾き、最大ボックスサイズ
rangerHull(N, N, N, V, V) 距離、X方向、Y方向の傾き、最小ボックスサイズ、最大ボックスサイズ
rangerHullAngle(N, N, N, V) 距離、X方向、Y方向の角度、最大ボックスサイズ
rangerHullAngle(N, N, N, V, V) 距離、X方向、Y方向の角度、最小ボックスサイズ、最大ボックスサイズ
rangerOffsetHull(V, V, V) 開始位置、終了位置、最大ボックスサイズ
rangerOffsetHull(V, V, V, V) 開始位置、終了位置、最小ボックスサイズ、最大ボックスサイズ
rangerOffsetHull(N, V, V, V) 距離、開始位置、終了位置、最大ボックスサイズ
rangerOffsetHull(N, V, V, V, V) 距離、開始位置、終了位置、最小ボックスサイズ、最大ボックスサイズ
Ranger Data Retrieval RD内部のデータにアクセスします。
RD:distance() Hitした対象物までの距離を返します。
RD:position() Hitした位置を返します。
RD:entity() Hitした対象物のEntityを返します。
RD:hit() 何かにHitしたとき1を返します。
RD:hitNormal() Hitした対象物の面の法線ベクトルを返します。
RD:pos() Hitした位置を返します。RD:pos()はワールド外の位置を返すことができます。
RD:fraction() Hitした位置がStartPosとEndPosの間のどこにあるかを0-1で返します。
RD:hitWorld() ワールドにHitしたとき1を返します。
RD:hitSky() 空にHitしたとき1を返します。
RD:positionLeftSolid() トレースがワールド外に出る位置を返します。
RD:fractionLeftSolid() トレースがワールド外に出る位置との間でRD:fraction()と同様の処理を行います。
RD:startSolid() トレースがワールド内で始まるとき1を返します。
RD:matType() Hitした対象物の物理マテリアルを返します。("wood", "metal", "dirt", "flesh"など)
RD:hitGroup() Hitした対象物のグループ名を返します。("chest", "face", "left arm", "right leg"など)
RD:toTable() トレースデータをテーブルとして返します。加工されていないそのままのデータを返す点に注意してください。

Sound Playback

Description

この機能はE2がサウンドを再生することを可能にします。E2にはサウンドブラウザが付属しているのでそれを活用してください。

時間は秒で表されます。サウンドをループ再生するには時間に0を指定ください。もしサウンドがループするように作られていない場合、ループ再生は行われません。ファイルパスは"/"を用いて記述します。自分が所有するEntityでサウンド再生を行うこともできます。

Commands

Function Returns Description
(E:)soundPlay(N, N, S) soundPlay(インデックス, 再生時間, ファイルパス)
(E:)soundPlay(S, N, S) soundPlay(インデックス, 再生時間, ファイルパス)
(E:)soundPlay(N, N, S, N) soundPlay(インデックス, 再生時間, ファイルパス, フェードタイム)
(E:)soundPlay(S, N, S, N) soundPlay(インデックス, 再生時間, ファイルパス, フェードタイム)
soundStop(N) インデックスNのサウンド再生を停止します。
soundStop(N, N2) インデックスNのサウンドをフェードタイムN2でフェードアウトさせます。
soundStop(S) インデックスSのサウンド再生を停止します。
soundStop(S, N) インデックスSのサウンドをフェードタイムNでフェードアウトさせます。
soundPitch(N, N) soundPitch(インデックス, ピッチ) ピッチは0-255の値を取り、デフォルトで100です。
soundPitch(S, N) soundPitch(インデックス, ピッチ)
soundVolume(N, N) soundVolume(インデックス, ボリューム) ボリュームは0-1の値を取り、デフォルトで1です。
soundVolume(S, N) soundVolume(インデックス, ボリューム)
soundPurge() 現在再生しているサウンドをすべて停止します。
soundDuration(S) ファイルパスSの再生時間を返します。注意:サーバーがファイルを持っていない場合60を返します。

NPC Control

Description

これらの関数はNPCを操作することを可能にします。Wireの入力に反応してNPCに感情を伝えることで第二のAIシステムを作ることができます。武器の使用も可能です。

Commands

Function Returns Description
E:npcStop() NPCの動作を停止させます。
E:npcGoWalk(V) 位置Vまで歩かせます。
E:npcGoRun(V) 位置Vまで走らせます。
E:npcFace(V) NPCを方向Vに向かせます。
E:npcAttack() 近接攻撃を行います。
E:npcShoot() 銃で撃ちます。
E:npcGiveWeapon() NPCにSMGを与えます。
E:npcGiveWeapon(S) NPCに武器Sを与えます。Sは武器名です。例:npcGiveWeapon("pistol")
E:npcSetTarget(E) ターゲットを指定します。
E:npcGetTarget() 現在のターゲットを返します。
E:npcRelationship(E, S, N) Entityとの感情Sの関係度Nを指定します。Nは0-999の範囲。Sには"like", "neutral", "hate", "fear"などが入ります。
E:npcRelationship(S, S2, N) クラスSとの感情S2の関係度Nを指定します。Sには"npc_manhack", "prop_physics"などが入ります。
E:npcRelationshipByOwner(E2, S, N) プレイヤーE2が所有するすべてのNPCとの感情Sの関係度Nを指定します。
E:npcDisp(E2) Entity Eに対する感情名を返します。

Signals

Data Signals

GLON

vON

3D Holograms

File Functions

Bitwise

E2 Variable Scopes

Include directive