=begin RGSS3    ★ キーワードの文字色自動変更 ★ イベントの"文章の表示"において、わざわざ制御文字を使わなくても、 特定のキーワードの文字色を自動で変更出来ます。 ● 使い方 ●======================================================== スクリプト内の設定箇所に、色の定義とキーワードの定義を行ってください ==================================================================== ● 略語の設定について ●============================================ ver1.10より略語の文字色変更にも対応しました。(非常に単純な略語に限られます) 例えば、「アルフ」と「アルフレッド」、「エド」と「エドワード」のような 文字数を削っただけの略語において双方の文字色を変えられるようになりました。 このような略語を設定したい場合、設定箇所の DEF_KEYWORD で "文字数の多いほう"を先に登録するようにしてください。 〇 DEF_KEYWORD = { "アルフレッド" => 0, "アルフ" => 0, } × DEF_KEYWORD = { "エド" => 0, "エドワード" => 0, } ==================================================================== ver1.10 Last Update : 2016/11/19 11/19 : 簡単な略語に対応しました ----------------------2016-------------------------- 10/10 : 新規 ----------------------2015-------------------------- ろかん   http://kaisou-ryouiki.sakura.ne.jp/ =end #=========================================== # 設定箇所 #=========================================== module KEYWORD_COLOR # 文字色の定義 # [形式] 文字色の定義番号 => Color.new(赤, 緑, 青), DEF_COLOR = { 0 => Color.new(175, 238, 238), # 人物名に利用する文字色 1 => Color.new(255, 236, 139), # 地名に利用する文字色 2 => Color.new(250, 128, 114), # キーワードに利用する文字色 } # キーワードと文字色の紐付け # [形式] "キーワード" => DEF_COLORで定義した文字色の番号, DEF_KEYWORD = { "ラルフ" => 0, "アーネスト" => 0, "イザベル" => 0, "みかん王国" => 1, "温州" => 1, "ビタミン" => 2, "アルベド" => 2, } # 制御文字の文字色自動変更設定 # \N[n], \P[n] の2つについて自動で文字色を変更します # 無効にする場合は nil を設定してください ESCAPE_CHR_COLOR = 0 # DEF_COLOR で定義した文字色の番号を設定 end #=========================================== # ここまで #=========================================== $rsi ||= {} $rsi["キーワードの文字色自動変更"] = true class RPG::EventCommand include KEYWORD_COLOR def convert_keyword_characters if @code == 401 DEF_KEYWORD.each{|keyword, color| @parameters[0].gsub!(keyword){"\eK[#{color}]#{keyword}\eE"}} if ESCAPE_CHR_COLOR @parameters[0].gsub!(/\\/){"\e"} @parameters[0].gsub!(/\eN\[(\d+)\]/i){"\eK[#{ESCAPE_CHR_COLOR}]\eN[#{$1.to_i}]\eE"} @parameters[0].gsub!(/\eP\[(\d+)\]/i){"\eK[#{ESCAPE_CHR_COLOR}]\eP[#{$1.to_i}]\eE"} end end end end class << DataManager #-------------------------------------------------------------------------- # ● コモンイベントのメッセージを事前検査 #-------------------------------------------------------------------------- def pre_check_message_for_commonevent $data_common_events.each{|event| if event event.list.each{|command| command.convert_keyword_characters } end } end #-------------------------------------------------------------------------- # ● 通常のデータベースをロード #-------------------------------------------------------------------------- alias keyword_color_load_normal_database load_normal_database def load_normal_database keyword_color_load_normal_database pre_check_message_for_commonevent end end class Game_Event < Game_Character #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias keyword_color_initialize initialize def initialize(map_id, event) keyword_color_initialize(map_id, event) pre_check_all_message end #-------------------------------------------------------------------------- # ● イベントの全メッセージを事前検査 & 置換 #-------------------------------------------------------------------------- def pre_check_all_message @event.pages.each{|page| page.list.each{|command| command.convert_keyword_characters} } end end class Window_Message < Window_Base #-------------------------------------------------------------------------- # ● インクルード KEYWORD_COLOR #-------------------------------------------------------------------------- include KEYWORD_COLOR #-------------------------------------------------------------------------- # ● 制御文字の処理 #-------------------------------------------------------------------------- alias keyword_color_process_escape_character process_escape_character def process_escape_character(code, text, pos) @last_contents_font_color ||= [] case code.upcase when 'K' # キーワードの文字色変更 開始 @last_contents_font_color << contents.font.color.clone change_color(DEF_COLOR[obtain_escape_param(text)]) when 'E' # キーワードの文字色変更 終了 change_color(@last_contents_font_color.pop) end keyword_color_process_escape_character(code, text, pos) end end