ステップ5

「ステップ5」の編集履歴(バックアップ)一覧はこちら

ステップ5」(2009/12/26 (土) 20:33:39) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*ステップ5 **イベントスクリプトの実装 -[[ステップ2]]で言及したスクリプト言語の作成から入る。 **データ構造 -テキストファイルにしてマップごとに用意。 -マップに入るたびに、マップデータとともに読み込む。 -イベント用ハッシュテーブルを用意し、それで管理する。 -同じマス上に異なるイベントは配置できない。よって、1つのマップで扱えるイベントは1200個が上限。(マップスクロール可能にした場合はもっと増える) -1つのマップにイベントを10個も20個もおかないと思うのでハッシュサイズは10くらいにしておく。 **書式と仕様 >event_num,x,y,xsize,ysize,moveflg,solidflg,look1,look2,event_type,name { >script; >} -個々のイベントの初期設定っぽい何か |名前|備考| |event_num|イベント番号。0及び-1(負の値)は設定できない。| |x,y|イベントの座標。(正確にはイベントの左上座標)| |xsize,ysize|イベントの大きさ。x,yを左上端として、横にxマス、縦にyマスの大きさになる。| |moveflg|x,yを中心としたユニットの移動範囲の半径。&br()0 : 移動しない。&br()1 : 3 * 3マス内を移動。&br()2 : 5 * 5マス内を移動。| |solidflg|ユニットが固形として存在するか。&br()0 : ユニットとプレイヤーキャラが重なることができる。&br()1 : ユニットとプレイヤーが重ならない。ユニットのいるマスは壁として扱う。| |look1|見た目の設定1。画像ファイルの名前を、""で囲んで入力する。空白の場合、見た目はない。(透明ユニット)| |look2|見た目の設定2。画像ファイル内の何番目の画像を使うか。(ツクールのキャラチップ対応)| |event_type|イベントタイプ。&br()0 : ノーイベント。&br()1 : オートイベント1 ユニットの上に乗るとイベント発生。&br()2 : オートイベント2 ユニットに隣接するマスに立つとイベント発生。&br()3 : 調べるイベント1 ユニットの上に乗って決定キーでイベント発生。&br()4 : 調べるイベント2 ユニットに隣接するマスでユニットのほうを向いて決定キーでイベント発生。| |name|イベントを識別する名前。ハッシュのキー| -script一覧 |script|動作| |if(条件式){}|条件式が満たされたとき(0以外の時){}内を実行します。| |moveto "mapname",x,y;|マップmapnameの座標x,yに移動します。| |walkto x,y;|同一マップ内の座標x,yに歩いて移動します。| |mes "string";|しゃべります。| |(変数) = (式);|(変数)に(式)の内容を代入します。| -変数の使用方法 --int var,scope,first; 符号付き整数型変数varを定義します。firstの値で初期化されます。 イベント内で使う変数は、必ずイベントスクリプトの先頭でこの定義を行ってください。 scopeの値によって、その変数が保持される期間が決定されます。 scope 0 : キャラ永続変数 1 : イベント一時変数 2 : イベント永続変数   str var,scope,"first"; 文字列型変数varを定義します。"first"の値で初期化されます。 基本的なことはintと変わりませんが、初期化値が文字列であることに注意してください。 C言語のchar配列と異なり、=による代入や==による比較が可能ですが、1文字ずつ扱うのは面倒です。   イベント永続変数 イベント変数はそのイベント内で保持され、一度イベントを終えても保存され続けます。 セーブデータの肥大化につながるので乱用は避けてください。   イベント一時変数 イベント一時変数evt_aにbを代入します。 イベント一時変数はイベント実行中のみ保持され、一度イベントを終えると有効範囲から外れ、解放されます。 セーブデータの量には全く影響を及ぼさないので、上記のイベント変数よりも気軽に使用できます。   キャラ永続変数 キャラ変数ch_aにbを代入します。 キャラ変数はキャラクターデータとともに保存され、半永久的に使用できます。 セーブデータの肥大化につながるので、乱用は避けてください。
*ステップ5 **イベントスクリプトの実装 -[[ステップ2]]で言及したスクリプト言語の作成から入る。 **データ構造 -テキストファイルにしてマップごとに用意。 -マップに入るたびに、マップデータとともに読み込む。 -イベント用ハッシュテーブルを用意し、それで管理する。 -同じマス上に異なるイベントは配置できない。よって、1つのマップで扱えるイベントは1200個が上限。(マップスクロール可能にした場合はもっと増える) -1つのマップにイベントを10個も20個もおかないと思うのでハッシュサイズは10くらいにしておく。 **実行 -オートイベントは一歩歩くごとに判定。調べるイベントは決定キーを押すごとに判定。実行条件を満たした場合にプレイヤーをイベントにアタッチする。 -マップデータ上に置かれたイベントハッシュテーブルからイベントを読み出し、イベントデータの構造体ポインタをプレイヤーデータ側に保持する。(プレイヤーをイベントにアタッチする) -プレイヤーがイベントにアタッチされている時、イベント進行にかかわらないキー操作は許されない。 -イベント終了時、デタッチする。(プレイヤーデータ側に保持されたポインタをNULLで書き換える) -マップ移動実行時のみ、実行中のイベントデータの構造体を丸ごとコピーして一時的に静的領域に保持する。(マップ移動時にマップデータごと再読み込みが行われ、イベントハッシュテーブルも解放するため) **書式と仕様 >event_num,x,y,xsize,ysize,moveflg,solidflg,look1,look2,event_type,name { >script; >} -個々のイベントの初期設定っぽい何か |名前|備考| |event_num|イベント番号。0及び-1(負の値)は設定できない。(不要?)| |x,y|イベントの座標。(正確にはイベントの左上座標)| |xsize,ysize|イベントの大きさ。x,yを左上端として、横にxマス、縦にyマスの大きさになる。| |moveflg|x,yを中心としたユニットの移動範囲の半径。&br()0 : 移動しない。&br()1 : 3 * 3マス内を移動。&br()2 : 5 * 5マス内を移動。| |solidflg|ユニットが固形として存在するか。&br()0 : ユニットとプレイヤーキャラが重なることができる。&br()1 : ユニットとプレイヤーが重ならない。ユニットのいるマスは壁として扱う。| |look1|見た目の設定1。画像ファイルの名前を、""で囲んで入力する。空白の場合、見た目はない。(透明ユニット)| |look2|見た目の設定2。画像ファイル内の何番目の画像を使うか。(ツクールのキャラチップ対応)| |event_type|イベントタイプ。&br()0 : ノーイベント。&br()1 : オートイベント1 ユニットの上に乗るとイベント発生。&br()2 : オートイベント2 ユニットに隣接するマスに立つとイベント発生。&br()3 : 調べるイベント1 ユニットの上に乗って決定キーでイベント発生。&br()4 : 調べるイベント2 ユニットに隣接するマスでユニットのほうを向いて決定キーでイベント発生。| |name|イベントを識別する名前。ハッシュのキー| -script一覧 |script|動作| |if(条件式){}|条件式が満たされたとき(0以外の時){}内を実行します。| |moveto "mapname",x,y;|マップmapnameの座標x,yに移動します。| |walkto x,y;|同一マップ内の座標x,yに歩いて移動します。| |mes "string";|しゃべります。| |(変数) = (式);|(変数)に(式)の内容を代入します。| -変数の使用方法 --int var,scope,first; 符号付き整数型変数varを定義します。firstの値で初期化されます。 イベント内で使う変数は、必ずイベントスクリプトの先頭でこの定義を行ってください。 scopeの値によって、その変数が保持される期間が決定されます。 scope 0 : キャラ永続変数 1 : イベント一時変数 2 : イベント永続変数   str var,scope,"first"; 文字列型変数varを定義します。"first"の値で初期化されます。 基本的なことはintと変わりませんが、初期化値が文字列であることに注意してください。 C言語のchar配列と異なり、=による代入や==による比較が可能ですが、1文字ずつ扱うのは面倒です。   イベント永続変数 イベント変数はそのイベント内で保持され、一度イベントを終えても保存され続けます。 セーブデータの肥大化につながるので乱用は避けてください。   イベント一時変数 イベント一時変数evt_aにbを代入します。 イベント一時変数はイベント実行中のみ保持され、一度イベントを終えると有効範囲から外れ、解放されます。 セーブデータの量には全く影響を及ぼさないので、上記のイベント変数よりも気軽に使用できます。   キャラ永続変数 キャラ変数ch_aにbを代入します。 キャラ変数はキャラクターデータとともに保存され、半永久的に使用できます。 セーブデータの肥大化につながるので、乱用は避けてください。

表示オプション

横に並べて表示:
変化行の前後のみ表示: