「関数(イベントの設定)」の編集履歴(バックアップ)一覧に戻る

関数(イベントの設定) - (2023/05/06 (土) 14:09:07) のソース

**&color(green){概要}
scenario構造体の&color(blue){world}で指定された&bold(){event構造体}はターン進行時と戦闘終了時に読み込まれます。
&color(blue){fight}で指定された&bold(){event構造体}は戦闘開始時に読み込まれます。
&color(blue){politics}で指定された&bold(){event構造体}は内政ユニットの雇用時に読み込まれます。
それぞれの中の条件分岐で&bold(){event構造体}を呼び出してイベントを発生させてください。

**&color(green){テキスト内で用いる特殊記号}
テキストを表示する関数のテキスト内では以下の特殊記号が使えます(title系では不可)。
|$|改行する(choice系では不可)|
|&&bold(){変数名}&|文字変数ないし数値変数の内部値を表示させる|
変数名を&color(blue){&}で囲う事でその要素を表示できます。文字変数内の先頭要素かつpower/spot/unit/classの識別子のみ認識されます。
&color(green){(例)msg(プレイヤーの勢力は&v_name&です。領地数は&v_num&です。)}

msg系、talk系、chat系の関数のテキスト内では以下の特殊記号も使えます。
|@|クリック待ちして改行する|
|#|クリック待ちして改行しない|

dialog系、select、exitの関数では以下の特殊記号もテキスト内各行の&bold(){行頭}に記すことによって使えます。
各行の行頭位置から行末位置までの文字色を変更します。
|#&bold(){行頭}|&color(green){黄色}|
|##&bold(){行頭}|&color(green){淡い水色}|
|#{&bold(){行頭〜行末}#}|&color(green){橙色}(行を跨いだ一括指定が可能)|
ゲーム表示内で自動改行される場合、文字色が記したとおりにはなりません。


**&color(green){文字変数と数値変数について}
:&color(blue){文字変数}|
1個~複数個の「文字列」を代入する変数です。ここでの文字列は主にpower、spot、unit, class構造体の名前(識別子)を指します。
決められた関数の引数欄でのみ使えます。
文字変数はセーブされませんので一時的なデータとして用います。
:&color(magenta){数値変数}|
「数値」を代入する変数です。
if文の条件式内と決められた関数の引数欄で使えます。
数値変数はセーブされますので各種のゲームフラグとして使えます。

**&color(green){基本関数}
青色の引数には&color(blue){文字変数}が使えます。(先頭に&color(blue){@}を付けると文字変数と見なされます)
紫色の引数には&color(magenta){数値変数}が使えます。(数値変数はそのままにしてください)

:call(&color(blue){event構造体名})|
:event(&color(blue){event構造体名})|
:routine(&color(blue){event構造体名})|
非戦闘時の1引数のcall/event関数呼び出しは実はroutine関数と同じ振る舞いをします。
call/event関数は引数の数を確認するためroutine関数より微妙に遅いのです。
戦闘中にはroutine関数を使用してください。
文字列変数使用可能です。
:event(&color(blue){event構造体名}, 赤陣営の勢力, 青陣営の勢力)|
event構造体を呼び出します。詳細は[[戦闘イベントの作成]]を参照してください。
文字列変数使用可能です。
:return()|
event構造体から抜けます。戦闘中イベントで呼び出した場合無視されます。
:battleEvent(イベント)|
戦闘中イベントを発生させます。詳細は[[別ページ>戦闘中イベントの発生]]にあります。
:wait(数値)| 
//数値フレームだけウェイトします。このゲームは25fpsですので1秒間waitするなら25とします。
数値フレームだけウェイトします。このゲームは50fpsですので最低1秒間waitする場合は50とします。
高負荷時にはフレーム処理速度が低下するため、実際のwait時間は動作環境により変わります。
:wait()|
スクロールが終わるまでウェイトします。
戦闘前のイベントシーンではユニットが全停止(移動完了)するまでウェイトします。

