#------------------------------------------------------------------------------- # 未使用ピクチャ・BGM出力 for VXAce 製作者:奏ねこま(おとぶきねこま) #------------------------------------------------------------------------------- # 使われていないピクチャおよびBGMをチェックし、テキストに出力します。 # (ピクチャ、BGM以外の素材はチェック対象外です) # # [ 使い方 ] # #  タイトル画面でShift+F9を押してください。 # # [ チェック対象 ] # #  ピクチャの使用状況を確認する対象は以下となります。 # #   ・イベントコマンド「ピクチャの表示...」 # #  BGMの使用状況を確認する対象は以下となります。 # #   ・データベース→システム→音楽→「タイトル画面」 #   ・データベース→システム→音楽→「戦闘」 #   ・データベース→システム→音楽→「小型船」 #   ・データベース→システム→音楽→「大型船」 #   ・データベース→システム→音楽→「飛行船」 #   ・マップの設定→「BGM 自動切り替え」 #   ・イベントコマンド「BGM の演奏...」 #   ・イベントコマンド「戦闘 BGM の変更...」 # #  上記以外で使用されていた場合、未使用扱いになりますので、あらかじめご了承くだ #  さい。ツクールのエディタ上で設定するもので、チェック対象から漏れているものが #  ありましたらご連絡ください。バージョンアップにて対応いたします。 # # [ 利用規約 ] ................................................................. # 本スクリプトの利用者は、RPGツクールVXAceの正規ユーザーに限られます。 # 商用、非商用、ゲームの内容(年齢制限など)を問わず利用可能です。 # ゲームへの利用の際、報告や出典元の記載等は必須ではありません。 # 二次配布や転載、ソースコードURLやダウンロードURLへの直接リンクは禁止します。 # (スクリプトを利用したゲームに同梱する形での結果的な配布はOKです) # 不具合対応以外のサポートやリクエストは受け付けておりません。 # 本スクリプトにより生じたいかなる問題においても、一切の責任を負いかねます。 # [ 改訂履歴 ] ................................................................. # Version 1.00 2016/10/15 初版 # -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ # Web Site: http://makonet.sakura.ne.jp/rpg_tkool/ # Twitter : https://twitter.com/koma_neko #------------------------------------------------------------------------------- # MaterialCheck #------------------------------------------------------------------------------- module MAKONET004_MaterialCheck def self.getMaterials @pictures = [] @bgms = [] # ピクチャ Dir.chdir("Graphics/Pictures") Dir.glob("*").each{|material| material[/\.(?:png|jpg)$/i] = "" if material[/\.(?:png|jpg)$/i] @pictures.push(material) } Dir.chdir("../../") # BGM Dir.chdir("Audio/BGM") Dir.glob("*").each{|material| material[/\.(?:ogg|wma|mp3|wav|mid)$/i] = "" if material[/\.(?:ogg|wma|mp3|wav|mid)$/i] @bgms.push(material) } Dir.chdir("../../") @pictures.sort!.uniq! @bgms.sort!.uniq! end def self.checkMaterials # マップ設定・マップイベント $data_mapinfos.each{|mid, map| map = load_data(sprintf("Data/Map%03d.rvdata2", mid)) map.events.each{|eid, event| event.pages.each{|page| page.list.each{|command| self.check(command) } } } if (map.autoplay_bgm) @bgms.delete(map.bgm.name) end } # コモンイベント $data_common_events.each{|event| if (event) event.list.each{|command| self.check(command) } end } # バトルイベント $data_troops.each{|event| if (event) event.pages.each{|page| page.list.each{|command| self.check(command) } } end } # システム @bgms.delete($data_system.title_bgm.name) @bgms.delete($data_system.battle_bgm.name) @bgms.delete($data_system.boat.bgm.name) @bgms.delete($data_system.ship.bgm.name) @bgms.delete($data_system.airship.bgm.name) end def self.check(command) if (command.code == 231) @pictures.delete(command.parameters[1]) elsif (command.code == 241) @bgms.delete(command.parameters[0].name) elsif (command.code == 132) @bgms.delete(command.parameters[0].name) end end def self.pictures @pictures || [] end def self.bgms @bgms || [] end end #------------------------------------------------------------------------------- # Scene_Title #------------------------------------------------------------------------------- class Scene_Title alias :makonet004_update :update def update makonet004_update if ($TEST && Input.press?(:SHIFT) && Input.trigger?(:F9)) if SceneManager.scene_is?(Scene_Title) SceneManager.call(Scene_MaterialCheck) else SceneManager.goto(Scene_MaterialCheck) end end end end #------------------------------------------------------------------------------- # Scene_MaterialCheck #------------------------------------------------------------------------------- class Scene_MaterialCheck < Scene_MenuBase def start super @status_window = Window_MaterialCheckStatus.new end def update super if (!@check_start) @check_start = true MAKONET004_MaterialCheck.getMaterials MAKONET004_MaterialCheck.checkMaterials unused_pictures = MAKONET004_MaterialCheck.pictures.to_s.gsub(/\[(.+)\]/){ $1 } unused_pictures = unused_pictures.gsub(/ *, */){ "\r\n" } unused_pictures = unused_pictures.gsub(/"(.+)"/){ $1 } unused_bgms = MAKONET004_MaterialCheck.bgms.to_s.gsub(/\[(.+)\]/){ $1 } unused_bgms = unused_bgms.gsub(/ *, */){ "\r\n" } unused_bgms = unused_bgms.gsub(/"(.+)"/){ $1 } File.open("未使用素材リスト.txt", "w"){|file| file.printf("[未使用ピクチャリスト] ---------\r\n") file.printf(unused_pictures) file.printf("\r\n\r\n[未使用BGMリスト] --------------\r\n") file.printf(unused_bgms) } @status_window.add_text("") @status_window.add_text("Game.exeと同じ場所に「未使用素材リスト.txt」を出力しました。") @status_window.add_text("出力内容をご確認ください。") @status_window.add_text("") @status_window.add_text("(タイトルに戻るにはF12でリセットしてください)") end end end #------------------------------------------------------------------------------- # Window_MaterialCehckStart #------------------------------------------------------------------------------- class Window_MaterialCheckStatus < Window_Base def initialize super(0, 0, Graphics.width, Graphics.height) draw_text(0, 0, contents_width, line_height, "未使用ピクチャおよび未使用BGMのリストを出力しています...") @draw_line = line_height end def add_text(text) draw_text(0, @draw_line, contents_width, line_height, text) @draw_line += line_height end end