#============================================================================== # ■ RGSS3 装備関連ウィンドウ簡易変更 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 装備関連ウィンドウを、デフォルトの配置から最低限の変更を行います。 # 「装備関連を弄るつもりはないが、少しだけ見栄えをよくしたい」、 # 「装備品にデフォでHPやMP増加効果があるのに # ステータス画面に表示されていないのはおかしい」という方はどうぞ。 # 他の装備関連のレイアウトを変更するスクリプトとは相性が悪いかもしれません。 # あくまで最低限の変更で構わない方向けのスクリプトです。 #============================================================================== # EX_TYPEが0の場合に限り、下記のような設定をアクターにつけられます。 #------------------------------------------------------------------------------ # アクターのメモ欄に<装備メモ:-重装備可能->と記入した場合 # アクターの名前の右側に-重装備可能-と表示される。 #============================================================================== module EQ_C_LIGHT #ステータス欄のフォントサイズ #4桁の数字までの場合は24、5桁の場合は20が推奨 ST_F_S = 20 #L・Rボタン使用によるアクター切り替えを分かりやすくする為のテキストを設定します。 TEXT1 = "L:前のアクター" TEXT2 = "R:次のアクター" #アクター個別の専用メモを表示する場合は0、 #顔グラフィックの一部を表示する場合は1を選んでください。 EX_TYPE = 0 #次の設定はEX_TYPEが1の時のみ有効です。 #アクター名の右側に表示するメモデータ設定用のキーワードを指定します。 WORD = "装備メモ" #以下の設定はEX_TYPEが2の時のみ有効です。 #顔グラフィック表示時のY座標調整値。 FACE_DY = 36 #この[]は消さないで下さい。 FACE_DYA = [] #各アクター個別の顔グラフィック表示時のY座標調整値。 #個別設定が必要なアクターのみ指定。 #例.アクター2のY座標調整値を40にしたい場合 # FACE_DYA[2] = 40 FACE_DYA[2] = 40 FACE_DYA[4] = 30 end class Window_EquipStatus < Window_Base #-------------------------------------------------------------------------- # オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(x, y) super(x, y, window_width, window_height) @actor = nil end #-------------------------------------------------------------------------- # リフレッシュ #-------------------------------------------------------------------------- def refresh #内容を消去。 contents.clear #フォントサイズ変更。 self.contents.font.size = EQ_C_LIGHT::ST_F_S #最大HP〜運までの8項目を表示する。 8.times {|i| draw_item(0, 21 * i, 0 + i) } end end class Window_Actor_NameFace < Window_Base attr_accessor :actor def refresh #アクターが存在しない場合は何もしない。 return unless @actor #アクターの名前を描写。 draw_actor_name(@actor, 4, 0) #顔グラフィックを表示しない場合はここで処理を終える。 case EQ_C_LIGHT::EX_TYPE when 0 rect = Rect.new(0,0,self.contents.width,self.contents.height) draw_text(rect, @actor.actor.equip_memo_text, 2) when 1 #Y座標調整値を取得。 dy_data = EQ_C_LIGHT::FACE_DYA[@actor.id] != nil ? EQ_C_LIGHT::FACE_DYA[@actor.id] : EQ_C_LIGHT::FACE_DY #顔グラフィックを描写。 draw_actor_face(@actor, self.contents.width - 96, -dy_data, @actor.alive?) end end end class Window_EquipCommand < Window_HorzCommand #-------------------------------------------------------------------------- # ● ウィンドウ内容の高さを計算 #-------------------------------------------------------------------------- def contents_height item_height * 2 end end class Scene_Equip < Scene_MenuBase #-------------------------------------------------------------------------- # コマンドウィンドウの作成 #-------------------------------------------------------------------------- alias create_command_window_d_c create_command_window def create_command_window #本来の処理を実行。 create_command_window_d_c #コマンドウィンドウを変更。 @command_window.x = @help_window.x @command_window.y = @help_window.y @command_window.width = @help_window.width @command_window.height= @help_window.height @command_window.refresh text1 = EQ_C_LIGHT::TEXT1 text2 = EQ_C_LIGHT::TEXT2 rect = Rect.new( 25, @command_window.line_height, @command_window.contents.width - 50, @command_window.line_height) font = @command_window.contents.font.clone @command_window.contents.font.size = 18 @command_window.contents.font.color = @command_window.system_color @command_window.draw_text(rect,text1,0) @command_window.draw_text(rect,text2,2) @command_window.contents.font = font @command_window.index = 0 @command_window.opacity = 0 end #-------------------------------------------------------------------------- # スロットウィンドウの作成 #-------------------------------------------------------------------------- alias create_slot_window_d_c create_slot_window def create_slot_window #アクター情報ウィンドウを作成する。 @actor_nf_window = Window_Actor_NameFace.new(@status_window.width, @help_window.height,Graphics.width - @status_window.width, 48) #アクター情報ウィンドウをリフレッシュする。 actor_nf_window_refresh #本来の処理を実行。 create_slot_window_d_c #スロットウィンドウの位置を変更する。 @slot_window.y = @actor_nf_window.y + @actor_nf_window.height end #-------------------------------------------------------------------------- # アクター情報ウィンドウのリフレッシュ #-------------------------------------------------------------------------- def actor_nf_window_refresh #アクターウィンドウの内容を消去する。 @actor_nf_window.contents.clear #アクターウィンドウにアクターを設定する。 @actor_nf_window.actor = @actor #アクターウィンドウのリフレッシュを行う。 @actor_nf_window.refresh end #-------------------------------------------------------------------------- # コマンド[装備変更] #-------------------------------------------------------------------------- alias command_equip_d_c command_equip def command_equip #本来の処理を実行。 command_equip_d_c #コマンドウィンドウの内容を非表示にする。 @command_window.contents_opacity = 0 end #-------------------------------------------------------------------------- # コマンド[最強装備] #-------------------------------------------------------------------------- alias command_optimize_d_c command_optimize def command_optimize #本来の処理を実行。 command_optimize_d_c #アクター情報ウィンドウをリフレッシュする。 actor_nf_window_refresh end #-------------------------------------------------------------------------- # コマンド[全て外す] #-------------------------------------------------------------------------- alias command_clear_d_c command_clear def command_clear #本来の処理を実行。 command_clear_d_c #アクター情報ウィンドウをリフレッシュする。 actor_nf_window_refresh end #-------------------------------------------------------------------------- # スロット[キャンセル] #-------------------------------------------------------------------------- alias on_slot_cancel_d_c on_slot_cancel def on_slot_cancel #本来の処理を実行。 on_slot_cancel_d_c #コマンドウィンドウの内容を表示する。 @command_window.contents_opacity = 255 end #-------------------------------------------------------------------------- # アイテム[決定] #-------------------------------------------------------------------------- alias on_item_ok_d_c on_item_ok def on_item_ok #本来の処理を実行。 on_item_ok_d_c #アクター情報ウィンドウをリフレッシュする。 actor_nf_window_refresh end #-------------------------------------------------------------------------- # アクターの切り替え #-------------------------------------------------------------------------- alias on_actor_change_d_c on_actor_change def on_actor_change #本来の処理を実行。 on_actor_change_d_c #アクター情報ウィンドウをリフレッシュする。 actor_nf_window_refresh end end class RPG::Actor < RPG::BaseItem def equip_memo_text #キャッシュを返す。 return @equip_memo_text if @equip_memo_text != nil #メモ欄からデータを取得。 data = self.note.scan(/<#{EQ_C_LIGHT::WORD}[::](\S+)>/).flatten #データが存在する場合はそのデータを。しない場合は0を設定する。 @equip_memo_text = data != nil && !data.empty? ? data[0] : "" #データを返す。 @equip_memo_text end end