*****テキストウィンドウ
・&color(green){英文非対応のモード(既定)}で記述を読み込む場合は、関数名内の語("&color(green){msg}"、"&color(green){talk}"、"&color(green){chat}")をいずれで記しても有効となります。
・下記三種の関数名をそれぞれ&bold(){msg2}、&bold(){talk2}、&bold(){chat2}とすることで、表示は画面上部にされます。
:msg(文章)|
テキストのみを画面下部に表示します。
:talk(&color(blue){ユニット}, 文章)| 
ユニットのフェイス画像が、ユニット名の題付きでテキストが画面下部へ表示されます。
ユニット名には該当するunit構造体のhelpの前置きが付きます。
:chat(&color(blue){ユニット}, フェイス画像, 文章)| 
フェイス画像が通常のものから変更されて、ユニット名の題付きでテキストが画面下部へ表示されます。
ユニット名には該当するunit構造体のhelpの前置きが付きます。
第二引数にはfaceフォルダ画像を指定して、表情変化の表示などに利用します。
&color(green){chat(ルーニック島の代官, Face1.png, こんにちは)} のように題名とフェイス画像の直指定もできます。
:erase()| 
テキストウィンドウを消去する。 
:font(フォント名, 文字サイズ, 文字タイプ(0~3))|
テキストウィンドウのフォントを変更します。(例)font(AR行楷書体H, 26, 0)
フォントファイルはimageフォルダに入れてcontext構造体の&color(blue){font_file}にフォントファイルを列挙してください。
(例)font_file = argk.ttf
文字サイズの標準は&color(blue){26}です。文字タイプは
|0|ノーマル(デフォルト)|1|太字になる|
|2|斜体になる|3|太字で斜体になる|
:font()|
引数無しで標準フォントに戻します。
:fontc(赤成分(0~255), 緑(0~255), 青(0~255))|
テキストウィンドウの文字色を変えます。
:fontc()|
引数無しで標準文字色に戻します。

*****ダイアログウィンドウ
・&color(green){英文非対応のモード(既定)}で記述を読み込む場合は、下記二種の関数名(&bold(){dialog}、&bold(){dialogF})をどちらで記しても有効となります。
:dialog(文章)|
テキストのみを表示します。
:dialogF(&color(blue){ユニット}, 文章)|
ユニットのフェイス画像付きでテキストが表示されます。

:select(数値変数, 文章)|
二択を示すウィンドウを表示させます。
「決定」を押すと数値変数に&color(green){1}が入ります。「取消」だと&color(green){0}が入ります。
:choice(数値変数, 選択肢A, 選択肢B, 選択肢C, …)|
引数の数だけ選択肢を示すウィンドウを表示させます。
選択結果は数値変数に&color(green){選択肢A=0、 選択肢B=1、 選択肢C=2、 選択肢D=3, …}として代入されます。
:choiceTitle(テキスト)|
choiceウィンドウのトップバーに文章を表示します。&と&で囲った変数表示もできます。
choiceTitle()引数無しだと文章を消します。

:bg(ファイル名)|
:bg(ファイル名, on)|
背景画像を変更します。imageフォルダの画像ファイルを指定します。
第二引数をonにすると強制的に画面全体に広がって表示されます。
:fadeout()|
:fadeout(フレーム数)|
画面を黒色フェードアウトします。デフォルトフレーム数は20です。
:fadein()|
:fadein(フレーム数)|
画面をフェードインします。
&color(green){(例)背景をフェードアウトインして切り替える}
>fadeout()
>bg(newbackground)
>fadein()
:shake()|
:shake(フレーム数)|
:shake(フレーム数,謎の数値)|
画面をシェイクします。デフォルトフレーム数は50です。第2引数の用途は不明ですが(おそらくシェイクする方角)、デフォルト値は8です。
:darkness(A, R, G, B)|
画面に任意色のスキンをかけます。引数は全部指定しなくても構いません。省略値は0になります。
A=透明度、R=赤、G=緑、B=青、で範囲は(0~255)です。
:darkness()|
引数空欄でスキンを外します。
:shadow(手前方向[0~7], 手前色相, 奥色相, 手前α値[0~255], 奥α値[0~255], 濃度[1~100])|
陰影スキンをかけます。
:shadow()|
陰影スキンを外します。
:hideBlind()|
視界制限モードなら視界制限を元に戻します。
:showBlind()|
視界制限モードなら視界制限を外します。

:title(テキスト, y座標)|
タイトル文字(Game Overなど)を画面のy座標に表示します。
負の値(0~-100)にすると画面縦幅の比率となる。-40 だと「画面の縦幅×0.40」がy座標となる。
&color(green){(例)ゲームオーバーを表示しタイトル画面へ戻る}
>title(Game Over, -40)
>terminate()
:title2(テキスト, y座標)|
複数行のタイトル文字を表示させる時に使います。最後はnext()してください。
>title2(第一章, -40)
>title2(冒険の始まり, -50)
>next()
:terminate()|
タイトル画面に戻ります。
:save()|
自動セーブします。
:setGameClear()|
:setGameClear(on)|
context構造体で&color(green){default_ending = off}(エンディングの自動判定をしない)とした時に用います。
ゲームクリアフラグをオンにします。独自のエンディング判定をする時に使ってください。
ゲームクリアフラグがオンなのかは&color(green){isGameClear()}関数で判定できます。
引数をonとすると標準クリアメッセージ(~は大陸を統一しました。~は歴史に名を残しました)とファンファーレを流します。
:exit()|
:exit(テキスト)|
:exit(0)|
「ゲームをクリアしました。右クリックすると機能ウィンドウが出ます」と表示されて「閲覧モード」になります。
テキストを記すと上記の文章と置き換えます。
&color(blue){0}だと何も表示しません。
「ゲームクリアフラグオン」→「エンディング」→「閲覧モード」とするのが普通です。

