イベントスクリプト


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

eventの{}に記述する処理手順です。


ゲームフラグを設定する

  • フラグ(変数)について
イベントスクリプトではフラグ(変数)を扱うことができる
フラグ(変数)は文字列を設定することができ、if文などの制御構文で使用することができる
フラグ(変数)が未設定の場合初期値は0として扱われる
フラグ(変数)に数字が設定されている場合、if文では大小比較を行うことができる
フラグ(変数)にはシステムで予約されている予約語がいくつか存在しているので被らないように注意

  • フラグ(変数)の設定方法
以下のコマンドでフラグに文字列を設定することができる
※ フラグ名には ${} を付けないように注意!
set_flag	フラグ名	文字列
set_flag	flg_korositedemo_ubaitoru 1 # flg_korositedemo_ubaitoruに1を設定する。
set_flag	flg_my_lover あほあほ   # flg_my_loverに「あほあほ」を設定する。

  • フラグ(変数)の参照方法
参照する場合は ${フラグ名} という風に書くと、
コマンド実行時に${フラグ名}が、設定されている文字列に置換されて実行される

  • システム変数一覧
${player_last}	末尾のパーティメンバの ID
${player1}		1番目のパーティメンバの ID
${player2}		2番目のパーティメンバの ID
${player3}		3番目のパーティメンバの ID
${player4}		4番目のパーティメンバの ID
${party_num}	パーティの人数
${hero}			主人公の ID
${hit_point}	主人公のヒットポイント
${gold}			所持金
${direction}	プレイヤーの向き(up, down, left, right)

条件分岐

if~elif~else~endif
条件式には !=<> が使用可能
&&と||で条件式をつなげることも出来ます
if ${opening_flag} == 1 && hero == グラント
不要ならelse節は省略可能。
if の直後に変数を指定する

  • ゲームフラグを使用する場合の例
if flg_korositedemo_ubaitoru == 1
 msg 20, な なにをする きさまらー!; sync
 playse sound\\効果音\\アイテムゲット.mp3
 msg -1, アイスソードを\nてにいれた!; sync
else
 msg -1, そう かんけいないね; sync
endif
  • 主人公が誰かという条件文の例
if ${hero} != グラント
 msg -1, 俺はグラントじゃねーよ; sync
elif ${hero} == マリー 
 msg -1, 私はマリー
endif
  • 所持金を使用した条件文の例
if ${gold} <= 100
 msg 10, お前貧乏だな; sync
endif
  • アイテムを所持しているか
if item == ポーション || item != ハイポーション
 msg 20, あなたポーション大好きあるね
endif
  • アイテムを所持しているか
if ${direction} == right
 msg 20, あなた右に向いてるね
elif ${direction} == down
 msg 20, もっと上を向いて歩こうよ!
endif
  • パーティに誰々がいる場合の例
if in_party == マリー && in_party == シエラ && in_party != グラント
 msg -1, 女大好き
endif

キャラにセリフを喋らせる。

横方向の表示限界は全角16文字程度と思われるので、見やすい長さで改行を入れる事が好ましい。
ウィンドウの高さはセリフの行数になっているが
ウィンドウの高さは最大4行でセリフが4行を超えた場合4行単位でスクロールしていく

  • 通常のふきだし
msg -1, 次にお前は\n「なぜわかった!?」と言う #操作キャラセリフ
msg 20, なぜわかった!?\nハッ!?  #ID20のイベントのセリフ。

  • 心の中で考えていることのふきだし
msg2 -1, こいつバカだ…
msg2 20, もしかして、\nこの人アホかしら…

  • 時間経過でウィンドウが消えるふきだし
msg_auto 37, 私は3…,15    #表示時間は15フレーム
sync      #15フレームで消えるのを待つ
msg_auto 37, いや、20歳。, 20

コマンドの動作完了を待つ

同時実行する命令を締め切り、動作完了を待つ。
move up, up, 0.25, 5, -1
move up, up, 0,25, 5, 20
msg -1, 操作キャラは喋りながら移動
sync
msg 20, ID20のキャラは移動後に喋る
sync

