初心者です。
マップ上に複数のキャラクターがいます。
それでキャラに話しかけるとそれぞれのイベントが起きるのですが、
そのイベントが実行される前に全キャラ共通で特定のコモンイベントを実行させたいと思っています。
例えばプレイヤーにA・B・Cの3人がおり、マップ上に複数のNPCがいるとします。
・AがNPCに話すと「Aですね」とNPCが返し、続いて対A用のイベントを実行する。
・BがNPCに話すと「Bですね」とNPCが返し、今度は対B用のイベントを実行する。
・CがNPCに話すと「Cはダメ」とNPCが返し、その後のイベントは実行しない。
このようなNPCの挙動をコモンイベントにし、それをスクリプトで全NPC共通で処理させたいです。
人物でないNPCには無意味なので、トリガーは「決定ボタン」、プライオリティは「通常キャラと同じ」
グラフィックはCharactersフォルダ内の「NPC_XX」のイベントのみ、という風に限定します。
いちいちNPCに書く手間をなくすのが目的になります。
自分で調べてGame_Playerクラスのstart_map_eventあたりをいろいろ触ってみたのですが、
うまくいきませんでした。
何かうまい方法を教えてもらえると嬉しいです。
マップの各イベントについて、実行される前に共通でコモンイベントを実行させたい。
Re: マップの各イベントについて、実行される前に共通でコモンイベントを実行させたい。
方法自体は色々ありますね
最終的にインタプリタに処理をさせるより前にリストをすり替えさえすれば良いと思います
一番、簡単なのは多分Game_Event#setup_page_settingsですかね
こんな感じでリストを代入し直せばコモンイベントのリストが適用されると思います。
更に正規表現を使えばファイル名でコモンイベントIDを指定する事も可能です。
これでファイル名がNPC_16.pngとかだとコモンイベント16番がリストに入りますね。
最終的にインタプリタに処理をさせるより前にリストをすり替えさえすれば良いと思います
一番、簡単なのは多分Game_Event#setup_page_settingsですかね
コード: 全て選択
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ○ イベントページの設定をセットアップ
#--------------------------------------------------------------------------
alias :_old_setup_page_settings :setup_page_settings
def setup_page_settings
_old_setup_page_settings
if @character_name.include?("NPC_")
@list = $data_common_events[1].list
end
end
end
更に正規表現を使えばファイル名でコモンイベントIDを指定する事も可能です。
コード: 全て選択
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ○ イベントページの設定をセットアップ
#--------------------------------------------------------------------------
alias :_old_setup_page_settings :setup_page_settings
def setup_page_settings
_old_setup_page_settings
if @character_name =~ /NPC\_(\d+)/
@list = $data_common_events[$1.to_i].list
end
end
end
Re: マップの各イベントについて、実行される前に共通でコモンイベントを実行させたい。
Eventクラスだったのですね。その方法で、イベントをコモンイベントに置換できました。
また以下でコモンイベント→イベントと順にも実行されました。ありがとうございました。
@list = $data_common_events[1].list + @list
また以下でコモンイベント→イベントと順にも実行されました。ありがとうございました。
@list = $data_common_events[1].list + @list