:image/face/picture(ファイル名, &color(magenta){x座標(0~100)}, &color(magenta){y座標(0~100)})| 
:image/face/picture(ファイル名, &color(magenta){x座標(0~100)}, &color(magenta){y座標(0~100)}, &color(magenta){zオーダー})| 
:image/face/picture(ファイル名, &color(magenta){x座標(0~100)}, &color(magenta){y座標(0~100)}, &color(magenta){zオーダー}, &color(magenta){フェード時間})| 
:image/face/picture(ファイル名, &color(magenta){x座標(0~100)}, &color(magenta){y座標(0~100)}, &color(magenta){zオーダー}, &color(magenta){フェード時間}), &color(magenta){横幅})| 
:image/face/picture(ファイル名, &color(magenta){x座標(0~100)}, &color(magenta){y座標(0~100)}, &color(magenta){zオーダー}, &color(magenta){フェード時間}), &color(magenta){横幅}), &color(magenta){縦幅})| 
:image/face/picture(ファイル名, &color(magenta){x座標(0~100)}, &color(magenta){y座標(0~100)}, &color(magenta){zオーダー}, &color(magenta){フェード時間}), &color(magenta){横幅}), &color(magenta){縦幅}, &color(magenta){アルファ値})| 
各関数名でそれぞれのフォルダ(&color(green){image}、&color(green){face}、&color(green){picture})の&bold(){ファイル名}画像を表示できます。
座標は画面サイズの百分率です。100, 100とするとちょうど画面右下に表示されます。
(例)&color(green){image(xxx.png, 50, 50)とすると画面中央に表示される。image(xxx.png, 50, 25)だと少し上。}
はみ出さないよう強制調整されます。&bold(){picture}関数のみは&bold(){picture2}とすることで、立ち絵が画面からはみ出て表示できます。
zオーダーを負の値にするとウィンドウの下に、正の値にすると上に表示されます。フェード時間のデフォルト値は20です。
(現在有効な別名:showImage/showFace/showPict)
:image(ファイル名)| 
:image(ファイル名, &color(magenta){フェード時間})|
上記の関数名四種による&bold(){ファイル名}画像表示を消去します。&bold(){face}、&bold(){picture}、&bold(){picture2}としても全く同一です。第2引数はデフォルトで20です。
(現在有効な別名:hideImage)

:showChara(イメージ, x座標, y座標)| 
:showChara(イメージ, x座標, y座標, 横幅, 縦幅)| 
image.datにあるイメージを表示させます。
重複表示はしないので異なる座標で再表示した場合は移動となります。
同じイメージを複数表示する時は&color(blue){Char1@one}のように「@任意の接尾辞」を記してください。
:hideChara(イメージ)| 
イメージを消去します。
:reverseChara(イメージ)| 
イメージを反転します。
:showPicture(イメージ, x比率, center/right/on)| 
pictureフォルダから画像を表示します。
:doskill(スキル名, &color(magenta){x座標}, &color(magenta){y座標}, 発射方向角度(0~360), スクリーン座標(on/off))|
スキルを発射します。
スクリーン座標がonだとx、yは(0~100)の画面サイズ百分率になります。
offだとワールド座標の直指定数値になります。

