텍스트 색 추가하기 (RPG XP용)
◆게임 창작 관련/코드, 스크립트 :: 2015. 9. 3. 22:02RPG 만들기 XP의 경우 RPG 만들기 2000 이후의 다른 버전들과는 달리 윈도우스킨 안에 텍스트 색이 포함되어 있지 않습니다.
그 대신 스크립트로 텍스트 색을 지정하는데, 기본적으로는 0번부터 7번까지 8개 색이 있습니다.
스크립트를 수정하면 기본 제공된 텍스트 색 이외의 색을 사용할 수 있을 뿐만 아니라 9개 이상의 텍스트 색을 사용할 수 있습니다.
다음 스크립트를 복사해서 스크립트창(F11)의 'Main' 부분 위에 새 스크립트를 추가해 붙여넣기하시면 됩니다.
# Custom text color for RMXP v1.0 # RPG 만들기 XP에서 기본색 이외의 텍스트 색을 쓸 수 있습니다. # # 만든이: 家和萬事成 # http://parkjuwan.tistory.com # # 기본 스크립트를 약간 수정하였습니다. class Window_Base < Window #-------------------------------------------------------------------------- # Get Text Color # n : text color number (0-7) #-------------------------------------------------------------------------- def text_color(n) case n when 0 return Color.new(255, 255, 255, 255) when 1 return Color.new(128, 128, 255, 255) when 2 return Color.new(255, 128, 128, 255) when 3 return Color.new(128, 255, 128, 255) when 4 return Color.new(128, 255, 255, 255) when 5 return Color.new(255, 128, 255, 255) when 6 return Color.new(255, 255, 128, 255) when 7 return Color.new(192, 192, 192, 255) # # ▶ 여기까지가 기본색 8가지입니다. # 아래쪽부터 추가할 색을 넣어 주세요. # when 색번호 # return Color.new(빨강, 초록, 파랑, 불투명도) # ※ 빨강, 초록, 파랑, 불투명도 모두 0~255 범위의 값을 갖습니다. # when 8 return Color.new(128, 192, 255, 255) when 9 return Color.new(192, 128, 255, 255) when 10 return Color.new(255, 128, 192, 255) when 11 return Color.new(128, 255, 192, 255) # # ▶ 이 부분에서 끝. # else normal_color end end #-------------------------------------------------------------------------- # Get Normal Text Color #-------------------------------------------------------------------------- def normal_color return Color.new(255, 255, 255, 255) end #-------------------------------------------------------------------------- # Get Disabled Text Color #-------------------------------------------------------------------------- def disabled_color return Color.new(255, 255, 255, 128) end #-------------------------------------------------------------------------- # Get System Text Color #-------------------------------------------------------------------------- def system_color return Color.new(192, 224, 255, 255) end #-------------------------------------------------------------------------- # Get Crisis Text Color #-------------------------------------------------------------------------- def crisis_color return Color.new(255, 255, 64, 255) end #-------------------------------------------------------------------------- # Get Knockout Text Color #-------------------------------------------------------------------------- def knockout_color return Color.new(255, 64, 0) end end class Window_Message < Window_Selectable #-------------------------------------------------------------------------- # Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = normal_color x = y = 0 @cursor_width = 0 # Indent if choice if $game_temp.choice_start == 0 x = 8 end # If waiting for a message to be displayed if $game_temp.message_text != nil text = $game_temp.message_text # Control text processing begin last_text = text.clone text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] } end until text == last_text text.gsub!(/\\[Nn]\[([0-9]+)\]/) do $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : "" end # Change "\\\\" to "\000" for convenience text.gsub!(/\\\\/) { "\000" } # Change "\\C" to "\001" and "\\G" to "\002" text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" } text.gsub!(/\\[Gg]/) { "\002" } # Get 1 text character in c (loop until unable to get text) while ((c = text.slice!(/./m)) != nil) # If \\ if c == "\000" # Return to original text c = "\\" end # If \C[n] if c == "\001" # Change text color text.sub!(/\[([0-9]+)\]/, "") color = $1.to_i # # ▶ 아래의 color <= n에서 n을 색 번호 최대값으로 지정해 주세요. # if color >= 0 and color <= 11 self.contents.font.color = text_color(color) end # go to next text next end # If \G if c == "\002" # Make gold window if @gold_window == nil @gold_window = Window_Gold.new @gold_window.x = 560 - @gold_window.width if $game_temp.in_battle @gold_window.y = 192 else @gold_window.y = self.y >= 128 ? 32 : 384 end @gold_window.opacity = self.opacity @gold_window.back_opacity = self.back_opacity end # go to next text next end # If new line text if c == "\n" # Update cursor width if choice if y >= $game_temp.choice_start @cursor_width = [@cursor_width, x].max end # Add 1 to y y += 1 x = 0 # Indent if choice if y >= $game_temp.choice_start x = 8 end # go to next text next end # Draw text self.contents.draw_text(4 + x, 32 * y, 40, 32, c) # Add x to drawn text width x += self.contents.text_size(c).width end end # If choice if $game_temp.choice_max > 0 @item_max = $game_temp.choice_max self.active = true self.index = 0 end # If number input if $game_temp.num_input_variable_id > 0 digits_max = $game_temp.num_input_digits_max number = $game_variables[$game_temp.num_input_variable_id] @input_number_window = Window_InputNumber.new(digits_max) @input_number_window.number = number @input_number_window.x = self.x + 8 @input_number_window.y = self.y + $game_temp.num_input_start * 32 end end end
이 스크립트를 적용하였을 경우 다음과 같이 색 지정이 됩니다.
글씨색 미리보기 (빨강, 초록, 파랑에 원하는 값을 입력하신 후 미리보기 버튼을 눌러 보세요.)
빨강 | 초록 | 파랑 | |
글씨색 미리보기
|
예제는 다음 첨부파일에 있습니다.
위의 소스코드만 따로 빼낸 파일은 다음과 같습니다.