HANE Engine リファレンス

製作したゲームをプレイするには?


タイトル画面で、はじめから遊ぶ場合はSTARTを。 続きから遊ぶ場合はLOADを選んでください。


そして、使用するセーブデータを選択することで始まります。

一番上へ戻る
ゲーム製作の基本事項

必須ファイル

以下は、存在していることが必須のファイルです(編集はルールの範囲内で可能)。

※……但し、GraphicsフォルダとScriptフォルダは、ファイルパック時にフォルダごとファイルパッキングされるので、 配布時は不要です。

システムが行う、スクリプト実行開始までの処理順

以下のことを頭に置いて、Initialize.txtとその他のtxtファイルに書く スクリプトの内容を決めましょう。

・新しく始める場合 ・セーブデータをロードして始める場合

セーブデータに記録できること

プレイ中、セーブデータに記録される内容は以下の通りになります。
また、保存されるのは、最後にセーブポイントを通過した瞬間のデータになります。

上記以外のものに関する状態は保存できませんのでご注意ください。
つまり、スプライト、メッセージウィンドウ、選択肢ウィンドウ等の状態は保存されません。
また、後述もしますがサブルーチンの中にはセーブポイントを置かないで下さい。
サブルーチンの中からジャンプした先もサブルーチンの中と扱うのでお間違いのないようお願いします。
以上のことを考慮した上でセーブポイント設置を行ってください。

一番上へ戻る
製作したゲームを配布するには?


HANE Engineには、"FilePacker.exe"という実行ファイルが同梱されています。
(上の画像で選択されているファイル)
これを実行すると、Graphicsフォルダ丸ごとと、Scriptフォルダが丸ごとが、一つの"GameData.pac"というファイルに パッキングされます。
HANE Engineは、Graphicsフォルダやその中のファイル、Scriptフォルダやその中のファイルがない場合、 この"GameData.pac"というファイルからデータを取り出して実行するので、配布の際は、次の画像で示すものを 配布してください。


"HANE Engine.exe"、"Music"フォルダ丸ごと、"Parts"フォルダ丸ごと、"GameData.pac"の4つで配布用のワンセットになります。

現在の仕様(バージョンによって変わる可能性有)
一番上へ戻る
スクリプトリファレンス

基本文法について

スクリプトとは、ゲームの動作を指示する命令を書き連ねたものを言います。
HANE Engineは、一定の規則に沿って書かれたスクリプトを読み込むことで、ゲームとして動作します。 この規則に沿わないスクリプトを書くと、HANE Engineはエラーを起こして正常に動作しません。
しかし、各命令の機能を理解し、正しくスクリプトを書いていけば、思い描いたものをどんどん実現していけます。
ここでは、スクリプトの基本的な記述の仕方を示します。
まず覚えておくべきことは、全ての命令やオブジェクト名は、半角英数字で書くことです。

コメントについて

行頭の文字を#(半角のシャープ)にすると、その行はコメント扱いになり読み飛ばされます。
メモ書きや、スクリプトの意味を記すことで、製作をスムーズにしていきましょう。
こういった開発では、出来る人程こまめにコメントを書きます。コメントを書くことが上達のコツでもあります。

パターン1・命令単独

まず、一文、1ワードで書ける命令があります。

例:WaitOK

後でも解説しますが、スクリプトにWaitOKと書くことで、プレイヤーがOKボタンを押すまで、スクリプトの実行を止めます。
また、命令の中には、引数を必要とするものがあります。

例:Wait(30)

この命令は、()内に記述されたフレーム数だけスクリプトの実行を止めます(1秒=60フレーム)。
この場合は30フレーム、つまり0.5秒スクリプトの実行が停止されます。
この30という数値は好きなように変えてください。また、後述する変数というものも引数に使えます。
複数の引数をとる命令の場合、(30,40,50)のように、コンマ( , )で各引数を区切ります。
また、引数には""で囲んで書かれているものもありますが、これは、""で括ることでひとまとまりであることを示すために 使います。これは主に、文字列や負の数字を使う時に用いる書き方です。

パターン2・オブジェクト名と命令の組み合わせ

オブジェクトとは、命令で操作する対象、または機能の集合という意味で捉えると良いでしょう。
後述するオブジェクト番号も指定するパターンを含めれば、HANE Engine用のスクリプトはこのパターンが最も多いです。
そして、文法の形式としては……

オブジェクト名.命令

という形を取ります。オブジェクト名と命令は、ピリオド( . )で区切ります。

