fkiss命令の勝手きままなマニュアル。HTML版(Ver. 0.04) by T_Ten 1997/11/02

もくじ

  1. はじめに(動作環境)

  2. fkiss文法10原則(?)エラーで困ったら、ここを見てみて ください。

  3. fkiss命令の分類と例

  4. 目的別命令説明

【1】はじめに(動作環境)

 このマニュアルは、KISSデータの拡張機能である fkissについての命令を 私T_Tenが、皆様のご協力を仰ぎつつ、かって気ままに述べた物です。 普通のKISSデータの製作は既に出来るもの として考えていますのでご注意下さい。

なお、fkiss拡張命令を楽しむためには、 fkissローダーが必要です。
私が現時点で動作確認できるfkissローダーは、以下の通りです。
ローダー名作者動作環境
fkiss ver 0.25yav氏 fkiss の元祖。UNIX系OSで動作します。
WKISS.EXE ver 2.36a w0.68F.K氏 Microsoft Windows3.1 で動作します。
WKISS32.EXE ver 0.04F.K氏 Microsoft Windows95で動作します。
KISS21.EXE ver 1.50Hx2氏 PC-9821シリーズ DOSで動作します。
KISSLD.EXE ver 0.07sえむけい氏 Microsoft Windows95 及び Windows3.1+Win32s v1.3で動作します。

