=begin RGSS3 ★ 新規入手アイテム強調表現 ★ 新しく入手したアイテム名の文字色を変化させることで強調し、 プレイヤーに対するユーザビリティを向上させます。 ● 仕様 ●========================================================== 新規アイテム登録数が設定値を超えた場合、 最も古いアイテムから順に登録が解除されていきます。 -------------------------------------------------------------------- この場合の「最も古い」とは、最初に登録されたタイミングではなく、 最後に登録されたタイミングを指します。 -------------------------------------------------------------------- 例えば、 A => B => C => A => D => E => F という順でアイテムを入手した場合、一番最初に入手したアイテムはAですが、 4番目に再びAを入手している為、ここではBが一番古いということになります。 ==================================================================== ● イベントコマンド ●============================================== スクリプトより clear_new_item と実行することで、 新規入手アイテム履歴がクリアされます。 -------------------------------------------------------------------- ニューゲーム時の初期所持アイテムなどを強調しない為には、 これを実行する必要があります。 ==================================================================== ● 注意 ●========================================================== ニューゲームから始めないとエラーを吐きます ==================================================================== ver1.00 Last Update : 2011/12/18 12/18 : 新規 ろかん   http://kaisou-ryouiki.sakura.ne.jp/ =end #=================================== # ●設定箇所 #=================================== module Rokan module Put_New_Item # 新規入手履歴の最大登録数 # (この設定値が強調されるアイテムの最大数となります) MNIS = 5 # 強調するアイテム名のフォントカラー # (ウィンドウスキンに準ずる) PIFC = 3 # 新規アイテム登録禁止スイッチ番号 # (ここで指定したスイッチがONである間に入手したアイテムは # 新規アイテムとして登録されません) DEIS = 5 end end #=================================== # ここまで #=================================== $rsi ||= {} $rsi["新規入手アイテム強調表現"] = true class Game_Party < Game_Unit #-------------------------------------------------------------------------- # ● インクルード Rokan::Put_New_Item #-------------------------------------------------------------------------- include Rokan::Put_New_Item #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias _new_item_initialize initialize def initialize _new_item_initialize clear_new_item end #-------------------------------------------------------------------------- # ● 新規入手アイテムの初期化 #-------------------------------------------------------------------------- def clear_new_item @get_newer_items = [] end #-------------------------------------------------------------------------- # ● 新規入手アイテムであるか #-------------------------------------------------------------------------- def new_item?(item) @get_newer_items.include?(new_item_obj(item)) end #-------------------------------------------------------------------------- # ● 新規入手アイテムを登録される形にして返す #-------------------------------------------------------------------------- def new_item_obj(item) case item when RPG::Item [0, item.id] when RPG::Weapon [1, item.id] when RPG::Armor [2, item.id] else nil end end #-------------------------------------------------------------------------- # ● 新規入手配列を更新するかどうか #-------------------------------------------------------------------------- def update_new_item? !$game_switches[DEIS] && !SceneManager.scene_is?(Scene_Equip) end #-------------------------------------------------------------------------- # ● 新規入手配列の更新 #-------------------------------------------------------------------------- def update_new_item(item, amount) if update_new_item? if amount > 0 set_new_item(new_item_obj(item)) elsif item_number(item).zero? remove_new_item(new_item_obj(item)) end end end #-------------------------------------------------------------------------- # ● 新規入手アイテム情報の追加 #-------------------------------------------------------------------------- def set_new_item(new_item) @get_newer_items.delete(new_item) @get_newer_items << new_item @get_newer_items.shift if @get_newer_items.size > MNIS end #-------------------------------------------------------------------------- # ● 新規入手アイテム情報の削除 #-------------------------------------------------------------------------- def remove_new_item(new_item) @get_newer_items.delete(new_item) end #-------------------------------------------------------------------------- # ● アイテムの増加(減少) #-------------------------------------------------------------------------- alias _put_newitem_gain_item gain_item def gain_item(item, amount, include_equip = false) _put_newitem_gain_item(item, amount, include_equip) update_new_item(item, amount) end end class Game_Interpreter #-------------------------------------------------------------------------- # ● 新規入手アイテム情報のクリア #-------------------------------------------------------------------------- def clear_new_item $game_party.clear_new_item end end class Window_Base < Window #-------------------------------------------------------------------------- # ● インクルード Rokan::Put_New_Item #-------------------------------------------------------------------------- include Rokan::Put_New_Item #-------------------------------------------------------------------------- # ● 各種文字色の取得 #-------------------------------------------------------------------------- def putitem_color; text_color(PIFC); end; # アイテム強調色 #-------------------------------------------------------------------------- # ● アイテム描画色の取得 #-------------------------------------------------------------------------- def item_color(item) if item.is_a?(RPG::Skill) normal_color else if SceneManager.scene_is?(Scene_Shop) normal_color elsif !$game_party.new_item?(item) normal_color else putitem_color end end end #-------------------------------------------------------------------------- # ● アイテム名の描画 ※再定義 #-------------------------------------------------------------------------- def draw_item_name(item, x, y, enabled = true, width = 172) return unless item draw_icon(item.icon_index, x, y, enabled) change_color(item_color(item), enabled) draw_text(x + 24, y, width, line_height, item.name) end end