例:Background.Set("湖.jpg")

この例では背景を意味するBackgroundオブジェクトのSetという命令を呼び出し、背景画像を湖.jpgにしています。

パターン3・オブジェクト、オブジェクト番号、命令の組み合わせ

HANE Engineのスクリプトで最も多いパターンがこれです。

例:MessageWindow[0].Open(20,20,600,440)

メッセージウィンドウ担当のMessageWindowオブジェクトのような、複数使用できるオブジェクトの場合、オブジェクト名の後に 数字を[ ]で括って書くことで、何番のオブジェクトに命令するのかを示します。そして、ピリオド( . )の後に、それに対する命令を書きます。
例の場合は、メッセージウィンドウをスクリーン上のx,y座標20,20に幅600,高さ440で開くという意味になります。

スクリプトリファレンスのメニューへ戻る

変数について

変数とは、数字や文字列(文)等を保存しておき、取り出せるものを意味します。
HANE Engineで使える変数は3種類あります。

そして、それぞれのスクリプト中での表記は、以下のようになります。
(各idは、数字に置き換えてください)

これらの変数は、単純な計算やシナリオの分岐など、様々な使い道が存在します。

スクリプトリファレンスのメニューへ戻る

Jump/Subrutine(ジャンプ/サブルーチン)について

スクリプトの命令の中には、Jump(ジャンプ命令)とSubrutine(サブルーチン)を呼び出すCallSubという命令が存在します。
この二つは、その機能が少々似ているため、混同し間違った(推奨されない)使い方をしてしまう場合があるので、 ここで両者の機能と使い分けを説明します。

まず、Jump命令を使った場合、指定したファイル内のタグの位置へスクリプトの処理を飛ばし、 そこから続きの処理が行われます。

例……
#ジャンプ命令
Jump("ジャンプ先1")

#(中略……この部分は何を書いても飛ばされる)

#タグはこのように、*から始める。Jumpでここまで処理が飛ばされる。
*ジャンプ先1

Jumpでは、指定したタグまで処理が飛ぶのがポイントです。

一方、Subrutine(サブルーチン)は、呼び出し時に指定したタグからReturnまでの処理を、 呼び出し元の処理を一時中断して行います。
つまり、例で示しますと……

#ここでサブルーチンを呼び出す。すると、こちら側の処理は一時停止され、
#サブルーチン内の処理が行われる。
CallSub("サブルーチン1")
#Return後、ここから処理が再開される

#(中略)

#サブルーチン開始地点のタグ
*サブルーチン1

#(サブルーチンの処理)

#ここで、サブルーチン終了。呼び出し元の処理が再開される。
Return

このようになります。
JumpとCallSubの違いを端的な言葉で表すなら…… Jumpは行ったっきり
CallSubは戻ってくるのが前提

となります。
そして、使い分けとしては……
Jumpは、シナリオそのものの分岐や処理を戻すなどに利用
CallSubは、予め作った機能を使うのに利用する
と考えればよいでしょう。

また、JumpとCallSubは、別のテキストファイルの内容へ移ったり呼び出したりすることもできます。
その場合は、以下の例のように記述してください。

Jump("ジャンプ先タグ1","ScriptFile.txt")

CallSub("サブルーチン1","SubrutineFile.txt")

スクリプトリファレンスのメニューへ戻る

命令

WaitOK――OK入力待ち

プレイヤーがOKボタン(Enterキーなど)を押すまでスクリプトの処理を中断し、待つ。


Wait((数値)待ちフレーム数) ――時間待ち

指定した待ちフレーム数だけ、スクリプトの処理を中断する


Random((数値)結果格納変数のID , 乱数結果の上限値) ――乱数

指定したID番号の変数に、0≦結果の値<上限値の範囲で値が格納される。


SavePoint("(文字列)セーブポイント名") ――セーブポイント

指定したセーブポイント名のセーブポイントを設置。
この時、セーブポイント名もセーブデータに記録される。
セーブポイント名は、そのファイル名で重複してはならない。
また、ここでは文字列変数も使用してはいけない


EndScript ――スクリプト終了

スクリプトを終了する(タイトル画面に戻る)



・オブジェクトを扱う命令

Background(背景)
背景を担当するオブジェクト

Background.Set("(文字列)ファイル名","(文字列、省略可)入れ替えエフェクト名",(数値、省略可)入れ替え時間)
指定した背景に指定したエフェクトで変更する。
入れ替えエフェクト:"flash","crossfade","crossfade2"……デフォルトは"flash"