fkiss実験命令対応ローダーは他にもありますので、 ここに書かれていないマシンをお持ちの方でも探してみてください。
もちろんMacintosh用fkissローダーもどこかに存在します。(^^;

これからの説明は、以上のローダーでの動作を目標に fkiss ver 0.25 を基準として説明します。
しかし、全てのローダー毎の細かい違いや、バージョンによる違いを包含する ものではないので、十分ご注意下さい。


【2】fkiss文法10原則(?)
  1. ;@EventHandler以降の fkiss領域で使用しているセルファイル名は
    CNF ファイル中のセル記述行で使用しているセルファイル名と
    同じものを使って指定しましょう。 (大文字小文字も厳密に) [*1]

  2. fkiss 命令は、セルをすべて指定した後から、ファイルの終わりまでの間 に記述されます。一般のKISSデータに簡単に付加出来ます。

  3. ;@EventHandler

    fkiss命令におけるお約束。 fkissローダーは、これを目印にしています。
    これを最初に書かないと fkiss命令は実行されません。
    ;@eventhandlerでは不可です。

    「;@EventHandler」以降の「;@」を行頭にもつ行が fkiss命令の記述行です。
    セル記述行での「;@」はただのコメント「@」です。

  4. fkissの一行の始まりは「;@」です。
    行頭が「;;@」や「@」ではfkiss命令として認識してもらえません。 [*2]

  5. 「エディタ」的一行の数え方と「ワープロ」的一行の数え方は違います。
    エラーメッセージは「エディタ」的数え方で行数を 表示します。

    たとえば、ワープロ的数え方では2行
    エディタ(80桁表示の場合)的数え方では1行になる場合があります。 [*3]
    そのために、Windows環境では、一行の表示桁数を変えられるエディタも 存在するので、どちらの数え方なのか、わからなくなります。

    「ワープロ」的一行の数え方に設定できるテキストエディタを ご使用の方はエラーメッセージの表す行数と違う事があるので、 エラー探しの際はご注意下さい。

  6. 一行は半角253(リターンコードの[CR]+[LF]を 入れて255)文字までです

    特にコメント機能を使用する時にはこれを超えやすいので注意すること。 これを超えると、ローダーはそれ以降の文字を読み取る事ができずに 作成者の意図した動作をしなかったり、エラーとなることがあります。

  7. 同じ行にある個々の命令は、かならず 1つ以上の「半角スペース」または「タブ」で区切るようにしましょう。

    なお、「全角スペース」は、コメント領域以外では 使用しないようにして下さい。
    私は、わからないときは「全角スペース」を「半角スペース2個」で 全て置換しています。

  8. fkiss命令の一般的な記述の順序についてです。

    fkiss命令は、 ;@[Event]命令 [Action]命令1 [Action]命令2 ..... ;注釈[RET]

    の順番で構成されます。 *[RET]はリターンのこと。

  9. [Event]は64個まで。 一つの[Event][*4] に[Action][*5]64個まで。
    64個以内なら、[Action]命令は何行に分けて記述してもかまいません。 [*6]

    なお、64個までが 元祖 fkissの保証範囲ですが、 ローダーによっては64を超えても動作する物があります。

  10. fkiss命令は[;@EventHandler]以降、[Event]の記述順を問いません。

    極端な話、end()をbegin()の前に書いてもいいはずです。 しかし、わかりやすさで言えば、極端な順番表記はせずに、 initialize,begin,end の順番で命令を並べたほうがいいと思います。


[*1]
KISS/GSでは、大文字、小文字を区別しない事になっています。 そう言った理由で、ほとんどのローダーが大文字小文字を区別していません。 なので、大文字小文字を厳密に書かなくても動作する事が多いです。
fkissが実験仕様である事にご注意下さい。
[*2]
「;」は、もともとKISSにおいて、行頭に記述する機能文字であって 注釈文を記述するためのものです。
なので、「;」以降、リターンコードまでの文は、KISSにとっては無視 されるものです。
しかし、 fkiss命令拡張を行う際に、KISSにとっては意味を持たない「;」 を利用して、それに「@」 を付加する事で、 fkiss命令である事を認識させて いる、と考えられます。
[*3]
なので、Windowsで書いた文章を DOSで読むと見た目が異なることが あります。逆もまたそうです。
一般には必要時以外、半角73桁全角36文字までに改行すると見やすいと 言われていますが、KISSではよくこれを超えて記述します。
[*4]
このようにいきなり行頭に記述できる命令群を[Event]と呼びます。
[*5]
[Event]に続いて記述される命令群を[Action]と呼びます。 これら命令の詳細については【3】以降を参照して下さい。
[*6]
必要な時以外は、ずらっと 1行255文字で書くよりは、 何行使っても構わないので、半角73文字程度で改行したり、 見やすいようにきれいに並べた方が、後でわかりやすいしょう。



【3】fkiss命令の分類と例

『3−1』Event と Action って何?
fkissの命令は

  1. [Event] (入力系命令)
  2. [Action] (効果系命令)
2つに分類されます。

そして、
ある[Event]が起こったときに、それがきっかけで指定された[Action]が起こる。 と考えて下さい。


(A)の [Event] 入力系命令には、

この、「人間が何かした」事を「イベントが発生した」と言います。
 fkissにおいて「イベントが発生」とは、マウスで何かをつかんだり、 離したり、セルを移動したりなどの人間がコンピュータに働きかける 事の他に、プログラム自身が、コンピュータに働きかける動作も 含まれます。

コンピュータの立場から見れば、「仕事が来た」と言う事ですね。

つまり、[Event]命令はコンピュータに[Action]命令を行わせるための きっかけを発生するものです。


(B)の [Action] 効果系命令には、

が、あります。
これは入力系命令の信号を受けて、音を鳴らしたり、セルを消したり等の 様々な効果[Action]をもたらす命令です。

先に述べたように、[Action]命令は、[Event]命令に続いて いくつも記述出来ます。


記述する順番は、[Event]命令が行頭に記述され、続いて[Action]命令が記述 されます。




『3−2』fkiss命令の大まかな流れと 記述順一例
...                              普通のKISSデータを記述してある、と
(640,400)                        思って下さい。
#0    LOGO.CEL   *0: 0 1 2....   
#0    RIBON.CEL  *0: 0 1 2....   
....                             
....                             
#127  SAIGO.CEL *0: 0 1 2....   <CEL記述の最後の行と思って下さい。
;                                
;                               <何行あけても構いません。
;                                
;@EventHandler                  <ここから fkissデータの記述をします。
;
;こめんと。                     <普通のコメントも使用できます。
;
;@initialize()                  <
;@   unmap(#1)  unmap(#2)       データを読み込んでから、画面に表示する
;@   unmap(#13) unmap(#14)      までの間に実行する[Event]命令。
;@...                           ;@initialize()から、;@begin()までの間に
;@   ...                        画面の初期化の[Action]を記述できるが、
;@      ...                     現在はunmapしか使用できない事に
                                なっています。[*7]

;@begin()                       ここからはじまる。本当は画面を表示する時
;@    timer(0,1)                の最初の一度だけ実行される[Event]命令。
;@    timer(10,1)               主に、[timer]等の初期化を行います。
;@
;@alarm(0)
;@    map("EYE2.CEL")           普通は、
;@    unmap("EYE.CEL")          ;@initialize();@begin()から;@endまで、
;@                              順番通りに様々な命令を記述します。
;@                              しかし、ローダーに依存するような記述を
;@...                           しない限り、[Event]はどの様な順番で
;@   ...                        並べてもいいはずです。
;@      ...
;@
;@press("BUTTON.CEL");押す。    <このようにコメントを記述することも
;@    move(#8,0,20)             できます。
;@
;@
;@end()                         終わる時の[Event]命令。
;@    sound("SAYONARA.WAV")     というより、終了ボタンを押したときに
;                               この[Event]に続く[Action]を実行します。
;
*0 123,223 21,23 54,126 .....   <位置データが書いてあるはずです。
....

[*7]
;@initialize()で使用出来る[Action]には、本当は、nop, debug, shell, unmap.が許可されています。
しかし、実装されていても unmap 以外ローダー依存しそうなので 説明しません。どうしても知りたい方は原典を読んで下さい。

また、ローダーによってはinitializeでこれ以外の命令が実行できて しまいます。
たとえば、timerはbegin以下で記述することが望ましいのですが、 その理由はtimerをinitializeで実行すると、皆様のお持ちのマシンの速度 により、initializeからbeginまでの処理実行時間が異なっているので せっかく作成したデータが、他のマシンでは思った通りの動作をしないこと もあります。
なので、将来のためにも、できるだけ仕様にあわせて使用しましょう。




【4】目的別命令説明

『4−1』初期化および終了
初期化/終了 命令群は、
画面に表示する前(データで遊ぶ前)や、
遊び終わった時に実行する [Event]命令と
それに書くことの出来る[Action]命令です。

;@EventHandler                fkiss命令実行におけるお約束。
                              これを書かないと、fkissは動かない。
                              ;@eventhandler  は不可。
                              大文字、小文字も正確に書くこと。
                              イベント拡張の識別子である。

                              また「;@ EventHandler」と空白をあけて記述すると
                              現在は、WKISS v0.68c/WKISS32/KISSLD v0.07q以降
                              でしか動作しない。

;@initialize()                実行前(画面表示前)の
[Event]                       初期化(initialize)を行う。

                              初期化の時に正式に使える[Action]は
                              nop, debug, shell, unmap.
                              の4つだけで、実用になるのは
                              unmapだけであろう。
                              それ以外の[Action]は動作の保証が出来ない。

                              timer も使えるが、画面の初期化時間は
                              マシンに依存するので、一般性のあるデータを
                              作成する為にも、timer は
                              ;@begin() 以下で使用した方が望ましい。
;@begin()                     ここからはじまる。というより、
[Event]                       初期化し終えた時に一度だけ実行する
                              [Event]命令である。

                              これに続いて良く使用される[Action]は
                              timerである。
                              想像次第で何でも記述可能。
;@end()                       終わる。というより、終了を選択したときに
[Event]                       実行される[Event]命令である。

                              終了時に効果を狙う事が可能で、
                              さよならメッセージを示すのに便利である。



『4−2』begin()からend()まで

ここでは、
;@begin()  から

;@.....
;@.....
;@.....
;@end()  で、

はさまれる ;@..... で表された行の命令群について説明します。 [*8]


fkissの命令を使用する時は、

1) 人間が何もしていないときに[Action]する事 (4-2-1)参照
2) 人間が何かしたときに [Action]する事 (4-2-2)参照

の2つに分けられると思います。
以下、その2つに分けて説明します。


[*8]

[Event]の記述順ですが、;@EventHandler 以降の[Event]の 順番の制限はないはずです。 なので以下の例のように、

....
;@end()
;@    sound("BYE.WAV")
;@begin()
;@    timer(0,500) timer(12,1000)
;@initialize()
;@     unmap("HOEHOE.CEL") unmap("HYOEHYOE.CEL")
....
の順に[Event]を記述しても動作しますし、文法的に間違いでありません。

initialize()等が人間にとっては一見特別な[Event]命令ではあるとはいえ
コンピュータにとってはpress()などと同列の普通の[Event]命令です。
なので、initialize,begin,end,は記述しなくても動作するはずです。

このマニュアルを作成し始めた時は、多くの既存データーの記述順より
先入観が有りましたので、時間軸にそった説明をしています。 m(__)m
動作順に書いた方が、あとでわかりやすいですしね。(^^)



●(4-2-1) 自動実行したいとき (alarm,timer,randomtimer)

 何もしていないときに画面を動かしたりしたい時には、

;@begin()
;@ timer(n,t)

            として、最初から動作 させること。
;@press("xxx.CEL")
;@ timer(n,t)

            等、あるマウス入力をきっかけに 動作させること。

 など、ができます。

 どちらにしろ、上記のように (n)番目のtimerをセット及び起動してから、

;@alarm(n)[Action] [Action] ....... timer(n+1,t1)[RET]
;@alarm(n+1)[Action] [Action] ....... timer(n+2,t2)[RET]
;@alarm(n+2)[Action] [Action] ....... timer(n+3,t3)[RET]
;@alarm(n+3)[Action] [Action] .......

のように連続して記述すると良いです。

例えば、
[Action]に
map,unmap を使用してまばたき(通称目ぱち)をさせる時や、
パラパラアニメのような表示をしたい時、
moveを使用してセルの移動を行うときに使用できます。

timerの番号を繰り返すように指定すると、延々と[Action]を繰り返します。

以下のように命令の最後にrandomtimerを使用すると、目ぱちにぴったりです。
;@alarm(n) [Action] [Action] ... randomtimer(n+1,t,a)[RET]

ただし、timerの使いすぎにはご注意ください。
使用可能なtimer数は、ローダーにより異なります。 [*9]



;@alarm(n)                    その性質からラベルみたいな物と思う。
[Event]                       自動入力系命令の、timer(n,t)と、
   (n=0,1,2,3...              randomtimer(n,t,a)  によって
   上限はローダーによる)      この行へジャンプしてくる。
                              なので、[Event]begin()などに記述された
                              [Action]timer(n,t)によって呼び出されないと
                              alarmだけでは何も実行できない。


{;@}timer(n,t)                時間 t 後に alarm(n)を呼び出す。[*10]
[Action]
                              (BASICで言えば、
                                「IF timer=t THEN GOTO alarm(n)」
                                の様な物だとT_Tenは思っています。)

                              timerの中の n には正の正数。[*9]

                              t は、時間であり、1 は0.001秒に相当する。
                              t=1000なら、 1秒である。

                              [Event]begin()の後によく初期化と称して
                              記述されるほか、[Event]alarmの最後に
                              よく使われる。


{;@}randomtimer(n,t,a)        使用法はtimerとほぼ同じ。
[Action]                      t 〜  [t + (a - 1)]  時間の間の[*11]
                              ランダムな時間で、
                              alarm(n)で指定される行を実行する。
                              少なくとも必ず t時間は経過する。

                               aを 0または 1とすると、timer(n,t)と同じ。
                               aが小さいと t時間以降の時間間隔は短くなり
                               aが大きいと t時間以降の時間間隔は長くなる
                               傾向がある。

                              ただし、
                               tは 0以上 32767以下、
                               aは 0以上 32767 - t  以下の値である。

[*9]timerの数

alarm(n),timer(n,t)で記述されている「n」 の最大数を
使用できるtimerの数と言います。
  • fkissでは 0〜63 の64個
  • WKISS,WKISS32では0〜127
  • KISSGAは255個
  • KISSLDではメモリ次第。
ローダー毎に違う事に注意してください。
しかし、各種ローダーとも多少の超過してもなぜか動作するようです。

[*10]timerの時間のずれ

コンピュータの実行速度によって指定した時間間隔より実行が
遅れる事があるので注意してください。
timer のより正確なタイミングは【MORE.HTM[2]2】 を参照してください。

[*11]randomtimer の計算式と例

randomrtimer(n,t,a)の時間間隔の計算式は、乱数を用いて
t 〜 [ t + ( 乱数 % a ) ]で、計算されます。
乱数は、コンピュータ内部で選ばれる、0〜32767までの数値
「%」は「乱数をaで割った余り」という意味です。

randomtimer の第3引数[a] が大きければ、第2引数[t]時間経過後の
さらなる経過時間のばらつきが大きくなります。

t 時間以降のタイマ起動のばらつきは、
a=300なら、 「0,1,2,...,298,299」ミリ秒の、いずれか。
a=3000なら、「0,1,2,...,2998,2999」の、いずれかになります。

極端に言うと randomtimer(n,t,a) が起動するのは、
t=300 ,a=30000なら、0.3秒〜30.299秒の範囲に、
t=30000,a= 2000なら、 30秒〜31.999秒の範囲になります。

tは 0〜32767、aは 0〜 (32767 - t) の範囲の値なので、
合計で、32.767秒を超える時間間隔の指定は出来ないようです。



●(4-2-2) マウスを押したときの動作
;@press("HOEHOE.CEL") に代表される[Event]です。

マウスを使用してセルや画面をクリックしたとき等に
何か動作を引き起こしたい時に使用します。
セル上でマウスをクリックするだけなのですが、
セルの固定値などの属性により様々な区別があり、動作が異なります。

よく使用されそうな例としては、クリックのたびに表示/非表示を
繰り返す動作です。

;-----------------ブラインドの表示/非表示-------------------
;@press("SWITCH.CEL")
;@    altmap("BLIND.CEL")  ;表示/非表示
;@    sound("SHU.WAV")     ;効果音(無くてもぜんぜん構わない)
;------------------------------------------------------------
「マウスを押したときの動作」をする[Event]命令を記述の後は
改行して揃えた方が見やすいです。個人的な意見ですが....(^^;



1:指を押すか離すか。(マウスの状態に依存する。) [*12] ;@press("CELNAME.CEL") マウスポインタを"CELNAME.CEL"で指定した [Event] セルに持って行き、そのときあなたの指が、 マウスを左クリックしたときに これに続く命令を実行。 つまり、セル上でマウスを左クリックした とき。 ;@release("CELNAME.CEL") 既にあなたは"CELNAME.CEL"で指定したセルを [Event] 左クリックしていて、その状態から指を離した ときにこれに続く命令を実行。 セルの移動後の位置や重ね合わせ unmap/altmapとは無関係。 [*13]
2:セルをつかむか離すか。(マウスの状態に依存しない。) ;@catch(#n) マウスポインタで、 [Event] 番号 #n で指定されたオブジェクトを つかんだときに、これに続く命令を実行。 pressとcatchの違いは現状では あまり無いらしい。 どちらでも良い場合は pressを推奨。[*14] ;@drop(#n) マウスポインタで、 [Event] 番号 #n で指定された既につかんでいる オブジェクトを離したときにこれに続 く命令を実行する。 セルに固定値が設定されている場合、 マウスのボタンを押していても、 セルが自動的に元の位置に戻った場合も dropとみなす。
3:固定値と比較してどうか。(マウスの状態に依存しない。) ;@fixcatch(#n) 固定値が 0でない場合、 [Event] 固定値が設定されている、番号 #nで指定 されたオブジェクトを、つっついたときに これに続く命令を実行する。 固定値が 0になると、この命令は 発生しない。 ;@fixdrop(#n) 固定値が 0でない場合、 [Event] ぺしぺししていると、セルがちょっとだけ 移動できるが、 そのときに、番号 #n で指定した既に つかんでいるオブジェクトを離したときに これに続く命令を実行する。 [*15] 固定値が 0になると、この命令は 発生しない。 ;@unfix(#n) 番号 #n で指定されたオブジェクトの [Event] 固定値が0になったとき、これに続く命令 を実行。 [*16]
4:セットや色を変えたときに。 ;@set(n) セット番号を、 n番に変えたときに [Event] これに続く命令を実行。 ( nは 0〜 9の整数 ) ;@col(n) カラーを、n番に変えたときに [Event] これに続く命令を実行。 ( nは 0〜 9の整数 )

[*12]
pressとcatchの違いですが、実際上はほとんどありません。
しかし、動作上の違いはあります。
本家fkiss では以下に述べる因果関係から、fkissではpressの方がcatchより
先に発生するはずです。(その時間差は人間には速すぎてわかりませんが。)

press/release は
「マウスの状態に依存」しますが、
本来ならマウスの入力と直結している(様な動作をする)はずです。

cahtch/drop系 は
「マウスポインタの状態に依存」し
「マウスの状態に依存しません。」

マウスの入力をうけて、その結果マウスポインタは セルをつかんだり(移動可能にすること)離したりしますが
固定値などの条件により、マウスボタンを押していても、マウスポインタは セルを離している(移動不能であること)ことがあります。

これが本家fkiss で設定されているpressとcatch等の違いだと思います。

[*13]release の動作の互換性 【MORE.HTM[2]9】参照
fkiss,KISSLDでは固定値の設定されているセルが、自動的に戻ることでは
releaseは発生しません。とにかくマウスボタンを離した時に発生します。
release/pressは常に対になって発生します。

現時点では、WKISS,WKISS32,KISSGAでは固定値の設定されているセルが、
元の位置に戻った時点でも releaseを発生します。
例えば、固定値の設定されているセルを pressしてその状態で
マウスを移動させただけでreleaseが発生してしまいます。
本来この動作はdropのはずです。

注:1997/10/31
未公開版WKISS32 v0.04c 以降で修正済です。

[*14]
pressとcatchの違いは、先ほどの[*12]と、少しだぶりますが

元祖fkissでは、固定値が設定されているオブジェクトのうち
最大の固定値をもつものを(複数可)「最大固定オブジェクト」と言い、
決して移動できない事になっています。
最大固定オブジェクトのみcatchできません。
最大固定オブジェクトは 固定値が減算されないので、 愛と情熱は実らないのです。

WKISS,WKISS32,KISSGA,KISSLDには、「最大固定オブジェクト」 という概念は無く、
必ず愛と情熱は報われる事になっています。(笑)

[*15]fixdropについて
マウスのボタンを押していても、セルが自動的に元の位置に戻った場合も fixdropとみなします。

なお、オブジェクトに固定値が残っているときは、 fixcatch/fixdropはcatch/dropと一緒に発生します。

[*16]unfixについて
愛と情熱の作業が実を結んだ場合とも言う。
そう記述されているんだってば。(笑)



『4−3』Action一覧 (timer,randomtimerを除く)
・[Action]命令は、単独では行頭に記述する事ができません。
もし記述したとしても、前の[Event]に続く[Action]と認識されるでしょう。
必ず[Event]命令の後、または、それに続く行に記述されます。



{;@}nop()                      「何もしない」という動作。
[*17]
[Action]


{;@}unmap("CELNAME.CEL")       "CELNAME.CEL"で指定されたセルを、
[Action]                       画面から、消去する
                               命令「map("CELNAME.CEL")」や
                               命令「altmap("CELNAME.CEL")」等で
                               再び画面に表示される。


{;@}map("CELNAME.CEL")         "CELNAME.CEL"で指定されたセルを、
[Action]                       画面に(再)表示する。


{;@}altmap("CELNAME.CEL")      "CELNAME.CEL"で指定されたセルが、
[Action]                       表示されていれば、画面から消去し
                               画面から消去されていれば、(再)表示する。


{;@}move(#n,x,y)               #nのオブジェクトを
[Action]                       右へ xドット、下へ yドット移動させる。

                               普通のグラフ座標とは違い、画面座標である
                               ことに注意。


{;@}sound("WAVEFILE.WAV")      "WAVEFILE.WAV"で指定されたファイルを
[Action]                       効果音として、鳴らす。
                               Windows,DOSで再生可能な音は主に
                               拡張子が"*.WAV"のファイルだが
                               fkissローダーによって鳴らす事のできる
                               音声ファイルの形式は異なっている。


{;@}changeset(n)               セットを n番に変える。
[Action]                     ( nは 0〜 9の整数です。)


{;@}changecol(n)               色を n番に変える。
[Action]                     ( nは 0〜 9の整数。)


{;@}quit()                     遊んでいるデーターを終了させる。
[Action]

[*17]
{;@}と記入しても、 fkiss命令として受け取ってもらえません。 なので、コンフィグファイルに {} は記入しないで下さい。

[Event]命令も、[Action]命令も、「;@」直後に書く必要性は全くあり ません。行頭に「;@」があれば、半角スペースで見やすいように位置調整 をしても、記入場所はどこでもいいはずです。

でも、大抵の場合、[Event]命令は、「;@」の直後に 書くんじゃないかなと.......皆様のご自由にどうぞ。(^^;;



『4−4』セルファイル名とオブジェクト番号
----いきなり例----------------------------------------------------------
#9  RIBON.CEL    *0 : 0 1 2 ;りぼん
#7  SH_COL.CEL   *0 : 0 1 2 ;シャツのえり
#8  TIE.CEL      *0 : 0 1 2 ;ねくたい
#7  SH_ARM.CEL   *0 : 0 1 2 ;シャツのうで
#7  SH_BODY.CEL  *0 : 0 1 2 ;シャツのからだ
#6  GPAN.CEL     *0 : 0 1 2 ;じーぱん
------------------------------------------------------------------------
上の例では、RIBON.CEL SH_ARM.CEL .... GPAN.CEL 等が セルファイル名。
また、#6 #7 #8 #9で表される番号を オブジェクト番号といいます。

これが一体 fkissと何の関係があるかというと、 [Event]命令でも、[Action]命令でも言えることですが

;@press("HOEHOE.CEL") で
かっこの中("HOEHOE.CEL")の "HOEHOE.CEL"を 「引数」といいますが、 この引数には #n で指定される、
・オブジェクト番号を使用することも
・セルファイル名を直接記入することも可能です。

ただしセルファイル名を直接記入するときは 示している通りに "" (ダブルクォーテーション)で囲んでください。
逆に、引数をオブジェクト番号で指定する時は "" で囲んではいけません。

【3】章の「命令の説明、一覧部分」では、 セルファイル名とオブジェクト番号を区別して書いてありますが、 これが 元祖fkissで説明されている引数の指定方法です。
それ以外の指定については、動作の保証が出来ません。

fkissには、オブジェクトのmap/unmap/altmapは間違いと書いてあります。
オブジェクトは非常にたくさんのセルから構成されていることもあるので、 その場合には非常に重い動作になってしまう場合もあるからです。

しかし、多くのローダーは、既に出回ってしまったデータの互換性の為に オブジェクトのmap/unmap/altmapを一応出来るようにしてはいます。

以下は、KISSLDの作者えむけい氏が、fkissの作者 yavさんに対して質問した事項です。

>・引数のない命令の場合、カッコは省略できるか
> たとえば、
>
>|;@initialize

ダメです.
fkissは,パーサが手抜きなんで,これでも通ってしまいますが,
やっぱりカッコがついてたほうがカッコいい.............   (ひゅうぅぅぅ..)


>・引数にセルやオブジェクトを取る命令
> map/unmap/altmapについては、オブジェクトの指定は不可である、と明言さ
>れていますが、それ以外の命令に関しても、FKISSEX*.DOCで触れている組み合
>わせ、つまり
>
> press/releaseはセルとオブジェクトの両方
> catch/drop/fixcatxh/fixdrop/move/unfixはオブジェクトのみ
>
>が有効で、それ以外は保証されないと考えるべきでしょうか?

そのとおりです.
とくに,moveについては,(あとあとのことを考えると)
セルでの指定はしないほうがいいと思います.

 上記のように、fkissで指定したように引数を記述するならば、 他のすべてのfkissローターで動作すると思います。
 保証外の記述については、経験的にはローダーによって動作したりしなかったり、 解釈が異なっていたり、なぜか記述順によって動作したりしなかったりします。
そのときは、改行してみたりすると動くこともありましたが、 恐らく私の記述ミスでしょう。(?_?)

また、オブジェクト番号とセルファイル名の両方を使用した場合、 矛盾した指定をしないようにしてください。


注:より詳しくは、【MORE.HTM [2]4,5,6】参照


セルファイル名とオブジェクト番号は一応両方使用できますが、 ローダー毎に違うため、やってみなけりゃわからない。 ということを言いたかったのです。
 KISSGAシリーズの解釈は、オブジェクト指定とセルファイル名の指定が 独立している傾向にあるようで、私は個人的には好きです。:-)
しかし、保証外の記述をする場合、 あなたの fkissローダーで動作するからといって、他のローダーで同じように 動作するとは限らない事を忘れないで下さい。



[TTFKSMN4.HTM]