指定したフレーム数だけ待機する。

msg -1, ちょっとまて・・・\nこれは・・・
sync
wait 60
sync
msg -1, 人の首・・・!?

キャラの向きを設定する。

direction up, -1 #操作キャラを上向きに設定。
direction left, 20 #ID20のイベントを左向きに設定。

キャラを移動させる。

一番目と二番目の引数にはdirectionで説明されている方向を指定する。
move2にすると障害物を無視して直進する。
move up, down, 0.25, 5, 20 #ID20のイベントを、5マス、速度0.25、下向き表示で、上方向に移動させる。
move left, left, 1, 3, -1 #操作キャラを左へ3マス移動させる。

キャラを指定した座標まで移動させる

経路探索アルゴリズム(A*アルゴリズム)で途中に障害物や階段があっても最短距離で
指定した座標まで移動する
move_point 20, 30, 1, -1 # 操作キャラを(20, 30)まで速度1で移動する

キャラの位置を変える。

他のイベントの位置に重ならないよう注意。
set_pos -1, down, 10, 20, 0 #操作キャラをレイヤー0の座標10,20へ転送し下向きに設定する。
set_pos 20, up, 10, 30, 2  #ID20のイベントをレイヤー2の10,30へ転送し上向きに設定する。

キャラが停止している時の表示チップを変更する

キャラチップ画像には以下のようにチップにIDが振られています
0, 1, 2...
5, 6, 7...
第一引数にオブジェクトID、第二引数にはチップIDを指定します
第三引数は反転フラグ(trueまたはfalse)が指定出来、省略した場合は反転しません
指定するチップIDは-2が特殊で倒れている画像になり、-1で元に戻ります
# プレイヤーキャラをチップID4を反転して表示
set_stop_image -1, 4, true
# 元に戻す
set_stop_image -1, -1
# プレイヤーキャラが一回転
set_stop_image -1, 1; wait 4;sync; 
set_stop_image -1, 6; wait 4;sync; 
set_stop_image -1, 11; wait 4;sync; 
set_stop_image -1, 16; wait 4;sync; 
set_stop_image -1, -1; wait 4;sync;

強制的にキャラの表示チップを変える

set_stop_image ではキャラが止まっている時の表示を変更するのに対し
set_force_image ではキャラが移動する時も指定したチップが常に表示される
# プレイヤーキャラをチップID4を反転して表示
set_force_image -1, 4, true
# 元に戻す
set_force_image -1, -1

アイテムを取得する

if flag test_item == 1
 msg -1, からっぽ・・・; sync
else
 set_anim 47, 4 1 # 宝箱を開けた画像に変える
 item_get 長剣 # ふきだしも表示される
 set_flag test_item 1 # フラグを使用しないと何度でも取ることができてしまう
endif

HPやMPを回復する

recovery 1 0 0 # HPだけ完全に回復
recovery 0 1 0 # MPだけ完全に回復
recovery 0 0 1 # WPだけ完全に回復
recovery 1 1 1 # 完全に回復

マップを切り替える。

シーンとマップの関連づけはdatas\マップ情報.txtに記述しておく。
chscene だけではマップ切り替わり時のエフェクトがかからないため、
chscene の前後にエフェクトをかけるコマンドを記述する
# datas/マップ情報.txtで定義されているシーンへ切り替え、
# 操作キャラを座標6, 8, 1に配置する。
feed_bgm -1, 30
effect feed_out, 30; sync # 30フレームかけてフェードアウト
chscene もけけぴろぴろ, 6, 8, 1 # 真っ暗闇でマップを切り替える
effect feed_in, 30; sync # 30フレームかけてフェードイン

BGMを変更する

BGM曲を実行ファイルからの相対パスで指定して再生する。ループ先位置の指定が必要。
playbgm sound\\BGM1\\適当なファイル名(8101).ogg 8101
playbgm sound\\BGM\\適当なファイル名(44831).ogg 44831
playbgm default #シーン初期設定曲に戻す。