:spotmark(&color(blue){領地/勢力/ユニット})|
:spotmark(&color(blue){領地/勢力/ユニット}, 色番号)|
ユニットの存在する領地、領地、又は勢力の全領地をマーキングします。色番号の省略時は&bold(){3}になります。
//&color(green){-2=閃光、-1=爆発、0=赤、1=青、2=黄、3=紫、4=茶、5=緑、6=水色}
|&bold(){色番号}|&bold(){0}|&bold(){1}|&bold(){2}|&bold(){3}|&bold(){4}|&bold(){5}|&bold(){6}|&bold(){7}|&bold(){8}|&bold(){9}|&bold(){10}|&bold(){11}|&bold(){12}|
|&color(green){色彩}|&color(green){青}|&color(green){赤}|&color(green){黄}|&color(green){紫}|&color(green){橙}|&color(green){水色}|&color(green){緑}|&color(green){橙}|&color(green){緑}|&color(green){緑}|&color(green){青}|&color(green){赤}|&color(green){赤}|
|光輪の動き|拡縮|拡縮|拡縮|拡縮|拡縮|なし|なし|なし|拡縮|なし|なし|なし|なし|
|光の明るさ|通常|通常|‐|‐|‐|‐|通常|‐|通常|弱め|弱め|弱め|通常|
|&bold(){色番号}|&bold(){-1}|&bold(){-2}|
|&color(green){アニメーション}|&color(green){爆発}|&color(green){閃光}|
(現在有効な別名:showSpotMark)
:spotmark()|
全領地のマーキングを消去します。
(現在有効な別名:hideSpotMark)
:showSpot(&color(blue){領地})|
領地を表示します。 
:linkSpot(&color(blue){領地}, &color(blue){領地})|
:linkSpot(&color(blue){領地}, &color(blue){領地}, イメージ)|
:linkSpot(&color(blue){領地}, &color(blue){領地}, イメージ, α値)|
領地を連結します。 
image.dat内のイメージで装飾できます(デフォルトはroute)α値は透明度(0~255)です。
:linkEscape(&color(blue){領地}, &color(blue){領地})|
:linkEscape(&color(blue){領地}, &color(blue){領地}, イメージ)|
:linkEscape(&color(blue){領地}, &color(blue){領地}, イメージ, α値)|
領地を退却線で連結します。
image.dat内のイメージで装飾できます(デフォルトはesc_route)α値は透明度(0~255)です。 
:hideSpot(&color(blue){領地})|
領地を非表示にします。
非表示の領地は孤立した状態でゲーム内に存在しています。
:hideLink(&color(blue){領地}, &color(blue){領地})| 
連結線を非表示にします。
:hideEscape(&color(blue){領地}, &color(blue){領地})| 
退却線を非表示にします。

:scroll(&color(blue){ユニット/領地})|
:scroll(x, y)|
今の画面位置を記憶して指定した領地、ユニットが中心になるようにスクロールします。 
ワールドマップでユニット名を指定した場合はそのユニットがいる領地にスクロールします。 
:backScroll()| 
scroll()で記憶した画面位置に戻るようスクロールします。 
:scroll2(&color(blue){ユニット/領地})| 
画面位置を記憶しないscroll()です。 
:scrollSpeed(数値)|
スクロールスピードを変えます。数値ドット/毎フレームにします。
数値変数は使えません。(性能上特に使えない理由がないのですが、使えません。)
:locate(&color(blue){ユニット/領地})|
:locate(x座標, y座標)|
画面をユニットか領地を中心にした位置へ即座に移動します。又は(x, y)を中心にした位置へ即座に移動します。
:zoom(数値)|
負の値でズームイン、正の値でズームアウトします。+50ないし+100が標準ズームアウト値です。
数値変数は使えません。
:focus(&color(blue){ユニット})|
指定ユニットを追尾スクロールさせます。
:focus()|
引数無しにすると追尾スクロールをキャンセルします。

:playSE(ファイル)|
効果音を鳴らします。soundフォルダのwavファイル(拡張子無し)を指定します。
:playBGM()|
引数無しです。世界地図シーンならplayWorld()を、戦闘シーンならplayBattle()を実行します。
イベントシーンの最後にこの関数を使ってBGMを戻してください。
:playBGM(ファイル)|
BGMを演奏します。bgmフォルダのmidファイル(拡張子無し)を指定します。
mp3ファイルの時は拡張子込みで指定します。
:stopBGM()|
BGMを停止します。
:volume(数値)|
BGMの音量。範囲は(1~100)です。
0 以下にするとデシベル指定となり範囲は(-10000~0)ですが非推奨です(旧Verとの互換)
:playWorld()|
context構造体で設定した&color(green){world_bgm}データを演奏します。
:playBattle()|
context構造体で設定した&color(green){battle_bgm}データを演奏します。
:loopBGM(ファイル, ファイル, …)|
列挙されたBGMファイルをランダムな順番で演奏します。
:setWorldMusic()|
ワールドBGMフラグをオンにします。
ワールドBGMフラグはcontext構造体のworld_bgmの演奏時にオンとなり、それ以外の演奏でオフとなります。
:resetWorldMusic()|
ワールドBGMフラグをオフにします。

:reloadMenu(on)|
勢力メニューウィンドウを再表示します。内政ウィンドウで数値を変化させた時にお使いください。
:showPolitics(on/off)|
onで内政ウィンドウを表示します。offで隠します。
:showParty(on/off)|
onでパーティウィンドウ(人材プレイ時の内政)を表示します。offで隠します。
:showDungeon(ダンジョン構造体の名前)|
ダンジョンウィンドウを呼び出せます。内政コマンドからダンジョンシーンに入れます。
:resetZone()|
ゾーン制を取り消します。
:personal_battle = (on/off)|
onとすると戦場画面下の全部隊ウィンドウが人材プレイ時と同じになります。

:worldSkin()|
何なのか不明です。引数は不要です。
イベントで領地を表示/非表示した後に実行することで領地周りを明るくする表示が現在の表示領地に合わせたものに更新されるようです。

:ppl1()|
内政ユニットからpolitics = eraseであるものを全て削除するようです。