Background.Effect("(文字列)エフェクト名",(数値、省略可)エフェクト時間)
背景を揺らしたりする
エフェクト名:"shake_h","shake_v"
エフェクト時間:0以上(フレーム)

Background.ColorTone((数値)不透明度,(数値)赤,(数値)緑,(数値)青)
色調を変更する。
それぞれ、数値の範囲は0〜255

スクリプトリファレンスのメニューへ戻る


Character(キャラクター)
0≦id<6
キャラクター表示担当オブジェクト。基本的に立ち絵表示に用いる。

Character[id].SetGraph("(文字列)ファイル名","(文字列、省略可)入れ替えエフェクト名",(数値、省略可)エフェクト時間,(数値、省略可)x座標 ,(数値、省略可)y座標,"(文字列、省略可)移動エフェクト名",(数値、省略可)移動時間)
キャラクターのグラフィックを設定する。
実際に記述する際は途中で改行しないこと。
入れ替えエフェクト:"flash","crossfade","crossfade2"……デフォルトは"flash"
長いので記述例
Character[0].SetGraph("ヤク0.png","crossfade2",30,0,0)
この例の場合、Graphics/Charフォルダ内のヤク0.pngという画像を、30フレームかけたクロスフェードでx,y=0,0の位置に表示し、移動エフェクトは 無しという扱いになる。
省略可と書かれた引数は省略が可能だが、左から順に見て最初に省略した引数以降は全て省略すること。

Character[id].MovePos((数値)x座標,(数値)y座標,"(文字列、省略可)移動エフェクト名",(数値、省略可)移動時間)
キャラの位置移動。

Character[id].SetReverse((フラグ)左右反転)
キャラの左右反転設定。

Character[id].SetVisible((フラグ)可視)
キャラの可視、不可視を設定。Visibleに変更する?

以下は、[id]による指定をしない、Characterオブジェクト全体に出す命令

Character.SetFocus((数値)フォーカスするキャラの番号)
フォーカスを移す。
フォーカスするキャラの番号は0〜6.
-1だと誰にもフォーカスしない。
100だと全員にフォーカスする
フォーカスされたキャラクターは明るく、そうじゃないキャラは暗く表示される

Character.EraseAll("(文字列、省略可)入れ替えエフェクト名",(数値、省略可)エフェクト時間)
全キャラ消去。

スクリプトリファレンスのメニューへ戻る


Picture(画像)
0 ≦ id < 64
画像を保持するためのクラス。画面への表示(描画)は後述するSpriteオブジェクトを使う

Picture[id].Load("(文字列)画像ファイル名")
画像をメモリにロード。この命令を呼んだとき、実際は暗示的に先にReleaseが実行されている

Picture[id].Release
画像をメモリから開放する
画像を使い終わったら開放するのがメモリ節約の鉄則


スクリプトリファレンスのメニューへ戻る

TextPicture(文字列画像)
0 <= id < 64
文字列を無色透明の画像に描画する。画面への表示(描画)は後述するSpriteオブジェクトを使う

TextPicture[id].Create((数値)画像幅,(数値)画像高さ)
完全空白のテキストピクチャ(文字列画像)を生成。この命令を呼んだとき、実際は暗示的に先にReleaseが実行されている

TextPicture[id].Write("(文字列)描画する文")
生成したテキストピクチャ(文字列画像)に字を書き込む。

TextPicture[id].Release
テキストピクチャ(文字列画像)をメモリから開放
画像を使い終わったら開放するのがメモリ節約の鉄則

以下は、[id]による指定をしない、TextPictureオブジェクト全体に出す命令

TextPicture.FontType("(文字列)フォント名")
これから書き込む文字列のフォントを設定

TextPicture.FontSize((数値)フォントサイズ)
これから書き込む文字列のフォントサイズを設定

TextPicture.FontColor((数値)不透明度,(数値)赤,(数値)緑,(数値)青)
これから書き込む文字列のフォント色を設定
それぞれ、0〜255

TextPicture.FontShade((フラグ)影の有無のフラグ,(数値)不透明度,(数値)赤,(数値)緑,(数値)青)
フォントの影を設定
フラグはtrueかfalse,trueで影有り
数値はそれぞれ、0〜255

スクリプトリファレンスのメニューへ戻る

Sprite(汎用画像表示機能)
0 <= id < 256
PictureとTextPictureを使った画像表示を担当
上限の半分(現在は128)以上のidのスプライトは、各種ウィンドウより前に描画される