効果音を鳴らす。

playse [ファイルパス]

BGMをフェードイン/アウトする。

feed_bgm -4 #音量が0になるまで1フレームおきに音量が-4づつ減算
feed_bgm 8 #音量が100になるまで1フレームおきに音量が8づつ増加

マップ画像を揺らして、地震の効果!

earthquake 3, 60 #60フレームかけて震度3へ
earthquake 0, 1  #すぐに揺れを止める

画面効果を付ける

輝度を RGB で指定する
bright 255, 255, 255, 1 #一瞬で通常に
bright 127, 127, 127, 60 #60フレームかけて50%の暗さに。
bright 63, 63, 63, 60 #60フレームかけてさらに倍率、ドン!

bright 100, 100, 200 1 # 一瞬で青暗くして夜を表現

画像を表示/非表示に変更する。

hidden true, -1  #操作キャラを非表示に
hidden false, 20 #ID20のイベント画像を表示する設定に

通過出来るかどうか後付けで設定する

set_passage 20, true #ID20のイベントを通過可能にする。
set_passage 10, false #ID10のイベントを通過不可にする。

画面全体に効果をかける。

effect feed_in 60 #60フレームかけて画面を黒->通常に変化させる。
effect feed_out 120 #120フレームかけて画面を通常->黒に変化させる。
effect feed_in 20 255 0 0 # 20フレームかけて画面を赤(255, 0, 0)→通常に変化させる
effect feed_out 20 255 0 0 # 20フレームかけて画面を通常→赤(255, 0, 0)に変化させる
effect mozaiku_out 30 # 30フレームかけて画面をモザイク→通常に変化させる
effect mozaiku_in 30 # 30フレームかけて画面をモザイク→通常に変化させる

お店

shop の後に売り出すアイテム名を記述する
shop アイスソード, ポーション, エリクシャー

戦闘を開始する

battle [敵種別] [モンスターグループNo.]
敵種別=骸骨, 悪魔, 獣, 魚, 獣人, 植物, 水棲, 精霊, ゾンビ, 両棲, 蛇, 無機, 昆虫, 鳥, 亡霊, 妖精
モンスターグループNo.=0~14

ナレーションを表示する

映画風ににナレーションを表示する。
narration3 ハハハハ         \n天知る 地知る ロビン知る

選択肢を表示して処理を分岐する

msg_select~case n~end_case~end_msg_select
選択肢を表示して処理を分岐する。nは選択肢番号で1~選択肢数まで。
選択肢は行単位で設定されるので第二引数に\nで区切って設定する。

キャンセルボタンによる中断はしないので、キャンセルが必要な場合は
選択肢に用意しておく。

表示枠は最も長い行が基準となり、それより短い行はセンタリングされる。
表示をそろえたい場合は、全角スペースなどでパディングして文字数を合わせる。

例文では見やすくするために選択肢を改行しているが、実際は改行や
半角スペース等を含まず、一行で書かなければならない。

set_flag flg_loop 1
#while flg_loop
 msg_select 
  アグニSSP   140\n
  アグニCP1   230\n
  ブラックイーグル 980\n
  アグニMBX  1550\n
  買わない        #左寄せしたいので字数合わせ(ここまで一行)
  case 1
   #itemget アグニSSP
   #add_money -140
  end_case
  case 2
   #itemget アグニCP1
   #add_money -230
  end_case
  case 3
   #itemget ブラックイーグル
   #add_money -980
  end_case
  case 4
   #itemget アグニMBX
   #add_money -1550
  end_case
  case 5
   set_flag flg_loop, 0
  end_case
 end_msg_select
 sync
#end_while

全体マップにマップシンボルを追加・除去する。

指定するマップIDはdatas\マップ情報.txtであらかじめ定義しておく。
#追加
appearance_on_map アクバー峠
appearance_on_map 沼地の廃墟
#除去
del_on_map アクバー峠 
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。