=begin ◆概要 全てのイベントのメッセージをメモ帳に出力します。 ◆機能 ・イベントコマンドで「FSM::SearchGameMessage.search_message(filename)」と 入力すると、filenameというファイルに全てのマップのイベントの「文章の表示」 「文章のスクロール」の文章を出力します。 ・イベントコマンドで「FSM::SearchGameMessage.search_message(filename, range)」と 入力すると、filenameというファイルにrangeに含まれるマップIDのイベントの 「文章の表示」「文章のスクロール」の文章を出力します。 rangeは配列もしくは範囲で指定します。 例:[1,2,3,4,5] とか 1..10 とか ・上記範囲に0を含めるとコモンイベント全ての「文章の表示」「文章のスクロール」の 文章を出力します。 ・設定により制御文字を変換できます。 ◆仕様 ・ゲーム初期とかにやると、制御文字が面倒なことになるのは仕方が無い。 ◆使用上の注意 ・とりあえず私が作ったものとして考えておきます。 =end # 設定項目:\○ とついた文字をできるだけ変換します。 CONVERT_ESCAPE_CHARACTER = true # 設定項目:\○ とついた文字を一斉に消します。 # 関係ない文字まで消えてしまうことがあるので使用には要注意。 DELETE_ESCAPE_CHARACTER = true module FSM module SearchGameMessage def self.search_message(filename = "message.txt", range = [0]) texts = "" map_data = Dir.glob("Data/Map*.rvdata2") return if map_data.empty? file = File.open(filename, "w") map_data.each do |map| next if map == "Data/MapInfos.rvdata2" map_id = map.scan(/Data\/Map(\d+).rvdata2/i)[0][0].to_i next if !range.select{|x|x != 0}.empty? && !range.include?(map_id) data = load_data(map) next if !data.events or data.events.empty? next if data.events.values.all?{|event|event.pages.all?{|page| page.list.all?{|l|l.code != 401 && l.code != 405} }} texts += "MapID::#{map_id}\r\n" data.events.each do |i, event| next if event.pages.all?{|page|page.list.all?{|l| l.code != 401 && l.code != 405}} texts += "EvID::#{i} x = #{event.x} y = #{event.y}\r\n" event.pages.each_with_index do |page, index| next if page.list.all?{|l|l.code != 401 && l.code != 405} texts += "Page::#{index+1}\r\n" page.list.each do |l| if l.code == 401 || l.code == 405 texts += l.parameters[0] texts += "\r\n" end end end end texts += "\r\n" end if range.include?(0) if $data_common_events.any?{|e|e && e.list.any?{|l| l.code == 401 || l.code == 405}} texts += "CommonEvent\r\n" $data_common_events.each_with_index do |e, i| next if !e || e.list.all?{|l|l.code != 401 && l.code != 405} texts += "EvID::#{i}\r\n" e.list.each do |l| if l.code == 401 || l.code == 405 texts += l.parameters[0] texts += "\r\n" end end end end end if CONVERT_ESCAPE_CHARACTER texts.gsub!(/\\V\[(\d+)\]/){$game_variables[$1.to_i]} texts.gsub!(/\\(.)\[(\d+)\]/){ case $1 when "V"; $2.to_i.zero? ? 0 : $game_variables[$2.to_i] when "N"; $2.to_i.zero? ? "" : $game_actors[$2.to_i].name when "P" $game_party.members[$2.to_i] ? "" : $game_party.members[$2.to_i].name when "G"; Vocab::currency_unit when "$"; $game_party.gold else; "" end } end texts.gsub!(/\\.\[\d+\]/){} if DELETE_ESCAPE_CHARACTER texts.gsub!(/\\./){} if DELETE_ESCAPE_CHARACTER file.write(texts) file.close end end end