Sprite[id].SourcePicture((フラグ)テキストピクチャフラグ,(数値)ピクチャ番号)
描画の基とする画像を設定
ピクチャ番号は、Picture,又はTextPictureのindexの値である。

Sprite[id].SourceRect((数値)左,(数値)上,(数値)右,(数値)下)
基画像の切り取る範囲(四角形)を設定

Sprite[id].MovePos((数値)x座標,(数値)y座標,(数値)移動時間,(フラグ)並列動作フラグ)
描画位置を設定。
並列動作フラグは、将来拡張を考えて用意したもの。今は原則的にtrueを指定すること

Sprite[id].SetMagni((数値)x方向拡大率%,(数値)x方向拡大率%,(数値)拡大にかける時間,(フラグ)並列動作フラグ)
拡大率を設定。拡大率は百分率(単位が%になる)で指定。
つまり、100と入力すれば100%のサイズということになる。

Sprite[id].SetColor((数値)不透明度,(数値)赤,(数値)緑,(数値)青,(数値)変更にかける時間,(フラグ)並列動作フラグ)
色調を設定。全て

Sprite[id].SetVisible((フラグ)可視フラグ)
可視、不可視の設定
trueで可視

Sprite[id].Init
初期化する

Sprite[id].Copy((数値)コピー元のスプライト番号)
指定した番号のスプライトから内容をコピーして貰う
コピー元のスプライト番号=コピー元のスプライトのid

Sprite[id].Swap((数値)入れ替えるスプライトの番号)
指定したスプライトと内容を入れ替える

スクリプトリファレンスのメニューへ戻る

MessageWindow(メッセージウィンドウ)
0 ≦ id < 10
メッセージウィンドウ担当オブジェクト。
メッセージの描画はOpenした後にしか使えない(Close後は使えない)

MessageWindow[id].Open((数値)x座標,(数値)y座標,(数値)幅,(数値)高さ,"(文字列)開くエフェクト",(フラグ)可視フラグ,(フラグ)スキン可視フラグ)
ウィンドウを開く。全ての引数が省略化
開くエフェクト:flash(デフォルト),expand(伸びるように開く),fade(フェードイン)
スキン……文字の後ろ側にある、ウィンドウの下地画像のこと
可視フラグ……trueで見える。falseで見えない。

MessageWindow[id].Close
ウィンドウを閉じる

MessageWindow[id].SetVisible((フラグ)可視フラグ)
ウィンドウの可視設定
trueで見える。falseで見えない。

MessageWindow[id].SkinVisible((フラグ)可視フラグ)
ウィンドウスキンの可視設定
trueで見える。falseで見えない。

MessageWindow[id].SkinType((数値)ウィンドウスキンタイプ番号)
ウィンドウスキンのタイプ設定。
現在、0番で青地の枠有ウィンドウ。1番で枠無しグレーのグラデーションウィンドウ。
(デフォルト素材の場合)

MessageWindow[id].PrintText("(文字列)文章")
新規文章描画。""(ダブルクォーテーション)の中に書き、文中の改行も反映される。
それまでこのウィンドウに既に書かれていた文章は一度消される。

MessageWindow[id].AddText("(文字列)文章")
文章追加描画。""(ダブルクォーテーション)の中に書き、文中の改行も反映される。
それまでにこのウィンドウに書かれていた文章の続きに文章が書かれる。

MessageWindow[id].FontType("(文字列)フォント名")
今後描画する文字のフォントを設定

MessageWindow[id].FontSize((数値)フォントサイズ)
今後描画する文字のフォントサイズを設定

今後描画する文字のフォント色を設定
MessageWindow[id].FontColor((数値)不透明度,(数値)赤,(数値)緑,(数値)青)

MessageWindow[id].FontShade((フラグ)影の有無)
今後描画する文字の影の有無を設定
trueで影有り

MessageWindow[id].FontShadeColor((数値)不透明度,(数値)赤,(数値)緑,(数値)青)
フォントの影の色の設定

スクリプトリファレンスのメニューへ戻る

SelectWindow(選択肢ウィンドウ)
0 ≦ id < 10 選択肢、或いはリスト表示として使うウィンドウ。
選択肢の数の設定、カラムの設定はOpen前に行うこと。
選択肢と説明文の追加はOpen後にしか行わないこと。

SelectWindow[id].ContentsNum((数値)選択肢の数)
選択肢の数を設定。1以上、上限は特になし(ハードウェア依存だが実用上は基本的に上限無し)

