Special&関数集
ここではACS(Action Code Script)で使用するActionSpecialや関数を解説します。
完成ははるか先になりそうです・・・
間違った記述、解釈がある場合は、メールでご報告お願いします。
参考:ZDOOMWiki
目次
入力値の定義
Fixed point numbers
Byte Angles
Fixed point angles
Pitch
Sprite angles
その他の単位
(時間の単位)
(速さの単位)
PolyObjects | PolyObjects関係 |
Doors | ドア関係 |
Ceilings | 天井関係 |
Floors | 床関係 |
Floors and Ceilings | 天井と床関係 |
Stairs | 階段関係 |
Platforms/Lifts | リフト関係 |
Teleporters | テレポーター関係 |
Exits | ゴール関係 |
Things | Thing関係 |
ACS | ACS実行関係 |
Lines | Line設定関係 |
Scrollers | スクロール関係 |
Lighting | 照明関係 |
Sectors | Sector関係 |
BOOM generalized line types | 一般化ActionSpecials関係 |
Renderer | レンダリング関係(?) |
Slopes | 坂道関係 |
Other | その他 |
Waiting | ACS停止関係 |
Math | 数学関数 |
Information | ゲームの情報を得る関数 |
Sounds | 音の関数 |
Player inventory | プレイヤーの所持物についての関数 |
Display | メッセージの関数 |
Level alteration | 設定、変更関係 |
Actor control | Actor(Thing)の情報関係 |
Fixed point numbers(またはFixed point value)
ZDOOMは、固定小数点数(Fixed point numbers)を使用することでZDOOMで小数と似たものを使用することができます。
変数への代入(初期化)方法は
int (変数名) = (小数);
ここで注意すべき点は、小数部分が0でも必ず整数の最後に".0"と付け加えましょう。
他にも普通の値として使用することができます。(Fixed point numbers同士の積や除法は値が変わるので注意しましょう。)
例
int a = 1.5;
int b = 3.0;
ZDOOMは通常、固定小数点数(Fixed point numbers)を32ビットの整数で表します。
固定小数点数の上の16ビットを整数部分、下の16ビットを小数の部分とします。
つまり、ある整数を固定小数点数で表す場合、2の16乗を掛ければ(左へ16シフトすれば)固定小数点数で表すことができます。
つまり、次の式が成り立ちます。
FixedPointNumbers = Integer * 2^16
すなわち
FixedPointNumbers = Integer << 16
Integer = FixedPointNumbers / 2^16
すなわち
Integer = FixedPointNumbers >> 16
また、
FixedPointNumbers = 1.5
このようなとき、Fixed point numbersを2進数で表すと、整数部分が上から16ビット目から始まるため、
00000000000000011000000000000000
になるので
FixedPointNumbers = 1 * 2^16 + 1 * 2^15
すなわち
FixedPointNumbers = 1.5 * 2^16 = 98304
となります。
つまり、Fixed point numbersを小数で表した場合、Fixed point numbersの値は
Fixed point numbers = (小数) * 2^16 = (小数) * 65536
となります。(注意:1と1.0の値は違うので気をつけましょう。)
また、一番はじめ(左)のビットは符号を表すため、Fixed point numbersは
-2147483648〜2147483647までの値を扱うことができます。
2147483647に1を足すと-2147483648になります。
また、Fixed point numbersを小数として他のFixed point numbersとかけ算や割り算をした場合、*や/の演算子を使用すると、実際よりも2^16倍大きくなってしまうため、FixedMul関数やFixedDiv関数を使用しましょう。
Byte Angles
0から255の値を使用して角度を指定する方法です。(360°を256等分します。)
東を0とし、左回りに値が増え、64で北、128で西、192で南を指します。
知っておくと便利な値の方角を紹介します。
北西 96 |
北 64 |
北東 32 |
西 128 |
- | 東 0 |
南西 160 |
南 192 |
南東 224 |
Fixed point angles
Fixed point numbersの小数部分を使って角度を指定する方法です。
角度の指定はByte Angleと似ていて、東を0.0とし左回りに値が増え最終的に1.0で東に戻ります。(整数部分は角度には影響しません。)
知っておくと便利な値の方角を紹介します。(未確認)
北西 0.375 |
北 0.25 |
北東 0.125 |
西 0.5 |
- | 東 0.0 |
南西 0.625 |
南 0.75 |
南東 0.875 |
Byte AnglesとFixed Point Anglesの変換方法は
FixedPointAngles = ByteAngles * 2^8
すなわち
FixedPointAngles = ByteAngles << 8
ByteAngles = FixedPointAngles / 2^8
すなわち
ByteAngles = FixedPointAngles >> 8
Pitch
Thingの上下の向きをFixed point anglesを使って指定します。
-0.0888977〜0.155548の値(整数で表すと-5825〜10194)を使用します。
負の値になると、上を向き、正の値になると下を向きます。0は正面を向いています。
Sprite angles
Sprite(モンスターやアイテムの画像の一場面)の指定方法です。
DEHACKEDやDECORATEの解説が完成する時までこの紹介はしばらくお待ち下さい。
その他の単位
時間の単位
Tic
1秒を35区切りした単位です。35 Tic = 1 秒 です。主にこちらを使います。
Octic
1秒を8区切りした単位です。8 Octic = 1 秒 です。
距離の単位
Unit
Lineの長さや、天井の高さ、床の高さ、Thingの身長などに使われる単位です。
速さの単位
ACSやActionSpecialで使用する速さです。何も断りが無い限り、速さの単位はこれを指します。
128の速さで、35 * 16 = 560 の距離を移動するのに必要な時間は35 tic = 1 秒 です。
つまり、速さsで距離hを移動するのに必要な時間は
(128 * h) / (560 * s) = (8 * h) / (35 * s) (秒)
です。
Action specials※(このページではSpecialまたはコマンドと呼びます)
主にThingやLineやSectorなどに動作を与えるコマンドです。
PolyObjectsとは?
ZDOOMHEXEN.PRJの解説4を参考にして下さい。
Line Type |
コマンド | 引数の意味 | 内容 | |
1 | Polyobj_StartLine (po, mirror, sound) | po | PolyObjectsの番号を指定します。 | PolyObjectsを指定するために必要なLineTypeです。 soundで指定する音はまずSNDSEQで定義する必要があります。 |
mirror | 指定したPolyObjectsと逆の動作をするPolyObjectsを指定します。 | |||
sound | ドアの開閉の音の連続の番号を指定します。 | |||
2 | Polyobj_RotateLeft (po, speed, angle) | po | 回転させるPolyObjectsの番号を指定します。 | PolyObjectsを左回りに回転させます。 angleはByteAngleを使用して下さい。(この場合、ByteAngleは方角を表すのではなく、角度を表します。) また、angleに0を入力すると360°回転し、255を入力すると永遠に回り続けます。 |
speed | 回転する速さを指定します。 | |||
angle | 回転する角度を指定します。 (ByteAngle) |
|||
3 | Polyobj_RotateRight (po, speed, angle) | po | 回転させるPolyObjectsの番号を指定します。 | PolyObjectsを右回りに回転させます。 angleはByteAngleを使用して下さい。(この場合、ByteAngleは方角を表すのではなく、角度を表します。) また、angleに0を入力すると360°回転し、255を入力すると永遠に回り続けます。 |
speed | 回転する速さを指定します。 | |||
angle | 回転する角度を指定します。 (ByteAngle) |
|||
4 | Polyobj_Move (po, speed, angle, dist) | po | 移動させるPolyObjectsの番号を指定します。 | PolyObjectsを指定した方角に移動させます。 angleはByteAngleを使用して下さい。 ちなみに、distが0だと移動しません。 |
speed | 移動する速さを指定します。 | |||
angle | 移動する方角を指定します。 (ByteAngle) |
|||
dist | 移動する距離をし指定します。 (unit) |
|||
5 | Polyobj_ExplicitLine (po, order, mirror, sound) | po | PolyObjectsの番号を指定します。 | 指定したLineがPolyObjectsの一部であると設定します。Polyobj_StartLineと似ていますが、Polyobj_ExplicitLineは動かすLineが繋がっていなくてもPolyObjectsの一部として指定することができます。(二つの柱を一つのPolyObjectsとして扱うときなど) orderは恐らく画像を描写する順番だと思われます。それぞれのLineに1から順番に番号をふっていくべきかと思います。 soundで指定する音はまずSNDSEQで定義する必要があります。 |
order | 恐らくLineに画像を描写する順番を指定します。 | |||
mirror | 指定したPolyObjectsと逆の動作をするPolyObjectsを指定します | |||
sound | ドアの開閉の音の連続の番号を指定します。 | |||
6 | Polyobj_MoveTimes8 (po, speed, angle, dist) | po | 移動させるPolyObjectsの番号を指定します。 | Polyobj_Moveとほとんど同じです。 PolyObjectsを dist * 8 unitの距離だけ移動させます。 |
speed | 移動する速さを指定します。 | |||
angle | 移動する方角を指定します。 (ByteAngle) |
|||
dist | 移動する距離の1/8を指定します。 (unit) |
|||
7 | Polyobj_DoorSwing (po, speed, angle, delay) | po | ドアとなるPolyObjectsを指定します。 | PolyObjectsを開き戸のように回転させます。 angleはByteAngleを使用し、左回りに回ります。 ACSからPolyobj_DoorSwingを使う場合はspeedを負の値にすれば右回りに回転させることができます。 |
speed | ドアの開閉の速さを指定します。 | |||
angle | ドアが開く角度を指定します。 (ByteAngle) |
|||
delay | ドアが開いている時間を指定します。 (Tic) |
|||
8 | Polyobj_DoorSlide (po, speed, angle, dist, delay) | po | ドアとなるPolyObjectsを指定します。 | PolyObjectsを引き戸のように移動させます。 angleはByteAngleを使用します。 delayで指定した時間だけ開いた後、元の位置に戻ります。 |
speed | ドアの開閉の速さを指定します。 | |||
angle | ドアが移動する方角を指定します。 (ByteAngle) |
|||
dist | ドアが移動する距離を指定します。 (unit) |
|||
delay | ドアが開いている時間を指定します。 (Tic) |
|||
90 | Polyobj_OR_RotateLeft (po, speed, angle) | po | 回転させるPolyObjectsの番号を指定します。 | Polyobj_RotateLeftとほとんど同じですが、Polyobj_OR_RotateLeftは指定したPolyObjectsが何か他の動作をしているときでも影響を与えることができます。 逆に、Polyobj_RotateLeftを使って動作しているPolyObjectsに影響を与えることはでいません。 永遠に回転しているPolyObjectsを逆回転させるときなどに便利です。 また、angleに0を入力すると360°回転し、255を入力すると永遠に回り続けます。 |
speed | 回転する速さを指定します。 | |||
angle | 回転する角度を指定します。 (ByteAngle) |
|||
91 | Polyobj_OR_RotateRight (po, speed, angle) | po | 回転させるPolyObjectsの番号を指定します。 | Polyobj_RotateRightとほとんど同じですが、Polyobj_OR_RotateRightは指定したPolyObjectsが何か他の動作をしているときでも影響を与えることができます。 逆に、Polyobj_RotateRightを使って動作しているPolyObjectsに影響を与えることはでいません。 永遠に回転しているPolyObjectsを逆回転させるときなどに便利です。 また、angleに0を入力すると360°回転し、255を入力すると永遠に回り続けます。 |
speed | 回転する速さを指定します | |||
angle | 回転する角度を指定します。 (ByteAngle) |
|||
92 | Polyobj_OR_Move (po, speed, angle, distance) | po | 移動させるPolyObjectsの番号を指定します。 | Polyobj_Moveとほとんど同じですが、Polyobj_OR_Moveは指定したPolyObjectsが何か他の動作をしているときでも影響を与えることができます。 逆に、Polyobj_Moveを使って動作しているPolyObjectsに影響を与えることはでいません。 angleはByteAngleを使用して下さい。 |
speed | 移動する速さを指定します。 | |||
angle | 移動する方角を指定します。 (ByteAngle) |
|||
distance | 移動する距離をし指定します。 (unit) |
|||
93 | Polyobj_OR_MoveTimes8 (po, speed, angle, distance) | po | 移動させるPolyObjectsの番号を指定します。 | Polyobj_MoveTimes8とほとんど同じですが、Polyobj_OR_MoveTimes8は指定したPolyObjectsが何か他の動作をしているときでも影響を与えることができます。 逆に、Polyobj_MoveTimes8を使って動作しているPolyObjectsに影響を与えることはでいません。 angleはByteAngleを使用して下さい。 PolyObjectsを dist * 8 unitの距離だけ移動させます。 |
speed | 移動する速さを指定します。 | |||
angle | 移動する方角を指定します。 (ByteAngle) |
|||
distance | 移動する距離の1/8をし指定します。 (unit) |
Doors
ドアが開いたり閉まったりします。
Line Type |
コマンド | 引数の意味 | 内容 | |
10 | Door_Close (tag, speed, lighttag) | tag | ドアを閉めるSectorを指定します。 (LineDefTag) |
ドアを閉めます。 tagが0の場合は、起動したLineのSide 2側のSectorがドアと見なされます。 lighttagが0以外の場合、lighttagと同じLineDefTagを持つSectorの明るさが、ドアが閉まるときに、隣接するSectorで最も暗いSectorと同じ値まで段々と暗くなります。 lighttagは0でない場合、tagと同じ値であるべきだと思います。 ちなみに、speedが64以上になると、素早いドアの開閉音になります。 |
speed | ドアが閉まる速さを指定します。 | |||
lighttag | 明るさの変化を与えるSectorを指定します。 | |||
11 | Door_Open (tag, speed, lighttag) | tag | ドアを開けるSectorを指定します。 (LineDefTag) |
ドアを開けます。 tagが0の場合は、起動したLineのSide 2側のSectorがドアと見なされます。 lighttagが0以外の場合、lighttagと同じLineDefTagを持つSectorの明るさが、ドアが開くときに、隣接するSectorで最も明るいSectorと同じ値まで段々と明るくなります。 lighttagは0でない場合、tagと同じ値であるべきだと思います。 ちなみに、speedが64以上になると、素早いドアの開閉音になります。 |
speed | ドアが開く速さを指定します。 | |||
lighttag | 明るさの変化を与えるSectorを指定します。 | |||
12 | Door_Raise (tag, speed, delay, lighttag) | tag | ドアを開けるSectorを指定します。 (LineDefTag) |
ドアが開き、delayで入力した値の間開いた後、ドアが閉まります。 tagが0の場合は、起動したLineのSide 2側のSectorがドアと見なされます。 lighttagが0以外の場合、lighttagと同じLineDefTagを持つSectorの明るさが、ドアが開くときに、隣接するSectorで最も明るいSectorと同じ値まで段々と明るくなります。 また、ドアが閉まるときに、隣接するSectorで最も暗いSectorと同じ値まで段々と暗くなります。 lighttagは0でない場合、tagと同じ値であるべきだと思います。 ちなみに、speedが64以上になると、素早いドアの開閉音になります。 |
speed | ドアが開く速さを指定します。 | |||
delay | ドアが開いている時間を指定します。 (Tic) |
|||
lighttag | 明るさの変化を与えるSectorを指定します。 | |||
13 | Door_LockedRaise (tag, speed, delay, lock, lighttag) | tag | ドアを開けるSectorを指定します。 (LineDefTag) |
特定の鍵を持っているときにドアが開き、delayで入力した値の間開いた後、ドアが閉まります。 鍵が必要な以外はDoor_Raiseと同じです。 鍵番号は鍵番号表を見て下さい。 tagが0の場合は、起動したLineのSide 2側のSectorがドアと見なされます。 lighttagが0以外の場合、lighttagと同じLineDefTagを持つSectorの明るさが、ドアが開くときに、隣接するSectorで最も明るいSectorと同じ値まで段々と明るくなります。 また、ドアが閉まるときに、隣接するSectorで最も暗いSectorと同じ値まで段々と暗くなります。 lighttagは0でない場合、tagと同じ値であるべきだと思います。 ちなみに、speedが64以上になると、素早いドアの開閉音になります。 |
speed | ドアが開く速さを指定します。 | |||
delay | ドアが開いている時間を指定します。 (Tic) |
|||
lock | 鍵の番号を指定します。 | |||
lighttag | 明るさの変化を与えるSectorを指定します。 | |||
14 | Door_Animated (tag, speed, delay) | tag | ドアを開けるSectorを指定します。 (LineDefTag) |
アニメーションのドアを開きます。 作り方はANIMDEFSの解説を参考にして下さい。 また、アニメーションのドアには守らなければならない条件があります。 ・普通のドアのように作り、天井と床の高さは等しくならなければならない。 ・アニメーションの画像はANIMDEFSで定義されている画像を使用しなければならない。 ・ドアとなるSectorと隣り合う他のSectorとの境界のLine(ドアの画像を貼り付けるLine)は2本まで使用してよい。 ・ドアの画像を貼り付ける2本のLineには同じ画像を張らなければならない。 |
speed | ドアが開く速さ(アニメーションの間隔)を指定します。 | |||
delay | ドアが開いている時間を指定します。 (Tic) |
|||
249 | Door_CloseWaitOpen (tag, speed, delay, lighttag) | tag | ドアを閉めるSectorを指定します。 (LineDefTag) |
ドアが閉まり、delayで入力した値の間閉まった後、ドアが開きます。 tagが0の場合は、起動したLineのSide 2側のSectorがドアと見なされます。 lighttagが0以外の場合、lighttagと同じLineDefTagを持つSectorの明るさが、ドアが開くときに、隣接するSectorで最も明るいSectorと同じ値まで段々と明るくなります。 また、ドアが閉まるときに、隣接するSectorで最も暗いSectorと同じ値まで段々と暗くなります。 lighttagは0でない場合、tagと同じ値であるべきだと思います。ちなみに、speedが64以上になると、素早いドアの開閉音になります。 |
speed | ドアが閉まる速さを指定します。 | |||
delay | ドアが閉まっている時間を指定します。 (Tic) |
|||
lighttag | 明るさの変化を与えるSectorを指定します。 |
lockに入る番号 | 必要な鍵 |
0 | 無し |
1 | レッドキーカード |
2 | ブルーキーカード |
3 | イエローキーカード |
4 | レッドスカルキー |
5 | ブルースカルキー |
6 | イエロースカルキー |
100 | 6種類の鍵のうちどれか1つ |
101 | 6種類全部 |
102 | 開きません。"This doesn't seem to work"というメッセージが出ます |
129 | 赤色の鍵ならどれでも |
130 | 青色の鍵ならどれでも |
131 | 黄色の鍵ならどれでも |
229 | 3種類の色の鍵(キーカードかスカルキーかは区別しません) |
Ceilings
天井に何か動作を与えます。
Line Type |
コマンド | 引数の意味 | 内容 | |
38 | Ceiling_Waggle(tag, amp, freq, offset, time) | tag | 天井が上下するSectorを指定します。 (LineDefTag) |
天井が滑らかに上下します。 この天井の上下は正弦曲線を利用しています。 天井は最初、上昇した後、下降し、これを繰り返します。 指定した位相と同位相になるまで、指定した振幅まで段々と滑らかに大きく上下します。 指定した時間、上下した後、滑らかにもとの高さに段々と戻ります。 timeが0の場合、永遠に上下します。 周波数について、実際に計ってみたところ、 freqが115でおよそ1ヘルツのようです。 |
amp | 振幅のを指定します。(1/8倍になります。) (1 / 8 unit) |
|||
freq | 天井の上下の周波数を指定します。 値が高ければ素早く天井が上下します。 |
|||
offset | 位相を指定します。 | |||
time | 天井が上下している秒数を指定します。 (秒) |
|||
40 | Ceiling_LowerByValue (tag, speed, height) |
tag | 天井を下げるSectorを指定します。 (LineDefTag) |
指定した天井が下がります。 tagが0の場合、起動したLineのSide 2側のSectorの天井が下がります。 |
speed | 天井が下がる速さを指定します。 | |||
height | 天井が下がる高さ(距離)を指定します。 (unit) |
|||
41 | Ceiling_RaiseByValue (tag, speed, height) | tag | 天井を上げるSectorを指定します。 (LineDefTag) |
指定した天井が上がります。 tagが0の場合、起動したLineのSide 2側のSectorの天井が上がります。 |
speed | 天井が上がる速さを指定します。 | |||
height | 天井が上がる高さ(距離)を指定します。 (unit) |
|||
42 | Ceiling_CrushAndRaise (tag, speed, crush [, crushmode]) | tag | プレス機になる天井を指定します。 (LineDefTag) |
天井が指定した速さで下がり、そのSectorにあるThingはどんな物でもプレスされ、床まで下がったら、もとの高さまで上昇します。永遠にプレスは続きます。 プレイヤーや敵がプレスされる時に、ダメージ音を連続で発しますがcrushはその音ごとに与えられます。 天井が上昇するときはspeedの半分の速さで上昇します。 crushmodeはcrushmode表を見て下さい。 tagが0の場合、起動したLineのSide 2側のSectorがプレス機になります。 |
speed | プレスの速さを指定します。 | |||
crush | プレスで与えるダメージを指定します。 | |||
crushmode | プレス方式を指定します。この引数は無くても問題ありません。 development versionのみ有効 |
|||
43 | Ceiling_LowerAndCrush (tag, speed, crush [, crushmode]) | tag | プレス機になる天井を指定します。 (LineDefTag) |
天井が指定した速さで下がり、そのSectorにあるThingはどんな物でもプレスされ、床より8unit高い場所まで下がったら、上昇せずにプレスを終了します。 プレイヤーや敵がプレスされる時に、ダメージ音を連続で発しますがcrushはその音ごとに与えられます。 crushmodeはcrushmode表を見て下さい。 tagが0の場合、起動したLineのSide 2側のSectorがプレス機になります。 |
speed | プレスの速さを指定します。 | |||
crush | プレスで与えるダメージを指定します。 | |||
crushmode | プレス方式を指定します。この引数は無くても問題ありません。 development versionのみ有効 |
|||
44 | Ceiling_CrushStop (tag) | tag | プレスを停止させるSectorを指定します。 (LineDefTag) |
プレスしているSectorを停止させます。 Ceiling_CrushAndRaiseと Ceiling_CrushAndRaiseAと Ceiling_CrushAndRaiseSilentA の時に、停止させることができます。 また、停止させた後に、再びプレスを再開させると、停止する前の高さまで天井が上昇します。 また、プレスを停止したSectorについて、天井を上下させるSpecialを使用しても動きません。 |
45 | Ceiling_CrushRaiseAndStay (tag, speed, crush [, crushmode]) | tag | プレス機になる天井を指定します。 (LineDefTag) |
天井が指定した速さで下がり、そのSectorにあるThingはどんな物でもプレスされ、床まで下がったら、もとの高さまで上昇し、停止します。 プレイヤーや敵がプレスされる時に、ダメージ音を連続で発しますがcrushはその音ごとに与えられます。 天井が上昇するときはspeedの半分の速さで上昇します。 crushmodeはcrushmode表を見て下さい。 tagが0の場合、起動したLineのSide 2側のSectorがプレス機になります。 |
speed | プレスの速さを指定します。 | |||
crush | プレスで与えるダメージを指定します。 | |||
crushmode | プレス方式を指定します。この引数は無くても問題ありません。 development versionのみ有効 |
|||
47 | Ceiling_MoveToValue (tag, speed, height, neg) | tag | 天井を移動させるSectorを指定します。 (LineDefTag) |
天井が指定した高さまで移動します。 heightに負の値を入力しても、その絶対値の高さまでしか移動しないので、負の値の高さに移動したい場合は、negに1を入力しましょう。 tagが0の場合、起動したLineのSide 2側のSectorの天井が移動します。 |
speed | 天井が移動する速さを指定します。 | |||
height | 天井が移動する目標地点を高さで指定します。指定した値の絶対値が目標地点の高さとなります。 (unitの絶対値) |
|||
neg | 高さを負の値の高さにしたい場合は、ここに1を入力し、それ以外の場合は、0を入力します。 | |||
69 | Ceiling_MoveToValueTimes8 (tag, speed, height, neg) | tag | 天井を移動させるSectorを指定します。 (LineDefTag) |
天井が指定した高さの8倍まで移動します。 heightに負の値を入力しても、その絶対値の高さまでしか移動しないので、負の値の高さに移動させたい場合は、negに1を入力しましょう。 tagが0の場合、起動したLineのSide 2側のSectorの天井が移動します。 |
speed | 天井が移動する速さを指定します。 | |||
height | 天井が移動する目標地点を高さの1/8で指定します。指定した値の絶対値が目標地点の高さとなります。 (unitの絶対値) |
|||
neg | 高さを負の値の高さにしたい場合は、ここに1を入力し、それ以外の場合は、0を入力します。 | |||
192 | Ceiling_LowerToHighestFloor (tag, speed) | tag | 天井を下げるSectorを指定します。 (LineDefTag) |
指定したSectorを囲んでいるSectorの中で、最も高い床の高さまで天井が下がります。 もし、指定したSectorの天井の高さより、囲んでいるSectorで最も高い床の高さの方が高ければ、天井は、一瞬の速さで、その床の高さまで移動します。 tagが0の場合、起動したLineのSide 2側のSectorの天井が下がります。 |
speed | 天井が下がる速さを指定します。 | |||
193 | Ceiling_LowerInstant (tag, arg1, height) | tag | 天井を下げるSectorを指定します。 (LineDefTag) |
天井がheight * 8 unitの距離だけ一瞬の速さで下がります。 指定した天井の下にThingがあり、そのThingが天井の下降の妨げになる場合は、天井は下がりません。 tagが0の場合、起動したLineのSide 2側のSectorの天井が下がります。 |
arg1 | 使用しません。0を入力して下さい。 | |||
height | 天井が下がる高さ(距離)の1/8を指定します。 | |||
194 | Ceiling_RaiseInstant (tag, arg1, height) | tag | 天井を上げるSectorを指定します。 (LineDefTag) |
天井がheight * 8 unitの距離だけ一瞬の速さで上がります。 tagが0の場合、起動したLineのSide 2側のSectorの天井が上がります。 |
arg1 | 使用しません。0を入力して下さい。 | |||
height | 天井が上がる高さ(距離)の1/8を指定します。 (unit) |
|||
195 | Ceiling_CrushRaiseAndStayA (tag, dspeed, uspeed, crush [,crushmode]) | tag | プレス機になる天井を指定します。 (LineDefTag) |
天井がdspeedの速さで下がり、そのSectorにあるThingはどんな物でもプレスされ、床まで下がったら、もとの高さまでuspeedの速さで上昇し、停止します。 プレイヤーや敵がプレスされる時に、ダメージ音を連続で発しますがcrushはその音ごとに与えられます。 crushmodeはcrushmode表を見て下さい。 tagが0の場合、起動したLineのSide 2側のSectorがプレス機になります。 |
dspeed | 天井が下がる速さを指定します。 | |||
uspeed | 天井が上がる速さを指定します。 | |||
crush | プレスで与えるダメージを指定します。 | |||
crushmode | プレス方式を指定します。この引数は無くても問題ありません。 development versionのみ有効 |
|||
196 | Ceiling_CrushAndRaiseA (tag, dspeed, uspeed, crush [,crushmode]) | tag | プレス機になる天井を指定します。 (LineDefTag) |
天井がdspeedの速さで下がり、そのSectorにあるThingはどんな物でもプレスされ、床まで下がったら、もとの高さまでuspeedの速さで上昇します。永遠にプレスは続きます。 プレイヤーや敵がプレスされる時に、ダメージ音を連続で発しますがcrushはその音ごとに与えられます。 crushmodeはcrushmode表を見て下さい。 tagが0の場合、起動したLineのSide 2側のSectorがプレス機になります。 |
dspeed | 天井が下がる速さを指定します。 | |||
uspeed | 天井が上がる速さを指定します | |||
crush | プレスで与えるダメージを指定します。 | |||
crushmode | プレス方式を指定します。この引数は無くても問題ありません。 development versionのみ有効 |
|||
197 | Ceiling_CrushAndRaiseSilentA (tag, dspeed, uspeed, crush [,crushmode]) | tag | プレス機になる天井を指定します。 (LineDefTag) |
Ceiling_CrushAndRaiseAとほとんど同じですが、プレス機が動いている音が無く、天井が床に着いたときと天井がもとの高さまで戻ったときに音を出します。 天井がdspeedの速さで下がり、そのSectorにあるThingはどんな物でもプレスされ、床まで下がったら、もとの高さまでuspeedの速さで上昇します。永遠にプレスは続きます。 プレイヤーや敵がプレスされる時に、ダメージ音を連続で発しますがcrushはその音ごとに与えられます。 crushmodeはcrushmode表を見て下さい。 tagが0の場合、起動したLineのSide 2側のSectorがプレス機になります。 |
dspeed | 天井が下がる速さを指定します。 | |||
uspeed | 天井が上がる速さを指定します | |||
crush | プレスで与えるダメージを指定します。 | |||
crushmode | プレス方式を指定します。この引数は無くても問題ありません。 development versionのみ有効 |
|||
198 | Ceiling_RaiseByValueTimes8 (tag, speed, height) | tag | 天井を上げるSectorを指定します。 (LineDefTag) |
指定した天井が指定した高さの8倍の分だけ上がります。 tagが0の場合、起動したLineのSide 2側のSectorの天井が上がります。 |
speed | 天井が上がる速さを指定します。 | |||
height | 天井が上がる高さ(距離)の1/8を指定します。 (unit) |
|||
199 | Ceiling_LowerByValueTimes8 (tag, speed, height) | tag | 天井を下げるSectorを指定します。 (LineDefTag) |
指定した天井が指定した高さの8倍の分だけ下がります。 tagが0の場合、起動したLineのSide 2側のSectorの天井が下がります。 |
speed | 天井が下がる速さを指定します。 | |||
height | 天井が下がる高さ(距離)の1/8を指定します。 (unit) |
|||
252 | Ceiling_RaiseToNearest (tag, speed) | tag | 天井を上げるSectorを指定します。 (LineDefTag) |
天井が上がるSectorに隣接しているSectorで、天井の高さがより高く、より近い高さにある天井の高さまで、指定したSectorの天井が上がります。 もし、隣接しているSectorの天井の高さについて、指定したSectorの天井より高い天井が無ければ、何も起きません。 tagが0の場合、起動したLineのSide 2側のSectorの天井が上がります。 |
speed | 天井が上がる速さを指定します。 | |||
253 | Ceiling_LowerToLowest (tag, speed) | tag | 天井を下げるSectorを指定します。 (LineDefTag) |
指定したSectorを囲んでいるSectorの中で、最も低い天井の高さまで天井が下がります。 もし、指定したSectorの天井の高さより、囲んでいるSectorで最も高い天井の高さの方が高ければ、天井は、一瞬の速さで、その天井の高さまで移動します。 tagが0の場合、起動したLineのSide 2側のSectorの天井が下がります。 |
speed | 天井が下がる速さを指定します。 | |||
254 | Ceiling_LowerToFloor (tag, speed) | tag | 天井を下げるSectorを指定します。 (LineDefTag) |
指定したSectorの天井が、そのSectorの床の高さまで下がります。 tagが0の場合、起動したLineのSide 2側のSectorの天井が下がります。 |
speed | 天井が下がる速さを指定します。 | |||
255 | Ceiling_CrushRaiseAndStaySilA (tag, dspeed, uspeed, crush [, crushmode]) | tag | プレス機になる天井を指定します。 (LineDefTag) |
Ceiling_CrushRaiseAndStayAとほとんど同じですが、プレス機が動いている音が無く、天井が床に着いたときと天井がもとの高さまで戻ったときに音を出します。 天井がdspeedの速さで下がり、そのSectorにあるThingはどんな物でもプレスされ、床まで下がったら、もとの高さまでuspeedの速さで上昇し、停止します。 プレイヤーや敵がプレスされる時に、ダメージ音を連続で発しますがcrushはその音ごとに与えられます。 crushmodeはcrushmode表を見て下さい。 tagが0の場合、起動したLineのSide 2側のSectorがプレス機になります |
dspeed | 天井が下がる速さを指定します。 | |||
uspeed | 天井が上がる速さを指定します。 | |||
crush | プレスで与えるダメージを指定します。 | |||
crushmode | プレス方式を指定します。この引数は無くても問題ありません。 development versionのみ有効 |
値 | 意味 |
0 | 常にオリジナルのゲームのプレス方式になります。 DOOMならDOOM方式、HereticやStrifeやHexenならHexen方式になります。 ちなみにZDOOMHEXEN.PRJの場合は、DOOM方式になります。 |
1 | DOOMのプレス方式になります。Thingがプレスされる場合、Thingの身長は関係なく、床までプレスされます。 |
2 | Hexenのプレス方式になります。Thingがプレスされる場合、天井はThingの身長の所で停止し、ダメージを与え続けます。 |
Floors
床に何か動作を与えます。
Line Type |
コマンド | 引数の意味 | 内容 | |
20 | Floor_LowerByValue (tag, speed, height) |
tag | 床を下げるSectorを指定します。 (LineDefTag) |
指定した床が下がります。 tagが0の場合、起動したLineのSide 2側のSectorの床が下がります。 |
speed | 床が下がる速さを指定します。 | |||
height | 床が下がる高さ(距離)を指定します。 (unit) |
|||
21 | Floor_LowerToLowest (tag, speed) | tag | 床を下げるSectorを指定します。 (LineDefTag) |
指定したSectorを囲んでいるSectorの中で、最も低い床の高さまで床が下がります。 もし、隣接しているSectorの床の高さについて、指定したSectorの床より低い床が無ければ、何も起きません。 tagが0の場合、起動したLineのSide 2側のSectorの床が下がります。 |
speed | 床が下がる速さを定します。 | |||
22 | Floor_LowerToNearest (tag, speed) | tag | 床を下げるSectorを指定します。 (LineDefTag) |
床が下がるSectorに隣接しているSectorで、床の高さがより低く、より近い高さにある床の高さまで、指定したSectorの床が下がります。 もし、隣接しているSectorの床の高さについて、指定したSectorの床より低い床が無ければ、何も起きません。 tagが0の場合、起動したLineのSide 2側のSectorの床が下がります。 |
speed | 床が下がる速さを指定します。 | |||
23 | Floor_RaiseByValue (tag, speed, height) | tag | 床を上げるSectorを指定します。 (LineDefTag) |
指定した床が上がります。 tagが0の場合、起動したLineのSide 2側のSectorの床が上がります。 |
speed | 床が上がる速さを指定します。 | |||
height | 床が上がる高さ(距離)を指定します。 (unit) |
|||
24 | Floor_RaiseToHighest (tag, speed) | tag | 床を上げるSectorを指定します。 (LineDefTag) |
指定したSectorを囲んでいるSectorの中で、最も高い床の高さまで床が上がります。 もし、指定したSectorの床の高さより、囲んでいるSectorで最も高い床の高さの方が低ければ、天井は、一瞬の速さで、その床の高さまで移動します。 tagが0の場合、起動したLineのSide 2側のSectorの床が上がります。 |
speed | 床が上がる速さを指定します。 | |||
25 | Floor_RaiseToNearest (tag, speed) | tag | 床を上げるSectorを指定します。 (LineDefTag) |
床が上がるSectorに隣接しているSectorで、床の高さがより高く、より近い高さにある床の高さまで、指定したSectorの床が上がります。 囲んでいるSectorで、もし指定したSectorの床の高さより高い床が無ければ、何も起こりません。 tagが0の場合、起動したLineのSide 2側のSectorの床が上がります。 |
speed | 床が上がる速さを指定します。 | |||
28 | Floor_RaiseAndCrush (tag, speed, crush [,crushmode]) | tag | プレス機になる床を指定します。 (LineDefTag) |
床が指定した速さで上がり、そのSectorにあるThingはどんな物でもプレスされ、天井より8unit低い地点まで上がったら、停止します。 プレイヤーや敵がプレスされる時に、ダメージ音を連続で発しますがcrushはその音ごとに与えられます。 crushmodeはcrushmode表を見て下さい。 tagが0の場合、起動したLineのSide 2側のSectorがプレス機になります。 |
speed | プレスの速さを指定します。 | |||
crush | プレスで与えるダメージを指定します。 | |||
crushmode | プレス方式を指定します。この引数は無くても問題ありません。 development versionのみ有効 |
|||
35 | Floor_RaiseByValueTimes8 (tag, speed, height) | tag | 床を上げるSectorを指定します。 (LineDefTag) |
指定した床が指定した高さの8倍の分だけ上がります。 tagが0の場合、起動したLineのSide 2側のSectorの床が上がります。 |
speed | 床が上がる速さを指定します。 | |||
height | 床が上がる高さ(距離)の1/8を指定します。 (unit) |
|||
36 | Floor_LowerByValueTimes8 (tag, speed, height) | tag | 床を下げるSectorを指定します。 (LineDefTag) |
指定した床が指定した高さの8倍の分だけ下がります。 tagが0の場合、起動したLineのSide 2側のSectorの床が下がります。 |
speed | 床が下がる速さを指定します。 | |||
height | 床が下がる高さ(距離)の1/8を指定します。 (unit) |
|||
46 | Floor_CrushStop (tag) | tag | プレスを停止させるSectorを指定します。 (LineDefTag) |
プレスしているSectorを停止させます。 |
66 | Floor_LowerInstant (tag, arg1, height) | tag | 床を下げるSectorを指定します。 (LineDefTag) |
床がheight * 8 unitの距離だけ一瞬の速さで下がります。 tagが0の場合、起動したLineのSide 2側のSectorの床が下がります。 |
arg1 | 使用しません。0を入力して下さい。 | |||
height | 床が下がる高さ(距離)の1/8を指定します。 (unit) |
|||
67 | Floor_RaiseInstant (tag, arg1, height) | tag | 床を上げるSectorを指定します。 (LineDefTag) |
床がheight * 8 unitの距離だけ一瞬の速さで上がります。 指定した床の上にThingがあり、そのThingが床の上昇の妨げになる場合(Thingが天井と挟まれるときなど)は、床はThingを挟む高さまで上がりますが、すぐにもとの高さに戻ります。 tagが0の場合、起動したLineのSide 2側のSectorの床が上がります。 |
arg1 | 使用しません。0を入力して下さい。 | |||
height | 床が上がる高さ(距離)の1/8を指定します。 (unit) |
|||
37 | Floor_MoveToValue (tag, speed, height, neg) | tag | 床を移動させるSectorを指定します。 (LineDefTag) |
床が指定した高さまで移動します。 heightに負の値を入力しても、その絶対値の高さまでしか移動しないので、負の値の高さに移動したい場合は、negに1を入力しましょう。 tagが0の場合、起動したLineのSide 2側のSectorの床が移動します。 |
speed | 床が移動する速さを指定します。 | |||
height | 床が移動する目標地点を高さで指定します。指定した値の絶対値が目標地点の高さとなります。 (unitの絶対値) |
|||
neg | 高さを負の値の高さにしたい場合は、ここに1を入力し、それ以外の場合は、0を入力します。 | |||
68 | Floor_MoveToValueTimes8 (tag, speed, height, neg) | tag | 床を移動させるSectorを指定します。 (LineDefTag) |
床が指定した高さの8倍まで移動します。 heightに負の値を入力しても、その絶対値の高さまでしか移動しないので、負の値の高さに移動させたい場合は、negに1を入力しましょう。 tagが0の場合、起動したLineのSide 2側のSectorの床が移動します。 |
speed | 床が移動する速さを指定します。 | |||
height | 床が移動する目標地点を高さの1/8で指定します。指定した値の絶対値が目標地点の高さとなります。 (unitの絶対値) |
|||
neg | 高さを負の値の高さにしたい場合は、ここに1を入力し、それ以外の場合は、0を入力します。 | |||
138 | Floor_Waggle (tag, amp, freq, offset, time) | tag | 床が上下するSectorを指定します。 (LineDefTag) |
床が滑らかに上下します。 この床の上下は正弦曲線を利用しています。 床は最初、上昇した後、下降し、これを繰り返します。 指定した位相と同位相になるまで、指定した振幅まで段々と滑らかに大きく上下します。 指定した時間、上下した後、滑らかにもとの高さに段々と戻ります。 timeが0の場合、永遠に上下します。 周波数について、実際に計ってみたところ、 freqが115でおよそ1ヘルツのようです。 |
amp | 振幅のを指定します。(1/8倍になります。) (1 / 8 unit) |
|||
freq | 床の上下の周波数を指定します。 値が高ければ素早く床が上下します。 |
|||
offset | 位相を指定します。 | |||
time | 床が上下している秒数を指定します。 (秒) |
|||
235 | Floor_TransferTrigger (tag) | tag | 適応先のSectorを指定します。 (LineDefTag) |
このSpecialを使用しているLineのSide 1側のSectorの床の情報(床の画像、ダメージを受ける床の設定など。明るさの情報などは適応されません。)を指定したSectorの床に適応します。 また、このSpecialを使用しているLineのSide 1側のSectorのことをTrigger Change Modelと呼びます。 |
236 | Floor_TransferNumeric (tag) | tag | 適応先のSectorを指定します。 (LineDefTag) |
決まった法則に従って決めたSector(Numeric Change Model)の床の情報(床の画像、ダメージを受ける床の設定など。明るさの情報などは適応されません。)を指定したSectorの床に適応します。 Numeric Change Modelの決め方は次の順番です。 @tagで指定したSectorを囲んでいるSectorを調べます。 A先ほど調べたSectorと、tagで指定したSectorを仕切っているLineで最も低いLineDefナンバー(それぞれのLineを特定するための番号です。具体的には、DeePseaでは、LineDef ○○ の○○にあたります。Lineidとは違います。)を調べます。 BそのLineのtagで指定したSector側の反対の部分に接するSectorがNumeric Change Modelです。 |
238 | Floor_RaiseToLowestCeiling (tag, speed) | tag | 床を上げるSectorを指定します。 (LineDefTag) |
指定したSectorを囲んでいるSectorの中で、最も低い天井の高さまで床が上がります。 指定したSectorの天井の高さが最も低い場合、その高さまで床が上がります。 tagが0の場合、起動したLineのSide 2側のSectorの床が上がります。 |
speed | 床が上がる速さを指定します。 | |||
239 | Floor_RaiseByValueTxTy (tag, speed, height) | tag | 床を上げるSectorを指定します。 (LineDefTag) |
指定した床が指定した高さの分、上がります。 床が上昇し始めるときに、指定したSectorの床の情報(床の画像、ダメージを受ける床の設定など。明るさの情報などは適応されません。)がこのSpecialを使用しているLineのSide 1側のSectorの床(Trigger Change Model)の情報に書き換えられます。 tagが0の場合、起動したLineのSide 2側のSectorの床が上がります。 |
speed | 床が上がる速さを指定します。 | |||
height | 床が下がる高さ(距離)を指定します。 (unit) |
|||
240 | Floor_RaiseByTexture (tag, speed) | tag | 床を上げるSectorを指定します。 (LineDefTag) |
指定したSectorを構成しているLineのLowerTextureの中で、最も高さ(縦の長さ)の低いTextureの高さの分だけ床が上昇します。 tagが0の場合、起動したLineのSide 2側のSectorの床が上がります。 |
speed | 床が上がる速さを指定します。 | |||
241 | Floor_LowerToLowestTxTy (tag, speed) | tag | 床を下げるSectorを指定します。 (LineDefTag) |
指定したSectorを囲んでいるSectorの中で、最も低い床の高さまで床が下がります。 床が下降し終わったときに、指定したSectorの床の情報(床の画像、ダメージを受ける床の設定など。明るさの情報などは適応されません。)がこのSpecialを使用しているLineのSide 1側のSectorの床(Trigger Change Model)の情報に書き換えられます。 もし、隣接しているSectorの床の高さについて、指定したSectorの床より低い床が無ければ、何も起きず、床の情報も書き換えられません。 tagが0の場合、起動したLineのSide 2側のSectorの床が下がります。 |
speed | 床が下がる速さを指定します。 | |||
242 | Floor_LowerToHighest (tag, speed, adjust) | tag | 床を下げるSectorを指定します。 (LineDefTag) |
指定したSectorを囲んでいるSectorの中で、 (最も高い床の高さ) + adjust - 128 の高さまで床が下がります。 もし、最終的な目標地点の高さが、下降前の高さより高ければ、一瞬の速さで床が移動します。 tagが0の場合、起動したLineのSide 2側のSectorの床が下がります。 |
speed | 床が下がる速さを指定します。 | |||
adjust | 目標となるSectorの床の高さとの差を指定します。 (unit) |
|||
250 | Floor_Donut (ptag, pspeed, sspeed) | ptag | 「回」の中心のSector(下降するSector)を指定します。 | 「回」の字のような配置でSectorがあるとします。真ん中は外側より高いです。 Floor_Donutを起動すると、真ん中は下がり、外側は上がり、二つのSectorが同じ高さになったとき、止まります。 |
pspeed | 真ん中のSectorの下がる速さを指定します。 | |||
sspeed | 外側のSectorの上がる速さを指定します。 |
Built-in ACS functions※(このページでは関数と呼びます。)
主にThingやLineやSectorなどの動作と直接的にあまり関係ない計算用の関数です。
また、LineTypeはありません。
Waiting
Scriptを停止させる関数です。
関数 | 引数の意味 | 戻り値の種類 | 内容 | |
ACS_ExecuteWait (int script, int unused, int arg1, int arg2, int arg3) | script | 実行するScriptを指定します。 (int) |
無し (void) |
指定したScriptを実行し、そのScriptが終わるまで、この関数を含むScriptは停止します。 ACS_ExecuteWaitは ACS_Execute (script, 0, arg1, arg2, arg3); ScriptWait (script); と同じです。 |
unused | 使用しません。0を入力して下さい。 (int) |
|||
arg1 | 第1引数 (int) |
|||
arg2 | 第2引数 (int) |
|||
arg3 | 第3引数 (int) |
|||
Delay (int tics) | tics | 停止している時間をTicで指定します。 (int) |
無し (void) |
Delayを実行したScriptは入力したTicの間、停止します。 ※35 Tic = 1 秒 |
PolyWait (int polyid) | polyid | 待つPolyObjectsを指定します。 (int) |
無し (void) |
指定したPolyObjectsが動作を完了するまでPolyWaitを実行したScriptを停止させます。 |
ScriptWait (int script) | script | 待つScriptを指定します。 (int) |
無し (void) |
指定したScriptが動作を完了するまでScriptWaitを実行したScriptを停止させます。 |
TagWait (int tag) | tag | 待つSector(LineDefTag)を指定します。 (int) |
無し (void) |
指定したSectorが動作を完了するまで(ドアが開ききるなど)TagWaitを実行したScriptを停止させます。 |
Math
数学関数です。
更新中・・・
Home Back(Script解説へ Lumpファイルの解説へ)