#============================================================================== # ■ ステータス画面自由改造 #------------------------------------------------------------------------------ #  ステータスウインドウを自由に改造します # スクリプトが多少扱える人ならさらに自由度が上がるはずです # # *月下荘 # URL:http://gekkasou.shiteyattari.com/ # # 要「共通定義」スクリプト #============================================================================== module An_FreeStatus #これは消さないでください page = [] #これは消さないでください #1ページ目 初期設定 page[1] = "draw_actor_name(4, 0) draw_actor_class(128, 0) draw_actor_face(8, 32) draw_basic_info(128, 32) draw_parameters(32, 160) draw_exp_info(288, 32) draw_equipments(288, 160)" #2ページ目 #選択中のアクターが誰であれアクター2の顔グラフィックを描画する page[2] = 'draw_actor_face(2, 8, 32) self.contents.draw_line_text(0, 216, 512, @actor.freetext)' #4ページ目 #3ページ目を定義してなくても自動的に詰められます #選択中のアクターが誰であれアクター3の顔グラフィックを描画する #現在のアクターのデータベース上のデータを描画する #現在のアクターの武器やステートによる補正値を描画する page[4] = "draw_actor_face(3, 8, 32) draw_basic_parameters(32, 160) draw_round_parameters(288, 160)" #設定ここまで Page = [] page.each{|i| if i.is_a?(String) Page << i end} end #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler def freetext case @actor_id when 1 return "文1 表示する際は self.contents.draw_line_text(x, y, width, @actor.freetext)" else return "該当する文章がありません" end end def freetext2 case @actor_id when 1 return "文 表示する際は self.contents.draw_line_text(x, y, width, @actor.freetext)" else return "該当する文章がありません" end end end #============================================================================== # ■ Window_Status #============================================================================== class Window_Status < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias an_freestatus_initialize initialize def initialize(actor) @an_dummy_window = Window_Base.new(0, 0, 546, 416) @an_dummy_window.z += 1 @an_dummy_window.opacity = 0 @an_cache = {} if An_FreeStatus::Page.size > 1 @an_dummy_window.width = 544 @an_page = 0 @an_page_max = An_FreeStatus::Page.size end @an_index = $game_party.members.index(actor) an_freestatus_initialize(actor) end #-------------------------------------------------------------------------- # ● 解放 #-------------------------------------------------------------------------- def dispose super @an_dummy_window.dispose end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear if @an_page.nil? data = An_FreeStatus::Page[0] else if @an_page != 0 @an_dummy_window.ox = 1 end if @an_page == An_FreeStatus::Page.size - 1 @an_dummy_window.ox = 2 end if @an_page == 0 @an_dummy_window.ox = 0 end unless @an_cache[@an_page].nil? self.contents = @an_cache[@an_page].dup return end data = An_FreeStatus::Page[@an_page] end eval(data) if !@an_page.nil? @an_cache[@an_page] = self.contents.dup end end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super return unless @an_page.is_a?(Integer) if Input.trigger?(Input::LEFT) @an_page = (@an_page - 1 + @an_page_max) % @an_page_max Sound.play_cursor refresh elsif Input.trigger?(Input::RIGHT) @an_page = (@an_page + 1) % @an_page_max Sound.play_cursor refresh end end #-------------------------------------------------------------------------- # ● 基本能力値の描画 #-------------------------------------------------------------------------- def draw_basic_parameters(x, y) draw_actor_basic_parameter(@actor, x, y + WLH * 0, 0) draw_actor_basic_parameter(@actor, x, y + WLH * 1, 1) draw_actor_basic_parameter(@actor, x, y + WLH * 2, 2) draw_actor_basic_parameter(@actor, x, y + WLH * 3, 3) draw_actor_basic_parameter(@actor, x, y + WLH * 4, 4) end #-------------------------------------------------------------------------- # ● 武具能力値の描画 #-------------------------------------------------------------------------- def draw_round_parameters(x, y) draw_actor_round_parameter(@actor, x, y + WLH * 0, 0) draw_actor_round_parameter(@actor, x, y + WLH * 1, 1) draw_actor_round_parameter(@actor, x, y + WLH * 2, 2) draw_actor_round_parameter(@actor, x, y + WLH * 3, 3) draw_actor_round_parameter(@actor, x, y + WLH * 4, 4) end #-------------------------------------------------------------------------- # ● オプション定義 #-------------------------------------------------------------------------- def an_array_set(array) if array.size == 2 return [@actor, array[0], array[1]] elsif array.size == 3 if array[0].is_a?(Integer) return [$game_actors[array[0]], array[1], array[2]] end elsif array.size == 4 if array[0].is_a?(Integer) return [$game_actors[array[0]], array[1], array[2], array[3]] end end return array end def draw_actor_name(*array) super(*an_array_set(array)) end def draw_actor_face(*array) super(*an_array_set(array)) end def draw_actor_class(*array) super(*an_array_set(array)) end def draw_actor_graphic(*array) super(*an_array_set(array)) end def draw_actor_level(*array) super(*an_array_set(array)) end def draw_actor_state(*array) super(*an_array_set(array)) end def draw_actor_parameter(*array) super(*an_array_set(array)) end end #ver1.07