SelectWindow[id].SetColumn((数値)段数)
段組み設定。指定した数値分だけ、横に段が増える

段組みの補足。配置としては
1段1列2段1列3段1列
1段2列2段2列3段2列…

となり、選択肢の番号との対応は
012
345

……となる

SelectWindow[id].ContentsHeight((数値)高さ)
選択肢の(画像サイズ的な意味での)高さを設定。横幅は自動的に設定されるようになっている

SelectWindow[id].Open((数値)x座標,(数値)y座標,(数値)幅,(数値)高さ,(数値)空白スペースサイズ,"(文字列)開くエフェクト",(フラグ)可視フラグ,(フラグ)スキン可視フラグ)
選択肢ウィンドウを開く。基本はメッセージウィンドウと同じ。
空白スペースサイズは、左右上下隅からの距離を意味する。
すべての引数が省略可

SelectWindow[id].Close
選択肢ウィンドウを閉じる

SelectWindow[id].SetContents((数値)選択肢番号,"(文字列)選択肢の文",(フラグ、省略可)有効フラグ)
選択肢の内容を設定。選択肢番号は、選択肢の数-1を超えないように(上限が3なら、0〜2まで)
有効フラグは、その選択肢を選択できるかどうかを指定できる。trueなら選択できる。デフォルトはtrue

SelectWindow[id].SetContentsEnable((数値)選択肢番号,(フラグ)有効フラグ)
選択肢の有効、無効設定。

SelectWindow[id].SetVisible((フラグ)可視フラグ)
ウィンドウの可視、不可視を設定

SelectWindow[id].SkinVisible((フラグ)可視フラグ)
ウィンドウスキンの可視設定

SelectWindow[id].SkinType((数値)ウィンドウスキンタイプ番号)
ウィンドウスキンのタイプ設定。
現在、0番で青地の枠有ウィンドウ。1番で枠無しグレーのグラデーションウィンドウ

SelectWindow[id].FontType("(文字列)フォント名")
今後描画する文字のフォントを設定

SelectWindow[id].FontSize((数値)フォントサイズ)
今後描画する文字のフォントサイズを設定

SelectWindow[id].FontColor((数値)不透明度,(数値)赤,(数値)緑,(数値)青)
今後描画する文字のフォント色を設定

SelectWindow[id].FontShade((フラグ)影の有無)
今後描画する文字の影の有無を設定
trueで影有り

SelectWindow[id].FontShadeColor((数値)不透明度,(数値)赤,(数値)緑,(数値)青)
フォントの影の色の設定

SelectWindow[id].OpenDescription((数値)x座標,(数値)y座標,(数値)幅,(数値)高さ,"(文字列)開くエフェクト",(フラグ)可視フラグ,(フラグ)スキン可視フラグ)
選択肢の説明ウィンドウを開く。引数はメッセージウィンドウと同じ

SelectWindow[id].CloseDescription
選択肢の説明ウィンドウを閉じる

SelectWindow[id].SetDescriptionVisible((フラグ)可視フラグ)
説明ウィンドウの可視、不可視設定

SelectWindow[id].SetDescription((数値)選択肢番号,"(文字列)説明文")
選択肢番号の選択肢についての説明文を設定する。

SelectWindow[id].DescriptionFontType("(文字列)フォント名")
説明ウィンドウの今後描画する文字のフォントを設定

SelectWindow[id].DescriptionFontSize((数値)フォントサイズ)
説明ウィンドウの今後描画する文字のフォントサイズを設定

SelectWindow[id].DescriptionFontColor((数値)不透明度,(数値)赤,(数値)緑,(数値)青)
説明ウィンドウの今後描画する文字のフォント色を設定

SelectWindow[id].DescriptionFontShade((フラグ)影の有無)
説明ウィンドウの今後描画する文字の影の有無を設定
trueで影有り

SelectWindow[id].DescriptionFontShadeColor((数値)不透明度,(数値)赤,(数値)緑,(数値)青)
説明ウィンドウのフォントの影の色の設定

SelectWindow[id].CursorMoveSeFile("(文字列)Music,seフォルダ内のSEファイル名")
カーソルが動いた時のSE(効果音)を設定する

SelectWindow[id].SelectSeFile("(文字列)Music,seフォルダ内のSEファイル名")
選択した時のSEを設定する

SelectWindow[id].CancelSeFile("(文字列)Music,seフォルダ内のSEファイル名")
キャンセル、或いは無効選択肢を選んだときのSEを設定する

SelectWindow[id].Select((フラグ)選択待ちフラグ,(数値)変数ID)
プレイヤーの選択待ちフラグがtrueなら選択待ちになる。
選ばれたものの選択肢番号が、指定した変数IDの変数(変数IDに0番を指定したなら、$num[0])に結果として格納される。

スクリプトリファレンスのメニューへ戻る

Sound(音)
音関係担当オブジェクト。BGM,BGS,SE。
BGMはMIDI,wav,oggが再生可能。
BGSはwav,ogg
SEはwav,ogg
但し、MIDIは再生環境に音がいくらか依存するので注意

Sound.BGM("(文字列)BGMファイル名")
Music/bgmフォルダ内にあるBGMファイルを再生

Sound.BGS("(文字列)BGSファイル名")
Music/bgsフォルダ内にあるBGSファイルを再生

Sound.SE("(文字列)SEファイル名")
Music/seフォルダ内にあるSEファイルを再生

Sound.StopBGM
BGMを止める

Sound.StopBGS
BGSを止める

Sound.StopSE
SEを止める

スクリプトリファレンスのメニューへ戻る

SaveData(セーブデータ)
0 ≦ id < 6
セーブデータを担当するオブジェクト。
現在セーブできる内容は、背景、キャラ、BGM、BGSの状態、変数、フラグ変数、文字列変数、
実行中のスクリプトファイル名、セーブポイント名のみ。
セーブポイント名は256バイト以内の長さとすること

SaveData[id].Save
index番のデータにセーブする。

SaveData[id].Refer((数値)文字列変数ID)
id番のセーブデータに記録されている、セーブポイント名を、文字列変数ID番の文字列変数に格納する
セーブデータが無い場合は"NO DATA"が格納される

スクリプトリファレンスのメニューへ戻る

Calc(計算/演算)

スクリプト中で
Calc(計算式)
と書いた時、()内の計算式で代入計算/演算が行える。
ただし、実行できるパターンは以下のように限られている。

実行できるパターン1
$num[id] (演算子1) 数値1 (演算子2) 数値2
演算子1 =(左辺の変数に右辺の結果を代入)
     +=(左辺の変数自身に右辺の結果を加えて代入)
     -=(左辺の変数自身から右辺の結果を引いて代入)
     *=(左辺の変数自身に右辺の結果をかけて代入)
     /=(左辺の変数自身を右辺の結果で割って代入)
     %=(左辺の変数自身を右辺の結果で割った余りを代入)

演算子2 +、-、*、/、%(左から順に、足し算、引き算、掛け算、割り算、剰余(割り算の余り))
パターン1の例
Calc( $num[10] = $num[1] + 10 )
Calc( $num[10] += $num[1])

パターン2
$num[id](演算子3)
演算子3 ++(左辺の変数の持つ値を1増やす)
     --(左辺の変数の持つ値を1減らす)
パターン2の例
Calc($num[20]++)

パターン3
文字列変数の操作
$str[id](文字列演算子1)文字列1(文字列演算子2)文字列2
文字列演算子1 =(左辺の文字列変数に右辺の結果を代入)
        +=(左辺の文字列変数の値に右辺の結果を繋げて代入する)

文字列演算子2 +(文字列1と文字列2を繋げる)
パターン3の例
Calc($str[10] = "あいうえお")
Calc($str[20] = $str[10] + "かきくけこ")

パターン4
$flag[id] = フラグ1(フラグ演算子1)フラグ2
フラグ演算子1 +(フラグ1とフラグ2の論理和演算(OR))
        *(フラグ1とフラグ2の論理積演算(AND))

フラグ1、フラグ2は、!(半角のビックリマーク)を頭につけることで、trueとfalseを反転させることができる。
パターン4の例
Calc($flag[0] = !$flag[1] * $flag[2])
もし$flag[1]がfalseの値を持っているなら、!$flag[1]はtrueとして扱われ、逆ならfalseとして扱われる。

スクリプトリファレンスのメニューへ戻る

if〜else〜end(条件分岐)
シナリオの分岐をはじめ、様々な処理を行う時、条件分岐は大いに役立ちます。
条件分岐とは、設定した条件が満たされているか(真か)どうかで処理が分かれる機能です。
この条件は、一つの値、又は2項の比較までのものしか対応していません。
いくつかの例を追って使い方を示しましょう。

例1:

if($flag[0])
#$flag[0]がtrueなら、この部分が実行される
end
#end以降は通常通りに。


例2:

if($num[10] >= 20)
#$num[10]の値が20以上ならこの部分が実行される。
else
#そうっじゃない($num[10]の値が20未満)ならこの部分が実行される。
end
#条件分岐終了。ここ以降は通常通りに。


例3:

if($num[1] < 10)
#$num[1]の値が10未満ならこの部分が実行される。
else if($num[1] < 20)
#$num[1]の値は10以上だが20未満ならこの部分が実行される。
else
#それ以外($num[1]の値は20以上)ならここが実行される。 end
#条件分岐終了。ここ以降は通常通りに。


例4:

if($num[1] == 20)
#$num[1]の値が20と同じ場合
if($str[20] == "aiueo")
#$num[1]の値が20と同じ場合で$str[20]に入っている文字列が"aiueo"なら、ここが処理される。
end
#$num[1]の値が20と同じ場合なら、$str[20]が"aiueo"だろうとそうでなかろうとここは処理される。
end
#条件分岐終了。ここ以降は通常通りに。
#ifとendはワンセットになっていることが重要。

スクリプトリファレンスのメニューへ戻る

スクリプトリファレンスのメニューへ戻る
一番上へ戻る
サンプル・テンプレート集

以下は、コピー&ペーストし、必要に応じて書き変えるだけで使えるスクリプトのサンプル・テンプレート集(コメント付き)です。


メッセージウィンドウのサンプル

#メッセージウィンドウ使い方のサンプル
#x,y座標=20,20の位置に、幅600,高さ440のウィンドウを開く。
#エフェクトはexpand
MessageWindow[0].Open(20,20,600,440,"expand")
MessageWindow[0].PrintText("表示したい文章をここに。")

#一旦区切る
WaitOK

#追加表示。
#次の行から始めたいという場合は、このように一文字目で改行を入れる。
MessageWindow[0].AddText("
文章を追加表示したい場合はこう。")

#一旦区切る
WaitOK

#メッセージウィンドウを閉じる
MessageWindow[0].Close



選択肢ウィンドウのサンプル #――Initialize.txtの方に書いておくと良いこと―― #3種類のSEを設定(音を鳴らしたくないなら設定不要) SelectWindow[0].SelectSeFile("cursor8.wav") SelectWindow[0].CancelSeFile("bahu.wav") SelectWindow[0].CursorMoveSeFile("mokin.wav") #ウィンドウスキンタイプを設定 SelectWindow[0].SkinType(0) #選択肢の説明文用ウィンドウのスキンタイプを設定 SelectWindow[0].DescriptionSkinType(0) #選択肢の枠の高さを設定 SelectWindow[0].ContentsHeight(25) #――Initialize.txtの方に書いておくと良いこと。ここまで―― #――以降、本文中に書くこと―― #この選択肢を何度か利用する場合、このようにタグを用意しておく *サンプル選択肢の開始地点 #――Openの前に書くこと―― #選択肢の数を設定。(ここでは3個) SelectWindow[0].ContentsNum(3) #段数の設定(ここでは1段) SelectWindow[0].SetColumn(1) #――Openの前に書くこと、ここまで―― #選択肢ウィンドウを開く SelectWindow[0].Open(20,100,600,200,16,"expand") #(必要なら書く)項目についての説明ウィンドウを表示 SelectWindow[0].OpenDescription(20,60,600,40,"expand") #――Openの後に書くこと―― #選択肢の項目設定。ここで書かれた内容が選択肢として表示される SelectWindow[0].SetContents(0,"最初の選択肢(0番)") SelectWindow[0].SetContents(1,"2番目の選択肢(1番)") SelectWindow[0].SetContents(2,"3番目の選択肢(2番)") #(必要なら書く)項目についての説明文を設定 SelectWindow[0].SetDescription(0,"最初の選択肢についての説明文") SelectWindow[0].SetDescription(1,"2番目の選択肢(1番)についての説明文") SelectWindow[0].SetDescription(2,"3番目の選択肢(2番)についての説明文") #どれかを必ず選ばせる時に使うテクニックのポイント1 *キャンセル時に戻る場所1 #プレイヤーに選択してもらう。選択の結果はこの場合なら$num[0]に格納される。 SelectWindow[0].Select(true,0) #どれかを必ず選ばせる時に使うテクニックのポイント2 #キャンセルができないようにするなら、これを書く。 if($num[0] == "-1") #選んでもらえるよう戻る Jump("キャンセル時に戻る場所1") end #どれかを必ず選ばせる時に使うテクニックのポイント2ここまで #選択肢ウィンドウを閉じる(同時に説明文用ウィンドウも閉じられる) SelectWindow[0].Close #また、キャンセル専用処理を用意する場合はif〜endの中を書き変える。 if($num[0] == 0) #最初の選択肢が選ばれた場合の処理を書く else if($num[0] == 1) #(中略) end
システムメニューのサンプル #Sub.txtなどに書いておき、CallSub("Menu","Sub.txt")として呼び出す。 #必要に応じてウィンドウのid番号や変数のid番号などを変えるなど、改良してみよう。 *Menu #メニューサブルーチン開始 #ContentsHeightはInitialize.txtで設定済み SelectWindow[0].SetColumn(1) SelectWindow[0].ContentsNum(3) SelectWindow[0].Open(380,0,260,100,12,"expand") SelectWindow[0].SetContents(0,"セーブする") SelectWindow[0].SetContents(1,"ゲームを終了する") SelectWindow[0].SetContents(2,"システムメニュー終了") *MenuStartPoint SelectWindow[0].Select(true,1) if($num[1] == "-1") #キャンセルされた場合は閉じて終わる。 SelectWindow[0].Close Return else if($num[1] == 0) #セーブするを選んだ場合 MessageWindow[0].Close MessageWindow[0].Open(0,0,380,40,"expand") MessageWindow[0].PrintText("どのデータにセーブしますか?") #6つのセーブデータについてチェックし、選択肢に入れる処理開始。 #まずは選択肢ウィンドウを開く SelectWindow[1].SetColumn(1) SelectWindow[1].ContentsNum(6) SelectWindow[1].Open(0,40,380,300,12,"expand") #セーブデータのセーブポイント名を文字列変数0番に格納し表示する SaveData[0].Refer(0) Calc($str[1] = "1 > ") Calc($str[0] = $str[1] + $str[0]) SelectWindow[1].SetContents(0,"$str[0]") SaveData[1].Refer(0) Calc($str[1] = "2 > ") Calc($str[0] = $str[1] + $str[0]) SelectWindow[1].SetContents(1,"$str[0]") SaveData[2].Refer(0) Calc($str[1] = "3 > ") Calc($str[0] = $str[1] + $str[0]) SelectWindow[1].SetContents(2,"$str[0]") SaveData[3].Refer(0) Calc($str[1] = "4 > ") Calc($str[0] = $str[1] + $str[0]) SelectWindow[1].SetContents(3,"$str[0]") SaveData[4].Refer(0) Calc($str[1] = "5 > ") Calc($str[0] = $str[1] + $str[0]) SelectWindow[1].SetContents(4,"$str[0]") SaveData[5].Refer(0) Calc($str[1] = "6 > ") Calc($str[0] = $str[1] + $str[0]) SelectWindow[1].SetContents(5,"$str[0]") #セーブデータを選んでもらう。結果は数値変数1番$num[1]に格納される。 SelectWindow[1].Select(true,1) #キャンセルした場合は何もせずメニューに戻る if($num[1] == "-1") MessageWindow[0].Close SelectWindow[1].Close Jump("MenuStartPoint") else #選択した場合は、対応する番号のセーブデータに記録しメニューに戻る SaveData[$num[1]].Save MessageWindow[0].Close SelectWindow[1].Close Jump("MenuStartPoint") end else if($num[1] == 1) #終了するを選んだ場合 MessageWindow[0].Open(200,130,240,40,"expand") MessageWindow[0].PrintText("本当に終了しますか?") SelectWindow[1].SetColumn(1) SelectWindow[1].ContentsNum(2) SelectWindow[1].Open(200,170,240,96,16,"expand") SelectWindow[1].SetContents(0,"はい") SelectWindow[1].SetContents(1,"いいえ") SelectWindow[1].Select(true,1) if($num[1] == "-1") MessageWindow[0].Close SelectWindow[1].Close Jump("MenuStartPoint") else if($num[1] == "1") MessageWindow[0].Close SelectWindow[1].Close Jump("MenuStartPoint") else if($num[1] == "0") EndScript end MessageWindow[0].Close SelectWindow[1].Close Jump("MenuStartPoint") else if($num[1] == 2) #システムメニュー終了を選んだ場合 SelectWindow[0].Close Return end #サブルーチンここまで Return
一番上へ戻る
戻る
Copyright © Hiyou. All rights reserved.